- 博客(57)
- 收藏
- 关注
翻译 The Design of a Practical System for Fault-Tolerant Virtual Machines 翻译和理解
The Design of a Practical System for Fault-Tolerant Virtual Machines 翻译和理解
2022-11-13 20:03:32 359
原创 MapReduce: Simplified Data Processing on Large Clusters 翻译和理解
MapReduce: Simplified Data Processing on Large Clusters概述MapReduce 是一种编程模型,用于处理和生成大型数据集的相应实现。用户定义一个map函数以处理 key-value 键值对,生成中间态的 key-value 键值对。还要定义一个reduce函数来合并所有有相同中间态 key 的所有中间态 value。许多现实世界的工作都可以用这个模型实现。以此风格编写的程序可以自动并行化地在大型商用机器集群上运行,运行时系统负责以下任务:对输入
2022-03-23 20:25:11 3998
原创 Java中的方法内联
Java中的方法内联1. 什么是方法内联例如有下面的原始代码:static class B { int value; final int get() { return value; }}public void foo() { y = b.get(); // ...do stuff... z = b.get(); sum = y + z;}我们首先要进行的就是方法内联,主要有下面两个目的:去除方法调用的成本,如查找方
2022-01-28 12:35:47 2486
原创 JVM基础故障处理工具总结
JVM基础故障处理工具1. jps:虚拟机进程状况工具jps 工具的功能是列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称以及这些进程的本地虚拟机唯一 ID。jps 命令格式如下:$jps [option] [hostid]2. jstat:虚拟机统计信息监视工具jstat 是用于监视虚拟机各种运行状态的命令行工具,可以显示虚拟机进程中类加载、内存、垃圾收集、即时编译等运行时数据。jstat 命令格式如下:$jstat [ option vmid [interval[s|ms] [c
2022-01-25 20:37:40 856
原创 《Java并发编程的艺术》知识点目录
Java并发编程的艺术第一章 并发编程的挑战1.1 上下文切换p1 上下文切换p1 多线程一定快吗p3 为什么并发执行的速度有时比串行慢p3 测试上下文切换次数和时长p3 如何减少上下文切换P4 减少上下文切换实战1.2 死锁p5 死锁p6 避免死锁的几个常见方法1.3 资源限制的挑战p6 资源限制第二章 Java并发机制的底层实现原理2.1 volatile的应用p8 volatile的定义p9 一些有关volatile实现原理的cpu术语的定义p9 vola
2021-12-25 21:36:13 349
原创 《现代操作系统》知识点目录
现代操作系统第一章 引论1.1 什么是操作系统p2 作为扩展机器的操作系统p3 作为资源管理者的操作系统1.2 操作系统的历史略1.3 计算机硬件简介p12 处理器p14 存储器p15 磁盘p16 I/O设备p18 总线p19 启动计算机1.4 操作系统大观园略1.5 操作系统概念p22 进程p22 地址空间p22 进程表p22 进程间通信p23 警告信号p23 UIDp23 地址空间p23 文件p23 目录p24 根目录和工作目
2021-12-25 21:33:08 676
原创 《深入理解Java虚拟机》知识点目录
深入理解Java虚拟机第二章 Java内存区域与内存溢出异常2.2 运行时数据区域p42 Java内存区域划分概述p43 程序计数器p43 程序计数器是唯一一个不会存在OOM的内存区域p43 Java虚拟机栈p44 局部变量槽p44 本地方法栈p44 Java堆p45 分配缓冲区TLABp46 方法区p46 永久代(持久代)p47 运行时常量池p47 直接内存2.3 HotSpot虚拟机对象探秘p48 对象的创建p48 类加载检查p48 为新生对象分配内存p48
2021-12-25 21:31:17 669
原创 JDK源码阅读(7):ConcurrentHashMap类阅读笔记
ConcurrentHashMappublic class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable { ...}参考:https://blog.csdn.net/hbtj_1216/article/details/76205903https://blog.csdn.net/u012403290/art
2021-11-25 14:35:05 402
原创 JDK源码阅读(6):HashSet类阅读笔记
HashSetpublic class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{ ...}1. map属性和构造方法HashSet中最重要的属性是一个HashMap,在构造方法中会创建它。private transient HashMap<E,Object> map;public HashS
2021-11-09 17:01:35 91
原创 JDK源码阅读(5):HashTable类阅读笔记
HashTablepublic class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { ...}HashMap只实现了Map接口,而HashTable还继承了Dictionary类。但实际上Dictionary类只是一个历史遗留问题,任何新的键值对集合都只需要实现Map接口。1. 构造方法/**
2021-11-09 16:57:09 273
原创 浅析Java中的Unsafe类
Unsafe类Unsafe类是 Java 中一些进行底层操作和不安全操作的方法集合,提供了一些可以直接操控内存和线程的低层次操作。这个不安全的类提供了一个观察 HotSpot JVM 内部结构并且可以对其进行修改。有时它可以被用来在不适用 C++ 调试的情况下学习虚拟机内部结构,有时也可以被拿来做性能监控和开发工具。本篇仅简单介绍,不涉及复杂使用和底层原理。1. 获取Unsafe实例private static final Unsafe theUnsafe = new Unsafe();publ
2021-10-28 11:14:00 440
原创 JDK源码阅读(4):HashMap类阅读笔记
HashMappublic class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable {}1. 一些重要参数1.1 serialVersionUID属性// 序列化版本号private static final long serialVersionUID = 362498820763181265L;serialVe
2021-10-10 15:57:56 157
原创 JDK源码阅读:AbstractStringBuilder、StringBuffer、StringBuilder类阅读笔记
AbstractStringBuilderabstract class AbstractStringBuilder implements Appendable, CharSequence{ ...}1. inflate方法inflate()方法可以将当前的Latin1编码的字符串膨胀到16位,即UTF16编码(Latin1编码为8位)/** * If the coder is "isLatin1", this inflates the internal 8-bit storage *
2021-10-09 22:27:13 171
原创 JDK源码阅读:String类阅读笔记
Stringpublic final class String implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc { ...}1. value数组用于存储String的字符。@Stableprivate final byte[] value;@Stable注解表示变量最多被修改一次,称为“稳定的”。2. c
2021-10-04 10:58:23 441
原创 JVM类加载机制
JVM类加载机制《深入理解Java虚拟机》p2611. 类加载的时机一个类从加载到虚拟机内存中开始,到卸载出内存位置,将经历七个阶段。《Java虚拟机规范》严格规定了有且只有六种必须立即对类进行初始化的场景。遇到new、getstatic、putstatic或invokestatic这四条字节码指令时。使用new实例化对象时读取或设置静态字段时调用静态方法时使用java.lang.reflect包的方法对类型进行反射调用的时候。当初始化类的时候,如果发现其父类还没有进行过初始化
2021-09-21 15:45:40 64
原创 JDK源码阅读:Object类阅读笔记
Object1. @HotSpotIntrinsicCandidate@HotSpotIntrinsicCandidatepublic final native Class<?> getClass();使用@HotSpotIntrinsicCandidate注解标注的方法,表示JVM可能为该方法提供了一些基于CPU指令的高效实现,而非使用Java的实现。2. native方法getClass()、hashCode()、clone()、notify()等方法的默认实现都是native
2021-09-18 16:01:20 119
原创 深入解析多态和方法调用在JVM中的实现
深入解析多态和方法调用在JVM中的实现1. 什么是多态多态(polymorphism)是面向对象编程的三大特性之一,**它建立在继承的基础之上。**在《Java核心技术卷》中这样定义:一个对象变量可以指示多种实际类型的现象称为多态。在面向对象语言中,多态性允许你将一个子类型的实际对象赋予给一个父类型的变量。在这样的赋值完成之后,父类变量就可以根据实际赋予它的子类对象的不同,而以不同的方式工作。在下面的示例中,Son类继承了Father类并重写了f()方法,又将Son类型的对象赋值给Father
2021-08-24 23:16:31 269 1
原创 Java断言
Java断言1.断言的概念Java的断言机制assert是一种用于测试阶段的语法特性,它允许我们在测试期间向代码中插入一些检查语句。代码发布时这些检测语句将被自动移除。断言关键字assert有下列两种形式assert 条件;assert 条件:表达式;当结果为false时,会抛出一个AssertionError异常。在第二种形式中,表达式将被传入异常的构造器,构造出你想要的一种消息字符串。注意这个消息字符串仅在这个时候被创建并跟随异常展示出来,而不能以任何方式被保存。因为如果保存为一个内
2021-08-18 22:20:58 126
原创 TCP拥塞控制详解
1. 拥塞原因与代价拥塞的代价当分组的到达速率接近链路容量时,分组经历巨大的排队时延。发送方必须执行重传以补偿因为缓存溢出而丢弃的分组。发送方在遇到大时延时进行的不必要重传会引起路由器利用其链路带宽来转发不必要的分组副本。当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量最终被浪费掉了。运输层向网络层中发送报文段(含有初始数据或重传数据)的速率用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OT9pnaCN-162883
2021-08-13 13:50:59 465
原创 Java NIO AsynchronousFileChannel
Java NIO AsynchronousFileChannel在Java 7,AsynchronousFileChannel被添加到了Java NIO中。使用AsynchronousFileChannel可以实现异步地读取和写入文件数据。1.创建一个AsynchronousFileChannel和NIO包中的许多类一样,我们用一个静态open()方法来打开一个AsynchronousFileChannel。Path path = Paths.get("data/test.xml");Asynch
2021-08-07 21:50:07 255
原创 Java NIO files
Java NIO filesjava.nio.file.Files类提供了许多操作文件的方法,它们往往和Path类合作使用。1.Files.exits()Files#exits()方法检查一个Path是否存在于当前的文件系统中。假如我们直接使用Path实例的相关方法,那么一个不存在的文件可能会被创建,如果我们想避免这种情况的发生,那么可以先使用Files#extis()来进行一下检查。Path path = Paths.get("data/logging.properties");boolean
2021-08-07 20:57:25 987
原创 MySQL中的redo log和undo log
MySQL中的redo log和undo logMySQL日志系统中最重要的日志为重做日志redo log和归档日志bin log,后者为MySQL Server层的日志,前者为InnoDB存储引擎层的日志。1 重做日志redo log1.1 什么是redo logredo log用于保证事务的持久性,即ACID中的D。持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。redo log有两种类型,分别为物理重做日志和逻辑重做日志
2021-07-26 15:44:31 1017
原创 Redis五大数据类型
Redis五大数据类型一、Redis-key相关命令二、String1、基本操作2、值的增减3、字符串范围和替换4、设置过期时间5、不存在时创建6、同时设置、读取多个值7、对象这里的key是一个巧妙的设计:user:{id}:{field,...},这样的设计在 Redis 中是完全可以的(id必须为整数)推荐使用 mset 逐个设置属性来创建对象8、返回并设置9、String类型的使用场景String类型的value除了是我们平时说的字符串,还可以是数字。
2021-04-10 16:39:46 74
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人