跳到主要内容

计算机基础

计算机基础

计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。

计算机有很多形式,比如:生活中常见的家用电脑,笔记本,智能手机,平板电脑等,还有生产环境中提供重要业务支撑的各种服务器(Server),都算是计算机。

其中一个完整的计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成。

目录

[TOC]

1、计算机发展历史

  1. 第一代计算机(1946-1957) 电子管时代
  2. 第二代计算机(1958-1964) 晶体管时代
  3. 第三代计算机(1965-1970) 集成电路时代
  4. 第四代计算机(1971以后) 大规模集成电路时代

2、世界上第一台计算机

1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator 电子数字积分计算机)美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算。

3、冯·诺依曼体系结构

1946年美籍匈牙利数学家冯·诺依曼于提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺依曼体系结构冯·诺依曼理论的要点是:

  1. 数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
  2. 计算机应该按照程序顺序执行
  3. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

冯·诺依曼

早期计算机系统的输入设备:穿孔纸带

4、摩尔定律

由英特尔(Intel)创始人之一戈登·摩尔于1965年提出,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。

5、计算机分类

按规模划分

  1. 超级计算机:Super Computer,又称巨型计算机,应用于国防尖端技术和现代科学计算中。巨型机的运算速度可达每秒百万亿次以上“天河一号”为我国首台千万亿次超级计算机
  2. 大型计算机:具有较高的运算速度,每秒可以执行几千万条指令,而且有较大的存储空间。往往用于科学计算、数据处理或作为网络服务器使用,如:IBM z13 mainframe。
  3. 小型计算机:指采用精简指令集处理器,性能和价格介于PC服务器和大型主机之间的一种高性能64 位计算机。在中国,小型机习惯上用来指UNIX服务器。
  4. 微型计算机:指采用 X86 CPU 架构的PC服务器,中央处理器(CPU)采用微处理器芯片,体积小巧轻便,广泛用于商业、服务业、工厂的自动控制、办公自动化以及大众化的信息处理,互联网公司发起去IOE运动,代替小型机。

按功能和角色划分

服务器和客户机

服务器:即 Server,计算机的一种,通常是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务。

客户机:即 Client,向服务器提出请求,需要服务器为之提供相应的服务和支持的计算机。

服务器按应用功能可分为

Web服务器、数据库服务器、文件服务器、中间件应用服务器、日志服务器、监控服务器、程序版本控制服务器、虚拟机服务器、邮件服务器、打印服务器、域控制服务器、多媒体服务器、通讯服务器、ERP服务器等。

服务器按外形分类

PC服务器常见的三种外型:

塔式服务器

刀片式服务器

机架式服务器

塔式Tower服务器

早期的服务器形式,目前较少使用

外形以及结构和平时使用的立式PC差不多

机箱空间大,主板扩展性较强,插槽较多

预留了足够的内部空间,以便日后进行硬盘和电源的冗余扩展,设计一般都考虑降噪。

刀片式Blade服务器

在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度

更高的密度,集中管理,高性能,灵活扩展,按需配置

可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板可以连接起来提供高速的网络环境,并同时共享资源,为相同的用户群服务。

机架式Rack服务器

按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位,1U=1.75英寸=44.45毫米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器

机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的服务器

机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高2000mm(42U)

现阶段是最主流的的服务器

6、服务器硬件组成

服务器配置示例(参考价格47588元)

服务器硬件---CPU

CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要的部分。

CPU 架构

  • CISC:Complex Instruction Set Computer,复杂指令集
  • RISC:Reduced Instruction Set Computer,精减指令集

精减指令集(RISC)和复杂指令集(CISC)

早期计算机一直沿用CISC指令集方式。它的设计目的是要用最少的机器语言指令来完成所需的计算任务。在CISC处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,**但计算机各部分的利用率不高,执行速度慢。**CISC的指令系统庞大,功能复杂,指令格式、寻址方式多;执行速度慢;难以优化编译,编译程序复杂; 无法并行;无法兼容。大约20%的指令占据了80%的处理器时间。其余80%指令使用频度只占20%的处理机运行时间。由此CISC生产厂商长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器,同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误。目前个人计算机x86体系 CPU 厂商一直在走CISC的发展道路,包括Intel、AMD、VIA(威盛)等。之所以称为X86,是因为最早Intel的CPU型号是8086,后来出现了80286,80386,80486,80586等,所以之后的Intel和其兼容的厂商的生产CPU都称为X86 CPU。而后CPU从最初的8位,16位,32位,发展到目前主流的64位。为了区别非64位的CPU,一般将64位的CPU称为X86-64。

由于最早在1999由AMD设计公开 64 位技术,称为 x86-64,后来改名为 AMD64,不同厂商称呼有所不同,所以AMD 64,x86-64,x64都指的是64位的基于X86的CPU。因为CISC存在上面的问题,于是有了RISC,它是图灵奖得主John L. Hennessy和David A. Patterson对行业的重大贡献,由加州大学伯克利分校于1980年发布,其基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,使其实现更容易,指令并行执行程度更好,此称为精简指令集RISC(Reduced Instruction Set Computing)。精减指令集其风格是强调计算机结构的简单性和高效性,其特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,支持并行,并且采用流水线技术。当需要完成复杂任务时,就由多个指令组合来实现。常用的精简指令集微处理器包括:ARM、RISC-V、MIPS、PA-RISC、PowerArchitecture(包括PowerPC)、DECAlpha和SPARC等。

说到这里不得不提一下ARM,全世界超过95%的智能手机和平板电脑都采用ARM架构,当前最先进的华为的海思麒麟990 CPU,高通的骁龙865 CPU,苹果的A13 CPU也都属于ARM架构。ARM可以说是目前世界上使用最广泛的CPU架构了。

CPU类型

X86:CISC

ARM:Acorn RISC Machine 高通,华为麒麟

RISC-V 阿里玄铁910

MIPS 龙芯

Power:IBM

Powerpc:apple,ibm,moto

Ultrasparc :Sun

Alpha:HP

安腾:compaq

服务器CPU公司

Intel:

Xeon 至强

Itanium 安腾

AMD: Althlon MP

IBM: Power

按照CPU体系架构来区分,服务器主要分为两类

(1)x86服务器:采用CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高

(2)非x86服务器:采用RISC(精简指令集)或EPIC(并行指令代码) 处理器,主要采用UNIX和其它专用操作系统的服务器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc、Compaq的Alpha、HP的PA-RISC、Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统

微处理器

1971年11月15日,Intel公司的工程师特德·霍夫发明了世界上第一个微处理器—4004,这款4位微处理器虽然只有45条指令,而且每秒只能执行5万条指令。性能很低,但它的集成度却要高很多,一块4004的重量还不到一盅司。

Intel从8086开始,就进入了我们常说的x86时代。而80386的诞生则标志着Intel正是进入了32位微处理器的时代。从80386到Pentium 4这个年代的CPU,就是传说中的IA-32时代x86-64( 又称x64,即英文词64-bit extended,64位拓展 的简写)是x86架构的64位拓展,向后兼容于16位及32位的x86架构。x64于1999年由AMD设计,AMD首次公开64位集以扩展给x86,称为“AMD64”。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“ClackamasTechnology” (CT)、“IA-32e”及“EM64T”Intel公司的CPU发展历程。

CPU其他相关概念

CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样

外频:系统总线的工作频率, CPU与外部(主板芯片组)交换数据、指令的工作时钟频率

倍频:倍频则是指CPU外频与主频相差的倍数

三者关系是:主频=外频x倍频

高速缓存(cache):高速交换的存储器。CPU缓存分为一级,二级,三级缓存,即L1,L2,L3

内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与二级(L2)高速缓存和内存之间的通信速度

地址总线宽度:决定了CPU可以访问的物理地址空间。

注意

i386:32位的;

注意:mips:像华为/阿里等公司利用这种技术开发cpu等技术;(因为arm,amd等被老外垄断了)

服务器硬件---主板

主板mainboard,安装在机箱内,是计算机最基本的也是最重要的部件之一;

主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。

服务器硬件---内存

内存是介于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路;

内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大;

外存:硬盘,U盘,软盘,光盘;

内存和外存的区别

内存断电后数据丢失

外存断电后数据可以保存

服务器内存常用技术

1、 在线备用内存技术

当主内存或者是扩展内存中的内存出现多位错误时或者出现物理内存故障时,服务器仍继续运行;

由备用内存接替出现故障内存的工作;

备用的内存区域必须比其它区域的内存容量要大或相同;

2 、内存镜像

镜像为系统在出现多位错或内存物理故障时提供数据保护功能,以保证系统仍能正常的运行;

数据同时写入两个镜像的内存区域;

从一个区域进行数据的读取;

容量:即该内存的存储容量,单位一般为GB

1、内存带宽

内存带宽是指内存与北桥芯片之间的数据传输率,B byte 字节 b bit位

单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是双通道内存就要再乘以2

2、计算公式: 内存带宽=内存总线频率×数据总线位数/8

范例:

单通道DDR(Double Data Rate双倍速率)内存带宽计算

DDR4-4000:4000MHz*64bit/8=32000MB/S

DDR4-3600:3600MHz*64bit/8=28800MB/S

双通道:

DDR4-4000:4000MHz_64bit_2/8=64000MB/S

服务器硬件---硬盘

常见的磁盘接口种类

IDE:Integrated Drive Electronics,电子集成[驱动器,早期家用电脑常用接口

SCSI:Small Computer System Interface,小型计算机系统接口,早期的服务器常用接口;

SATA:Serial ATA (Advanced Technology Attachment 高技术配置),家用电脑常用的接口;

SAS:Serial Attached SCSI,是目前服务器上主流的接口;

光纤通道:Fiber Channe,高性能服务器上采用的接口;

M.2 :固态硬盘接口,性能更强;

结构分类

机械硬盘HDD(Hard Disk Drive)

固态硬盘SSD(Solid State Drives )

1、机械硬盘

存储介质(Media)——盘片

盘片的基板是金属或玻璃材质制成,为达到高密度高稳定的质量,基板要求表面光滑平整,不可有任何暇疵

读写磁头(Read Write Head)——磁头

磁头是硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向外传输

马达( Spindle Motor & Voice Coil Motor )

马达上装有一至多片盘片,以7200,10000,15000 RPM等定速旋转,为保持其平衡不可抖动,所以其质量要求严谨,不产生高温躁音

机械硬盘基本参数:

容量:容量是硬盘最主要的参数。单位有MB、GB、TB,常见容量:500GB,1T,2T,3T,4T,6T;

转速:转速是指硬盘盘片每分钟转动的圈数,单位为rpm。常见:7200rpm,10000rpm,15000rpm

传输速率:传输速率(Data Transfer Rate) 。硬盘的数据传输率是指硬盘读写数据的速度,单位为兆字节每秒(MB/s),常见:6Gb/s,12Gb/s

缓存:硬盘缓存的目的是为了解决系统前后级读写速度不匹配的问题,以提高硬盘的读写速度

磁盘尺寸:3.5”/2.5”/1.8”

是否支持热插拔

2、SSD硬盘

SSD,即固态硬盘,泛指使用NAND Flash组成的固态硬盘。其特别之处在于没有机械结构,以区块写入和抹除的方式作读写的功能,因此在读写的效率上,非常依赖读写技术上的设计SSD读写存取速度快,性能稳定,防震性高,发热低,耐低温,电耗低,无噪音。因为没有机械部分,所以长时间使用也出现故障几率也较小。缺点:价格高,容量小,相对普通机械硬盘性价比低

硬盘sas和sata有啥区别

SA(Serial Attached SCSI)和SATA(Serial ATA)是两种不同类型的接口和协议,用于连接计算机硬盘驱动器。

  1. 速度和性能:
  • SAS:SAS 是一种高性能、高速度的接口,通常用于企业级环境。它支持更高的传输速率,可以达到12Gbps(甚至更高)的速度。SAS 设备通常更适合于对性能和可靠性要求较高的环境,如数据中心、服务器等。
  • SATA:相较而言,SATA 接口的传输速率较低,通常为6Gbps。SATA 硬盘通常用于一般消费者级电脑和一些小型企业应用。
  1. 适用场景和用途:
  • SAS:由于其更高的性能和可靠性,SAS 硬盘通常用于需要大容量、高速传输和高负载的环境,例如企业服务器、大型数据库、高性能计算等。
  • SATA:SATA 硬盘则更适合一般桌面计算机、个人笔记本电脑和小型企业应用,因为它们提供了较为经济实惠的存储解决方案。
  1. 可靠性和故障处理:
  • SAS:SAS 硬盘通常设计用于24/7 运行,并且具有更高的可靠性。它们支持更多的故障排除和RAID(磁盘阵列)功能,能够提供更好的数据保护和可用性。
  • SATA:SATA 硬盘虽然成本更低,但相对而言可靠性较差。它们通常用于一般性存储需求,但并不适合于对数据可靠性有严格要求的环境。
  1. 成本:
  • SAS:SAS 硬盘的成本通常较高,适用于需要高性能和可靠性的专业环境。
  • SATA:SATA 硬盘相对更经济实惠,更适合普通消费者和小型企业。

总体而言,SAS 提供更高的性能、可靠性和适应性,适合于大型企业和高要求的应用环境,而 SATA 则更适合一般消费者和小型企业,提供了经济实惠的存储解决方案。

服务器硬件---网卡

服务器都在主板上集成了网卡,传输速率为1Gbps,即千兆网卡;

特殊应用需要高端网卡,如光纤网卡,Infiniband网卡等,传输速率能达到10Gbps、20Gbps,即万兆网卡;

服务器硬件---相关其它硬件

服务器硬件---阵列卡

Raid卡用来实现RAID的建立和重建,检测和修复多位错误,错误磁盘自动检测等功能。RAID芯片使CPU的资源得以释放,阵列卡把若干硬盘驱动器按照一定要求组成一个整体、由阵列控制器管理的系统阵列卡可以用来提高磁盘子系统的性能及可靠性;

支持的多种RAID级别,RAID0,1,5,6等;

阵列卡提供缓存及电池保护;

服务器硬件---电源

支持服务器的电力负载,支持冗余,防止电源故障 ,故障预警和防止 ,故障之前的预防性维护,保证服务器持续运行,电源子系统包括:冗余电源和风扇

服务器硬件---显卡

服务器都在主板上集成了显卡,但是显存容量不高,一般为16M或32M,GPU: Graphic ProcessingUnit,即“图形处理器”

服务器硬件---热插拔技术

热插拔技术,称为热交换技术(Hot Swap),允许在不关机的状态下更换故障热插拔设备,常见的热插拔设备:硬盘,电源,PCI设备,风扇等。热插拔硬盘技术与RAID技术配合起来,可以使服务器在不关机的状态下恢复故障硬盘上的数据,同时并不影响网络用户对数据的使用

服务器硬件---机柜

机架式服务器-服务器放置在机柜中

通常使用的机柜是42U(约2米高)机柜( 1U=44.45mm)

外观尺寸一般为:宽600_深1000_高2000(mm)

在一个机架上,累计设备U数一般不超过26U,全1U设备部署数量一般不超过16台,全2U设备一般不

超过12台,全4U设备一般4到7台

机架式服务器-机架及其配件

7、各种硬件处理速度和性能优化

服务器的性能短板:如果CPU有每秒处理1000个服务请求的能力,各种总线的负载能力能达到500个,但网卡只能接受200个请求,而硬盘只能负担150个的话,那这台服务器得处理能力只能是150个请求/秒,有85%的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶颈。

上图可以看到,CPU最快,一个时钟周期是0.3纳秒,内存访问需要120纳秒,固态硬盘访问需要50-150微秒,传统硬盘访问需要1-10毫秒, 网络访问最慢,都是几十毫秒。

上图最有趣的地方在于它把计算机世界的时间和人类世界的时间做了对比,常常把CPU比喻成跑得很快,但是记不住事情的“阿甘”, 他的一个时钟周期如果按1秒算:

内存访问就是6分钟

一次 CPU 上下文切换(系统调用)需要大约需要1小时

在 1Gbps 的网络上传输 2K 的数据需要10多个小时

从 SSD 读取 1MB 的顺序数据,大约需要 1ms,换算成人类时间是 1个月

从磁盘读取 1MB 连续数据需要 20ms,换算成人类时间是 20个月如果说打开一个网页可以秒开的话,那也相当于100年

对于CPU来说,这个世界真是太慢了!

存储器的层次结构

上图以层次化的方式,增加了价格信息,它展示了一个真理:世界上没有免费的午餐。存储器越往上速度越快,但是价格越来越贵, 越往下速度越慢,但是价格越来越便宜。正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案。

并发和多线程

CPU的速度超级快,不能老是让它闲着,要充分地压榨它!这里有两个强劲的理由:

  1. 人类需要多个程序“同时”运行,我们要把CPU的时间进行分片,让各个程序在CPU上轮转,造成一种多个程序同时在运行的假象,即并发。
  2. 当CPU遇到IO操作(硬盘,网络)时,不能坐在那里干等“几个月”甚至“几年”,在等待的时候,一定要切换,去执行别的程序。

说起来简单,但是程序的切换需要保存程序执行的现场,以便以后恢复执行,于是需要一个数据结构来表示,这就是进程了。如果一个进程只有一个“执行流”, 如果进程去等待硬盘的操作,那这个程序就会被阻塞,无法响应用户的输入了,所以必须得有多个“执行流”,即多线程。

缓存

需要持久化的数据一定要保存到硬盘中,但是硬盘超级慢,支持不了大量的并发访问,那怎么办呢?

可以把最常访问的热点数据放到CPU的缓存中嘛, 其实CPU也是这么做的,但是CPU的L1, L2, L3级缓存实在是太小, 根本满足不了需求。于是只好退而求其次,把热点数据放到速度稍慢的内存中,于是应用程序的缓存就出现了。缓存虽然是解决了问题,但是也带来了更多的问题,例如:缓存数据和数据库数据怎么保持一致性?

缓存如果崩溃了该怎么处理?数据在一台机器的内存放不下了,要分布到多个机器上,怎么搞分布式啊,用什么算法?.....

异步

对于Tomcat这样的应用服务器,对于每个请求都要用一个线程来处理,如果现在有一万个请求进来,Tomcat会建立1万个线程来处理吗? 不会的,因为线程多了开销会很大 ,线程切换起来也很慢,所以它只好用个线程池来复用线程。

现在假设线程池中有一千个可用线程(已经非常多了),它们都被派去访问硬盘,数据库,或者发起网络调用,这是非常慢的操作,导致这一千个线程都在等待结果的返回(阻塞了),那剩下的九千个请求就没法处理了,对吧?所以后来人们就发明了新的处理办法,仅使用几个线程(例如和CPU核心数量一样),让他们疯狂运行,遇到I/O操作,程序就注册一个钩子函数放在那里,然后线程就去处理别的请求,等到I/O操作完成了,系统会给这个线程发送一个事件, 线程就回过头来调用之前的钩子函数(也叫回调函数)来处理。

这就是异步,非阻塞的处理方式。nginx,Node.js等采用的都是类似的思想。

单线程

Redis使用单线程的方式来处理请求的,为什么用单线程就可以呢? 它为什么不像Tomcat那样使用多线程和线程池呢?因为它面对的仅仅是内存,内存的速度在计算机的体系中仅次于CPU,比那些网络操作不知道要快到哪里去了。所以这个唯一的线程就可以快速地执行内存的读写操作,完成从许多网络过来的缓存请求了。单线程还有个巨大的优势,没有竞争,不需要加锁

8、计算机硬件相关命令

范例:/proc/下的文件是存放在内存中的数据,因此不占磁盘空间

[root@test ~]# ll /proc/cpuinfo 
-r--r--r-- 1 root root 0 Mar 5 14:32 /proc/cpuinfo
[root@test ~]# ll /proc/meminfo
-r--r--r-- 1 root root 0 Mar 5 14:32 /proc/meminfo
[root@test ~]# ll /proc/partitions
-r--r--r-- 1 root root 0 Mar 5 14:32 /proc/partitions
[root@test ~]#

查看cpu(lscpu命令)

1.查看cpu信息 cat /proc/cpuinfo
2.查看物理cpu个数: cat /proc/cpuinfo|grep"physical id"| sort| uniq| wc –l
3.查看逻辑cpu个数: cat /proc/cpuinfo| grep "processor"| wc -l
4.# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

一般,服务器上,有几个(颗)cpu,每个cpu是多少核(core)的,每核有几个线程。

范例:用虚机进行cpu命令测试

lscpu命令:精简输出cpu信息

[root@test ~]# lscpu 
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8 #这里代表cpu内核总数=cpu个数*每颗cpu的内核数
On-line CPU(s) list: 0-7
Thread(s) per core: 1 #每核有几个线程
Core(s) per socket: 2 #关注点2:每个cpu是多少核(core)的
Socket(s): 4 #关注点1:有几个(颗)cpu?
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 23
Model: 24
Model name: AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
Stepping: 1
CPU MHz: 2096.063
BogoMIPS: 4192.12
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K #一级缓存包括数据缓存和指令缓存
L1i cache: 64K #一级、二级、三级缓存
L2 cache: 512K #
L3 cache: 4096K #
NUMA node0 CPU(s): 0-7
#cpu支持的一些特性
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
[root@test ~]#

cat /proc/cpuinfo  详细输出cpu信息

[root@test ~]# cat /proc/cpuinfo 
processor : 0 #注意,这个processor 数字代表cpu总核数的序号
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 0 #这个physical id数字代表次内核位于哪个实际物理cpu上。
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 1
siblings : 2
core id : 0
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 1
siblings : 2
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

processor : 4
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 2
siblings : 2
core id : 0
cpu cores : 2
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

processor : 5
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 2
siblings : 2
core id : 1
cpu cores : 2
apicid : 5
initial apicid : 5
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

processor : 6
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 3
siblings : 2
core id : 0
cpu cores : 2
apicid : 6
initial apicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

processor : 7
vendor_id : AuthenticAMD
cpu family : 23
model : 24
model name : AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping : 1
microcode : 0x8108102
cpu MHz : 2096.063
cache size : 512 KB
physical id : 3
siblings : 2
core id : 1
cpu cores : 2
apicid : 7
initial apicid : 7
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero arat overflow_recov succor
bogomips : 4192.12
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:

[root@test ~]#

🍀 案例

物理机情况

查看内存(内存和swap交换分区 free命令)

[root@test ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 126M 1.5G 9.4M 122M 1.5G
Swap: 2.0G 0B 2.0G

[root@test ~]# cat /proc/meminfo
MemTotal: 1863104 kB
MemFree: 1608932 kB
MemAvailable: 1591844 kB
Buffers: 2108 kB
Cached: 100168 kB
SwapCached: 0 kB
Active: 63844 kB
Inactive: 71652 kB
Active(anon): 33580 kB
Inactive(anon): 9288 kB
Active(file): 30264 kB
Inactive(file): 62364 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 33280 kB
Mapped: 20992 kB
Shmem: 9648 kB
Slab: 55648 kB
SReclaimable: 22752 kB
SUnreclaim: 32896 kB
KernelStack: 4640 kB
PageTables: 3184 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3028700 kB
Committed_AS: 200012 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 180228 kB
VmallocChunk: 34359310332 kB
HardwareCorrupted: 0 kB
AnonHugePages: 4096 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 81792 kB
DirectMap2M: 2015232 kB
DirectMap1G: 0 kB
[root@test ~]#

查看硬盘和分区(lsblk命令)

[root@test ~]# lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─centos-root 253:0 0 47G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom

[root@test ~]# cat /proc/partitions
major minor #blocks name

8 0 52428800 sda
8 1 1048576 sda1
8 2 51379200 sda2
11 0 4554752 sr0
253 0 49274880 dm-0
253 1 2097152 dm-1
[root@test ~]#

进制转换(bc命令)

二进制和十进制转换

Linux下bc命令(进制转换)的使用

(1)10进制-->2机制:(传统的除法可以计算)

[root@test ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
obase=2
11
1011
8
1000
quit
[root@test ~]#

#bc命令默认是识别10进制的;
#obase表示输出;
#ibase表示输入;

(2)2进制-->10进制:

[root@test ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
ibase=2
1011
11
1000
8
quit
[root@test ~]#

windows下计算器的使用

常见单位

注意:买硬盘厂家是按1010来计算的

9、Linux字符集和编码和进制转换

1.字符集和编码🍕

编码和解码

image-20240501160319202

  1. 计算机对数据的操作:

    存储时,对数据进行:编码

    读取时,对数据进行:解码

  2. 编码、解码,会遵循一定的规范 —— 字符集

  3. 字符集有很多中,常见的有(了解):

    1. ASCII :大写字母、小写字母、数字、一些符号,共计128个。
    2. ISO 8859-1 :在 ASCII 基础上,扩充了一些希腊字符等,共计是256个。
    3. GB2312 :继续扩充,收录了 6763 个常用汉字、682个字符。
    4. GBK :收录了的汉字和符号达到 20000+ ,支持繁体中文。
    5. UTF-8 :包含世界上所有语言的:所有文字与符号。—— 很常用。

1.ASCII 字符集

大写字母、小写字母、数字、一些符号,共计128个。

计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,即ASCII(American Standard Code for Information Interchange) 码

ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为 0。(0代表符号位:正数)

image-20240501160635271

2.ISO 8859-1 字符集

image-20240501160813476

image-20240501160801162

3.GB2312 字符集

image-20240501164217783

4.GBK 字符集

image-20240501164226099

5.UTF-8 字符集

UTF-8 :包含世界上所有语言的:所有文字与符号。—— 很常用。

使用原则

使用原则是怎样的?

例如下面文字中,包含有:中文、英文、泰文、缅甸文

我爱你
I love you!
ฉนรกเธอนะ
ကȁနမက ချစတယ။

若使用 ISO8859-1 编码存储,在存入的那一刻,就出问题了,因为 ISO8859-1 仅支持英文!

为保证所有的输入,都能正常存储和读取,现在几乎全都采用: UFT-8 编码。

所以我们编写文件时,也都统一用 UFT-8 编码。

2个范例

例如下面文字中,包含有:中文、英文、泰文、缅甸文

我爱你
I love you!
ฉนรกเธอนะ
ကȁနမက ချစတယ။

若使用 ISO8859-1 编码存储,在存入的那一刻,就出问题了,因为 ISO8859-1 仅支持英文!

  • 范例1:

原则1:存储时,务必采用合适的字符编码 。

否则:无法存储,数据会丢失!

image-20240501161155849

image-20240501165017165

image-20240501165100152

image-20240501165116457

关闭a.txt再次在vscode打开这个文件时,发现一堆?号:

此时,里面的数据已经完全丢失。

image-20240501165224967

image-20240501165251262

  • 范例2:

原则2:存储时采用哪种方式编码 ,读取时就采用哪种方式解码。

否则:数据错乱(乱码)!

image-20240501161335914

image-20240501165437640

我们在vscode里使用gbk字符集方式打开时,就会发现乱码了……我们改为utf-8,就可以正常显示字体了。

image-20240501165447424

字符集(charset)和 字符集编码(简称编码 encoding)的区别?

许多场合下,字符集编码这两个概念常被混为一谈,但两者是有差别的。字符集与字符集编码是两个不同层面的概念。

1.charset是character set的简写,即字符集,即二进制和字符的对应关系,不关注最终的存储形式。 2.encoding是charset encoding的简写,即字符集编码,简称编码,实现如何将字符转化为实际的二进制进行存储或相反,编码决定了空间的使用的大小。

Unicode码

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,即ASCII编码,但是要处理中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode 是一个很大的集合,现在的规模可以容纳100多万个符号。Unicode 仅仅只是一个字符集,规定了每个字符对应的二进制代码,至于这个二进制代码如何存储则没有规定。

Unicode编码方案:

(1) UTF-8:变长,1到4个字节
(2) UTF-16:变长,2或4个字节
(3) UTF-32:固定长度,4个字节

注意:

UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,可变长存储。使用 1 - 4 个字节表示一个字符,根据字符的不同变换长度。

编码规则如下:

对于单个字节的字符,第一位设为 0,后面的 7 位对应这个字符的 Unicode 码。因此,对于英文中的 0- 127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码的文档可用 UTF-8 编码打开。

注意:下面这个准则表示utf-8的编码规则: 这里理解起来比较吃力,大概了解即可:

对于需要使用 N 个字节来表示的字符(N > 1),第一个字节的前 N 位都设为 1,第 N + 1 位设为0,剩余的 N - 1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码来填充。

范例:
“汉”的 Unicode 码 0x6C49(110 110001 001001),需要三个字节存储,格式为: 1110xxxx 10xxxxxx 10xxxxxx,从后向前依次填充对应格式中的 x,多出的 x 用 0 补,得出UTF-8 编码为11100110 10110001 10001001

“马”的 Unicode 码 0x9A6C(1001 101001 101100),需要三个字节存储,格式为: 1110xxxx 10xxxxxx 10xxxxxx,从后向前依次填充对应格式中的 x,多出的 x 用 0 补,得出UTF-8 编码为11101001 10101001 10101100

编码转换和查询

1)Unicode编码表查询(很多繁体字)

http://www.chi2ko.com/tool/CJK.htm

(2)编码转换

https://javawind.net/tools/native2ascii.jsp?action=transform

或者

http://www.mytju.com/classcode/tools/encode_utf8.asp

windows文件上传到Linux后乱码问题(iconv命令的使用)

早起windows版本用的是ANSI,现在的win10都用的是utf-8了;

在winodws上新建一个.txt文件,手动选择编码为ANSI编码格式,写入 ‘马哥教育’,再上传到linux上;

显示支持字符集编码列表:

[root@centos76 ~]#iconv -l|more
437//
500//
500V1//
[root@centos76 ~]#ll
total 4
-rw-r--r-- 1 root root 8 Feb 1 11:18 win.txt

#查看文件的文件编码格式:
[root@centos76 ~]#file win.txt
win.txt: ISO-8859 text, with no line terminators


[root@centos76 ~]#cat win.txt #默认在linux无法正常显示文本内容,乱码
í¸羌Խ

[root@centos76 ~]#hexdump -C win.txt
00000000 c2 ed b8 e7 bd cc d3 fd |........|
00000008

#查看当前系统的语言:
[root@centos76 ~]#echo $LANG #发现是utf-8编码
en_US.UTF-8
[root@centos76 ~]#

(1)将wind上文本编码ANSI (GB2312)转换成UTF-8

注意选项:

-f:从哪种字符编格式

-t:要被转换成哪种字符编码格式

[root@centos76 ~]#file win.txt 
win.txt: ISO-8859 text, with no line terminators

[root@centos76 ~]#iconv -f gb2312 win.txt -o win2.txt #注意这里默认就是转换成utf8,因此这里省略掉了-t UTF-8选项;

[root@centos76 ~]#file win*
win2.txt: UTF-8 Unicode text, with no line terminators
win.txt: ISO-8859 text, with no line terminators

[root@centos76 ~]#cat win2.txt
马哥教育[root@centos76 ~]# #liux下正常显示;

(2)将文本编码UTF-8转换成gb2312:

[root@centos76 ~]#file win*
win2.txt: UTF-8 Unicode text, with no line terminators
win.txt: ISO-8859 text, with no line terminators

[root@centos76 ~]#cat win2.txt
马哥教育

[root@centos76 ~]#iconv -f utf8 -t gb2312 win2.txt -o win3.txt
[root@centos76 ~]#file win3.txt
win3.txt: ISO-8859 text, with no line terminators
[root@centos76 ~]#cat win3.txt
í¸羌Խ[root@centos76 ~]#

2.进制转换(常见bin-dec-oct-hex进制)

1、常见的几种进制

1.BIN:binary,二进制的; 
2.OCT:octal,八进制的;
3.HEX:hexadecimal,十六进制的;
4.DEC:decimal,十进制的。

2、26个字母对应的10进制

#26个字母:
A-Z:65--90

91-96:
[
\ '\\'
]
^
_
`
a-z:97--122

3、linux下ascii码表的查看方式

1.安装man-pages软件包
yum install -y man-pages

2.man ascii命令查看

4、Linux下bc命令进行进制转换

(1)10进制-->2机制:(传统的除法可以计算)

[root@centos76 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
obase=2
11
1011
8
1000
quit #输入quit即可退出
[root@centos76 ~]#

bc命令默认是识别10进制的;
obase表示输出;
ibase表示输入;

(2)2进制-->10进制:

[root@centos76 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
ibase=2
1011
11
1000
8
quit
[root@centos76 ~]#

(3)8进制--->10进制:

[root@centos76 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
ibase=8
33
27
quit
[root@centos76 ~]#

(4)bc命令就是linux中的计算器;(可以做加减乘除)

注意除法:

[root@centos76 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
13*2
26
5/2
2
100-1
99
100+1
101
5.0/2
2
5//2
(standard_in) 6: syntax error
quit
[root@centos76 ~]#

3.原码、反码、补码

网上对原码,反码,补码的解释过于复杂,我这里精简6句话:对于有符号的而言:

1)二进制的最高位是符号位:0表示正数,1表示负数 1 -->[0000 0001] -1-->[1000 0001]

2)正数的原码,反码,补码都一样

3)负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)

1--->原码[0000 0001] 反码[0000 0001] 补码[0000 0001]
-1--->原码[1000 0001] 反码[1111 1110] 补码[1111 1111]

4)负数的补码=它的反码+1

5)0的反码,补码都是0

6)在计算机运算的时候,都是以补码的方式来运算的. 1+1 1-1=1+(-1)

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

🍀 微信公众号

《云原生架构师实战》

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

🍀 博客

www.onlyyou520.com

🍀 知乎

https://www.zhihu.com/people/foryouone

🍀 语雀

https://www.yuque.com/books/share/34a34d43-b80d-47f7-972e-24a888a8fc5e?# 《云笔记最佳实践》

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!


0%