占小狼的博客

其他

Raft实战系列,集群成员如何变更?日志怎么压缩?

Consensus)。关于集群成员变更另一篇更详细的论文还给出了其它方法,简单来说就是论证一次只变更一个节点的的正确性,并给出解决可用性问题的优化方案。感兴趣的同学可以参考《Consensus:
2020年12月19日
其他

Raft实战系列,选主+日志复制过程如何保证安全?

“Security”,但出于对论文作者的敬意,本文继续使用“安全性”)。系列文章Raft实战系列,先说说一些基本概念Raft实战系列,什么是选主?为什么需要选主?如何进行选主?Raft
2020年12月17日
其他

Raft 实战系列,日志复制是什么?怎么实现?日志不一致怎么办?

也永远不会失败。然而我们总要面对任意节点随时可能宕机的风险,如何在这种情况下继续保持集群日志的一致性才是我们真正要解决的问题。日志不一致的场景上图展示了一个
2020年12月16日
其他

Raft实战系列,什么是选主?为什么需要选主?如何进行选主?

RPC)。S1率先超时,变为candidate,term+1,并向其它节点发出拉票请求接下来会有三种可能的结果,也即节点状态图中candidate状态向外伸出的三条线。1.
2020年12月14日
其他

Raft实战系列,先说说一些基本概念

点击上方蓝色字体,选择“设为星标”回复”666“获取面试宝典本文为《Raft实战》系列开篇,该系列会从原理、源码、实践三个部分为大家讲解Raft算法。原理部分我们会结合Raft论文讲解Raft算法思路,整体分篇会遵循Raft的模块化思想,分别讲解Leader
2020年12月13日
其他

HTTP/3 来了 !

未来可期。面试官问:MySQL的自增ID用完了,怎么办?ArrayList插入1000w条数据之后,我怀疑了jvm...蚂蚁二面,面试官问我零拷贝的实现原理,当场懵了…明天见(。・ω・。)ノ♡
2020年6月4日
其他

IDEA 插件推荐: EasyCode一键生成所需代码~

Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。
2020年2月16日
其他

张一鸣:为什么BAT挖不走我们的人才?

除了CEO要做HR之外,HR也要做好HR。行业的现状是HR的门槛低,我觉得,HR不仅是招聘,还是参与公司这个组织管理,协助CEO和业务主管进行招聘和人才的配置。其实要对公司,对组织能力有深入的思考。
2020年2月10日
其他

蚂蚁二面,面试官问我零拷贝的实现原理,当场懵了…

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年10月28日
其他

面试官问:Redis 内存满了怎么办?我想不到!

Redis使用的是近似LRU算法,它跟常规的LRU算法还不太一样。近似LRU算法通过随机采样法淘汰数据,每次随机出5(默认)个key,从里面淘汰掉最近最少使用的key。
2019年10月16日
其他

ArrayList插入1000w条数据之后,我怀疑了jvm...

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年10月8日
其他

面试官问:MySQL的自增ID用完了,怎么办?

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年9月17日
其他

fastjson又被发现漏洞,这次危害可导致服务瘫痪!

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年9月7日
自由知乎 自由微博
其他

惊呆了,Spring Boot居然这么耗内存!

有Spring大靠山在,更新、稳定性、成熟度的问题根本不需要考虑。在JAVA系混的技术人员大约都听说过Spring的大名吧,所以不缺程序员……,而且这入手的难度十分低,完全可以省去一个架构师。
2019年8月29日
其他

面试题:为什么 wait 方法定义在Object类里面,而不是Thread类?

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年8月28日
其他

面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?

lineitem表的数据行数为600多万,B+树高度为3,customer表数据行数只有15万,B+树高度也为3。可以看出尽管数据量差异较大,这两个表树的高度都是3
2019年8月22日
其他

面试官问,为什么建议MySQL列属性尽量用 NOT NULL ?

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年8月8日
其他

枚举很好用啊,为啥阿里不建议返回值用枚举?

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年8月6日
其他

面试官让我讲下线程的WAITING状态,我笑了

注意:哪怕只通知了一个等待的线程,被通知线程也不能立即恢复执行,因为她当初中断的地方是在同步块内,而此刻她已经不持有锁,所以她需要再次尝试去获取锁(很可能面临其它线程的竞争),成功后才能在当初调用
2019年7月31日
其他

整理了一些 IDEA 中比较骚的技巧,发现第一个就没用过!

最后,分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年7月16日
其他

7年Java后端被淘汰,一路北漂辛酸史。。。

总之,在朋友对我的反应上,基本就是你想多了;你不干得挺好的吗;程序员一个拿那么多钱你还瞎苦恼个什么;不光你,谁没困难;其中特别好的一个也差不多最多宽慰两句,你行,你可以挺过去之类的。之后就再无信息。
2019年7月5日
其他

Java8 的这个特性,用起来真的很爽!

除了常规的对象Stream,还有一些有特殊类型的Stream,用于处理基本数据类型int、long和double,它是IntStream、LongStream和DoubleStream。
2019年7月2日
其他

牛逼了!用 IDEA 扒出了开源组件导致FGC的原因

很多同学可能会想到通过JVM参数-XX:+DisableExplicitGC来屏蔽掉System.gc()的调用,这不是解决问题,而是掩盖问题。而且事实上,这里还有更好的办法,请继续往下看。
2019年6月23日
其他

JDK13的 5个新特性,抢先看,开车都追不上了!

例如,基于GC频率或某些其他数据找到合适超时值的启发式算法。JDK13将使用哪种具体策略目前尚未确定。可能最初只提供一个简单的超时策略,使用-XX:ZUncommitDelay
2019年6月20日
其他

面试官问,使用Dubbo有没有遇到一些坑?我笑了。

}1617}按照聊天记录的描述,此时consumer调用provider,provider抛出HelloException.但是consumer捕获到的,却不是HelloException.
2019年6月19日
其他

疯了吧!面试官问一个 TCP 连接可以发多少个 HTTP 请求?

连接之后,假设客户端在这个连接连续向服务器发送了几个请求。按照标准,服务器应该按照收到请求的顺序返回结果,假设服务器在处理首个请求时花费了大量时间,那么后面所有的请求都需要等着首个请求结束才能响应。
2019年5月28日
其他

不重启JVM,替换掉已经加载的类,偷天换日?

计算机应该是人类有史以来最伟大的发明之一,从电磁感应磁生电,到高低电压模拟0和1的比特,再到二进制表示出几种基本类型,再到基本类型表示出无穷的对象,最后无穷的对象组合交互模拟现实生活乃至整个宇宙。
2019年5月27日
其他

蚂蚁面试:字符串在JVM中如何存放?

StringTable::intern方法跟下去,就可以发现:如果找到了这次操作的字符串,就直接返回found_string;如果没有找到,就将当前的字符串加入到HashTable中,然后再返回。
2019年5月26日
其他

16个很骚的代码注释,喜欢的拿走用

分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年5月19日
其他

面试常问:分布式缓存如何实现一致性哈希?

System.out.println(StatisticsUtil.standardDeviation(atomicLongMap.asMap().values().toArray(new
2019年5月18日
其他

面试官:讲讲redis的过期策略如何实现?

里插入10w个key,并且都设置了过期时间,如果每次都检查所有key,那cpu基本上都消耗在过期key的检查上了,redis对外的性能也会大大降低,简直就是一场灾难。
2019年5月15日
其他

阿里面试,为什么Kafka不支持读写分离

Kafka系列”,其内容源自《深入理解Kafka》一书,相当于此书的电子版,内容基本一致,只是在内容编排上做了一定的修改,目前新上还打8折更便宜,扫码下方二维码即可。
2019年5月11日
其他

阿里程序员常用的 15 个高效工具,大部分已开源!

是一款遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具,可实现底层故障的注入,提供了延迟、异常、返回特定值、修改参数值、重复调用和try-catch
2019年5月4日
其他

刷了一个月算法,终于拿到了double的offer

为使树恢复平衡,我们需要进行两步,第一步,把k1作为根,进行一次右右旋转,旋转之后就变成了左左情况,所以第二步再进行一次左左旋转,最后得到了一棵以k2为根的平衡二叉树树。 代码:
2019年5月3日
其他

收藏!好用的 Chrome 扩展插件,工作效率唰唰唰

这个厉害了,你是否曾为了看图片,一张一张的点,看完一个系列手都费了,简直痛不欲生,现在,福音来了。让我们打开知乎问题《平常人可以漂亮到什么程度?》,查看全部答案,开启图流,你会发现。
2019年5月1日
其他

还在用 kill -9 停机?这才是最优雅的姿势

org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@2cdf8d8a:
2019年4月27日
其他

漫画:你真的懂Github吗?

分享一份面试宝典《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。
2019年4月24日
其他

IDEA中用好Lombok,撸码效率至少提升5倍

Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。
2019年4月13日
其他

阿里面试题,为什么wait()方法要放在同步块中?

假如有两个线程,一个消费者线程,一个生产者线程。生产者线程的任务可以简化成将count加一,而后唤醒消费者;消费者则是将count减一,而后在减到0的时候陷入睡眠:
2019年4月12日
其他

LinkedIn 从CMS到G1的调优实战,实现毫秒级响应

而且CMS必须扫描整个堆来确认存活对象,所以,长时间停顿是非常常见的。而G1的停顿时间取决于收集的Region集合数量,而不是整个堆的大小,所以相比起CMS,长时间停顿要少很多,可控很多。
2019年4月2日
其他

JVM Code Cache空间不足,导致服务性能变慢

在Oracle官网上,有这样一个Bug:http://bugs.java.com/bugdatabase/viewbug.do?bugid=8006952
2019年4月1日
其他

Spring StateMachine,教你快速实现一个状态机

listener()方法创建的监听器相同的功能,但是由于通过注解的方式配置,省去了原来事件监听器中各种if的判断,使得代码显得更为简洁,拥有了更好的可读性。
2019年3月31日
其他

超全的 Linux 性能诊断分析工具

一种新型的linux脚本动态性能跟踪工具。允许用户跟踪Linux内核动态。ktap是设计给具有互操作性,允许用户调整操作的见解,排除故障和延长内核和应用程序。它类似于Linux和Solaris
2019年3月13日
其他

高并发的核心技术 - 幂等的实现方案

比如:支付宝的资金账户,支付宝也有用户账户,每个用户只能有一个资金账户,怎么防止给用户创建资金账户多个,那么给资金账户表中的用户ID加唯一索引,所以一个用户新增成功一个资金账户记录
2019年3月11日
其他

关于烂代码优化重构的几点经验

我当时正年轻气盛,看到有个两分钟才能生成的报表一下就来了兴趣,翻出了那段不知道谁写的代码,发现里面用了3层循环,每次都会去数据库查一次数据,再把一堆数据拼起来,一股脑塞进一个tableview里。
2019年3月9日
其他

Google Java编程风格指南

对于剩余的非ASCII字符,是使用实际的Unicode字符(比如∞),还是使用等价的Unicode转义符(比如\u221e),取决于哪个能让代码更易于阅读和理解。
2019年3月8日
其他

什么才是好代码、高质量代码?

一个工程是否遵循了约定往往需要代码阅读者有一定经验,或者需要借助checkstyle这样的静态检查工具。如果感觉无处下手,那么大部分情况下跟着google做应该不会有什么大问题:可以参考google
2019年3月3日
其他

这些让人抓狂的烂代码,你碰到几种?

从考察点来看,首先是基本的树的遍历算法;其次有一定代码量,可以看出程序员对代码的组织能力、对问题的抽象能力;上机编码可以很简单的看出应聘者是不是很久没写程序了;还包括对于程序易用性和性能的理解。
2019年3月2日
其他

高并发下的 AtomicLong 性能有点差!

getAndAddLong实现中,为了实现正确的累加操作,如果并发量很大的话,cpu会花费大量的时间在试错上面,相当于一个spin的操作。如果并发量小的情况,这些消耗可以忽略不计。
2019年2月27日
其他

MongoDB 比较适用哪些业务场景?

用在一些第三方信息的获取或者抓取,因为MongoDB的schema-less,所有格式灵活,不用为了各种格式不一样的信息专门设计统一的格式,极大得减少开发的工作。
2019年2月22日