关于计算机基础:软考架构师计算机基础1-硬件

计算机组成根底计算机的根本硬件组成: 运算器、控制器、存储器、输入输出设备 基础知识,不再赘述cpu: 运算器和控制器 运算器: 算术运算,逻辑运算控制器: 程序控制: 通过执行指令来控制程序的执行程序操作控制: 一条指令性能的实现须要若干信号来配合实现,cpu产生的每条指令的操作信号并将操作信号送往对应的不加,管制相应的不见按指令要求进行操作工夫管制: 指令执行过程中操作信号呈现的工夫持续时间及呈现的工夫程序的管制根底概念与组成运算器: 有算数逻辑单元(ALU) 累加寄存器(AC)(存储 运算后果 与源操作数) 数据缓冲寄存器DR (临时寄存内存指令或者数据) 条件状态寄存器psw 保留指令运行后果与条件码内容)控制器: 指令寄存器IR 程序计数器PC(寄存指令执行地址) 地址寄存器AR(保留以后CPU所拜访的内存地址)、指令译码器ID (剖析指令操作码)cpu预计指令周期的不同姐u但来辨别二进制的指令和数据, 在指令周期的不同阶段,指令会命令cpu别离去取指令或者数据校验码码距: 在两个编码中从A码到b码所须要扭转的位数奇偶校验:码距2,减少一位校验码, 奇偶校验就是在数据尾怎加一位,确保数据中1的数量为奇数/偶数个。crc 编码 crc编码只能检错,不能纠错。 指令与存储系统指令的组成:一条指令由操作码和操作数两局部组成,后面是操作码,前面是地址码, 操作码决定要实现的操作,操作数决定加入运算的数据及其所在的单元地址。地址码数量不惟一 指令执行过程 : 取指令剖析指令执行指令指令的寻址形式执行以后指令后,下一指令地位 程序寻址跳跃寻址(这个应该联合汇编语言了解,能够简略了解为goto)由以后指令指定操作数寻址形式(理论利用?) 立刻寻址间接寻址间接寻址寄存器寻址基址寻址变址寻址指令系统cisc 简单指令系统 兼容性强,指令多,长度可变 , 微程序控制risc 精简指令零碎 指令少 硬逻辑 指令流水线原理: 将指令分成不同段,每段由不同的局部去解决,因而产生能够叠加的成果,所有的部件去解决指令的不同段 流水线技术是精简指令集独享的risc 中的流水线技术: 超流水线技术(工夫换空间超标量 空间换工夫超长指令字流水线工夫计算 流水线周期: 指令分成不同的执行段,其中执行工夫最长的段成为流水线周期流水线执行工夫: 1条指令总执行工夫+ (总指令条数 - 1 * 流水线周期)流水线吞吐率: 指令条数/执行工夫减速比: 不应用流水线 / 流水线执行工夫 存储系统计算机采纳分级存储体系次要是为了解决存储容量、老本和岁都之间的矛盾问题 两级存储 cache 主存 主存 辅存 局部性原理:总的来说,在cpu运行时,所拜访的数据会趋向于一个较小的部分空间地址内,包含上面两个方面 工夫局部性原理; 如果一个数据正在被拜访,在近期可能会被再次拜访空间局部性原理: 最近的未来会用到数据的地址和当初正在拜访的数据地址很可能时靠近的。高速缓存cache : 以后获取的程序和数据, 间接与cpu交互,位于cpu和主存之间, ...

September 7, 2023 · 1 min · jiezi

关于计算机基础:GBK-UTF8

GBK全称《汉字内码扩大标准》(即"国标"+"扩大"汉语拼音的首字母)英文名称 Chinese Internal Code SpecificationGBK是在GB2312-80规范根底上的内码扩大标准,应用了双字节编码方案,其编码范畴从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,齐全兼容GB2312-80规范,反对国际标准ISO/IEC10646-1和国家标准GB13000-1中的全副中日韩汉字,并蕴含了BIG5编码中的所有汉字 UTF-8全称 Unicode Transformation Format(8位元)是针对Unicode的一种可变长度字符编码,它能够用来示意Unicode规范中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来解决ASCII字符的软件毋庸或只进行少部分批改后,便可持续应用 区别比照GBKUTF-8蕴含全副中文字符蕴含全世界所有国家须要用到的字符每个字符占用2个字节英文应用1字节,中文应用24位3字节国家编码国内编码总的来说,UTF-8与GBK是基于科技倒退衍生进去的,在网络倒退初期流量低廉,中文网站应用GBK来传输,相当于UTF-8是更节俭的,但以目前倒退来看,国际化趋势不可逆转,UTF-8才是通用性的首选BOMbyte-order mark (即字节序标记),次要针对unicode编码格式文件,会在文件头部插入几个字节作为标识头,UTF-8 的 BOM 是 EF BB BF UTF-8文件分为"有BOM"和"无BOM"两种,如遇问题,能够借助辅助软件(如UltraEdit,WinHex等)查看文件标识头(BOM),以便确认其编码格局,若是本人的工作环境,只会用到UTF-8,或其它因素制约,应用无BOM格局也未尝不可,否则为了更好的兼容性,容错性,举荐应用有BOM的UTF-8 参考资料:https://baike.baidu.com/item/UTF-8?fromModule=lemma_search-boxhttps://baike.baidu.com/item/GBK%E5%AD%97%E5%BA%93/3910360?fr...http://www.360doc.com/content/21/1031/13/75593589_1002157752....

March 7, 2023 · 1 min · jiezi

关于计算机基础:2022新版计算机基础更适合程序员的编程必备基础知识内附ppt上山的阿科姿

download:2022新版计算机根底-更适宜程序员的编程必备基础知识比大学课程学习体验更好/更贴近理论工作内容计算机根底方面的常识。对于非科班出身的同学来讲,始终是心中的痛,而对于科班出身的同学,在工作之后,也意识到本身所学常识的有余。讲师联合本人多年工作教训,总结出了这套更适宜程序员的计算机基础知识课程,带你补足编程必备基础知识。 适宜人群科班出身但基础薄弱或者忘记的同学非科班出身有编程根底想零碎补足计算机根底的同学 技术储备具备肯定的自学能力把握简略的编程概念 国际化示例程序如果您查看国际化的源代码,您会留神到硬编码的英文音讯已被删除。因为音讯不再是硬编码的,而且语言代码是在运行时指定的,所以同一个可执行文件能够在世界范畴内散发。本地化不须要从新编译。这个打算曾经国际化了。 您可能想晓得音讯文本产生了什么变动,或者语言和国家代码的含意。别放心,在示例程序一步步国际化的过程中,你会学到这些概念。 1。创立属性文件属性存储无关程序或环境特色的信息。该文件是纯文本格式的。您简直能够应用任何文本编辑器来创立文件。 在示例中,属性文件存储了要显示的音讯的可翻译文本。在程序国际化之前,该文本的英文版本是硬编码的,并在System.out.println中申明。默认属性文件名为MessagesBundle.properties,蕴含以下行: 问候=你好辞别=再见询问=你好吗?当初,音讯位于属性文件中,它们能够被翻译成各种语言。不须要批改源代码。法语翻译人员创立了一个名为Messages Bundle fr fr . properties的名称,其中蕴含以下几行: 问候=你好。再见。询问=评论allez-vous?请留神,等号左边的值已被转换,但右边的键没有扭转。这些键不能被扭转,因为当程序取得翻译的文本时它们将被援用。 属性的名称很重要。例如,音讯bundle fr fr.properties文件蕴含FR语言代码和FR国家代码。创立广告代码时也会用到这些代码区域设置对象。 2。定义区域的Locale对象标识特定的语言和国家。以下语句定义了语言为英语、国家为美国的区域设置: aLocale =新的区域设置(" en "," US ");下一个示例创立一个对象,其中区域设置在加拿大和法国应用法语: caLocale =新的区域设置(" fr "," CA ");frLocale =新的区域设置(" fr "," FR ");该打算是灵便的。该程序不应用硬编码的语言和国家代码,而是在运行时从命令行获取它们: String language = new String(args[0]);String country = new String(args[1]);currentLocale =新的区域设置(语言,国家);Locale对象只是一个标识符。定义一个区域设置,而后将其传递给执行有用工作的其余对象,例如格式化日期和数字。这些对象是区域敏感的,因为它们的行为是基于区域的。ResourceBundle是区域敏感对象的一个例子。 3。创立ResourceBundleResourceBundle对象蕴含特定于区域设置的对象。您应用ResourceBundle对象来隔离敏感数据,例如可翻译的文本。在示例程序中,ResourceBundle由蕴含咱们想要显示的音讯文本的属性文件反对。 的ResourceBundle创立如下: messages = resource bundle . get bundle(" messages bundle ",current locale);参数被传递给getBundle办法,以确定将拜访哪个属性文件。第一个参数MessagesBundle指的是这组属性文件: MessagesBundle_en_US .属性音讯绑定_fr_FR.propertiesMessagesBundle_de_DE .属性的区域设置是getBundle,它指定抉择了哪个MessagesBundle文件。什么时候。。。创立的区域设置时,语言代码和国家代码已传递给其构造函数。请留神,随后的语言和国家代码音讯是在属性文件的名称中。 当初你要做的就是从ResourceBundle开始。 4。从ResourceBundle获取文本该文件蕴含键值对。包含程序将显示的翻译文本。能够从ResourceBundle和getString办法开始。例如,要检索由greetings键标识的音讯,能够如下调用getString: string msg 1 = messages . getstring(" greetings ");示例程序应用关键字greetings,因为它反映了音讯的内容,但它可能曾经应用了另一个字符串,如s1或msg1。请记住,这个键是硬编码在程序中的,它必须存在于属性文件中。如果您的翻译器不小心批改了属性文件中的键,getString将找不到该音讯。 ...

October 15, 2022 · 1 min · jiezi

关于计算机基础:深入理解计算机系统汇编的流程控制

后面咱们所讲的所有指令,代码执行程序都是一条接着一条程序的执行。然而实际上在编码过程中,会有某些构造,比方条件语句(if-else),循环语句(for,do-while)和分支语句(switch)等等,都要求有条件的执行,依据数据测试的后果来决定操作执行的程序。 在机器代码中,提供两种根本的低级机制来实现有条件的行为:测试数据值,而后依据测试的后果来扭转控制流或者数据流。 那么本篇文章咱们就来具体介绍在汇编语言中的流程管制。 1、条件码 后面咱们在 操作数批示符和数据传送指令 中介绍了整数寄存器,在 32 位 CPU 中蕴含一组 8 个存储 32 位值的寄存器,即整数寄存器。它能够存储一些地址或者整数的数据,有的用来记录某些重要的程序状态,有的则用来保留长期数据。 而这里咱们要介绍的是条件码(condition code)寄存器。它与整数寄存器不同,它是由单个位组成的寄存器,也就是它们当中的值只能为 0 或者 1。当有算术与逻辑操作产生时,这些条件码寄存器当中的值会相应的发生变化。 也就是说能够检测这些寄存器来执行条件分支指令。罕用的条件码如下: ①、CF:进位标记寄存器。最近的操作是最高位产生了进位。它能够记录无符号操作的溢出,当溢出时会被设为 1。 ②、ZF:零标记寄存器,最近的操作得出的后果为 0。当计算结果为 0 时将会被设为 1。 ③、SF:符号标记寄存器,最近的操作失去的后果为正数。当计算结果为正数时会被设为 1。 ④、OF:溢出标记寄存器,最近的操作导致一个补码溢出(正溢出或负溢出)。当计算结果导致了补码溢出时,会被设为 1。 从下面能够看出,CF 和 OF 能够判断有符号和补码的溢出,ZF 判断后果是否为 0,SF 判断后果的符号。这是底层机器的设定,而咱们所编程用的高级语言(比方 C,Java)就是靠这四个寄存器,演化出各种各样的流程管制。 2、设置条件码 通常状况下,条件码寄存器的值无奈被动被扭转,它们大多时候是被动扭转,这算是条件码寄存器的特色。这其实了解起来并不艰难,因为条件码寄存器是 1 位的,而咱们的数据格式最低为 b,也就是 8 位,因而你无奈应用任何数据传送指令去传送一个单个位的值。 简直所有的算术与逻辑指令都会扭转条件码寄存器的值,不过扭转的前提是触发了条件码寄存器的条件。比方对于 subl % edx,% eax 这个减法指令,假如 % edx 和 % eax 寄存器的值都为 0x10,则两者相减的后果为 0,此时 ZF 寄存器将会被主动设为 1。对于其它的指令运算,都是相似的,会依据后果的不同而设置不同的条件码寄存器。 ...

September 3, 2022 · 3 min · jiezi

关于计算机基础:补码加减法运算和溢出判断

在二进制计算中,如果计算结果超过计算机的位数,就会产生溢出。 设机器字长为 8 位(包含一位符号位),A = 15,B = -24,C = 124,求 [A+B]补、[A-B]补、[A+C]补、[B-C]补 将十进制数转换成二进制机器数 [A]原 = 00001111,[A]补 = 00001111[B]原 = 10011000,[B]补 = 11101000[C]原 = 01111100,[C]补 = 01111100加法和减法运算加法运算,能够间接把两个有符号数的补码进行相加,计算第一个式子:[A+B]补 = [A]补 + [B]补 = 00001111 + 11101000 = 11110111,失去 [A+B]补 = 11110111 转换成真值为 -9,和用十进制计算 A+B 的后果一样。 减法运算,是先把它变成加法运算,而后用补码的进行加法运算,计算第二个式子:[A-B]补 = [A]补 + [-B]补 = 00001111 + 00011000 = 00100111,失去 [A-B]补 = 00100111 转换成真值为 39,和用十进制计算 A-B 的后果是一样的。 加法运算和减法运算在计算机外部都是加法运算,只是对于减法运算来说,多了一个求相反数的电路:B -> -B 溢出判断两个机器数,进行了加减运算后,失去的后果和十进制数加减运算后的后果不统一,这就造成了溢出 [A+C]补 = [A]补 + [C]补 = 00001111 + 01111100 = 10001011,真值是 -11,十进制 A+C 真值是 139[B-C]补 = [B]补 + [-C]补 = 11101000 + 10000100 = 01101100,真值是 108,十进制 B-C 真值是 -148溢出的几种判断形式: ...

August 7, 2022 · 1 min · jiezi

关于计算机基础:原码反码补码移码

原码、反码、补码、移码存在于有符号数中,有符号数的最高位是符号位,0 示意负数,1 示意正数,这些码统称为机器数。 在计算机中,一个二进制数由符号位和数值位组成,在 8 位计算机中,因为最高位是符号位,数值位最多也就 7 位。 ps:上面介绍的各种码,如没有非凡阐明,都是 8 位原码原码是计算机用于示意的十进制数的形式。 在理论的生存中,示意负数是没有符号的,然而在计算机中,它不会脑补符号,所以为了不便探讨,咱们把有符号的十进制数叫做真值,比方:+10、-10。 十进制数对应的原码: 定点整数:数值位高位补 0 +10 的原码:00001100-10 的原码:10001100定点小数:数值位低位补 0 +0.75 的原码:0.1100000-0.75 的原码:1.1100000十进制数中 +0 和 -0 都是雷同的,但在计算机中要辨别符号位,所以 0 的原码有两种示意形式: +0:00000000-0:10000000原码的示意范畴: 定点整数:-(2^(n-1) - 1) ~ 2^(n-1) - 1 -(2^7 - 1) ~ 2^7 - 1-127 ~ 127定点小数:-(1 - 2^-(n-1)) ~ 1 - 2^-(n-1) -(1 - 2^-7) ~ 1 - 2^-7-0.9921875 ~ 0.9921875反码反码是原码转补码的一个中间状态,理论没啥用 原码符号位是 0,反码等于原码原码符号位是 1,数值位全副取反十进制数对应的反码: 定点整数: +10 的原码:00001100,反码:00001100-10 的原码:10001100,反码:11110011定点小数: +0.75 的原码:0.1100000,反码:0.1100000-0.75 的原码:1.1100000,反码:1.0011111反码的示意范畴和原码一样: ...

July 28, 2022 · 2 min · jiezi

关于计算机基础:计算机基础

一、浅谈编码Base64、Hex、UTF-8、Unicode计算机只认得二进制,0和1,所以咱们当初看到的字都是通过二进制数据编码后的。8比特一个字节,如01011100就是一个字节。 Hex:联合下面,进制文件通常不易于人看,因为人会看眼花,所以必须将不可见的简单的字节数组数据转换为可显示的字符串数据,16进制是最好的,刚好2字符示意一个字节。Hex编码就是16进制编码。hex也称为base16,意思是应用16个可见字符来示意一个二进制数组,编码后数据大小将翻倍,因为1个字符须要用2个可见字符来示意。 Base64:多种编码沟通的桥梁base64,意思是应用64个可见字符来示意一个二进制数组,编码后数据大小变成原来的4/3,也即3个字符用4个可见字符来示意。反对外国语言的编码零碎,关上另一个编码零碎编码的文本,会呈现什么状况呢?这就是乱码了… 更为严重的是,随着互联网的呈现,各个国家的电脑都须要通信,而通信的一种形式就是应用URL地址。这种编码模式长度也短,效率也高。这样一来,数据通信的时候,不论来的是什么语言,都转化成Base64后再发送和接管。 ASCII码:要让可读性更强Hex编码尽管好,但有个问题:从计算机上关上个文件,满眼的十六进制数,很头大啊… 十六进制还是不太好示意文本。能不能创立一种办法,能示意键盘打进去的全副英文字符、符号呢?键盘打不进去的字符,比方什么回车啦,占位啦,用非凡的符号示意。 UTF-8:解决除英语之外其余语言Unicode 当然是一本很厚的字典,记录着世界上所有字符对应的一个数字。UTF-8 是目前互联网上应用最宽泛的一种 Unicode 编码方式。这个编码又称为万国码,顾名思义,就是反对包含中文简体、中文繁体、日语、韩语等各种语言的编码

June 7, 2022 · 1 min · jiezi

关于计算机基础:计算机网络笔记1

写在后面上面的内容全副源于小林coding在联合本人的思考,挑了难点整顿一下 端口 当设施作为接管方时,传输层则要负责把数据包传给利用,然而一台设施上可能会有很多利用在接管或者传输数据,因而须要用一个编号将利用辨别开来,这个编号就是端口。 mtu&mss 寻址和路由 IP 协定的寻址作用是通知咱们去往下一个目的地该朝哪个方向走,路由则是依据「下一个目的地」抉择门路。寻址更像在导航,路由更像在操作方向盘**。 tcp/ip网络有哪几层 应用层 端口、有哪些协定 传输层 tcp/udp的区别 网络层 ip,arp,路由的概念,icmp(网络过错报文检测),ping、traceroute.... 数据链路层 mac 键入网址到网页显示,期间产生了什么? http=>url域名解析,通过dnstcp=>建设tcp连贯,三次握手, https的话还要经验ssl层进行四次握手,先三次握手胜利后再https握手 长连贯问题的话,能够在过期工夫前始终放弃通信一直开,两头还有session,cookies机制 socket通过四元组发送承受数据 ip=>依据ip寻求mac,arp,icmp(网络管制过错报文)mac打包好的数据包从网卡出通过交换机通过路由器达到目标ip服务器拆包失去音讯,依据音讯响应内容再将数据包封装返还给客户端。Linux是怎么收发网络包的 重点了解: 依据四元组「源 IP、源端口、目标 IP、目标端口」 作为标识,找出对应的 Socket,并把数据拷贝到 Socket 的接收缓冲区socket是在内核态,应用程序调用socket接口,要从用户态边到内核态在网卡的时候留神是中断以及采纳的NAPI 机制,它是混合「中断和轮询」的形式来接管网络包,它的外围概念就是不采纳中断的形式读取数据,而是首先采纳中断唤醒数据接管的服务程序,而后 poll 的办法来轮询数据。当有网络包达到时,网卡发动硬件中断,于是会执行网卡硬件中断处理函数,中断处理函数解决完须要「临时屏蔽中断」,而后唤醒「软中断」来轮询解决数据,直到没有新数据时才复原中断,这样一次中断解决多个网络包,于是就能够升高网卡中断带来的性能开销。

May 30, 2022 · 1 min · jiezi

关于计算机基础:伯克利大学-的计算机入门教程

每天给你举荐一个离奇,好玩,高品质的开源库,好文,观点或舆论等。 我的项目主页保护以后月份的内容,想看往期内容,能够翻到下方历史汇总局部,而后抉择本人感兴趣的月份点进去即可。2022-042022-04-28[工具]import-local 是一个 NodeJS 端的工具,用于检测本地是否装置了某个包。如果你在开发一个 node 的 cli 利用,并且想要进步性能应用用户本地装置好的包,它就很适宜你。 via: https://github.com/sindresorh... 2022-04-28[好文]rest api 中的 POST 和 PUT 有什么区别?一个用于新建资源,一个用于更新资源?不是的! via: https://stackoverflow.com/que... 2022-04-25[网站]一个低代码平台,通过它能够拖拽生成本人的网站。 值得一提的是,一些框架曾经开始集成它了。你能够通过 builder.io 导出代码,而后通过一些工具生成各个框架的中间代码(比方 react,vue),也能够间接生成原生 JS 代码。 via: https://www.builder.io/ 2022-04-24[工具]明天是中国五一假期的调休。调休真的是一个反人类的设计。cypress 是一个 e2e 测试工具,能够很容易地集成到各个测试框架中去,比方 jest。 via: https://github.com/cypress-io... 2022-04-23[好文]Navidrome 是一个音乐管理系统,你能够将其部署到本地,而后通过网页播放器播放本地音乐。Navidrome 体验 via: https://demo.navidrome.org/app/ 很多其余的工具应用的都是网上现成的资源,比方 1listen 就是应用的虾米,QQ 和网易云的音乐源。 via: https://www.navidrome.org/ 2022-04-22[好文]之前我写过 TypeScript 系列教程,其中有一篇是 上帝视角看 TypeScript 这个文章和我的那篇很像,都是从宏观上带大家了解 TypeScript 到底做了什么。这篇文章比我的更粗疏一点,举荐大家联合起来浏览。 via: https://www.huy.rocks/everyda... 2022-04-21[网站]yandex 提供了简洁的在线翻译性能。 你能够间接输出文字进行翻译,也能够上传文件整体翻译。 它还提供了 api 供开发者应用,我的 leetcode 我的项目的局部内容就是用它进行翻译的。不得不抵赖,专有名词的翻译还是不行,比方动静布局会翻译为 dynamic planning。 ...

May 15, 2022 · 2 min · jiezi

关于计算机基础:计算机基础系列文章二计算机软件系统

软件与硬件的关系硬件和软件相互依存。硬件是软件赖以工作的物质基础,软件的失常工作是硬件发挥作用的惟一路径。计算机系统必须要装备欠缺的软件系统能力失常工作,且充分发挥其硬件的各种性能。 软件是如何管制硬件的实质上并没有软件管制硬件,就和你是不能用意念管制一个货色一个情理,而是硬件管制硬件。 软件操作硬件流程图阐明如下:硬件的实质是电路, 通过输出高低电平控制电路的接通和断开来实现工作。 高低电平是:物理状态、能量的体现、物理信号,宏观的理论状态 二进制1和0是:形象的标记符号,语言,宏观的形象 管制硬件工作的形式的倒退过程 最早是通过拨开关来控制电路接通和断开来管制硬件工作。而后程序时,程序的0和1代码通过专职的录入员将其用打孔和不打孔的形式转化为纸条上的一串孔洞,而后通过纸带通过光照区,有孔无孔转为光点和暗点,而后通过光敏元件转化为高低电平,通过输出高低电平来控制电路接通和断开来管制硬件工作。当初通过键盘输入时,通过按键的接通和断开间接输出的就是电信号高低电平。古代编程,集成电路的呈现带来了开关的电子化,能够用晶体管模仿开关,不管你以什么模式输出了01的数据,最初都会转化为这些贮存电路中贮存的数据晓得了硬件是通过输出高低电平来工作的,那么软件是用什么来代表高低电平呢,这就是咱们说的二进制机器语言。1679年,莱布尼茨提出了二进制,能够通过0和1来代表所有数字,计算机科学家发现二进制和计算机工作须要的高低电平十分符合,于是应用二进制作为古代计算机实践的根底,规定1和0别离代表电路的高低电平有了数字实践,怎么做出逻辑电路?于是人们又引入了逻辑门理念,靠他们来做运算。 与门除非两个输出都是1,则输入1, 否则输入0 或门除非两个输出都是0,则输入0,否则输入1. 非门 它会对输出取反(1变0,0变1 ) 或非门除非两输出雷同则输入0,否则输入1 以加法为例,逻辑门实现二进制加法计算形式如下图: 1. 当两个输出都是0,高位输入0,低位也是0,后果是00, 换成十进制就是02. 当两个输出都是1,高位输入1,低位输入0,后果是10,换成十进制就是23. 当输出一个0一个1,高位输入0,低位输入1,后果是01,换成十进制就是1所以逻辑电路其实并不明确加法,它只是按步就搬的给咱们了碰巧正确的后果 编程:程序自身就是指令的汇合。 每个CPU都有本人的指令集,而CPU只能辨认本人反对的指令集,指令集作为软件和硬件的接口。 所谓编程就是将程序员想要实现的成果,用CPU反对的指令集写下来,指令集有很多,程序员能够(也仅能)在反对的指令集中任意组合来实现想要的成果。 高级语言的各种助记符都是对指令集的形象,从而让人们以更合乎人类思维的形式来使用指令集,通过实现【高级语言->编译->汇编语言->cpu指令集->二进制机器码】这个过程,将其转化为高低电平存储到存储器。软件程序通过编译器最终会转化为二进制机器语言,即1和0的数字组合,CPU管制硬件: 总线:计算机外部通信,信息传输的通道,这些信息蕴含数据,指令,地址等,是计算机实现各项计算和操作工作的物理根底,在计算机外部,每一个硬件设施都以特定的形式与CPU相连(间接或间接)CPU通过总线向其余硬件公布指令,使其工作。通信协定: 就像人和人之间相互高效的传递音讯须要对立的语言一样,通信协定就像一门语言,确保单方所言所闻都能被正确的解决。总线也一样,须要一套既定的协定,来让CPU和其余硬件之间失常的沟通,协定规定了:什么指令代表什么含意,什么时候能够发信息,有几条数据线,电压,频率等等,事无巨细,一律都有十分谨严对立的规定。例如SPI,I2C,UART协定等等。最初总结:整个工作过程如软件操作硬件流程图。 文字举例:程序员在电脑终端写下命令->编译->运行->CPU把数据写到内存里特定的地位->通过总线呼叫一下硬件->硬件到约定的内存地址去读取数字->依据1和0输入高下电压->完结系列文章[[计算机根底系列文章(一)]计算机简介](https://segmentfault.com/a/11...)

February 15, 2022 · 1 min · jiezi

关于计算机基础:计算机基础系列文章一计算机简介

什么是计算机计算机(computer)俗称电脑,是古代一种用于高速计算的电子计算机器,能够进行数值计算,又能够进行逻辑计算,还具备存储记忆性能。是可能依照程序运行,主动、高速解决海量数据的现代化智能电子设备。发明者:约翰·冯·诺依曼 计算机由什么组成由硬件零碎和软件系统所组成,没有装置任何软件的计算机称为裸机。 硬件零碎指组成计算机中看得见摸得着的设施,由运算器,控制器,存储器,输出设施和输出设备5局部组成。 按逻辑性能划分:输出单元输入单元算术逻辑单元管制单元记忆单元其中 算术逻辑单元和管制单元 合称 地方处理单元(CPU) 按硬件辨别电源计算机又称电脑,通过电作为能源驱动,电源的作用是将220V交流电转换为电脑中应用的5V、12V、3.3V直流电。主板主板是电脑中各个部件工作的一个平台,它把电脑的各个部件紧密连接在一起,各个部件通过主板进行数据传输。也就是说,电脑中重要的“交通枢纽”都在主板上CPUCPU即中央处理器,是一台计算机的运算外围和管制外围。其性能次要是解释计算机指令以及解决计算机软件中的数据。CPU由运算器、控制器、寄存器、高速缓存及实现它们之间分割的数据、管制及状态的总线形成。内存又叫外部存储器或者是随机存储器(RAM),分为DDR、SDRAM、ECC、REG,(然而SDRAM因为容量低,存储速度慢,稳定性差,曾经被DDR淘汰了)内存属于电子式存储设备,它由电路板和芯片组成,特点是体积小,速度快,有电可存,无电清空,即电脑在开机状态时内存中可存储数据,关机后将主动清空其中的所有数据。硬盘硬盘属于内部存储器,机械硬盘由金属磁片或玻璃磁片制成,而磁片有记忆性能,所以储到磁片上的数据,不管在开机,还是关机,都不会失落。固态硬盘用固态电子存储芯片阵列而制成的硬盘,由管制单元和存储单元(FLASH芯片)组成。声卡声卡是组成多媒体电脑必不可少的一个硬件设施,其作用是当收回播放命令后,声卡将电脑中的声音数字信号转换成模拟信号送到音箱上发出声音。显卡显卡在工作时与显示器配合输入图形、文字,作用是将计算机系统所须要的显示信息进行转换驱动,并向显示器提供行扫描信号,管制显示器的正确显示,是连贯显示器和集体电脑主板的重要元件,是“人机对话”的重要设施之一。网卡网卡是工作在数据链路层的网路组件,是局域网中连贯计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连贯和电信号匹配,还波及帧的发送与接管、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的性能等。网卡的作用是充当电脑与网线之间的桥梁,它是用来建设局域网并连贯到Internet的重要设施之一。调制解调器英文名为“Modem”,俗称“猫”,即调制解调器,类型有内置式和外置式,有线式和无线式。调制解调器是通过电话线上网时必不可少的设施之一。它的作用是将电脑上解决的数字信号转换成电话线传输的模拟信号。随着ADSL宽带网的遍及,内置式调制解调器逐步退出了市场。光驱英文名为“Optical Disk driver”,电脑用来读写光碟内容的机器,也是在台式机和笔记本便携式电脑里比拟常见的一个部件。显示器英文名为“monitor”,显示器有大有小,有薄有厚,种类多样,其作用是把电脑解决完的结果显示进去。它是一个输出设备,是电脑必不可缺少的部件之一。键盘键盘是次要的人工学输出设施,用于把文字、数字等输到电脑上,以及电脑操控。软件系统次要分为系统软件、撑持软件和应用软件。 系统软件操作系统是治理软硬件资源、控制程序执行,改善人机界面,正当组织计算机工作流程和为用户应用计算机提供良好运行环境的一种系统软件。 操作系统是位于硬件层之上,所有软件层之下的一个必不可少的、最根本又是最重要的一种系统软件。 它对计算机系统的全副软、硬件和数据资源进行对立管制、调度和治理。 从用户的角度看,它是用户与计算机硬件零碎的接口。 从资源管理的角度看,它是计算机系统资源的管理者。 其次要作用及目标就是进步系统资源的利用率;提供敌对的用户界面;发明良好的工作环境,从而使用户可能灵便、不便地应用计算机,使整个计算机系统能高效地运行。 操作系统的工作是治理好计算机的全副软硬件资源,进步计算机的利用率;负责用户与计算机之间的接口,使用户通过操作系统提供的命令或菜单不便地应用计算机。 撑持软件撑持软件是在系统软件和应用软件之间,提供应用软件设计、开发、测试、评估、运行检测等辅助性能的软件,有时以中间件模式存在。 软件开发环境(Software Development Environment,SDE)指在根本硬件和宿主软件的根底上,为反对系统软件和应用软件的工程化开发和保护而应用的一组软件,简称SDE。它由软件工具和环境集成机制形成。数据库管理系统数据库管理系统(Database Management System)是一种操纵和治理数据库的大型软件,用于建设、应用和保护数据库,简称DBMS。它对数据库进行对立的治理和管制,以保障数据库的安全性和完整性。用户通过DBMS拜访数据库中的数据,数据库管理员也通过dbms进行数据库的保护工作。网络软件网络软件个别是指零碎的网络操作系统、网络通信协定和利用级的提供网络服务性能的专用软件。在计算机网络环境中,用于反对数据通信和各种网络流动的软件。连入计算机网络的零碎,通常依据零碎自身的特点、能力和服务对象,配置不同的网络应用零碎。其目标是为了本机用户共享网中其余零碎的资源,或是为了把本机系统的性能和资源提供给网中其余用户应用。为此,每个计算机网络都制订一套全网独特恪守的网络协议,并要求网中每个主机系统配置相应的协定软件,以确保网中不同零碎之间可能牢靠、无效地互相通信和单干。应用软件应用软件是为满足用户不同畛域、不同问题的利用需要而提供的那局部软件。 它能够拓宽计算机系统的应用领域,放大硬件的性能。 应用软件(application software)是用户能够应用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的汇合,分为应用软件包和用户程序。 应用软件包是利用计算机解决某类问题而设计的程序的汇合供多用户应用。

February 14, 2022 · 1 min · jiezi

关于计算机基础:原码-反码-补码-详解

原码, 反码, 补码 详解本篇文章解说了计算机的原码, 反码和补码. 并且进行了深刻探究了为何要应用反码和补码, 以及更进一步的论证了为何能够用反码, 补码的加法计算原码的减法. 论证局部如有不对的中央请各位牛人帮忙斧正! 心愿本文对大家学习计算机根底有所帮忙! 一. 机器数和真值在学习原码, 反码和补码之前, 须要先理解机器数和真值的概念. 1、机器数一个数在计算机中的二进制示意模式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位寄存符号, 负数为0, 正数为1. 比方,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值因为第一位是符号位,所以机器数的模式值就不等于真正的数值。例如下面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是模式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 二. 原码, 反码, 补码的根底概念和计算方法.在探究为何机器要应用补码之前, 让咱们先理解原码, 反码和补码的概念.对于一个数, 计算机要应用肯定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码原码就是符号位加上真值的绝对值, 即用第一位示意符号, 其余位示意值. 比方如果是8位二进制: [+1]原 = 0000 0001[-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范畴就是: ...

March 16, 2021 · 4 min · jiezi

关于计算机基础:计算机基础书籍推荐

前沿重要性:只有波及到基础架构、中间件架构或者业务架构都不可避免的去关注一些计算机基础知识;只有把计算机根底功底打透之后才可能很好地驾驭编写根底服务架构跟中间件。 内容计算机根底内容对于技术功底不是很好的人来说,看一些浅显易懂的货色联合实际是比拟好的。具体书籍参考一下导图。

January 27, 2021 · 1 min · jiezi

关于计算机基础:Linux操作系统原理学习笔记

Linux操作系统学习总结BIOS阶段当机器按下电源键通电之后,执行的第一行代码是存储在只读存储器中的BOIS程序。BIOS程序要实现的性能有: 查看机器各个硬件组件是否失常检测启动盘启动盘能够是U盘、磁盘、移动硬盘,它具备一个标识:设施的第一个扇区是疏导扇区,外面保留的是疏导程序(boot.img)。疏导程序会加载疏导程序的各个模块进入内存,最终会将启动盘上的内核信息以列表的通过显示器展现给用户,用户抉择一个操作系统内核之后,进入内核的启动阶段。 内核启动阶段内核启动阶段会初始化各个内核模块,这些模块也能够叫做子系统。有工作管理子系统、内存管理子系统、文件管理系统等等。 内核程序在执行过程中创立的第一个过程,是用户态的过程的先人。第二个过程是内核态所有过程的先人。 内核态程序:治理硬件资源的程序,硬件资源是无限的,须要对立治理。用户态程序:应用硬件资源,通常是应用零碎调用,运行内核程序,从而操作硬件。 程序执行过程在Linux上,可执行的程序都是满足elf规范的文件。可执行程序由源代码通过编译失去二进制程序,也就是elf文件。一个过程通过执行fork调用,创立一个新的过程,新的过程是子过程,而执行fork调用的过程是这个新过程的父过程,子过程再通过exec零碎调用,将可执行文件加载到内存中,最终交给CPU执行。 elf文件格式 elf文件头(文件总体形容)程序指令数据段过程管理子系统Linux将每个过程都组织成一个task构造,一个task构造蕴含这些信息。 过程id:每个过程都要一个id,是这个过程的惟一标识。过程状态:TASK_RUNNING(过程可执行)、TASK_INTERRPTIBLE(睡眠状态,能够响应中断)、TASK_UNINTERRUPTIBLE(睡眠状态,不可中断,必须在条件满足之后才能够继续执行)、TASK_KILLABLE(睡眠状态,不可中断、能够响应致命信号)、EXIT_ZOMBIE(过程执行完结,父过程尚未获知其终止信息)、EXIT_DEAD(过程终止状态)过程运行统计信息:在用户态、内核态耗费的工夫、上下文切换次数等等过程间关系:父子关系、兄弟关系。过程权限信息:对文件或目录的拜访权限、对别的过程的拜访权限、别的过程对本过程的拜访权限等。占用的内存信息占用的文件信息线程在Linux中,线程也是一个task构造,CPU最终调度的对象就是task。 任务调度每个CPU有一个工作队列,CPU在运行的时候就从队列中取一个工作(task)进去执行。任务调度能够有很多中调度形式,比方fifo、lru、cfs等等。罕用的是cfs(Completely Fair Scheduling),即齐全偏心调度。齐全偏心调度算法根据task运行工夫、优先级来保障偏心。 调度机会:抉择具体的调度算法,解决了如何调度问题,而还有一个问题是何时调度。 被动让出CPU:当一个过程执行sleep调用或者进行了阻塞IO操作,都会被动放弃CPU,在内核中就会被动执行schedule()函数来执行调度。被动让出CPU:过程执行工夫太长了,该让出CPU给别的过程应用。这种状况,会在以下几个非凡机会触发schedule()函数。对于用户态的过程来讲,从零碎调用中返回的那个时刻,是一个被抢占的机会。对于用户态的过程来讲,从中断中返回的那个时刻,也是一个被抢占的机会。对内核态的执行中,被抢占的机会个别产生在 preempt_enable() 中。在内核态的执行中,有的操作是不能被中断的,所以在进行这些操作之前,总是先调用 preempt_disable() 敞开抢占。再次关上的时候,就是一次内核态代码被抢占的机会。在内核态也会遇到中断的状况,当中断返回的时候,返回的依然是内核态。这个时候也是一个执行抢占的机会。内存管理子系统在Linux零碎中,程序执行时拜访的指令地址、数据地址都是虚拟地址。每个程序都认为本人独占了整个物理内存。实际上,内存的每个字节只有一个惟一的地址,不同程序程序对于同一个地址的拜访最终会通过页表翻译为最终的物理地址,也就是虚拟地址翻译为物理地址。这样,每个程序都能够应用同一个虚拟地址,而对于同一个虚拟地址,最初会被翻译为不同的物理地址。 内存管理子系统须要实现以下性能: 物理内存的治理虚拟内存的治理虚拟内存到物理内存的映射物理内存治理:操作系统将内存分成节点,每个CPU先拜访离本人最近的内存节点(下图第二种)。每个节点外面再分区域(zone),用于辨别不同的用法。每个区域外面再分页,默认大小为4KB。一个页是每个程序应用内存的最小单位。分配内存的时候,以一个页的整数倍进行调配,这个整数是1、2、4...1024。当一个页长时间不必了,能够临时写到磁盘,要用的时候在读回内存,这就是换入换出,这样能够减少物理内存的应用效率。 虚拟内存治理:对于每个过程来说,内存分两个局部,一部分由内核程序应用(称为内核空间),剩下的局部全副归本人应用(称为用户空间)。用户过程不能拜访内核空间。用户空间的内存,分段治理,每一段寄存不同的数据,elf格局的程序加载到内存之后,各局部对应放到各个段。内核空间外面也会有内核的程序,同样有 Text Segment、Data Segment和BSS Segment,内核程序也是elf格局的。 虚拟内存到物理内存的映射:将虚拟内存地址转换为物理内存地址,须要应用页表。能够简略的将页表了解为一个映射构造,输出虚拟地址,输入物理地址。 文件系统文件系统有两个状态,一种状态是磁盘上的文件系统,这是在对磁盘进行格式化的时候写入到磁盘的。另一种状态是内核中的文件系统。内核中的文件系统定义了对磁盘上文件系统的操作以及相应的数据结构。 在文件系统中,存储的最小单位为块,每个块默认是4KB大小。一个文件能够拆分为多个块进行寄存,因而须要有一个中央来记录文件都存在于哪些块,这是文件索引节点的须要提供的信息。 文件索引节点(inode)也是保留在块外面,每个文件对应一个inode。在inode中,有以下的信息: 文件读写权限文件属于的用户、用户组文件大小文件占用多少个块、每个块的地址信息 文件夹(目录):在文件系统的概念中,目录也是一种文件,每个目录也对应一个inode。与一般文件不一样的是,目录中寄存的是下一级文件的文件名和对应的inode,而一般文件外面寄存的就是数据内容。 Linux内核程序在内存中保护了一套数据结构,用来记录哪些文件被哪些过程关上和应用,每个过程能关上的文件数量是有下限的,因而在开发中,用完文件之后要妥善敞开文件。 输入输出零碎输入输出零碎,是对IO设施的进行治理的零碎。常见的IO设施分为两种:字符设施、块设施。输入输出零碎应用了层层形象来对IO设施进行管制。 应用设施控制器屏蔽设施差别应用设施零碎程序屏蔽设施控制器差别用中断控制器对立解决内部事件用文件系统接口屏蔽驱动程序的差别 过程间通信机制管道:单向数据传递。将前一个程序的输入作为后一个程序的输出。管道实际上以一段缓存。音讯队列共享内存 + 信号量信号:内核机制,在非凡状况下会发出信号,用户的程序只有筹备信号处理函数就能够解决收到的信号。网络通信无论是windows还是linux,网络模型是一样的。网络模型与具体的操作系统无关。不同机器之间要通信就要通过网络。一个应用层的信息要发送到另一台机器的利用,须要将音讯层层包装,加上各层协定的内容。指标机器收到网络包之后,逐层剔除协定,再依据端口好转发到对应的利用。 Socket是用户态与内核态的连接体,用户态的程序通过Socket接口就能够实现网络通信,无需关怀各层协定细节。TCP、IP协定都是在内核中实现的,不同的操作系统实现细节不一样。 虚拟化&容器化虚拟化就是在操作系统上运行操作系统,使用这种技术,能够将一台大机器虚构为多个小机器。比拟好的一种虚构形式是半虚拟化(硬件辅助+半虚拟化驱动),启用硬件辅助技术之后,虚拟机的指令就能间接运行在宿主机的CPU上,不必通过翻译。半虚拟化驱动就是指应用非凡的、更高效的IO设施驱动,进步IO效率。 集群的操作系统一台物理机器,最重要的四种硬件资源是CPU、内存、存储和网络。对于一个集群,比如说数据中心,如何灵便的治理和调配一堆计算资源,是一个难题。 Kubernetes,数据中心的“操作系统”,能够灵便的实现少量的资源管理。其中,对于CPU和内存,能够利用docker容器技术。对于存储,无论是分布式文件系统和分布式块存储,Kubernetes提供了接口,就行提供了驱动程序接口一样。对于网络,同样提供了标准接口只有对接这个对立的接口,Kubernetes 就能够治理容器的网络。。 docker容器技术能够将 CPU 和内存资源,从大的资源池外面隔离进去,并通过镜像技术,在数据中心外面实现计算资源的自在漂移。

January 1, 2021 · 1 min · jiezi

关于计算机基础:计算机基础2冯诺依曼结构

起因初期的计算机应用操作简单,仅能运行固定用处的程序,不同的程序无奈兼容,如果须要运行不同的程序就须要更改电路,整个计算机都须要从新制作。 冯诺依曼体系计算机能力1、可能把须要的程序可数据送至计算机中(比方鼠标和键盘) 2、可能长期记忆程序、数据、两头后果以及最终运算后果的能力(存储器来实现) 3、可能具备运算、逻辑运算和数据传输等数据加工解决的能力(运算器和控制器来实现,cpu就是由运算器和控制器组成的) 4、可能依照要求将处理结果输入给用户(输出设备来实现,如显示器、打印机) 冯诺依曼瓶颈cpu和存储器的速度无奈调合,因为cpu处理速度很快,而存储设备到cpu的传输速度没那么快,所以cpu就会呈现常常空转来期待数据的传输 概念外围是:采纳二进制逻辑、程序存储执行以及计算机由五个局部组成(运算器、控制器、存储器、输出设施、输出设备)。 古代计算机倒退所遵循的根本构造模式始终是冯·诺依曼机构造。这种构造特点是“程序存储,共享数据,程序执行”,须要 CPU 从存储器取出指令和数据进行相应的计算。 次要特点有:单处理机构造,机器以运算器为核心;采纳程序存储思维;指令和数据一样能够参加运算;数据以二进制示意;将软件和硬件齐全拆散;指令由操作码和操作数组成;指令程序执行。 古代计算机构造古代计算机构造实质上还是冯诺依曼体系结构,只是在冯诺依曼结构上做了优化。因为退出了内存以及在cpu中退出了cpu寄存器来解决cpu空转的问题

September 5, 2020 · 1 min · jiezi

关于计算机基础:计算机发展史与计算机分类

计算机倒退阶段1946年至1957年:电子管计算机 埃尼阿克计算机1957年至1964年:晶体管计算机 贝尔实验室的三个科学家创造了晶体管,用于代替电子管,比电子管集成度更高,空间占用更小,功耗绝对较低,操作绝对简略,交互更加不便TX-0计算机PDP-1计算机1964年至1980年:集成电路计算机德州仪器的工程师创造了集成电路(IC)此时的计算机体积变得更小,功耗更低,计算速度更快,具备了进入千家万户的条件此时IBM公司因为发售的两款电脑7094、1401软件无奈兼容,而其余公司又不愿投入两组人力,因而IBM推出了兼容产品System/360,该产品是操作系统的雏形 1980年至今:超大规模集成电路计算机 将来计算机可能的倒退方向:生物计算机:跟人体联合进行肯定的运算,体积小,效率高,不易损坏,具备生物主动修复个性 量子计算机:遵循量子力学的物理计算机,目前世界顶级公司均在钻研 微型计算机发展史 计算机分类超级计算机用于国家高科技畛域和尖端技术钻研,如航空畛域,石油探测等 大型计算机又称大型机,大型主机,主机等 迷你计算机(服务器)阿里云、腾讯云等云厂商就是应用的一般服务器来形成数据中心的 工作站高端的通用微型计算机,提供比集体计算机更弱小的性能,相似于一般台式电脑,体积较大,但性能强劲 微型计算机又称为集体计算机,是最一般的一类计算机

September 4, 2020 · 1 min · jiezi

计算机揭秘之网络分类和性能分析

简介程序员天天都在写代码,关注的都是更高层次的封装,明天咱们换个思路,让程序那些事来带你看一看暗藏在表象之下的网络和他们的性能剖析。 本文次要波及5个模块,别离是网络七层协定,提早与带宽,IP,TCP,UDP。 OSI网络七层协定在讲网络之前,肯定要提到OSI网络七层协定。 OSI是Open System Interconnect的缩写,意为开放式系统互联。 上图是大家十分十分相熟的OSI七层网络模型,和对应的TCP/IP模型。 应用层的性能是文件传输,电子邮件和文件服务等。应用的协定次要是HTTP,SMTP和FTP。 表示层的性能是数据格式化,代码转换和数据加密。 会话层的性能是解除或者建设与其余节点的分割。 传输层的性能是提供端对端的接口,应用的协定次要是TCP和UDP。 网络层的性能是为数据包抉择路由,应用的协定是IP。 数据链路层的性能是传输有地址的帧,和检查数据谬误。 物理层的性能是以二进制数据在物理媒介上传输数据。 提早与带宽最近电信业务员老是给我打电话,说是要把家里的电信宽带从100M降级到500M,每天只须要一块钱。一块钱尽管少,但也是血汗钱。那么办还是不办呢?降级到500M对性能和延时晋升有多大帮忙呢? 2020年能够称为中国5G的元年。先不论华为,中信在5G基站和协定制订方面的能力。直观的感觉5G手机开始多了,手机营业厅也在卖命的让你降级到5G套餐,那么办还是不办? 在答复这两个问题之前,咱们学习两个名词: 提早: 分组从信息源发送到目的地所需的工夫。 带宽: 逻辑或物理通信门路最大的吞吐量。 如果你拜访一个网站,比方www.flydean.com,咱们看一下数据是怎么从服务器达到你的电脑的。 首先数据从服务器通过以太网(以太网是一种计算机局域网技术)传输到ISP。 ISP是啥呢?ISP就是互联网服务提供商(Internet Service Provider),通过ISP你才可能把服务器接入互联网。 互联网就是通过主干网的互联网服务提供商(ISP)之间的相互连接形成的。 所以ISP就是一个......大代理。 好了,数据传到为我家提供服务的ISP了,而后通过光纤或者电缆线传到了我家的WiFi,而后通过WiFi的无线信号,被我的电脑接管。 延时的形成探讨剖析了数据的传输线路,接下来咱们看一下,延时会跟哪些起因无关呢? 首先必定是信号传输的间隔,间隔越长,传输速率越慢,须要的工夫就越长。 接下来就是音讯的长度,咱们把音讯中的所有比特转移到链路中须要工夫,音讯长度越长,须要的工夫越多。 数据上了链路之后,解决分组首部、查看位谬误及确定分组指标也须要工夫。 最初,咱们对于分组数据进行排队解决也须要工夫。 当初主网络的传输介质基本上都是光纤了,光在光纤中流传,并不是直线进行的,并且也有折射率的影响,所以速度比光在真空中流传要慢一点。 比如说信号围绕赤道转一圈,只须要大略200ms。曾经很快了。 200ms的确很快了,然而对于某些实时性要求特地高的利用场景,咱们能够应用CDN技术(Content Delivery Network,内容散发网络),把内容部署在寰球网络中,而后从最近的中央去取数据。从而大大减少传输延时。 200ms够快了,然而为什么咱们依然会感觉到网速慢呢? 大家都听过木桶原理吧,木桶可能装的水,决定于最短的那块木板。同样的对于网络延时来说,晋升速度不在于你在主干网上采纳了如许先进的技术,因为晋升的再多或者再差也是毫米级的。 真正决定网速的在于最初一公里,也就是你电缆线的传输速率,你的wifi的传输速率,还有你电脑的解决速率等。  能接入更高带宽诚然好,特地是传输大块数据时更是如此,比方在线听音乐、看视频,或者下载大文件。可是,日常上网浏览须要的是从数十台主机获取较小的资源,这时候往返工夫就成了瓶颈。 IP协定IP,即 Internet Protocol(因特网协定),负责联网主机之间的路由抉择和寻址。 各种物理网络在链路层所传输的根本单元为帧(MAC帧),其帧格局随物理网络而异,各物理网络的物理地址(MAC地址)也随物理网络而异。Ip协定的作用就是向传输层(TCP层)提供对立的IP包,行将各种不同类型的MAC帧转换为对立的IP包,并将MAC帧的物理地址变换为全网对立的逻辑地址(IP地址)。 IP数据包数据包(data packet)是什么? 数据包也是分组替换的一种模式,就是把所传送的数据分段打成包,再传送进来. 每个数据包都有报头和报文这两个局部,报头中有目标地址等必要内容,使每个数据包不通过同样的门路都能精确地达到目的地。在目的地重新组合还原成原来发送的数据. 咱们看下IP数据包的形成。 留神下面的Total Length局部占用了2个字节,所以IP数据包的最大长度就是2^16-1=65535字节。 分片和重组链路层具备最大传输单元MTU这个个性,它限度了数据帧的最大长度,不同的网络类型都有一个上限值.如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片操作,使每一片的长度都小于或等于MTU。 分片后的IP数据包,只有达到目的地能力从新组装。从新组装由目的地的IP层来实现,其目标是使分片和从新组装过程对传输层(TCP和UDP)是通明的。 MSS与MTUMSS最大传输大小的缩写,是TCP协定外面的一个概念。 MSS就是TCP数据包每次可能传输的最大数据分段。为了达到最佳的传输效力TCP协定在建设连贯的时候通常要协商单方的MSS值,这个值TCP协定在实现的时候往往用MTU值代替(须要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes), 通信单方会依据单方提供的MSS值得最小值确定为这次连贯的最大MSS值。 而个别以太网MTU都为1500, 所以在以太网中, 往往TCP MSS为1460。 TCP TCP,即 Transmission Control Protocol(传输控制协议),负责在不牢靠的传输信道之上提供牢靠的形象层,  向应用层暗藏了大多数网络通信的简单细节,比方丢包重发、按序发送、拥塞管制及防止、数据残缺,等等。 ...

July 17, 2020 · 1 min · jiezi

32-64-bit

EM64T为x86系统而设的应用软件实在太庞大,Intel眼见使用AMD64的Opteron及Athlon 64取得成功,便需要对竞争者的威胁作出迎击,也开发了兼容早期16位和32的64位处理器,Intel将之命名为"IA-32E",意即IA-32的延伸,在数星期后才改称为EM64T。虽然该处理器的内核与AMD64几乎相同,但是在以往Intel的营销中,Intel总把AMD的产品贬为自家技术的仿制品,Intel为了自身的面子,定不会承认使用了对手AMD的技术,因此Intel把该技术以EM64T这个名字来推出,后来Intel索性将此技术正式命名为Intel 64。两家自主研发的公司都分别为了自己的旗帜而开始了如火如荼的竞争。Intel 64指令集被应用于Pentium 4、Pentium D、Pentium Extreme Edition、Celeron D、Xeon、Intel Core 2及Intel Core i7处理器上。由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD对这种CPU架构的原始称呼"x86-64"被不时地使用,还有变体"x86_64"。其他公司如微软和太阳计算机系统公司在营销资料中使用”x64”作为对”x86-64”的缩写。 EM64T技术详解Intel官方是给EM64T这样定义地:EM64T全称Extended Memory 64 Technology,即64位内存扩展技术,他是Intel IA-32架构(Intel Architectur-32 extension)地一个扩展,且兼容原来地架构。通过增加CPU地运算位宽扩展增加cpu和内存之间地位宽,从而让系统支持更大容量地内存(32bit处理器最多只能支持内存容量只有4GB,而64bit地最高则达64GB)。在理论上,虽然EM64T架构最高能够很好的运行在64 bit内存寻址,但由于设计和制造工艺等方面地因素,并非所有EM64T地处理器都能达到理论地上限。Intel为支持EM64T技术地处理器可分为两大类:传统IA-32模式和IA-32e扩展模式,两大类下具体又可分为多种运行模式 。传统IA-32模式下,与IA-32工作模式一样,我们可以安装windows xp 32bit,安装32位硬件硬件驱动,安装32位应用程序。目前大部分人的处理器是Intel 64,安装了windows xp 32,上面的程序运行情况良好,包括16bit和32bit程序。兼容模式下,操作系统和硬件驱动程序都是64bit,计算机允许在64bit操作系统下不需要预编译就可以运行大多数传统32bit应用程序,这和传统IA-32模式下基本相同,32位应用程序仍然只能访问4G内存,但此限制只在进程级,而不在系统级。由于兼容模式下,要求硬件驱动程序都是64bit,所以导致了64位Windows最大的一个劣势就是兼容性,而兼容性方面最突出的就是各种硬件设备的驱动程序。如果你所用的硬件设备的开发商还没有开发出针对64位Windows XP的驱动程序,可能该设备在64位Windows XP下无法使用,也有可能使用操作系统自带的通用驱动勉强使用,但是性能和功能都会受到影响 。至于其他软件程序则一般没有什么大问题。在64位Windows XP中,只有16位应用程序是完全无法使用的,而32位应用程序则可以继续使用。不过在安装这些应用程序的时候也要注意,有些应用程序,虽然和硬件扯不上关系,但是为了实现软件的某些特殊功能,安装软件的时候同时还会向系统中装入驱动程序,这种程序在没有发布64位版之前是无法在64位Windows下使用的。如著名的截图软件SnagIt,该软件使用默认安装的时候会向系统中安装一个虚拟的打印机,该打印机可以将文档输出为图形格式。因为安装了虚拟设备,因而该程序还没有提供64位的版本,因此在64位Windows XP下使用默认选项安装的时候就会出错,除非我们自定义安装选项,不安装这个虚拟打印机。但是对于服务器来说,服务器不需要什么外设,硬件的兼容性差对服务器的影响较小。64bit模式下,必须要有64bit地操作系统、驱动程序和应用程序三者合作,这时操作系统无法运行32位程序,兼容性最差,但充分发挥64位架构的优势。 32 & 64 bit64bit计算主要有两大优点:可以进行更大范围的整数运算;可以支持更大的内存。 64位CPU一次可提取64bit数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 但是不能因为数字上的变化,而简单的认为64bit处理器的性能是32bit处理器性能的两倍。实际上在32bit应用程序下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强。所以要认清64bit处理器的优势,但不可迷信64bit。 JVM 32 & JVM 64 bit目前只有server VM支持64bit JVM,client不支持32bit JVM。 The Java Plug-in,AWT Robot and Java Web Start这些组件目前不支持64bit JVM 本地代码的影响:对JNI(Java Native Interface)的编程接口没有影响,但是针对32-bit VM写的代码必须重新编译才能在64-bit VM工作。 32-bit JVM堆大小最大是4G, 64-bit VMs 上, Java堆的大小受限于物理内存和操作系统提供的虚拟内存。 ...

June 24, 2020 · 1 min · jiezi