自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Wireshark 抓包TLSv1.3 显示为TLv1.2

wireshark TLS

2023-10-31 10:08:18 673

转载 JDK8 Stream流操作

JDK8 Stream流操作介绍遍历操作筛选元素删除重复的内容数据类型转换数组转集合集合转Map操作集合转map(分组)分页操作查找与匹配操作并行操作介绍从 Java8 开始,jdk 新增加了一个 Stream 类,用来补充集合类,它的强大,相信用过它的朋友,能明显的感受到,不用使用for循环就能对集合作出很好的操作。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以

2021-04-15 09:57:49 211

原创 Mysql 四种事务隔离级别

四种事务隔离级别read uncommited 读到未提交read commited 读到提交repeatable read 可重复读serializable 串行事务read uncommited 读到未提交事务中的修改,即时没有提交,对其他事务也是可见的事务可以读到未提交的数据(脏读)性能比其他级别好实际很少使用read commited 读到提交大多数数据库系统的默认隔离级别(mysql 不是,mysql为 可重复读)满足隔离性(一个事务开始时,只能看到已经提交的事务所做的修改)

2021-04-02 11:01:50 210

原创 JAVA 异常

JAVA 异常异常结构图ThrowableExceptionCheck异常Runtime异常Error异常结构图ThrowableException:出现的问题是可以被捕获的Error:系统错误,通常由JVM处理Exception出现的问题是可以被捕获的Check异常派生自Exception的异常类,必须被捕获或再次声明抛出Runtime异常派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象 throw new Arithmetic

2021-04-01 15:01:28 85

转载 JDK1.8 String常量池详解

JDK1.8 String常量池详解jdk 1.8先抛结论1.只在常量池上创建常量2.只在堆上创建对象3.在堆上创建对象,在常量池上创建常量4.在堆上创建对象,在常量池上创建引用注意:常量池有两种情况:引用(指针) 或 常量。如果该位置已经是引用或常量了,之后的操作都不会改变里面的情况!!!调用intern()(jdk1.8): 如果常量池里是空的,就创建引用(指向堆,参考结论4);非空,不操作。返回值都是常量池里的内容。堆中可以有任意个相同的字符串,常量池只能有一个(引用 或

2021-03-30 14:29:42 1012 2

原创 线程(四)JAVA 锁 学习笔记

JAVA 锁乐观锁悲观锁自旋锁一级目录乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一致则更新),如果失败,则重复读-比较-写乐观锁一般是通过CAS(Compare And Swap)操作实现的,CAS是一种更新的原子操作:比较当前值跟传入值是否一样,一样则更新,否则失败。悲观锁悲观锁是就是悲观

2021-03-17 17:38:05 54

原创 Java 23种设计模式

23种设计模式创建型单例原型建造者工厂方法抽象工厂结构型适配器代理装饰桥接组合享元外观行为型观察者访问者中介者解释器迭代器状态命令策略备忘录职责链模板方法创建型创建型模式,即创建对象的模式,抽象了对象实例化的过程;关注的是对象的创建单例原型建造者工厂方法抽象工厂结构型适配器代理装饰桥接组合享元外观行为型观察者访问者中介者解释器迭代器状态命令策略备忘录职责链模板方法...

2021-03-11 16:05:06 54

原创 Hash冲突及其解决方法 (学习笔记)

这里写目录标题hash简介hash冲突解决hash冲突的方法开放定址法拉链法(链地址法)再hash建立公共溢出区hash简介Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。hash冲突对不同

2021-03-08 15:59:40 383 1

原创 Spring(二) Spring bean 生命周期

Spring bean 生命周期1、实例化2、IOC依赖注入3、BeanNameAware(可选)4、BeanFactoryAware(可选)5、ApplicationContextAware(可选)6、postProcessBeforeInitialization 初始化预处理(可选)7、init-method(可选)8、postProcessAfterInitialization(可选)9、Destroy 过期自动清理阶段(可选)10、destroy-method 自配置清理(可选)1、实例化实例

2021-02-24 17:18:10 89

原创 Spring(一) Spring bean 作用域

Spring bean 作用域singleton(单例)prototype(原型)requestsessiongloable sessionsingleton(单例)singleton 单例模式,SpringIOC容器中只会存在一个共享的Bean实例(无论多少bean引用它,始终指向一个同一个对象)该模式在多线程环境下不安全singleton 是spring中的缺省作用域prototype(原型)通过spring容器获取prototype定义的bean时,容器都会创建一个新的bean实例;

2021-02-24 14:39:27 83

原创 SpringMVC(二)MVC常用注解

MVC常用注解@Controller用于标注控制层组件@Controller用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象DispatcherServlet会扫描使用了该注解类的方法,并检测该方法是否使用了@RequestMapping注解可以把Request请求的header部分绑定到方法的参数上@RestController相当于@Controller和@ResponseBody组合效果@Component泛指组件,每当组件

2021-02-09 11:24:37 102

原创 SpringMVC(一)请求流程

SpringMVC 请求流程请求流程(图)请求流程(文)请求流程(图)请求流程(文)Http请求到DispatcherServlet:(1)客户端提交请求到DispatcherServletHandlerMapping寻找处理器(2)由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller调用处理器Controller(3)DispatcherServlet将请求提交到ControllerCont

2021-02-09 10:19:38 356

原创 线程(三)JAVA 后台线程

JAVA 后台线程定义:守护线程–也称“服务线程”,它是后台线程,它有一个特性,即为用户线程提供公共服务,在没有用户线程可服务时会自动离开。优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。设置:通过 setDaemon(true)来设置线程为“守护线程”;将一个用户线程设置为守护线程的方式是在 线程对象创建 之前 用线程对象的 setDaemon 方法。在 Daemon 线程中产生的新线程也是 Daemon 的。线程则是 JVM 级别的,以 Tomcat 为例,如果在 We

2021-01-29 15:36:46 194

原创 线程(二)sleep和wait区别

sleep和wait区别sleep()属于Thread类,wait()属于Objectsleep()导致程序在指定时间内暂停执行,但监控状态依然保持着,指定时间过后,会自动恢复运行状态sleep()方法不会释放线程锁wait()方法,线程会释放线程锁,进入此对象的等待锁定池;只有针对此对象调用notify()方法后,本线程才进入对象锁定池准备获取对象锁进入运行状态...

2021-01-29 11:26:35 60

原创 线程(一)线程生命周期(状态)

线程生命周期新建状态 NEW就绪状态 RUNNABLE运行状态 RUNNING阻塞状态 BLOCKED线程死亡 DEAD新建状态 NEW当程序使用new关键字创建一个线程后,该线程就处于新建状态此时,仅由JVM为其分配内存,并初始化其成员变量的值就绪状态 RUNNABLE当线程调用start()方法之后,该线程处于就绪状态。JVM为其创建方法调用栈和程序计数器,等待调度运行运行状态 RUNNING如果处于就绪状态的线程获得了CPU使用权,开始执行run()方法的线程执行体,该线程处

2021-01-28 11:16:28 127

原创 Java IO/NIO 学习笔记(二) Java NIO包

Java NIONIO的缓冲区NIO的非阻塞Channel(通道)Buffer(缓冲区)Selector(选择区)NIO的缓冲区Java IO面向流意味着每次从流中读取一个或多个字节,直到读取所有字节,他们没有被缓存在任何地方此外,它不能前后移动流中的数据。如果需要前后移动从流中读取数据,需要将它先缓存到一个缓冲区NIO的缓冲导向方法不同,数据读取到一个它稍后处理的缓冲区,需要时可以在缓冲区前后移动,增加了处理过程中的灵活性但是,需要检查该缓冲区是否包含需要处理的数据,且,需要确保更多的数据进入

2020-12-18 17:36:17 187 1

原创 Java IO/NIO 学习笔记(二) Java IO包

Java IO包图示图示

2020-12-18 16:01:23 106 1

原创 JVM(七)垃圾回收GC 垃圾收集器

垃圾收集器Serial 垃圾收集器 (单线程、 复制算法)ParNew 垃圾收集器(Serial+多线程)Parallel Scavenge垃圾收集器(多线程复制算法、高效)Serial Old 垃圾收集器(单线程标记整理算法)Parallel Old 垃圾收集器(多线程标记整理算法)CMS 垃圾收集器(多线程标记清除算法)G1 收集器Serial 垃圾收集器 (单线程、 复制算法)Serial是最基本垃圾收集器,使用复制算法,曾经是JDK1.3.1之前新生代唯一的垃圾收集器。Serial 是一个单

2020-12-16 17:36:07 307

原创 Java IO/NIO 学习笔记(一)

Java IO/NIO阻塞IO模型非阻塞IO模型多路复用IO模型信号驱动IO模型异步驱动IO模型阻塞IO模型最传统的一种IO模型,即在读写的时候会发生阻塞现象;用户发出IO请求后,内核会去查看数据是否就绪,而用户线程就会处于阻塞状态,交出CPU当数据就绪后,内核会将数据拷贝至用户线程,并返回结果给用户线程,用户解除block状态典型的阻塞IO模式为: data = soket.read(),如果没有数据就行,就会一直阻塞在read方法非阻塞IO模型当用户发起一个read操作后,并不需要等

2020-12-14 17:40:14 82

原创 JVM(六)垃圾回收 GC 如何确定垃圾

如何确定垃圾引用计数法可达性分析二级目录三级目录引用计数法可达性分析二级目录三级目录

2020-12-11 15:58:40 166 1

原创 TCP/IP 四层模型 图文详解

(未完待续)

2020-12-09 19:32:50 1476

原创 TCP/IP 三次握手 与 四次挥手 图文详解

TCP/IP 三次握手 与 四次挥手三次握手四次挥手三次握手第一次握手: 建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;第二次握手: 服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number

2020-12-09 16:35:10 216

原创 JVM(五)垃圾回收与算法整理

垃圾回收算法标记清除算法(Mark-Sweep)复制算法(Copying)标记整理算法(Mark-Compact)分代收集算法(Generational Collection)新生代与复制算法老年代与标记整理算法标记清除算法(Mark-Sweep)最基础的垃圾回收算法,分为两个阶段,标注和清除。标记阶段标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间。复制算法(Copying)为了解决 Mark-Sweep 算法内存碎片化的缺陷而被提出的算法。按内存容量将内存划分为等大小的两

2020-12-08 16:03:57 68

原创 JVM(四)垃圾回收 MinorGC MajorGC

MinorGCMinorGC算法MinorGC采用复制算法MinorGC过程复制 > 清空 > 互换1、将 Eden、 ServivorFrom 复制到 Servivor To, 年龄+1首先把Eden和ServivorFrom区域存活的对象复制ServivorTo区域对象年龄+1如果年龄达到老年标准(默认15),则直接复制到老年代区如果ServivorTo空间不足,则复制到老年代区2、清空 Eden 和 ServivorFrom清空Eden 和Servivo

2020-12-08 15:35:36 212

原创 JVM(三)垃圾回收 GC 新生代、老年代、永久代(元数据区)

JVM运行时内存堆Java堆从GC角度细分为:新生代和老年代新生代EdenFrom ServivorTo Servivor老年代

2020-12-07 20:03:36 1513

原创 JVM(二)内存区域特性(图例)

2020-12-07 14:46:12 65

原创 JVM(一)内存区域(图例)

JVM方法区/永久代即永久代(Permanent Generation)线程共享存储 类信息、常量、静态变量、即时编译器编译后的代码等数据HotSpot VM把GC分代收集扩展到方法区,即使用Java堆的永久代来实现方法区永久代内存回收目标主要针对常量池的回收和类型的卸载(收益很小)运行时常量池(Runtime Constant Pool):存储编译时期生成的各种字面量和符号引用堆线程共享存储创建的对象、数组垃圾收集器进行垃圾收集的重要区域从GC(分代收集算法)角度分为: 新

2020-12-07 10:39:45 95

原创 Java集合(二)集合特性 List Set Map

集合特性(参考各路大神材料整理)CollectionListArrayList有序,可重复底层使用数组查询速度快(get() 、set ()),增删慢(add()、remove())线程不安全扩容:当前容量*1.5+1(最大容量 Integer.MAX_VALUE - 8)LinkedList有序,可重复底层使用双向循环链表数据结构查询速度慢,增删快(add()、remove())线程不安全Vector有序,可重复底层使用数组查询速度快,增删慢线程安全,效率低

2020-12-02 17:02:44 155

原创 Java集合(一) 图例(List Set 、Map)

JAVA集合欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdow

2020-12-02 16:06:18 151

空空如也

空空如也

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

TA关注的人

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