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 · 105 阅读 · 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 · 2649 阅读 · 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 · 207 阅读 · 0 评论 -
java锁
1.java synchronized关键字锁升级 java对象数据由3部分组成,对象头,实例数据,对齐数据 对象头的markword大小 32bit/64bit 对象头的元数据指针大小 32bit/64bit 对象如果是数组,那么会有一个数组长度数据32bit 因为java强制要求对象大小必须为8字节的整数倍,所以会有一个对齐数据进行填充,但不是必要的 首先尝试获取偏向锁,查看对象是否开启了可偏向标志位。 其次检查锁对象对应的instanceklass对应偏置位是否开启,如果没开启,表示该类的所有对象都不原创 2020-08-20 14:40:09 · 156 阅读 · 0 评论 -
AQS源码解析
在以下代码中涉及到java的一个safe类,正如它的名字一样,它是java的一个不安全类,因为它有很多很多本地方法都是涉及到内存操作的,不正确的使用它会造成一些难以发现的错误。 private final boolean compareAndSetHead(Node update) { // CAS方法中的前两个参数是确定待更新数据的内存位置,第三个是预期值,第四个是将被更新为的值 // 如果从内存中读出的值和预期的值不同,那么cas失败,否则成功。 return unsafe.compareA原创 2020-07-30 19:01:37 · 165 阅读 · 0 评论