概述 现代程序开发过程中不可避免会使用到多线程相关的技术,之所以要使用多线程,主要原因或目的大致有以下几个: 1、 业务特性决定程序就是多任务的,比如,一边采集数据、一边分析数据、同时还要实时显示数据; 2、 在执行一个较长时间的任务时,不能阻塞UI界面响应,必须通过后台线程处理; 3、 在执行批量 ...
分类:
编程语言 时间:
2020-06-19 00:41:28
阅读次数:
170
一、Nodejs介绍 Nodejs英文网:https://nodejs.org/en/ Nodejs中文网:http://nodejs.cn/ Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其 ...
分类:
Web程序 时间:
2020-06-18 19:34:35
阅读次数:
63
一、ReentrantLock原理 ReentrantLock是一个可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而放入该锁的AQS阻塞队列里面。ReentrantLock最终是使用AQS来实现的,并且根据参数来决定其内部是一个公平锁还是非公平锁,默认是非公平锁。 pub ...
分类:
其他好文 时间:
2020-06-18 12:49:04
阅读次数:
63
http://tinylab.org/myths-about-urandom/ Chen Jie 创作于 2015/06/27 打赏 原文:Myths about /dev/urandom 作者:Thomas Hühn 译者:Chen Jie 1 译之前言 你知道 /dev/random 与 /de ...
分类:
其他好文 时间:
2020-06-18 10:55:39
阅读次数:
78
一 、IO操作本质 数据复制的过程中不会消耗CPU 1 内存分为内核缓冲区和用户缓冲区 2 用户的应用程序不能直接操作内核缓冲区,需要将数据从内核拷贝到用户才能使用 3 而IO操作、网络请求加载到内存的数据一开始是放在内核缓冲区的 二、 IO模型 BIO – 阻塞模式I/O 用户进程从发起请求,到最 ...
分类:
其他好文 时间:
2020-06-18 10:40:17
阅读次数:
47
一、线程池介绍、作用 线程池可以看做是线程的集合。在没有任务时线程处于空闲状态,当请求到来:线程池给这个请求分配一个空闲的线程,任务完成后回到线程池中等待下次任务(而不是销毁)。这样就实现了线程的重用。 我们来看看如果没有使用线程池的情况是这样的: 为每个请求都新开一个线程! public clas ...
分类:
编程语言 时间:
2020-06-18 01:54:28
阅读次数:
73
在分布式环境中,许多服务依赖项中的一些必然会失败。Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止级联失败和提供回退选项来实现这一点,所有这些都可以提高系统的整体弹性。 Hystrix为了什么 Hystrix被设计的 ...
分类:
其他好文 时间:
2020-06-18 01:07:30
阅读次数:
72
进程的等待状态 如果进程不在执行的话,那么它在等待一些事件,内核分了很多的等待状态 这些状态通常由进程的描述符队列来实现的 ,每个队列可能悬空,来对应一组等待特定的事件的进程。 内核的可重入 几个进程可以同时在内核态执行,在单处理器上只有一个进程真正的运行,其他都是被阻塞的状态,或者处于一个低优先级 ...
分类:
其他好文 时间:
2020-06-17 23:35:50
阅读次数:
72
一、全局解释器锁--GIL 在CPython解释器中,进程级别有一把锁,叫做GIL 1、GIL:全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。 2、线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执 ...
分类:
编程语言 时间:
2020-06-17 23:14:09
阅读次数:
74
代码: using System; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Utils; /** * 如何写个死循环,既不独占 ...
分类:
编程语言 时间:
2020-06-17 20:37:40
阅读次数:
53