04 2021 档案

摘要:LeetCode1011.https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 暴力解法: 复杂写法,一次一次尝试,超时!!! // // 超时 // class Solution { // int[] s 阅读全文
posted @ 2021-04-27 16:19 wsZzz1997 阅读(274) 评论(0) 推荐(0)
摘要:思路: 刚开始理解错了题目:以为求每一层的节点个数,然后求最大值。 于是有了:所有层中的最大节点数(声明了一个class包含了每个节点的层数,然后用Deque 模拟队列进行一次层次遍历,每次插入新的节点时,将父节点的layer+1赋值给子节点,然后将当前层的节点数+1,这里用了一个数组layers记 阅读全文
posted @ 2021-04-25 18:51 wsZzz1997 阅读(93) 评论(0) 推荐(0)
摘要:final 和 String public static void main(String[] args) { String a1 = "a"; String a2 = "b"; // 非final串相加,指向堆中new的对象 String a3 = a1+a2; String a4 = "ab"; 阅读全文
posted @ 2021-04-23 11:05 wsZzz1997 阅读(58) 评论(0) 推荐(0)
摘要:选择题 算法题 1.括号匹配问题: 给定字符串s,s只包含 '[' '{' '(' ')' '}' ']' 六种字符 判断s的是否合法。 类似这种 s="[{]}"不合法 思路:遇到左括号入栈,遇到右括号则出栈, 判断出栈的左括号,与当前的右括号是否匹配? 匹配则继续直到结束,字符串遍历完了就返回t 阅读全文
posted @ 2021-04-23 00:28 wsZzz1997 阅读(167) 评论(0) 推荐(0)
摘要:Semaphore 相当于一个信号灯,对自己创建的线程或者线程池创建的线程进行限流的作用。 需要手动acquire() 和 release() 使得同时进行的thread的数量保证在一定的范围内(Semaphore创建对象的初始大小) ThreadPool 创建线程,已经线程的复用。 控制线程的总量 阅读全文
posted @ 2021-04-21 14:21 wsZzz1997 阅读(83) 评论(0) 推荐(0)
摘要:概念和意义 尝试获取锁的线程不会立即阻塞(no wait),而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环消耗cpu unsafe中的源码 //unsafe.getAndAddInt putlic final int getAndAddInt(Object var1 阅读全文
posted @ 2021-04-18 15:11 wsZzz1997 阅读(82) 评论(0) 推荐(0)
摘要:ReentrantLock和synchronized默认都是非公平锁 顾名思义: 公平锁就是根据先来后到的顺序,给予申请的线程权力,不能插队 非公平锁就是不完全按照申请锁的顺序,给予每个线程相同的对待。 根据线程的优先级安排情况,也就是会出现插队现象 公平锁:ReentrantLock(true) 阅读全文
posted @ 2021-04-18 15:06 wsZzz1997 阅读(81) 评论(0) 推荐(0)
摘要:ReentrantLock和synchronized都是可重入锁 通俗来说就是拿着外层的锁,可以进入内部拥有相同锁的其他代码块。 可以拿多把锁,但是必须都解锁才能完全解开。 递归性质的上锁开锁,因此也叫递归锁。 阅读全文
posted @ 2021-04-18 14:58 wsZzz1997 阅读(163) 评论(0) 推荐(0)
摘要:读写锁 ReentrantReadWriteLock 读,可多线程读 写,只允许一个写 读读共存 读写不共存 写写不共存 写操作:原子+独占,整个过程必须是一个完整的统一体,中间不需被分割打断 // 资源类 class Mycache{ // 缓存的一般加volatile private volat 阅读全文
posted @ 2021-04-18 14:55 wsZzz1997 阅读(41) 评论(0) 推荐(0)
摘要:CountDownLatch 每次当线程调用countDownLatch.countDown()方法时,会对计数器减1,减到0,countDownLatch.await()放行 public class CountDownLatchTest { public static void main(Str 阅读全文
posted @ 2021-04-18 14:52 wsZzz1997 阅读(60) 评论(0) 推荐(0)
摘要:String的两种创建方式: 1.String s1 = "abc" 首先去常量池找"abc",如果不存在,就在常量池创建"abc",然后在栈中开辟s1,存放"abc"的内存地址 2.String s2=new String("abc") 首先去常量池找"abc",如果不存在,就创建"abc",然后 阅读全文
posted @ 2021-04-11 15:27 wsZzz1997 阅读(40) 评论(0) 推荐(0)
摘要:/** * 生产者(Productor)将产品交给店员(Clerk),消费者(Customer)从店员取走产品 * 店员只能持有固定的数目产品(例如:20) * 如果店员的产品满了,会通知生产者停一下。 * 如果店员的产品没了,会通知消费者等一下。 * 是多线程问题,多个消费者,多个生产者,共享数据 阅读全文
posted @ 2021-04-10 17:28 wsZzz1997 阅读(111) 评论(0) 推荐(0)
摘要:一、程序进程和线程 程序:一段静态的代码。由某种计算机语言编写,为完成特定的任务 进程:运行中的程序,或者程序的一次运行。完成内存分配任务 线程:进程中的一个执行路径。cpu调度最小单位 二、创建方式 1.继承Thread类,重写run方法,调用对象的start方法 2.实现Runnable接口,实 阅读全文
posted @ 2021-04-09 19:40 wsZzz1997 阅读(82) 评论(0) 推荐(0)
摘要:@Autowired 注释static 变量会失败。 应该注释set方式,在set方法里赋值才能成功。 阅读全文
posted @ 2021-04-01 15:30 wsZzz1997 阅读(116) 评论(0) 推荐(0)
摘要:1.开通防火墙端口 https://blog.csdn.net/yw_1207/article/details/90746899 或者关闭防火墙: 2.注释配置文件中的bind=127.0.0.1(默认) 3.将protected-mode yes 改为 no 阅读全文
posted @ 2021-04-01 10:46 wsZzz1997 阅读(139) 评论(0) 推荐(0)