摘要: 目录 学习资料 《Java并发编程艺术》第11章 1.生产者消费者模式 生产者和消费者模式是通过一个容器(阻塞队列)来解决生产者和消费者的强耦合问题。通过阻塞队列来进行通信。(生产者—>阻塞队列—>消费者) 大多数设计模式,都会找一个第三者出来进行解耦,如工厂模式的第三者是工厂类,模板模式的第三者是 阅读全文
posted @ 2021-03-11 21:35 菜鸟kenshine 阅读(91) 评论(0) 推荐(0)
摘要: 学习资料 《Java并发编程的艺术》10.3~10.4 1.ScheduledThreadPoolExecutor详解 1.1 简介 主要用来在给定的延迟之后运行任务,或者定期执行任务,功能与Timer类似 Timer对应的是单个后台线程,而ScheduledThreadPoolExecutor可以 阅读全文
posted @ 2021-03-11 21:32 菜鸟kenshine 阅读(387) 评论(0) 推荐(0)
摘要: 学习资料 《Java并发编程的艺术》第10章 10.1~10.2 1.Excutor简介 从JDK 5开始,把工作单元与执行机制分离开来。工作单元包括 Runnable 和 Callable ,而执行机制由 Executor 框架提供 1.1 两级调度模型 在HotSpot VM的线程模型中,Jav 阅读全文
posted @ 2021-03-11 21:27 菜鸟kenshine 阅读(320) 评论(0) 推荐(0)
摘要: 目录 学习资料 《Java并发编程的艺术》第9章 1.简介 线程池好处: 降低资源消耗:线程创建销毁会消耗资源 提高响应速度 便于管理线程 2.线程池实现原理 线程池要素: corePool:核心线程池大小 maximunPool:最大线程池大小 BlockingQueue<Runnable>:任务 阅读全文
posted @ 2021-03-11 21:22 菜鸟kenshine 阅读(76) 评论(0) 推荐(0)
摘要: 目录 学习资料 《Java并发编程的艺术》第8章 1.CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作 thread.join()可让当前线程等待thread执行完毕再执行,原理是不停检查join的线程是否存活,如果thread线程存活则让当前线程永远 阅读全文
posted @ 2021-03-11 21:19 菜鸟kenshine 阅读(94) 评论(0) 推荐(0)
摘要: 学习资料 《Java并发编程的艺术》第7章 1.原子类简介 java5提供了java.util.concurrent.atomic包,该包的原子操作提供了一种用法简单、性能高效、线程安全地更新一个变量的方式,共12个类 Atomic包里的类基本上都是使用Unsafe实现的包装类 2.原子更新基本类型 阅读全文
posted @ 2021-03-11 21:18 菜鸟kenshine 阅读(88) 评论(0) 推荐(0)
摘要: 1.Fork/Join框架简介 Java7提供的一个并行任务执行,把大任务分割成小任务,最终汇总每个小任务结果后得到大任务结果的框架 Fork/Join运行流程图: 2.工作窃取算法 某个线程从其他队列窃取任务来执行 大任务分割为子任务,将子任务放在不同的任务队列中,每个队列创建一个单独线程来执行队 阅读全文
posted @ 2021-03-11 21:16 菜鸟kenshine 阅读(1136) 评论(0) 推荐(0)
摘要: 1.阻塞队列简介 阻塞队列是支持两个附加操作的队列(阻塞插入和阻塞移除) 阻塞插入:队列满时会阻塞插入元素的线程,直到队列不满 阻塞移除:队列为空时,获取元素的线程会等待元素变为非空 阻塞队列常用于生产者和消费者的场景 阻塞队列不可用(阻塞)时插入和移除操作的四种处理方式: 抛出异常:队列满再插入, 阅读全文
posted @ 2021-03-11 21:13 菜鸟kenshine 阅读(164) 评论(0) 推荐(0)
摘要: 1.线程安全队列 两种方式: 阻塞算法:出队入队用同一把锁或分别用一把锁实现 非阻塞算法:循环CAS的方式实现 ConcurrentLinkedQueue是基于链接节点的无界线程安全队列,添加元素到队尾,从头部获取元素 2.ConcurrentLinkedQueue结构 每个节点由节点元素item和 阅读全文
posted @ 2021-03-11 21:10 菜鸟kenshine 阅读(109) 评论(0) 推荐(0)
摘要: 1.为什么使用ConcurrentHashMap 并发模式下使用HashMap的put会产生环形链,导致死循环 HashTable和Collections.synchronizedMap(map)则使用synchronized保证线程安全,效率很低 ConcurrentHashMap分段锁技术能够有 阅读全文
posted @ 2021-03-11 21:08 菜鸟kenshine 阅读(131) 评论(0) 推荐(0)
摘要: 学习资料 《Java并发编程的艺术》第5章 5.4~5.6 1.读写锁简介 读写锁与排他锁: 排他锁:同一个时刻只能运行一个线程进行访问(不管读写),如ReentrantLock 读写锁:同一时刻允许有多个读线程访问,但是有写线程访问时,所有其他线程(不管读写)都被阻塞 Java并发包提供的读写锁的 阅读全文
posted @ 2021-03-11 21:05 菜鸟kenshine 阅读(308) 评论(0) 推荐(0)
摘要: 目录 学习资料 《Java并发编程的艺术》第5章 5.1~5.3 1.Lock接口 和Synchronized类似,只是需要显式的获取锁和释放锁,不太便捷,但是更加灵活,提供了很多Synchronized所无法提供的特性(控制并操作锁,尝试获取锁,中断获取锁,超时获取锁等) Lock的简单使用: L 阅读全文
posted @ 2021-03-11 20:59 菜鸟kenshine 阅读(138) 评论(0) 推荐(0)
摘要: 目录 学习资料 《Java并发编程的艺术》第4章 4.4 1.等待超时模式 等待超时伪代码如下: // 对当前对象加锁 public synchronized Object get(long mills) throws InterruptedException { long future = Sys 阅读全文
posted @ 2021-03-11 20:54 菜鸟kenshine 阅读(122) 评论(0) 推荐(0)
摘要: 学习资料 《Java并发编程的艺术》第4章 4.1~4.3 1.线程简介 1.1 什么是线程 现代操作系统调度的最小单元,也叫轻量级进程 一个进程可以创建多个线程,线程有各自的计数器,堆栈和局部变量等属性 处理器在线程上高速切换(时间片调度),让使用者感觉到这些线程是同时执行的 1.2 为什么要使用 阅读全文
posted @ 2021-03-11 20:51 菜鸟kenshine 阅读(99) 评论(0) 推荐(0)
摘要: 1. happens-before 1.1 JMM的设计要求 设计JMM时需要考虑: 程序员对内存模型的使用。希望内存模型易于理解。 JMM的happens-before规则简单易懂,向程序员提供了足够强的内存可见性保证 编译器和处理器对内存模型的实现。希望内存模型对编译器和处理器限制越少越好(便于 阅读全文
posted @ 2021-03-11 20:46 菜鸟kenshine 阅读(99) 评论(0) 推荐(0)
摘要: 1.volatile内存语义 Volatile主要作用是使变量在多个线程间可见 1.1 volatile特性 可见性:对一个volatile变量的读,总能看到(任意线程)对该变量最后的写入 原子性:即使是64为的long型和double型变量,只要声明为volatile变量,对该变量的读写就具有原子 阅读全文
posted @ 2021-03-11 20:35 菜鸟kenshine 阅读(508) 评论(0) 推荐(0)
摘要: 1.内存模型基础 Java内存模型,Java Memory Model简称JMM。 1.1 两个关键问题 线程间如何通信和线程间如何同步 a.如何通信 两种机制:共享内存,消息通信 共享内存: 线程共享程序公共状态,通过读写公共状态进行通信 消息通信: 线程间通过发送消息显示通信 Java采用的是共 阅读全文
posted @ 2021-03-11 20:25 菜鸟kenshine 阅读(91) 评论(0) 推荐(0)
摘要: 1.依赖JVM java代码编译为字节码,JVM执行字节码生成汇编指令,CPU执行汇编指令。 java并发机制依赖于JVM的实现和CPU指令。 2.Volatile实现原理 轻量级Sycronized,保证了共享变量的可见性 保证一个线程修改一个共享变量后,另一个线程总是能够读到这个修改后的变量值 阅读全文
posted @ 2021-03-11 20:16 菜鸟kenshine 阅读(237) 评论(0) 推荐(0)
摘要: 0.学习资料 《Java并发编程的艺术》第一章 1.上下文切换 单核处理器支持多线程时,通过cpu时间片切换(分配)来实现 时间片执行完可能会切换到其他任务 切换前保存当前任务状态,然后加载其他任务,之后某个时间片切换回该任务可继续加载该任务,这个任务切换过程就是一次上下文切换 任务从保存到加载的过 阅读全文
posted @ 2021-03-11 20:02 菜鸟kenshine 阅读(117) 评论(0) 推荐(0)
摘要: 1. Java客户端远程连接时的三个坑 No route info of this topic SENDDEFAULTIMPL CALL TIMEOUT connect to 172.17.42.1:10911 failed 解决: 配置broker.conf,添加 brokerIP1=服务器地址 阅读全文
posted @ 2021-03-11 14:20 菜鸟kenshine 阅读(391) 评论(1) 推荐(0)
摘要: 0.说明 18年写的笔记,所用版本较老 1.Redis介绍 1)Redis及NoSQL简介 Redis简介: Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Remote Dictionary 阅读全文
posted @ 2021-03-11 13:46 菜鸟kenshine 阅读(277) 评论(0) 推荐(0)
摘要: 目录 学习资料 哈工大《计算机组成原理》 控制单元CU设计: 组合逻辑设计 微程序设计 1.微程序设计基本思路 组合逻辑设计不便于扩展,增加一个指令需要改变电路 微程序设计示意图: 理解: 将可并行的微操作合并,用一个微指令替代 执行该微指令,相当于并行执行多个微操作命令 微指令代码某一位均代表某个 阅读全文
posted @ 2021-03-11 13:05 菜鸟kenshine 阅读(3031) 评论(0) 推荐(0)
摘要: 目录 学习资料 哈工大《计算机组成原理》 控制单元设计: 组合逻辑设计 微程序设计 1.组合逻辑控制单元框图 1.1 CU外特性 T0~Tm:节拍信号 IR:指令寄存器,操作码进行译码 0~2^n-1:只会有一个有效 C0~C1:控制信号,可以有多个同时有效(一个节拍中) 1.2 节拍信号 这里每个 阅读全文
posted @ 2021-03-11 12:54 菜鸟kenshine 阅读(891) 评论(0) 推荐(0)
摘要: 目录 学习资料 计算机组成原理(哈工大)https://www.bilibili.com/video/BV1ix41137Eu?p=114 1.微操作命令分析 完成一条指令分为四个工作周期:取指,间址,执行,中断 1.1 取指周期 1.2 间址周期 1.3 执行周期 1.非访存指令 2.访存指令 加 阅读全文
posted @ 2021-03-11 12:45 菜鸟kenshine 阅读(828) 评论(0) 推荐(0)
摘要: 目录 学习重点 中断原因 中断请求标记(INTR) 中断判优逻辑(排队) 中断服务程序入口地址 中断响应 条件 时间 中断隐指令 保存断点 寻找入口地址 硬件关中断 保存和恢复现场 多重中断 屏蔽技术(MASK) 屏蔽字 修改屏蔽字 断点保护 断点进栈 存入0地址 1.概述 1.1 引起中断的因素 阅读全文
posted @ 2021-03-11 12:39 菜鸟kenshine 阅读(1956) 评论(0) 推荐(0)
摘要: 学习重点 并行等级 指令流水原理 指令二级流水 指令六级流水 影响流水线性能的因素 结构相关:资源冲突 数据相关:指令重排序 控制相关:转移指令 流水线能指标: 吞吐率 加速比 效率 流水线多发技术: 超标量技术 超流水技术 超长指令字 流水线结构: 指令流水结构 运算流水结构 锁存器 1.提高机器 阅读全文
posted @ 2021-03-11 12:29 菜鸟kenshine 阅读(1421) 评论(0) 推荐(1)
摘要: 目录 0.学习重点 CPU功能 CPU结构框图 CPU结构介绍 寄存器 CU 指令周期 概念 流程 标志 指令数据流 取值 间址 执行 中断 1.CPU功能 控制器功能 取指令 分析指令 总线管理 执行指令 控制程序输入输出 处理异常 运算器功能 实现算术运算和逻辑运算 总结CPU功能 指令控制(P 阅读全文
posted @ 2021-03-11 12:21 菜鸟kenshine 阅读(542) 评论(0) 推荐(0)
摘要: 学习重点 机器指令 操作码 地址码 操作数 类型 存储方式 操作类型 寻址方式(10种) RISC和CISC 1.机器指令 指令的一般格式: 操作码: 长度不可变 长度可变 操作码扩展技术:保留码点 保留的码点是(1111),若增加一个码点(1110),则最多增加16个地址 原则:短操作码一定不能是 阅读全文
posted @ 2021-03-11 12:18 菜鸟kenshine 阅读(367) 评论(0) 推荐(0)
摘要: 学习重点 定点运算 移位运算 加减运算 乘法 除法 浮点运算 加减 ALU 示意图 并行加法器 串行快速进位链 并行快速进位链 1.定点运算 1.1 移位运算 算术移位规则: 符号位不动,其他位移动,添补代码如下: 正数:原反补码,都补0 负数: 源码,补0 反码,补1 补码,左0右1 规则示意图: 阅读全文
posted @ 2021-03-11 11:57 菜鸟kenshine 阅读(1814) 评论(0) 推荐(0)
摘要: 学习重点 原、反、补、移码表示 定点表示 浮点表示 IEEE754 标准 1.原、反、补、移码表示 正数:符号位为0 原码,反码,补码相同 移码为补码符号位取反 负数:符号位为1 反码为原码符号位不动,其他位取反 补码为反码+1 移码为补码符号位取反 移码是为了直观比较大小 (正数移码1开头大于负数 阅读全文
posted @ 2021-03-11 11:26 菜鸟kenshine 阅读(317) 评论(0) 推荐(0)
摘要: 学习重点 DMA接口与中断接口比较 DMA与主存交换数据三种方式 停止CPU访问主存 周期窃取(周期挪用) 交替访问 DMA接口功能 DMA接口组成 DMA工作过程 预处理 传送过程 后处理 DMA与主机连接方式 链式(公共请求线) 独立DMA请求 DMA与中断比较 DMA接口类型 选择型 多路型 阅读全文
posted @ 2021-03-11 11:19 菜鸟kenshine 阅读(2759) 评论(0) 推荐(0)
摘要: 学习重点 程序查询方式 流程 接口电路 程序中断方式 中断概念 中断源 中断电路 INTR和MASK 排队器 向量地址形成部件 接口基本电路 多重中断 1.程序查询方式 流程 查询流程 单个设备 多个设备 程序流程 I/O—>CPU—>主存 接口电路 D:工作触发器 B:完成触发器 DBR:数据缓冲 阅读全文
posted @ 2021-03-11 11:06 菜鸟kenshine 阅读(1221) 评论(0) 推荐(0)