- 博客(139)
- 收藏
- 关注
原创 Windows 安装与配置 OpenSSH Server 操作文档
Windows 10(1809 及以上)、Windows 11、Windows Server 2019 及以上。
2026-11-05 10:47:29
139
原创 WSL桥接网络配置
WSL 会直接共享 Windows 的网络接口和 IP 地址,IPv6 也随之继承。考虑到桥接模式已被弃用且配置繁琐,除非你有必须使用桥接的特定理由(例如需要为 WSL 分配静态 IP),否则建议直接采用镜像模式。检查是否获得了与 Windows 同网段的 IPv4 地址,以及一个非。的值必须与第一步中创建的交换机名称。用于显式开启 IPv6 支持。开头的全局 IPv6 地址。然后重新打开 WSL 终端。然后重启 WSL 或电脑。
2026-10-24 21:07:33
233
原创 PMTU 探测及无效ICMP报文
MTU探测过程中发现,会有回无效ICMP报文的情况,导致Linux直接将缓存PMTU置为552,最低MTU,然后触发EMSGSIZE错误,最终发送失败。可以通过给socket设置 UTP_PO_MTU_PROBE 标志解决,会跳过缓存PMTU,将包发出去,但是网卡MTU大小会限制。
2026-09-17 16:50:44
20
原创 Windows C++ 跨 CRT 内存管理与安全释放
如果你编写的 DLL 是作为第三方 SDK 提供给外部开发者使用,你无法预知、也无法强求调用方使用何种编译选项(对方可能用/MT,也可能用别的编译器)。此时,应遵循**“谁申请,谁释放”**的闭环原则,严格禁止调用方直接对你传出的指针执行free或delete// MySDK.h (提供给用户的头文件)__declspec。
2026-05-28 16:36:59
439
原创 libutp 性能分析总结
心血来潮,看到lsquic后就想模仿着写个可以用于P2P的安全传输协议,libutp诞生了,诞生之初还是Ai没起步的时候,那个时候翻看lsquic源码,阅读各种bbr文档,然后自己做设计,写代码,时间就这样零零散散的过去了。后来AI起来了,我也学会了偷懒,我做设计让AI审核,给出优缺点,然后在对比lsquic,总体来说还是比较顺畅的,后面就是代码实现,AI起初还是很生涩,然后就又零零散散的实现功能,到此已经完全实现libutp,协议已经落实,除非出现什么安全或是性能问题,不会大改。
2026-05-12 14:16:52
391
原创 VSCode Remote-SSH 连接Mac卡在初始化VSCode
文件中,但是关闭后再次打开就一直卡在初始化VSCode,虽然可以通过开启。保存的密钥,确认可正常连接才使用这种方式。优点就是不影响其他终端的连接。来解决,但是一不小心把终端删了就得重连,比较麻烦,后来尝试删除。暂时找不到原因,第一次配置后输入密码正常登录,然后密钥保存到。在.ssh/config指定主机配置下添加下面两行。
2026-01-26 15:41:13
158
原创 MSS Clamping (MSS Adjustment)
从这可以看出,TCP的友好性很强,为了TCP能稳定发送和接收,直接对TCP数据包进行修改,以避免MTU黑洞的形成。本地将MTU调大,本想看下TCP是如何进行MTU黑洞探测的,但是两端抓包发现MSS被篡改了。可以看到发送的时候是1460MSS,但是收包确实是1412。内网机器向公网IP发送数据。
2026-01-08 18:07:16
279
原创 ICMP Fragmentation needed抓包实例
并且响应的报文最大字节是576,组成内容为 IP头部(20) + ICMP头部(8) + 不分片包的IP头部(20) + 不分片包的TCP头部(20) + 不分片包的剩余数据(508)IPv4 以太网最小MTU是576,故当包设置不分片并且超过交换机最大MTU时会响应ICMP Fragmentation needed报文。
2025-03-04 10:14:17
631
原创 jemalloc替换标准库 malloc等函数的三种方式
这种做法是侵入式的,如果没有jemalloc库将无法启动程序,另外编译代码时需要设置。可以做到无侵入式替换,只需要在运行程序前设置。侵入式的,并且存在一定的不安全性。
2024-10-28 17:45:16
1099
原创 TCP simultaneous open测试
流程梳理:客户端A (127.0.0.1:12999)、客户端B(127.0.0.1:13999)经过多次测试,延迟 5 - 20 微秒的概率会增大,如tcpdump的图,12999发送。公网环境存在传输时间,如果同时发送理论上能连接上的概率更大。状态,否则就会因为是客户端性质而收到RST信号。由于两个套接字是客户端性质,必须保证同时处于。状态,此时B在延迟1ms后发送。,间隔了 23 微秒。
2024-10-25 18:19:08
503
原创 golang 字符串浅析
a和b所指向的字符串的地址在只读段,故当放开21行尝试修改内存时,会触发。查看程序在linux的内存分布。信号,导致程序异常结束。
2024-09-12 16:51:59
659
原创 Linux 调用std::call_once崩溃问题
判断是否支持多线程,弱引用意味着如果在链接时找不到 __pthread_key_create,这个引用不会导致链接错误,而是会被替换为 NULL 或者其他默认行为。但是使用-lpthread会发现它链接不上,-l只影响链接阶段,让其在pthread找到使用的符号文件,如果没有找到,则忽略-lpthread。其实问题就出现在有没有链接pthread库,gcc使用的pthread_once函数执行,故需要链接pthread库。没有链接编译时也不会报错,运行时异常描述也毫无作用,无法分析。
2024-08-13 12:01:55
529
原创 liburing和Linux io_uring源码阅读
此源文件内部调用liburing相关函数包含。篇幅过长,走不到的地方将会对其进行裁剪。以此为起点,阅读内核代码。
2024-06-27 18:23:39
885
原创 纤程与协程以及有栈协程和无栈协程的区别
无栈协程的做法靠的是C语言特性switch case嵌套do while,这一做法也被称作duff device(达夫设备),通过Switch跳转至上次运行的地方,当下程序的运行需要依赖寄存器,函数执行过程中如何跳转到其他函数,在没有协程的情况下可通过return,直接调用其他函数实现,但这中做法无法恢复执行原来的函数。2、协程是语言级别的,如go,rust,C#等提供的协程,c++如libco,libaco,boost::coroutine等等。,但是在概念上,两者是有区别的。已进行详细描述,不在赘述。
2024-06-22 10:21:17
733
原创 如何在没有头文件的情况下调用动态库的类的私有成员函数
所以需要使用dlsym获取到地址,但是g++在编译时会对函数名称进行修改,如上所示。故传递时需要传修改后的名字。然这么写在编译时确实没问题,但是动态加载的情况下又没有类的头文件,则无法这么写,因为无法确定函数的地址。注意:以上不涉及虚函数时可正常使用,当存在虚函数时,会存在虚函数表,无法确定被调用函数真正的地址。另一方面,类的成员函数即使在书写时无参,那么编译后其实也存在参数的,即类的this。普通函数的调用方式为直接调用,如createClass。所以在生命函数时将其声明为。调用也就和普通函数一致。
2024-05-11 13:14:42
1264
原创 范围for循环依赖begin和end函数
无论标准库还是其他库,多余begin和end函数的处理都用于迭代器的实现,而迭代器又要求使用过程中不能修改原有结构。所以在范围for循环中,不能删除和插入数据。否则,极易产生崩溃问题。如果需要在循环过程中修改结构,可以自己使用迭代器进行遍历。修改begin和end函数名后再次编译,报出以下错误。
2024-01-18 10:46:26
584
原创 git常用命令总结
/ 使用以下命令(请将 <commit_hash> 替换为之前找到的SHA值, <directory_path> 替换为被删除的文件夹路径)// 将远程主机 origin 的 master 分支拉取过来,与本地的 branch 分支合并。// 将dev分支代码合并到当前所在分支,冲突后使用git status命令查看冲突。// 查看删除前的Git日志记录,找到删除该目录前的最后一次提交。// 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。// 列出远程存在的分支。// 删除name分支。
2023-12-09 20:12:23
573
原创 安装其他版本gcc的办法
切换到国内的源是因为国内镜像下载速度快, 并一个原因是可能不存在想要的gcc版本。会看到各个版本的gcc, 选择自己想安装, 不存在则切换镜像源。通过以上指令可以查看有哪些gcc版本可供下载。从gcc.txt中搜索。在此我选择阿里云的源。
2023-12-09 19:44:17
677
原创 frp V0.52.3 搭建
的配置文件,以下12000、8500需要在云服务器中的防火墙中开放tcp。以下12300、12400需要在云服务器中的防火墙中开放tcp。此版本暂时没有windows的,想在windows使用请下载。客户端同样,只不过修改路径及配置文件即可。配置完后先在服务器启动,后启动客户端。以下是使用finalshell演示。随便使用一个ssh工具登录到。输入内网机子的用户名和密码即可。
2023-11-25 12:28:27
1583
原创 gcc标准库行为细则
有个16字节栈区空间,假如写入的字节数不超过15,是存放在栈上的,不会malloc内存。作用是修改当前字符串长度,会扩容但不会缩小空间,想要缩小空间可在resize后调用。需要注意的是join和detach都会抛出异常,并且都是线程不安全的,会对。函数会修改长度变量还会将首个字符初始化。初始化成某个值要看编译器的行为。未采用读时共享写时复制的思想。即会对原来的内存拷贝一份。用的posix线程库接口,pthread。方法做到可接受任意参数和返回值的函数。实际上不会减少空间,比如本来。返回错误,然后抛出异常。
2023-11-12 15:05:37
344
pthreads.zip
2019-10-10
MinGw-win64
2019-05-05
install.zip
2020-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅