
java原理
文章平均质量分 97
钱多多_qdd
请你爱自己,也爱生活
展开
-
Java的15种锁总结
一、分类在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁 / 非公平锁 可重入锁 / 不可重入锁 独享锁 / 共享锁 互斥锁 / 读写锁 乐观锁 / 悲观锁 分段锁 偏向锁 / 轻量级锁 / 重量级锁 自旋锁这些大多是对锁进行类型划分,或者是一种锁的设计思想,彼此之间很多性质有的是兼容的,有的是对立的。二、解释2.1 公平锁 / 非公平锁2.1.1 公平锁就是很公平,在并发环境中,每个线程在获取锁时会先查...原创 2021-01-11 22:15:15 · 162 阅读 · 0 评论 -
浅谈Http协议、TCP协议
一、Http协议1.1 HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。1.2HTTP 工作原理HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器有:Apa.原创 2020-11-18 22:42:08 · 462 阅读 · 0 评论 -
由一次NoHttpResponseException异常,追究到Http长连接和短连接
一、HTTP协议中的长连接和短连接(keep-alive状态)二、TCP的keepalive和HTTP的keepalive之间的区别三、如何配置HTTP自定义KeepAlive策略策略原创 2020-11-22 21:41:41 · 3423 阅读 · 0 评论 -
浅谈Java内存模型——JVM
一、前言二、JVM组成类加载器(classLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口(Navite Interface)各个组成部分的用途:程序在运行之前会把.java文件转成.class的字节码文件,jvm首先通过类加载器(classLoader)把字节码文件加载到内存——运行时数据区(Runtime Data Area),而字节码文件是jvm的一套指令集规范,底层系统并不能识别,需要调用执行引擎(.原创 2020-09-24 00:07:43 · 1018 阅读 · 0 评论 -
ConcurrentHashMap源码(JDK1.8)
一、与JDK1.7的区别ConcurrentHashMap的实现与1.7版本有很大的差别,放弃了段锁的概念,借鉴了HashMap的数据结构:数组+链表+红黑树。ConcurrentHashMap不接受nullkey和nullvalue。1.1 数据结构数组+链表+红黑树1.2 并发原理cas乐观锁+synchronized锁CAS是compare and swap的缩写,即我们所说的比较交换。cas是一种基于锁的操作,而且是乐观锁。在java中锁分为乐观锁和悲观锁。悲观锁是将资源原创 2020-12-29 17:11:29 · 254 阅读 · 0 评论 -
ConcurrenHashMap源码(JDK1.7)
世味年来薄似纱,谁令骑马客京华。小楼一夜听春雨,深巷明朝卖杏花。矮纸斜行闲作草,晴窗细乳戏分茶。素衣莫起风尘叹,犹及清明可到家。——陆游《临安春雨初霁》一、前言2.1 ConcurrentHashMap的锁分段技术HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的...原创 2020-12-21 23:51:51 · 471 阅读 · 0 评论 -
HashMap死循环讲解(JDK1.8 之前)
上一章有写risize()代码,这一章我们从risize()开始进行讲解。一、hash表迁移新建一个更大尺寸的 hash 表,然后把数据从老的 Hash 表中迁移到新的 Hash 表中resize#源码:void resize(int newCapacity) { Entry[] oldTable = table; int oldCapacity = oldTable.length; ...... // 创建一个新的 Hash Table Entry原创 2020-12-11 00:31:42 · 761 阅读 · 0 评论 -
HashMap源码解析
崇祯五年十二月,余住西湖。大雪三日,湖中人鸟声俱绝。是日更定矣,余拏一小舟,拥毳衣炉火,独往湖心亭看雪。雾凇沆砀,天与云与山与水,上下一白。湖上影子,惟长堤一痕、湖心亭一点,与余舟一芥、舟中人两三粒而已。到亭上,有两人铺毡对坐,一童子烧酒炉正沸。见余,大喜曰:“湖中焉得更有此人!”拉余同饮。余强饮三大白而别。问其姓氏,是金陵人,客此。及下船,舟子喃喃曰:“莫说相公痴,更有痴似相公者!”——张岱《湖心亭看雪》一、前言本文分析HashMap源码和多线程下HashMap产生死锁的过程。后一篇文章.原创 2020-12-10 22:36:02 · 9104 阅读 · 7 评论 -
java关键字:volatile
用自己的话阐述就是两个作用:1.volatile修饰的变量,直接读取主存中的值。没有volatile修饰的变量,cpu会将运算需要的数据从主存复制一份到CPU的高速缓存当中,在运行完成后再将修改后的值刷到主存中。2.禁止指令重排;在Java内存模型中,允许编译器和处理器对指令进行重排序,没有valotile修饰的变量,有可能会被编译器指令重排。参考文章:https://www.cnblogs.com/ustc-anmin/p/11434769.html...原创 2020-09-24 22:34:19 · 117 阅读 · 0 评论