摘要: 由于confluence 低版本的破解方式都是通过 confluence_keygen.jar 包方式生成破解码,然后将生成的jar包替换atlassian-extras-decoder-v2-3.4.1,但是在高版本(eg:7.19)的 该jar包版本为atlassian-extras-decod 阅读全文
posted @ 2023-07-28 15:42 守稚心 阅读(2544) 评论(3) 推荐(0) 编辑
摘要: 假设多级json的层级不定,而且json的key不确定,那么就不能用Object.key的方式去遍历获取key-value,那么我们可以换一种思路,使用递归算法来遍历json的多个节点,来获取每个节点的key-value,唯一的难点就是判断某个节点下是否是一个新的json对象,以下是自己写的demo 阅读全文
posted @ 2022-07-22 09:13 守稚心 阅读(689) 评论(0) 推荐(0) 编辑
摘要: 1. 使用数据库、消息组件、缓存组件优雅处理双写一致性 大致思路还是采用先更新数据,然后删除缓存的思路,只是在这之前需要做一步准备工作,需要订阅数据库的执行日志,比如mysql的binlog日志,这样监听到有发生数据变更的情况,去同步删除缓存,实现解耦,具体参考 https://blog.csdn. 阅读全文
posted @ 2022-01-14 17:40 守稚心 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 有代码洁癖的小伙伴看过来~ 平时我们格式化代码时,代码时这样式儿的,代码中的参数和后面的说明中间是有一个空格 先看看修改后的效果 想要修改的小伙伴可以参考后面的步骤, 1. File 》settings 》Editor 》Code Style 》java 》java doc 选择将所有参数对齐,步骤 阅读全文
posted @ 2021-06-21 17:01 守稚心 阅读(564) 评论(0) 推荐(1) 编辑
摘要: 1. String 和new String 在讲String 和 new String 的区别之前先看一段代码: String a = "ss"; String b = "ss"; String c = new String("ss"); System.out.println(a==c); Syst 阅读全文
posted @ 2021-05-04 18:27 守稚心 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 使用 processOn 画的java 集合图谱,应付面试应该可以了 阅读全文
posted @ 2021-05-03 18:08 守稚心 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 推荐这篇帖子,讲得不错~ https://blog.csdn.net/liangyihuai/article/details/83106584 阅读全文
posted @ 2021-04-26 22:53 守稚心 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 1. 在应用层面来讲 a. volatile是线程同步的轻量级实现,所以volatile的性能要比synchronize好; volatile只能用于修饰变量,synchronize可以用于修饰方法、代码块。随着jdk技术的发展,synchronize在执行效率上会得到较大提升,所以synchron 阅读全文
posted @ 2021-04-24 19:45 守稚心 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 简单往往是最重要的,在刚刚学java的时候老师会给我们先讲这8种基本数据类型,今天再来做一个温习,【本文大部分参考了 https://zhuanlan.zhihu.com/p/25439066,在上面做了一点补充】 根据java的数据类型分类 1、整型 byte 、short 、int 、long 阅读全文
posted @ 2021-04-24 16:36 守稚心 阅读(2709) 评论(0) 推荐(0) 编辑
摘要: 1. 缓存穿透简述 举例说明,redis中确实没有key值为“redis”数据,并且数据库里面也没有,那么每一次都会穿过缓存层,会将请求打到数据库查询,然后数据库进行查询,造成了不必要的IO浪费 2. 怎么解决缓存穿透 a. 使用 key null 第一次击穿之后,设置该key值为null,这样以后 阅读全文
posted @ 2021-04-01 10:01 守稚心 阅读(354) 评论(0) 推荐(0) 编辑