上一页 1 2 3 4 5 6 7 8 9 10 ··· 19 下一页
摘要: 一、Class 文件结构 JDK 的版本号已经到 14 了,相对于语言、API 以及 Java 技术体系中其他方面的变化,Class 文件结构一直处于比较稳定的状态,Class 文件的主体结构、字节码指令的语义和数量几乎没有出现过变动。 Class 文件是一组以8位字节为基础单位的二进制流,各个数据 阅读全文
posted @ 2020-04-11 15:55 JMCui 阅读(494) 评论(0) 推荐(0)
摘要: BTrace 是什么? BTrace 是一个动态安全的 Java 追踪工具,它通过向运行中的 Java 程序植入字节码文件,来对运行中的 Java 程序热更新,方便的获取程序运行时的数据信息,并且,保证自己的消耗特别小,大部分情况下不会影响 Java 程序的性能。 BTrace 能干什么? 相信每一 阅读全文
posted @ 2020-04-11 15:54 JMCui 阅读(828) 评论(0) 推荐(1)
摘要: 一、协程 一个进程可以产生许多线程,每个线程有自己的上下文,当我们在使用多线程的时候,如果存在长时间的 I/O 操作,线程会一直处于阻塞状态,这个时候会存在很多线程处于空闲状态,会造成线程资源的浪费。这就是协程适用的场景。 协程,其实就是在一个线程中,有一个总调度器,对于多个任务,同时只有一个任务在 阅读全文
posted @ 2020-03-25 17:12 JMCui 阅读(8855) 评论(0) 推荐(0)
摘要: 一、写在前面 Java Agent 这个技术出现在 JDK1.5 之后,对于大多数人来说都比较陌生,但是多多少少又接触过,实际上,我们平时用的很多工具,都是基于 Java Agent 实现的,例如常见的热部署 JRebel,各种线上诊断工具(Btrace, Greys),还有阿里开源的 Arthas 阅读全文
posted @ 2020-03-25 10:23 JMCui 阅读(2936) 评论(0) 推荐(0)
摘要: JCTools 早在96年就有论文提出了无锁队列的概念,再到后来 Disruptor,高性能已得到生产的验证。此处介绍的 Jctools 中的高性能队列,其性能丝毫不输于 Disruptor。 JCTools (Java Concurrency Tools) 提供了一系列非阻塞并发数据结构(标准 J 阅读全文
posted @ 2020-03-20 13:06 JMCui 阅读(4997) 评论(0) 推荐(0)
摘要: 一、写在前面 "上一篇文章" 我们介绍了性能监控的一些命令,包括 jmap (生成堆存储快照)和 jstack(生成线程快照),事实上,在没有一些监控工具之前,我们用的最多的也是这两个命令来进行虚拟机性能的监控调优。但是这两个命令都有自己不足的地方: 使用 jmap 命令,从 Heap Dump 开 阅读全文
posted @ 2020-03-19 15:49 JMCui 阅读(2089) 评论(0) 推荐(0)
摘要: 一、跳表(SkipList) 对于单链表,即使链表是有序的,如果想要在其中查找某个数据,也只能从头到尾遍历链表,这样效率自然就会很低,跳表就不一样了。跳表是一种可以用来快速查找的数据结构,有点类似于平衡树。它们都可以对元素进行快速的查找。但一个重要的区别是:对平衡树的插入和删除往往很可能导致平衡树进 阅读全文
posted @ 2020-03-17 17:13 JMCui 阅读(1587) 评论(0) 推荐(1)
摘要: Clustered and Secondary Indexes(聚集索引和二级索引) Every InnoDB table has a special index called the clustered index where the data for the rows is stored. Ty 阅读全文
posted @ 2020-03-16 14:13 JMCui 阅读(2596) 评论(0) 推荐(1)
摘要: jps JVM Process Status Tool,显示指定系统内所有的 HotSpot 虚拟机进程。显示信息包括虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID)。 jps [-q] [-mlvV] [<hosti 阅读全文
posted @ 2020-03-15 22:41 JMCui 阅读(592) 评论(0) 推荐(0)
摘要: 一、为什么要序列化? 1、一般情况下,只有当 JVM 处于运行时,Java 对象才可能存在,即这些对象的生命周期不会比 JVM 的生命周期更长。但在现实应用中,就可能要求在 JVM 停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java 对象序列化就能够帮助我们实现该功能。 阅读全文
posted @ 2020-03-07 17:51 JMCui 阅读(678) 评论(0) 推荐(0)
摘要: 原子性 原子(atom)指化学反应不可再分的基本微粒,原子在化学反应中不可分割。原子操作指的是不可分割的整体,多线程的原子性指的是没有其他线程能够中断或检查正在原子操作中的变量。 从内存模型来看,直接保证的原子性变量操作包括 read、load、assign、use、store 和 write,我们 阅读全文
posted @ 2020-03-04 09:21 JMCui 阅读(1015) 评论(0) 推荐(1)
摘要: 一、四层与七层负载均衡在原理上的区别 1.图示 2.概述 四层负载均衡工作在 OSI 模型中的四层,即传输层。四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体类型,然后经过负载均衡内部的调度算法转发至要处理请求的服务器。四层负载均衡单纯的提供了终端到终端的可 阅读全文
posted @ 2020-03-01 08:17 JMCui 阅读(1243) 评论(0) 推荐(0)
摘要: 一、CopyOnWrite 思想 写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种通用优化策略。其核心思想是,如果有多个调用者(Callers)同时访问相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者修改资源内容时,系 阅读全文
posted @ 2020-02-28 14:40 JMCui 阅读(16480) 评论(3) 推荐(13)
摘要: 一、概述 最早看到 SPI 这个机制是在 "dubbo 实现" 中,最近发现原来也不是什么新东西,竟然就是 JDK 中内置的玩意,今天就来一探究竟,看看它到底是什么玩意! SPI的全称是 Service Provider Interface,它是一种服务发现机制,它通过在 classPath 路径下 阅读全文
posted @ 2020-02-25 21:03 JMCui 阅读(922) 评论(0) 推荐(0)
摘要: 一、概述 即时编译器(Just In Time Compiler),也称为 JIT 编译器,它的主要工作是把热点代码编译成与本地平台相关的机器码,并进行各种层次的优化,从而提高代码执行的效率。 那么什么是热点代码呢?我们知道虚拟机通过解释器(Interpreter)来执行字节码文件,当虚拟机发现某个 阅读全文
posted @ 2020-01-17 13:03 JMCui 阅读(1808) 评论(2) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 19 下一页