,此时要给客户端一个确认信号ACK,同时发送SYN包,此时服务器进入SYN_RECV状态 第三次握手:客户端收到服务器的发的ACK+SYN包,向服务器发送ACK,发送完毕之后,客户端和服务器进入ESTABLISHED...(SOCK_STREAM):流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序性。...数据报socket(SOCK_DGRAM):数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP。...accept()函数:服务端程序调用listen()函数创建等待队列之后,调用accept()函数等待并接收客户端的连接请求。它通常从由bind()所创建的等待队列中取出第一个未处理的连接请求。...github链接:https://github.com/RiceChen/Linux-process-communication.git,记得加个star。
一、TCP网络开发API TCP,全称传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议。...半连接队列和全连接队列: 在三次握手中,Linux kener 协议栈会维护两个队列:半连接队列和全连接队列。...在阻塞模式下,accept()函数一直等待信号,直到全连接队列中有节点才返回。 在非阻塞模式下,全连接队列为空accept()函数就返回-1,否则返回socket fd。...在listen()函数有,有一个backlog参数,这个参数表示的是全连接队列的大小还是半连接队列的大小呢?...随着TCP协议的不断迭代,backlog参数在不同的版本中代表的含义也不相同;它可以是半连接队列大小,也可以是全连接队列大小,也可以是半连接队列+全连接队列的大小总和。不过,效果不会有太大差异。
由于linux系统的稳定性,大部分的PHP服务器都被部署在linux上,而且像redis等扩展在linux能得到更好的支持,所以对于PHP程序员来说,使用linux的功底也相当重要,接下来总结一下我从一开始在...linux下安装配置linux的心得。...linux系统安装 首先是选择linux操作系统,我使用的是Cent OS 6.7 ,它类似红帽系统,简单易接触,而且开源免费。...用过小巧的virtual box,在win7下安装要改theme主题文件,辛苦装好的环境因为未知原因(兼容问题排除后,猜测是BIOS设置的问题,可参考)打不开虚拟机而放弃后,终于选择了VM,VM下安装linux...说一下要注意的地方吧:虚拟机配置选择“桥接模式”,这样,虚拟机和主机就在同一个IP段下,可以很轻松地互相访问,VM下如图: ? 然后是我们经常要遇到的问题网络配置、和虚拟之间的交互、yum配置。
综合 select 和 poll 的一些优缺点,Linux 从内核 2.6 版本开始引入了更高效的 epoll 模型,本节我们来详细介绍 epoll 模型。...必须先需要创建一个 epollfd,这需要使用 epoll_create 函数去创建: #include int epoll_create(int size); 参数 size 从 Linux...当然,这并不意味着,poll 函数的效率不如 epoll_wait,一般在 fd 数量比较多,但某段时间内,就绪事件 fd 数量较少的情况下,epoll_wait 才会体现出它的优势,也就是说 socket...那么水平模式的触发条件是状态处于高电平,而边缘模式是状态改为高电平,即: 水平模式的触发条件 1. 低电平 => 高电平 2. 高电平 => 高电平 边缘模式的触发条件 1....边缘模式下收取数据的代码示例如下: bool TcpSession::RecvEtMode() { //每次只收取256个字节 char buff[256]; while (true
首先复习一下Kubernetes内的对象类型 Node:运行kubelet(古代叫minion)的计算机 Pod:最小调度单位,包含一个pause容器、至少一个运行应用的容器 RC:复本控制器,用于保持同类...Pod的并行运行的数量 Svc:暴露服务的可访问通信接口 对象之间的通信关系 客户端 服务器 访问方式 master kubelet Node的10250/TCP端口。...不提供pod之间通信的功能,需要装额外的软件来配合。...run/flannel/docker ,故 flannel 必须在 docker 之前启动,如果在docker已经运行的情况下启动flannel,则docker也必须重启才能生效。。...,后者的NetworkMode和IpcMode的值为前者的Id。
游戏开发中的网络通信设计 上节讨论了游戏引擎的选择,这次我们来讨论游戏网络通信需要考虑哪些问题。在项目最开始阶段主要需要考虑的还有网络通信模块,当然如果你做的是单机游戏就可以跳过这部分了。...这里说一下其实如果没有玩法上的限制,能用短链接来实现就尽量用短链接来实现,因为短链接无论是对服务器还是对客户端,短连接对消息的处理会简单很多,而且最重要的是占用的系统资源相对于长连接来说非常少。...而且假如一个逻辑服务器长连接时可以同时保持4000个连接,也就是支持4000人同时在线,但是如果改成短链接的话,这个逻辑服务器可能会支持10000+人同时在线,当然,前提是不影响游戏功能的情况下。...这里有一片文章介绍TCP和UDP怎么选择和设计的比较不错,大家可以参考一下:UDP vs....TCP:https://gafferongames.com/post/udp_vs_tcp/ 我们再说一下上文提到的用socket来模拟短连接这点。
大家好,又见面了,我是你们的朋友全栈君。 1....Linux zip命令 压缩 zip -r filename.zip ./* // 将当前目录下的所有文件和文件夹全部压缩成 filename.zip文件 -r表示递归压缩子目录下所有文件...Linux tar命令 -c: 建立压缩档案 -x: 解压 -t: 查看内容 -j: 通过bzip2的支持进行压缩/解压,此时文件最好为*.tar.bz2 -z: 通过gzip的支持进行压缩/解压,此时文件最好为...Linux rar命令 要在Linux下处理.rar文件,需要安装RAR for Linux yum install rar 压缩 rar a filename * //将所有的文件压缩成一个rar...包,名为filename.rar 解压 unrar e filename.rar test // 将filename.rar中的所有文件解压到.
[root@VM-8-8-centos lesson1]# yum install man-pages -y 安装这个后,就可以使用基本的指令了 2.用法 man +man 查询man指令的用法...@VM-8-8-centos lesson1]# man printf 此时的printf是linux上一条基本的打印语句 [root@VM-8-8-centos lesson1]# printf..."hello linux"\n hello linux hello linuxn[root@VM-8-8-centos lesson1]# man 3 printf man+3才为 c语言库函数...是从1970年1月1日开始到现在累计的秒数 即时间戳 时间戳的价值: 单项递增,不重复,比较适合作为一条关键信息的索引值 将时间戳转换成普通时间: [root@VM-8-8-centos...27 28 29 30 23 24 25 26 27 28 29 30 31 6. top指令 在linux
项目启动时,会读取.env文件中的内容,由于没有.env,所以手动复制一份. # 复制.env_example,名字为.env cp .env_example .env 参考 PORT=1337 NODE_ENV...改写文件local_example.js为local.js # 进入/konga/config目录 cd config # 复制 cp local_example.js local.js 修改 # 默认的...6.1 Uncaught ReferenceError: angular is not defined npm run bower-deps 6.2 数据迁移 6.3 konga异地连接kong kong的端口简介以及如何远程连接...kong的管理端口
前言: 可涵开始Linux的新篇章旅行啦,本文主要介绍Linux下的基本指令~ 引言: 何为Linux? Linux是一种免费使用和自由传播的类UNIX操作系统。 那什么是操作系统呢?...——工具 我们下面开始学习Linux下的指令~ 首先我们需要明确,我们现在学习的指令操作和图形化界面没有任何区别。...补充知识:Linux下的目录结构的认识 . 表示当前路径 ..表示上级路径 注意任何一个目录下都有.文件和..文件,用于指向自己和上级目录,根节点的..也表示指向自己。 所以cd .....注意Linux下的路径分隔符是反斜杠 / windows下的路径分隔符是正斜杠 \ 路径分隔符之间一定是一个目录/文件夹 为什么要有路径?...,表示指定路径下的所有文件!
1.切换到/usr/local目录下: wget https://golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz 2.解压 tar -zxvf...go1.9.2.linux-amd64.tar.gz 3.删除压缩包: rm -rf go1.9.2.linux-amd64.tar.gz 4.配置环境变量: vim/etc/profile 在最后一行新增...5.mkdir /go_src ,新建一个目录作为go的工作目录,存放自己写的文件。...在go_src目录下建三个文件,bin,pkg,src,src下新建packs,packs下新建hello,目录结构如下: [root@localhost go_src]# tree . ├── bin...│ └── hello ├── pkg └── src └── packs └── hello └── hello.go 在hello下新建hello.go,内容如下: package main
前言 Linux下的基本指令涵盖了文件管理、文本处理、系统信息、网络配置和权限管理等。 ls 指令 语法 ls [选项] [目录或文件] 功能 对于目录,该命令列出该目录下的所有子目录与文件。...家目录 在Linux系统中,每个用户都有一个家目录。该目录通常位于 /home/username 下,其中 username 是用户的登录名。...例如,如果用户的登录名是 john,那么他的家目录将位于 /home/john 下。...(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。...top Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
命令:alias ll="ls -l" 但是该命令在重新登录后将会丢失 可以保存在用户目录下的.bashrc文件中,不过需要用户重新登录后才会生效,注意不要放在return后,也可以用source ~/...这个文件主要保存个人的一些个性化设置,如命令别名、路径等。...每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。 一般会在.bash_profile文件中显式调用.bashrc。...登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了。
last是一个命令行工具,它用来展示关于系统用户最后登录会话的信息。这个命令非常有用,尤其是当你需要追踪用户活动,或者调查一个可能的安全入侵问题。 本文解释如何使用last命令来审计谁登录了系统。...last读取这个文件,并且打印关于用户登录登出的信息。记录按照时间的反向顺序打印的,从最近的记录开始打印。...输出的每一行从左到右包含的列分别是: 用户名。 当系统重启或者关闭时,last显示指定用户为reboot或者shutdown。 会话占用的 tty。...(time is set to 00:00:00) tomorrow (time is set to 00:00:00) +5min -5days 默认情况下,...last命令打印关于用户登录和登出的时间信息。
输出当前已安装的所有字体 ➜ ~ fc-list /usr/share/fonts/noto/NotoSansTaiLe-Regular.ttf: Noto Sans Tai Le:style=Regular...过滤输出当前已安装的字体(也可以通过grep方式) ➜ ~ fc-list Ubuntu /usr/share/fonts/TTF/Ubuntu-RI.ttf: Ubuntu:style=Italic...最后,在命令行下执行fc-cache命令,更新字体cache文件。 通过以上步骤,新的字体就已经安装好了。 如果是通过对话框来修改字体的软件,在打开切换字体的对话框时,应该就可以看到这个新的字体了。...如果是通过配置文件来修改字体的软件,则可以在配置文件中通过指定 family style size 等信息来修改字体。 4....其他命令 linux下字体管理还有一些其他命令,大都以 fc- 开头,有兴趣的可以自己研究下。
Linux下的GPT分区,这是另外一种分区,针对MBR分区,它有很多优点: (1)几乎突破了分区个数的限制。...因此GPT分区中,主分区和扩展分区,逻辑分区的概念已经很模糊了。甚至没必要这么叫。其实我们知道 扩展分区之所以存在,意义就是为了解决MBR中分区个数的限制问题。...好了,废话不多说,讲解GPT分区的步骤吧。
对于父子进程来说,父进程可以通过wait或这waitpid函数来释放子进程的资源,也可以通过waitpid获得子进程的退出状态。那么这个实现过程是通过阻塞等待,或者不断的轮询。...那么这两个操作对于父进程来说都不是理想的,因此可以通过SIGCHLD信号来实现异步的操作。...也就是当子进程结束的时候通过SIGCHLD信号告诉父进程,然后父进程再去释放其资源,如果没有收到该信号也不影响父进程的运行。 ...,就可以捕捉到子进程的信号了。...还有需要注意的是因为SIGCHLD不能叠加,所以如果多个子进程结束了也只有一个SIGCHLD,那么对于这种情况我们在捕捉函数中使用循环来处理多个子进程结束的情况,下面就直接看代码吧: #include
下载 1.选择合适的yum源 在Linux学习阶段我们已经得知,在Linux环境下要安装应用程序必须要通过yum来进行,所以这里首先给出MySQL的yum源,进入该页面后可以看到有各种各样版本的MySQL...1.为了安装最适合我们操作系统的MySQL,所以我们需要通过cat /etc/redhat-release指令来查看我们Linux的版本 2.可以看到上述yum源中无法查看到MySQL版本的详细信息...,所以我们可以在页面右击鼠标查看页面源代码来获取更详细的版本信息(以el为后缀的就是适配于centos的) 2.将yum源上传到Linux服务器中 选择好合适的yum源以后将其下载下来(我是centos7.9...Windows和Linux之间互传文件,如果你没有下载就使用yum install -y lrzsz安装一下即可(使用rz可以将Windows中的文件传到Linux中,使用sz则是将Linux文件传到windows...当你输入完整的命令后,按下回车键,会提示输入密码,输入正确的密码后,就可以连接到 MySQL 数据库了 此时可以使用show databases查看一下数据库 如果不想使用了,输入quit
作为一个 Linux 系统管理员,有时候你需要修改默认的内核行为。例如,你可能想要启用 SysRq 或者增加 Kernel 能够接受的连接数量。...所有用户可以查看当前的内核参数;仅仅 root 用户可以修改它们的值。 通过将参数名传递给sysctl,你可以检查单个参数的取值。.../proc/sys是一个虚拟目录,它包含文件对象,可以被用来查看或者设置当前的内核参数。 你也可以通过显示合适的文档,来查看参数值。唯一的不同就是文件如何被展示。...> /etc/sysctl.conf 另外修改参数的方式就是使用echo命令将设置写入到/proc/sys目录下的文件中。...总结 sysctl 命令允许你查看并且修改 Linux 内核参数。
下面是我的配置信息: set shortmess=atI syntax enable syntax on set ai set nu set ruler set autoindent set nocompatible... if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif "删除行末的空格
领取专属 10元无门槛券
手把手带您无忧上云