自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 类加载器详解

类加载器详解文章目录类加载器详解类加载器安全作用分类双亲委派模型委派顺序破坏双亲委派系统类加载器线程上下文类加载器线程上下文类加载器为什么默认是系统类加载器类加载器的命名空间class对象的唯一性命名空间命名空间隔离Tomcat如何实现各web应用隔离运行包类加载器安全作用类加载器是Java中的一道防线,由它将代码装入jvm中,其中也包括有危险的代码。它的安全作用有三点:保护善意代码不受恶意代码的干扰保护已验证的类库代码放入有不同的行为限制的各个保护域中分类启动类加载器扩展类加载器

2020-07-19 09:52:38 229 2

原创 java中cinit与init的执行顺序

java中cinit和init方法详解文章目录java中cinit和init方法详解cinit方法总结init方法总结cinit方法在类加载的准备阶段,虚拟机会为static的类变量赋上类型的初始值、常量附上定义的值(值必须为字面量或常量)。public class Cinit { public static void main(String args[]) throws Cl...

2020-05-08 12:18:40 2512

原创 NIO与Netty-3-NIO底层原理

NIO与Netty-3-NIO底层原理文章目录NIO与Netty-3-NIO底层原理IO多路复用selectpollepoll对比零拷贝传统拷贝内存映射方式mmap零拷贝sendfileLinux2.4的sendfile四种拷贝方式的对比NIO是调用的操作系统的io多路服用函数来实现的。IO多路复用IO多路复用实现了在一个线程监听多个IO,避免了一个线程监听一个IO并阻塞等待的...

2020-04-06 23:05:31 346

原创 操作系统之进程与线程5

进程与线程-Linux中的线程实现文章目录进程与线程-Linux中的线程实现LinuxThread创建线程同步互斥信号处理线程管理NPTL创建线程同步与互斥信号处理管理线程LinuxThread VS NPTLNPTL中的同步原语futexLinux2.4之前的线程模型采用了LinuxThread的实现、之后为了解决LinuxThread的一些缺点提供了NPTL的实现。LinuxTh...

2020-03-24 14:50:18 184

原创 操作系统之进程与线程4

进程与线程-同步文章目录进程与线程-同步屏蔽中断忙等的算法严格轮换算法Peterson算法TSL和XCHG指令线程阻塞唤醒实现不忙等信号量互斥量pthread中提供的同步函数屏蔽中断单处理器,最简单的方式是在进入临界区后立刻屏蔽所有中断,离开时再打开中断,屏蔽中断后时钟中断也被屏蔽,cpu不会进行进程切换。此种方式很多弊端,若不再打开中断、多处理器屏蔽中断指令只对一个cpu生效其他c...

2020-03-22 12:39:00 320

原创 操作系统之进程与线程3

进程与线程-3-通信文章目录进程与线程-3-通信同步信号量管程消息传递管道消息队列共享内存套接字进程间通信是指在不同进程之间传播或交换信息。进程间通信分为两大类:1同步、2消息传递。同步使用的方式有:信号量、管程等。消息传递有:管道(有名无名)、消息队列、套接字、信号、共享内存 。同步这一分类主要包括那些负责协调进程间合作的,也就是进程同步相关的通信方式,一般不负责...

2020-03-09 18:49:17 150

原创 操作系统之进程与线程2

进程与线程-调度算法文章目录进程与线程-调度算法进程行为分类调度算法分类调度算法的目标进程切换的成本FCFS先来先服务算法SJF最短作业优先算法SRTN最短剩余时间优先算法RR轮转算法优先级调度CTSS多级队列算法用户线程与内核线程用户线程内核线程一对一多对多进程行为分类进程按计算和IO操作的多少分为IO密集型应用和计算密集型应用。计算密集型应用因为可以一直利用CPU去计算而同等时间...

2020-03-09 18:47:48 180

原创 操作系统之进程与线程1

进程与线程文章目录进程与线程进程进程的组成进程的创建进程的终止线程区别进程是资源分配的最小单位,线程是CPU调度的最小单位进程进程就是一个正在执行的程序的实例,是系统进行资源分配和调度的基本单位。在当代面向线程设计的计算机结构中,进程是线程的容器。进程的组成进程由进程控制块、数据段、正文段组成。进程控制块:程序计数器、进程状态、CPU暂存器(中断时用于存储寄存...

2020-03-09 18:44:27 106

原创 NIO与Netty-2-BIO非阻塞改造

NIO与Netty-2-BIO非阻塞改造文章目录NIO与Netty-2-BIO非阻塞改造改造前BIO的模型利用超时返回来改造改造思路因为BIO是阻塞式IO,单线程情况下处理者线程可能阻塞在其中一个连接套接字的read或服务套接字的accept上,因此只能是针对每一个套接字,都新建一个线程处理其数据读取。改造前BIO的模型一个监听线程,多少连接就存在多少个连接线程。一个线程对应一个...

2020-02-10 19:52:49 231

原创 NIO与Netty-1-BIO

NIO与Netty-1-BIO文章目录NIO与Netty-1-BIO示例BIO阻塞模型ServerSocket源码解读ServerSocket创建流程ServerSocket.accept()解读Socket中InputStream解读InputStream获取流程SocketInputStream.read(byte b[])对应的操作系统方法BIO是同步阻塞IO,在服务端获取等待连接时...

2020-02-10 19:50:15 145

原创 juc-1-locksupport

1-locksupport文章目录1-locksupport方法列表park()阻塞当前线程unpark(Thread)解除阻塞的线程blocker设置与获取用法解除阻塞的时机先unpark后park工作原理park及带时间的parkunparkpark/unpark总结_counterpthread中mutex和condition的使用pthread方法mutexconditiion在j...

2020-01-30 15:18:36 192

原创 MySQL-事务

MySQL-事务事务定义事务就是一组原子性的SQL查询语句,要么全部执行成功、要么全部执行失败。ACID一个良好的事务数据库系统,必须具备ACID特性。原子性(Atomicity)要么全部执行、要么全部不执行一致性(Consistency)事务开始和结束时,数据必须保证一致性隔离性(Isolation)事务处理过程中、中间状态对其他事务不...

2020-01-14 16:06:37 137

原创 MySQL-锁

MySQL-锁文章目录MySQL-锁锁的分类按照功能分按照锁的粒度分全局锁表锁表读锁表写锁行锁快照读与当前读加锁方式加锁方式选择间隙锁MVCC和间隙锁元数据锁元数据锁导致的阻塞锁的分类按照功能分| 共享锁(读锁/S锁) | 其他不可获得X锁 | 所有连接均可读取,所有连接均不可修改 || ---------------- | ----------------...

2020-01-14 15:22:25 251 2

原创 MySQL-索引

MySQL-索引文章目录MySQL-索引聚集/非聚集索引聚集-非聚集索引的对比联合索引最左匹配原则避免回表索引的用途(1)数据检索(2)聚合函数(3)排序(4)避免回表(5)关联查询普通索引和唯一索引Insert Buffer/Change Buffer普通索引和唯一索引的区别索引的缺点Mysql中多数引擎中默认的索引结构是B+树,因此以下的规则均在索引结构是B树/B+树时才正确。至...

2020-01-11 15:58:28 281

原创 MySQL-索引的数据结构

MySQL-索引的数据结构文章目录MySQL-索引的数据结构B树节点阶定义查找插入删除B+树定义节点查找插入与删除B树与B+树的对比哈希索引哈希索引与B树/B+树的对比因为MySQL的索引具体的数据结构实现实在存储引擎中的,因此不同的存储引擎可能使用不同的数据结构来实现索引。索引中常用的三种数据结构为:B树(也称B-树)、B+树、哈希。B树一种平衡的多叉树。显著减少定位...

2020-01-10 23:14:40 420

原创 5.方法运行时的栈帧

5方法运行时的栈帧栈帧是虚拟机栈中用于执行方法调用的数据结构,是虚拟机栈中的栈元素。一个栈帧存储了一个方法的局部变量表、操作数栈、动态链接、方法返回地址等信息。每一个方法的调用与返回都对应着一个栈帧在虚拟机栈中的入栈出栈操作。栈帧中局部变量表的大小、操作数栈的深度都在编译期确认了。因此栈帧的内存大小已经确定。局部变量表局部变量表用于存储方法参数和方法内定义的局部变量。局部变...

2019-12-30 18:45:08 295

原创 4.类文件结构

4.类文件结构文章目录4.类文件结构类文件类文件数据魔数与版本号常量池访问标志类索引父类索引接口索引字段表集合方法表集合属性表集合简单粗略介绍class文件的结构。类文件类文件由无符号数和表构成,且占用整数个字节的空间无符号数u1u2u4u8,用来描述数字索引引用数量值字符串值。表多个无符号数或其他表作为数据项构成的复合数据结构。类文件数据魔数与版本号,...

2019-12-28 18:45:47 90

原创 3.对象的创建

3对象的创建文章目录3对象的创建对象创建过程类加载初始化开始时间加载连接-验证文件格式验证元数据验证字节码验证符号引用验证连接-准备解析初始化类加载器类加载器的分类对象空间分配对象内存布局对象初始化对象初始化对象创建过程类加载->对象空间分配->设置对象头->对象初始化类加载java类加载连接初始化是在程序运行期间完成的。类的生命周期:加载,验证 准备 解析(...

2019-12-27 17:47:52 84

原创 3.对象的创建

3对象的创建文章目录3对象的创建对象创建过程类加载初始化开始时间加载连接-验证文件格式验证元数据验证字节码验证符号引用验证连接-准备解析初始化类加载器类加载器的分类对象空间分配对象内存布局对象初始化对象初始化对象创建过程类加载->对象空间分配->设置对象头->对象初始化类加载java类加载连接初始化是在程序运行期间完成的。类的生命周期:加载,验证 准备 解析(...

2019-12-27 17:42:50 107

原创 2.垃圾回收GC

2垃圾回收GC文章目录2垃圾回收GC1.基础理论1.1对象回收的条件1.2垃圾回收算法1.3安全点安全区2.JVM中的垃圾回收2.1回收区域2.2内存分配与回收策略2.3垃圾回收器1.基础理论1.1对象回收的条件引用计数算法为对象添加一个引用计数器,当有一个地方引用它时就加一,当一个引用失效时就减一。但没法解决循环引用问题:A引用B,B引用1。此时引用计数器永远不可为0。可达...

2019-12-24 21:00:05 141 1

原创 1.运行时数据区

JVM-运行时数据区文章目录JVM-运行时数据区1.所有线程共享的1.1方法区1.2堆2.线程间隔离的2.1虚拟机栈2.2本地方法栈2.3程序计数器1.所有线程共享的1.1方法区​ 在HotSpot上称为永久代。(便于同堆一起进行gc收集)​ 主要用于存储已被jvm加载的类信息、运行时常量池、静态变量、即时编译器编译后的代码等数据。​ 常量池:​ 存放编译期生成的各种...

2019-12-24 18:35:34 117

原创 读书笔记1-独立的Spring应用

理解独立的Spring应用​ 在SpringBoot编程思想一书中,本章着重介绍了SpringBoot项目的命令行以及图形界面创建方式,SpringBoot项目、jar包、war包等的目录结构,以及最重要的SpringBoot应用是如何通过jar包以及war包方式运行的。文章目录理解独立的Spring应用创建SpringBoot项目命令行创建1.创建基本mvn项目2.添加SpringBoot依...

2019-12-01 13:47:07 353

原创 5-装饰模式

装饰模式装饰模式,在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。文章目录装饰模式使用场景装饰模式被装饰类装饰类测试类使用场景需要扩展一个类的功能,或给一个类添加附加职责。需要动态的给一个对象添加功能,这些功能可以再动态的撤销。需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现...

2019-11-24 22:46:28 77

原创 4-外观模式(门面模式)

外观模式(门面模式)门面(外观)模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。文章目录外观模式(门面模式)使用场景外观(门面)模式子系统类门面类测试类使用场景1、客户只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式。​ 2、当需要跟踪原系统的使用情况时 ,使用门面模面模式...

2019-11-24 20:55:32 89

原创 3-原型模式

原型模式原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。文章目录原型模式使用场景浅拷贝原型模式原型类测试类深拷贝原型模式原型类测试类使用场景1.在需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下...

2019-11-22 23:43:34 96

原创 2-建造者模式

建造者模式建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。文章目录建造者模式带指挥者的建造者模式产品类建造者类指挥者类测试类内部类建造者模式产品类及其内部建造者类测试类带指挥者的建造者模式将建造的过程交给Director来建造。产品类//产品类public class Car { privat...

2019-11-21 22:46:03 65

原创 网络之-HTTP与HTTPS

HTTP与HTTPS文章目录HTTP与HTTPSHTTPHTTP简介HTTP报文结构请求报文响应报文首部字段其他请求方法GET与POST的区别状态码2XX成功3XX重定向4XX客户端错误5XX服务端错误首部字段通用首部字段请求首部字段响应首部字段实体首部字段Cookie首部字段持久连接/管线化HTTP1.0、1.1、2.0之间的区别SPDY技术HTTP1.0与1.1HTTP1.1与2.0HTTP...

2019-11-14 17:25:00 428

原创 1-工厂方法模式

工厂模式工厂模式包括:简单工厂,工厂方法,抽象工厂模式。文章目录工厂模式简单工厂![在这里插入图片描述](https://img-blog.csdnimg.cn/201911102234218.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV...

2019-11-10 22:36:27 108

原创 网络之-tcp与udp

TCP与UDP端口号​ TCP,UDP端口号是分开的两套端口号,端口号范围是0-65535。校验和计算方式​ 初始检验和为16个0,将报文首部段与用户数据分为16bit一组,不够的在低字节补0,所有的16bit求和并将 高位溢出的进位加到低位上(循环进位),最后将这个相加后的值取反(0->1,1->0),填入到校验和中。​ 接收方将所有的16bit相加,若不为16个1则...

2019-11-08 21:31:42 693

转载 SpringBoot配置属性加载优先级及顺序

SpringBoot配置属性加载优先级及顺序在您的主目录(当 devtools 被激活,则为 ~/.spring-boot-devtools.properties )中的 Devtools 全局设置属性。在测试中使用到的 @TestPropertySource 注解。在测试中使用到的 properties 属性,可以是 @SpringBootTest和用于测试应用程序某部分的测试注解。命...

2019-10-19 16:24:33 1024

原创 JAVA实现单例模式

JAVA实现单例模式单例模式可以分为两种模式:懒汉模式、饿汉模式。懒汉模式调用方法时生成对象饿汉模式调用方法前已经生成对象懒汉模式public class Singleton { private volatile static Singleton instance = null; //volatile解决内存可见性问题 private Sing...

2019-10-19 00:10:04 81

原创 Redis基本类型及对应命令

Redis基本类型及对应命令String(字符串)字符串底层为字符数组储存,预分配多余空间来减少频繁扩容。小于1M时,每次扩容为原来的两倍,多余1M时,一次扩容1M,最大空间为512M。命令:set key value设置key-valueget key获取key对应的valuedel key删除keysetnx key valuekey...

2019-10-18 17:58:45 122

空空如也

空空如也

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

TA关注的人

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