本文链接:https://blog.csdn.net/K346K346/article/details/103115329 1.命令简介 info 命令用于阅读 Linux 下 info 格式的帮助文档...要理解 info 命令,不仅要学习如何在单个节点中浏览,还要学习如何在节点和子节点之间切换。 就便捷而言,建议使用 man 而不是 info。 2.命令格式 info [OPTION]......命令的 info 格式的帮助文档。...info info (2)查看 info 命令的 info 格式的帮助文档地址。...info -w info /usr/share/info/info.info.gz 参考文献 [1] info(1) manual [2] Linux 命令大全.info 命令
formats (文件格式) 6 Games and toys (游戏和娱乐) 7 Miscellaneous (杂项) 8 Administrative Commands (管理员命令) 9 其他(Linux...打开手册之后我们可以通过 pgup 与 pgdn 或者上下键来上下翻看,可以按 q 退出当前页面 2. info 命令 info 命令 需要单独安装 # 安装 info $ sudo apt-get...update $ sudo apt-get install info # 查看 ls 命令的 info $ info ls info 来自自由软件基金会的 GNU 项目, 是 GNU 的超文本帮助系统...man 和 info 就像两个集合,它们有一个交集部分, 但与 man 相比,info 工具可显示更完整的 GNU 工具信息。...若 man 页包含的某个工具的概要信息在 info 中也有介绍, 那么 man 页中会有“请参考 info 页更详细内容”的字样。
背景 质量团队 Linux 日常操作培训,推荐使用tldr和man。 帮助 要善于通过帮助文档来学习Linux命令。...# 查看支持的内置命令 $ help # 查看帮助 $ help echo info 查看 info 格式帮助信息。 $ info cd type 查看命令类型。
TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...OSI 7层模型和TCP/IP四层网络模型对应关系 计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图 TCP/IP协议数据流示意图 我们接下来讲解的...Linux网络编程Tcp协议是属于传输层的协议 Linux Socket 网络编程 TCP协议 TCP是面向连接的可靠的传输层协议。...TCP编程 Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。...使用TCP协议的流程图 根据流程图逐一讲解API接口.
all:server_tcp client_tcp server_tcp:UdpServerMain.cc g++ -o $@ $^ -std=c++17 -lpthread client_tcp...函数原型(C/C++) 在 POSIX 系统(如 Linux)中,listen 函数的原型如下: int listen(int sockfd, int backlog); 在 Windows 系统中,listen...函数原型(C/C++) 在 POSIX 系统(如 Linux)中,accept 函数的原型如下: int accept(int sockfd, struct sockaddr *addr, socklen_t...EchoServer -- 线程池 引入我们之前写的【Linux】:线程库 Thread.hpp 简单封装 Thread.hpp 以及 单例模式下的【Linux】:日志策略 + 线程池(单例模式 Threadpool.hpp...private: std::set _white_list; // 白名单,只让执行一些命令 }; 执行结果如下: 8. windows 作为 client 访问 Linux
其中复位标志RST的作用就是“复位相应的TCP连接”。 TCP连接和释放时还有许多细节,比如半连接状态、半关闭状态等。详情请参考这方面的巨著《TCP/IP详解》和《UNIX网络编程》。...原因在于Socket.close()方法的语义和TCP的“FIN”标志语义不一样:发送TCP的“FIN”标志表示我不再发送数据了,而Socket.close()表示我不在发送也不接受数据了。...; 客户端和服务器统一使用TCP短连接。...然后是客户端和服务器统一使用TCP长连接:客户端使用TCP长连接很容易配置(直接设置HttpClient就好),而服务器配置长连接就比较麻烦了,就拿tomcat来说,需要设置tomcat的maxKeepAliveRequests...,固定5分钟tcp连接回收,而且发现连接出错时,重发之前10s内消息。
wide': 0 tcp:tcp_retransmit_skb...0 tcp:tcp_send_reset 0 tcp:tcp_receive_reset...5 tcp:tcp_rcv_space_adjust...0 tcp:tcp_retransmit_synack 9 tcp:tcp_probe...] [k] tcp_rcv_state_process + 50.00% 0.00% python [kernel.kallsyms] [k] __tcp_transmit_skb
引言 TCP协议是传输层中非常重要的协议。本篇博客我们将从TCP头部信息、TCP状态转移、TCP数据流、TCP数据流的控制等等方面来讨论! 在TCP协议中,通信双方的地位是平等的。...1、TCP协议的特点 传输层中我们常用的协议有两个:TCP协议和UDP协议。TCP协议相对于UDP协议的特点是:面向连接、可靠的、面向字节流的。...当TCP模块真正开始发送数据时,发送缓冲区中这些等待发送的数据可能被封装成一个或者多个TCP报文发出去,因此,TCP模块发送出的TCP报文段的个数和应用程序执行的写操作次数没有固定的数量关系。...当接收缓冲区收到一个或者多个TCP报文后,TCP模块将它们携带的应用程序的数据按照TCP报文的序号【见下文】依次放入TCP接收缓冲区中,并通知应用程序读取数据。...Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时 时间都是500ms的整数倍.
TCP socket API 详解 下面介绍程序中用到的 socket API,这些函数都在 sys/socket.h 中。...Echo Server 有了上面的接口,我们就可以实现以TCP为基础的简单消息回显服务器了,运行结果应该如下图所示: 代码如下: TCP服务器 #pragma once #include <iostream..."; Die(LISTEN_ERR); } LOG(LogLevel::INFO) << "ServerInit success......; if (n > 0) { buffer[n] = 0; LOG(LogLevel::INFO...} else if (n == 0) // client 退出 { LOG(LogLevel::INFO
redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:5efa20fe9f01349c redis_mode:standalone os:Linux...multiplexing_api:epoll gcc_version:4.4.7 process_id:11188 run_id:b2c5a1094ed2f55da1f22f95c474571ebea3ae36 tcp_port...php $info = $redis->info('Server'); print_r($info); ?...redis_git_dirty] => 0 [redis_build_id] => 5efa20fe9f01349c [redis_mode] => standalone [os] => Linux...gcc_version] => 4.4.7 [process_id] => 11188 [run_id] => b2c5a1094ed2f55da1f22f95c474571ebea3ae36 [tcp_port
1.命令简介 info 用于阅读 info 格式的帮助文档。 就内容来说,info 页面比 man 页面编写得要更好、更容易理解,但 man 页面阅读起来更加方便。...5.常用示例 (1)查看命令的 info 格式帮助文档。 如查看 info 命令的 info 格式的帮助文档。...$ info info (2)查看命令的 info 格式帮助文档并跳转至指定 Node。 如查看 info 命令的 info 格式的帮助文档,并跳转到 Advanced 节点。...$ info info "Advanced" "Go to node" (3)查看 info 命令的 info 格式的帮助文档地址。...$ info -w info /usr/share/info/info.info.gz ---- 参考文献 info(1) manual - linux.org Linux 命令大全.info 命令
redis的info http://redis.readthedocs.org/en/latest/server/info.html INFO INFO [section] 以一种易于解释(parse)... process_id : 服务器进程的 PID run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群) tcp_port... : TCP/IP 监听端口 uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数 uptime_in_days : 自 Redis... keyspace : 数据库相关的统计信息 除上面给出的这些值以外,参数还可以是下面这两个: all : 返回所有信息 default : 返回默认选择的信息 当不带参数直接调用 INFO
TCP TCP 全称为 “传输控制协议(Transmission Control Protocol”)....16位窗口大小: 首先要清楚,客户端和服务器基于TCP协议进行通信的时候,互发消息的时候,发送的可是完整的TCP报文,一定要携带完整报头。...Linux 中(BSD Unix 和 Windows 也是如此), 超时以 500ms 为一个单位进行控制, 每次判定超时重发的超时时间都是 500ms 的整数倍....(是发送缓冲区的一部分) 已发送已确认的这个范围是可以被覆盖的,表示无效数据,也就相当于从TCP缓冲区当中移除了。 正是因为又滑动窗口的存在,所以才可以一次发送大量TCP报文。...即使没有写入操作, TCP 自己也内置了一个保活定时器, 会定期询问对方是否还在. 如果对方不在, 也会把连接释放. TCP 小结 为什么 TCP 这么复杂?
TCP 协议段格式 理解TCP的报头: Linux 内核是C语言写的,在 UDP 说过报头是协议的表现,而协议本质就是结构体数据。所有 tcp报头 就是一个结构化或位段。...每行4个字节,总共5行,因此标准 TCP 报文的长度是20字节,选项部分暂不考虑 TCP 报文标准长度:标准 TCP 报文长度是20字节 如何封装解包,如何分用?...Linux 中 ( BSD Unix 和 Windows 也是如此), 超时以 500ms 为一个单位进行控制, 每次判定超时重发的超时时间都是 500ms 的整数倍....由于双方都使用 TCP 协议,所以 TCP 的双方地位是对等的。要了解 TCP,只需要搞清楚一个方向的通信过程,反过来,另一个方向的通信也是一样的。...参数控制,这与客户端重发 FIN 报文的重传次数控制方式是一样的 ④ 第四次挥手失败,发生如下: 在 Linux 系统中,TIME_WAIT状态会持续 2MSL 后才会进入关闭状态 3.
PHP的很多框架里面都是通过获取$_SERVER['PATH_INFO']处理路由 , 这个变量是通过nginx传递过来的 , 我们在nginx中经常见到下面两句 fastcgi_split_path_info...^(.+\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; 这两句是什么意思呢?...nginx默认获取不到PATH_INFO的值,得通过fastcgi_split_path_info指定定义的正则表达式来获取值 ^(.+\.php)(/.*)$; 这个正则表达是有两个小括号 , 也就是有两个捕获...第二个捕获到的值会自动重新赋值给$fastcgi_path_info变量。...如果访问 /index.php/test ,第二个捕获的是/test $fastcgi_path_info就是/test,因此就会把/test传递给php的$_SERVER['PATH_INFO']
package-info.java再怎么特殊,也是一个类文件,也会被编译成package-info.class,但是在package-info.java中只能声明默认访问权限的类,也就是友好类。...我们来建立一个项目演示这三个作用,建立一个package-info的Java Project,在com.company包三个类:package-info.java 是我们重点关注的,PkgAnnotation.java...以上版本都使用package-info.java来注释。...在包下,随便一个类中的包名前加这些注解,Eclipse会提示“Package annotations must be in file package-info.java”,在该包下建立package-info.java...使用Checkstyle插件做代码检查时,会报一个警告“Missing package-info.java file.”也是这个package-info文件惹的祸,在各个包下创建一个即可。
linux中进程使用task_struct数据结构描述,其中有一个stack指针 struct task_struct { // ......void *stack; // 指向内核栈的指针 // ... }; task_struct数据结构中的stack成员指向thread_union结构(Linux内核通过thread_union...联合体来表示进程的内核栈) union thread_union { struct thread_info thread_info; unsigned long stack[THREAD_SIZE...信息, linux内核是支持不同体系的的, 但是不同的体系结构可能进程需要存储的信息不尽相同, 这就需要我们实现一种通用的方式, 我们将体系结构相关的部分和无关的部门进行分离,用一种通用的方式来描述进程...进程通过alloc_thread_info函数分配它的内核栈,通过free_thread_info函数释放所分配的内核栈,查看源码 alloc_thread_info函数通过调用__get_free_pages
那么今天我们就开始另外一个套接字,TCP的使用吧! 值得一提的是,二者的使用其实有很大的相似程度,我们本篇文章主要还是通过创建一个简单的TcpServer为主。...=std::make_unique(); tcp_ptr->InitServer(); tcp_ptr->Start(); return 0; } 可以看见我们这里是没有定义一个默认的...那么我们的TCP他所做的初始化工作又是什么呢? 获取套接字 自然也是要先获取套接字也就是文件描述符信息。...但是我们都知道,TCP是一种面向连接 的协议,这意味着在数据传输之前,通信双方必须 先建立逻辑连接,并在传输结束后 释放连接。...=std::make_unique(); tcp_ptr->InitClient(); tcp_ptr->Start(); return 0; } 进程阻塞的问题
netstat -nat|grep -i "80"|wc -l 查看80的 统计httpd协议的连接数 ps -ef |grep httpd|wc -l 统计状...