Java 线程池关闭
1 | public void close() { |
1 | public void close() { |
方法 | 功能描述 |
---|---|
execute() | 执行任务 |
shutdown() | 调用后不再接收新任务,如果里面有任务,就执行完 |
shutdownNow() | 调用后不再接收新任务,取消等待中的任务,返回等待执行的任务的list;有正在执行的任务,会尝试停止 |
isShutdown() | 判断线程池是否完全停止 |
isTerminated() | 判断线程池有任务在执行 |
submit() | 提交带返回值的任务,返回值封装到Future中,通过Future.get()可以获取返回值 |
invokeAll() | 执行一组任务 |
1 | public ThreadPoolExecutor( |
参数keepAliveTime的时间单位,有7种取值
1 | import java.util.concurrent.Executors; |
虚拟dom
组件的生命周期:
和组件生命周期相关的几个方法:
1 | getDefaultProps //创建组建 |
1、ReactJs是基于组件化的开发,所以最终的页面应该是由若干个小组件组成的大组件。
css
样式时,类名应该写成className
而不是class
;for
是htmlFor
,添加内部样式时,应该是style={{opacity: this.state.opacity}}style="opacity:{this.state.opacity};"
。{}
包裹,且不能加双引号。缺点:
1.创建组件两种方式:
props
render
kafka对外使用topic的概念,生产者往topic里写消息,消费者从topic中读消息。一个topic实际是由多个partition组成的,遇到瓶颈时,
可以通过增加partition的数量来进行横向扩容。单个parition内是保证消息有序。
**Kafka ActiveMQ RabbitMQ对比
1、 TPS
2、 吞吐量对比
kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)复杂度,消息处理的效率很高。
Zero-Copy技术1
2
3
4
5
6
7
8
9
10通常情况下文件从读取到通过Socket发送进行了4次拷贝:
1、调用read时,文件A拷贝到了kernel模式;
2、CPU控制将kernel模式数据copy到user模式下;
3、调用write时,先将user模式下的内容copy到kernel模式下的socket的buffer中;
4、将kernel模式下的socket buffer的数据copy到网卡设备中传送;
Zero-Copy技术省去了将操作系统的read buffer拷贝到程序的buffer,以及从程序buffer拷贝到socket buffer的步骤,
1、将文件拷贝到kernel buffer中;
2、向socket buffer中追加当前要发生的数据在kernel buffer中的位置和偏移量;
3、根据socket buffer中的位置和偏移量直接将kernel buffer的数据copy到网卡设备(protocol engine)中;
3、在架构模型方面
RabbitMQ实现了AMQP协议(advanced message queue protocol高级消息队列协议)
RabbitMQ有消息确认机制;
Kafka遵从一般的MQ结构,无消息确认机制。
4、在可用性方面
RabbitMQ支持miror的queue,主queue失效,miror queue接管。
Kafka的broker支持主备模式
ActiveMq也支持主备模式