摘要:什么是字节码? java bytecode 由单字节(byte)的指令组成,理论上最多支持 256 个操作码(opcode),实际上 Java 只使用了 200 个左右的操作码,还有一些操作码则保留给调试操作。 根据指令的性质,主要分为四大类: 栈操作指令,包括与局部变量交互的指令。 程序流程控制指
阅读全文
摘要:一、为什么需要消息队列? (1)、不同系统之间的解耦 (2)、削峰 可以保证下游服务的正常运行,不能因为有大量的请求直接把下游服务给搞挂了。 (3)、异步 将非必要业务写入MQ,加快响应速度。 但也要了解引入消息队列导致的问题: (1)、增加了系统的复杂度。比如:如何解决消息的重复消费、消息的丢失以
阅读全文
摘要:一、HashMap的负载因子的作用 当 HashMap 中的元素个数(包含链表、红黑树上的元素)达到数组长度的0.75倍的时候,开始扩容。 二、HashMap的负载因子为什么是0.75 主要是为了提高空间利用率和减少查询成本(也可以说是尽可能减少hash冲突)。 三、为什么槽位数必须使用2^n 如果
阅读全文
摘要:全称是 Thread Local Allocation Buffer,即线程本地分配缓存,是一个线程专用的内存分配区域。 一、Java对象的内存分配过程如何保证线程安全的? 因为堆是线程之间共享的,如果在并发场景中,两个线程先后把对象的引用指向了同一个内存区域,怎么办? 为了解决这个并发问题,对象的
阅读全文
摘要:一、概述 消息摘要主要是验证数据的完整性,正确性。消息摘要都是16进制的,所以计算出来的 byte 数组,需要转为16进制显示。 消息摘要不是加密算法,计算摘要的时候会丢失很多数据,具有不可逆性。生成摘要的长度根据算法的不同而不同。 一个好的摘要算法,是极难产生Hash碰撞的。 MD5 不安全不是因
阅读全文
摘要:URL编码和Base64编码是不一样的,URL编码有专门的标准,目前Java11中使用的是RFC2396(参考:https://www.ietf.org/rfc/rfc2396.txt)。 在 java.net.URLEncoder 类的静态代码块中有如下代码: dontNeedEncoding =
阅读全文
摘要:一、介绍 AES(Advanced Encryption Standard)是美国联邦政府采用的一种区块加密标准,用来代替 DES 的。它属于对称加密。 AES支持三种密钥长度:128bit、192bit和256bit。 AES的区块长度固定为 128bit! 它具有五种加密模式,分别是: ECB:
阅读全文
摘要:JDK11中,默认的密钥库类型为 PKCS12,它不支持单独给单个密钥设置密码,只支持给密钥库设置密码,而之前的 JKS 密钥库可以支持单独给每个密钥设置密码。 keytool 官当文档:https://docs.oracle.com/en/java/javase/11/tools/keytool.
阅读全文
摘要:数字证书的格式遵循X.509标准。X.509是由国际电信联盟(ITU-T)制定的数字证书标准。 通常证书会包含以下内容: 证书拥有者名称(CN) 组织单位(OU) 组织(O) 城市(L) 区(ST) 国家/地区( C ) 证书的过期时间 证书的颁发机构 证书颁发机构对证书的签名 签名算法 对象的公钥
阅读全文
摘要:所谓 Base64,就是说选出64个字符(小写字母a-z、大写字母A-Z、数字0-9、符号"+"、符号”/“、再加上作为垫底的”=“,实际上是65个字符)作为一个基本字符集。然后其他所有符号都转换成这个字符集中的字符。 # Java11 中对应的普通编码 private static final c
阅读全文
摘要:类需要同时满足下面 3 个条件才能算是 ”无用的类“。 该类所有的实例已经被回收了,也就说该类不存在任何实例。 加载该类的 ClassLoader 已经被回收。 该类对应的 java.lang.Class 方法没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
阅读全文
摘要:概述 其实对于英文好的同学来说,这个状态机的使用就非常简单了,参考 "https://github.com/hekailiang/squirrel" 上的文档即可,因为这个状态机的入门成本并不高。 实战代码 由于这个状态机比较简单,就直接上代码了,注释写在代码里,通过调试运行,相信你马上就理解了。
阅读全文
摘要:一.配置从私服下载 从私服下载主要是将 central 库的下载地址从https://repo1.maven.org/maven2/修改为私服地址,比如http://localhost:8081/repository/maven-public/。然后配置好访问私服的用户名和密码即可。 了解setti
阅读全文
摘要:使用 Maven 时间长了,就会发现原生的一些 archetype 不太适合了,因为如果要新建一个 Spring 项目,你会在项目中加入大量的东西,比如加入依赖的包、写 JavaConfig 的 Spring 配置文件、写 log4j2 的配置文件等等。 这时我们可以自定义 Maven 项目 arc
阅读全文
摘要:<! MarkdownTOC "1 概述" "2 GitFLow分支介绍" "2.1 master 分支" "2.2 develop 分支" "2.3 feature 分支" "2.4 release 分支" "2.5 hotfix 分支" "3 GitFlow命令" "3.1 初始化" "3.2
阅读全文
摘要:<! MarkdownTOC "1. 镜像" "1.1 获取镜像" "1.2 列出镜像" "1.3 镜像大小" "1.4 删除虚悬镜像" "1.5 列出部分镜像" "1.6 删除本地镜像" "1.7 将容器保存为镜像\(不推荐使用docker commit\)" "2. 容器" "2.1 启动" "
阅读全文
摘要:title: CentOS下安装DockerCE comments: false date: 2019 09 04 09:47:58 description: 在CentOS下安装社区版Docker categories: 软件安装 卸载旧版本 安装依赖 下载Docker源配置文件 这里使用清华大学
阅读全文
摘要:title: 梳理common io工具包 comments: false date: 2019 08 28 14:21:58 description: 对common io工具包中的常用类进行整理,避免重复造轮子. categories: Java 概述 今天再对 common io 工具包进行一
阅读全文
摘要:title: 梳理commons lang工具包 comments: false date: 2019 08 27 16:01:42 description: 最熟悉的第三方工具包,你了解多少呢??? categories: Java [TOC] 概述 对于 commons lang 这个三方包,
阅读全文