- 博客(48)
- 资源 (16)
- 收藏
- 关注

原创 【FileZilla】 dispatch函数重载的例子
让我们来分析这些代码,特别是 dispatch 的机制。CSftpControlSocket::operator()(fz::event_base const& ev):它接收一个事件 ev,并尝试使用 fz::dispatch 将其分发给不同的处理函数。如果分发成功,则返回;否则,将事件传递给基类CControlSocket 的 operator() 处理。
2025-05-09 16:00:30
451
原创 【FileZilla】上传下载时文件夹的处理
简单来说,就是启动local_recursive_operation::thread_entry()线程。这个线程处理完毕recursion_roots_里的所有放进去要处理的m_dirsToVisit目录展开需求。
2025-05-22 16:33:45
195
原创 【FileZilla】事件调用机制代码解析
我们的核心问题是 handler_->send_event<process_event>(&process_, process_event_flag::read) 发出的事件,到底在哪里被执行?事件处理函数什么时候调用?
2025-05-14 09:50:01
367
原创 rsync中远端文件的校验和存储缓存的黑科技
然而rsync是这样做的。通过宏( F_SUM() )计算远端文件的描述符指针的偏移量,从其中拿出工具在两端传输文件列表(recv_file_entry()/send_file_entry())时存储的远端文件校验和进行比较。这样就节约了大量的时间,也是rsync有一个数量级时间优化的原因。也就是说校验和实际上是存储在文件描述符地址空间的柔性数组中,并在发送方创建文件描述符时就在偏移量处放好了计算的远端文件校验和。
2025-01-02 15:00:33
415
原创 rsync增量传输机制
rsync的传输是对称的,需要在双端安装。有三个传输角色server,daemon,client,会很快根据命令行的要求区分角色为sender,receiver,generator,分别用send_files()/recv_files()/generate_files()发送,接收,生成文件。generator在receiver端,是do_recv()函数里的生成的新进程。
2024-12-13 15:06:35
303
原创 卫星通信中的拥塞控制算法
总结来说,Cubic在高带宽高延迟网络中表现更好,主要是因为它的增速机制和拥塞控制策略能更好地适应网络的带宽和延迟特性。而NewReno由于其增速较慢,可能在这种网络环境中未能充分利用带宽,因此更适合带宽较低、延迟较短的网络环境。BBR2: 在BBR的基础上添加了新的控制策略,例如更多的延迟反馈机制和更精细的带宽控制算法,以应对复杂网络环境。结论:现有的Cubic和BBR2算法可直接用于卫星通信网络的拥塞控制中,专为卫星设置的拥塞控制算法目前没有集成到系统中,但各自的性能表现需要根据实测情况进行取舍。
2024-08-09 09:41:43
212
原创 论文研读 Automatic TCP Buffer Tuning
动态调整接收套接字缓冲区的一个想法是在缓冲区大部分为空时增加缓冲区大小,因为缺少排队等待应用程序传输的数据表明数据速率低,这可能是接收窗口限制连接的结果。如果低数据速率不是由较小的接收窗口引起的,而是由缓慢的瓶颈链路引起的,则缓冲区大小在检测到数据包丢失时仍将自行校准。(1) 从论文[1]读到“如果应用程序手动使用 setsockopt() 设置接收缓冲区或发送缓冲区大小,该连接的自动调整将关闭”后,注释掉setsockopt()的部分后,可以明显看到系统的自动调优功能在起作用。
2024-06-07 16:25:45
377
原创 论文研读 A Comparison of TCP Automatic Tuning Techniques for Distributed Computing
通过大量实验,他们评估了这些技术在不同条件下的性能,包括不同数量的并行进程和网络延迟。论文《分布式计算中TCP自动调优技术的比较》由Eric Weigle和Wu-chun Feng撰写,探讨了自动调整TCP缓冲区大小以提升分布式应用性能的不同方法。文章首先讨论了手动优化TCP缓冲区大小的局限性,并介绍了研究人员提出的各种自动调优技术来应对这些挑战。作者建议,尽管自动调优可以显著减少手动工作量并提高资源利用率,但应根据具体的应用需求和网络条件选择合适的技术。
2024-06-07 16:23:34
213
原创 WSL虚拟机的两种网络配置方式 NAT Mirrored
网络NAT(Network Address Translation):在网络NAT模式下,WSL通过主机系统的网络连接进行通信,并使用网络地址转换(NAT)技术将WSL的网络流量转发到主机系统的网络连接上。这两种网络配置模式可以根据用户的需求和网络环境进行选择。在WSL(Windows Subsystem for Linux)中,网络NAT(Network Address Translation)和Mirrored是两种网络配置模式,用于管理WSL与主机操作系统(通常是Windows)之间的网络通信。
2024-06-05 17:13:05
4814
原创 TCP/IP 接收发送缓存大小的自动调优 Auto Tuning
另外,/proc/sys/net/ipv4/tcp_rmem(memory reserved for TCP rcv buffers)和/proc/sys/net/ipv4/tcp_wmem(memory reserved for TCP snd buffers)这些是三个值的数组:最小、初始和最大缓冲区大小。启用 net.ipv4.tcp_moderate_rcvbuf 参数后,Linux 内核会根据当前网络状况动态地调整 TCP 接收缓冲区的大小,以适应不同的网络环境,从而提高网络性能和可靠性。
2024-06-05 16:39:00
1106
1
原创 让WSL内核使用BBR拥塞控制算法
使用git命令从Linux内核的Git仓库中获取源代码,$ git clone https://github.com/microsoft/WSL2-Linux-Kernel.git,找到对应的内核版本$ git log --grep="5.15.146.1-microsoft-standard-WSL2",回退到本机安装的内核版本$ git checkout 在配置中搜索TCP_CONG_BBR,确保该选项被设置为y(表示编译进内核)或m(表示编译为模块)。需要事先安装好依赖的工具。
2024-05-27 12:24:00
463
原创 安装新版的Ubuntu WSL以使能BBR拥塞控制算法
【未成功的方案】通过挂在ubuntu24.04.iso到E盘后,用命令> wsl --import Ubuntu24.04 C:\WSL\Ubuntu24.04\ E:\ --version 2安装。【多次尝试成功的方案】通过> wsl - -list -online列出可以安装的版本,用命令> wsl --install -d Ubuntu-24.04 安装。
2024-05-24 16:42:01
966
原创 论文研读之BBR Performance Study 【2】
在网络拥塞控制中,BBR通过优化对带宽和延迟的利用来实现更好的性能。当缓存较浅时,即网络带宽和延迟积相对较小的情况下,BBR会积极地充分利用带宽并快速响应往返时延(RTT)的变化。这是因为在这种情况下,网络更可能处于拥塞状态,而BBR的目标是最大化带宽利用并同时保持较低的延迟,以确保网络吞吐量的最大化。而当网络缓存深时,也就是带宽富余,RTT变化不大的情况下,BBR会更加谨慎地调整发送速率,避免过度拥塞网络。因此,BBR可以根据网络的实际情况动态调整自身的行为,以实现更好的性能和用户体验。
2024-05-22 16:55:01
192
原创 论文研读之mscp:Multi-threaded scp: Easy and Fast File Transfer over SSH
通过记录传输文件传输位置的偏移,将其分为很多块(chunk),基于建立多个ssh链接,用多个线程用sftp报文的形式从客户端发送到服务器端。在数据结构管理上,块是通过链表(list)实现的块池(chunk pool)进行统一管理,分别申请统一释放。另外,mscp还用到了libssh的异步sftp读取,它会向服务器发送多个读取请求而无需等待响应。这个特性可以有效地利用延迟高、带宽大的网络,因为它可以同时处理许多正在传输的请求。
2024-05-17 14:50:04
366
原创 论文研读之hpn-ssh: High speed bulk data transfer using the SSH protocol
这是由 SSH 中的流量控制机制引起的,该机制受静态定义的小接收窗口的约束。但是,在 LAN 传输中,使用亚毫秒级 RTT,这些查询可能会带来额外的开销,最终可能会降低整体性能。又例如,密码块链接 (CBC) 模式下的密码可以并行解密多个块,但不并行加密多个块,而对于计数器 (CTR) 模式的密码,密码块的加密和解密都可以。虽然较大的缓冲区在某些情况下可能提高性能,但也有引入新的、难以诊断的问题的风险。总的来说,SSH、SCP 和 SFTP 是一组灵活、健壮且非常有用的应用程序,不幸的是,它们。
2024-05-17 14:45:51
112
原创 UDP和TCP协议比较,TOE技术
yudt@ubuntu:~/workspace/bugs$ sudo ethtool -K eno1 tso off gso off gro off(下面左图)协议栈需要将应用层的大块数据分段成适合网络传输的小块数据,这个过程称为分段(的负载和提高网络接收性能。在传统情况下,接收到的网络数据包需要在主机。允许网络适配器在接收数据包时执行重组和排序操作,而不是由主机。上进行重组和排序,然后传递给网络协议栈进行进一步处理。),然后将这些分段发送到网络。的负载,提高网络接收性能。
2024-05-09 16:26:49
475
原创 阅读bbr(Bottleneck Bandwidth and Round-trip time congetion control algorithm)经典论文简结 【1】
就是带宽10兆比特每秒、往返时延40毫秒的BBR拥塞控制流。BBR的核心算法的成功在于着力于与拥塞直接相关的拥塞带宽和往返传播时间,探索在网络出现等待队列的边界,Cubic着力在了拥塞表象的丢包和延迟,探索在了网络深浅缓存的边界,容易出现昨天提到过的缓存膨胀或者低吞吐率。在cubic算法中,如果瓶颈缓存特别大,基于丢包的拥塞控制趋于将它们放满而造成缓存膨胀(bufferbloat),如果瓶颈缓存比较小,基于丢包的拥塞控制趋于错误认为丢包是网络拥塞的错误信号而导致低吞吐量(throughput)。
2024-05-09 15:28:30
329
原创 升级WSL Ubuntu内核从5.10到5.15
但是,它可能不会立即更新到最新的内核版本。进入到解压缩的目录 $ cd WSL2-Linux-Kernel-linux-msft-wsl-5.15.57.1/ 使用命令 $ sudo make KCONFIG_CONFIG=Microsoft/config-wsl -j4编译源代码,其中-j4,使得make最多允许编译命令通过4个线程同时执行,这样可以更有效的利用CPU资源,使得编译速度更快。.1.tar.gz版本编译,而舍弃有bug的linux-msft-wsl-5.15.57.1.tar.gz版本。
2024-05-08 17:24:39
1846
原创 argv的一个bug
从《The.C.Programming.Language.2Nd.Ed 》5.10题出发。发现输入波兰式计算的时候,遇到乘法运算符时,argv会与实际输入的参数不同。
2024-04-30 12:02:11
99
原创 用于说明动态分配内存运行时间有效的反例实验 【2】
从《The.C.Programming.Language.2Nd.Ed 》5.17题出发,用参考答案开始。修改上面的参考答案源码,使之可以正确运行,代码如下。
2024-04-29 15:12:31
335
原创 指针实现reverse,getline,atoi,itoa库函数
1.注意getline函数的调用 ssize_t getline(char **lineptr, size_t *n, FILE *stream);及返回值-1的判断条件。1.atoi 和 itoa是integer 和ASCALL字符之间的转换函数。2.数字字符串和数字相互转换的经典算法。2.经典的字符串逆序算法。
2024-04-24 16:36:26
173
原创 逻辑判断符的结合律及strncpy,strncat,strncmp的函数重载
刷题《C programming language》Exercise 5-5。,循环就会继续执行。第二个条件就能保证在两个字符串中任意一个到达了结束符。1. 注意跟string.h函数库的函数重载时函数的原型相同。个字符后结束循环,而不会出现上述的逻辑错误。第一个条件的逻辑意思是:只要。2. 与逻辑判断要先满足。(即字符串未结束),且。
2024-04-24 15:14:51
336
原创 经典栈操作C写法
see Section 4.3 96 . 参考《The C programming language》5.5 Character Pointers and Functions.首先理解++,--操作。在变量符的右边则先取用变量,再做递增或递减;在变量符的左边则先递增或递减后,取用变量。所以上面的p指针指向栈底空着的下一个栈位,push元素时,先赋值后移到下一个空着的栈位;pop元素时,先前移到最后一个有值的栈位,读出并清空了这个栈位。
2024-04-24 12:53:29
222
原创 WSL UDP通信的一个Bug
再看我们Bug的复现现场。只有长度超过十个字符的消息才能发送并收到。先看合理情形下,服务器端自环UDP通信成功的例子。
2024-04-16 14:37:32
408
原创 用于说明动态分配内存运行时间有效的反例实验 【1】
从《The.C.Programming.Language.2Nd.Ed 》5.17题出发,写两个分别使用和不使用动态分配内存拷贝字符串的程序。
2024-04-15 11:16:23
299
1
原创 《人工智能-一种现代的方法》阅读笔记
Definition of AIIn which we try to explain why we consider intelligence to be a subject most worthy of study, and in which we try to decide what exactly it is, this being a good thing to decide before embarking(着手).Thinking Hu
2022-03-31 13:57:15
1093
原创 汽车在不同路面情形下的动力模型
1.水平路面上停放的汽车求解方程组得到质心的位置:a1= 2lmgFZ2a2=2lmgFZ1,并且。2. 斜面上停放的汽车解方程组求解质心的位置:。四轮制动的情形:求解方程组得到力的大小求解坡度的某种极限情形,设,。3. 水平路面上加速的汽车求解方程组得到由静态解和动态解组成的方程解:并假设前轮轮胎和后轮轮胎与地面的摩擦系数相同,而且此时各轮胎同时达到最大牵引力,说明汽车在水平路面的最大加速度和最小减速度直接取决于摩擦系数。①前轮驱动...
2022-02-07 19:53:09
780
原创 卡尔曼滤波 Kalman Filter
%% Kalman Filter Design% This example shows how to perform Kalman filtering. Both a steady state% filter and a time varying filter are designed and simulated below.% Copyright 1986-2012 The MathWorks, Inc.%% Problem Description% Given the follow.
2022-01-21 19:09:08
732
原创 八月读书报告一下
九月一号大部分学校都开学了,费尽周章归国也半年有余,其中苦乐自知。看书的心境是越来越缓了,反倒是想法和审视的态度复杂了起来,老北京的态度多了几个。《四世同堂(上)》《大漠谣(上)》爱情小说,语言文字简单、心理描写直白,一本没打动人的书和有点吸引力的电视剧。《Good Economics for Hard Times》...
2021-09-17 07:40:04
118
原创 七月读书报告一下
没想到三月开始的禁足令持续到五月初结束,直至七月底也并未完全恢复如初,比如运动时还必须戴的口罩,进出任何室内场所的消毒液洗手。如果这一系列时事发生不是偶然,并且影响深远的话,那极有可能是“退商品化”的出现和物资过剩却消费力不够的表现。按理说人类人工智能什么的是让大家不工作也可以生活富足,财富产生的财富应该足以维持现有社会速度向前的,然而历史上似乎也并不是这个道理,比如尼古拉.特斯拉是穷死的。这个月我读了些计算学领域的浅显的技术类书籍。比如«Raspery PI I/O programming usin.
2021-09-02 14:55:03
113
转载 六月读书报告一下
读了四本外文书的样章,我搜罗了比尔盖茨先生和张璐女士两位推荐的今年暑期阅读书单,再找来的几本务实的畅销书来读的,想扩展词汇量和增长些英语人文社会的见识。尽管,俺最喜欢经典文学书的遣词用句,比如下面这句描写道德价值观的:«Quand les familles augmentent outre mesure sans que le bien augmente en proportion, la misère vient, quelque courage qu’on y mette. Voilà mes obs.
2021-09-02 14:50:30
111
linux 5.15的内核源码编译,可用于wsl
2024-05-08
哈工大软件学院07级数据结构课程设计
2014-01-01
哈工大软件学院系统分析与设计课件及考试试卷及复习提纲(part I)
2010-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人