多线程和多进程及其应用场景

多进程多线程的区别 进程是分配资源的基本单位;线程是系统调度和分派的基本单位。 属于同一进程的线程,堆是共享的,栈是私有的。 属于同一进程的所有线程都具有相同的地址空间。 多进程的优点:①编程相对容易;通常不需要考虑锁和同步资源的问题。 ②更强的容错性:比起多线程的一个好处是一个进程崩溃了不会影响其他进程。 ③有内核保证的隔离:数据和错误隔离。 对于使用如C/C++这些语言编写的...

进程间的通信方式

进程间的7种通信方式概述…

死锁产生的原因以及产生的必要条件

认识线程死锁线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。 下面通过两个例子来说明线程死锁 死锁代码一12345678910111213141516171819...

研发高频算法题

牛客研发最爱考、剑指offer经典题目

题解

Leetcode-剑指offer 40.最小的K个数

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2: 输入:arr = [0,1,2,1], k = 1输出:[0]   限制: 0 <= k <= arr.length <= 10000...
题解

富途笔试-找到搜索二叉树中两个错误的节点

题目描述一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)示例1输入{1,2,3}返回值[1,2] 思路中序遍历可以得到搜索二叉树的升序遍历结果,题目描述其中两个节点交换了位置,因此只需在中序遍历中找到异常数据即可。 中序遍历二叉树 从前面往后找,发现当前数比后一个数大,则是异常数据,放在结...
题解

初识CAS与ABA问题

什么是CAS?CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。 CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。整个比较并替换的操作是一个原子操作。它体现的一种乐观锁的思想,比如多个线程要对一个共享的整型变量执行 +1 操作 获取共享变量...
并发

异步回调

To be continue…

并发

ForkJoin

ForkJoin 在JDK1.7, 并行执行任务! 在大数据量下提高效率。

并发

Redis 相关知识点总结

总结一些Redis常见知识点…

NoSQL