自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员ZZ的源码

学习、记录、思考~~

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

原创 Redis分布式集群的管理

redis的分布式集群管理

2021-08-17 22:19:47 198

原创 MySql系列:我们简单聊聊事务和锁的概念~~

聊一聊锁和事务,RR下如何解决幻读,死锁的检测~~~

2021-07-30 22:54:41 262

原创 MySql系列:工作这么多年,你真的了解索引原来的样子吗?

工作这么多年,你真的了解索引原来的样子吗?

2021-07-26 23:29:46 258

原创 并发编程篇:ConditionObject源码分析

详细介绍了ConditionObject源码分析

2021-02-27 16:46:59 196

原创 并发编程篇:读写锁(ReentrantReadWriteLock)的源码分析

本文详细介绍了读写锁,公平和非公平获取 读写锁,以及锁的降级

2021-02-27 14:12:09 181

原创 并发编程篇:重入锁ReentrantLock

本文详细介绍了,重入锁,锁的公平和非公平性

2021-02-26 21:39:51 121

原创 并发编程篇:AQS的原理,有这一篇就够了~~

一起分析下,AQS的源码

2017-09-10 17:25:02 327

原创 【常见算法系列】一、树在java中的实现

真的了解树的定义吗?熟悉树在java中的实现吗?

2021-07-18 21:26:23 599 7

原创 实际案例:“隐式转换”导致的索引失效

你了解“隐式转换”导致的索引失效的原因吗?

2021-04-30 17:08:07 370 1

原创 rocketmq面试,有这一篇就够了~~~

rocketmq高级面试题汇总

2021-03-12 23:21:06 1467

原创 java虚拟机:jvm的面试题有这一篇就够了~~~

java虚拟机:jvm的面试题有这一篇就够了~~~

2021-03-11 13:51:51 433 2

原创 并发编程篇:线程池(ThreadPoolExecutor)有这一篇就够了~~

本文详细介绍了,线程池

2021-03-09 13:52:46 178

原创 并发编程篇:详细聊下线程间的通信

一起详细总结下,线程间的通知方式有哪些

2021-02-19 09:44:31 100

原创 并发编程篇:进程状态的那些知识点,你还记得吗?

线程状态,以及状态的源码你了解吗?

2021-02-17 14:20:10 187

原创 并发编程篇:进程和线程,以及它们的通信

你知道,线程和线程的区别吗?

2021-02-16 16:45:27 196

原创 java基础:知道fail-fast,你知道fail-safe吗?

在Collection集合中,有线程安全和线程不安全这2大类的版本。对于线程不安全的类,并发情况下可能会出现fail-fast情况;而线程安全的类,可能出现fail-safe的情况。fail-fast快速失败当遍历一个集合对象时,如果集合对象的结构被修改了,就会抛出ConcurrentModificationExcetion异常。以ArrayList的源码为例,讲解一下fail-fast的机制1、modCount protected transient int modCount = 0;

2021-02-03 21:48:38 161 1

原创 【常见算法系列】你真正了解java中的堆吗?

看到堆,我们想到堆排序,以及延伸k个最大值和K个最小值;而在java中优先队列(PriorityQueue)很好实现了堆

2021-01-19 14:32:51 121 1

原创 【常见算法系列】栈在java中,你真的了解吗?

栈在java中使用

2021-01-03 15:41:21 164

原创 flink基础篇-开发flink,必备的环境搭建

flink的安装,以及第一个demo

2020-04-04 23:53:51 665

原创 工作了才知道:应该懂得这些网络知识

Http和Https的区别HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间,以明文方式传递信息,不提供任何方式的数据加密,因此使用HTTP协议传输隐私信息(如:银行卡号、密码等支付信息)非常不安全。在HTTP的基础上加入了SSL(Secure Sockets Layer)协议,SSL依靠SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。从而诞生了HTTPS(安全套接...

2018-10-12 21:09:01 642

原创 java虚拟机系列:虚拟机字节码执行引擎

java虚拟机的执行引擎都是一致的:输入字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。过程##### 运行时栈帧结构栈帧(Stack Frame)是用于虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。每一个方法从调研开始至执行的过程,...

2018-09-24 22:04:24 167

原创 java虚拟机系列:java虚拟机类加载机制

类加载机制:虚拟机把描叙类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载的时机类加载的生命周期包含:加载、验证、准备、解析、初始化、使用、卸载。其中,验证、准备、解析3个部分称为链接。虚拟机对于类的初始化阶段严格规定了有且仅有只有5种情况如果对类没有进行过初始化,则必须对类进行“初始化”!遇到new(实例化对象)...

2018-09-24 10:03:52 149

原创 java虚拟机系列:我们聊一聊类文件结构

Class文件是一组8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储的,...

2018-09-21 22:37:05 1217 1

原创 java虚拟机系列:对内存溢出的思考

jvm内存溢出JVM管理的几个内存区域分为:方法区:用于存储JAVA类信息、常量、静态变量。这个区域也可以发生垃圾回收,比如当一些类不在被引用时JVM可以卸载这个类,不过这种回收动作很少发生。另外所有线程都共享方法区,因此线程对方法区的访问被设计为线程安全的。虚拟机栈:JAVA虚拟机栈是线程私有的,每当启动一个新线程时,JVM都会为它分配一个JAVA虚拟机栈。每当线程调用方法时,JVM都会...

2018-09-18 12:34:57 4991

原创 java基础:枚举类型的原理,你真的了解吗?

枚举实现原理package com.own.learn.jdk.enum1;public enum Day { MONDAY("monday"), TUESDAY("TUESDAY"), WEDNESDAY("WEDNESDAY"),

2018-09-14 19:26:47 138

原创 并发编程篇:还怕面试官问你-volatile原理吗?

CPU的术语定义 volatile是轻量级的synchronized,比之执行成本更低,因为它不会引起线程的上下文切换,它在多处理器开发中保证了共享变量的“可见性”,“可见性”的意思是当一个线程修改一个变量时,另外一个线程能读到这个修改的值。volatile的定义和原理Java语言规范第三版中对volatile的定义如下: java编程语言允许线程访问共享变量,为了确保共享变量能被准...

2018-09-14 12:34:41 10795 2

原创 并发编程篇:synchronized的使用以及原理

synchronized的三种应用方式synchronized关键字最主要有以下几种应用方式java对象头在JVM中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。实例变量:存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内存按4字节对齐。填充数据:由于虚拟机要求对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅...

2018-09-09 15:29:22 12745 5

原创 java基础:Aop的代理研究

Spring AOP两种实现机制是什么?如果是有接口声明的类进行AOP 时,spring调用的是java.lang.reflection.Proxy 类来做处理如果是没有接口声明的类时, spring通过cglib包和内部类来实现在AOP,权限控制,事务管理等方面都有动态代理的实现。JDK本身有实现动态代理技术,但是略有限制,即被代理的类必须实现某个接口,否则无法使用 JDK自带...

2018-09-09 11:20:20 463

原创 java基础:说说,Java泛型

特性泛型只在编译阶段有效public class GenericTest1 { public static void main(String[] args) { ArrayList<String> strings = new ArrayList<>(); ArrayList<Double> doubles ...

2018-08-31 21:26:24 142

原创 java虚拟机系列:内存分配和回收策略

详细介绍jvm的内存分配和回收策略

2018-08-29 19:03:56 2699 1

原创 java虚拟机系列:垃圾收集器

垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、火车算法)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集器可能会有很在差别. 图中展示了7种不同分代的收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1;而它们所处区域,则表明其是属于新生代收集器还是老年代收集器:新生代收集...

2018-08-19 15:43:41 15248 3

原创 git fork后如何更新

git fork后如何保持与源项目的更新:首先保证本地仓库的upstream是源项目的URL,若没有则添加:git remote add upstream URL然后利用fetch和merge合并upstream的master分支:git fetch upstreamgit merge upstream/master此时本地的master分支就更新至upstream的...

2018-08-10 09:46:19 6315

原创 java虚拟机系列:垃圾回收算法

GC需要完成三件事:1,哪些内存需要回收?2:什么时候回收?3:如何回收? Java内存运行时区域的各部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束...

2018-08-05 15:16:42 13331 4

原创 java虚拟机系列:java虚拟机内存模型

java内存模型,分为程序计数器,虚拟机栈,本地方法栈,java堆,java栈。根据受访的权限不同设置,可以分为线程共享和线程私有。线程共享指可以允许所有的线程共享访问的一类内存区域,包括堆内存区,方法区,运行的常量池。程序计数器(Program Counter Register)在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通...

2018-08-02 14:39:25 5984

原创 java虚拟机系列:如何使用VisualVM

详细介绍使用VisualVM的注意事项

2018-07-29 18:32:30 1175

原创 java虚拟机系列:如何使用jstack

语法 [@82995c215909 ~]$ jstack -h Usage: jstack [-l] (to connect to running process) jstack -F [-m] [-l] (to connect to a hung process) jstack [-m] [-...

2018-07-25 20:17:30 312

原创 java虚拟机系列:jhat虚拟机堆栈转存快照分析工具

用法jhat -h Usage: jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <f

2018-07-25 20:04:32 588 1

原创 java虚拟机系列:如何使用jmap

jmap作用,获取dump文件,查询finalize执行队列,java堆栈以及类加载器统计。显示堆栈信息[@82995c215909 /opt/logs]$ jmap -heap 12527 Attaching to process ID 12527, please wait… Debugger attached successfully. Server compiler detec...

2018-07-24 20:38:50 1021

原创 java虚拟机系列:如何使用jinfo命令

jinfo 用法➜ ~ jinfo --helpUsage: jinfo [option] <pid> (to connect to running process) jinfo [option] <executable <core> (to connect to a core file) jinfo...

2018-07-19 20:08:42 989

原创 java虚拟机系列:jstat命令使用

jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 查看远端的: [protocol:][//]lvmid[@hostname[:port]/servername] 类加载统计:[@c9db8f728f0d /opt/logs]$ jstat -class 237Loaded B...

2018-07-14 17:02:20 5049

空空如也

空空如也

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

TA关注的人

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