Java
文章平均质量分 73
蜡笔没了小新git
井蛙不可以语于海者,拘于虚也;
夏虫不可以语于冰者,笃于时也;
曲士不可以语于道者,束于教也。
展开
-
细说ConcurrentHashMap扩容规则
当数组中存放的节点个数超过了阈值就可以任务当前的哈希冲突可能性较大,HashMap就会对当前数组进行扩容操作。在普通的HashMap中就会直接声明一个两倍大小的新数组,然后从旧数组中从左到右进行转化,但是在多线程下肯定会存在线程安全的问题。那么ConcurrentHashMap是如何来保证多线程下的扩容安全的呢?transfer是进行扩容操作的方法,接收两个参数tab(原容器数组对象),nextTab(新容器数组对象,一般长度为tab的两倍)。private final void transfer(No原创 2021-07-20 13:41:08 · 2231 阅读 · 0 评论 -
细说ConcurrentHashMap计数规则
对于ConcurrentHashMap而言,需要保证的是任何操作的线程安全,包括对集合元素个数的统计。一般在多线程下要统计一个全局数量大小,可以通过cas+循环(或者直接用Atomic相关的类)的方式实现,但是ConcurrentHashMap作者却并不是这样实现的。先看看如何获取集合中的元素个数,通过调用size()方法:public int size() { long n = sumCount(); return ((n < 0L) ? 0 : (n原创 2021-07-16 15:45:28 · 1705 阅读 · 8 评论 -
记一次Java参数传递时值发生变化问题
0.前景回顾代码内容如下:private boolean dfs(char[][] board, int[][] k, String word, int index, int i, int j) { if (index >= word.length()) { return true; } if (i >= board.length || i < 0 || j < 0 || j >= board[0].length) {原创 2021-07-14 15:28:42 · 1080 阅读 · 0 评论 -
leetcode 1206 设计跳表java实现
不使用任何库函数,设计一个跳表。跳表是在 O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短,其设计思想与链表相似。例如,一个跳表包含 [30, 40, 50, 60, 70, 90],然后增加 80、45 到跳表中,以下图的方式操作:Artyom Kalinin [CC BY-SA 3.0], via Wikimedia Commons跳表中有很多层,每一层是一个短的链表。在第一层的作用下,增加、删除和搜索操作的时原创 2021-07-01 10:49:06 · 257 阅读 · 0 评论 -
记一次愚蠢的AOP使用经历
在写aop代码时,不知怎的出现了类似下面所写的愚蠢代码,将proceed方法放到了一个新线程。 @Around("execution(* com.ljc.service.Doc.read())") public Object doBasicProfiling1(ProceedingJoinPoint pjp) throws Throwable { new Thread(() -> { try { Object re原创 2021-06-07 18:09:52 · 1255 阅读 · 1 评论 -
Java获取静态资源文件路径
Java获取静态资源文件路径 开发中经常会有文件相关的操作,比如说文件的查找,文件的存储。但是在使用中往往会因为路径问题耽误大量的开发时间。在实际中常常通过File file = new File(“c://a.txt”)方式来使用,但是切换环境后可能会遇到找不到该资源的问题。Java中,可以使用getResource()方法来获取资源。项目工程如下:![目录结构](https://img-blog.csdnimg.cn/20210120170130893.png?x-oss-process=i原创 2021-01-20 17:02:40 · 6009 阅读 · 0 评论 -
记一次RestTemplate使用异常问题
场景描述系统需要调用第三方的http接口,并获取到返回的json格式结果。问题用RestTemplate进行GET形式调用时发现和浏览器直接访问效果不同,可能无法访问接口,或者参数存在问题导致请求返回异常结果。调用格式如下:String result = restTemplate.getForObject("http://127.0.0.1:8080/acm?k=%3", String.class);解决接口调用出现异常,马上就想到了请求格式发生了变化,通过调试模式.原创 2020-09-28 15:05:01 · 2045 阅读 · 0 评论 -
快速排序及其优化(JAVA)
1.Java代码实现public class QuickSort { /** * 选择一个哨兵节点,将所有小于哨兵节点的元素放到左边,大于哨兵节点的元素放到右边 * 最后将哨兵节点和小部分中的最右边那个值交换(j),i就处于大部分的最左边 * @param array 数组元素 * @param low * @param high ...原创 2019-08-05 13:31:53 · 434 阅读 · 0 评论