读书笔记
yaofengdoit
长不大的童心
展开
-
读书笔记之《大型分布式网站架构设计与实践》
分布式系统的设计,涉及通信协议、远程调用、服务治理、系统安全、存储、搜索、监控、稳定性保障、性能优化、数据分析、数据挖掘等各个领域。这本书作者结合淘宝网的实际工作经历,重点介绍大型分布式系统的架构设计。写的时间比较早了,知识点相对来说全面,但是不够深入,架构思想还是很值得学习的。一、面向服务的体系架构(SOA)本章主要介绍和解决下面问题:HTTP协议的工作方式与HTTP网络协议栈的结构?如何实现基于HTTP协议和TCP协议的RPC调用,它们之间有何差别,分别适用何种场景?如何实现服务的动态原创 2020-05-30 21:32:02 · 201 阅读 · 0 评论 -
读书笔记之《Java并发编程的艺术》—— 四
由于内容过多,分一个系列来写,这是第四篇。九、Java中的线程池线程池用于异步或并发执行任务的场景,合理使用线程池带来的好处:(1)降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗;(2)提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行;(3)提高线程的可管理性,使用线程池统一分配、调优和监控。1、线程池的实现原理当向线程池提交一个任务后,线程池的主要处理流程:(1)线程池判断核心线程池里的线程是否都在执行任务,如果不是,那么创建一个新的工作线程来执行任务原创 2020-05-30 21:27:43 · 191 阅读 · 0 评论 -
读书笔记之《Java并发编程的艺术》—— 三
由于内容过多,分一个系列来写,这是第三篇。六、Java并发容器和框架1、ConcurrentHashMap的实现原理和使用HashMap1.7、1.8在多线程并发情况下都会出现死循环。HashTable使用synchronized保证线程安全,在线程竞争激烈的情况下,效率很低。ConcurrentHashMap1.7使用锁分段技术提升并发访问率。首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。ConcurrentHas原创 2020-05-30 21:23:20 · 192 阅读 · 0 评论 -
读书笔记之《Java并发编程的艺术》—— 二
由于内容过多,分一个系列来写,这是第二篇。三、Java内存模型1、Java内存模型的基础线程之间的通信机制有两种:共享内存和消息传递。在Java里,所有实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享。局部变量、方法定义参数、异常处理参数不会在线程间共享。Java线程之间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。线程之间的共享变量存储在主内存,每个线程都有一个私有的本地内存(本地内存是JMM的一个抽象概念,并不真实存在)。JMM通过原创 2020-05-30 21:18:19 · 304 阅读 · 0 评论 -
读书笔记之《Java并发编程的艺术》—— 一
前言 这本书集合JDK的源码讲了Java并发框架、线程池的原理等,深入到JVM、CPU层面来讲解。推荐看过《Java多线程编程核心技术》之后,可以继续研究此书,提高自己。全书分为11章,下面将记录个人认为每章中重要的知识点。一、并发编程的挑战 并发编程的目的是为了让程序执行的更快,并不是启动更多的线程就能让程序最大限度的并发执行。需要考虑很多因素,比如上下文切换、死锁,以及硬件和软件资源的限制。1、上下文切换CPU通过时间片分配算法来循环执行任务,当前任务执行完一个时间片后会切换到下一原创 2020-05-30 21:09:39 · 276 阅读 · 0 评论 -
读书笔记之《Redis开发与运维》—— 三
由于内容过多,分一个系列来写,这是第三篇。五、持久化 持久化功能有效的避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。1、RDBRDB持久化是把当前进程数据生成快照保存在硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。手动触发的命令有:save和bgsave命令。save命令会阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上不要用。bgsave命令,Redis进程执行fork操作创建子进程,RDB持久化原创 2020-05-30 17:11:36 · 316 阅读 · 0 评论 -
读书笔记之《Redis开发与运维》—— 二
由于内容过多,分一个系列来写,这是第二篇。三、小功能大用处1、慢查询分析 慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息记录下来。注意是命令执行前后,redis客户端执行一条命令分为四步:发送命令、命令排队、命令执行、返回结果。所以没有慢查询不代表客户端没有超时问题。 redis提供了slowlog-log-slower-than和slowlog-max-len配置。slowlog-log-slower-than用于设置阀值,单位微秒,默认原创 2020-05-30 17:06:53 · 192 阅读 · 1 评论 -
读书笔记之《Redis开发与运维》—— 一
前言 读书笔记系列主要记录自己看的书籍中的知识点,算是一个归纳整理吧。Redis在我们的日常开发中可以说是很常用了,《Redis开发与运维》这本书讲解了Redis开发和运维的方方面面,很系统、全面,关键是实用。特来撸撸它,记录一番。全书分为14章,下面将记录个人认为每章中重要的知识点。一、Redis初识 Redis是一种基于键值对(key-value)的NoSQL数据库,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)原创 2020-05-30 16:59:40 · 331 阅读 · 0 评论 -
读书笔记之《Java多线程编程核心技术》
一、前言 读书笔记系列主要记录自己看的书籍中的知识点,算是一个归纳整理吧。《Java多线程编程核心技术》这本书主要讲解了Java多线程相关的知识。全书分为7章,下面将记录个人认为每章中重要的知识点。二、Java多线程的基础1、进程和线程进程是资源分配的最小单位,线程是CPU调度的最小单位。直观点理解:对于操作系统来说,一个任务就是一个进程,比如打开一个浏览器就是启动一个浏览器进程,打开两个记事本就启动了两个记事本进程。有些进程不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等原创 2020-05-30 16:48:17 · 189 阅读 · 0 评论