- 摘要 并发编程世界里,由于CPU缓存导致的可见性问题,线程切换导致的原子性问题,以及编译器重排序导致的有序性问题是并发编程Bug的根源。 正文 可见性 一个线程对共享变量的修改。另外一个线程能够立刻看到,我们称之为可见性。共享变量指的是存放在堆内存,由所有线程所共享的变量。比如:实例变量,静态变量。 如图所示: 共享变量V可以由线程A和线程B同时操作,线程A和... 摘要 并发编程世界里,由于CPU缓存导致的可见性问题,线程切换导致的原子性问题,以及编译器重排序导致的有序性问题是并发编程Bug的根源。 正文 可见性 一个线程对共享变量的修改。另外一个线程能够立刻看到,我们称之为可见性。共享变量指的是存放在堆内存,由所有线程所共享的变量。比如:实例变量,静态变量。 如图所示: 共享变量V可以由线程A和线程B同时操作,线程A和...
- 文章目录 前言 ConcurrentHashMap是啥时候进行扩容的? 第一处 helpTransfer方法 第二处treeifyBin方法 第三处addCount方法 transfer方法 参考 前言 前面对ConcurrentHashMap做了个一个整体的介绍,但是还有些疑问没问解决? ConcurrentH... 文章目录 前言 ConcurrentHashMap是啥时候进行扩容的? 第一处 helpTransfer方法 第二处treeifyBin方法 第三处addCount方法 transfer方法 参考 前言 前面对ConcurrentHashMap做了个一个整体的介绍,但是还有些疑问没问解决? ConcurrentH...
- 前言 前面我们介绍了Redis数据库以及键空间。这一篇我们继续介绍一下Redis的持久化。Redis持久化的方式有两种,一种是RDB的方式,一种是AOF的方式。 RDB的方式 RDB是Redis DataBase的缩写。是Redis默认的持久化方式,它按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件是dump.rdb。通过配置文件中的save... 前言 前面我们介绍了Redis数据库以及键空间。这一篇我们继续介绍一下Redis的持久化。Redis持久化的方式有两种,一种是RDB的方式,一种是AOF的方式。 RDB的方式 RDB是Redis DataBase的缩写。是Redis默认的持久化方式,它按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件是dump.rdb。通过配置文件中的save...
- 问题描述: 最近在编写MFC程序,用到了浏览器控件【Microsoft Web Browser】,通过浏览器对象的Navigate()函数设置显示html页面,将写好的文件放在程序目录下之后,想用相对路径来调用自己写的一个“geodemo.htm”文件,失败。 原因: 首先你要搞懂什么是相对路径。相对路径就是相对本进程的当前活动目录,一般是在本进程的可... 问题描述: 最近在编写MFC程序,用到了浏览器控件【Microsoft Web Browser】,通过浏览器对象的Navigate()函数设置显示html页面,将写好的文件放在程序目录下之后,想用相对路径来调用自己写的一个“geodemo.htm”文件,失败。 原因: 首先你要搞懂什么是相对路径。相对路径就是相对本进程的当前活动目录,一般是在本进程的可...
- 前言 上一篇我们介绍了在并发编程里面导致bug的三种问题,可见性问题,原子性问题,有序性问题。针对这三个问题,Java语言提供了Java内存模型(JMM)来解决这三种问题,主要是针对有序性和可见性问题。其本质上就是按需禁用缓存和编译优化。接下来我们就详细的阐述下。 Java内存模型介绍 Java 内存模型是一个很复杂的规范,本质上可以理解为:Java内存模型规范了... 前言 上一篇我们介绍了在并发编程里面导致bug的三种问题,可见性问题,原子性问题,有序性问题。针对这三个问题,Java语言提供了Java内存模型(JMM)来解决这三种问题,主要是针对有序性和可见性问题。其本质上就是按需禁用缓存和编译优化。接下来我们就详细的阐述下。 Java内存模型介绍 Java 内存模型是一个很复杂的规范,本质上可以理解为:Java内存模型规范了...
- 前言 上一篇我们介绍了Spring Cloud 学习笔记06----断路器(Hystrix)(Finchley版本)。那一篇主要是介绍Hystrix用来做熔断处理。这一篇我们将重点介绍一下用Hystrix来做限流器以及服务隔离器。 工作流程 首先让我们看看官方文档上的工作流程图。 英文版的流程图看不懂,没关系,咱们还有中文版的工作流程图。 流程说明 每次调... 前言 上一篇我们介绍了Spring Cloud 学习笔记06----断路器(Hystrix)(Finchley版本)。那一篇主要是介绍Hystrix用来做熔断处理。这一篇我们将重点介绍一下用Hystrix来做限流器以及服务隔离器。 工作流程 首先让我们看看官方文档上的工作流程图。 英文版的流程图看不懂,没关系,咱们还有中文版的工作流程图。 流程说明 每次调...
- 目录 前言 ThreadPoolExecutor类的常量 execute方法 addWorker的方法 Work 类 ThreadFactoryBuilder类 DefaultThreadFactory类 runWorker getTask方法 总结 参考 前言 上一篇我们介绍了线程池的使用,这一篇我们接着分析下线程池... 目录 前言 ThreadPoolExecutor类的常量 execute方法 addWorker的方法 Work 类 ThreadFactoryBuilder类 DefaultThreadFactory类 runWorker getTask方法 总结 参考 前言 上一篇我们介绍了线程池的使用,这一篇我们接着分析下线程池...
- ExecutorCompletionService类 当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直到每个future都已完成。如果我们不希望出现因为排在前面的任务阻塞导致后面先完成的任务的结果没有及时获取的情况,那么在... ExecutorCompletionService类 当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直到每个future都已完成。如果我们不希望出现因为排在前面的任务阻塞导致后面先完成的任务的结果没有及时获取的情况,那么在...
- 简单应用: 首先来看一个简单的例子: 两个线程,分别实现对1-100内的奇数,偶数的输出。 第一种方法:通过接口 MyRun类: package thread.hello; /** * 通过实现Runnable接口来实现多线程 * @author 陈浩翔 * * @version 1.0 2016-4-21 */ public class MyRu... 简单应用: 首先来看一个简单的例子: 两个线程,分别实现对1-100内的奇数,偶数的输出。 第一种方法:通过接口 MyRun类: package thread.hello; /** * 通过实现Runnable接口来实现多线程 * @author 陈浩翔 * * @version 1.0 2016-4-21 */ public class MyRu...
- 如果对一个变量进行自加自减操作,一般这样写: int global_count = 0;global_count ++; 如果是多线程操作,一般都需要加锁处理: pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_lock(&count_lock);global_count +... 如果对一个变量进行自加自减操作,一般这样写: int global_count = 0;global_count ++; 如果是多线程操作,一般都需要加锁处理: pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_lock(&count_lock);global_count +...
- 文章目录 第1题:阅读下面的代码,默读出A0,A1至An的最终值。第2题:如何提高python的运行效率?第3题: Python字典有什么特点,从字典中取值,时间复杂度是多少?第4题: 多线程、多进程?第5题: 请尽可能列举python列表的成员方法,并给出以下列表操作的答案: 第1题:阅读下面的代码,默读出A0,A1至An的最终值。 A0 = di... 文章目录 第1题:阅读下面的代码,默读出A0,A1至An的最终值。第2题:如何提高python的运行效率?第3题: Python字典有什么特点,从字典中取值,时间复杂度是多少?第4题: 多线程、多进程?第5题: 请尽可能列举python列表的成员方法,并给出以下列表操作的答案: 第1题:阅读下面的代码,默读出A0,A1至An的最终值。 A0 = di...
- 综合网上的一点资源,给大家整理了一些Java常用的基础面试知识点,希望能帮助到刚开始学习或正在学习的学员。 1、抽象 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2、继承 继承是一种联结类的层次模型,并且允... 综合网上的一点资源,给大家整理了一些Java常用的基础面试知识点,希望能帮助到刚开始学习或正在学习的学员。 1、抽象 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2、继承 继承是一种联结类的层次模型,并且允...
- 文章目录 第3章 设计模式 3.1 单例模式(Singleton Pattern) 3.1.1 懒汉式单例类 1、先对线程不安全的实例进行演示 线程不安全的懒汉式单例类 线程安全的懒汉式单例类 线程安全的懒汉式单例类 双重检验模式 静态内部类懒汉式实现 3.1.2 饿汉式单例类 第3章 设计模式 ... 文章目录 第3章 设计模式 3.1 单例模式(Singleton Pattern) 3.1.1 懒汉式单例类 1、先对线程不安全的实例进行演示 线程不安全的懒汉式单例类 线程安全的懒汉式单例类 线程安全的懒汉式单例类 双重检验模式 静态内部类懒汉式实现 3.1.2 饿汉式单例类 第3章 设计模式 ...
- 1.All IT eBooks多线程-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来。 然后放着,是的,就这么放着…然后慢慢的遗忘掉… All IT eBooks多线程-爬虫分析 打开网址 http://www.allitebooks.com/ 发... 1.All IT eBooks多线程-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来。 然后放着,是的,就这么放着…然后慢慢的遗忘掉… All IT eBooks多线程-爬虫分析 打开网址 http://www.allitebooks.com/ 发...
- .Net的体系结构 1.CLR CLS CTS CLR:Common Language Runtime 公共语言运行库 CLS:Common Language Specifiation 公共语言规范 CTS:Common Type System 能通用语言类型系统 贴有国家3c认证 2.应用程序域 &nbs... .Net的体系结构 1.CLR CLS CTS CLR:Common Language Runtime 公共语言运行库 CLS:Common Language Specifiation 公共语言规范 CTS:Common Type System 能通用语言类型系统 贴有国家3c认证 2.应用程序域 &nbs...
上滑加载中
推荐直播
-
DeepSeek 深入浅出白话解读
2025/02/12 周三 17:00-18:00
Tim-华为云中国区AI解决方案总监
DeepSeek的来龙去脉,为什么DeepSeek那么强?哪些是它的领先优势?它是怎么发展过来的?在华为云上能不能用到DeepSeek?本节课将一一解读。
回顾中
热门标签