![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机基础
文章平均质量分 86
黄智霖-blog
骨灰级技术爱好者
展开
-
换个思维理解B+树索引
假设有一张表:create table i_t( `num` int; `age` int)现在插入5条数据:insert into i_t value(3,18);insert into i_t value(4,19);insert into i_t value(1,20);insert into i_t value(2,25);insert into i_t value(5,12);现在我们要来设计数据库的存储模型,这五条数据最终需要存储在磁盘中,那么直接...原创 2021-03-28 13:30:30 · 5266 阅读 · 6 评论 -
磁盘I/O极简总结
从物理层面上看,传统的机械磁盘一般包含有一个或多个圆形盘片,每个盘片有正反两面。有一根转轴(主轴)从每个盘片的中心穿过,所有盘片都绕着转轴转动。每个盘片的盘面在逻辑上被划分成多个同心圆环,称为磁道,最外面的磁道称为0号磁道,磁道编号向圆心方向依次递增,数据就存储在磁道上。如果有多个盘片,那么每个盘片的盘面都会被划分为相同数量和规格的磁道,所有盘面中具有同一编号的磁道从空间上形成一个圆柱,称之为柱面。在磁道的基础上又进一步划分为多个弧段,每个弧段称为一个扇区。扇区是磁盘最小的物理存储单元,基本为512K原创 2021-03-26 02:16:10 · 4669 阅读 · 5 评论 -
网络协议极简总结
一、网络分层1.1OSI七层模型由国际标准化组织提出的一种概念模型。该模型将通信系统中的数据流划分为七个层,每个中间层为其上一层提供功能,其自身功能则由其下一层提供。OSI将计算机网络体系结构划分为以下七层,第1层在底部。 第七层 应用层:提供为应用软件而设计的接口,以设置与另一应用软件之间的通信。 第六层 表示层:把数据转换为能与接收者的系统格式兼容并适合传输的格式。 第五层 会话层:负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。对应主机进程,指...原创 2021-02-14 14:33:12 · 14289 阅读 · 8 评论 -
数据结构与算法(五):队列与应用
一、定义和栈一样,队列也是一种操作受限的线性表:它只允许在表的前端进行删除操作,在表的后端进行插入操作,按照这个特性,先插入的数据会被先移除,所以队列是一种先进先出(FIFO)的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头,而插入操作我们一般称为“入队”,删除操作称为“出队”。队列也是一种抽象的数据结构,可以用数组实现(顺序队列),也可以用链表实现(链式队列)。二、实现...原创 2019-07-21 02:28:15 · 5180 阅读 · 1 评论 -
Java 左移运算符注意事项
简单的我们知道左移一位表示乘以2,像1<<2=4。但是左移个几百位呢?1<<100=??一个int占32位,一个long才占64位,左移几百位真要乘这么多2的话,肯定是存不下的。比如以下代码: System.out.println("1 << 100 = " + (1 << 100)); System.out.println("1L &l...原创 2019-04-19 11:25:43 · 9733 阅读 · 2 评论 -
数据结构与算法(四):栈与应用
一、定义栈是一种操作受限的线性表。之所以说它操作受限,是由于其只能在一端插入和删除数据。这一端叫做“栈顶”,另外一端则为“栈底”。插入的操作我们通常称之为“PUSH”(入栈),删除的操作我们通常称之为“POP”(出栈)。所以它具有FILO(先进后出)的特性。如果栈满了,我们是不允许再继续入栈的,称这种情况为“栈上溢”,对应如果栈内为空,也是不允许继续出栈的,这种情况为“栈下溢”。这就像餐馆里的...原创 2019-04-26 10:40:29 · 8583 阅读 · 2 评论 -
Java并发编程(五):计算机基础-机器语言、高级语言和操作系统
一、机器语言和汇编语言在开始之前,我们先回想一下之前了解到的CPU(戳这里查看详情)。CPU靠指令来做各种运算,每个CPU都有一些自己能够直接识别的指令,我们称之为CPU的"指令集",或者叫做机器语言(机器码)。我们也提到过了,这些指令集其实都是一些0101的二进制组合,计算机会将它们转换为一系列高低电平的电信号,配合我们前面了解的继电器、门电路等完成对硬件的控制。而不同的CPU结构,即使...原创 2019-03-24 16:15:11 · 16218 阅读 · 0 评论 -
数据结构与算法(二):数组
注:我们先由简到难总结一下常用的数据结构,如简单数组、链表、散列表、队列、栈、树、图等等,最后再来研讨算法。一、线性表线性表是很基本的一种数据结构,就如字面意思一样,它把若干数据线性组合在一起:每个元素都最多只有前相邻和后相邻元素,也就是元素之间首尾相接。典型的线性表结构有数组、链表、栈、队列等。它有一些特征(摘自百度百科): 1.集合中必存在唯一的一个“第一元素”。...原创 2019-03-23 19:26:53 · 16785 阅读 · 0 评论 -
数据结构与算法(一):时间复杂度和空间复杂度
前言:俗话说程序=数据结构+算法,可见其重要性,但是切记不能死记硬背,最重要的是理解其背后原理和思想,最终达到训练我们的逻辑思维,提高编程技能,解决实际问题的目的。一、概述初学数据结构和算法的时候,大家都会接触到时间复杂度和空间复杂度这两个概念,但是在学校期间估计很多同学都没有去理解其意义,认为其如同鸡肋,只是应付考试,甚至工作时间不长的同学也可能会有类似感觉:代码都写不过来,还有时间去算...原创 2019-03-23 15:05:22 · 22514 阅读 · 2 评论 -
Java取余和取模
抛开高级语言的实现,取余运算和取模运算本身并不完全一致,区别在于对负整数进行取商时操作不同。虽然这样说,但是取余运算和取模运算的公式都一样。对于x和y两个整数(int),通过以下两个操作获取余数或模数: step1、求商:int z = x / y step2、求余数或模数:int result = x - y * z它们的差别在于,如果z的值...原创 2019-03-25 17:12:20 · 20285 阅读 · 3 评论 -
获取大于等于一个整数的最小2次幂算法(HashMap#tableSizeFor)
一、需求给定一个整数,返回大于等于该整数的最小2次幂(2的乘方)。例: 输入 输出 -1 1 1 1 3 4 9 16 15 16二、分析当遇到这个需求的时候,我们可能会很容易想到一个"笨"办法:...原创 2019-03-21 20:09:18 · 20957 阅读 · 4 评论 -
Java并发编程(二):计算机基础-CPU工作流程
前一部分我们大致介绍了CPU的制造工艺,这里主要简单介绍其结构和工作流程。一、简介我们知道,CPU是"焊"在主板上的,如果你把CPU翻转过来,可以发现其下面有很多针脚,而不同的针脚数可能对应不同的接口类型,CPU通过这些针脚和主板相连,通过它们发出和接受信息,就是控制我们通常所说的总线。主板连接了计算机上的其它部件,这样通过这种方式,就将它们连接成了一个整体。二、工作流程大体上,C...原创 2019-03-17 15:09:46 · 18900 阅读 · 1 评论 -
Java并发编程(一):计算机基础-CPU制造
这系列旨在总结java并发编程中的一些原理、工具、技巧和一些注意事项等,在开始Java的部分之前,会先花一些篇幅总结计算机的一些基础,别是CPU和内存部分,以帮助后面理解一些原理性的东西。一、简述计算机从上个世纪被发明后,由第一代的电子管计算机时代到现在的大规模集成电路,体积是越来越小,性能则是越来越强悍。我们都知道,计算机系统的硬件结构主要由几部分组成:控制器、运算器、存储器和输入、输出...原创 2019-03-17 00:30:11 · 9574 阅读 · 1 评论 -
数据结构与算法(三):链表
一、单向链表上一篇文章我们提到了,和数组一样,链表也属于线性表结构,但是链表是链式的,而数组是顺序的。它和数组最大的区别就是,它的元素存储并不依赖连续的内存空间,元素之间使用指针来实现逻辑顺序。如果创建一个长度为4的数组,其内存布局可能是下图这样,它要求元素的内存空间必须连续以实现常量阶的寻址操作,但是如果内存中没有这么大的整块儿空间,那么内存分配会失败。而如果是链表结构的话,每个...原创 2019-04-01 14:36:10 · 9214 阅读 · 1 评论 -
Java并发编程(四):计算机基础-门电路与加法器
一、门电路用以实现基本逻辑运算和复合逻辑运算的单元电路称为门电路。上一部分我们已经知道了逻辑门电路的概念(逻辑运算、继电器和门电路),并且引出了一个基础的门电路:与门事实上,常用的门电路有很多,除了我们之前介绍的与门,还有或门、非门、与非门、或非门等等,我们的目的是简单介绍门电路在计算机中的应用,现在不用探究的太深刻,如果感兴趣的同学可以自行查阅相关资料(推荐书籍<<编码的...原创 2019-03-17 20:20:21 · 10099 阅读 · 2 评论 -
二进制:基础、正负数表示、存储与运算
一、概述众所周知,计算机是由各种电子元器件组成的,其中半导体可以通过它的开关状态来传递和处理信息,所以我们可以用1和0分别表示开和关两种状态。逻辑电路通常只有接通和断开两种状态,所以我们以二进制来处理会非常方便。所谓二进制表示从0开始,“逢二进一”(N进制则逢N进一)。比如十进制的0、1、2的二进制表示为0、1 、10。二、进制转换网上有很多进制转换的方法,我这里就不多做阐述,只...原创 2018-09-11 11:35:53 · 54343 阅读 · 6 评论