易水风萧个人学习

风萧萧兮易水寒,壮士一去兮不复还

基于ASN.1的x.509证书解读

寒风啸雪夜苍茫,孤影独行心自伤

X.509是公钥基础设施(PKI)的标准格式。X.509证书就是基于国际电信联盟(ITU)制定的X.509标准的数字证书。X.509证书主要用于识别互联网通信和计算机网络中的身份,保护数据传输安全。X.509证书无处不在,比如我们每天使用的网站、移动应用程序、电子文档以及连接的设备等都有它的身影。 X.509证书的结构优势在于它是由公钥和私钥组成的密钥对而构建的。公钥和私钥能够用于加密和解密......

ASN.1入门学习笔记

相遇总是猝不及防,而离别多是蓄谋已久,总有一些人会慢慢淡出你的生活,我们要学会接受而不是怀念

一 标签编码规则详解标签编码公式 标签的最终编码值通过以下公式计算:Tag = Tag Class + Primitive/Constructed + Tag Number在 ASN.1 中,标签(Tag) 的编码规则是基于 BER(Basic Encoding Rules) 或 DER(Distinguished Encoding Rules) 的。标签的编码由以下三部分组成: Tag ......

mysql数据库中几种主键策略性能对比

失去的东西,其实从来未曾真正地属于你,也不必惋惜,始终真心真意

一 前提条件四种场景下id的生成方式 mysql自增主键 mysql表结构主键自增但是手动设置雪花ID mysql表结构主键不自增但是手动设置雪花ID mysql表主键为varchar,使用UUID 在数据量级10, 50, 100, 200, 300, 400, 500, 1000, 2000, 3000, 4000, 5000, 10000,20000, 30000, 40000, ......

从零理解java之虚拟机类加载机制

雨打雪花门外寒,身处卧榻触心寒。西江少女不知罪,却把伤感 心扉湮

Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。与那些在编译时需要进行连接的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略让Java语言进行提前编译会面临额外的困难,也会让类加载时稍微增加一些性能开销,但是却为Java应用提供......

从零理解java之线程锁

余生千万不要再见,我怕失了体面。”每个人的心情每天都是不同的,伤感,往往是最美的情感,也是我们承受着最痛的伤害

高效并发是从JDK 5升级到JDK 6后一项重要的改进项,HotSpot虚拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Locking)、偏向锁(Biased Locking)等,这些技术都是为了在线程之间......

从零理解java之多线程

滴滴珠泪,缕缕柔肠,更无限凄惶

基于高速缓存的存储交互很好地解决了处理器与内存速度之间的矛盾,但是也为计算机系统带来更高的复杂度,它引入了一个新的问题:缓存一致性(Cache Coherence)。在多路处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存(Main Memory),这种系统称为共享内存多核系统(Shared Memory Multiprocessors System)。当多个处理器的运算任务......

从零理解java之class文件内容解读

听多了谎话,看够了繁华,别让一句我爱你,只经过口腔,不经过心脏

原始代码内容如下: package org.example;public class Demo { public static void main(String[] args) { int a = 1; int b = 2; int c = a + b; System.out.println(c); &#......

从零理解java之内存分配与回收

你的名字,写下来不过几厘米那么短,却贯穿了我那么长的时光

一 内存回收与分配策略对象的内存分配,从概念上讲,应该都是在堆上分配(而实际上也有可能经过即时编译后被拆散为标量类型并间接地在栈上分配)。在经典分代的设计下,新生对象通常会分配在新生代中,少数情况下(例如对象大小超过一定阈值)也可能会直接分配在老年代。对象分配的规则并不是固定的,《Java虚拟机规范》并未规定新对象的创建和存储细节,这取决于虚拟机当前使用的是哪一种垃圾收集器,以及虚拟机中与内......

从零理解java之内存管理

失去的东西,其实从来未曾真正地属于你,也不必惋惜,始终真心真意

一 运行时数据区域 1.1 程序计数器字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址 如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined) ......

从零理解java之字符串与二进制数据

笑容可以瞒过别人,可心痛却骗不了自己

一 字符串转为二进制数据如果明确使用UTF-8编码,字符串”中”中的字符数仍然是1,但是占用的字节数会根据编码方式不同而有所变化。 在UTF-8编码中,一个中文字符占用3个字节。因此,字符串”中”在UTF-8编码下占用的字节数是3。 下面是具体的处理代码示例: package org.example;import java.io.UnsupportedEncodingException;im......