NSString * cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, ...
第20章 TCP的成块数据流 20.4 窗口大小 由接收方提供的窗口的大小通常可以由接收进程控制,这将影响 T C P的性能。...其他的系统,如Solaris 2.2、4 . 4 B S D和AIX3.2则使用更大的默认缓存大小,如8192或16384等。 插口A P I允许进程设置发送和接收缓存的大小。...接收缓存的大小是该连接上所能够通告的最大窗口大小。有一些应用程序通过修改插口缓存大小来增加性能。...[Mogul 1993]显示了在改变发送和接收缓存大小(在单向数据流的应用中,如文件传输,只需改变发送方的发送缓存和接收方的接收缓存大小)的情况下,位于以太网上的两个工作站之间进行文件传输时的一些结果。...在2 0 . 7节中,我们将看到在给定通信媒体带宽和两端往返时间的情况下,如何计算最小的缓存大小。 一个例子 可以使用s o c k程序来控制这些缓存的大小。
第19章 TCP的交互数据流 19.5 窗口大小通告 在图1 9 - 4中,我们可以观察到s l i p通告窗口大小为4 0 9 6字节,而v a n g o g h通告其窗口大小为8 1 9 2个字节...然而,报文段5通告的窗口大小为 4 0 9 5个字节,这意味着在 T C P的缓冲区中仍然有一个字节等待应用程序( R l o g i n客户)读取。...同样,来自客户的下一个报文段声明其窗口大小为4 0 9 4个字节,这说明仍有两个字节等待读取。...服务器通常通告窗口大小为 8 1 9 2个字节,这是因为服务器在读取并回显接收到的数据之前,其T C P没有数据发送。当服务器已经读取了来自客户的输入后,来自服务器的数据将被发送。...这是因为它在等待 A C K的过程中缓存接收到的字符。当客户 T C P发送缓存的数据时,R l o g i n客户没有机会读取来自服务器的数据,因此,客户通告的窗口大小总是小于 4 0 9 6。
我先从发送方进行排查,我在output管道中,除了tcp插件外,还添加了stdout插件,也就是日志来了除了会通过tcp发送外,还会打印在标准输出中。...Scanner{ r: r, split: ScanLines, maxTokenSize: MaxScanTokenSize, } } 再跳转,有一个初始化缓存大小...startBufSize为4k和最大的缓存大小MaxScanTokenSize为64k。...但是我们的日志大小为134k,已经大于最大大小了,所以无法接收到该日志,也就是因为这个原因导致了日志发生了丢失。...# 解决方法 将TCP的最大缓存大小修改为配置文件可配置的,这样如果日志很大,可以修改配置增大缓存上限。库中有提供Buffer方法来设置该上限。
//获得缓存路径 self.cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES...).lastObject; /*********************** 缓存管理 ***********************/ #pragma mark 单个文件的大小 + (long...NSFileManager defaultManager]; //判断该文件是否存在 if ([manager fileExistsAtPath:filePath]){ //返回该文件大小...attributesOfItemAtPath:filePath error:nil] fileSize]; } return 0; } #pragma mark 遍历文件夹获得文件夹大小...fileSizeAtPath:fileAbsolutePath]; } return folderSize / (1024.0*1024.0); } #pragma mark 清理缓存文件
7、为什么tcp 头部没有【包长度】字段呢? 模块二:tcp 的连接建立问题 8、 tcp 三次握手过程&状态变化? 9、 linux系统中如何查看tcp状态? 10、为什么是3次握手?...简单解释:socket:ip地址+端口号组成;序列号:用来解决乱序问题;窗口大小:用来做流量控制。 3、tcp头部格式?...9、linux系统中如何查看tcp状态? TCP 的连接状态查看,在 Linux 可以通过 netstat -napt 命令查看。 10、为什么是3次握手?而不是其他次数?...所以,重要的是为什么三次握手才可以初始化Socket、序列号和窗口大小并建立 TCP 连接。...方式一:net.ipv4.tcp_tw_reuse 和 tcp_timestamps 如下的 Linux 内核参数开启后,则可以复用处于 TIME_WAIT 的 socket 为新的连接所用。
关闭swap swapoff -a 1.创建交换分区的文件:增加2G大小的交换分区 dd if=/dev/zero of=/var/swapfile bs=1M count=2048 2.设置交换文件
TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...OSI 7层模型和TCP/IP四层网络模型对应关系 计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图 TCP/IP协议数据流示意图 我们接下来讲解的...Linux网络编程Tcp协议是属于传输层的协议 Linux Socket 网络编程 TCP协议 TCP是面向连接的可靠的传输层协议。...TCP编程 Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。...include int listen(int sockfd //socket函数返回的套接口描述字 ,int backlog); //则此值表示listen时的队列大小
all:server_tcp client_tcp server_tcp:UdpServerMain.cc g++ -o $@ $^ -std=c++17 -lpthread client_tcp...初始化缓冲区大小: peerlen 需要被初始化为 sizeof(peer),以告诉 accept() 函数,peer 缓冲区的大小是多少。...输出实际地址信息大小: accept() 函数会将实际写入 peer 的客户端地址信息的大小写回到 peerlen 中。...例如,如果客户端地址信息的大小是 16 字节,accept() 会将 peerlen 更新为 16。...EchoServer -- 线程池 引入我们之前写的【Linux】:线程库 Thread.hpp 简单封装 Thread.hpp 以及 单例模式下的【Linux】:日志策略 + 线程池(单例模式 Threadpool.hpp
TCP socket API 详解 下面介绍程序中用到的 socket API,这些函数都在 sys/socket.h 中。...应用程序可以像读写文件一样用 read/write 在网络上收发数据; 返回值:如果 socket()调用出错则返回-1; 参数:对于 IPv4, family 参数指定为 AF_INET; 对于 TCP...Echo Server 有了上面的接口,我们就可以实现以TCP为基础的简单消息回显服务器了,运行结果应该如下图所示: 代码如下: TCP服务器 #pragma once #include <iostream...port(port), _listensockfd(-1), _isruning(false) { } void InitServer() { // 1.创建Tcp..."; } } ::close(sockfd); return 0; } 与UDP客户端相比,TCP客户端需要与服务器通过connet连接后才能通信。
接收端应用程序可以一次性的将TCP接收缓冲区内的数据全部读出,也可以分多次读取器,这取决于用户指定的应用程序缓冲区大小。...Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时 时间都是500ms的整数倍....反之,B发送的TCP报文段也同时包括自己的序号和A发送过来的TCP报文端的确认号。 4、16位窗口大小 现在我们将TCP通信双方看做两个人在当面交流。...同理,为了保证TCP通信的效率,尽量减少丢包的概率,我们也应该控制TCP发送数据的速度,快了也不行,慢了也不行。 那什么指标可以看出接收方接收数据的能力呢?接收缓冲区剩余空间大小恰巧合适。...PSH(接收方应尽快交付给应用层) 当PSH=1时,表示接收方TCP应该尽快地将这个报文段交付给应用层,而不需要等到整个缓存都填满后再交付。
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
其中复位标志RST的作用就是“复位相应的TCP连接”。 TCP连接和释放时还有许多细节,比如半连接状态、半关闭状态等。详情请参考这方面的巨著《TCP/IP详解》和《UNIX网络编程》。...原因在于Socket.close()方法的语义和TCP的“FIN”标志语义不一样:发送TCP的“FIN”标志表示我不再发送数据了,而Socket.close()表示我不在发送也不接受数据了。...; 客户端和服务器统一使用TCP短连接。...然后是客户端和服务器统一使用TCP长连接:客户端使用TCP长连接很容易配置(直接设置HttpClient就好),而服务器配置长连接就比较麻烦了,就拿tomcat来说,需要设置tomcat的maxKeepAliveRequests...,固定5分钟tcp连接回收,而且发现连接出错时,重发之前10s内消息。
-s或–summarize 仅显示总计,即当前目录的大小。 -S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。...1> 要显示一个目录树及其每个子树的磁盘使用情况 du /home/linux 这在/home/linux目录及其每个子目录中显示了磁盘块数。...3> 以MB为单位显示一个目录树及其每个子树的磁盘使用情况 du -m /home/linux 这在/home/linux目录及其每个子目录中显示了 MB 磁盘块数。...4> 以GB为单位显示一个目录树及其每个子树的磁盘使用情况 du -g /home/linux 这在/home/linux目录及其每个子目录中显示了 GB 磁盘块数。...10>只显示一个目录树的全部磁盘使用情况 du -s /home/linux 11>查看各文件夹大小:du -h –max-depth=1 查看指定目录: 代码如下: 其中 /path表示路径
关于 Integer 的值缓存 这涉及 Java 5 中另一个改进。构建 Integer 对象的传统方式是直接调用构造器,直接 new 一个对象。...但是根据实践,我们发现大部分数据操作都是集中在有限的、较小的数值范围,因而,在 Java 5 中新增了静态工厂方法 valueOf,在调用它的时候会利用一个缓存机制,带来了明显的性能改进。...按照 Javadoc,这个值默认缓存是 -128 到 127 之间。 那么Integer对象的大小是多少呢?...Integer只有一个int类型的成员变量value,所以其对象实际数据部分的大小是4个字节,然后再在后面填充4个字节达到8字节的对齐,所以可以得出Integer对象的大小是16个字节。...因此,我们可以得出Integer对象的大小是原生的int类型的4倍。
du命令 参考文章:how to check directory size in Linux 用于显示目录或文件的大小。...显示当前目录文件或者文件占用空间:du 显示指定文件或文件夹的大小:du test.txt 方便阅读的格式查看目录所占空间情况:du -h test 仅显示当前文件夹的总计:du -s * 以方便阅读的方式查看指定目录层级的空间占用情况...:du -lh --max-depth=1 du命令排序 查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小...;du *,就是查看当前目录下各子目录和文件的大小。...sort +1 -2 选出排在前面的10个:du ems_data | sort -rn | head 选出排在后面的10个:du ems_data |sort -rn | tail 当前目录的大小
TCP 协议段格式 理解TCP的报头: Linux 内核是C语言写的,在 UDP 说过报头是协议的表现,而协议本质就是结构体数据。所有 tcp报头 就是一个结构化或位段。...Linux 中 ( BSD Unix 和 Windows 也是如此), 超时以 500ms 为一个单位进行控制, 每次判定超时重发的超时时间都是 500ms 的整数倍....流量控制机制 反馈机制:发送方需要知道接收方的接收缓冲区剩余空间大小(也就是对方的接受能力),以调整自己的发送速率 16位窗口大小:TCP头部中的16位窗口大小字段表示的是接收方当前接收缓冲区的剩余空间大小...结论: 因此,每个方向上的TCP报文都包含一个16位窗口大小字段,表示自己的接收缓冲区剩余空间大小。...回忆我们的 TCP 首部中,有一个 16 位窗口字段,就是存放了窗口大小信息(上面有说的) 关于 TCP 大小: TCP头部含有一个16位长的窗口字段,理论上最大表示65535字节。
缓存机制:Linux引入了buffers和 cached机制,buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件元数据,这样当操作系统需要读取某些文件时,首先在buffers...为了方便查找文件,linux引入目录项(dentry)描述目录与文件的关系树,Linux为每一个目录建立一个目录项,也为每个文件建立一个目录项。...可以使用ipcs -m命令并检查bytes列来检查共享内存段的大小。...:通过cat /proc/meminfo命令可以查看cached和buffers的大小,如果系统是RHEL6&CentOS6或之前的版本,可以使用free命令查看cached和buffers大小,但自RHEL7&...根据Linux虚拟内存管理机制,这种行为是正常的。要理解为什么缓存会变得如此之高,以及为什么这不是一个问题,就必须了解I/O在Linux上是如何工作的。
linux查看文件夹大小 1.命令如下 du -sh * | sort -n 如图:
Precondition :VMware Player 中安装的Fedora 17 Linux 32bit,个人较久远的测试环境,安装时没有进行磁盘规划,默认20G空间(动态调整),安装在根/下。...1.首先调整虚拟机大小: 2.虚拟机开机,使用fdisk 命令新建新区 fdisk /dev/sda 添加 /dev/sda3 3.接下来就贴代码了: Fedora release 17 (Beefy...Disk identifier: 0x00002255 Device Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux.../dev/sda2 1026048 16777215 7875584 8e Linux LVM /dev/sda3 16777216 62914559 23068672 83 Linux Disk...当然,此方案针对虚拟机中已安装的没有采用LVM的linux分区大小调整,其它不必参考此方案。
领取专属 10元无门槛券
手把手带您无忧上云