自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM内存结构详解

类从被加载到虚拟机内存再到卸载出内存一共需要经历七个阶段(这七个阶段也就包括了类的整个生命周期)包括:加载,验证,准备,解析,初始化,使用和卸载(这七个阶段也就是类的生命周期)其中类加载的过程包括:加载验证准备解析初始化五个阶段在这五个阶段中,加载验证准备和初始化这四个阶段的顺序是确定的,不变解析阶段可能在顺序上发生变化,解析可能会发生在初始化阶段之后,原因:这是因为为了支持java语言的运行时绑定特点(动态绑定)逐个说明1.加载。

2022-10-13 22:18:36 429 1

原创 TCP/IP三次握手,四次挥手详解

第二次握手:服务端收到客户端建立连接的请求,发送自己的SYN报文作为应答,生成自己的序列号seq= y,把客户端的序列号加1作为自己ack的值,ack=x+1,此时服务端进入SYN-RCVD(接收到客户端的请求,.并响应客户端的请求,等待被确认)第三次握手:客户端收到同意的报文后,向服务端发送了一个确认报文,表示已经收到服务器端的同意连接的报文,把服务端的序列号加1作为ack 的值,发送完客户端进入ESTAB-LISHED状态。​ 这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。

2022-10-10 21:42:29 3200

原创 多人赛跑用多线程实现

【代码】多人赛跑用多线程实现。

2022-10-07 19:26:22 287

原创 JUC线程池(Executors)详解

内存中的一块空间,空间里存放着已经实例化好的线程对象.当需要使用线程时直接从线程池中去取,当代码中线程执行结束或者销毁时,把线程重新放入线程池,而不是让它处于死亡状态.corePoolSize: 核心线程数大小maximumPoolSize:最大线程数大小(线程池中一共存在多少个线程)keepAliveSize:线程最大空闲时间unit;时间单位任务队列类型threadFactory:线程工厂7 .handler:拒绝策略当线程数小于核心线程数时,创建线程, 直到达到指定的核心线程数。

2022-10-03 20:11:18 291

原创 JUC及Tools工具类,并发集合

利用synchronized + CAS, 如果没有出现hash冲突, 使用CAS直接添加数据, 只有出现hash冲突的时候才会使用同步锁添加数据, 又提升了效率, 它底层由"数组"+链表+红黑树的方式思想(JDK8中HashMap的实现), 为了做到并发,又增加了很多辅助的类,例如TreeBin,Traverser等对象内部类。​ 通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后往新的容器里添加元素。

2022-10-03 09:55:54 222

原创 关于interrupt方法

在一个线程处于blocked阻塞状态去调用interrupt()方法时候,会中断线程并且使该线程直接结束(terminated)类,或{@link #join()}, {@link #join(long)}, {@link . *类。*将收到一个{@link InterruptedException}。{@link Object}的wait(long, int)方法。但是当线程调用的方法是一个死循环,会清除中断后继续执行.*方法,那么它的中断状态将被清除,并且它。如果这个线程在调用{@link。

2022-10-01 15:05:14 136

原创 关于多线程面试题目

偏向锁前54位记录线程id,在大多情况下,锁很少被多个线程同时竞争,而且总是由一个线程多次获得, 为了提高效率,把锁的线程id写入到锁对象的Mark word中,当线程访问资源结束时候,不会主动释放偏向锁,当线程再次访问资源时,jvm会查看mark word中的线程id是否是当前线程的,如果是可以继续访问资源,如果不是,就会升级自旋锁。如果处于RUNNABLE状态的线程,调用sleep()方法会切换为TIMED-WAITING有限时等待状态,到达时间后,会切换回RUNNABLE运行状态。

2022-10-01 14:03:05 172

原创 HashMap源码解析包含1.7和1.8版本

从Java8开始HashMap底层由数组+链表+红黑树。使用HashMap时,当使用无参构造方法实例化时,设置扩容因子为默认扩容因子0.75。当向HashMap添加内容时,会对Key做Hash计算,把得到的Hash值和数组长度-1按位与,计算出存储的位置。如果数组中该没有内容, 直接存入数组中(Node节点对象), 该下标中有Node对象了, 把内容添加到对应的链表或红黑树中。

2022-09-26 22:18:51 294 1

原创 序列化和反序列化

在java中通过ObjectInputStream反序列化,反序列化的结果在内存,需要通过输入流对象接收反序列化结果。当我们修改了类结构后,类中自动生成的序列码就会改变。而由于序列码的改变,所以在反序列化时会出错。变为字节数组后就可以把数组中内容输出到本地硬盘中,在网络通信中,数据传输时也需要将对象转换为字节。程序员也可以自己显示添加一个序列码,这个序列码和类中代码有关系,如果类中内容不变序列化和反序列化是没有影响的。让需要序列化的类实现Serializable接口,实现了这个接口代表这个类允许被序列化。

2022-09-26 21:06:02 458

原创 io流基本使用和api解析

我们发现和普通的try-catch相似, 但是在try后面多个一个括号。定义到括号里面的对象会自动关闭资源。

2022-09-26 20:58:27 357

原创 Dom,SAX生成xml文件

dom,sax生成xml文件

2022-09-26 20:23:49 78

原创 xml约束及解析

xml约束及Dom,SAX解析

2022-09-26 20:04:28 252

原创 HashMap底层原理

HashMap底层原理,常见面试题

2022-09-26 09:44:25 324

空空如也

空空如也

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

TA关注的人

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