这份笔记是我2013年下半年以来读“The Art of Multiprocessor Programming”这本书的读书笔记.目前有关共享内存并发同步相关的书籍并不多,但是学术文献却不少,跨越的时间范围也非常长,说明人们一直在做出努力.这本书是这个领域的好书,作为一本好书,它总结了这个领域自发展以来的大量重要成果,介绍了共享内存同步的基本理论,并介绍了大量并发算法和数据结构(主要是无锁算法),包括并发队列.栈.链表.计数器.排序网络.散列.跳表.优先队列等.更为重要的是,本书的作者之一Mau…
本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以及理解的经历,给各位想更深入理解的人分享一些个人的资料 硬件基础 处理器和线程(processors and threads) 多处理器(multiprocessor)包括多个硬件处理器,每个都能执行一个顺序程序.当讨论多处理器架构的时候,基本的时间单位是指令周期(cycle):即处理器提取和执行一…
本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以及理解的经历,给各位想更深入理解的人分享一些个人的资料 硬件基础 首先,我们无需掌握大量的底层计算机系统结构设计知识的细节,如果大家对于计算机系统结构非常感兴趣,那么我非常推荐大家搜一下 CSE 502 Computer Architecture 的课件,我看了这门课的 CPU 和 缓存章节,受益匪…
本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以及理解的经历,给各位想更深入理解的人分享一些个人的资料 自旋锁与争用 3. 队列锁 之前实现的基于回退的锁,除了通用性以外,还有如下两个问题: CPU 高速缓存一致性流量:虽然由于回退存在,所以流量比 TASLock 要小,但是多线程访问锁的状态还是有一定因为缓存一致性导致的流量消耗的. 可能降低访…
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数学基础. 第五章:利用简单的顶点/片元着色器来实现辅助技巧. 第六章:基本光照模型. 第七章:法线纹理.遮罩纹理等基础纹理. 第八章:透明度测试和透明度混合. 第九章:复杂光照实现. 第十章:高级纹理(立方体纹理等). 第十一章:纹理动画.顶点动画. 第十二章:屏幕特效. 第十三章:深度纹理. 第十四章:非真…
1:HTML5引入了简单化的标记,新的语义和媒体元素,另外要依赖于一组支持web应用的js库. 2:关于js 对象是属性的结合 window对象是全局变量. document对象是window的一个属性. document . getElementById会返回一个元素对象. 3:JSON.parse是从字符串转换为相应的JavaScript对象. 4:HTML请求数据 *要从服务器得到HTML文件或数据,浏览器会发出一个HTTP请求. *HTTP响应包括一个响应码.指示请求是否有错误(200表…
第1章 对象导论 1.4 被隐藏的具体实现 访问控制的原因: 让客户端程序员无法触及他们不应该触及的部分(不是用户解决特定问题所需的接口的一部分) 允许库设计者可以改变类内容的工作方式而不用担心会影响到客户端程序员 访问权限 Java用三个关键字在类的内部设定边界,这些关键字决定了紧跟其后被定义的东西可以被谁使用 public:表示紧随其后的元素对任何人都是可用的 private:表示除类型创建者和类型的内部方法之外的任何人都不能访问 protected:与private作用相当,区别在于继承的…
接着上一篇,mindmap更新如下内容. 3.背包.队列和栈 这节主要讲述了这三种数据结构(Bag.Queue.Stack)的API.实现以及链表.Queue和Stack还含有删除元素的方法.并引出了泛型,也就是可以用它来存储任何类型的数据.在API中,类class Bag<Item> implements Iterable<Item>的表示就将Item定义为一个类型参数.在创建数据结构时,我们就可以用任何类型代替Item了.有了泛型,我们就只需要一份API来处理所有类型的数据了.…
到家放松放松之后就开始学习算法了,手里拿的是拿的是一本Robert Sedgewick的橙皮书<算法(第四版)>的.这本书与导论那本书的不同之处在于轻数学思想.重实现,也就是说这是一本很不错的基础编程书.拿来做书中的练习还是蛮不错的,封面说有50种算法哦.思维导图如下,就且学且更新吧. 1.基本编程模型 第一章开始讲述用程序实现算法的优点:程序是对算法精确.优雅和完全的描述:可以通过运行程序来学习算法的各种性质:可以在应用程序中直接使用这些算法.还有这种学习算法的缺点缺点:分离思想和实现细节的…
第三章 主要内容: 进程和线程 进程的生命周期 进程的创建 进程的终止 1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的. Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程. 所以下面只讨论进程,只有当线程与进程存在不一样的地方时才提一下线程. 进程提供2种虚拟机制:虚拟处理器和虚拟内存 每个进程有独立的虚拟处理器和虚拟内存, 每个线程有独立的虚拟处理器,同一个进程内的线…