- 博客(166)
- 资源 (1)
- 收藏
- 关注
原创 【第一章-计算机系统概述】
本文系统梳理了计算机操作系统的基础知识框架,主要包含七大模块:1)操作系统基本概念(定义、功能目标及特征);2)发展历程(从手工操作到现代分布式系统);3)运行环境(处理器模式、中断异常、系统调用);4)系统结构与引导过程;5)虚拟机技术。内容涵盖操作系统核心概念、演进过程及关键技术实现,为理解计算机系统运行机制提供了结构化知识体系。最后通过章节小结对知识点进行系统总结。
2025-10-10 16:48:06
191
原创 【第四章-指令系统】
本文介绍了计算机指令系统的基本概念和组成。指令系统是计算机体系结构(ISA)的核心部分,定义了软硬件接口。一条指令包含操作码和地址码字段,指令长度可分为单字长、半字长和双字长指令。根据操作数地址码数量,指令可分为零地址、一地址、二地址、三地址和四地址等不同格式。ISA还规定了指令格式、寻址方式、寄存器组织、存储空间编址等关键内容,为机器级程序提供了规范标准。指令系统是计算机硬件设计的基础,直接影响到程序执行效率和硬件实现复杂度。
2025-09-26 08:55:51
497
原创 【第三章-存储系统】
存储系统摘要存储系统是计算机体系的重要组成部分,主要分为主存、辅存和高速缓存。主存(DRAM)用于存放运行程序和数据,速度快但容量较小;辅存(如磁盘)容量大但速度慢;高速缓存(SRAM)位于CPU和主存之间,提供最快访问速度。存储器按存取方式可分为随机存取(RAM)、只读(ROM)和串行访问(如磁带)。DRAM需定期刷新以保持数据,刷新方式包括集中、分散和异步刷新。ROM具有非易失性,包括MROM、PROM和EPROM等类型。多级存储层次结构通过高速缓存和主存-辅存协同工作,平衡速度、容量和成本需求。
2025-07-29 02:23:27
253
原创 【第二章-数据的表示和运算】
摘要:数据的表示与运算 本文系统介绍了计算机中数据的表示方法和运算规则。第一部分重点阐述了数制转换与编码表示,包括二进制编码的优势、不同进制间的转换方法,以及定点数的四种编码表示(原码、补码、反码和移码),特别分析了补码在整数表示中的优势。第二部分探讨了C语言中的整数类型转换规则,包括有/无符号数转换时的位解释变化和不同字长转换时的扩展/截断处理方法。文章还通过实例说明了补码表示下负数的大小判断方法,并强调计算机内部数据以补码形式存储的特点。这些基础知识为理解计算机数据存储和运算机制提供了重要参考。
2025-07-26 23:07:46
672
原创 【第一章-计算机系统概述】
《计算机系统学习笔记:从实践到理论的探索》 本文记录了作者在2025年重新学习计算机组成原理的过程。与大学时应试学习不同,这次学习带着实践经验和明确目标。笔记首先回顾了计算机硬件发展历程:从1946年第一台电子管计算机ENIAC开始,到晶体管时代的演变,重点关注了逻辑元件(计算机的"脑细胞")和主存储器(现代内存的前身)的技术发展。作者特别强调要"追根究底"的学习态度,通过代码实践与理论结合来深入理解计算机系统原理。笔记还附有大学成绩单作为学习历程的纪念。
2025-06-22 22:33:32
496
原创 【JVM 09-垃圾回收】
本文总结了垃圾回收的关键技术,包含五大要点:1)判断对象回收的引用计数法和可达性分析算法,以及强/软/弱/虚四种引用类型;2)标记清除、标记整理和复制三种基本回收算法;3)分代回收原理;4)吞吐量优先和响应时间优先两类回收器选择;5)垃圾回收调优方法。内容涵盖从对象回收判定到系统优化的完整知识体系,适合作为JVM内存管理的速查笔记。
2025-06-17 16:19:04
254
原创 【JVM 08-直接内存】
直接内存是JVM堆外内存,通过NIO引入,用于提升I/O性能(比传统IO快3倍)。它不受JVM内存管理,需手动释放,可能引发OOM。底层通过Unsafe类分配/释放,ByteBuffer使用Cleaner(虚引用)自动回收。禁用显式GC(-XX:+DisableExplicitGC)会影响直接内存回收,可通过System.gc()或反射调用Unsafe.freeMemory解决。直接内存减少了系统缓冲区到Java缓冲区的复制步骤,但分配成本较高。
2025-06-17 15:16:26
513
原创 【JVM 07-运行时常量池重要组成部分-StringTable】
如果引用出现大量的重复字符串,可以让字符串入池,来减少字符串对象个数,节约堆内存的使用。这里就是动态的调整jvm参数发现执行的时间变化是很大的。使用javap -v class文件看具体细节。这里就证明了确实StringTable是会发生。for循环10次,将480w都存入list中。这里能看到Constant poool;StringTable底层是哈希表。看报错也就知道了串池在堆空间。> 没有入池占用到80%左右。执行代码前的字符串常量池统计。这里是读48w个单词,
2025-06-17 13:19:59
727
原创 【JVM 06-JVM内存结构之-方法区】
方法区:在 JDK 1.8 及以后的版本中,方法区被元空间取代,使用本地内存。用于存储已被虚拟机加载的类信息、常量、静态变量等数据。虽然方法区被描述为堆的逻辑部分,但有 “非堆” 的别名。方法区可以选择不实现垃圾收集,内存不足时会抛出 OutOfMemoryError 异常。方法区存储了和类的结构相关的信息(运行时常量池、类的成员变量,方法数据,成员方法以及构造器方法的代码部分)方法区在虚拟机启动时被创建,尽管逻辑上是堆的一部分,但是具体的不同的JVM厂商去实现时不一定会遵从JVM的逻辑定义。线程共享。
2025-06-16 16:54:49
1310
原创 【JVM 05-JVM内存结构之-堆】
堆是 JVM 中最大的一块内存区域,被所有线程共享,在虚拟机启动时创建,用于存放对象实例。从内存回收角度,堆被划分为新生代和老年代,新生代又分为 Eden 区和两个 Survivor 区(From Survivor 和 To Survivor)。如果在堆中没有内存完成实例分配,并且堆也无法扩展时会抛出 OutOfMemoryError 异常小林面试网站关于堆的介绍通过ne关键字,创建对象都会使用堆内存。
2025-05-24 19:51:49
1423
原创 【JVM 04-JVM内存结构之-本地栈】
与 Java 虚拟机栈类似,主要为虚拟机使用到的 Native 方法服务,在 HotSpot 虚拟机中和 Java 虚拟机栈合二为一。本地方法执行时也会创建栈帧,同样可能出现 StackOverflowError 和 OutOfMemoryError 两种错误。简单地讲,一个就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。
2025-05-24 18:45:37
911
原创 【JVM 03-JVM内存结构之-虚拟机栈】
虚拟机栈:线程运行需要的内存空间。栈中放的是多个栈帧。栈帧:每个方法运行时需要的内存。(比如参数,局部变量,返回地址等。每个线程只能有1个活动栈帧,对应着当前正在执行的那个方法。Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的Java方法调用。是线程私有的,生命周期和线程一致。虚拟机栈中放的一个个栈帧。
2025-05-23 22:08:51
1366
原创 【JVM 02-JVM内存结构之-程序计数器】
Program Counter Register 程序计数器当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。JVM中的程序计数寄存器(Program Counter Register)中, Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。
2025-05-23 20:36:27
1213
原创 【JVM 01-引言入门篇】
定义:Java虚拟机(简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。【Java 二进制字节码运行环境】一次编写,到处运行自动内存管理,垃圾回收功能数组下标越界越界检查多态。
2025-05-23 20:08:45
688
原创 【438. 找到字符串中所有字母异位词】
思路就是我们要找和p相同的词,可以先排个序,每次取一个和p的size长度相同的窗口去滑动,符合就记录,不符合继续滑动。
2025-05-23 19:00:37
238
原创 【128. 最长连续序列】
先去重,防止有两个一样的数,然后找到序列中比当前数小的一个,如果存在则跳过,不存在则说明当前就是最小的,然后挨个询问剩下的看有多少重复的,每一个数都这样询问就行。
2025-05-23 08:56:47
218
原创 【234. 回文链表】
思路,找到中间结点,然后反转后半部分得到新链表,然后比较前半部分和后半部分每一个结点的值不同就不是回文链表,直到遍历结束。
2025-05-23 00:38:08
166
原创 【1004. 最大连续1的个数 III】
这题主要是要想到怎么让已经用掉的k重新还回去,这里如果k没有还回去就让left++是为了收缩到可以重新利用k,所以遇到left扫到的0说明用过了就还回去。
2025-05-22 22:51:29
244
原创 【76. 最小覆盖子串】
思路很简单,写起来就不是一会事了,看题解看了几个h,还是太菜了,这题得重点标记一下。滑动窗口的hard题目,思路先找到第一个覆盖的窗口,不断缩小左边界,找到更小的窗口并记录。
2025-05-21 22:24:10
246
原创 【LCR 006. 两数之和 II - 输入有序数组】
本文介绍了LeetCode算法练习中的LCR 006题“两数之和 II - 输入有序数组”的解题思路和Java实现。题目要求在一个非递减的数组中找到两个数,使它们的和等于目标值。解题思路采用双指针法,通过比较当前最大数与最小数的和与目标值的关系,逐步缩小搜索范围。如果和大于目标值,则舍去最大数;如果和小于目标值,则舍去最小数;直到找到符合条件的两个数。代码实现中,通过初始化两个指针分别指向数组的起始和末尾,通过循环不断调整指针位置,最终返回符合条件的两个数的索引。该方法的时间复杂度为O(n),空间复杂度为O
2025-05-21 12:51:57
143
原创 【Java核心技术卷Ⅰ-第11版学习-第3章-Java的基本程序设计结构】
本章节开始记录阅读Java核心技术卷Ⅰ的笔记记录。其中第一章节主要介绍了Java语言的特性,第二章节主要介绍了Java的环境如何安装,这里直接跳过进入第三章代码学习。
2025-04-21 21:11:01
336
MainActivity.java
2020-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅