-
-
CPython由于GIL的存在,Python服务端程序通常在子进程中处理请求。使用子进程时,可能会遇到以下两种情况:
- 子进程结束后变成僵尸进程,占用进程号。
- 子进程占用父进程LISTEN的端口号,导致父进程重启时失败。
下文将在
docker python:2.7
环境下,模拟一种服务端场景,以复现这两个问题,并提出解决方案。
-
在编写
Spark
应用时,有时需要使用到一些额外的jar
包、额外的资源文件,因此在每个Executor
上都需要一份files
的拷贝。那么files
是怎么被复制到各个Executor
上的呢?本文将基于Spark 1.1.1
来分析Spark files
的传输流程。
-
Java中的异常分为两种,
Checked Exceptions
以及Unchecked Exceptions
。Error
、RuntimeException
及其子类都是Unchecked Exceptions
,其余所有Throwable
及其子类都是Checked Exceptions
,即需要被显式地声明或处理。
-
ConcurrentLinkedQueue 使用了非阻塞的方式提供线程安全的队列,内部使用的是一个普通的单向链表,记录首尾节点,并且首部有一个
dummy node
。入队时在尾部加入节点,出队时从首部删除节点。所有对链表的修改都通过CAS操作来保证原子性。下面分析其主要的代码实现。
-
介绍
Redis
、Zookeeper
、RabbitMQ
、Kafka
。