Java
残阳蓝夕
这个作者很懒,什么都没留下…
展开
-
Java锁
一.Java锁1.分类:1) 公平锁/非公平锁2) 可重入锁3) 独享锁/共享锁4) 互斥锁/读写锁5)乐观锁/悲观锁6)分段锁7)偏向锁/轻量级锁/重量级锁8)自旋锁2.常见的锁:Synchronized:非公平,悲观、独享、互斥、可重入、重量级锁ReentrantLock:默认非公平但可实现公平,悲观、独享、互斥、可重入、重量级锁ReentrantReadWri...原创 2020-04-23 14:53:19 · 275 阅读 · 0 评论 -
SpringCloud笔记
1.什么是SpringCloud?2.SpringCloud的优势?和Dubbo对比3.Spring cloud 和Dubbo的区别?4.Spring cloud和Spring boot的区别?5.Spring cloud如何实现负载均衡?6.Spring cloud如何实现容错?7.Spring cloud如何实现服务注册、服务发现、Eureka工作原理?8.ribbon和feig...原创 2019-04-08 14:53:45 · 199 阅读 · 0 评论 -
SpringMVC原理
一.流程图二.流程详解 1. 用户通过URL向访问的服务器发送请求,首先会被web.xml中的DispatcherServlet捕获 2. DispatcherServlet解析URL,得到资源标示符uri,判断uri中是否是携带了springmvc.xml中定义的@RequestMapping映射的value值没有匹配到:再判断springmvc.xml中是否配置了<...原创 2019-05-14 21:42:39 · 275 阅读 · 0 评论 -
CAS浅析
一、CAS定义:比较和交换(Compare And Swap),它是一条CPU并发原语,是用于多线程同步的原子指令作用:判断内存中某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子性的思想:乐观锁的思想(CAS本身不加锁),当多个线程使用CAS操作一个变量,同一时间只有一个能更新成功,其它的失败,但失败的线程不会被挂起,允许再次尝试(自旋)实现:...原创 2019-05-26 09:58:53 · 312 阅读 · 0 评论 -
JVM内存结构
JVM内存结构堆、栈、方法区、直接内存、堆和栈区别一.JVM的组成分为线程独享区域(程序计数器、本地方法栈、虚拟机栈)、全局共享区域(堆、方法区、运行时常量池)1.程序计数器(Program Counter Register)占用较小的内存区域,作用:当前线程执行字节码的位置指示器,分支、循环、跳转、异常处理等功能依赖它2.虚拟机栈(VM Strack)定义:主管Java...原创 2019-01-07 11:20:04 · 236 阅读 · 0 评论 -
GC垃圾回收
1.定义GC :Garbage Collections ,即JVM垃圾收集器,垃圾回收其实就是对那些“死亡的”对象进行其所侵占的内存的释放,让后续对象再能分配到内存,从而完成程序运行的需要。回收的场所为堆、方法区,在堆中进行垃圾回收分为新生代(Young Generation)和老年代(Old Generation)。新生区又分为:Eden区(Eden Region)、From Surviv...原创 2019-01-07 16:14:43 · 978 阅读 · 0 评论 -
Java内存模型
1.什么是内存模型Java内存模型中规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存(可以与前面将的处理器的高速缓存类比),线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作(读取、赋值)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程之间无法直接访问对方工作内存中的变量,线程间变量值的传递均需要在主内存来完成主内存:主要存储的是...原创 2019-01-07 18:10:19 · 208 阅读 · 0 评论 -
Collection浅析
一.集合---|Collection: 单列集合 ---|List: 有序, 可重复,有下标索引 ---|ArrayList: 底层动态数组,单线程,线程不安全,初始容量10,1.5倍扩容,查询效率高,增/删/改效率低 ---|LinkedList: 双向链表实现,增删快,查询慢, ...原创 2019-01-18 09:52:08 · 295 阅读 · 0 评论 -
线程+线程生命周期+线程通信
一.程序、进程、线程程序(program):具有某些功能的指令程序的集合。进程(process):资源分配的最小单位,程序运行一次就有一个线程。线程(thread):程序执行的最小单位,进程的执行路径,多个线程共享一个进程资源...原创 2019-01-21 11:17:21 · 249 阅读 · 1 评论 -
Java类的加载机制
一.类的生命周期JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。加载:作用:查找并加载类的二进制数据步骤:1)以类的全限定名来获取此类的二进制字节流2)将字节流所代表的静态数据存储结构转化为方法区的运行时数据结构3)在堆中生代表此类的java.lang.class对象,作为方法区中类数据的访问入口验证:作用:确保加载的类信息复合jvm规范,没有安...原创 2019-01-14 10:50:05 · 484 阅读 · 0 评论 -
分布式锁
1.分布式锁:概念:当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问场景:微服务中,线程A和B很可能不在同一JVM中,线程锁就无法起到作用,就要用到分布式锁来解决2.分布式锁需要解决的问题:死锁:获得锁的客户端宕机或者异常后(无法释放锁)原子性:同一时间只有一个客户端可以获取到锁互斥性:加锁和解锁的客户端必须是同一个,不能把其他客户端加的锁给解了容错性:避免同一...原创 2019-01-25 10:57:29 · 641 阅读 · 0 评论 -
volatile关键字浅析
volatile关键字定义:轻量级、硬件级别锁,保证了多线程的可见性和有序性,但无法保证原子性作用范围: 类的成员变量、类的静态成员变量 可见性(所有线程可见)1)volatile 变量,JVM 保证了每次读变量都从主内存中读变量本身,跳过复制到工作内存这一步2)非volatile 变量,每次读变量都从工作内存中读变量的副本 有序性(禁止指令重排序优化)观察加入vola...原创 2019-01-23 09:33:07 · 205 阅读 · 0 评论