• Qt 线程常用同步方式

      多个线程同时访问共享数据时可能会冲突,出现意料之外的结果,这源于操作的原子性问题;为了保证,数据的正确性和完成性,就需要用到数据同步,Qt给我们提供了多种同步方式, 下面说一下主要方式: 互斥锁 QMute 条件变量 QWaitCondition 信号量 QSemaphore 读写锁 QReadLo...

      2022-08-10 03:26恋恋西风

      阅读更多
    • shell三剑客之sed命令

      shell三剑客之sed命令

      一、sed介绍 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑( 删除、替换、添加、移动 等),最后输出所有行或者仅输出处理的某些行。sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中...

      2022-08-10 03:26芒地狠

      阅读更多
    • order by注入与limit注入

      order by注入与limit注入

      order by 什么是order by? 在数据库中,order by的作用是对数据表中查询的数据进行排序的方式。 正常情况下我们去查询一个数据库的时候,它显示的顺序可能是根据插入的数据来进行排序的,所以可以通过order by进行排序,方便查看 select / from 表名 order b...

      2022-08-10 03:26橙栎

      阅读更多
    • 继承关系下构造方法的访问特点

      继承就是共性抽取。 1.如果一个类中没有显示的写一个构造方法,则默认赠送一个无参数的构造方法,如果显示的写了,则不再赠送。 2.子类的构造方法中如果没有显示的super 参数 写,则默认赠送一个super ; 3.如果显示的写了有参的构造方法super 参数 ,则不再赠送。 super的父类构造调用...

      2022-08-10 03:26我读春秋的。

      阅读更多
    • TCP协议之《对端MSS值估算》

      由于没有直接的信息可以获得对端的MSS值,内核中的代码实际上是估算以得到对端MSS值。 一、RCV MSS初始化 初始化对端的MSS值,首先起始值取自本地通告advmss值与当前发送MSS缓存值两者之中的较小值,在TCP的三次握手建立连接过程中,双方协商了MSS的钳制值即最大值,其值介于通告advm...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《发送缓存控制tcp_notsent_lowat》

      PROC文件tcp notsent lowat控制发送缓存队列中的未发送数据量。低于此值可发送,超出此值停止发送。 一、初始化 内核在TCP初始化函数tcp sk init中,将sysctl tcp notsent lowat设置为无符号整数的最大值,此值为TCP套接口全局的tcp notsent ...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《数据与控制流程交叉时的延迟处理》

      TCP协议的数据流程在遇到控制流程正在进行之时,需要暂停当前的执行流程,延时处理。等到控制流程(例如用户层的相关系统调用退出后)结束,再继续之前的数据流程。如下宏定义TCP DEFERRED ALL,内核中存在四种延时处理的情况:TSQ、重传超时、延时ACK和ICMP分片消息处理。 / define...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《TSQ限值tcp_limit_output_bytes》

      TCP在发送大量的数据时,倾向于尽可能多的进行发送直到检测到丢包。这将导致发送设备或者Qdisc流控队列(例如pfifo fast)中填充大量数据包,势必增大其它流量的延迟时间。tcp limit output bytes参数限制了Qdisc队列或者设备队列中的数据量,以缓解此状况,达到减低队列的内...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《MTU探测功能》

      Linux内核默认情况下未开启TCP的MTU探测功能。 $ cat /proc/sys/net/ipv4/tcp mtu probing 0 当TCP客户端发起连接建立请求时,在函数tcp connect init中调用TCP的MTU探测初始化函数tcp mtup init。如上所述默认情况下ena...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《TSQ控制》

      TCP Small Queues的目的是限制每个TCP连接在Qdisc和device队列中的skb数量,以达到降低RTT(Round Trip Time)和避免bufferbloat的目的。 一、TSQ初始化 内核定义了静态的每处理器变量tsq tasklet结构,初始化函数tcp tasklet ...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • UDP协议之《套接口阻塞选项UDP_CORK》

      用户层通过setsockopt设置UDP CORK选项的值,当其使能的时候,此套接口所有发送的数据将汇聚到一个报文中,当UDP CORK选项的值禁用后,执行发送操作。此选项为Linux内核自有选项,据此实现的应用程序在其他平台系统上可能无法工作。 一、UDP CORK配置 内核的处理函数为udp l...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《自动阻塞CORK控制》

      当应用程序在使用write或者sendmsg系统调用连续的发送少量数据包时,内核试图将这些小包尽可能的合并在一起发送,以降低总得数据包量。得以实现的前提是,至少有一个同数据流的之前数据包正在Qdisc队列或者网络设备的队列中等待发送。以下详细解释这一点。   一、初始化 在TCP协议的初始化函数tc...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《Pacing功能》

      TCP Pacing功能控制TCP的发包速率。 一、Pacing的初始化 TCP协议初始函数tcp sk init中,赋值了两个Pacing相关的参数,分别为sysctl tcp pacing ss ratio和sysctl tcp pacing ca ratio,都是控制pacing速率的倍数值...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《Out-Of-Window报文限速》

      当TCP接收到数据报文的序列号不在窗口之内,或者确认序列号不在窗口内,又或者PAWS(Protection Against Wrapped Sequence numbers)检查未通过,TCP将会使用正确的序列号和确认序号回复一个ACK报文,以纠正对端的序列号错误问题。如果对端一直发送以上三种类型的...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《ACK报文限速》

      PROC文件tcp challenge ack limit控制每秒钟发送挑战ACK报文的数量。避免遭受Blind In Window Attacks,包括reset,sync或者数据注入攻击等,详解RFC5961。 一、初始化 在TCP协议初始化函数tcp sk init中赋值为1000。通过PRO...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《TCP_CORK选项》

      用户层可通过setsockopt系统调用设置TCP套接口的TCP CORK选项。开启时,内核将阻塞不完整的报文,当关闭此选项时,发送阻塞的报文。此处的不完整指的是应用层发送的数据长度不足一个MSS长度。使用场景是在调用sendfile发送文件内容之前,提前发送一个描述文件信息的头部数据段,并且阻塞住...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《延迟ACCEPT》

      通常情况下,在一个新的TCP连接完成三次握手之后,监听端的accept系统调用就可返回与此对应的子套接口。然而,TCP的延迟ACCEPT功能,允许TCP监听端仅在接收到客户端的数据报文后才去唤醒服务端应用的ACCEPT请求。 一、延迟ACCEPT开启 应用层通过setsockopt系统调用的选项TC...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《延迟ACK策略》

      在报文接收路径上,处理完报文的接收之后,使用函数 tcp ack snd check检查是否需要发送ACK确认报文。如果不符合立即发送的条件,内核将延迟发送ACK确认报文。 1)接收到一个以上的全尺寸报文; 2)a)接收窗口增长足够大,可接收新报文。否则,只有在应用层调用tcp recvmsg函数取...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《ACK状态4种详解》

      如下定义,TCP的ACK状态由如下4个。 enum inet csk ack state t {     ICSK ACK SCHED  = 1,     ICSK ACK TIMER  = 2,     ICSK ACK PUSHED = 4,     ICSK ACK PUSHED2 = 8 }...

      2022-08-10 03:26程序员扫地僧

      阅读更多
    • TCP协议之《ACK pingpong交互模式详解》

      ACK的pingpong模式,用于TCP两端的套接口为交互模式时,数据在两个方向交叉发送,所以pingpong模式可减少单独ACK报文的发送。 一、开启pingpong模式 由于ACK的pingpong模式与quick模式互斥,应用层可通过setsockopt系统调用的TCP QUICKACK选项来...

      2022-08-10 03:26程序员扫地僧

      阅读更多
  • 猜你喜欢