![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
的先生在读《计算机是怎样跑起来的》
的先生
这个作者很懒,什么都没留下…
展开
-
初衷
最近在复习计算机基础知识,在回顾操作系统教材的时候,总感觉很吃力,因为书里的概念显得十分抽象,比如cpu、内存、io,书里只是告诉你有这么一个东西,并没告诉你它有什么用,为什么可以这么用,这就好像你走在路上,突然有一只猫跑你面前碰瓷,你有没带脑子,哦不是小鱼干,这就很不知所措。总之这毫无头绪的状态直接影响了我对操作系统学习的热情,于是我决定对计算机进行一番了解,究其本源,才能更好的理解一个事务。...原创 2019-04-21 09:07:40 · 113 阅读 · 0 评论 -
程序中的变量是什么?(了解内存和变量的关系)
变量中所存储的数据是可以改变的。变量的实质是按照变量所存储数据的大小被分配到的一块内存空间。计算机所处理的数据都存储在了被称为内存的IC(Integrated Circuit,集成电路)中。在一般的个人计算机中,内存内部被分割成了若干个数据存储单元,每个单元可以存储8比特的数据(8比特 = 1字节)。为了区分各个单元,每个单元都被分配了一个编号,这个编号被称为“地址”或是“门牌号码”。如果一台...转载 2019-04-21 15:28:46 · 4982 阅读 · 0 评论 -
为什么需要数据结构
如果是完全不了解数据结构的程序员,说不定会通过一个挨一个地定义出若干个离散的变量来编写程序吧。要是程序可以按照预期运行,那么以这种方式编程倒也可以。但是若还要用这种方式实现对多个数据排序的算法,那就有些困难了。下面列出了一段程序,把三个数据分别存入a、b、c三个变量中,再将a、b、c中的数据的值按照降序(从大到小的顺序)排列。在排序时为了交换两个变量的值还需要用到tmp变量。程序使用if语句一...原创 2019-04-21 15:42:29 · 661 阅读 · 0 评论 -
数组(数据结构的基础)
上一节中的abc降序排序,我们除了可以定义三个变量外,还可以定义一个含有三个元素的数组,那代码实现就会发生一些变化:public static void main(String[] args) { int[] nums = new int[3]; nums[0] = 123; nums[1] = 124; nums[2] = 125; int temp = 0; //...转载 2019-04-21 16:03:53 · 582 阅读 · 0 评论 -
典型的数据结构的类型和概念
数组是一种直接利用内存物理结构(计算机的特性)的最基本的数据结构。只需使用for语句,就可以连续地处理数组中所存储的数据,实现各种各样的算法。但是在现实世界中也有一些数据结构,仅凭借数组是无法实现的,比如有的数据结构可以把数据堆积得像小山一样(栈),有的数据结构可以把数据排成一队(队列),有的数据结构可以任意地改变数据的排列顺序(链表),还有的数据结构可以把数据分为两路排列(二叉树),等等。为了...转载 2019-04-21 16:21:10 · 573 阅读 · 0 评论 -
了解栈(顺序栈)的实现方法
栈和队列的相似点在于,它们都可以把不能立刻处理的数据暂时存储起来;不同点在于,栈对所存储数据的存取方式是LIFO的,而队列对所存储数据的存取方式是FIFO的。同样是数组,处理手段不同,得到的数据结构也会不同,数组有时可以转化为栈,有时可以转化为队列。栈的实现(顺序栈)在实现栈这种数据结构时,首先要定义一个数组和一个变量。数组中所包含的元素个数就是栈的大小(栈中最多能存放多少个数据...原创 2019-04-21 17:37:34 · 280 阅读 · 0 评论 -
了解队列(顺序队列)的实现方法
续上节,我们来说说顺序队列的实现,队列对所存储数据的存取方式是FIFO的。为了实现队列这种数据结构,以下元素是必不可少的:1.一个任意大小的数组;2.一个用于存放排在队头的数据对应的索引的变量;3.一个用于存放排在队尾的数据对应的索引的变量;4.一对儿函数,分别用于把数据存入到队列中和从队列中把数据取出来。主要需要实现的方法有public interface IQueue...原创 2019-04-22 10:24:55 · 670 阅读 · 0 评论 -
了解循环队列的实现
上一节中,我们发现顺序队列的多次入队和出队操作会造成有存储空间却不能进入队列的"假溢出"现象,之所以发生这种情况,是因为顺序队列的存储单元没有重复存储机制,解决方法是如果数据一直存放到了数组的末尾,那么下一个存储位置就折回到数组的开头。这样就相当于数组的末尾就和它的开头连接上了,于是虽然数组的物理结构是“直线”,但是其逻辑结构已经变成“圆环”了。来看循环队列的代码实现public clas...原创 2019-04-22 11:23:42 · 133 阅读 · 0 评论 -
了解链表和二叉树的结构
链表是一种类似数组的数据结构,这个“数组”中的每个元素和另一个元素都好像是手拉着手一样。public class LinkNode { public Object data; //存放结点数据 public LinkNode next; //指向下一个结点,即成员的手}为什么说链表很方便呢?请思考一下不使用链表且还要对大量的数据进行排序时应该怎么处理。答案是那就必须要改变元素在...原创 2019-04-24 09:14:52 · 403 阅读 · 0 评论 -
类和对象的区别
在面向对象编程中,类和对象被看作是不同的概念而予以区别对待。类是对象的定义,而对象是类的实例(Instance)。经常有教材这样说明二者之间的关系:类是做饼干的模具,而用这个模具做出来的饼干就是对象。定义了一个类。但是我们还无法直接使用类所持有的成员,要想使用就必须在内存上生成该类的副本,这个副本就是对象.先要创建一个个的对象然后才能使用类中定义的成员,对于面向对象语言的初学者而言,他...转载 2019-04-24 09:25:19 · 703 阅读 · 0 评论 -
石头剪刀布Java实现
java实现石头剪刀布过程原创 2019-04-21 11:12:28 · 8995 阅读 · 0 评论 -
算法(Algorithm)
算法就是“把解决问题的步骤无一遗漏地用文字或图表示出来”。在解决问题的步骤中,有了与直觉相关的因素,就不是算法了。既然不是算法,也就不能用程序表示了。...转载 2019-04-21 11:12:19 · 315 阅读 · 0 评论 -
问题记录(持续更新)
硬件和软件的区别硬件(Hardware),比如计算机主机、显示器、键盘等。软件(Software),是计算机所执行的程序,即指令和数据。软件本身是看不见的。存储字符串“中国”需要几个字节?存储汉字时,字符编码不同,汉字所占用的字节数也就不同。在GBK字符编码下,一个汉字占用2个字节。而在UTF-8字符编码下,一个汉字占用3个字节。什么是编码(Code)?计算机内部会把所有的...转载 2019-04-21 09:20:54 · 126 阅读 · 0 评论 -
计算机三大原则
现在的计算机看起来好像是种高度复杂的机器,可是其基本的构造却简单得令人惊讶。从大约50年前的第一代计算机到现在,计算机并没有发生什么改变。在认识计算机时,需要把握的最基础的要点只有三个,我们就将这三个要点称为“计算机的三大原则”吧。无论是多么高深、多么难懂的最新技术,都可以对照着这三大原则来解释说明。只要了解了计算机的三大原则,就会感到眼前豁然开朗了,计算机也比以往更加贴近自己了,就连新技术接...转载 2019-04-21 09:45:11 · 753 阅读 · 0 评论 -
计算机硬件的组成要素
不清楚cpu(处理器)、内存、I/O的小伙伴们,重点来了!计算机硬件的主要组成要素如下图:CPU是计算机的大脑,在其内部可对数据执行运算并控制内存和I/O。内存用于存储指令和数据。I/O负责把键盘、鼠标、显示器等周边设备和主机连接在一起,实现数据的输入与输出。List item...转载 2019-04-21 09:56:46 · 1086 阅读 · 0 评论 -
比特、字节、K
比特(bit)比特,计算机专业术语,是信息量单位,由英文BIT音译而来。BIT为Binary digit(二进制数)位的缩写。二进制数的一位所包含的信息就是一比特,如二进制数0100就是4比特。字节(byte)在二进制数系统中,每个0或1就是一个位(bit),位是数据存储的最小单位。其中8bit就称为一个字节(Byte)。计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算...原创 2019-04-21 10:04:38 · 433 阅读 · 0 评论 -
什么是寄存器
寄存器是位于CPU和I/O的数据存储器原创 2019-04-21 10:09:40 · 6115 阅读 · 0 评论 -
CPU的寄存器结构
计算机的硬件有三个基本要素,CPU、内存和I/O。CPU负责解释、执行程序,从内存或I/O输入数据,在内部进行运算,再把运算结果输出到内存或I/O。内存中存放着程序,程序是指令和数据的集合。I/O中临时存放着用于与周边设备进行输入输出的数据。既然数据的运算是在CPU中进行的,那么在CPU内部就应该有存储数据的地方。这种存储数据的地方叫作“寄存器”。虽然也叫寄存器,但是与I/O的寄存器不同,CP...转载 2019-04-21 10:45:22 · 1352 阅读 · 0 评论 -
程序
程序的流程总共有三种。除了顺序执行以外,还有“条件分支”和“循环”。因为只有这三种,记忆起来还是很轻松的吧。根据比较操作的结果,跳转到之前处理过的步骤就是循环;跳转到之后尚未处理的步骤就是条件分支顺序执行是按照指令记录在内存中的先后顺序依次执行的一种流程。而循环则是在程序的特定范围内反复执行若干次的一种流程。条件分支是根据若干个条件的成立与否,在程序的流程中产生若干个分支的一种流程。无论规模...转载 2019-04-21 10:51:24 · 106 阅读 · 0 评论 -
求最大公约数(辗转相除法)、最小公倍数
辗转相除法(又称欧几里得算法)就是一个机械地求解最大公约数问题的算法。在辗转相除法中分为使用除法运算和使用减法运算两种方法。使用减法运算简单易懂,步骤如图5.2所示。用两个数中较大的数减去较小的数(步骤),反复进行上述步骤,直到两个数的值相等(步骤的终止)。如果最终这两个数相同,那么这个数就是最大公约数。代码实现(Java)public static int getMax(int a, ...原创 2019-04-21 11:07:37 · 740 阅读 · 0 评论 -
鸡兔同笼
题目如下:鸡和兔子共计10只,把它们的脚加起来共计32只,问鸡和兔子分别有多少只?设有x只鸡,y只兔子,那么就可以列出如下的联立方程组。代码实现(java)利用嵌套for循环public static void main(String[] args) { for(int i = 0; i <= 10; i++) { if(2 * i + 4 * (10 - i) ==...原创 2019-04-21 11:11:22 · 229 阅读 · 0 评论 -
面对对象编程(OOP, Object Oriented Programming)及其三个基本特性
一千个读者,一千个哈姆雷特。对于面对对象编程,书上都会告诉我们它有三个基本特性,封装,继承,多态,但谈起对这三点的见解,又是仁者见仁智者见智,感觉还是得多去编程中体验把 。面向对象编程(OOP, Object Oriented Programming)是一种编写程序的方法,旨在提升开发大型程序的效率,使程序易于维护 。面向对象编程是一种基于以下思路的程序设计方法:将关注点置于对象(...原创 2019-04-24 09:50:30 · 300 阅读 · 0 评论