自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(509)
  • 收藏
  • 关注

原创 Windows 平台上面管理服务器程式的高级 QoS 策略

在 Windows 平台,自进入 Windows Vista / Windows 2008 Server 开始就不允许用户通过,标准SOCKET API 接口来设置链路 QOS 策略了,但 Vista/7/2008/8 好歹对系统注册表解禁重启,还能用,但是 Windows 2012 RC2、Windows 8.1(build 9200)开始根本就不行,只能通过 QoS2 接口调用来设置。9、策略命随便写,DSCP值(0~63)写 26 就可以(它就是:FLASH 报文优先级)4、点击基于策略的 QoS。

2024-04-19 13:53:13 205

原创 C/C++ 性能非常高效的伪随机数算法实现

【代码】C/C++ 性能非常高效的伪随机数算法实现。

2024-04-18 16:08:28 77

原创 如何合理利用多个中国大陆小带宽服务器?

我们要做的轻量的控制算法,即:只需要保证帧的序及帧缓存积压的问题,就可以,另外我推荐用TCP/IP作为下一层,因为KCP这些协议不适合传输大包,它们是为了小包及时性设计的,所以可以容忍20~30%的带宽损失。但积压大量的帧缓存,可能会产生很高的网络延迟,这是控制协议的弊端,但是你还真的自己好好做下控制协议,若你不在自己这层控制,让UDP/IP的应用去自己去处理这些问题,它们的传输效率就会非常慢的。带宽退让是滑块窗口与重传这部分关联的算法,目的是为了平衡链路拥塞层度,这些可以用成熟现成的控制算法来实现它们。

2024-04-18 12:47:24 432

原创 Linux 软路由命令行配置(参考)

允许任何地址到任何地址的确认包和关联包通过。# 默认丢弃转发,所有内网流量不能访问外网卡。# 开放某个ip的转发,允许上网。# 仅允许访问223.5.5.5。# SNAT 源地址转换。# 仅允许访问80端口。

2024-04-13 14:24:16 268

原创 Linux 上面模拟网络丢包率(命令)

1、模拟20%入站丢包率。1、模拟30%入站丢包率。3、模拟20%出站丢包率。4、模拟30%出站丢包率。

2024-04-13 13:21:14 233

原创 openppp2 组网(虚拟子网)

但是它可以更快,在网络延迟很大的情况下,亦可获得非常不错的效果,类似它们在40 PING延迟下,想要吞吐三百兆都是很困难的,但40 PING延迟上,openppp2 是仍旧是可以网络千兆上行吞吐的。openppp2 可被应用于网络游戏加速,人们在技术这块足够的情况下,可自行搭建配置并剔除 “网易UU”、“迅游”、“奇游”、“雷电” 这些网络游戏加速器的使用。2、在运行 openppp2 客户适配器命令行上,打开 --tun-vnet=yes 子网选项(CLI接口)在查阅本文之前,务必:查阅以下关联文章。

2024-04-12 11:10:35 982

原创 openppp2 开源项目编译方法

重新 cmake 一下,在 make 就可以编译 io_uring 版本了,但需要注意一点,在 Ubuntu 18.04 LTS 上面需要修改内核版本定义的宏,以支持 io_uring 版本程式的编译,否则无法编译,这个在上面给出的参考文献之中已经明确提到了。准备就绪之后,修改 openppp2 的 CMakeFiles.txt 文件,但需要注意:liburing 库必须安装到操作系统,或者你可以自行编辑 liburing 库在 openppp2 CMakeFiles.txt 配置之中的依赖设置。

2024-04-12 10:11:02 739

原创 C/C++ 关于 terminate called without an active exception(问题)

对于 std::thread,类为析构时,线程状态仍处于可 joinable() 状态,导致的问题,在 C/C++ 之中,STL标准库为了确保 std::thread 的一些安全性,用户必须显示的 detach、join 处理并释放线程持有状态。在 C/C++ 之中这类问题,主要出现在STL两个BCL基础类库使用上面,std::mutex、std::thread,它是指在析构时,某些行为没有被正确处理导致的。.lock() 执行后,没有成对执行 .unlock() 函数。

2024-04-12 09:28:08 138

原创 C/C++ 配置 jemalloc 的一些选项,处理一些疑似内存泄漏的问题。

并且每个线程都会单独管理 arena,每个 arena 都有一个 tick 引用计数,当引用计数不为0时,arena 不会自动释放,那么看上去似乎发生内存泄漏了,除非适用 arena 的线程退出。dirty_decay_ms、muzzy_decay_ms 两个值均设置为0,可以减少 jemalloc 对于持续内存的占用率,否则会易于产生疑似内存泄漏的一些现象,令人感到困惑。muzzy_decay_ms 两个值均被设置为0,这代表或许并不存在脏页释放延迟的问题,那么大家直接设置为0,就可以了。

2024-04-09 09:21:12 597 1

原创 C/C++ 标准库 std::vector、std::array、原生静态数组 的区别有哪些?

另外若无必要,不要首选 std::vector 容器,它可能带来一定的性能上面的风险问题,若必须使用 std::vector 容器,那么可以首选自行实现一个适用于业务场景调优的 vector 容器出来,但若 vector 频繁擦写的数量并不多时,可以考虑直接适用它。但实际上在 release 上面会被特别优化的,C/C++ 就喜欢这么玩,标准库好多东西,在最终编译的时候都会有特殊的编译器实现跟优化的,有时候 C/C++ 标准库跟编译器都有点玄学,C语言这块就比较好,不搞那么多令人困惑的东西。

2024-04-08 15:28:57 357 1

原创 初识开源项目 openppp2

2、OPENPP2 为控制台窗口程式,开源项目的作者,并不提供移动端APP产品,仅提供嵌入式框架类库基本支援,想要移动端APP的人们,需自行定制构建并且实现它,但这与开源维护作者们之间毫无关联。该工具链对多数人并不友好,上手门槛相对高,工具作者本人,反对并抵制普通及一般性非专业用户,不欢迎有前科、或心怀不轨、愚不可及的人们适用它,否则产生的一切后果自负,工具链作者们概不负责。2.2、Linux 平台上面,Intel Atom™ X5 Z8300/Z8350,启用SSMT技术的情况下,全核四百兆吞吐速度。

2024-04-08 14:46:59 397

原创 删除我的电脑中“C盘瘦身专家”图标(流氓软件)

找到包含 “C盘瘦身专家” 得注册表项,然后直接删除,刷新桌面浏览器,就可以看到图标被删除了,国内做好软件不行,搞流氓软件倒是有一绝,正常从市场安装软件都得中招,玛德。计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer。用联想电脑管家强制先卸载掉该软件,然后以管理员身份打开注册表(regedit)

2024-04-08 12:00:32 193

原创 C/C++ std::list 插入时即整理顺序(ASC升序)

根据 packet_seq 可以得出,插入位置的最短距离,更偏向左侧、还是右侧,该函数实现仅供参考,若需要多线程访问,需要确保 “代码临界区同步问题”。下面是一个随机的 packet(帧)插入函数,ASC升序,按 “packet_seq” 来控制成员之间的顺序,该函数优化了,倾向头、倾向尾。

2024-04-07 19:25:50 500

原创 C/C++ 查泄漏得一些方法

有一些是用三方工具来查得,但这个需要编译debug,带上符号信息得版本才可以,就很麻烦,而且只能查 new 传入符号信息得数据,有一些是hook形式,需要在通过这些工具引导运行,反正不好用就是了。退出程序得时候调用下,把当前内存对象都打印下,看看那些是产生了泄漏了,这个可以做成一个接口,如果是做服务器程序得话,方法这块都差不多,内存泄漏不这么搞,纯靠猜是很难解决问题得,也没得效率。在 C/C++ 之中内存泄漏一直是个老大难问题,但索性用于辅助定位查找得解决方案也不少,虽然没那么详细,但总比没有要好的多。

2024-04-06 21:35:42 396

原创 VC++ Windows 平台通过QOS2库函数设置Socket DSCP(IP_TOS)参数选项

用法是这样的,每个TCP在建立链接后,立即创建这个QOSS的实例,当然也可以在链接前,但在连接前有一定限制就是说,你必须在连接前把IP+PORT地址传进去,链接建立后在创建QOS就不需要传入IP+PORT地址。本体提供的函数实现,只能对于TCP生效,UDP没法生效,看文档没搞明白,有了解UDP怎么设置DSCP的童鞋,可以在评论区给予答复。同时,在关联的TCP链接关闭时需要销毁这个,否则就会产生QOS2内核句柄资源泄漏。

2024-04-04 18:07:35 576

原创 VC++、GCC、CLANG,INT128有符号整数编译器关键字

即:__m128,当然也有编译器限制,在VC++ 之中仅支持 X86/X64 处理器平台,且该平台CPU必须支持SSE2、SMID2指令集。对于 GUN/CLANG 上面适用 INT128 其编译器关键字为:__int128_t ,32位平台均不可用,目前仅限于64位平台。注意INT128为目标平台扩展关键字,不属于C/C++语言本身支持特性,每个C/C++编译器平台支持上都略有不同,甚至不支持。

2024-03-31 20:46:49 455

原创 GUN C/C++ (GCC/CLANG) 对于 __int128_t (128位有符号大整数的扩展支持平台限制)

鉴于我们对于GCC,在多个CPU目标平台上适用 __int128(GCC扩展)兼容的情况,目前 __int128 仅限在编译64位可执行程序平台被支持。MIPS64 支持(__LP64__、__mips64、__mips64__)S390X 支持(IBM科研、及学术平台大型机)X86 不支持(i386、i686)ARMV7L 不支持(armv7a、arm32)X86_64 支持(amd64)AARCH64 支持(arm64)MIPS 不支持。

2024-03-31 20:42:03 184

原创 Linux 命令显示网络接口IP地址,可以在谷歌/甲骨文云shell上运行

显示当前网络接口IP。

2024-03-31 20:27:24 331

原创 Linux systemd 配置为守护(daemon)运行模式

在 CentOS7、Ubuntu 16及以上版本均支持 systemd 配置,但需要注意:systemd 配置运行对应用程序有一定限制,这些被运行ELF程式必须考虑在 systemd 环境下工作的兼容性。操作命令及配置文件;

2024-03-31 20:23:23 260

原创 Ubuntu 16.04/18.04 LTS内核降级及通过GURB指定内核

4.4.0-47内核是最后一个可以安装 “锐速 ServerSpeeder” 的内核版本。有些时候是没法删除内核实现轻松降级的,这个时候就需要修改gurb配置文件指定内核启动,但这就需要以下的命令配合了。GRUB_DEFAULT=0 表示首选内核(看dpkg -l|grep linux-image 列出来的排序)重定向语句写作:($menuentry_id_option>指定内核ID)先列出所有的内核,把$menuentry_id_option的值复制出来。列出当前安装的所有LINUX内核。

2024-03-31 20:18:27 555

原创 修改系统进程资源配额(默认)

reboot(重启生效)。

2024-03-31 20:01:51 89

原创 Linux 查看各个进程打开文件描述数量

第一列:“打开文件描述符句柄数量”第二列:“进程ID”

2024-03-31 20:00:44 350

原创 Ubuntu 安装GDB调试器(手动下载 dep 文件安装,有些时候 apt 不可用)

wget http://kr.archive.ubuntu.com/ubuntu/pool/main/b/babeltrace/libbabeltrace1_1.3.2-1_amd64.debwget http://kr.archive.ubuntu.com/ubuntu/pool/main/b/babeltrace/libbabeltrace-ctf1_1.3.2-1_amd64.debwget http://security.ubuntu.com/ubuntu/pool/main/g/gdb/gdb

2024-03-31 19:57:38 555

原创 常用VPS服务器检测脚本

老版脚本:wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"新版脚本:bash

2024-03-31 19:56:27 378

原创 CentOS7 RPM升级支持BBR TCP/CC的内核版本

Fedora/CentOS 系统修改内核保有量(installonly_limit=3)本命令设置系统最大可安装保留内核数量,超出后会删除并卸载版本最低的那个内核。

2024-03-31 19:54:23 187

原创 ubuntu 18.04 LTS 安装多个CPU平台GCC交叉编译器工具链

目标平台;aarch64amd64armv7ls390xmipselriscv64编译器名;

2024-03-31 19:16:23 319

原创 中国大陆IP段(含港澳)【2024-03-31】APNIC lasted 2024-03-31

1.0.1.0/241.0.2.0/231.0.32.0/191.0.8.0/211.1.0.0/241.1.10.0/231.1.12.0/221.1.16.0/201.1.2.0/231.1.32.0/191.1.4.0/221.1.8.0/241.1.9.0/241.10.0.0/211.10.11.0/241.10.12.0/221.10.16.0/201.10.32.0/191.10.64.0/181.10.8.0/231.116.0.0/151.118

2024-03-31 19:11:24 283

原创 Docker 运行 io_uring 程序崩溃或出现错误时应如何解决?

启用特权容器模式: 可以通过在 Docker 容器运行时加上 --privileged 标志来启动容器。那么将容器提供类似于宿主机的权限。这常常出现于在 Docker(sandbox 沙盒容器)之中运行 io_uring 服务器模式下,解决该问题需要打开容器 “特权模式”。boost::asio、io_uring_queue_init 未处理的结构化异常,因权限及操作不支援而导致限制。注意:Docker 打开特权模式,仍需要确保母鸡(宿主)内核大于或等于5.10.0。

2024-03-31 19:07:24 358

原创 boost::asio 调整 io_uring 队列大小

在 boost::asio 之中目前并未提供API接口,用来配置 io_uring 队列得大小,每个 io_context 分配的 io_uring 队列,开发人员需要自行评估 io_uring 队列大小,应当设置为多少,内存负载及效能之间可获平衡。若无必要默认情况下,适用 boost::asio 设定得默认值即可,虽然它浪费了很大得内存,但 boost::asio 设定得默认值,在绝大多数得场景上都是够用得。

2024-03-30 22:48:18 202

原创 boost::asio 启用 io_uring(Linux 5.10)队列支持

在 github 上面去下载 release 得包自己编译,目前最新版本是 2.5,内核必须 5.10,否则尝试运行 boost/asio 会出问题,不是链接不上就是崩溃这些问题。编译程序需要添加对于 liburing.a 库得链接,另外 ubuntu 18.04 lts 上面没法安装 liburing,所以需要手动去编译库。3、在预定义头文件(stdafx.h)、或编译器预定义宏(如:cmake、premake 内预定义)定义下述两个宏,注意是两个缺一不可,宏定义值设为:1。把该文件内容替换成下面这个。

2024-03-30 11:54:19 226

原创 boost::asio::ip::tcp/udp::socket::release 函数为什么限制 Windows 8.1 才可以调用?

如本文题目所示,这是因为只有在 Windows 8.1(Windows Server 2012 RC)及以上 Windows 操作版本才提供了运行时,修改/删除完成端口关联的ABI接口。3、做成多模式,Windows 8.1 以下的版本,走原本流程(不转移 io_context),Windows 8.1及以上可以转移 io_context 驱动。2、多个 io_context 的情况,想要把 socket 交给另一个 io_context,可以考虑二次转发来解决。微软官方的MSDN文档,上面有明确说明。

2024-03-29 13:32:50 494

原创 VC++ 判断当前操作系统是否为 Windows 10

但我们没必要创建一个 socket 内核句柄的形式来检测,可以通过 KERNEL32.DLL 之中是否在EAT/PE表中导出了 “SetThreadDescription” 函数来检查,该函数在 Windows 10 及更高版本之中被提供。不建议直接调用 RtlGetVersion 函数来获取系统版本的方式来检查,这个要判断大版本,小版本这些,判断 Windows 10 不需要那么麻烦,本文提供的方法是最靠谱也足够简单的。

2024-03-29 12:26:31 173

原创 Linux 内核工具 iptables 配置TCP/UDP端口转发(命令参考)

本机网卡10.0.0.5:20000端口收到数据转发给7.7.7.7:20000。本机网卡10.0.0.5:20000端口收到数据转发给7.7.7.7:20000。把本机20000/TCP端口转发到7.7.7.7:20000。把本机20000/UDP端口转发到7.7.7.7:20000。5、定向TCP/UDP端口转发链,即不需要添加规则;3、配置TCP端口转发(限制网卡IP)4、配置UDP端口转发(限制网卡IP)1、配置TCP端口转发。2、配置UDP端口转发。

2024-03-27 19:49:09 533

原创 C/C++ 各种编译器平台判断,返回对应平台CPU缩写符

参考以下实现,MIPS、ARM、RISV64、X86、X86_64、M68K、S390X、MIPS64、PPC64、LONGARCH32、LONGARCH64等。

2024-03-27 13:43:11 158

原创 C/C++ 不要使用 boost::asio::ip::address::from_string 函数来转换字符串为IP地址

即便是在 GCC/VC++ 上面也有一定崩溃的风险,代替 boost::asio::ip::address::from_string 函数的实现可以参考本文下述的 C/C++ 安全实现。这是因为 boost::asio::ip::address::from_string 函数实现并不安全有问题,在 Android 平台NDK优化编译的情况下,100%会导致程序各种崩溃。通过C语言 posix/socket 函数库来处理,并且把结果在转换成 boost::asio::ip::address 就可以了。

2024-03-27 13:40:30 341

原创 关于 C/C++ 1Z(17)开源项目 openppp2 协同程式切换工作流

stackless 有栈协同程式不要来碰瓷效能,比协同程式切换效能,stackless 真不配跟 stackfull 协同程式比切换效能,若我们不懂这两个协同程式怎么实现的,还真有可能被XX们忽悠住,但可惜我们了解这两类协同程式底层是怎么构建的,当然也自行实现构建过两者,所以在这块还是有一定心得发言权的。从上述的协同程式示意图之中,可以清晰的看到,在中断某一个协同程式时,会直接切换CPU到下一个协同程式(若有,否则为协同程式结束),而不是还会等待执行到。

2024-03-27 11:37:09 1205

原创 关于 boost::asio::strand 初始化 socket、stream、resolver、deadline_timer 对象

如果我们希望 socket 都运行在一个 strand 上面,按照那些所谓大牛,文档都看不仔细的情况下,大概率是让人们构造一个共享的 boost::asio::io_context::strand,然后在 socket 的异步行为回调函数上都 warp 一次。boost::asio::any_io_executor、boost::asio:::any_completion_executor 就没问题,取决于每个不同 asio 对象构造执行器的限制类型。是不是很直观跟简单,那么运行效果会是什么样子呢?

2024-03-26 17:24:37 219

原创 关于 C/C++ boost::asio 的一些须知

那么 asio 得问题在哪里是在多线程同时驱动一个 io_context 得情况下,但要取决于场景及情况,如果只是做单收测试,那直接用 epoll 更快,但是如果涉及到收发处理、转发处理,这未必,在多线程得情况下,无论用原生还是非原生,你都会涉及到锁得同步,效率一样会有影响。我还是那句话,不要在乎它们得看法,它们得看法并不重要,重要的是合不合适,技术没有好坏之分,存在即合理,如果是我,我是不愿意不会采用 libevent、libuv、或者用原生 kqueue、iocp、epoll 之类的来实现。

2024-03-25 17:22:01 328

原创 关于C/C++,Linux/MacOS/Windows 平台虚拟内存分配

这是因为,在 Windows 平台上面,通过MMF技术分配的虚拟内存,若程式运行过程中没有手动调用 FlushViewOfFile 刷入内存映射文件改变函数,就会导致程序在退出的时候,由于分配的虚拟内存过大涉及改动的虚拟内存页过多,这个时候内核就会挂住进程,以完成改变内存同步到文件的动作。在大多数这两个平台上面需要分配虚拟内存的应用程序,都首选该方法,但可惜的是,这会占用一定的磁盘空间,但这个可以被缓解,即当文件被映射到内存之后,立即调用 unlink 函数删除被映射的文件,即可。

2024-03-24 23:28:49 483

原创 C++ IDisposable 接口抽象类实现

这是因为并非所有的 C/C++ 对象,都通过析构函数来处理资源释放是正确的,例如:共享指针引用的 C/C++ 对象,且该对象需要一定时间才能完成资源的全部释放,这在多核并行编程上面是很常见的需求,这个时候依赖于析构处理,可能带来资源释放的不安全性。每个C/C++对象实例都应正确实现 IDisposable 接口,以确保对象实例能够正确释放持有的托管资源,而不仅仅只是依赖于 C++ RAII机制调用对象的析构函数。

2024-03-24 13:33:41 271

serverspeeder2 锐速(TCP/IP单边加速)

支持:“Windows XP/2003” 操作系统平台(含:32/64位程序)

2022-09-20

serverspeeder 锐速

serverspeeder 锐速, 一:支持 “Windows Server 2016/2012/2008” x86_64 服务器平台。 二:支持 “Windows Desktop 7/8” x86_64 桌面平台

2022-09-20

sscli20.zip

Microsoft .NET Framework 2.0 FCL/BCL/RUNTIME,.NET虚拟机实现源代码!

2022-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除