程序猿内功心法
纵观各种博文,大多数都是介绍各种技术的使用方法,但是介绍一项技术的基本原理的时候,大多数的作者都对次闭口不提,即使有介绍技术原理的文章,多数也是晦涩难懂。本专栏力求用最简洁的语言,来向大家介绍各程序猿的内功心法,帮你突破瓶颈!
Roobtyan
这个作者很懒,什么都没留下…
展开
-
一分钟基础:计算机为什么使用二进制?
这是博主新想到的一个点子,旨在用最短的篇幅介绍知识,积少成多,希望朋友们能够有所收获。另外,最近事情属实太多,鸽了一个多月,感谢各位朋友没取关(我真不是在提醒各位取关-_-||),等忙完这段,希望自己也能做一个日更博主2333在冯诺依曼体系的计算机中,有一个十分重要的特性——指令和数据均以二进制的形式表示以及存储。要知道,这个特性是由冯诺依曼在1945年提出的,至今已经过去了七十多年。那么你有没有想过,为什么七十多年后的今天,我们使用的计算机仍基于二进制设计?1. 二进制运算规则简单我相信大.原创 2020-08-01 12:59:17 · 2247 阅读 · 0 评论 -
逻辑结构?存储结构?傻傻分不清……
对于数据结构与算法的学习,我相信不管是新手还是老手,都会对“逻辑结构、存储结构”产生很多的疑问。你可能觉得不就是两个简单的概念嘛,早就了然于胸了。Wait!先不要急着下定论,我们还是先来看一道题目。实践是检验真理的唯一标准嘛!(萌新略过)例题1选哪个呢?是不是很纠结?有答案了没?别急,我们再来看一道题。例题2如果这两道题你觉得very easy,那么接下来的内容,恭喜你,不必再看了;如果仍然觉得哪里有问题,以及不敢确定自己的答案,还是来跟着我过一遍知识吧,在阅读的过程中,思考上面原创 2020-06-28 21:45:53 · 5817 阅读 · 11 评论 -
干掉时间复杂度!
时间复杂度其实不难,真正理解了,很容易。下面这个视频希望能帮助你理解数据结构与算法中的时间复杂度问题! 【时间复杂度】听说你觉得时间复杂度很复杂?不妨听听我的理解 如果你觉视频有所帮助,可以关注微信公众号:最高权限比特流。深耕计算机基础知识分享,帮助计算机相关专业同学成长!...原创 2020-05-25 21:13:31 · 507 阅读 · 0 评论 -
一条指令的执行,居然只需要这5个步骤!
我是一条指令,我现在慌得一批我是一条指令,在被CPU处理5次后,即将被销毁释放,我现在慌得一批。毕竟,主存的空间是有限的,被执行完的我也失去了存在的价值。我十分羡慕那些能够被持久化到内存中的指令,因为等待他们的是永生。听前辈们说,人类在一生即将结束的时候,脑海中就会跑马灯般浮现自己这一生的场景,从出生的第一刻起,到幼年、青年、壮年、老年,直至此时。虽然我不是人类,但是前辈也说了,指令们在...原创 2020-04-15 11:38:17 · 3918 阅读 · 0 评论 -
我喜欢一个姑娘,她叫操作系统
我叫Java,生活在计算机世界的“编程语言”层。什么?你说我的名字有些怪?听起来像咖啡?好吧,我承认,也许是因为我长得太像咖啡了吧……其实你可能不知道,以前我叫Oak,我特别喜欢这个名字。可是后来我老爹高斯林发现,已经有人叫这个名字了,所以我被迫改名成Java。但我一点也不喜欢咖啡,它太苦了,即便加了糖,也难以遮掩它原本的味道。我喜欢的是糖水,因为它像爱情的味道。……那是在199...原创 2020-03-08 20:03:33 · 520 阅读 · 2 评论 -
一文详解路由算法
我们都知道,计算机网络的通用分层模型是五层分级模型(物理层、链路层、网络层、运输层、应用层)。每一层都承担着不同任务,你能顺利地和小姐姐在网上聊天,这五层缺一不可????。今天,我们要讲的便是网络层的重要内容。“咳咳,现在开始上课!”网络层的核心功能泛泛来讲,网络层在计算机网络中承担的主要功能是:将数据从一台主机移动到另外一台主机。详细一点说,网络层的主要功能是:路由和转发。不用说你也知道,...原创 2020-03-07 11:24:17 · 1269 阅读 · 0 评论 -
在下!互联网的祖宗!
《因特网的爸爸!》了解互联网风云的窗口、JAVA学习的一站式平台,欢迎关注微信公众号:最高权限比特流。互联网,知多少如果说起互联网,你一定会说:“哦,他改变了我们的生活”。没错,互联网确实在方方面面改变了我们的生活。但这样了解互联网,未免有些肤浅。我们常说,了解一个人,你应当知道他的过去和现在。而我们看待互联网时,也不应该只看到他的现在。尤其是计算机相关专业的同学,像《计算机网络》这...原创 2020-02-22 19:56:40 · 1955 阅读 · 3 评论 -
漫谈计算机组成原理(十一)中断系统
前言这篇文章是整个《漫谈计算机组成原理》系列文章的最后一篇——中断系统。实际上,在《I/O系统》那一篇文章中,我们已经介绍过了中断系统,我想你大概也知道了中断的流程及中断的两种方式,如果你还不知道,就去翻翻前一篇文章《漫谈计算机组成原理(七)I/O系统》吧! 在这篇文章中,我们将细化的讲述中断系统的相关内容,带你全面的了解中断系统的组成、中断系统的工作流程及中断系统的意义。那就开始吧!...原创 2018-09-02 19:51:45 · 1976 阅读 · 0 评论 -
漫谈计算机组成原理(十)浮点数运算
本文讲什么?浮点数和定点数一样,都是计算机中数据的存储形式。定点数我们可以理解成纯小数或者纯整数,但是实际上在计算机中参与运算的数字并非都是定点数。比如,有些数据过大,比如2^100^这样的数据,如果写成二进制的形式,寄存器肯定是无法放下的。于是就有了浮点数这种数据。 本文主要讲述浮点数的概念、浮点数的规格化,以及浮点数的各种运算。浮点数所谓浮点数,就是小数点的位置会改变的数字。...原创 2018-08-31 20:28:03 · 7100 阅读 · 1 评论 -
漫谈计算机组成原理(九·续)定点数的运算方法
本文讲什么?在上一篇文章中,我们主要讲述了定点数的加、减、乘运算,唯独没有讲解除法运算。原因有两个,一来上一篇文章的内容确实比较多,二来除法运算比乘法相对复杂。所以,本文将从除法的来历讲起,然后讲除法运算的几种方法。除法运算的形成我们来看这样一个例子:在8位寄存器中存储了00000111,4位寄存器中存储了0010,计算00000111/0010。回想一下,我们整数的除法是怎么做的?如...原创 2018-08-30 09:07:16 · 466 阅读 · 0 评论 -
漫谈计算机组成原理(九)定点数及定点数的运算
本文讲什么?在计算机中,小数点并没有用专门的器件去表示,而是按照一种约定的方式,统一存储在寄存器单元中的。算数逻辑运算单元(ALU)是CPU的组成部分,负责算数和逻辑的运算。那么,ALU究竟是如何工作的呢?这就是本文主要探讨的内容:什么是定点数?定点数的位移、加、减、乘、除运算是如何进行的?定点数是啥?从字面意思来理解,“定点数”就是“点”不动的数。那么究竟是什么“点”不动呢?没错,就是“小数点...原创 2018-08-26 20:27:16 · 1945 阅读 · 0 评论 -
漫谈计算机组成原理(八)原码、补码、反码
《漫谈计算机组成原理》这个系列的文章共分为两个部分。第一部分围绕着计算机主机的外围硬件,包括总线、存储器、输入输出系统等,这部分的内容已经完成,感兴趣的可以看看之前的文章。之前凡是涉及到CPU的内容,除了第一篇简要的介绍过CPU的工作意外,其他文章都是默认将CPU作为一个“黑盒子”,不涉及到CPU内部的逻辑、运算等问题。而从这篇文章开始,我们将重点讲述CPU的逻辑、运算、信息处理等的相关知识...原创 2018-08-24 17:19:09 · 682 阅读 · 0 评论 -
漫谈计算机组成原理(七)I/O系统
本文讲什么?这个系列的文章其实可以分成两个部分,计算机系统的其他硬件结构和CPU。 而我们今天要讲述的内容,就是其他硬件结构中的最后一个部分——I/O(输入输出)系统。 这篇文章主要讲述的就是I/O系统的组成以及I/O系统的工作原理,下面就正式开始I/O系统之旅吧!I/O设备的组成说起输入输出系统,其实我们一点都不陌生。从我们开始接触计算机到现在,鼠标、键盘、显示器等可能是我们...原创 2018-08-19 17:41:27 · 1448 阅读 · 2 评论 -
漫谈计算机组成原理(六)数据校验方法
本文讲什么?有一次,知乎上的同学问我:“为什么使用迅雷下载东西的时候,最后的百分之一总是那么慢呢?还有,为什么传输文件的时候,到最后的那一块也是那么慢呢?” 一看这位同学就是个善于发现之人,能成大事。 其实原因非常简单,对于迅雷来说,一般使用的是P2P(点对点)的传输方式,最后的百分之一时(也有可能是下载中的每个时刻),迅雷就把你作为了点对点中的一个点,让其他人从你这里下载资源,如果你下载...原创 2018-08-17 13:54:58 · 1329 阅读 · 0 评论 -
漫谈计算机组成原理(五)高速缓冲存储器
本文讲什么?老样子,在正式开始介绍“高速缓冲存储器”之前,我们先来了解一下其相关的信息。我相信,上面这张图你一定已经非常熟悉了,没错,这就是在本章绪论说的“存储器的层次结构”。 上一讲我们介绍了存储层次结构中的L4,即主存。继续向上看,你会看到L3、L2、L1都是高速缓冲存储器。那么究竟什么是高速缓冲存储器呢?那就要从“速度”这个关键词说起。 随着计算机硬件行业的不断进步,以因特尔...原创 2018-08-15 18:30:15 · 3748 阅读 · 3 评论 -
漫谈计算机组成原理(四)主存
本文讲什么?本文承接《漫谈计算机组成原理(三)存储器概论》。在上一篇文章中,主要介绍了存储器的层次结构。而本文主要讲述存储器层次结构中的主存部分。 主存,给我们最直观的感受就是贵。一个DDR4 8G的内存条就达到700元以上。 阅读完本文,你不但可以知道为啥内存条这么贵,还能对主存有一个基本的了解。概述我们先来看一下主存的基本组成。如上图所示,主存由MAR、译码器、驱动...原创 2018-08-09 13:44:16 · 1144 阅读 · 0 评论 -
漫谈计算机组成原理(三)存储器概论
前言在本系列文章的前两讲中,分别介绍了计算机组成原理这一系列文章的关注点——程序是如何跑起来的,以及系统总线的相关内容,具体可以看我的这两篇文章。在我的个人博客和CSDN上都已经发布了。在前面的这两章中,我们一直讲,CPU是通过存储器这么一个部件,来获取指令和各种数据的。 但是,从没有更加深入的去讲解这部分的内容。如果你有过装机的经验或者学过计算机的导论等等这些基础课程,肯定会知道,计算机有...原创 2018-07-01 20:55:06 · 835 阅读 · 1 评论 -
漫谈计算机组成原理(二)之系统总线
在这个系列文章的第一讲,漫谈计算机组成原理(一)之程序运行的过程 中说过,现代计算机是从冯若伊曼计算机发展起来的。其组成部分有存储器、运算器、控制器、输入设备、输出设备,在现代计算机中,人们将运算器与控制器封装起来成为CPU(中央处理单元)。计算机的各种部件想要进行数据交互,就必须让这些部件形成一定的连接关系,以便数据交互的进行。 连接的方式有两种,一种是各个部件之间使用不同的线相互连...原创 2018-06-05 20:27:06 · 2803 阅读 · 1 评论 -
漫谈计算机组成原理(一)之程序运行的过程
大家都知道,操作系统,计算机组成原理,数据结构与算法,计算机网络,被称作四大基础课,不但是计算机专业考研的四门专业课,而且是每一个程序员必须掌握的内容....原创 2018-05-17 21:51:11 · 10717 阅读 · 7 评论 -
HTTP协议(四):首部
前言作者说:上一节中介绍了HTTP报文中的状态码,这一节同样是对报文的补充,介绍的是HTTP首部字段。不过,你如果是第一次见到这个东西,肯定会特别疑惑,什么是HTTP首部? 《图解HTTP》中的描述是这样的:首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。 好吧,这样说其实我也不是很明白。那么我们来换一种理解方式。这一节,你将会非常愉快的了解到,究竟什么是HTTP首部,这货又是...原创 2018-05-12 16:56:39 · 482 阅读 · 0 评论 -
HTTP协议(三):状态码
前言作者说:在上一节的内容中,HTTP大佬介绍了他是怎么让服务器和用户达成信息交互的,详细的说明了连接建立过程中用到的一些基本的技术原理,包括请求报文响应报文、建立持久化连接用的Cookie技术等内容。这一节的内容非常有意思,就是那种叫做HTTP状态码的东西。没错,就是上一节中的HTTP报文中的一部分的状态码:200 OK。状态码的作用你应该已经知道了,其实我的最根本的作用就是连接服务...原创 2018-05-12 15:54:07 · 1509 阅读 · 0 评论 -
HTTP协议(二):作用
前言上一节我们简单介绍了一下TCP/IP协议族的基本情况,知道了四大层的职责,也了解到我们这一族的家族成员以及他们的能力。 无良作者把我这个主角变成了配角,让我很不爽,好在我打了作者一顿,没错,这次的主角是我了! 今天的自述,我要详细的和大家讲讲我的基本职责、请求报文、响应报文、能够达到一定目的的一些方法、持久连接问题以及状态管理。 好吧,这样讲我相信你可能会有点蒙,没关系,我会一个一个...原创 2018-04-29 11:18:54 · 754 阅读 · 0 评论 -
HTTP协议(一):概述
背景介绍但凡世界上牛逼的人物,都会有一个非常离奇的经历。比如说乞丐出身的皇帝朱元璋,出生时家中红光大作,映红了半边天;再比如说无良皇帝刘邦,简直不要太牛逼,说自己是老妈和一条白龙交合生出的自己,而老爹是目击证人(笑哭)。 而我,作为网络世界的扛把子,自然也不能在经历上矮人一头。 我,就是大名鼎鼎的HTTP,我的老爹是CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim Berne...原创 2018-04-24 20:43:07 · 662 阅读 · 1 评论 -
数据库连接池技术详解
前言今天来讲一下数据库连接池技术.其实这个名词也就是听起来高大上一点,实际上并不是很复杂的内容,相信在我的讲解下,并且自己实际的将代码写一遍之后,能够对这项技术有较为深刻的理解.废话不多说,开始讲解.数据库连接池技术概述所谓的数据库连接池技术,就是用来分配,管理,释放数据库连接的.你也许会问,好像我直接用JDBC也能够实现这些功能吧. 嗯,你说的没错,JDBC确实也可以,但是,你...原创 2018-04-21 20:52:10 · 2132 阅读 · 5 评论 -
问:为什么java是单继承,但却是多实现的呢?
在学习的过程中,我发现了如题的这个有趣的问题。 单继承不必解释,一个类只能有一个直接父类;但是对于接口的实现,一个类却能够实现多个接口。 为什么是这种情况呢?我们来举个简单的栗子看一下:class A{ public void print(){ System.out.println("AAAAAA"); }}class B{ pub...原创 2017-10-28 09:50:39 · 950 阅读 · 1 评论 -
位运算符&移位运算符
位运算符按位操作符用来操作整数基本数据类型中的单个比特(bit),就是二进制,按位操作符会对两个参数中对应的位(bit)执行布尔运算,最终生成一个结果。下面我们来看一下都有哪些位运算符。原创 2017-09-16 19:14:15 · 1609 阅读 · 0 评论