首页
学习
活动
专区
工具
TVP
发布

大宽宽的碎碎念

专栏作者
22
文章
47146
阅读量
30
订阅数
既然Java反射可以访问和修改私有成员变量,那封装成private还有意义么?
安全是指不让代码被非法看到/访问。但是只要人能拿到代码,总会有办法去查看和改变代码。其他答案提到反射可以用SecurityManager来防止private被访问。但是从更高一层的角度,即便使用了SecurityManager,还是可以通过各种方式拿到java的bytecode,并做任意修改。比如有asm这样的lib,也有instrument api这种东西可以帮你。所以记得,如果你真有一段代码不允许被别人看/用,就不要把这段代码放到其他人可以碰到的地方,而是做一个server,通过接口允许有限制的访问。其他人想破解,只能破解你的服务器网关和跳板机器。
大宽宽
2018-12-06
1.4K0
程序里怎么表达“没有”
最近忙着调研gRPC做服务治理,尝试用protobuf3重写现有的接口逻辑,发现了一个问题:protobuf3的基本类型不支持nullable。如果想表达“没有”,就只能用对应数据类型的默认值,比如,字符串的默认值是"",整数是0,布尔类型是false。在团队里展开了一个讨论——程序里要不要表达“没有”,和怎么表达“没有”。本文就是讨论中一些关键内容的总结啦。
大宽宽
2018-10-18
1.7K1
初创公司如何避免服务器被攻击
前不久和小伙伴们讨论了一个基础的安全问题:一个朋友开的公司的服务器集群被黑了,攻击者在机器上安装了远程操作程序——被肉鸡了。但经过讨论后发现,机器的最基本的防护都没有。这无异于大姑娘在街上裸奔——就算
大宽宽
2018-06-19
4.7K0
如何看待编写业务代码
业务代码的要求和常规意义上的编程有很多不一样的地方。我们在学习编程的时候往往被教导: 代码要有良好的设计。要抽象和封装,要尽量减少重复代码; 代码要有良好的建模,概念清楚,不同实体的关系清晰; 代码要高效,有O(1)的别用O(log n),有O(log n)的不用O(n); …… 但是到了业务上。这些仿佛就变的不那么重要了。 做业务必须要非常了解业务的动机和业务流程细节。 比如:你可能要做一个下单支付。你要理解下单支付的细节。账户要怎么设计,支付流程要带那些信息,金额有什么限制,撤单怎么撤,怎么打折/用券
大宽宽
2018-06-07
1.1K0
延迟和吞吐的关系是什么?
原回答: https://www.zhihu.com/question/279164955/answer/405448070 所谓的“性能”一般指的是吞吐和延迟这两件事。他们相互关联,但是互相的关系并不是简单的一一对应。 我改用一个通俗的例子来讲解这个问题。 假设你去一个乐高店去买散装乐高。首先你要排队。等你排到队首,跟店员说,你要小方块红色的10个,浅绿色花花的圆形15个,厚长条白色的3个……。店员就开始按照你说的给你去后边仓库拿。假设很少有两个顾客会有完全一样的要求,所以每次店员每次都拿的不一样。拿一
大宽宽
2018-06-07
9250
为什么DB连接管理一般不采用IO多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以Netty为核心。这到底是为什么? 首先纠正一个常见的误解。IO多路复用听上去好像是多个数据可以共享一个IO(socket连接),实际上并非如此。IO多路复用不是指多个服务共享一个连接,而仅仅是指多个连接的管理可以在同一进程。在网络服务中,IO多路复用起的作用是一次性把多个连接的事件通知业务代码处理。至于这些事件
大宽宽
2018-05-14
1.7K0
怎么避免MYSQL误删除避免混淆开发环境的DB和生产环境的DB用事务保护使用安全更新模式对DROP和TRUNCATE慎之又慎最终的招数最终的话
今天小伙伴手一抖,就把开发环境里一张表给删了。因为是开发环境,又有关联数据,所以最终影响不大,还是恢复了。即便如此,小伙伴手心里已经全是汗了~~ 由此想到,生产环境下,总会有DBA和生产库打交道,其中也免不了更新和删除。借此机会总结一下一些常规招数。 避免混淆开发环境的DB和生产环境的DB 这在小公司小团队尤其常见。一个人即负责开发,又管DB。桌面上开了一坨终端,有的是开发的DB,有的是生产的DB。一不留神,就写串了,或者粘贴串了。更郁闷的是,有时候粘贴会顺便粘贴SQL最后的回车,这样一贴就执行了。稍有不慎
大宽宽
2018-05-14
1.2K0
实现一个靠谱的Web认证两种认证JWT怎么存储认证信息防止CSRF总是使用https认证信息不应该永久有效总结一下
Web认证是任何一个认真一点的网站都必须实现的基本功能。这个功能解决了让服务器“认识你就是你“的问题。这个功能看起来貌似很简单,但是实际上处处是坑。因为认证是依靠一套技术整体运作才能完成,所以仅仅是把一些现成的技术简单拼起来是不够的。你必须了解每一种技术能做什么,不能做什么,解决了哪些问题,才能精心设计一套认证功能。 两种认证 目前市面上能见到的认证方式分为两大种——基于Session的和基于Token的。 所谓基于Session的认证,是指在客户端存储一个Session Id。认证时,请求携带Sessio
大宽宽
2018-05-14
2.1K0
你对Redis的使用靠谱吗?Redis的性能高,吗?Redis可以保证原子性,吗?用Redis可以实现事务,吗?用Redis可以当队列,吗?Redis适合用来做什么?
redis Redis是个流行的in-momery存储。接口好用,性能也很强,还支持多种数据结构,加上各种HA和Cluster方案,实在是居家旅行、杀人灭口、必备良药。 必备良药 但是就是因为太好用了,好用到让很多人都晕了脑子: 用Redis性能就大大提高了 用Redis可以保证原子性 用Redis可以实现事务 用Redis可以当队列 …… 这就好像一个股民,在手机上操作买卖几笔股票,赚了一些,然后感叹道"股市就是为我发财而存在的啊"!! 他的下场可想而知。 Redis的种种优势源自于他的设计——简单直接的
大宽宽
2018-05-14
3.7K0
谈谈自己的大数据迁移经历背景问题规模数据迁移要考虑的问题最后
今天群里有人问起,刚好做过相关的工作,特此分享一下当时的工作内容和感受。 背景 大概说一下这个事情的背景。在2013年大概4月份,人人网打算做一次大规模的数据迁移——评论服务。所谓评论就是指各种资源下的“评论文字”,比如照片的评论、Blog的评论、分享的评论、音乐的评论…… 早期人人网的各个开发小组各自为政,每个团队几乎都实现了一个评论服务,有各自不同的功能和数据结构,但是大体上还算相似。当时,业务部门希望能够集中这些数据做一些统一的管理,比如权限管理(控制谁能看什么评论)、比如数据内容推荐(基于用户评论人
大宽宽
2018-05-14
1.8K0
数据库事务、隔离级别和锁ACID的真实含义隔离级别和并发控制MySQL和PostgreSQL对比如何写代码
这是个令大多数后端同学头疼的问题。部分是因为不同的文章、文档充斥着不相容的概念。高层抽象和底层实现混到一起令人傻傻的分不清楚。此外还有一部分是SQL标准和实现压根就不一致。本文期望在众多文献中找到一条容易理解知识线,帮助大家在实际工作中更加容易明白到底怎么使用数据库的事务、隔离级别和锁。 ACID的真实含义 一般都会用ACID来表达事务的特性。A、C、I、D分别代表“原子性”,“一致性”,“隔离性”和“持久性“。这是1983年(恰好是我出生的年份)ACM的一篇期刊文章Principles of Transa
大宽宽
2018-05-14
2.8K0
聊聊BIO,NIO和AIO (1)到底什么是“IO Block”BIONIOIO多路复用用epoll实现的IO多路复用epoll的优势水平触发和边沿触发再来思考一下什么是“Block”总结
本文从操作系统的角度来解释BIO,NIO,AIO的概念,含义和背后的那些事。本文主要分为3篇。 第一篇讲解BIO和NIO以及IO多路复用 第二篇讲解AIO和文件IO 第三篇讲解在这些机制上的一些应用的实现方式,比如nginx,nodejs,Java NIO等 到底什么是“IO Block” 很多人说BIO不好,会“block”,但到底什么是IO的Block呢?考虑下面两种情况: 用系统调用read从socket里读取一段数据 用系统调用read从一个磁盘文件读取一段数据到内存 如果你的直觉告诉你,这两种都算
大宽宽
2018-05-14
1.7K1
从ConcurrentHashMap谈谈一致性
你要是觉得我是要讲ConcurrentHashMap源码分析、segment,rehash之类的事情,就可以不用往下看了。 考虑以下场景: 在Spring Framework实现的服务中做一个计数器,要求对任意请求的到达计数。比如,实现了这处理这几个path的controller: /path1, /path2, /path3,…… 很自然,基本的设计是做一个Service Bean,内部封装一个KV形式的方式来统计,像这样: /path1 --> [count of path1] /path2 --> [
大宽宽
2018-05-14
1.6K0
如何深入理解开源项目从小代码集看起聚焦请先看文档关注资源的生命周期找一个好工具建立调试环境看代码很累,要坚持
感谢这个时代,我们有了github,有了近乎无穷的开源项目可以看,可以学。 记住,看的目的是学,但是看不等于学! 从小代码集看起 对于一个新手,是绝对不适合一上来就追求spring,web容器,数据库
大宽宽
2018-05-14
7390
如何积累知识和技能答网友-如何积累知识和技能一个故事凡事都有目标形象化关联不断的学,灵动的用结论
答网友-如何积累知识和技能 这应该是非常多的人关心的问题。 为啥有的人貌似样样精通?而我就样样稀松呢? 本文不能说是解决这个问题,只是说一些个人的感想。 一个故事 上大二时,同一学期有两门课,"汇编原理"和"操作系统"。汇编原理的老师只讲x86,汇编的语句,而且还是16位的。什么LOAD,ADD命令、分段、寄存器一类的东西。端地址转换等等。操作系统老师讲的主要是原理,例如进程、内存空间、IO一类的知识。这两门课一开始各学各的,只要老实听讲座作业就是了,和其他无聊的大学课程没有什么不一样。直到有一天,我偶然拿
大宽宽
2018-05-14
6880
分布式系统如何定位压力问题监控监控什么呢实际的压力问题怎么发生的我用的工具
监控 简单来说,分布式系统需要实现一个基本的监控工具。最简单的办法是在每个节点上部署一个agent,定时上报该机器的信息。这一块鱼龙混杂。开源的实施起来就比较复杂了。这一块主要分四层: 收集,具体怎么收集数据(比如sar命令、JMX等) 传输,收集到的数据如何传到存储(比如用syslog,fluentd,statsd) 存储+分析,如何存储收集到的数据,并提供查询(比如用mysql,postgres等一般数据库,RRD Tools工具,或者InfluxDB这样的专用时序数据库) 界面展示和报警,数据怎么变成
大宽宽
2018-05-14
1.1K0
The Myth of volatileJDK1.5之前的volatileJDK1.5之后的volatilevolatile足够了吗?volatile VS 锁结论
Gollum 历史成为了传说,传说又成为了神话,两千五百多年来,无人得知至尊魔戒的下落。直到,当机缘来临,它又诱惑了一个新的持有者。 我——的——宝——贝———— 这段文字是指环王的开篇旁白。但我觉得用来形容volatile关键字却再合适不过了。volatile的字面意思是“易变的,反复无常的”,但它实际的意思却复杂得多。大量的初学者面对着它无比渴求,希望一窥究竟,却很难在实际项目中用对。同时,最令人讨厌的是面试时还经常被问到它。 本文尝试为众生梳理梳理Java的volatile。如果你觉得本文内容比较长
大宽宽
2018-05-14
1.5K0
如何避免下重复订单为啥会下重了呢?用幂等防止重复订单客户端的流程后端数据表设计下单的实现技术搞定幂等就足够了吗?通知如果还拦不住……这么麻烦,有必要吗?结论
电子交易的一个很基本的问题,就是避免用户下重复订单。用户明明想买一次,结果一看下了两个单。如果没有及时发现,就会带来额外的物流成本和扯皮。对商家的信誉也不好看。 从技术上看,这是一个分布式一致性问题;但实际上,技术无法100%解决这类问题,得结合多种手段综合处理。这里就来说道说道。 为啥会下重了呢? 原因1:客户端bug 比如下单的按键在点按之后,在没有收到服务器请求之前,按键的状态没有设为已禁用状态,还可以被按。又或者,在触摸屏下,用户手指的点按可能被手机操作系统识别为多次点击。 嗯,谁能保证客户端不偶尔
大宽宽
2018-05-14
4.1K0
系统的请求量突然增大数倍怎么办?面试中怎么回答真实世界的流量问题最后的话
一般的业务服务系统大体上就是通过网络远程对DB进行读写。如果流量突然飙大,总有一个资源会遇到瓶颈。按照经验大概出问题地方是DB磁盘io、CPU、带宽、连接数、内存其中的一个或几个。不同的业务,不同的系统设计,出问题的地方会有所不同。如果流量增大数倍,势必某个资源会在瞬间被榨干,然后所有的服务都会“开小差”,引起用户的抱怨。而解决问题的关键,是在问题发生时,尽量减少出问题的资源被访问。 对于这个问题,我这里给出两个回答,一个是应付面试的,一个面向实际的。大家各取所需。 面试中怎么回答 面试官其实就想听到几个术
大宽宽
2018-05-14
5.4K2
如何避免问渣问题?
其实这个问题已经被无数的人列举过、讨论过、吐槽过。但似乎很多人,特别是初学者/职业的入门者总是在问渣问题,而且自我感觉良好。如果非得要在大学加一门课的话,我特别希望就是“如何避免问渣问题“。并且特别希望它成为必修课之一。 当然,有些人问问题其实并不是在问问题,而可能是在讽刺、挖坑(知乎里特别流行)或者秀逼格。我不是很擅长这些,所以本文不在这些领域班门弄斧。 避免问愚蠢的问题 在提问之前,思考下这个问题是不是非常的愚蠢。尽管所有人(包括我)在内都愚蠢过,并且每个人也并不是会通晓所有领域。但是问的问题过度弱智,
大宽宽
2018-05-14
1.4K2
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
热点技术征文第五期
新风口Sora来袭,普通人该如何把握机会?
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档