- LinkedBlockingDeque的定义 LinkedBlockingDeque是一个通过链表实现的双端阻塞队列,如果不指定大小时,则默认的大小是Integer.MAX_VALUE,实现原理与LinedBlockingQueue类似。都是通过ReentrantLock+Condition+链表。 使用LinkedBlockingDeque 有哪些风险呢 在未来... LinkedBlockingDeque的定义 LinkedBlockingDeque是一个通过链表实现的双端阻塞队列,如果不指定大小时,则默认的大小是Integer.MAX_VALUE,实现原理与LinedBlockingQueue类似。都是通过ReentrantLock+Condition+链表。 使用LinkedBlockingDeque 有哪些风险呢 在未来...
- 文章首发于:https://mp.weixin.qq.com/s/sbkY-Il1AQ0Ew-b7LKc33g 前言 上一篇我们介绍了死锁的发生条件,以及避免死锁的方式。其中 破坏占有且等待的处理是,通过一个单例类一次性申请所有资源,直到成功。如while (!Allocator.getAllocator().applyResource(this, target))... 文章首发于:https://mp.weixin.qq.com/s/sbkY-Il1AQ0Ew-b7LKc33g 前言 上一篇我们介绍了死锁的发生条件,以及避免死锁的方式。其中 破坏占有且等待的处理是,通过一个单例类一次性申请所有资源,直到成功。如while (!Allocator.getAllocator().applyResource(this, target))...
- 上一篇我们介绍了ArrayList的相关源码,这篇我们将了解一下fail-fast机制的相关知识 fail-fast的简介fail-fast的相关示例fail-fast的解决办法 fail-fast的原理解决fail-fast的原理 fail-fast的简介 fail-fast机制是java 集合的一种错误机制。 当多个线程对同一个集合的内容进行操作时,就会产生fai... 上一篇我们介绍了ArrayList的相关源码,这篇我们将了解一下fail-fast机制的相关知识 fail-fast的简介fail-fast的相关示例fail-fast的解决办法 fail-fast的原理解决fail-fast的原理 fail-fast的简介 fail-fast机制是java 集合的一种错误机制。 当多个线程对同一个集合的内容进行操作时,就会产生fai...
- 摘要 并发编程世界里,由于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、继承 继承是一种联结类的层次模型,并且允...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中 -
一个AI团队帮你写代码:华为云码道Agent Space实战2026/06/25 周四 19:00-21:00
张翰文-华为云码道工程师/郭英旭-青软创新科技集团股份有限公司 软件架构师
本场直播聚焦华为云码道Agent Space两大模式:研发办公、代码开发,亲身体验从需求到代码的AI自动化能力。实操演示基于华为 CodeArts CLI,依托 OpenSpec 规格体系从零搭建业务项目。
即将直播
热门标签