![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 96
thewindkee
这个作者很懒,什么都没留下…
展开
-
【读书笔记】《自己动手写Java虚拟机》-方法调用
虚拟机执行指令(instruction)步骤:1. 获取当前虚拟机栈顶帧2. 设置程序计数器3. 读取一个字节的操作码(one-byte opcode)以及操作数4. 设置下一跳的程序计数器5. 执行指令6. 循环到第1步骤[^2]原创 2022-09-14 00:48:26 · 559 阅读 · 0 评论 -
读书笔记-需求设计:构建用户想要和需要的产品(1)
描述系统的方法五视图业务组织图 。 描述系统关系。业务流程视图。 描述运行流程,边界。数据视图。 描述数据(库/表)层面的关系。程序员视图。 描述代码结构。硬件配置。 描述部署情况。什么是设计1. 理解。理解自己想要达到的目标(想开发的东西),需要克服的困难。--成果:需求清单。2. 猜想。需要有一些创意,依靠直觉并作出一些有理由的猜想。--从诸多想法中挑选一个或几个,进行下一步。3. 细化。确保所有的需求都得到覆盖,并确保所有已知的弱点都得到解决,使设计充实。4. 分析。对原创 2020-11-30 23:19:18 · 395 阅读 · 0 评论 -
《Java多线程编程实战指南-设计模式篇》笔记
线程池大小1.CPU密集型:考虑设置 Cpu数+12.I/O密集型:考虑设置 2*Cpu数线程泄漏(Thread Leak)含义:指线程池中的工作者线程意外中止,使得线程池中实际可用的工作者线程变少。如果线程泄漏持续存在,那么线程池中的工作者线程会越来越少,导致线程池无法处理交给其的任务。例子:SocketInputStream.socketRead0引起线程池提交任务后,futureTask.get超时正确的预防方式1.处理可恢复的异常。2.设置超时等待。...原创 2020-05-31 23:52:34 · 222 阅读 · 0 评论 -
读书笔记:《大型网站系统与Java中间件实践》
文章目录大型网站演进数据库读问题写问题应用应对的挑战引入服务层框架:多机房问题序列化与反序列化问题异步调用线程池隔离服务请求合并数据访问层一致性的基础理论--CAP/BASE多机的Sequence问题消息中间件功能消息一致性避免对消息中间件的强依赖级联、嵌套topic/queue消息发送到中间件的可靠性保证(发送可靠)消息投递的可靠性保证(消费可靠)消息者重复消费避免投递线程被阻塞大型网站演进...原创 2019-12-15 18:58:22 · 226 阅读 · 0 评论 -
《Java性能优化权威指南》学习笔记
编译编译是指生成机器码 即 二进制目标文件的过程。Java最初是转换为类文件,虚拟机将其转为字节码。运行时动态的转为机器码。JIT会在运行时,将调用次数超过阈值CompileThreshold的代码编译(由方法调用计数器计数)。JVM性能监控重要的垃圾收集数据堆大小。新生代、老年代、永久代大小Minor GC /Full GC 的持续时间、频率、空间回收量打印垃圾收集信息 -X...原创 2019-10-25 14:47:03 · 356 阅读 · 0 评论 -
《Java高并发编程详解-多线程架构与设计》线程间的通信
摘自《Java高并发编程详解-多线程架构与设计》第五章同步、异步、阻塞、非阻塞概念同步和异步结果的通知机制。自己问还是别人通知。同步:主动等待结果的返回。如阻塞等待,轮询(同步非阻塞)。异步:被动等待结果的返回。如 消息回调。阻塞和非阻塞结果返回以前,调用方的状态。等还是不等。阻塞:结果返回以前,什么也不干。非阻塞:在结果返回以前,可以先做一些其他事情。Monitor锁下...原创 2019-07-07 16:30:44 · 424 阅读 · 0 评论 -
《Java高并发编程详解-多线程架构与设计》线程安全与数据同步
定义共享资源:多个线程对同一资源访问(读写)线程安全:多个线程对同一资源访问的数据是一致的。Synchronized使用同步方法同步代码块深入 synchronized关键字p66-67不应该叫synchronized(mutex)为锁,而应该是某个线程获取了与mutex关联的monitor锁。当使用synchronize锁住某段代码, 几个线程一起去访问时。使用jstack查看...原创 2019-07-07 16:14:43 · 285 阅读 · 0 评论 -
《Java高并发编程详解-多线程架构与设计》Thread API
摘自《Java高并发编程详解-多线程架构与设计》第三章1.sleep不会释放monitor锁的所有权2.使用TimeUnit.XX.sleep代替Thread.sleep3.yield让出CPU资源4.yield与sleep的区别jdk1.5之前 yield 实际调用sleep(0)sleep 会暂停线程指定时间, 没有时间片的消耗yield只是对cpu一个hint,cpu调度...原创 2019-07-21 01:15:51 · 1458 阅读 · 0 评论 -
《Java高并发编程详解-多线程架构与设计》Java Classloader
摘自《Java高并发编程详解-多线程架构与设计》第九章 p144-p157重点:1.连接-准备阶段为静态变量赋初值,初始化阶段为静态变量赋代码值2.引起初始化阶段的6种情况(主动引用),静态变量/方法,new,反射,子类引起父类。以及被动引用,如静态常量。其值opy到被引用的类。3.类加载的三个阶段4.静态代码块可以对后面的静态变量赋值,但不能访问。5.clinit线程安全1.类...原创 2019-07-24 12:00:32 · 831 阅读 · 0 评论 -
《Java高并发编程详解-多线程架构与设计》JVM类加载器
总结内置类加载器 bootstrap ClassLoader,Ext ClassLoader ,App ClassLoader。分别加载jre\lib,jre\lib\ext,-cp或者-classpath对应的classpath通过继承ClassLoader重写findClass特殊目录来实现自定义类加载器。特殊目录或者设置父加载器为空,让loadClass时跳过父类加载器(ps,如...原创 2019-07-21 01:14:24 · 469 阅读 · 0 评论 -
《Java程序性能优化》3.3 使用NIO提升性能
p:102-118流与NIO的不同流以字节为单位,NIO基于块(block)为单位。channel是双向的通道。stream是单向的。NIO组件NIO两个重要组件:通道channel和缓冲buffer通道表示缓冲数据的源头或者目的地。缓冲是一块连续的内存, 是NIO读写数据的中转地。通道(Channel)不能直接对channel进行读写操作,必须通过Buffer来进行。如: 在...原创 2019-04-18 14:14:51 · 269 阅读 · 0 评论 -
【JavaScript高级程序设计】读书笔记-第4章function
函数内部属性 :arguments、callee、caller、prototype 以及方法call和apply等。arguments:arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。例如,如果一个函数传递了三个参数,你可以以如下方式引用他们:arguments[0]a...原创 2019-03-23 16:53:05 · 185 阅读 · 0 评论 -
vim学习3-《Vim实用技巧》
注:<C-o>代表 按着Ctrl+o其他删除J - join line 。删除空白行 \n \txp 调换两个字符的位置查找并跳转查找光标所在的单词,“*” next identifier , ";"下一个。 ","上一个复制y$ 复制到光标所在位置到该行最后一个字符。"+y复制选中内容到+寄存器,也就是...原创 2018-08-29 16:56:24 · 1953 阅读 · 0 评论 -
《Java程序性能优化》subString()方法的内存泄露
String的构造首先了解下String的构造,String内部使用char [] value 来存储字符。需要注意 offset和count在1.7已经没有了。 /** The value is used for character storage. */ private final char value[];/** The offset is the first index o...原创 2019-01-31 15:16:19 · 1343 阅读 · 0 评论 -
《Docker技术入门与实践》Docker入门2-数据管理
数据管理目的:对容器中数据备份,或者 多个容器间共享数据方式:数据卷数据卷容器6.1 数据卷docker run 的时候通过 -v 创建 数据卷将主机的 /tmp/docker目录加载到容器的 /tmp/container中测试,将主机的 /tmp/docker目录加载到容器的 /tmp/container中docker run -it --name cent -v /...原创 2019-03-14 18:10:32 · 159 阅读 · 0 评论 -
《Docker技术入门与实践》Docker入门3-网络基础配置
7.1 端口映射实现访问容器docker run -P 会随机分配一个端口暴露给主机, -p 可以指定一个端口 -p, --publish list Publish a container's port(s) to the host (default []) -P, --publish-all ...原创 2019-03-14 18:12:45 · 180 阅读 · 0 评论 -
《Docker技术入门与实践》Docker入门4-使用Dockerfile创建镜像
Dockerfile基础Dockerfile分四部分组成: 基础镜像、维护者信息、镜像操作指令、启动时命令ps: 我的本地镜像已经有centos,若没有请使用docker pull centos入门例子创建Dockerfile文件cd temp &amp;amp;amp;&amp;amp;amp; vim Dockerfile#若本地镜像没有centos请先使用`docker pull centos`FROM ce...原创 2019-03-14 18:44:00 · 1786 阅读 · 6 评论 -
《Docker技术入门与实践》Docker入门
官方文档 https://docs.docker.com/engine/reference/commandline/docker/1.安装ubuntu:apt-get updateapt-get install -y docker.ioln -sf /usr/bin/docker.io /usr/local/bin/dockersed -i &amp;amp;amp;amp;amp;quot;$acomplete -F _d...原创 2019-03-12 14:07:06 · 282 阅读 · 0 评论 -
《Linux命令行手册》学习笔记
粗略过了一遍,记录一下方便自己查询。利用cat连接文件a.jpg.001 a.jpg.002cata.jpg.* > a.jpg利用cat创建文件cat < 文件 与 cat 文件 的效果一样。使用less 来分页显示上下 jk,首尾Gg,翻页pageup,pagedown...原创 2018-06-19 18:21:08 · 534 阅读 · 0 评论 -
【JavaScript高级程序设计】读书笔记-第6章 创建对象
js 的构造函数 和普通函数没多少区别。只是叫法和使用问题。构造函数 的函数名 推荐大写开头, 这是为了区别其他普通函数。因为构造函数也是普通函数,只是能因为new创建对象而已。— 真正起作用的其实是new与thisnew:可以新建一个对象,当 使用new的时候, 就把函数当做【构造函数】,构造一个对象。此时函数内部的this即代表new出的这个对象。this :谁调用该函数, this指向...原创 2019-03-23 16:13:03 · 153 阅读 · 0 评论 -
【读书笔记】《码农翻身》jdbc
《码农翻身》p108-p119 1.工厂模式,不同的数据库实现不同的Driver,产生不同的Connection去操作数据库.2.通过Class.forName("com.xx.Driver").来加载Driver.Driver接口的同名实现类通过静态代码块将Driver实例注册到DriverManager中。3.通过DriverManager.getConnection 选择注册...原创 2018-08-23 13:03:59 · 426 阅读 · 0 评论