自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (2)
  • 收藏
  • 关注

原创 查看redis是否发生swap

1.查看redis进程号$ redis-cli info | grep process_idprocess_id: 53322.进入redis所在机器的/proc目录$ cd /proc/53323.查看redis进程使用情况$cat smaps | egrep '^(Swap|Size)'Size: 584 kBSwap: 0 kBSize: 4 kBSwap: 4 kBSize: 4 kBSwap: 0 kBSize: 462044 kBSwap: 46200

2021-09-04 11:00:40 491

原创 spring5.1.x版本源码解析

本次源码解析主要包含以下几个部分:1.AnnotationConfigApplicationContext中根据@ComponentScan扫描解析包下的类,并封装成为BeanDefinition;2.AnnotationConfigApplicationContext中配置类常见注解如@Import、@Bean、@Component、@Service、@ComponentScan、@ImportResource等注解的解析流程以及细节;3.标记有@Configuration注解以及无该注解的配

2020-08-30 22:35:43 240

原创 《算法》---排序算法

算法第二章 排序冒泡排序冒泡排序的基本思想:元素两两进行比较,将大的元素向后移动,直到移动到最后,然后进行下一趟,像冒泡一样,每次都将最大的元素冒到上面实现逻辑:代码示例public class BubblingSort { public static void sort(int[] arr){ int length = arr.length; while (length>0){ for(int i=1;i<leng

2020-08-07 11:07:02 222

原创 LinkedList源码解析

LinkedList源码实际上不算复杂,底层使用了内部类Node,每个Node存储了当前节点数据,直接前驱和直接后继的引用,也就是双向链表;同时LinkedList实现了Deque接口,也就是实现了双端队列相关操作api:public class LinkedList{ transient int size = 0; /** * 记录第一个节点的索引 */ transient MyLinkedList.Node<E> first;

2020-07-03 10:42:35 134

原创 ArrayList关键代码解析

以下代码是ArrayList中关键扩容代码解释public class ArrayList{ /** * 默认初始化数组容量:10 */ private static final int DEFAULT_CAPACITY = 10; /** * 空数组(用于空实例),在实例化时如果传入的list长度为0,当调用new ArrayList(0)时,即传入的数组长度为0时,会默认 elementData=EMPTY_ELEMENTDATA .

2020-07-03 09:46:01 161

转载 HTTP1.0、HTTP1.1 和 HTTP2.0 的区别(转载)

https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A?--搬运工

2020-06-29 16:38:05 96

转载 HTTP长连接、短连接究竟是什么?(转载)

https://www.cnblogs.com/gotodsp/p/6366163.html--搬运工

2020-06-29 16:24:13 157

转载 从输入URL到页面加载发生了什么(转载)

https://segmentfault.com/a/1190000006879700--搬运工

2020-06-29 11:07:05 103

转载 两张动图-彻底明白TCP的三次握手与四次挥手(转载)

https://blog.csdn.net/qzcsu/article/details/72861891--搬运工

2020-06-29 10:44:43 7506

转载 ConcurrentHashMap实现原理及源码分析(转载)

https://www.cnblogs.com/chengxiao/p/6842045.html---搬运工

2020-06-24 17:08:48 115

转载 HashMap实现原理及源码分析(转载)

https://www.cnblogs.com/chengxiao/p/6059914.html----搬运工

2020-06-24 17:06:40 116

原创 手写动态代理--模仿jdk动态代理

为了便于理解jdk动态代理,模仿jdk动态代理的思路,模拟写一个动态代理demo,思路如下:拼接代理对象源码,使用文件流写出$Proxy.java文件 将$Proxy.java动态编译成.class文件 $Proxy.class文件动态加载到JVM内存中,产生Class对象 使用反射构造出代理对象 用户调用代理对象实现方法代理源码如下:定义接口package com.ant.myJdkProxy;/** * 接口,模拟有无返回值、有无参数多种情况方法 */public in

2020-06-14 11:32:56 136

原创 第十二章 java多线程程序的性能调优--《java多线程编程实战指南-核心篇》

java虚拟机对内部锁的优化自java6/7开始,java虚拟机对内部锁的实现进行了一些优化。这些优化主要包括锁消除、锁粗话、偏向锁以及适应性锁。锁消除锁消除是JIT编译器对内部锁的具体实现所做的一种优化,在动态编译同步块的时候,JIT编译器可以借助一种被称为逃逸分析的技术来判断同步块所使用的锁对象是否只能够被一个线程访问而没有被发布到其他线程。如果同步块所使用的锁对象通过这种分析被正是指能够被同一个线程访问,那么JIT编译器在编译这个同步块的时候并不生成synchronized所表示的锁的申请

2020-05-25 08:15:51 150

原创 第十一章 多线程编程的硬件基础与java内存模型--《java多线程编程实战指南-核心篇》

填补处理器与内存之间的鸿沟:高速缓存为了弥补处理器与主内存处理器能力之间的鸿沟,硬件设计者在主内存和处理器之间引入高速缓存,如下图所示:高速缓存是一种存取速度比主内存大而容量远比主内存小的存储部件,每个处理器都有其高速缓存。引入高速缓存后,处理器在执行内存读、写操作的时候并不直接与主内存打交道,而是通过高速缓存进行的。高速缓存相当于一个由硬件实现的容量极小的散列表,其key是一个内存地址,其值是内存数据的副本或者准备写入内存的数据。从内存结构来看,高速缓存相当于一个拉链散列表,他包含若干桶,每.

2020-05-24 11:01:21 178

原创 ArrayList扩容机制源码跟进解析

package com.diagrammatize;import java.util.ArrayList;public class ArrayListMain { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add("1"); arrayList.add("2"); arrayList.add.

2020-05-18 10:39:07 166

原创 zookeeper源码解析

文字格式:zookeeper源码执行流程分析1.主流程 >org.apache.zookeeper.server.quorum.QuorumPeerMain.main zookeeper入口方法 >org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun 初始化zookeeper并且...

2020-03-28 14:18:56 418

原创 redis cluster、配置文件介绍等

1.在模糊匹配redis中的key时建议使用scan,而不是使用keys,因为当redis中存储的key-value非常大时,keys会查询所有的数据,性能上存在比较大的问题;scan就是利用游标,类似于我们的分页一样2.redis的键值对实际上使用的是类似于java中的hashtable的数据结构,key是通过哈希算法分布在一个数组中,3.redis单线程为什么那么快:1.单线程,无线程...

2020-03-27 17:57:52 1162

原创 ZKClient zookeeper 丢失事件 分析

在使用zkClient监听机制时,发现当代码中连续对节点的数据进行变更时,若变更之间的时间间隔比较短,则会出现事件监听丢失的情况或者监听到的事件重复的情况,本人代码如下:package com.ant.zookeeperstudy;import org.I0Itec.zkclient.IZkDataListener;import org.I0Itec.zkclient.ZkClient...

2020-03-27 13:30:01 1468

原创 linux简单介绍以及常用命令--java程序员掌握

基本网络配置VMware三种网络配置方式Bridged桥接模式(推荐):VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。NAT网络地址转换模式:虚拟系统借助NAT的功能...

2020-03-24 08:59:44 124

转载 两台centos之间传送文件(转载)

1、用命令行的方式A,B 机上的SSH都允许root登录,B主机的IP:192.168.1.33,要把A主机上的/home/data文件夹传送到主机B上,运行命令注意:这里的scp命令,前面不能加sudo ,加上sudo后会报错。 [root@localhost Desktop]# scp /home/data [email protected]:/home/ne...

2020-03-21 11:36:05 2023

转载 HashMap的扩容因子为什么是0.75(转载)

最近在看HashMap源码,对于扩容因子=0.75感到很费解,为什么在用了75%的容量的时候就要进行扩容呢?数组中明明还有25%的空间没有使用。为什么不等到数组几乎满了(扩容因子=0.95)的时候才进行扩容?扩容因子=0.95和扩容因子=0.75有什么区别吗?首先来看一下什么是扩容因子。假设hash函数是理想的,数据会通过hash函数均匀的映射到数组上。一个数据映射到每一个桶(bucket)的概...

2020-03-20 19:56:29 4494 1

转载 redis编译报致命错误:jemalloc/jemalloc.h:没有那个文件或目录(转载)

分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的fragmentation problems 比libc。但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数,运行如下命令:m...

2020-03-15 12:00:54 368

转载 linux中wget未找到命令(转载)

在装数据库的时候发现无法使用wget命令,提示未找到命令,如图所示那是因为没有安装wget,输入命令:yum -y install wget 如下图所示,wget及其依赖将会被安装安装完成后就可以使用wget命令啦...

2020-03-15 12:00:21 1477

转载 linux下采用ps、jstack命令排查命中java应用中占用CPU高的代码(转载)

在排查服务器上的java项目出现高cpu使用的情况下从而各种百度的结果,做一个记录。一般情况下,是因为系统出现瓶颈了,才会去进行调优,而调优则要先找出项目代码中的问题,这次针对java应用占用CPU高的代码进行排查。 假设,目前有一个应用在运行过程中会导致CPU居高不下,而无法知道是哪段代码引起的,这个时候,则可以采用本篇文章说的PS命令和jstack命令进行排查命中相关的代码...

2020-03-11 10:14:42 316

原创 JVM堆内存参数设置

-Xmx:最大堆大小-Xms:初始堆大小-Xmn:年轻代大小-XXSurvivorRatio:年轻代中Eden区与1个Survivor区的大小比值(默认Eden:from Survivor:to Survivor=8:1:1)如:-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3当我们并发访问量比较,会快速产生大量的垃圾对...

2020-03-09 09:56:25 1178

原创 《MySql高级技术篇》--学习笔记

MySQL架构mysql架构图:mysql查询语句限制性from语句mysql分层以及可插拔的存储引擎连接层 服务层 存储引擎层 数据存储层sql语句:show engines; 查看当前支持的存储引擎show variables like '%storage_engine%'; 查看当前默认存储引擎MyISAM和InnoDB的区别:...

2020-03-05 21:32:56 218

转载 深入理解mysql索引底层数据结构与算法(转载)

索引到底是什么索引是帮助Mysql高效获取数据的一种数据结构索引储存在哪里和数据一样,索引以文件形式储存在硬盘上,在MyISAM储存引擎中,数据和索引文件试试分开储存的。MyISAM文件储存示意图在InnoDB中,数据和索引文件是合起来储存的,注意下图中没有了I(index)结尾的文件。InnoDB文件储存示意图后面会进一步分析为什么会这样...

2020-03-03 15:25:12 141

原创 《深入理解JVM》-java字节码-张龙

十六进制一位表示二进制的4位,也就是2的4次方=16,一位十六进制表示二进制0000~1111之间的任意值,所以两位16进制数表示一个字节(一个字节表示8位)...

2020-02-28 13:24:50 377

原创 《深入理解JVM》-类的加载-张龙

2020年2月20日 15:08:06

2020-02-27 13:00:33 278

原创 《redis深度历险》笔记

《redis深度历险》学习笔记redis基础知识,包含常见命令常用针对key的命令命令DEL key:该命令用于在 key 存在时删除 keyEXISTS key:检查给定 key 是否存在EXPIRE key seconds:为给定 key 设置过期时间,以秒计PEXPIRE key milliseconds:设置 key 的过期时间以毫秒计KEYS pattern:查找...

2020-01-17 17:20:22 535

原创 zookeeper、Paxos算法、ZAB协议、CAP理论介绍

分布式协调服务器ZokeeperZookeeper概述1.1 Zookeeper简介Zookeeper是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于Paxos算法的ZAB协议完成的。其主要功能包括:配置维护、域名服务、分布式同步、集群管理等。1.1.1功能简介(1)配置维护分布式系统中,很多服务都是部署在集群中的,即很多台服务器中部署着...

2020-01-15 14:38:36 766 1

转载 SocketChannel与ServerSocketChannel区别(转载)

(1)Socket 和ServerSocke 是一对 他们是java.net下面实现socket通信的类(2) SocketChannel 和ServerSocketChannel是一对 他们是java.nio下面实现通信的类 支持异步通信(3)服务器必须先建立ServerSocket或者ServerSocketChannel 来等待客户端的连接(4)客户端必须建立相对应的Socket或者S...

2020-01-13 18:43:09 1711

转载 Centos7开放及查看端口(转载)

1、开放端口firewall-cmd --zone=public --add-port=5672/tcp --permanent#开放5672端口firewall-cmd --zone=public --remove-port=5672/tcp --permanent#关闭5672端口firewall-cmd --reload #配置立即生效2、查看防火墙所...

2019-12-27 10:39:32 148

原创 第九章 java异步编程--《java多线程编程实战指南-核心篇》

java.util.concurrent.Executor接口是对任务执行进行的抽象,Executor接口使得任务的提交方只需要知道它调用Executor.execute方法便可以使指定任务被执行,无需关系任务执行的细节,使得任务的提交能够与任务执行的具体细节解耦,它在一定程度上能够屏蔽任务同步执行与异步执行的差异,一定程度上缩小了同步编程与异步编程的代码编写方式。工具类Executors...

2019-12-24 18:53:43 222

原创 第八章 线程管理--《java多线程编程实战指南-核心篇》

线程的未捕获异常与监控jdk1.5引入UncaughtExceptionHandler接口,当线程提前被异常终止,则会回调该接口中的方法,例:package JavaCoreThreadPatten.capter08;import java.util.Random;import java.util.concurrent.ArrayBlockingQueue;import java...

2019-12-23 18:49:31 139

原创 第七章 线程的活性故障--《java多线程编程实战指南-核心篇》

线程活性故障是由资源稀缺型或者程序自身的问题和缺陷导致线程一直处于非RUNNABLE状态,或者线程虽然处于RUNNABLE状态但是其要执行的任务却一直无法进展的故障现象。死锁如果两个或者更多的线程因相互等待对方而被永远暂停,那么我们就称这些线程产生了死锁。哲学家就餐问题一个线程在持有一个锁L1的情况下去申请另外一个锁L2,而另外一个线程也在持有一个锁L2的情况下去申请另外一个锁...

2019-12-23 12:14:51 161

原创 第六章 保障线程安全的设计技术--《java多线程编程实战指南-核心篇》

栈空间是为线程的执行而准备的一段固定大小的内存空间,每个线程都由其栈空间。栈空间实在线程创建的时候分配的。线程执行一个方法前,java虚拟机会在该线程的栈空间中为这个方法调用创建一个栈帧。栈帧用于存储相应方法的局部变量、返回值等私有数据。无状态对象不含任何实例变量,不包含任何静态变量或者其包含的静态变量都是只读的,是线程安全的。不可变对象是指一经创建其状态就保持不变的对象,也具有线程安全性...

2019-12-18 19:21:51 121

原创 第五章 线程间协作--《java多线程编程实战指南-核心篇》

5.1 等待与通知:wait/notifywait()的作用是使其执行线程被暂停,该方法可以用来实现等待;notify()的作用是唤醒一个被暂停的线程,调用该方法可实现通知。由于一个线程只有在持有一个对象的内部锁的情况下才能调用该对象wait方法,因此wait()调用总是放在响应对象所引导的临界区之中。执行someObject.wait()而被暂停的线程称为对象someObject上等...

2019-12-17 17:08:27 162 2

原创 第四章 牛刀小试:玩转线程--《java多线程编程实战-核心篇》

由串行改成并发,需要先找到可并发点。1.基于数据的分割实现并发化;2.基于任务的分割实现并发化;线程所执行的任务按照其消耗的主要资源可划分为CPU密集型任务和I/O密集型任务。线程数的合理性可以根据以下规则设置:1.对于CPU密集型线程,考虑到这类线程执行任务时消耗的主要是处理器资源,我们可以将这类线程的线程数设置为与CPU各项相同或者CPU个数+1.2.对于I/O密集型线...

2019-12-16 18:11:16 86

原创 第三章 java线程同步机制 《java多线程编程实战指南-核心篇》

3.1 线程同步机制简介线程同步机制是一套用于协调线程间的数据访问及活动的机制,该机制用于保障线程安全以及实现这些线程的共同目标。线程同步机制包括锁、volatile关键字、final关键字、static关键字以及相关API。3.2 锁概述获得锁(Acquire)、释放锁(Release)锁的持有线程在其获得锁之后和释放锁之前这段时间内所执行的代码被称为临界区。锁有排他锁(...

2019-12-16 16:54:53 148

springContext执行流程.txt

spring源码执行流程,不含spring mvc,只包含spring上下文,包含整个流程中的关键代码以及英文doc注释翻译+个人理解

2020-03-31

zookeeper分析流程.txt

zookeeper源码执行流程。 Zookeeper是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于Paxos算法的ZAB协议完成的。其主要功能包括:配置维护、域名服务、分布式同步、集群管理等。

2020-03-28

空空如也

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

TA关注的人

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