2020总结 回首2020学习输入书籍主要包括: 《深入理解Java虚拟机》 《MySQL技术内幕:InnoDB存储引擎》 《我的第一本算法书》 《算法图解》 《淘宝技术这十年》 《OSTEP》 《设计模式》 《Java并发编程的艺术》 《Redis设计与实现》 《漫画算法》 《CS:APP》 其中看《SICP》的时候过于浮躁,没有坚持读下去。会在后续的空闲时间读完这部经典。 CSAP 2020-12-31 随笔
MapReduce论文阅读笔记 存在的问题Google所面临的问题:大数据处理任务庞大,如何通过分布式系统完成并行计算、分发数据、处理错误? 为了解决这个问题,需要设计一个新的抽象模型,用来表述我们需要执行的计算。不用关心底层的实现细节,包括并行计算、容错、数据分布、负载均衡等方面。 编程模型MapReduce编程模型的原理:利用一个输入的key/value pair集合来产生一个输出的key/value p 2020-12-23 分布式系统 #分布式系统
OSTEP阅读笔记-Persistence(三) Chapter I/O设备 Q:如何将I/O集成进计算机系统中? 36.1 系统架构典型的系统架构如图所示:CPU通过memory bus连接到系统内存。显卡或者其它高速I/O设备通过常规的IO总线(I/O bus,例如PCI)连接到系统。最后是外围总线(peripheral bus,例如SCSI、SATA、USB),他们将最慢的设备连接到系统,包括磁盘、 2020-12-22 计算机基础 > 操作系统 #操作系统
OSTEP阅读笔记- Concurrency(二) Chapter 26 并发介绍本章介绍为单个运行进程提供的新抽象:thread。线程共享地址空间。 每个线程都有自己的PC与自己用于计算的register。如果有两个线程运行在同一个处理器上,发生context switch时,与进程不同的是,使用PCB保存进程状态,使用TCB保存线程状态。区别是:地址空间保持不变(不需要切换当前使用的页表)。 另一个主要区别在于栈,传统进程只有一个栈,如图26. 2020-12-17 计算机基础 > 操作系统 #操作系统
OSTEP阅读笔记-Virtuallization(一) 进程虚拟化Chapter 4 进程 Q:如何提供有许多CPU的假象? OS通过Visualizing CPU来提供这种假象。通过让一个进程只运行一个时间片,然后切换到其它进程,这样就提供了存在多个虚拟CPU的假象。 时分共享:典型的就是时间片划分,将一小段时间分配给不同的进程。 空分共享:典型的就是磁盘空间,将空间分配给不同的文件。 Qustions: 如何实现context switc 2020-12-05 计算机基础 > 操作系统 #操作系统
ThreadLocal解析 简介 This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initia 2020-12-03 Java > Java并发 #Java #并发
几个Java并发工具类解析 CountDownLatch简介 A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. 只有当N个线程执行完毕,并且进行countDown操作时,才允许await的线程继续执行。否则该线程 2020-11-29 Java > Java并发 #Java #并发
解析线程池ThreadPoolExecutor 什么是线程池Thread Pool是一种基于池化思想管理线程的工具,经常出现在多线程程序中。 线程池的优点: 降低资源消耗:通过池化技术重复利用已创建线程。 提高响应速度:任务到达时,无需等待进程创建即可执行。 提高线程的可管理性:使用线程池进行统一的分配、调优和监控。 提供更多强大的功能:线程池具备可扩展性,允许开发人员向其中增加更多功能。 为什么用线程池直接创建线程存在性能开销: Jav 2020-11-26 Java > Java并发 #Java #线程池