在使用 HashMap 时在多线程情况下扩容会出现 CPU 接近 100%的情况,因为 hashmap 并不是线程安全的,通常我们可以使用在 java 体系中古老的 hashtable 类,该类基本上所有的方法都采用 synchronized 进行线程安全的控制,可想而知,在高并发的情况下,每次只有一个线程能够获取对象监视器锁,这样的并发性能的确不令人满意。ConccurentHashMap是如何做的呢?参考博客Java的ConcurrentHashMap
内存是程序得以运行的重要物质基础。如何在有限的内存空间运行较大的应用程序,曾是困扰人们的一个难题。为解决这个问题,人们设计了许多的方案,其中最成功的当属虚拟内存技术。Linux作为一个以通用为目的的现代大型操作系统,当然也毫不例外的采用了优点甚多的虚拟内存技术。参考博客Linux的虚拟内存详解
前提知识:有状态和无状态
经典的排序算法自己手写一遍,并且归纳
归纳总结IO底层的几种方式,并且对java new io的一些知识点进行学习。参考博客Java NIO 底层原理
IaaS使用RabbitMQ来进行模块间的消息传递,但主要是一些运维工作,看过RabbitMQ的一些代码,并没有实际写过。本文将先从RabbitMQ原理入手,介绍此消息中间件,之后和同为消息中间件的Kafka做对比,分析两款消息中间件的差异。
之前写实时决策引擎的时候,用的是Flink读取Kafka,Kafka那部分是同组的另外一个同学写的数据总线的项目,因此对Kafka的机制原理了解不是特别深,单纯为了测试写过一些简单的Kafka生产者消费者,此篇文章总结了kafka的基本原理。也是我同组且同桌的兄弟整理出来的,在此特别感谢付华同学的整理。原文,参考来源
复习基本数据结构树,不涉及到具体的代码实现,主要是每个树的特点和原理弄清楚。
学了几次Paxos算法,当时会过后就忘,这次总结整理一下,先从基本的CAP原理复习,之后归纳总结一下两款分布式一致性协议Paxos和Raft,最后记录一下Zookeeper的作用。此篇文章是参考多篇博客整理而出,在此感谢原博主们的精心整理与分享。
线程安全