
随笔-软件技术
文章平均质量分 71
Pandaer技术圈
一个努力专研技术,学习技术的萌新一枚
展开
-
随笔 文件系统基本原理
文件系统通过将磁盘分为多个块,来进行管理,一个文件块一般4K的大小,而FCB中的索引表就记录这有哪些文件块。因为FCB的大小是固定的,所以索引表的大小也是固定的,这就导致了一个文件存在最大容量,一般而言,FCB中的索引表有15个槽位,前12个位置直接存储数据块的地址,第13的位置存储的是一级索引的位置,即一级索引表,第14的位置存储二级索引的位置,第15的位置存储三级索引的位置,而一个索引块可以存储256个数据块,那么一个FCB最多可以使用数据块:(12 + 256 + 256。学而时习之,不亦说乎!原创 2024-10-01 16:45:23 · 341 阅读 · 0 评论 -
随笔 漫游互联网
温故而知新,可以为师矣。互联网我们可以想象成一个立体的网状结构,由一个一个的小网络组成的网状结构,在一个一个小网络中通过一台一台机器组成,经过几十年的发展终于有了今天这个样子。而这个一定的规则就是我们熟知的TCP/IP协议族,虽然OSI提出的是七层网络模型,但是在实际生活中使用的是四层网络模型,从上到下分别是应用层,传输层,网络层,数据链路层。既然传输层需要将数据从一个数据中的一个程序送到另外一个主机中的另外一个程序,就需要有东西可以标识这个程序,我们知道IP地址标识在网络中的一个主机,那么。原创 2024-09-30 13:32:56 · 410 阅读 · 0 评论 -
随笔 JVM本质
当时的操作系统至少存在两个阵营,一个是Windows,一个是Linux,由于系统不同,提供的系统库API也不一样,这就导致在写C语言代码的时候,尤其使用到系统库的时候都不得不做兼容处理。那么它是如何做到的呢?文件加载进JVM进程中的元数据区,然后创建一个主线程,将这个字节码文件的main方法的地址赋值给这个线程的PC寄存器,然后这个主线程将PC寄存器的值交给执行引擎,执行引擎开始执行字节码指令,比如上面的代码,一开始就执行main方法,所以就会在栈空间上开辟一块新的栈帧,存放一些局部变量,这里便是字符串。原创 2024-09-25 09:34:26 · 947 阅读 · 0 评论 -
随笔 数据结构演绎
到此我就将基础的数据结构给串联了起来,那么我们回到标题,为什么Hash表的查找时间复杂度为O(1),这是因为Hash表利用了数组的随机访问,大致的过程是这样的,Hash表中的每个元素由两个部分组成,一个是Key,一个是Value,Hash表通过一个函数(数学意义上),可以将任意的输入转换为一个值,这被称为Hash函数,然后利用这个值 与 数组的长度求余,得到的值即为下标,然后在对应的下标处存储KV键值对。为此特意将数据结构分为逻辑结构和物理结构,逻辑结构就是我们常说的那些数据结构,比如树,堆等等。原创 2024-09-24 10:49:32 · 517 阅读 · 0 评论 -
随笔 程序运行的基本原理
在堆空间中,数据的生命周期是可以跨函数的,一般用于共享的场景,关于堆内存的管理,不同的语言有不同的管理策略,比如,C语言对堆内存的管理完全交给程序员自己管理,Java对堆内存的管理是交由垃圾回收器管理。而线程做的事情是复用父进程的代码空间,堆空间,创建一个额外的栈空间,以及供操作系统管理的线程相关的数据结构 -- TCB。运行态就是进程正在使用CPU执行指令,阻塞态就是因为需要等待某些资源,可能是IO,可能是锁,而暂时不被操作系统调度,一旦等待的资源就绪,就会进入就绪态,这个时候就可以被操作系统调度。原创 2024-09-23 06:57:03 · 519 阅读 · 0 评论 -
随笔 软件开发的第一性原理
没有C语言好用的数据类型,分支结构,循环结构,不需要关心底层的指令集架构。于是我们就可以回答开头的问题,C语言为什么会出现,主要是因为汇编语言与底层的指令集架构强关联,而且编写程序时,存在太多冗余,而且容易出错,于是通过抽象和总结一些特点,就创建了C语言,C语言就实现了这些特点,比如与底层的指令集架构无关,总结出的分支结构,与循环结构并用语法元素实现。这里面的核心在于推导和验证,所谓的推导,我们可以这样理解基于你现有的技术知识去猜它的实现,没错就是猜,然后通过搜集资料,去验证你的猜想。原创 2024-09-22 06:44:15 · 369 阅读 · 0 评论