java
5jerry
这个作者很懒,什么都没留下…
展开
-
实现字典树
自己实现的字典树版本。带详细注释package leetcode.LC;class TrieNode{ //4个参数设置 //以该节点字符为结尾的字符串数目 int end_num; //以该节点作为前缀字符的个数 int prefix_num; //是否是叶子结点 boolean is_leaf; //每个字符都含有26个字母可选 TrieNode sub_nodes[]; public TrieNode(){.原创 2022-03-17 15:58:45 · 2405 阅读 · 0 评论 -
java 使用信号量实现任意n个线程的交替打印
思路:给每个线程配一个信号量,后一个线程等前一个释放,第一个等最后一个释放,形成循环等待链,然后手动给第一个线程释放一个信号量使得程序执行起来import java.util.concurrent.Semaphore;public class mutil_print { public static volatile int i; public static int nums; public static class TA implements Runnable{ ...原创 2021-09-02 15:16:59 · 413 阅读 · 0 评论 -
两个线程 交替打印0-100 synchronized、Lock、volatile
看到一个面试题交替打印0-100,本来想着应该挺简单的,复制一下看看,然后在csdn找了一些博客,尝试了好几个博客的代码,最后导致线程输出到99就卡在那,不能正常结束,居然没一个发现问题,我都服气了。csdn博客质量,抄的人都不带脑子抄,我就没发现一个正常的。假设打印0-99,交替打印使用synchronized的时候,A线程: i到99时输出,然后i+1 =100,A线程会调用wait 阻塞进入等待队列。这时B线程发现i=100了直接跳出循环了,就不会去循环里面执行notify唤醒了。导致A线程.原创 2021-08-13 14:43:43 · 385 阅读 · 0 评论 -
为什么重写equals时必须重写hashCode方法?
感觉网上很多博客要么抄,要么有的写的很晦涩难懂,所以按照自己的理解写了一份。(1)两个对象相等,hashcode一定相等 (2)两个对象不等,hashcode不一定不等 (3)hashcode相等,两个对象不一定相等 (4)hashcode不等,两个对象一定不等一句话总结:两个对象在equals逻辑上是认为相同的,没重写hashcode方法导致hash值不同。按照规则1 :相同的对象应该是有相同...原创 2021-07-29 13:24:58 · 158 阅读 · 0 评论