
Linux
文章平均质量分 79
sunny_98_98
这个作者很懒,什么都没留下…
展开
-
docker 命令解析
docker命令解析的。原创 2023-08-07 11:09:18 · 1220 阅读 · 0 评论 -
ZeroMQ消息传输协议(v1)
ZeroMQ: 看了ZMTP 2.0的协议介绍,我们也看看1.0,想看原文的在。翻译 2023-07-26 21:38:57 · 402 阅读 · 0 评论 -
如何备份你的GitLab服务器
使用自我管理的GitLab实例的组织通常依赖它来保存源代码、项目管理和操作工具。有一个有效的备份是至关重要的,这样你的数据就能在硬件故障、服务器更新失败或恶意泄露的情况下得到保护。GitLab有一个内置的备份组件,可以为您的安装数据创建一个完整的存档。存档可以在运行相同GitLab版本的新服务器上恢复。下面介绍如何将为本地文件系统或Amazon S3存储桶。这些步骤用于GitLab综合版本。如果您的实例是的,则需要修改GitLab CLI命令,在它们前面加上。翻译 2023-03-15 16:59:13 · 1302 阅读 · 0 评论 -
Git 比较两个分支的差异
通常我们在Git Lab等工具进行Merge(Push Request)的时候就可以通过网页进行代码审查。而有时候Git Lab的网页对比工具的算法导致整个文件都被认为发生修改,不便于查看修改变更。通常我们在一个分支实现一个功能,当开发测试完成后,合并到主分支,这是通常需要在合并分支前Code Reivew。这时如果工作在Windows环境中,也可以使用TortoiseGit 工具进行比较,也是比较方便的。,每次打开文件对比时,命令行会出现下面的提示文字,输入。可以先查看有哪些文件发生改变,命令。原创 2023-03-09 11:18:53 · 7118 阅读 · 0 评论 -
Linux VIM编辑二进制文件
VIM 查看和编辑二进制文件原创 2022-12-07 15:19:48 · 2341 阅读 · 0 评论 -
组播数据包丢失故障排除指南
介绍本文档的目的是帮助找出丢失组播数据包的原因并进行一些调整以尽量减少此类丢失。组播数据包丢失的原因有多种。UDP 协议本身牺牲了性能的可靠性,并且不保证数据报的传递。 因此,数据包在网络传输过程中可能会丢失。即使数据包到达网络节点,也并不总是意味着应用程序接收到它,因为在处理接收到的数据包时会经过几个级别,在每个级别上都可能会丢失。网络数据包的典型路径如图 1 所示。图1首先,网络适配器(NIC)接收并处理网络数据包。 NIC 有自己的硬件环形缓冲区。当网络数据流高于 NIC 可以处理时,翻译 2022-01-29 21:20:27 · 4752 阅读 · 0 评论 -
Linux网络性能参数
介绍有时,人们正在寻找能够带来高吞吐量和低延迟的sysctl 货物崇拜(cargo cult)值,而无需进行权衡,并且这种值在任何情况下都能工作。这是不现实的,尽管我们可以说新的内核版本在默认情况下已经进行了很好的调优。事实上,如果乱用默认值,可能会影响性能。这个简短的教程展示了一些最常用和引用最多的sysctl/网络参数在Linux网络流中的位置,它深受Linux网络堆栈的插图指南和Marek Majkowski的许多帖子的启发。请随意发送更正和建议!:)Linux网络队列概述将sysct翻译 2022-01-25 23:09:56 · 3103 阅读 · 0 评论 -
CentOS 7安装Stunnel和Squid
在server上面安装squid的过程很简单。yum install squid然后启动squid:service squid start再查看是否运行:$ service squid statusRedirecting to /bin/systemctl status squid.service● squid.service - Squid caching proxy Loaded: loaded (/usr/lib/systemd/system/squid.service; di原创 2022-01-06 13:39:22 · 3026 阅读 · 1 评论 -
生成自己的自签名证书
因为在测试wss (WebSocket Secure)的时候,需要证书。因此参考网上的文章做了一个自己的server的证书。具体步骤如下,参考文章:制作用于CA签名的证书生成CA证书的私钥$ openssl genrsa -des3 -passout pass:123456 -out ca.key 2048Generating RSA private key, 2048 bit long modulus................+++............................原创 2021-11-17 14:10:27 · 2675 阅读 · 0 评论 -
用LD_PRELOAD加载jemalloc
在使用CentOS 7.6,用LD_PRELOAD方法测试了一下jemalloc 和 glibc自带的malloc的性能,发现的确更好。为何没有测试 tcmalloc?因为从网上查了一下,tcmalloc 和 jemalloc的对比 (原文) :作为基础库的ptmalloc是最为稳定的内存管理器,无论在什么环境下都能适应,但是分配效率相对较低。tcmalloc针对多核情况有所优化,性能有所提高,但是内存占用稍高,大内存分配容易出现CPU飙升。jemalloc的内存占用更高,但是在多核多线程下的表原创 2021-11-01 11:24:22 · 1858 阅读 · 0 评论 -
Linux和Windows下C++代码编译的一些基本区别
从Windows Visual Studio开发迁移到Linux GCC开发的人们,经常会遇到一些奇怪的问题,因为在Linux上面的一些行为和Windows不同,当人们习惯了Windows的行为以后,往往不会想到这些不同的地方。在这里,我把Linux下gcc编译和Windows下VC编译不同的地方列出来,方便大家避开坑。编译程序Windows 下VC编译C++ 程序使用 cl.exe,链接程序使用 link.exeLinux 下GCC编译C++ 程序使用 g++,并会链接程序,无需单独再调用链接程序原创 2021-10-22 15:21:54 · 4009 阅读 · 1 评论 -
Linux负载平均值 (Load Average):解开谜团
原文负载平均值 (Load Average) 是一个行业关键指标——我的公司花了数百万美元根据它们和其他指标自动扩展云实例——但在Linux上,它们有一些神秘之处。Linux负载平均值不仅跟踪可运行任务,还跟踪处于不可中断睡眠状态的任务。为什么?我从来没见过解释。在这篇文章中,我将解开这个谜团,并总结负载平均值,作为每个试图解释它们的人的参考。Linux负载平均值是“系统负载平均值”,它将系统上正在运行的线程(任务)需求显示为正在运行的线程加上等待的线程的平均数。这衡量的是需求,需求可能大于系统当前处理翻译 2021-10-21 17:01:00 · 1263 阅读 · 0 评论 -
Valgrind Memcheck 内存检查
原文Valgrind Memcheck是一种检测内存泄漏和内存错误的工具。一些最困难的C错误来自内存管理不当:分配错误的大小、使用未初始化的指针、释放内存后访问内存、缓冲区溢出等等。这些类型的错误很棘手,因为它们提供的调试信息很少,将观察到的问题追溯到潜在的根本原因可能是一项挑战。Valgrind是来帮忙的!内存错误与内存泄漏Valgrind报告两种类型的问题:内存错误和内存泄漏。当一个程序动态分配内存并忘记以后释放内存时,它就会产生泄漏。内存泄漏通常不会导致程序行为异常、崩溃或给出错误答案,并且不是翻译 2021-10-19 14:41:03 · 1525 阅读 · 0 评论 -
Valgrind Callgrind 性能瓶颈分析
原文Valgrind Callgrind是一个可以分析代码并报告其资源使用情况的程序。这是Valgrind提供的另一个工具,它还可以帮助检测内存问题。事实上,Valgrind框架支持多种运行时分析工具,包括memcheck(检测内存错误/泄漏)、massif(报告堆使用情况)、helgrind(检测多线程竞争条件)和callgrind/cachegrind(评测CPU/缓存性能)。本工具指南将向你介绍Valgrind callgrind评测工具。代码分析代码分析器是一种分析程序并报告其资源使用情况的工翻译 2021-10-19 13:57:13 · 1163 阅读 · 0 评论 -
测试内存分配器:ptmalloc2 vs tcmalloc vs hoard vs jemalloc,同时尝试模拟真实世界的负载
原文当我们为参与者开发自己的分配器时,我们需要对其进行测试,更重要的是,需要将其与现有的分配器进行基准测试。显然,虽然有相当多的分配器测试程序,但这些测试中的大多数并不能代表真实世界的负载,因此,只能提供关于真实程序中分配器性能的非常粗略的想法。例如,相当流行的t-test1.c(参见,例如,t-test1.c)经常被用作单元测试,因此它必须测试诸如calloc()和 realloc() 之类的东西;另一方面,这些功能在现代C++程序中很少使用,因此对它们进行基准测试实际上会对测试的真实世界条件(至少对翻译 2021-10-18 11:24:04 · 821 阅读 · 0 评论 -
GDB:检查符号表
原文本章描述的命令允许你查询程序中定义的符号(变量名、函数名和类型)。 此信息是程序文本中固有的,不会随着程序执行而改变。 GDB 在程序的符号表中、在启动 GDB 时指示的文件中找到它(参见选择文件部分),或者通过文件管理命令之一(参见指定文件的命令部分)。有时,你可能需要引用包含异常字符的符号,GDB 通常将其视为单词分隔符。 最常见的情况是引用其他源文件中的静态变量(参见程序变量部分)。 文件名作为调试符号记录在目标文件中,但 GDB 通常会将一个典型的文件名,如foo.c解析为三个单词foo,翻译 2021-07-16 10:57:23 · 7111 阅读 · 0 评论