![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 83
dongcheng_2015
这个作者很懒,什么都没留下…
展开
-
synchronized同步机制——如果你愿意一层一层剥开我的心
前言synchronized,是解决并发情况下数据同步访问问题的一把利刃。那么synchronized的底层原理是什么呢?下面我们来一层一层剥开它的心,就像剥洋葱一样,看个究竟。Synchronized的使用场景synchronized关键字可以作用于方法或者代码块,最主要有以下几种使用方式,如图:接下来,我们先剥开synchronized的第一层,反编译其作用的代码块以及方法。synchronized作用于代码块public class SynchronizedTest {转载 2021-05-27 12:46:29 · 447 阅读 · 0 评论 -
为什么HashMap底层树化标准的元素个数是8
本文源自转载:阿里P7岗位面试,面试官问我:为什么HashMap底层树化标准的元素个数是8目 录一、一般的面试题二、HashMap的基本知识点三、为什么要转成红黑树呢?四、为什么树化标准是8个五、hash方法六、为什么退化为链表的阈值是6一、一般的面试题对于HashMap,我们再熟悉不过了,日常开发最常用的Java集合类就是它了,而且面试的时候对于HashMap知识点基本是必问的,就拿我之前的面试经历来看,问的最多的无非是这么几个:1、HashMap的...转载 2021-05-27 00:02:42 · 640 阅读 · 0 评论 -
常用4种限流算法介绍及比较
本文源自转载:常用4种限流算法介绍及比较目录1、计数器(固定窗口)算法2、滑动窗口算法3、漏桶算法4、令牌桶算法1、计数器(固定窗口)算法计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。这个算法通常用于QPS限流和统计总访问量,对于秒级以上的时间周期来说,会存在一个非常严重的问题,那就是临界问题.转载 2021-05-24 11:38:05 · 236 阅读 · 0 评论 -
JUC进阶之路-Java的内存模型JMM
本文源自转载:JUC进阶之路-Java的内存模型JMM目录一、大厂常见的JMM面试题二、什么是JAVA内存模型JMM(Java Memory Model)三、JMM的三大特性3.1 可见性3.2 原子性3.3 有序性(指令重排)四、多线程的先行发生原则之happens-before一、大厂常见的JMM面试题什么是Java内存模型JMM? JMM有哪些特性or它的三大特性是什么? 为什么要有JMM,它为什么出现,作用个人功能是什么? happens-befo.转载 2021-05-23 18:24:13 · 131 阅读 · 0 评论 -
ConcurrentHashMap的size方法是线程安全的吗?
本文源自转载:ConcurrentHashMap的size方法是线程安全的吗?目录一、HashMap存在的问题二、HashMap三、ConcurrentHashMap3.1 JDK1.7中的ConcurrentHashMap3.2 JDK1.8后的ConcurrentHashMap3.2.1 put方法3.2.2get()方法3.2.3 size()方法四、总结一、HashMap存在的问题我们都知道Hash表的结构是数组加链表,就是一个数组中,每一个元素都是.转载 2021-05-23 17:17:30 · 274 阅读 · 0 评论 -
Java8的@sun.misc.Contended注解解决伪共享问题
本文源自转载:Java8的@sun.misc.Contended注解目录一、@sun.misc.Contended 介绍二、单独使用一个缓存行有什么作用——避免伪共享三、@sun.misc.Contented的使用实例一、@sun.misc.Contended 介绍@sun.misc.Contended 是 Java 8 新增的一个注解,对某字段加上该注解则表示该字段会单独占用一个缓存行(Cache Line)。这里的缓存行是指 CPU 缓存(L1、L2、L3)的存储单元,常见的转载 2021-05-23 17:15:20 · 526 阅读 · 0 评论 -
tomcat的工作原理
本文源自转载:你还记得 Tomcat 的工作原理么一、Tomcat 整体架构Tomcat 是一个免费的、开源的、轻量级的 Web 应用服务器。适合在并发量不是很高的中小企业项目中使用。二、文件目录结构以下是 Tomcat 8 主要目录结构三、功能组件结构Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tom..转载 2021-05-20 23:21:45 · 3080 阅读 · 0 评论 -
ThreadLocal的内存泄露?什么原因?如何避免?
本文源于转载:ThreadLocal的内存泄露?什么原因?如何避免?另一篇讲的挺好的文章:ThreadLocal原理及内存泄露预防前言在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这样情况发生,增强系统的健壮性。内存泄露内存泄露为程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多转载 2021-05-20 11:22:40 · 180 阅读 · 0 评论 -
java内存屏障的原理与应用
本文源自转载:原文链接深度好文:一文解决内存屏障一.java内存屏障1.1 什么是内存屏障(Memory Barrier)?内存屏障(memory barrier)是一个CPU指令。基本上,它是这样一条指令: a) 确保一些特定操作执行的顺序; b) 影响一些数据的可见性(可能是某些指令执行后的结果)。编译器和CPU可以在保证输出结果一样的情况下对指令重排序,使性能得到优化。插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执行,后于这个命令的必须后执行。内存屏障另一个作用是强.转载 2021-05-15 23:38:48 · 139 阅读 · 0 评论 -
HashSet的实现原理
此文章属于转载——原文链接。HashSet是Java Map类型的集合类中最常使用的,本文基于Java1.8,对于HashSet的实现原理做一下详细讲解。一、HashSet实现原理总结HashSet的实现原理总结如下:①是基于HashMap实现的,默认构造函数是构建一个初始容量为16,负载因子为0.75 的HashMap。封装了一个 HashMap 对象来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 key 来保存,而 HashMap 的 va.转载 2021-05-15 14:56:21 · 6301 阅读 · 0 评论 -
在HashMap中将可变对象用作Key,需要注意什么?
本文属于转载:原文链接。目录1、什么是可变对象2、HashMap如何存储键值对3、在HashMap中使用可变对象作为Key带来的问题4、如何解决1、什么是可变对象可变对象是指创建后自身状态能改变的对象。换句话说,可变对象是该对象在创建后它的哈希值可能被改变。在下面的代码中,对象MutableKey的键在创建时变量 i=10 j=20,哈希值是1291。然后我们改变实例的变量值,该对象的键 i 和 j 从10和20分别改变成30和40。现在Key的哈希值已经变成1931。转载 2021-05-15 14:54:58 · 639 阅读 · 0 评论 -
java中线程的状态,thread.start()启动之后线程进入什么状态?
Java中的线程的生命周期大体可分为5种状态。1.新建(NEW):新创建了一个线程对象。2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出...转载 2021-05-15 14:11:44 · 5603 阅读 · 0 评论 -
JAVA中的wait和sleep有什么区别?
先说结论:1、这两个方法来自不同的类分别是Thread和Object2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常5、sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sle原创 2021-05-15 13:35:53 · 4519 阅读 · 0 评论 -
正则表达式的常用语法
正则是一个非常重要的知识点,我在数据库、前端设计、爬虫等中都看到过很多,但是自己没有去刻意学习,每次都是自己去网上搜,今天就建立自己的正则库,方便自己以后翻阅,同时也用于把自己平时见到的一些巧妙的正则表达式往里面塞一塞。一、什么是正则表达式? 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定...原创 2019-11-15 23:13:18 · 159 阅读 · 0 评论