
基础知识
文章平均质量分 80
大囚长
大丈夫遗世独立,孑然一身。
展开
-
重温HTTP协议
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。客户端通过使用网页浏览器、网络爬虫或者其它工具,发起一个HTTP请求到服务器上指定端口(默认端口为80)。服务器上存储着一些资源,比如HTML文件和图像。HTTP协议定义了Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。原创 2024-07-22 14:22:35 · 671 阅读 · 0 评论 -
systemd的unit
是一个用于管理 Linux 系统初始化和服务的系统和服务管理器。中,不同类型的单元(unit)用于配置不同的系统资源和服务。原创 2024-04-12 10:09:27 · 304 阅读 · 0 评论 -
一口气看完45个寄存器,CPU核心技术大揭秘
寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息。x86架构CPU走的是复杂指令集(CISC)路线,提供了丰富的指令来实现强大的功能,与此同时也提供了大量寄存器来辅助功能实现。通用寄存器标志寄存器指令寄存器段寄存器控制寄存器调试寄存器描述符寄存器任务寄存器MSR寄存器。转载 2023-09-06 17:36:35 · 231 阅读 · 0 评论 -
如何通过沙子来改变这个世界?详解芯片工作及制造原理
从非晶硅到单晶硅棒制备芯片所需要的硅必须是要单晶硅,所谓的单晶,就是物质内部的原子排列整齐有序的,而上述得到的反应得到的单质硅内部结构并非有序结构,一般为非晶结构或多晶结构,非晶即为原子排列完全没有规则,杂乱无章,而多晶则为部分结构有序,而长程无序,微观的区域内为晶体结构,很多的晶体结构之间存在着晶界。CPU中的主要部件就是上面所提到的这些晶体管的组合(主要是mos管),以目前的工艺技术,在一块拇指大的单晶硅片上就能制成几十亿个晶体管,并且将所有的晶体管连接起来,组成集成电路,因此工艺非常复杂。转载 2023-09-06 15:00:12 · 870 阅读 · 0 评论 -
科普:芯片中的“层”,“层层”全解析
目前,三星的3D V-NAND存储单元的层数已由2009年的2层逐渐提升至24层、64层,再到2018年的96层[2],2019年8月完成128层V-NAND闪存的开发,并实现量产。以图5所示的晶体管和图6所示的闪存单元举例,电路元器件的结构不管是平面的(图5a、图6a),或者是侧向的(图5b、图6b),元器件上面不再有元器件的堆叠。这种单个电路层的芯片就是早期传统的平面芯片(2D芯片)。但是,这种3D芯片是在封装阶段通过多层芯片裸片堆叠形成的,从芯片制造角度看,这种3D芯片只能看作是伪3D芯片。转载 2023-09-06 14:28:57 · 3942 阅读 · 0 评论 -
Rust 所有权
计算机程序必须在运行时管理它们所使用的内存资源。大多数的编程语言都有管理内存的功能:C/C++ 这样的语言主要通过手动方式管理内存,开发者需要手动的申请和释放内存资源。但为了提高开发效率,只要不影响程序功能的实现,许多开发者没有及时释放内存的习惯。所以手动管理内存的方式常常造成资源浪费。Java 语言编写的程序在虚拟机(JVM)中运行,JVM 具备自动回收内存资源的功能。但这种方式常常会降低运行时效率,所以 JVM 会尽可能少的回收资源,这样也会使程序占用较大的内存资源。转载 2022-10-20 15:14:33 · 121 阅读 · 0 评论 -
云原生的那些坑
第三 ,K10是纯软件,不整啥备份一体机,简单易用,自动化、可视化优秀,运维操作起来毫无压力,而对研发同学们也很友好,保留开放接口,研发可以扩展功能,支持更加复杂的特殊应用。同时,在大规模DevOps场景下,让有状态的应用在CI/CD流程中快速流转,是个老难题,而K10对有状态应用的数据一致性能力,通过持续的“捕获↔️恢复”,就能实现快速迭代。,学习路径极其陡峭。不管是传统架构还是云原生架构,云下的、云上的、多云的,不管稳态业务还是敏态业务,物理的、虚拟的、应用级的、有状态的、无状态的,不管是备份、恢复、转载 2022-10-11 15:17:07 · 384 阅读 · 0 评论 -
什么是云原生,它的关键技术包括哪些
云原生(Cloud Native)是一个组合词,“云”表示应用程序运行于分布式云环境中,“原生”表示应用程序在设计之初就充分考虑到了云平台的弹性和分布式特性,就是为云设计的。可见,云原生并不是简单地使用云平台运行现有的应用程序,它是一种能充分利用云计算优势对应用程序进行设计、实现、部署、交付和操作的应用架构方法。云原生技术一直在不断地变化和发展,关于云原生的定义也在不断地迭代和更新,不同的社区组织或公司对云原生也有自己的理解和定义。转载 2022-10-11 11:29:44 · 620 阅读 · 0 评论 -
K8S核心插件-Flannel网络插件
首先flannel利用Kubernetes API或者etcd用于存储整个集群的网络配置,其中最主要的内容为设置集群的网络地址空间。例如,设定整个集群内所有容器的IP都取自网段“10.1.0.0/16”。接着flannel在每个主机中运行flanneld作为agent,它会为所在主机从集群的网络地址空间中,获取一个小的网段subnet,本主机内所有容器的IP地址都将从中分配。例如,设定本主机内所有容器的IP地址网段“10.1.2.0/24”。然后。...转载 2022-08-18 19:34:01 · 796 阅读 · 0 评论 -
Rpc 和 gRpc 简介汇总
protocolbuffers是google推出的一种数据序列化格式,简称protobuf。优点支持多种编程语言序列化数据体积小反序列化速度快序列化和反序列化代码自动生成缺点可读性差,缺乏自描述性下图(左JSON,右Protobuf)是同样的一段数据,用json和protobuf分别描述(仅表示描述方式,并不是最终生成的序列化数据)。可以看出,protobuf是把json中的key去掉了,用数字代替key,从而实现了减小了序列化后的数据大小。}...转载 2022-07-29 15:14:30 · 5767 阅读 · 0 评论 -
进程优先级 nice
UbuntuTouch的ssh服务会有卡顿的问题,实际上可以通过nice值调高ssh连接优先级来缓解。转载 2022-07-29 11:26:29 · 1195 阅读 · 0 评论 -
linux查看服务器是否开启超线程
超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。如果“siblings”是“cpucores”的两倍,则说明支持超线程,并且超线程已打开。CPU物理个数cat/proc/cpuinfo|grep“physicalid”|sort|uniq|wc-l。操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。...转载 2022-07-27 16:50:46 · 2437 阅读 · 0 评论 -
android各个分区详解
厂家适配层本来Android定义的HAL层是直接和厂家提供的设备驱动打交道的,但是目前厂家不想开源HAL部分的代码,因此很多厂家都提供了一个我称之为厂家适配层的代码,这样在HAL层接口的实现只是一个简单的对厂家适配层接口函数的调用。Boot分区的格式是固定的,首先是一个头部,然后是Linux内核,最后是用作根文件系统的ramdisk。app目录下存放的是核心应用,也就是大家熟知的系统APP,这些系统自带的程序是不能简单的卸载的,要通过一些特殊的方式才能删除(大家熟悉的一种方法是用RE文件管理器)。...转载 2022-07-26 17:45:06 · 2379 阅读 · 1 评论 -
深入理解Linux内核之内存寻址
如何存储这些信息呢?这是个巨大的数目,哪怕内存能提供这样数量的空间,要找到连续768个连续的物理页面在系统运行一段时间后碎片化的情况下,也是不现实的。如图所示,虚拟地址翻译过程,其将虚拟地址分为五部分,标准页大小4kb,所以offset占12位,剩下52位每13位代表相应目录偏移量,先取出cr3寄存器中页全局目录的基址,和偏移量相加,索引到下级页上级目录的极致,如此重复,直到索引到页表取出PPN,由于物理地址偏移量和虚拟地址相同,所以直接和虚拟地址偏移量VPO拼接得到物理地址....转载 2022-07-22 15:00:50 · 598 阅读 · 0 评论 -
Linux内存简单汇总
在经典的计算机科学中,栈被定义为一个特殊的容器,用户可以将数据压入栈中(入栈,push,也可以将已经压入栈中的数据弹出(出栈,pop),但栈这个容器必须遵守一条规则先入栈的数据后出栈(FirstInLastOut,FIFO),多多少少像叠成一叠的书先叠上去的书在最下面因此要最后才能取出。在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。压栈操作使得栈增大,而弹出操作使栈减小。...转载 2022-07-22 13:20:28 · 1393 阅读 · 0 评论 -
CPU,内存,磁盘速度比较
由此可以看出CPU,内存和磁盘在数据处理速度上的巨大差异。如果CPU开启睿频到4.4GHz,速度差距将会进一步拉大,内存即便超频也不会有太大的提升。顺序读/写7,000MBps/5,000MBps。CPU按照正常频率,硬件核心算。SSD速度已知,最快只读。主频3200MHz。......原创 2022-07-21 17:10:17 · 5078 阅读 · 2 评论 -
解析TCP之滑动窗口
滑动窗口实现了TCP流控制。首先明确滑动窗口的范畴TCP是双工的协议,会话的双方都可以同时接收和发送数据。TCP会话的双方都各自维护一个发送窗口和一个接收窗口。各自的接收窗口大小取决于应用、系统、硬件的限制(TCP传输速率不能大于应用的数据处理速率)。各自的发送窗口则要求取决于对端通告的接收窗口,要求相同。滑动窗口解决的是流量控制的的问题,就是如果接收端和发送端对数据包的处理速度不同,如何让双方达成一致。接收端的缓存传输数据给应用层。...转载 2022-07-20 17:39:59 · 1288 阅读 · 0 评论 -
TCP/IP基础
没有牢固的基础就无法彻底的分析出系统和网络的瓶颈。TCP/IP十个问题TCP/IP十个问题。转载 2022-07-20 15:27:34 · 150 阅读 · 0 评论 -
http curl访问的tcp数据包分析
4、curl收到确认连接请求后,ACK置1,确认号ack=1,seq=1,进入到ESTABLISHED(已建立连接)状态。3、http服务器收到连接请求后向curl发送确认,SYN置1,ACK置1,同时产生一个确认序号ack=3150689947。5、curl向http服务器发送请求PUSH置1,ACK置1,seq178,ack1,数据长度78。10、http服务器向curl发包,FINISH置1,ACK置1,seq2782,ack79。...............原创 2022-07-20 15:12:31 · 1706 阅读 · 0 评论 -
PE文件结构详解
Windows程序的各种界面称为资源,包括加速键(Accelerator)、位图(Bitmap)、光标(Cursor)、对话框(DialogBox)、图标(Icon)、菜单(Menu)、串表(StringTable)、工具栏(Toolbar)和版本信息(VersionInformation)等。执行PE文件前,加载程序在进行重定位的时候,会用PE文件在内存中的实际映像地址减PE文件所要求的映像地址,根据重定位类型的不同将差值添加到相应的地址数据中。...转载 2022-07-20 11:13:57 · 11722 阅读 · 4 评论 -
ASCII码与16进制转换表
每个ASCII字符转化成16进制是两位的16进制数,同样,把16进制数转化成ASCII时是两位一起转化成一个ASCII字符,然后把他们联结起来。ASCII是针对字符的编码,几乎是键盘上的字符的编码。所以,45的ASCII表示就是4的ASCII表示和5的ASCII表示联结起来的。转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样。关于这张表,主要是键盘上的键值字符在计算机中的。都只是概念上的东西,在计算机中通通是二进制。存储,为了方便,转化成的16进制表示。...转载 2022-07-19 19:44:57 · 25107 阅读 · 0 评论 -
IP协议号大全
ip协议号大全转载 2022-07-19 19:36:40 · 754 阅读 · 0 评论 -
堆栈的区别
_栈是机器系统提供的数据结构,计算机会在底层对栈提供支持(有专门的寄存器存放栈的地址,压栈出栈都有专门的机器指令执行),这就决定了栈的效率比较高。堆则是C/C++函数库提供的,它的机制是很复杂的(可以了解侯捷老师的内存管理的视频,关于malloc/realloc/free函数等)。例如分配一块内存,堆会按照一定的算法,在堆内存中搜索可用的足够大小的空间,如果没有(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机会分到足够大小的内存,然后进行返回。...转载 2022-07-19 14:05:58 · 348 阅读 · 0 评论 -
gdb使用详细介绍
gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具gdb除支持c/c++语言外还支持go、D、object-c、fortran等语言GDB主要帮助你完成下面四个方面的功能启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)当程序被停住时,可以检查此时你的程序中所发生的事。你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。...转载 2022-07-18 13:37:53 · 12438 阅读 · 1 评论 -
GDB常用指令
GDB:run,执行程序:next,下一步,不进入函数:step,下一步,会进入函数:breakponit,设置断点:list,查看源码:continue,继续执行到下一断点:backtrace,查看当前调用栈:print,打印查看变量:quit,退出 GDB:查看对象类型:查看所有的断点:查看局部变量:查看函数的参数值及要返回的变量值:堆栈帧信息:查看 goroutines 信息。在使用前 ,需要注意先执行 source /usr/local/go/src/runtime/runtime-gdb.py:查原创 2022-07-13 10:30:43 · 2892 阅读 · 0 评论 -
numpy中dot函数使用与解析
在Python中使用numpy时遇到一个函数dot函数,即点乘函数,具体的内部原理以及使用方法,这里进行记录下:首先是一维矩阵的操作:其运算时直接进行乘积:一维矩阵实际就是每个对应的点进行相乘,然后相加对应二维矩阵的点乘是,如果a.dot(b),a的行与b里列数相等,并且行的每一个元素,与列的每一个元素相乘。内部的原理为:[0 2 3 1]分别和 [12][12][15][12]进行相乘上面为numpy库内dot函数的基本原理;...转载 2022-07-04 14:56:23 · 643 阅读 · 0 评论 -
Linux端口转发的几种常用方法
SSH 提供了一个非常有意思的功能,就是端口转发,它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。(2) 远程端口转发(3) 动态转发2. iptables 端口转发CentOS 7.0 以下使用的是iptables,可以通过iptables实现数据包的转发(2)将本地的端口转发到本机端口(3)将本机的端口转发到其他机器3. firewall 端口转发CentOS 7.0以上使用的是firewall,通过命令行配置实现端口转发。(2转载 2022-06-29 16:16:25 · 5102 阅读 · 0 评论 -
CPU、GPU、TPU、NPU区别
CPU即中央处理器(Central Processing Unit)GPU即图形处理器(Graphics Processing Unit)TPU即谷歌的张量处理器(Tensor Processing Unit)NPU即神经网络处理器(Neural network Processing Unit)CPU虽然有多核,但一般也就几个,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理,并辅助有很多加速分支判断甚至更复杂的转载 2022-06-28 19:14:49 · 7719 阅读 · 0 评论 -
蓝牙无线组网的优点、原理及在应用
某天没带手机的情况下去较远位置的咖啡机接咖啡,却意外用手表蓝牙接了一通电话,而且通信质量很棒,遂想到智能手机是不是已经启用了自组网技术,如果这些成为现实的话,未来用于灾难紧急通信还是很有用的,而且一定程度上可以反制电信运营商的垄断乱收费问题。然后找到这篇文章转载一下。引言 随着信息技术的不断发展,传统的有线网络在布线和组网上都存在一定的局限。而蓝牙作为一种短距离无线通信技术,能够有效地简化掌上电脑、笔记本电脑和移动手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与Internet之间.转载 2022-04-13 13:46:48 · 2862 阅读 · 0 评论 -
图解https的建立过程
转载 2022-01-10 16:09:56 · 153 阅读 · 0 评论 -
SIGPIPE
send或者write socket遭遇SIGPIPE信号 当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 又或者当一个进程向某个已经收到RST的socket执行写操作是,内核向该进程发送一个SIGPIPE信号。该信号的缺省学位是终止进程,因此进程必须捕获它以免不情愿的被终止。 根据信号的默认处理规则...转载 2021-11-16 16:20:42 · 2563 阅读 · 0 评论 -
网络编程十宗罪
文章目录 1、TCP没考虑粘包分包2、UDP没考虑丢包3、长连接没考虑应用层心跳4、大数据没考虑分片和流量控制5、客户端没考虑断线重连6、外网没考虑加密通信7、没有处理SIGPIPE8、大小端字节序问题9、多线程发送乱序问题10、串包问题 1、TCP没考虑粘包分包 ...转载 2021-11-16 10:38:11 · 564 阅读 · 0 评论 -
计算机硬件访问延迟的差别
从1990年到2020年,拖动年份可以看到延迟差别,人类的计算机在不断的优化各个硬件产生的延迟瓶颈https://colin-scott.github.io/personal_website/research/interactive_latency.html原创 2021-11-15 10:01:24 · 560 阅读 · 0 评论 -
几种存储技术的比较(FC SAN、IP SAN、DAS、NAS)
几种存储技术的比较(FC SAN、IP SAN、DAS、NAS) SAN 的概念 SAN(Storage Area Network)存储区域网络,是一种高速的、专门用于存储操作的网络,通常独立于计算机局域网(LAN)。SAN将主机和存...转载 2021-11-10 18:48:12 · 5969 阅读 · 0 评论 -
简单理解CPU原理
想了解CPU的工作原理莫过于从头开始用最基础的元素打造一个简单CPU。接下来我会从最简单的晶体管开始一步步讲解CPU是如何构造出来的,明白了这个过程理解 CPU 的工作原理不在话下,在此之后我会从最基础的二进制机器指令一步步讲解高级语言的基本原理,通读本文后你将彻底明白CPU与高级语言的工作原理。以下内容出自我的两篇文章《你管这破玩意叫CPU?》《你管这破玩意叫编程语言?》。每次回家开灯时你有没有想过,用你按的简单开关实际上能打造出复杂的 CPU 来,只不过需要的数量会比较多,也就几十亿个吧。伟大的发明过去转载 2021-10-10 20:25:41 · 4899 阅读 · 1 评论 -
操作系统常用词典(一)
操作系统常用词典(一) 操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。在过去,它是类似 Unix 的系统上唯一可用的用户界面。如今,除了命令行界面(CLI)外,我们还具有图形用户界面(GUI)。..转载 2021-08-27 17:45:10 · 646 阅读 · 0 评论 -
操作系统常用词典(二)
操作系统常用词典(二) USB(Universal Serial Bus):是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。 BIOS(Basic Input Output System):是在通电引导阶段运行硬件初始化,以及为操作系统提供运行时服务的固件。它是开机时运行的第一个软件。 硬实时系统(hard real-time system):硬实时性意味转载 2021-08-27 17:44:12 · 529 阅读 · 0 评论