摘要: # -*- coding: utf-8 -*- # import numpy as np 使用numpy里面的函数时,需要在前面加np. from numpy import * # 导入numpy的库函数 # 加载数据集 def loadDataSet(fileName): dataMat = [] 阅读全文
posted @ 2022-04-18 20:54 贪、欢 阅读(34) 评论(0) 推荐(0)
摘要: 优雅地使用wait/notify 什么时候适合使用wait 当线程不满足某些条件,需要暂停运行时,可以使用wait。这样会将对象的锁释放,让其他线程能够继续运行。如果此时使用sleep,会导致所有线程都进入阻塞,导致所有线程都没法运行,直到当前线程sleep结束后,运行完毕,才能得到执行。 使用wa 阅读全文
posted @ 2022-03-28 18:41 贪、欢 阅读(89) 评论(0) 推荐(0)
摘要: Thread类中interrupt()、interrupted()和isInterrupted() interrupt()是用来设置中断状态的。返回true说明中断状态被设置了而不是被清除了。我们调用sleep、wait等此类可中断(throw InterruptedException)方法时,一旦 阅读全文
posted @ 2022-03-28 12:35 贪、欢 阅读(51) 评论(0) 推荐(0)
摘要: 成员变量 1.state 用来判断资源是否被释放的标记位 volatile保证了线程之间的可见性 思考为什么不使用boolean 更小的空间 而且有二义性 -> 独占和共享 state需要表示 共享线程的数量 2.头结点 尾节点 FIFO 双向链表 Node 内部类 还有一个ConditionObj 阅读全文
posted @ 2022-03-27 23:32 贪、欢 阅读(84) 评论(0) 推荐(0)
摘要: Tomcat 两大组件 连接器Connector 负责对外沟通 使用到了线程池 容器Container 负责实现Servlet规范 连接器 期中一部分组件NIO EndPoint的组成 LimitLatch 用来限流,可以控制最大连接个数,类似 J.U.C 中的 Semaphore 后面再讲 Acc 阅读全文
posted @ 2022-03-27 09:26 贪、欢 阅读(278) 评论(0) 推荐(0)
摘要: 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式,它的典型实现 就是线程池,也体现了经典设计模式中的享元模式(重用对象 这里是线程)。 注意,不同任务类型应该使用不同的线程池,这样能够避免饥饿,并且提高效率 。 比如说服务员(线程池A) 和厨师(线程 阅读全文
posted @ 2022-03-27 00:29 贪、欢 阅读(70) 评论(0) 推荐(0)
摘要: 装饰者模式 内部调用了new ThreadPoolExecutor的构造方法,传入的corePoolSize和maximumPoolSize都为1。然后将该对象传给了FinalizableDelegatedExecutorService。该类修饰了ThreadPoolExecutor,让外部无法调用 阅读全文
posted @ 2022-03-26 23:01 贪、欢 阅读(359) 评论(0) 推荐(0)
摘要: 自定义线程池的实现 使用了设计模式之 策略模式 阻塞队列BlockingQueue用于暂存来不及被线程执行的任务 也可以说是平衡生产者和消费者执行速度上的差异 里面的获取任务和放入任务用到了生产者消费者模式 线程池中对线程Thread进行了再次的封装,封装为了Worker 在调用任务的run方法时, 阅读全文
posted @ 2022-03-26 21:39 贪、欢 阅读(990) 评论(0) 推荐(0)
摘要: 第一篇水文 mac 下的typora快捷键 最大标题:command + 1 或者:# 大标题:command + 2 或者:## 标准标题:command + 3 或者:### 中标题:command + 4 或者:#### 小标题:command + 5 或者:##### 插入表格:comman 阅读全文
posted @ 2022-03-23 18:33 贪、欢 阅读(24) 评论(0) 推荐(0)