2023年3月

线程池中有限资源请求队列排队功能实现原理
https://ke.qq.com/webcourse/index.html#cid=345381&term_id=100410551&taid=2786338558788901&vid=5285890793368255201

ThreadPoolExecutor线程池实现类

假设队列大小为 10,corePoolSize 为 3,maximumPoolSize 为 6,那么当加入 20 个任务时,执行的顺序应该是怎样的?

1\首先执行任务 1、2、3,

2、然后任务 4~13 被放入队列。

3、 这时候队列满了,任务 14、15、16 会被马上执行,

4、而任务 17~20 则会抛出异常。

5、最终顺序是:1、2、3、14、15、16、4、5、6、7、8、9、10、11、12、13。

队列编程实战作业

https://leetcode.com/problems/number-of-recent-calls/

https://leetcode.com/problems/design-circular-deque/

https://leetcode.com/problems/task-scheduler/

Hash表(上):HashMap 的实现原理精讲
https://ke.qq.com/webcourse/index.html#cid=345381&term_id=100410551&taid=2786347148723493&vid=5285890793322487566

数组和链表,key value的键值对,效率高 。知道,get put的原理。 get和put差不多,计算hash码,求模找到下标。哈希碰撞,用链表。轮询链表。扩容。

*****。

因为String Interger 中已经实现了 hashcode()和equals()方法了,

可以,只需要自己实现hashcode()和equals方法

hashmap 里面这个for循环很不错

什么是加载因子

hashmap什么时候性能最差,所有的key得出的hash 求模得出的 下标都一样的时候,就变成一条单链表,

TreeMap
LinkedHashMap
HashTable
HashMap
ThreadLocal/SparseArray
SynchronizedHashMap
WeakHashMap
ConcurrentHashMap

importjava.util.ArrayList;importjava.util.List;/*** Created by yanfazhongxin on 2020-04-22.
* 守护线程
*/ public class加密解密 {public static voidmain(String[] args) {//两条线程谁启动先没有影响 Thread t2 = new Thread(newLog_thread());
t2.setDaemon(
true);//设定为 守护线程 t2.start();
Thread t1
= new Thread(newDecode());
t1.start();

}
}
class Decode implementsRunnable {static List<String> list = new ArrayList<>();
String password
= String.valueOf(random(4));public char[] random(intindex) {char[] re = new char[index];
Math.random();
for (int i = 0; i < index; i++) {//指定随机范围 : 64-90 re[i] = (char) ((Math.random() * 26 + 64));
}
returnre;

}


@Override
public voidrun() {
System.out.println(
"本次随机密码是:" +password);boolean cnt = true;while(cnt) {
String str
= String.valueOf(random(4));if(str.equals(password)) {
System.out.println(
"匹配密码正确是:" +password);
list.add(str);
cnt
= false;
}
else //System.out.println(str+" 匹配失败"); list.add(str);
}

}

}
class Log_thread implementsRunnable {
@Override
public voidrun() {
System.out.println(
" Log_thread implements");//for (int i = 0; i < Decode.list.size(); i++) { while(true){if ((Decode.list == null)||(Decode.list.size()<1)) {try{
Thread.sleep(
50);
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
elseSystem.out.println(" 匹配的密码可能是:" + Decode.list.remove(0));
}
}
}

packagecom.eos.wool.test2;import java.util.*;/*** Created by CLP on 2020-06-17.*/
public classPriorityQueueTest {public static List<Integer>insertSort() {
Queue
<Integer> queue = new PriorityQueue<Integer>(12);
List
<Integer> list = new ArrayList<Integer>();
Random random
= newRandom();intaa;for (int i = 0; i < 17; i++) {
aa
=random.nextInt(100);
System.out.println(aa);
queue.add(
newInteger(aa));
}
while(!queue.isEmpty()){
list.add(queue.poll());
}
//左右输出 个数不全;因为poll一次就会删除,所以size会变化,和list一般需要逆序删除一样。//for (int i = 0; i < queue.size(); i++) {//list.add(queue.poll());//} System.out.println(list.toString());returnlist;

}
public static voidmain(String[] args){

System.out.println(Arrays.toString(insertSort().toArray()));
}
}