自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java中多线程服务中Redis连接错误问题

错误原因:redis连接池lettuce存在bug解决办法:更换连接池,使用jedis<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion>

2021-08-05 11:08:21 932

原创 NIO

NIO什么是 NIO和BIO的区别NIO 三大核心组件Selector(选择器)Channel (管道)buffer 缓冲区(下篇单独介绍)SelectionKey什么是SelectionKeySelectionKey 类型和就绪条件服务端和客户端分别感兴趣的类型什么是 NIOjava NIO是在JDK1.4 开始使用的,它既可以说成新 I/O (new io),也可以说成非阻塞 I/O(no-blocking io),NIO弥补了原来 I/O 的不足,它在标准java代码中提供了高速的 、面向块的 I

2021-05-12 20:43:55 149

原创 2021-04-26

HTTPHTTP是什么?URI 和 URL 的区别一个完整的 URL一次完整 http 请求的过程HTTP 协议报文结构请求报文结构响应报文结构HTTP是什么?HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网 (WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。我们使用 http 来访问 Web 上某个资源,比如 html/文本、word、avi 电影、

2021-04-26 20:51:38 173

原创 TCP三次握手

TCP三次握手三次握手第一次握手第二次握手第三次握手为什么 TCP 握手需要三次?TCP 的三次握手的漏洞-SYN 洪泛攻击三次握手TCP所谓三次握手是指建立一个TCP连接时需要客户端和服务端总共发三个包已确认建立连接。第一次握手客户端将指标位 SYN置为1,随机产生一个值seq,比如J,即seq=J,并将数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器应答。第二次握手服务器收到客户端的数据包后由标志位为SYN=1知道客户端请求连接,服务器端将标志位SYN和ACK都置为1,ac

2021-04-21 21:04:41 329

原创 GC日志及参数

GC日志及参数GC日志GC 常用参数Parallel 常用参数CMS 常用参数G1 常用参数GC日志GC 常用参数-Xmn -Xms -Xmx –Xss 年轻代 最小堆 最大堆 栈空间-XX:+UseTLAB 使用 TLAB,默认打开-XX:+PrintTLAB 打印 TLAB 的使用情况-XX:TLABSize 设置 TLAB 大小-XX:+DisableExplicitGC 启用用于禁用对的调用处理的选项 System.gc()-XX:+Prin

2021-04-15 20:18:29 236

原创 三色标记

三色标记概念标记清除 Mark-And-Sweep三色标记的问题GC 并发情况下的漏标问题CMS 中的解决方案Incremental Update 算法G1 中的解决方案对比概念在三色标记之前有个算法叫Mark-And-Sweep(标记清除)标记清除 Mark-And-Sweep这个算法设置一个标志性位来记录对象是否被使用,最开始所有的标记位都是0,如果发现对象是可达的就会设置为1,一步步下去就会呈现一个类似于树状的结果。等标记的步骤完成,会将未被标记的对象统一清理,再次把所有的标记位设置成0方便

2021-04-09 20:49:37 498

原创 JVM中常见的垃圾回收器

JVM中常见的垃圾回收器Serial/Serial OldStop The World(STW)Parallel Scavenge(ParallerGC)/Parallel Old参数设置-XX:MaxGCPauseMillis-XX:GCTimeRatio-XX:+UseAdaptiveSizePolicyConcurrent Mark Sweep (CMS)影响和存在的问题CPU敏感浮动垃圾产生空间碎片CMS 总结Garbage First(G1)设计思想Region运行过程特点垃圾回收器整理Ser

2021-03-30 20:54:34 572

原创 垃圾回收机制及算法

垃圾回收机制及算法垃圾回收基础什么是GC分代回收理论GC 的分类垃圾回收算法(思想)复制算法(Copying)Appel 式回收标记-清除算法(Mark-Sweep)标记-整理算法(Mark-Compact)垃圾回收基础什么是GCjava 相比较C++等语言最大的区别就是,java是自动化的垃圾回收机制(GC)栈:栈中的生命周期是跟随线程,所以一般不需要关注。堆:堆中的对象是垃圾回收的重点。方法区/元空间:这一块也会发生垃圾回收,不过这块的效率比较低,一般不是回收的重点。分代回收理论当前商业

2021-03-30 15:43:01 422 3

原创 对象的分配策略

对象的分配策略对象的分配原则对象优先在Eden区分配大对象直接进入老年代长期存活对象进入老年区对象年龄动态判断空间分配担保逃逸分析逃逸分析的原理对象的分配原则对象优先在Eden区分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间分配时,虚拟机将发起一次 Mior GC。大对象直接进入老年代大对象就是指需要大量的连续内存空间的Java对象,最典型的大对象便是那种很长很长的字符串,或者元素数量庞大的数组。大对象对虚拟机的内存分配来说就是一个不折不扣的坏消息,比遇到一个大对象更

2021-03-25 20:37:30 590

原创 JVM中的对象及引用(一)

JVM中的对象及引用(一)对象的内存布局对象头实例数据对齐填充对象的访问定位句柄直接指针判断对象的存活引用计数法可达性分析Class回收条件Finalize 方法对象的内存布局在虚拟机(HotSpot)中,对象存储布局分为三个区域对象头对象头用于存储自身的运行时数据,如哈希码、GC分代年龄等,另一部分是类型指针,也就是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。如果说对象是一个数组,那么对象头里面还储存数据长度的数据。实例数据实例数据部分存储着对象程序代码中定义

2021-03-19 21:59:40 463

原创 JVM 中对象的创建过程

JVM 中对象的创建过程对象的内存分配检查加载分配内存划分内存的方式指针碰撞空闲列表解决并发安全CAS机制TLAB(本地线程分配缓冲)内存空间初始化设置对象初始化对象的内存分配当虚拟机遇到new指令时,首先检查类是否存在是否被类加载器加载,如果没有,那必须先执行类加载,然后再进行分配内存初始化。检查加载就是字面意思 :检查类是否已经被加载、解析和初始化过。分配内存分配内存就是虚拟机为新生对象分配内存,就是从java堆中为对象划出一块内存。划分内存的方式指针碰撞我们把内存空间看成一个矩形

2021-03-11 21:45:03 305 2

原创 String 的创建方式及内存分配的方式

String 的创建方式及内存分配的方式String 类分析(JDK1.8)String 对象的不可变性这样做的好处?String 的创建方式及内存分配的方式String str=“abc”String str = new String(“abc”)对象直接赋值String str2= "ab"+ "cd"+ "ef";internString 类分析(JDK1.8)String 对象是对char数组进行了封装实现的对象,主要有2个成员变量:char 数组、hash值。String 对象的不可变性

2021-03-03 21:38:41 777 3

原创 内存溢出(OOM)

内存溢出栈溢出堆溢出方法区溢出本机直接内存溢出栈溢出java.lang.StackOverflowError 一般的方法调用是很难出现的,如果出现了可能会是无限递归。上代码public class Test { public static void main(String[] args) { A(); } public static void A() { A(); }}HotSpot版本中的栈的大小是固定的(一般1MB),是不支

2021-03-03 21:05:26 309 2

原创 JVM<整体内存结构>基础二

JVM<内存区域>基础二开篇闲谈栈帧执行对内存区域的影响实例<方法运行时栈帧整个过程>JVM整体内存结构本地方法栈方法区元空间开篇闲谈第二篇了~,昨天看到一段北漂的访谈,中间有段谈话感同身受 ,主持问:“为什么不考虑回老家呢?”,别访谈者这么回答的:“在北京这种大城市生活很简单,没有那么多人情世故,适者生存,但老家就不一样了。”分享给各位大佬。步入正题,接着整理JVM基础。栈帧执行对内存区域的影响实例<方法运行时栈帧整个过程>//简单代码public clas

2021-02-24 21:09:41 303 1

原创 小马之博客初体验暨JVM基础一开篇

小马之博客初体验暨JVM基础一开篇开篇闲谈JVM基础知识java程序运行过程JVM、JRE、JDK 的关系JVM的内存区域运行时数据区虚拟机栈栈帧后记开篇闲谈今天是2021年2月22日,是我从机械走向程序猿的第四个年头,也是我第一篇博客的开始(小马也是在学习中,有不对的地方希望大佬指正)。写博客这个想法在我脑海里生生灭灭已经好几轮回,其实一直想着把工作中遇到的问题以及学习中的心得写下来,为什么一直没有开始呢,你懂得《懒人总有理由推脱》。废话不多说,直接开干<希望自己能坚持下来,加油,小马>。

2021-02-22 22:12:19 1033 13

空空如也

空空如也

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

TA关注的人

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