
JAVA
文章平均质量分 91
懒猫gg
我很懒!
展开
-
JVM GC优化
前言JVM GC优化原创 2021-07-18 23:57:12 · 579 阅读 · 1 评论 -
字符编码
ASCII,UTF8,unicode,ISO-8859-1原创 2021-01-12 21:32:40 · 185 阅读 · 0 评论 -
java CompletableFuture概述
++原创 2020-09-11 13:46:35 · 521 阅读 · 0 评论 -
java fork/join概述
前言从JDK1.7开始,Java提供ForkJoin框架用于并行执行任务,它的思想就是基于“分治”,它将一个大任务分解(Fork)成一系列子任务,子任务可以继续往下分解,当多个不同的子任务都执行完成后,可以将它们各自的结果合并(Join)成一个大结果,最终合并成大任务的结果:使用示例ForkJoinTask的抽象方法exec由RecursiveAction和RecursiveTask实现,很容易看出RecursiveAction和RecursiveTask的区别,前者没有result。privat原创 2020-09-09 16:10:08 · 832 阅读 · 0 评论 -
java Stream流操作
前言 在Java8中另外一个比较大且非常重要的改动就是Stream。它规范及简化了程序的统计过程。举个例子://过程式的解决方案int longest = 0;for(String str : strings){ if(str.startsWith("A")){// 1. filter(), 保留以A开头的字符串 int len = str.length();// 2. mapToInt(), 转换成长度 long原创 2020-09-07 21:58:42 · 869 阅读 · 0 评论 -
JVM常量池
历史在JDK1.7之前运行时常量池逻辑包含字符串常量池存放在方法区, 此时hotspot虚拟机对方法区的实现为永久代在JDK1.7 字符串常量池被从方法区拿到了堆中, 这里没有提到运行时常量池,也就是说字符串常量池被单独拿到堆,运行时常量池剩下的东西还在方法区, 也就是hotspot中的永久代在JDK1.8 hotspot移除了永久代用元空间(Metaspace)取而代之, 这时候字符串常量...原创 2020-02-11 22:10:59 · 203 阅读 · 0 评论 -
JAVA对象引用
根据《JAVA对象结构》介绍了JAVA对象的存储结构,但要如何判断一对象是否存活引用计数算法: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。优点:实现简单,效率高(在每个引用丢失的时候判断下计数器,为0就直接回收)缺点:当对象A成员引用对象B,B对象引用A(循环引用),然后...原创 2015-10-13 11:43:05 · 1115 阅读 · 0 评论 -
内核概述与NIO
内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。原创 2019-04-02 21:36:38 · 990 阅读 · 0 评论 -
网络概述
网络性能谈网络我们最关注的是网络性能,而网络性能的两大指票是:带宽,延迟。(如下图)带宽越大,并不意味着你的延迟越小。延迟=发送时延+传播时延+处理时延+排队时延通信方式通信双方的分工和信号传输方向可将通信分为三种方式:单工(Simplex)方式:通信双方设备中发送器与接收器分工明确,只能在由发送器向接收器的单一固定方向上传送数据。 半双工(Half Duplex)方式:...原创 2019-04-02 22:31:18 · 199 阅读 · 0 评论 -
Window Select 源码分享
《网络概述》与 《网络IO模型》 二文中介绍了,NIO与Select模型的概念。接下来看看open jdk中select模型怎么实现的。JAVA NIO 例子上图是现在最常见的NIO写法ServerSocketChannel.open() 打开一个连接 serverChannel.configureBlocking(false);把连接设置为阻塞 bind(newInet...原创 2019-04-09 22:29:10 · 520 阅读 · 0 评论 -
网络IO模型
同步、异步、阻塞、非阻塞。网络IO模型比较原创 2019-04-07 22:41:38 · 258 阅读 · 0 评论 -
一道反射和泛型的面试题
面试题目大概如下: 现在有Class A 有三个成员 a,b,c.及其get,set方法。。。。 再有一泛型类 Class Test<T> 里面有一方法public T buildClass(Map map);...原创 2017-02-26 10:20:01 · 909 阅读 · 0 评论 -
类加载机制
在加载阶段,就是找到需要加载的类并把类的信息加载到jvm的方法区中。, 1.根据类的全路径名找到相应的class文件,然后从class文件中读取文件内容; 2. 从jar文件中读取。图中constant pool部份,他就是常量池的一部份。它会被加载至方法区中的运行常量池中,而类中的其它部份(类的元数据)则放在另一块。在JDK8中,运行常量池已被放入堆中,而...原创 2012-12-20 11:38:09 · 357 阅读 · 0 评论 -
JAVA直接内存(堆外内存)
堆外内存介绍原创 2019-03-25 13:57:05 · 8523 阅读 · 0 评论 -
JAVA运行栈
栈每个线程私有的内存空间由多个栈帧组成,每个栈帧代表一个方法无法满足内存,需求的时候,会报栈溢出异常:StackOverflowError它分为四个部份:局部变量表,操作栈,动态连接,返回地址。局部变量表:局部变量表用于存储方法参数和方法内部定义,最小单位是Slot(虚拟机中没有明确规范该内存空间大小)64位的数据会存放两个Slot对象方法的局部变量表 第0位Slot通常为thi...原创 2019-03-25 13:31:04 · 1865 阅读 · 18 评论 -
线程的概述
线程的生命周期,线程的定量分析原创 2019-02-27 21:52:05 · 161 阅读 · 0 评论 -
线程池Executor原理及生命周期
Executor运行原理及其生命周期原创 2019-02-27 23:36:14 · 5596 阅读 · 2 评论 -
显示锁:AQS
jdk显示锁,AQS原理原创 2019-02-28 23:36:18 · 290 阅读 · 0 评论 -
JAVA线上问题排查及常用命令
JAVA线上问题排查及常用命令转载 2021-07-14 23:02:43 · 688 阅读 · 1 评论 -
线程同步工具类
闭锁 闭锁(CountDownLatch)是一种组合事件同步工具类,可以延迟线程的进度直到闭锁到达终止状态. 闭锁的作用相当于一扇门,在闭锁到达结束状态之前,这扇门一直是关闭的,任何线程都不能通过这扇门,当闭锁到达结束状态时,这扇门会打开并允许所有线程通过 当闭锁到达结束状态后,将不会再改变状态,这扇门将永远保持打开状态.或事件,事件A || 事件...原创 2019-03-05 23:36:36 · 233 阅读 · 0 评论 -
隐式锁:synchronized
synchronized 被称为对象锁。锁升级,锁原理原创 2019-03-13 14:00:55 · 541 阅读 · 0 评论 -
CAS与Unsafe
cas, unsafe, lock, 等一些并发操作底层的介绍原创 2019-03-13 13:25:31 · 224 阅读 · 0 评论 -
线程概述与JMM
线程与进程概念在现代操作系统中,进程支持多线程。 1.进程是资源管理的最小单元; 2.线程是程序执行的最小单元。即线程作为调度和分配的基本单位,进程作为资源分配的基本单位一个进程的组成实体可以分为两大部分:线程集和资源集。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共享。一开始的系统是没...原创 2019-03-18 11:04:29 · 394 阅读 · 0 评论 -
内存概述与JAVA进程内存
内存概述谈内存,就要谈其寻址。而要理解内存就要先理解其的逻辑地址、线性地址、物理地址。物理地址:最容易理解的,它就是实实在在物理内存上的地址,你PC上有1G内存,那最大地址就是0x40000000.线性地址:这是APP用的地址,也就是我们程序员写代码用的地址,它是一个虚拟地址,最终会被转化到物理地址。逻辑地址:这是最麻烦的一个地址了,CPU发出的地址。早期的CPU内部有20根地址线,...原创 2019-03-19 23:01:24 · 318 阅读 · 0 评论 -
JVM内存模型
JVM内存型模:1.程序计数器2.Java虚拟机栈3.本地方法栈4.方法区 (JDK8在末使用区域另外开,元数据区)5.堆区6.运行时常量池,jdk6方法区的一部份 (JDK7,8回到堆中)《JVM常量池》7.直接内存JAVA类的生命周期包括7个部分:加载——验证——准备——解析——初始化——使用——卸载JAVA内存模型和类的生命周期紧密相连。1.加载阶段《类加载机制》...原创 2019-03-25 14:26:05 · 163 阅读 · 0 评论 -
JVM垃圾回收
一个对象的这一辈子:我是一个普通的Java对象,我出生在Eden区,在Eden区我还看到和我长的很像的小兄弟,我们在Eden区中玩了挺长时间。有一天Eden区中的人实在是太多了(当Eden区满时,触发Minor GC),我就被迫去了Survivor区的“From”区。自从去了Survivor区,我就开始漂了(Minor GC),有时候在Survivor的“From”区,有时候在Survivo...原创 2019-03-25 10:39:01 · 298 阅读 · 0 评论 -
JAVA对象结构
如图所示,运行的程序通过运行栈中的指针找到堆中的对象。而对象再通过类型数据数据指针,找到类型数据(就是Class),然后与实例数据(运行时的对象数据)结合成对象。不管 new 多少个 Class AA, AA对像的类型数据只会在方法区中存一份,而对象实例数据而会对一对一的增加。而我们通常指的对象结构(大小)指的是堆中的实例结构(大小)1.对象=对象头+对象体+填充 对象头...原创 2017-05-25 16:51:50 · 496 阅读 · 0 评论