马赛琦的博客

人生如逆旅,我亦是行人

Scroll Down

HashMap源码的细节与启发 🔥

HashMap源码的细节与启发1.前言这些天心血来潮想认认真真过一遍JCF的源码实现,在阅读到HashMap的时候发现自己之前还是太肤浅,很多地方没能理解JDK作者的巧思,因此想记录下来自己学习过程中的收获。在正式开始之前先吹一波美团技术团队,之前看并发编程的时候也是搜到不少美团技术团队的文章,写的

#java  

synchronized关键字 🔥

1.首先挂一个图图片摘自美团技术团队,个人觉得写的特别好:2.synchronized的锁作用范围Java锁作用范围有两种:一种是类的实例对象的锁(对象锁)。一种是类的class对象(类锁)。比如:在一个静态方法前面加synchronized关键字,就是对这个类的class对象加锁。publiccl

#并发编程  

JMM(Java Memory Model)Java内存模型 🔥

1.并发编程模型在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明(不可见)。2.Java内存模型的抽象结构从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储

#并发编程  

volatile学习笔记 🔥

1.volatile关键字的作用可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。有序性(阻止指令重排):volatile标志的变量的写不能与之前的代码重排序;volatile标志的变量的读不能与之后的代码进行重排序(一般记为写前读后后文详细说明)原

#并发编程  

并发编程中的可见性与原子性 🔥

1.可见性1.1什么叫做可见性可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。1.2.为什么会有可见性问题可见性问题的根本原因是因为现代CPU在设计上解决CPU运算速度与内存读写速度不匹配问题而导致的。这种访问速度的显著差异,导致CPU可能会花费很长

设计模式总结(GOF23)

参考原文设计模式分类GoF的23种设计模式的功能1.单例(Singleton)某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。分为饿汉式,懒汉式,double-check2.原型(Prototype)将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的

#生活感悟  

分布式系统的一致性理论(CAP和BASE)

一致性模型强一致性当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值,直到这个数据被其他数据更新为止。但是这种实现对性能影响较大,因为这意味着,只要上次的操作没有处理完,就不能让用户读取数据。弱一致性系统并不保证进程或者线程的访问都会返回最新更新过的值。系统在数据写入成功之后

#分布式   #java  

软件设计原则学习

软件设计原则学习最近在学习GOF23,感觉前提一定要清楚了解设计的原则,不然无法完全体会设计模式的优势。因此也就兴冲冲的好好钻研了一波设计原则。1.开闭原则开闭原则(Open-ClosedPrinciple,OCP)是指一个软件实体(如类、模块、函数)应该对扩展开放,对修改关闭。所谓开闭,其实是对扩

#设计原则  

idea的lombok插件支持@SuperBuilder注解啦

1.前言今早进公司打开idea,弹出更新提示,简单看了下,原来是idea的lombok插件更新了,惊喜的发现updatelog上写着Addsupportfor@SuperBuilder。为什么说是惊喜呢?因为之前也有用到这个的场景,去官网认认真真看完了@SuperBuilder的用法以及描述,刚准备

#lombok   #idea