自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 物理cpu个数、核数与逻辑cpu个数

物理cpu个数、逻辑cpu个数、核数

2022-09-06 10:31:01 400 2

原创 Win10无法访问linux上的samba服务问题解决

服务端:Ubuntu20.04, samba版本4.13.17-Ubuntu客户端:Win10问题1:按照教程搭建好samba服务之后,从windows可以ping通linux的情况下,从windows端无法连接samba服务器。解决:通过打开Lanman工作站的启用不安全的来宾登录选项解决无法访问的问题。win+R输入gpedit.msc计算机配置->管理模板->网络->Lanman工作站->启用不安全的来宾登录。问题2:

2022-05-11 10:31:53 2900

原创 顺序IO和随机IO

对于从磁盘中读取数据的操作,叫做磁盘IO,分两种情况:随机IO就是读写的内容位于分散在磁盘的不同位置,需要来回查找所以效率低;顺序IO就是读写的内容集中存储在磁盘的一块,从前到后依次读取,免去了查找的过程,所以效率高。机械磁盘的顺序IO和随机IO的性能差异巨大。顺序IO时缓存命中率高,节省寻道时间。随机IO不停寻址,缓存失效。应用:复制文件夹:复制文件夹的时候,如果包含许多小文件,复制速度很慢。为了提高复制速度,可以先打一个包,打包把文件夹变成一个大文件。再复制的时候,变成顺

2021-12-14 13:47:27 5143

原创 守护进程(daemon)

守护进程是在后台运行不与控制终端关联的进程。Unix系统有很多后台进程,执行不同的任务管理。守护进程没有控制终端源于它们由系统初始化脚本启动。守护进程也可以从终端启动,这样守护进程必须亲自脱离与控制终端的关联,避免与作业控制终端会话管理、终端产生信号等发送任何不期望的交互,也可以避免在后台运行的守护进程非预期地输出到终端。守护进程启动方法:1)在系统启动阶段,由系统初始化脚本启动;这些脚本位于/etc目录或/etc/rc开头地某个目录。这些脚本启动地守护进程拥有超级用户特权;如:inet

2021-12-09 19:48:34 2336

原创 strncpy函数使用注意

与同事互相code review的时候,同事指出我的代码在使用strcpy,建议改为strncpy,避免缓冲区溢出问题。于是不加思索改为strncpy,谁知道不小心遇到strncpy另一个问题,也可能导致缓冲区溢出。先贴上strncpy的函数原型:char *strncpy(char *dest, const char *src, size_t n)和strcpy相比多了一个参数n,意思是最多拷贝n个字节,以避免缓冲区的溢出。我的代码是这样的:char dest[8] = {0};

2021-09-26 12:42:03 635

原创 ulimit -c unlimited

ulimit -a 可以显示当前的各种用户进程限制。ulimit -c umlimited 在发生段错误的时候可以产生core文件。

2020-06-07 16:29:41 1165 1

原创 grep转义通配符(点)

111

2020-05-29 19:57:37 6940

原创 git pull报错:Your local changes to the following files would be overwritten by merge

git pull 从服务器拉取代码的时候,遇到如下错误提示:error: Your local changes to the following files would be overwritten by merge: project/Makefile project/include/TNClientInfoManger.h project/src/main.c test/ut/MakefilePlease, commit your changes or stash ...

2020-05-26 21:02:15 955

原创 第18讲 | DNS协议:网络世界的地址簿

现在网站的数目非常多,如果要访问网站的时候全部使用IP地址,恐怕你很难记住。所以,需要一个地址簿,根据名称查看具体的IP地址。DNS服务器这个网络世界中的地址簿,就是DNS服务器。每个人上网都需使用DNS服务器,因此一旦出故障,整个互联网都讲瘫痪。另外,上网的人分布在世界各地,如果大家都访问同一台服务器,那么时延会非常大。因此,DNS服务器一定要设置成高可用、高并发和分布式的。我们看下DNS树状的层次结构。根DNS服务器:返回顶级域DNS服务器的IP地址 顶级域DNS服务器:返回权

2020-05-20 20:45:45 262 1

原创 git checkout 与 git clean

git 用了好久,但是很多功能都没有用明白。平时主要用的命令是git pull ——从代码服务器拉取最新的代码到本地; git add ——提交到暂存区; git commit ——提交代码; git push ——向服务器推送代码。问题拉取代码的时候和同事的代码冲突了,我本地并没有做过多的修改,因此我的目标是不用保留我本地的修改,解决冲突。解决我用到两个命令:git checkout . git clean -dfgit checkout 的作用是放弃掉还没有加入到暂存区的

2020-05-14 17:56:44 1545

原创 序列化和反序列化

总是听到这两个名词,但是又不知道具体是指什么意思,所以带着疑问在网上搜索了一番,将我的理解记录下来。序列化是指把内存中的对象转换为字节序列的过程。反序列化是序列化的逆过程,将字节序列恢复为内存中的对象。凡是离开内存的信息都要进行序列化,比如本地存储或网络传输。为什么要进行序列化/反序列化,不是很麻烦吗?为什么不能直接传输对象呢?答案是内存对象不能直接传输,网络传输或本地存储的内...

2020-05-07 16:23:15 198

原创 C语言逗号运算符优先级

在C语言中逗号运算符(,)是优先级最低的运算符。所谓的优先级是指当有许多运算符在一起的时候,谁先执行的问题。例如:1+2*3,先执行加号运算符还是先执行乘号运算符。赋值运算符(=)是优先级较低的运算符,但逗号运算符的优先级低于赋值运算符(=)。逗号运算符还有以下这些特点:从左向右执行表达式。即(i+1, i*2, i-3)这个表达式先计算最左边的i+1,然后是i*2,最后是i-3。...

2020-05-02 08:42:47 7892 2

原创 第16讲 | 流媒体协议:如何在直播里看到美女帅哥?

最近直播比较火,那一个直播系统里有哪些组成部分,都用了哪些协议呢?无论直播还是点播,都是对于视频数据的传输。这里面涉及到许多的技术名词。三个名词系列名词系列一:AVI、MPEG、RMVB、MP4、MOV、FLV、WebM、WMV、ASF、MKV。是不是很熟悉RMVB和MP4。 名词系列二:H.261、H.262、H.263、H.264、H.265。重点关注H.264。 名词系列三:...

2020-05-01 10:55:30 909

原创 第15讲 | HTTPS协议:点外卖的过程原来这么复杂

HTTP协议用来看新闻没问题,但是到了更严肃的场景,就会存在安全风险。比如,你点外卖要下单支付,如果用HTTP协议,很可能会泄漏安全信息。你发送一个请求,说我要点这个外卖,然后这个包可能被黑客截获了,黑客假装自己是外卖网站,然后回复你一个假消息,让你输入银行卡号、密码等安全信息。如果你真的发给他,那你的安全信息就泄漏了。这个问题怎么解决呢?一般的思路是加密。加密分为两种,一种是对称加密,一...

2020-04-30 20:43:44 378

原创 计算机中的IO这个术语到底是什么意思?

对于计算机中反复出现的IO这个概念不是很清楚,查了一下百度,除了说明是Input/Output之外,其他完全不知所云。然后查了下维基百科,终于有了一点眉目:Incomputing,input/outputorI/O(or, informally,ioorIO) is the communication between an information processing sy...

2020-04-27 17:44:55 13306

原创 Linux cp命令拷贝目录中的隐藏文件

使用cp命令拷贝一个目录到另一个目录一般使用:cp -R dir1/* dir2这条命令将dir1目录下的所有文件和子目录拷贝到dir2目录下,但是不会拷贝隐藏文件,例如.gitignore。所以要拷贝隐藏文件需要使用点(.)代替星号(*),即:cp -R dir/. dir2这条命令会将dir1目录下所有文件和子目录拷贝到dir2目录下,包括隐藏文件。...

2020-04-26 21:40:16 3146

原创 git pull更新代码时每次都需要输入用户名密码的解决办法

问题:使用git pull命令从代码库更新代码到本地时,每次都要求输入用户名密码,十分不方便。解决办法:在项目目录下输入如下命令:git config --global credential.helper store然后再次使用git pull更新代码时,输入一次用户名密码,此时git会将用户名密码保存下来,以后就不用再输入了。...

2020-04-21 22:31:26 1691

原创 第14讲 | HTTP协议:看个新闻原来这么麻烦

HTTP协议,是每个人上网用的第一个协议。当你在浏览器输入http://www.163.com,这其实是个URL,叫统一资源定位符。统一是说访问网络资源都按照这种统一的格式。http表示使用HTTP协议,www.163.com是一个域名,表示互联网的某个位置。正是因为它是统一的,当你输入这个URL时,浏览器才直到怎么去统一处理。HTTP请求的准备浏览器将www.163.com的域名发给...

2020-04-17 23:03:09 284

原创 第13讲 | 套接字Socket:Talk is cheap, show me the code

这一节我们讲基于TCP和UDP协议的Socket编程。TCP和UDP协议分客户端和服务端,Socket编程也同样这么分。Socket,这个单词的含义有插口或者插槽的意思。你可以想象网络通信就是弄一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以通信前双方首先都要建立一个Socket。建立Socket的时候,要设置哪些参数呢?Socket编程进行的是端到端的网络通信,它不知道中...

2020-04-16 17:45:40 566

原创 第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难

公网是不可靠的,需要很多机制保证传输的可靠性,这里需要恒心,即各种重传的策略,还要有智慧,即各种算法。如何做个靠谱的人?怎么算是个靠谱的人?领导交代的事情到底能不能做到,什么时候完成都要有一个应答,回复。这样,处理过程中有异常,能尽快让领导知道。对应到网络协议上,客户端没发送一个包,服务端都应该有个回复,如果服务端超过一定的时间没有回复,客户端就会重新发送这个包,直到有回复。...

2020-04-14 20:25:18 283

原创 第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松

上一讲我们讲了简单的UDP协议,UDP相信网络世界是简单的,所以UDP没有复杂的机制。这次我们讲TCP,TCP是很复杂的,因为它认为网络世界是复杂的,丢包、乱序、拥堵是家常便饭,一不小心数据包就无法送达。TCP包头格式TCP头的格式比UDP复杂许多。首先,源端口号和目的端口号必不可少。如果没有端口号就不知道该发给哪个应用。接下来是序号。为什么需要序号字段?是为了解决乱序的问...

2020-04-11 21:21:30 172

原创 第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”

前面讲的IP层属于网络层,接下来我们开始讲传输层。传输层有两个重要的协议,一个是TCP,一个是UDP。对于开发应用的人来讲,最常用的就是这两个协议。TCP和UDP有哪些区别?TCP是面向连接的,UDP是面向无连接的。什么是面向连接呢?就是在互通之前先建立连接。所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构保证所谓的面向连接的特...

2020-04-11 13:25:28 192

原创 第9讲 | 路由协议:西出网关无故人,敢问路在何方

上一讲我们讲了一个相对简单的情况,网络包出了网关只有一条路。但真实的网络世界是很复杂的,网络包除了网关会有很多条路可以走,那么到底选择走哪一条路呢?如何配置路由器?根据上一讲的内容,我们知道路由器就是一个网络设备,有多张网卡。当一个网络包从一个入口进来的时候,路由器会根据一个本地的路由表来决定如何正确地转发数据包。一张路由表包含多条路由规则,每一条规则至少包含三项信息:目的网络:这...

2020-04-10 21:59:48 205

原创 第8讲 | 世界那么大,我想出网关:欧洲十国游与玄奘西行

之前几节我们讲的都是内网里的协议,现在我们去外网看看。怎么在宿舍上网?之前我们在宿舍组了一个局域网用来打游戏,现在我们看怎么连到外网。学校给每个宿舍的网口分配一个IP地址,这个IP是校园网的IP,假设是10.10.x.x。宿舍网的IP地址为192.168.1.x。要在宿舍上网有两个办法:第一个办法,让宿舍长再买一张网卡,这个时候,宿舍长的电脑有两张网卡,一张网卡的线插到宿舍的交换机...

2020-04-09 21:49:29 308

原创 第7讲 | ICMP与ping:投石问路的侦察兵

我们常常会遇到网络不通的问题,机器明明就在那里,但你就是连不上去。这种情况该怎么办呢?ICMP协议的格式一般情况下,你会想到ping一下,但你知道的ping是如何工作的吗?ping是基于ICMP协议工作的。ICMP全称是Internet Control Message Protocol,就是互联网控制报文协议。这里的控制是什么意思呢?网络环境是异常复杂的,当网络包在传输的过程中会遇...

2020-04-08 22:13:22 238

原创 第6讲 | 交换机与VLAN:办公室太复杂,我要回学校

上一讲我们在大学宿舍租了一个本地的局域网,但这个场景只用了一台交换机。今天我们看一个复杂一点的场景,办公室。拓扑结构是如何形成的?办公室每张桌子旁边都有一个网口,一层楼就会有几十个上百了网口。这个时候,一台交换机肯定不够用,需要多台交换机,交换机连接起来,就形成一个复杂的网络拓扑。我们先看最简单的两台交换机的情形。两台交换机连着三个局域网,每个局域网上有多台机器。如果机器1知道机器...

2020-04-07 23:03:58 567

原创 第5讲 | 从物理层到MAC层:如何在宿舍自己组网玩联机游戏?

早先的路由器是奢侈品,大学宿舍里的几个人想要联机玩《魔兽争霸》需要自己组网。第一层(物理层)物理层怎么互通呢?靠网线,网线有两种,一种是电脑连电脑,一种是电脑连网口。我们用电脑连电脑的网线。一根网线,两个头,一头插在一台电脑的网卡上,一头插在另一台电脑的网卡上。仅仅这样还是通不了的,水晶头要做交叉线,就是1-3、2-6交叉接法。水晶头的1、2和3、6脚,分别起着收、发信号的作用。将...

2020-04-05 11:13:15 433

原创 第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?

计算机要和其他计算机通信,首先得有一个IP地址,我们需要把它配置到网卡上。如何配置IP地址?你可以使用命令行自己配置一个地址。可以用ifconfig,也可以使用ip addr。使用net-tools:$ sudo ifconfig eth1 10.0.0.1/24$ sudo ifconfig eth1 up使用iproute2:$ sudo ip addr add ...

2020-04-04 21:30:35 234

原创 第3讲 | ifconfig: 最熟悉又陌生的命令行

折腾过计算机的人都知道如何查看IP地址,在Windows上是ipconfig,在Linux上是ifconfig或ip addr。但是如果你登入一个裁剪过的Linux操作系统,里面既没有ifconfig,也没有ip addr,这是时候怎么办?你可以自行安装net-tools和iproute2这两个工具。装好之后,运行ip addr,我们会看到下面的内容:1: lo: <LOOPBAC...

2020-04-04 11:23:59 210

原创 第2讲 | 网络分层的真实含义是什么?

计算机网络有一个显著的特点,就是不仅需要背诵,还需要将原理烂熟于胸。四个问题我们都知道网络是分层的,每一层有每一层的沟通方式。第一个问题:TCP在进行三次握手的时候,IP层和MAC层对应有什么操作?学习第三层协议的时候会提到,IP协议里面包含源IP地址和目标IP地址。还会学到路由协议。路由就像中转站,从原始地址A到目标地址D,中间经过两个中转站A->B->C->D...

2020-04-03 21:30:26 833

原创 第1讲 | 为什么要学习网络协议?

上帝为了阻止人类联合起来造通天塔,就让人类讲不同的语言,人类无法沟通,达不成“协议”,人类的通天塔计划就失败了。千年之后,程序员通过使用通用的语言,将所有的计算机连接起来,形成当今的互联网。#include <stdio.h>int main(){ printf("Hello World!");}上面这段代码是计算机使用C语言向世界说你好的方式。其实这段文...

2020-04-02 21:21:58 509

原创 开篇 | 想成为技术牛人?先搞定网络协议!

为什么网络协议这么重要?

2020-04-02 17:45:56 165

原创 《Unix环境高级编程》——文件I/O(2)

文件共享UNIX系统支持在不同进程间共享打开文件。内核使用3种数据结构标识打开文件,它们之间的关系决定了在文件共享方面一个进程可能对另一个进程产生的影响。1)每个进程在进程表种都有一个记录项,记录项中包含一张打开文件描述符表,每个描述符占用一项。与每个文件描述符项关联的是:a. 文件描述符标志; b. 指向一个文件表项的指针。2)内核为所有打开文件维持一张文件表,每个文件表项包括:...

2020-02-24 22:14:12 80

原创 《Unix环境高级编程》——文件I/O(1)

引言本章先说明可用的文件I/O函数——打开文件、读文件、写文件等。UNIX系统种的大多数文件I/O只需要用到5个函数:open、read、write、lseek以及close。然后说明不同缓冲区长度对read和write函数的影响。本章描述的函数被称为不带缓冲的I/O(unbuffered I/O)。术语不带缓冲指的是每个read和write都调用内核的一个系统调用。只要涉及多个进程资...

2020-02-18 21:58:33 80

原创 《Unix环境高级编程》——Unix基础知识

引言所有操作系统都为它们所运行的程序提供服务。典型的服务有:执行新程序、打开文件、读文件、分配存储区、获得当前时间等。UNIX体系结构操作系统是一种软件,它控制计算机资源,提供程序运行环境。我们通常将这种程序称为内核(kernel),因为它相对较小,而且位于系统核心。内核的接口称为系统调用(system call)。公用函数库构建在系统调用接口之上,应用程序既可以使用公用函数库...

2020-02-14 20:44:28 332

原创 《TCP/IP详解卷一》学习笔记(11)TCP的交互数据流

引言研究发现,如果按照分组数量计算,约有一半的TCP报文段包含成块数据(如电子邮件、FTP和Usenet新闻),另一半则包含交互数据(如Telnet和Rlogin)。如果按照字节计算,成块数据和交互数据的比例约为9:1。这是因为成块数据的报文段基本都是满长度的,而交互数据则小得多。TCP要处理这两类数据,使用的处理算法有所不同。本篇笔记以Rlogin应用为例观察交互数据的传输过程。并揭示延...

2019-04-06 10:58:52 102

原创 《TCP/IP详解卷一》学习笔记(10)TCP连接的建立与终止

引言 TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须现在双方之间建立一条连接。本篇笔记详细讨论一个TCP连接是如何建立的以及通信结束后如何终止的。连接的建立与终止建立连接的三次握手:客户端发送一个SYN报文指明客户打算连接服务器的端口,并发送自己的初始序号(ISN) 服务端发送SYN+ACK报文,设置服务器自己的初始序号ISN,并对客户的初始序号加1...

2019-04-05 17:24:14 267

原创 《TCP/IP详解卷一》学习笔记(9)TCP:传输控制协议

引言本篇笔记介绍TCP为应用层提供的服务,以及TCP首部中各个字段。TCP提供的服务TCP和UDP都是用相同的网络层(IP),但是TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户端和一个服务器)在彼此交换数据之前先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。TCP通过下列...

2019-04-03 18:00:45 185

原创 《TCP/IP详解卷一》学习笔记(8)Traceroute程序

引言Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。Traceroute程序还可以让我们使用IP源站选路选项。Traceroute程序的操作在学习Ping程序的时候,我们描述了IP记录路由选项(RR)。为什么不使用这个选项,而另外再开发新一个应用?不是所有的路由器都支持记录路由选项,该选项在某些路径上不能使用 记录路由一般是单向的选项。Pin...

2019-03-28 16:40:48 175

原创 《TCP/IP详解卷一》学习笔记(7)Ping程序

引言“ping”这个名字源于声纳定位操作。 Ping程序的目的是为了测试另一台主机是否可达。 该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。 Ping程序能测出到某台主机的往返时间,以表明该主机离我们由多远。Ping程序我们称发送回显请求的ping程序为客户,被ping的主机为服务器。大多数的TCP/IP实现都在内核中直接支持Ping服务器。ICMP回显...

2019-03-28 15:14:55 208

Tiny210用户手册

tiny210用户手册,非常好的资源,真是太棒了,妈妈再也不用担心我的嵌入式开发了。

2014-05-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除