10 2021 档案

摘要:并发编程从零开始(十二)-Lock与Condition 8 Lock与Condition 8.1 互斥锁 8.1.1 锁的可重入性 “可重入锁”是指当一个线程调用 object.lock()获取到锁,进入临界区后,再次调用object.lock(),仍然可以获取到该锁。显然,通常的锁都要设计成可重入 阅读全文
posted @ 2021-10-31 15:13 会编程的老六 阅读(371) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(十一)-Atomic类 7 Atomic类 7.1 AtomicInteger和AtomicLong 如下面代码所示,对于一个整数的加减操作,要保证线程安全,需要加锁,也就是加synchronized关键字。 但有了Concurrent包的Atomic相关的类之后,synchron 阅读全文
posted @ 2021-10-31 00:53 会编程的老六 阅读(445) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(十)-同步工具类 6 同步工具类 6.1 Semaphore Semaphore也就是信号量,提供了资源数量的并发访问控制,其使用代码很简单,如下所示: 有参方法tryAcquire(long timeout, TimeUnit unit)的作用是在指定的时间内尝试地获取1个许可, 阅读全文
posted @ 2021-10-28 23:46 会编程的老六 阅读(96) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(九)-ConcurrentSkipListMap&Set CAS知识点补充: 我们都知道在使用 CAS 也就是使用 compareAndSet(current,next)方法进行无锁自加或者更换栈的表头之类的问题时会出现ABA问题。 Java中使用 AtomicStampedRef 阅读全文
posted @ 2021-10-28 12:34 会编程的老六 阅读(502) 评论(0) 推荐(1) 编辑
摘要:并发编程从零开始(八)-ConcurrentHashMap 5.5 ConcurrentHashMap HashMap通常的实现方式是“数组+链表”,这种方式被称为“拉链法”。ConcurrentHashMap在这个基本原理之上进行了各种优化。 首先是所有数据都放在一个大的HashMap中;其次是引 阅读全文
posted @ 2021-10-27 18:26 会编程的老六 阅读(93) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(七)-ConcurrentLinkedQueue ####5.4 ConcurrentLinkedQueue/Deque AQS内部的阻塞队列实现原理:基于双向链表,通过对head/tail进行CAS操作,实现入队和出队。(队列中存放的是线程) ConcurrentLinkedQu 阅读全文
posted @ 2021-10-27 16:50 会编程的老六 阅读(127) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(六)-BlockingDeque+CopyOnWrite 5.2 BlockingDeque BlockingDeque定义了一个阻塞的双端队列接口: 该接口继承了BlockingQueue接口,同时增加了对应的双端队列操作接口。该接口只有一个实现,就是LinkedBlocking 阅读全文
posted @ 2021-10-27 15:23 会编程的老六 阅读(110) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(五)-BlockingQueue 第二部分:JUC 5 并发容器 5.1 BlockingQueue 在所有的并发容器中,BlockingQueue是最常见的一种。BlockingQueue是一个带阻塞功能的队列,当入队列时,若队列已满,则阻塞调用者;当出队列时,若队列为空,则阻塞 阅读全文
posted @ 2021-10-27 14:23 会编程的老六 阅读(138) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(四) 4 JMM内存模型 4.1 JMM与happen-before 4.1.1 为什么会存在内存可见性问题 下图为x86架构下CPU缓存的布局,即在一个CPU 4核下,L1、L2、L3三级缓存与主内存的布局。每个核上面有L1、L2缓存,L3缓存为所有核共用。 因为存在CPU缓存一 阅读全文
posted @ 2021-10-27 09:39 会编程的老六 阅读(260) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(三) 3 并发的问题 3.1 数据竞争 如果有两个或者多个任务在临界段之外对一个共享变量进行写入操作,也就是说没有使用任何同步机制,那么应用程序可能存在数据竞争(也叫做竞争条件)。 在这些情况下,应用程序的最终结果可能取决于任务的执行顺序。 假设有两个不同的任务执行了同一个modi 阅读全文
posted @ 2021-10-26 15:16 会编程的老六 阅读(65) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(二) 2. 并发核心概念 2.1 并发与并行 在单个处理器上采用单核执行多个任务即为并发。在这种情况下,操作系统的任务调度程序会很快从一个任务切换到另一个任务,因此看起来所有的任务都是同时运行的。 同一时间内在不同计算机、处理器或处理器核心上同时运行多个任务,就是所谓的“并行”。 阅读全文
posted @ 2021-10-26 13:41 会编程的老六 阅读(69) 评论(0) 推荐(0) 编辑
摘要:并发编程从零开始(一) 简介 java是一个支持多线程的开发语言。多线程可以在包含多个CPU核心的机器上同时处理多个不同的任务,优化资源的使用率,提升程序的效率。在一些对性能要求比较高场合,多线程是java程序调优的重要方面。 Java并发编程主要涉及以下几个部分: 并发编程三要素:原子性:即一个不 阅读全文
posted @ 2021-10-25 19:44 会编程的老六 阅读(281) 评论(0) 推荐(0) 编辑
摘要:SpringBoot执行原理-run方法 每个Spring Boot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main()方法,在该方法中通过执行SpringApplication.run()即可启动整个Spring Boot程序。 问题:那么SpringApplication.ru 阅读全文
posted @ 2021-10-24 13:22 会编程的老六 阅读(1816) 评论(0) 推荐(2) 编辑
摘要:分布式事务 分布式事务理论CAP(强一致性) CAP 定理,又被叫作布鲁尔定理。对于共享数据系统,最多只能同时拥有CAP其中的两个,任意两个都有其适应的场景。 BASE(最终一致性)BASE 是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Ev 阅读全文
posted @ 2021-10-23 16:54 会编程的老六 阅读(123) 评论(0) 推荐(0) 编辑
摘要:RocketMQ底层详解 架构 Broker RocketMQ的服务,或者说是一个进程叫做Broker,作用是存储和转发消息。RocketMQ单机大约能承受10万QPS的请求。为了提升Broker的可用性,以及提升服务器性能,通常会做集群的部署。每个Broker保存总数据的一部分,因此可以实现横向扩 阅读全文
posted @ 2021-10-16 23:42 会编程的老六 阅读(748) 评论(0) 推荐(0) 编辑
摘要:Redis复习笔记-分布式篇 Redis主从复制(replication) 配置 配置文件中添加: replicaof [host ip] [port] //添加在每个slave节点中 从节点启动后,会自动连接到master节点,开始同步数据。如果master节点更改了,比如原来的master节点宕 阅读全文
posted @ 2021-10-14 13:21 会编程的老六 阅读(148) 评论(0) 推荐(0) 编辑
摘要:Redis复习笔记-进阶篇 发布订阅模式 订阅频道 消息的生产者和消费者是不同的客户端,在Redis中通过**channel(频道)**模型进行关联。订阅者可以订阅多个channel,消息的发布者可以给指定的channel发布消息,只要有消息到达了channnel,所有订阅了这个channel的订阅 阅读全文
posted @ 2021-10-13 17:49 会编程的老六 阅读(146) 评论(0) 推荐(0) 编辑
摘要:Redis详解-基础篇 数据模型 redis是KV的数据库,最外层采用了hashtable进行实现。(我们把这个最外层的哈希)。每一个键值对都是一个dictEntry,通过指针指向key的存储结构和value的存储结构,而且next存储了指向下一个键值对的指针。 typedef struct dic 阅读全文
posted @ 2021-10-13 13:21 会编程的老六 阅读(110) 评论(0) 推荐(0) 编辑
摘要:MySQL索引、基础补充以及优化笔记-下 数据库优化 索引 引起索引失效的注意事项 全值匹配(要遵守) 最佳左前缀法则(要遵守) 不再索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描 存储引擎不能使用索引中范围条件右边的列 尽量使用覆盖索引(只访问索引的查询( 阅读全文
posted @ 2021-10-11 22:37 会编程的老六 阅读(77) 评论(0) 推荐(0) 编辑
摘要:MySQL索引、基础补充以及优化笔记-上 MyISAM存储引擎索引实现 MyISAM中为非聚集索引,也就是:索引,数据分开存储。索引存储在MYI文件中,数据存储在MYD文件中。在搜索数据时,先判断查找字段是否有索引,如果有则开始从MYI文件中的根节点开始,定位索引元素。一个一个节点查找,内部折半查找 阅读全文
posted @ 2021-10-10 21:31 会编程的老六 阅读(96) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示