java
hnujunjie
这个作者很懒,什么都没留下…
展开
-
Jwt原理
加密过程header、payload使用base64算法加密,生成加密后的header和payload,暂记为header_sc,payload_sc,然后使用HMAC256算法做如下处理,HMAC256(header_sc,payload_sc,secret)生成sign签名字段,最后三个字段通过 . 符号拼接即为加密后的字段 header_sc.payload_sc.sign。解密过程通过分割符 . 获取header_sc和payload_sc,然后通过base64解密算法对其进行解密获取对应的原创 2023-08-22 09:42:51 · 87 阅读 · 0 评论 -
java接口和抽象类修饰符
类的访问控制修饰符无论是普通类还是抽象类还是接口,只有两种方式,要么public,要么默认(什么都不写,表示包权限)方法的访问控制修饰符普通类方法四个都可以使用抽象类方法JDK 1.8以前,抽象类的方法默认访问权限为protected(可以是public和protected)JDK 1.8时,抽象类的方法默认访问权限变为默认访问权限(可以是public和protected或者不写)接口方法JDK 1.8以前,接口中的方法默认,也必须是public的(只能用public)JDK 1.8时,原创 2021-01-26 20:23:23 · 2502 阅读 · 0 评论 -
红黑树插入与查找
之前学习过红黑树,今天花时间写一下红黑树,突然发现发明红黑树的人简直就是天才!!!红黑树作者----鲁道夫·贝尔public class RB_tree {//定义结点默认颜色是红色static class TreeNode{ public TreeNode(int value,int index) { this.index=index; this.value=value; } int value = 0; boolean RED = true; TreeNode parent =原创 2020-12-09 18:17:16 · 185 阅读 · 0 评论 -
java锁
1.java synchronized关键字锁升级java对象数据由3部分组成,对象头,实例数据,对齐数据对象头的markword大小 32bit/64bit对象头的元数据指针大小 32bit/64bit对象如果是数组,那么会有一个数组长度数据32bit因为java强制要求对象大小必须为8字节的整数倍,所以会有一个对齐数据进行填充,但不是必要的首先尝试获取偏向锁,查看对象是否开启了可偏向标志位。其次检查锁对象对应的instanceklass对应偏置位是否开启,如果没开启,表示该类的所有对象都不原创 2020-08-20 14:40:09 · 122 阅读 · 0 评论 -
AQS源码解析
在以下代码中涉及到java的一个safe类,正如它的名字一样,它是java的一个不安全类,因为它有很多很多本地方法都是涉及到内存操作的,不正确的使用它会造成一些难以发现的错误。 private final boolean compareAndSetHead(Node update) {// CAS方法中的前两个参数是确定待更新数据的内存位置,第三个是预期值,第四个是将被更新为的值// 如果从内存中读出的值和预期的值不同,那么cas失败,否则成功。 return unsafe.compareA原创 2020-07-30 19:01:37 · 132 阅读 · 0 评论