自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Keyu

学生/非典型猫型程序员

  • 博客(14)
  • 收藏
  • 关注

原创 ReentrantLock的加锁和解锁原理

ReentrantLock的实现依赖于Java同步器框架AQS。AQS使用一个整型的volatile变量(命名为state)来维护同步状态。ReentrantLock分为公平锁和非公平锁公平锁使用公平锁时,加锁方法lock()的调用轨迹:ReentrantLock:lock() FairSync:lock() AbstractQueuedSynchronizer:acquire...

2018-12-29 14:16:45 1206

原创 java中CAS实现的原理

从书中看到java中可以通过CAS的方式实现原子操作。在这里用了JAVA提供的用于原子操作的atomic类中的atomicInteger。例子中的安全计数器代码如下:private void safeCount(){ for(::){ int i = atomicI.get(); boolean suc = atomicI.compareAndSe...

2018-12-29 00:16:32 414

原创 GOF的23种设计模式

总结将每一种设计模式的理解和示例分享在了有道云笔记上,以下是链接:创建型 单例(Singleton) 简单工厂(Simple Factory) 工厂方法(Factory Method) 抽象工厂(Abstract Factory) 生成器(Builder) 原型模式(Prototype) 行为型 责任链(Chain Of Responsibility) 命...

2018-12-28 20:59:22 185

原创 synchronized原理

在多线程并发编程中synchronized一直是元老级角色,很多人称之为重量级锁。而后在Java SE 1.6后对synchronized进行了优化,有的时候它就没有那么重了,引入了偏向锁和轻量级锁。 锁的释放和获取的内存语义当线程释放锁时,JMM会把线程对应的本地内存中的共享变量刷新到主内存中。 当线程获取锁时,JMM会把该线程对应的本地内存置为无效。从而可以使得被监视器保护的临界...

2018-12-27 22:02:03 161

原创 volatile关键字详解

实现原理//instance是volatile变量instance = new Singleton();转换为汇编代码:0x01a3de1d: movb $0×0,0×1104800(%esi);0x01a3de24: lock add1 $0×0,(%esp)在有volatile变量修饰的共享变量进行写操作时会多出第二行代码。 lock前缀的指令在多核处理器中会引发两...

2018-12-25 22:54:10 126

原创 Redis的主从复制

集群的作用主从备份,防止主机宕机。 读写分离,分担master的任务。 任务分离,如从服务器分别分担备份工作于计算工作。主从复制的启动过程slave从服务器自动向主服务器master请求sync同步。 master开始执行BGSAVE,并使用缓冲区记录BGSAVE之后的所有写命令。 slave根据配置决定是继续使用现有的数据来处理客户端请求,还是发送错误命令。 master的B...

2018-12-25 17:47:53 107

原创 Redis持久化方式

目录 常见的持久化方式快照(snapshotting)工作原理相关参数优点缺陷只追加文件(append-only-file,AOF)工作原理相关参数优点缺点注意常见的持久化方式主从:通过从服务器保存和持久化,如mongoDB和replication sets配置 。 日志:操作生成相关日志,并通过日志来恢复数据。快照(snapshot...

2018-12-24 19:57:49 141

原创 多线程基础 Java并发1

目录 线程和进程概念同步和异步概念多线程创建方式继承Thread类(不推荐)实现runnable接口,重写run方法使用匿名内部类多线程的运行状态守护线程、非守护线程join方法()优先级线程安全同步方式同步代码块:同步方法注意线程和进程概念进程是独立的应用程序,进程中一般会有多个线程,进程是线程的集合。 线程就是一条执行路...

2018-12-22 15:32:07 121

原创 githubpage 配置 出现DNS解析失败

解决方法:1.域名没有实名制,因此dns服务商没有提供解析服务。2.给解析添加A类型,以下地址任选一185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153配置完成图...

2018-12-20 18:00:05 2974 1

原创 虚拟机字节码执行引擎 JVM笔记4

目录 概述运行时栈帧结构局部变量表操作数栈方法返回地址附加信息方法调用解析分派静态分派动态分派单分派与多分派虚拟机动态分派的实现基于栈的字节码解释执行引擎概述输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。 运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。它是虚拟机运行时数...

2018-12-20 13:40:29 115

原创 类文件结构与虚拟机类加载机制 JVM笔记3

目录 平台无关性Class类文件的结构魔数与Class文件的版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合虚拟机类加载机制类加载的时机类加载的过程加载验证准备解析初始化类加载器类与类加载器双亲委派模型自定义类加载器实现平台无关性平台无关性是JVM所具有的另一重要特性。这些...

2018-12-13 15:35:13 114

原创 垃圾收集器和内存分配策略 JVM笔记2

目录对象已死吗引用计数算法可达性分析算法再谈引用生存还是死亡回收方法区垃圾回收算法标记-清除算法复制算法标记-整理算法分代收集算法HotSpot的算法实现垃圾收集器Serial收集器ParNew收集器Parallel Scavenge 收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器...

2018-12-08 15:26:49 116

原创 Java内存区域与内存溢出异常 JVM笔记1

目录运行时数据区域程序计数器虚拟机栈本地方法栈堆方法区直接内存对象的内存布局对象头实例数据对齐填充对象的访问定位运行时数据区域JAVA虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。程序计数器一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。 通过改变这个计数器的值来选取下一条需要执行的字...

2018-12-05 18:14:39 150

转载 Spring中bean的生命周期

满足以下的条件的Java类被称为bean:1、所有属性为private2、提供默认构造方法3、提供getter和setter4、实现serializable接口(允许序列化,便于框架等使用)在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后bean就可以用了。一旦该bean不再被使用,则由Java自动进行垃圾回收。以下是bean...

2018-12-03 15:46:14 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除