自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(493)
  • 资源 (4)
  • 收藏
  • 关注

转载 C语言的数组长度能用变量指定吗?

C89即ANSI C,ANSI:美国国家标准学会(American Natinal Standards Institute)C90即ISO C,ISO:国际标准化组织(International Standard Organization)ANSI C 和 ISO C是完全相同的标准,ANSI C最终版本于1989年被批准,故叫C89。ISO C最终版本于1990年被批准,故叫C90。必须是自动变量,即:不能使用static、extern关键字修饰。

2024-03-30 19:40:37 73

转载 Valgrind Memcheck 源码分析

Valgrind是用于构建程序动态分析工具的重量级插桩框架。目前Valgrind内置的工具,可用于检测内存管理和线程竞争等等过程中产生的问题,更快速、更准确和更详细地分析所需的程序。其中,Memcheck是valgrind应用最广泛的工具。它是一个重量级的内存检查器,能够发现C或者C++在开发过程中绝大多数导致程序崩溃或者不可预知的行为的内存相关的错误,比如:使用未初始化的内存、使用已释放内存、内存访问越界等。

2024-03-14 14:54:15 40

转载 【Linux 创建临时文件 API】编程中的瞬息之光:临时文件的艺术与智慧 tmpnam,tmpfile,mkstemp,mkdtemp等函数解析...

因此,当 str 不为 NULL 时,我们需要确保这个笔记本(数组)有足够的空间来容纳这个路径名,至少要有 L_tmpnam 长度的空间,这个长度是在 stdio.h 文件中定义的常量。在这个过程中,我们不难发现,tmpnam 函数像是我们的记忆,每次调用它都会生成一个新的名字,但如果不将其记录下来,旧的记忆就会被新的覆盖。临时文件,尽管它们的生命周期短暂,但正确和智慧地使用它们,可以在确保效率和安全性的同时,大大简化程序的复杂性。存储方面,应当将临时文件放置在适当的目录中,如系统的临时文件夹。

2024-02-29 22:13:40 52

转载 linux之Oops原理及解析

什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux内核也会抱歉的对我们说:“哎呦(Oops),对不起,我把事情搞砸了”。

2024-02-27 15:45:59 103

转载 C语言--backtrace调用栈信息解决程序崩溃问题总结

有上面的认识后那我们就只需要得到此次libadd.so的加载地址然后用0x7f85839fa5c6这个地址减去libadd.so的加载地址得到的结果再利用addr2line命令就可以正确的得到出错的地方;当这些换到Linux上的C/C++环境时情况将变的稍微复杂一些,通常在这种情况下是通过拿到出问题时产生的core文件然后再利用gdb调试来看到出错时的程序栈信息,这是再好不过的了,但当某些特殊的情况如不正确的系统设置或文件系统出现问题时导致我们没有拿到core文件那我们还有补救的办法吗?

2024-02-26 22:59:03 98

转载 【YAML】YAML语言|YAML配置文件|YAML库用法|相比json的区别优势

YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。它非常适合用来做以数据为中心的配置文件。

2024-02-04 00:17:21 132

转载 Valgrind——memcheck内存泄漏分析

valgrind 官网 https://www.valgrind.org/valgrind 是 Linux 业界主流且非常强大的内存泄漏检查工具。在其官网介绍中,内存检查(memcheck)只是其其中一个功能。valgrind 默认使用 memcheck 去检查内存问题。valgrind是用于构建动态分析工具的仪器框架。它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序。Valgrind的架构采用模块化设计,因此可以轻松创建新工具,而不会干扰现有结构。

2024-02-01 15:56:18 109

转载 无法访问GitHub,原因以及快速解决办法

综上所述,出现无法访问GitHub的情况,可能是因为网络层面的问题、GitHub本身问题或者个人设备问题,需要通过排查来找出具体的原因并采取相应的解决方案。DNS是一种用于将网址转换为IP地址的工具,如果你的电脑无法访问GitHub,那么很有可能是因为DNS出现了问题。如果GitHub出现以下问题,可能对你的访问造成访问影响。浏览器问题可能导致你的电脑无法正常访问GitHub,解决方法包括清除缓存、重启浏览器或者使用其他浏览器尝试访问。最后,还有可能是你的个人设备存在问题,导致你无法访问GitHub。

2024-01-25 23:25:51 527

转载 Arch64中va_list/va_start/va_arg/...的实现

可变参函数指的是一个可以接受可变个参数的函数

2024-01-22 22:48:14 82

转载 【C语言】强符号和弱符号

C语言的强符号和弱符号

2024-01-19 21:58:01 61

原创 Linux上git clone的代码,在windows上git log报错

Linux上git clone的代码。

2024-01-17 23:49:17 389

转载 windows上使用git仓库的问题(换行符、文件权限、软链接)

nix系统对拥有者、组、其他几种用户都有明确的读写执行权限,这些在windows上没有对应的机制,这个问题在使用git时表现为没有修改文件却出现很多modified的文件,git status显示 typechange。这可能是最让人头疼的问题,在*nix系统里我们经常会使用ln来给文件和文件夹设置软链接,而这些软链接到windwos就失效了,不能进行导航,ide也不识别,如果有关键文件夹设置了软链接,仓库在windows上就基本不可用了。考虑国内访问github速度,贴出脚本如下,在仓库根目录执行。

2024-01-17 23:27:45 83

转载 cppcheck,代码简单分析,以及实现一个简单的模块

这个工具,会将一个源文件(目前我是用单一源文件测试的,没有使用目录测试),每一个有效符号或者元素都解析出来,之后储存在一个大list里面,供后续模块检测时使用,

2024-01-06 13:42:06 133

转载 Cppcheck代码分析

Cppcheck代码分析

2024-01-06 11:49:19 130

原创 Cppcheck(C/C++ 静态代码检测工具)

Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误。Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等。此外,Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为。

2024-01-02 19:24:44 1309

原创 可见性、有序性、原子性

同样,写入数据的顺序也一样。程序不一定是按照顺序执行的,为了提高CPU的利用率,让CPU尽可能多的工作,CPU会在某些语句当中选择"乱序执行"。有,即便是只有单核CPU,在一些比较耗时的操作例如等待网络响应,等待IO等操作时,CPU也是处于待机阶段,如果在这段时间里,有其他线程可以把这个空闲时间利用起来,CPU的利用效率是特别高的,会比单线程执行更快。在修改数据的值时,会首先读一下要修改数据的原值,之后在执行修改操作前看看刚才读的值和内存中现在存储的值相不相同,如果不相同,返回false,不进行操作。

2023-12-27 23:37:40 354

转载 离线安装python依赖包-以离线安装pylint为例

方法1:在联网环境下,pip安装pylint时,会自动下载需要的一些依赖包。以下是VS code中安装pylint的截图,红框所指即为自动下载依赖包的提示。方法2的缺点:如果你的联网环境安装了其他包,可能就不好明确知道pylint需要哪些包,以及这些包的安装(依赖)顺序。同样在离线环境中我们也可以执行pip list来查看当前python中安装的包,两相对比就可知道缺少哪些依赖包。根据2中截图,依次安装这些包(依次安装时因为这些包之间可能也有依赖)。将3中的依赖包拷贝到离线环境中,然后按顺序安装。

2023-05-12 13:54:13 782 1

原创 B树、B+树、R树

从B树、B+树、B*树谈到R 树

2023-03-27 16:24:46 424

原创 SCSI、ISCSI、iSER、NVMe、NVMe-oF、NVMe-oF over RDMA

SCSI、ISCSI、iSER、NVMe、NVMe-oF、NVMe-oF over RDMA

2023-03-03 21:35:58 1466

原创 Linux Flame Graphs

火焰图

2023-02-28 15:35:17 304

转载 伽罗华域(Galois Field)上的四则运算

http://abcdxyzk.github.io/blog/2018/04/16/isal-erase-3/

2023-01-11 10:53:25 1311

转载 基于柯西矩阵的Erasure Code技术详解

基于柯西矩阵的Erasure Code技术详解

2023-01-11 10:46:53 321

转载 高性能纠删码编码

高性能纠删码编码

2023-01-11 10:35:15 382

转载 深入浅出一致性Hash原理,及问题解决

深入浅出一致性Hash原理,及问题解决

2022-12-10 15:40:35 394

转载 (跳跃)一致性哈希算法

(跳跃)一致性哈希算法

2022-12-10 15:21:40 674

转载 一致性哈希算法(consistent hashing)

一致性哈希算法(consistent hashing)

2022-12-10 14:48:30 1150

转载 Scons

在scons脚本调试中,输出是一个重要的环节,通过输出我们可以观察调试期间的步骤,便于定位问题

2022-11-29 00:15:18 284

转载 Scons环境搭建和编译原理概述及嵌入式开发常用模板

Scons是用python实现的一个类似makefile的软件构建工具。

2022-11-29 00:12:53 3092

转载 动态库基本原理和使用方法,-fPIC选项的来龙去脉

使用gcc生成so文件时,一般要加一个-fPIC选项

2022-11-25 19:07:01 692

转载 valgrind 详解

Valgrind 是一套 Linux 下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind 由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个 CPU 环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。

2022-11-24 18:56:09 393

转载 【Linux】Valgrind工具集详解

Valgrind是用于构建动态分析工具的仪器框架。它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序。Valgrind的架构采用模块化设计,因此可以轻松创建新工具,而不会干扰现有结构。

2022-11-24 18:27:14 779

转载 KASAN实现原理

KASAN是一个动态检测内存错误的工具。

2022-11-24 14:02:57 448

转载 Linux下内存检测工具:asan

ASAN(Address-Sanitizier)早先是LLVM中的特性,后被加入GCC 4.8,在GCC 4.9后加入对ARM平台的支持。因此GCC 4.8以上版本使用ASAN时不需要安装第三方库,通过在编译时指定编译CFLAGS即可打开开关。

2022-11-24 10:05:58 1418

原创 构建和安装rdma-core用户空间库

构建和安装rdma-core用户空间库

2022-11-11 21:32:04 942

原创 iproute2编译安装

iproute2编译安装

2022-11-10 01:39:21 2191

原创 CentOS7 编译源码升级内核

CentOS7 编译源码升级内核

2022-11-09 22:31:34 1295

原创 CentOS7 Soft RoCE v2

Soft-RoCE

2022-11-07 01:22:06 979

转载 Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的“+“号)

Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的"+"号)

2022-11-06 22:33:31 1008

转载 CentOS7,非LVM根分区扩容

CentOS7,非LVM根分区扩容步骤

2022-11-06 15:33:42 278

转载 CentOS7扩容根分区(LVM)

CentOS7,LVM根分区扩容步骤

2022-11-06 15:30:56 414

valgrind详细手册

valgrind详细手册

2024-03-14

valgrind详细手册

valgrind详细手册

2024-03-13

googletest-1.14.0

googletest-1.14.0

2024-01-23

googletest-1.14.0

googletest-1.14.0

2024-01-23

cppcheck源码编译安装,火焰图FlameGraph-1.0

cppcheck源码编译安装,火焰图FlameGraph-1.0

2024-01-06

Cppcheck工具手册

Cppcheck工具手册

2024-01-02

TIPC学习资料(很有用).7z

TIPC学习资料(很有用).7z

2021-04-21

vxworks网络栈.zip

vxworks网络栈.zip

2021-04-14

给Linux中的cp和mv命令中添加进度条的高级拷贝

给Linux中的cp和mv命令中添加进度条的高级拷贝 cp和mv命令是GNU coreutils的一部分。 安装“Advanced Copy”补丁,将进度条添加到Linux的cp和mv命令中

2020-11-27

Nmap用法及原理详解

这个压缩包有比较去全面的Nmap用法和原理分析文档。 (1)Nmap核心功能的源码(如nmap.cc/ scan_engine.cc/ service_scan.cc/osscan2.cc/ nse_main.lua等)。 (2)Nmap的核心数据库文件(nmap-os-db/ nmap-service-probes/ nmap-rpc/nmap-protocols等)。 (3)编译链接相关的Makefile或CONFIG文件。 (4)其他杂项文件(如安装提示:README-WIN32)

2020-01-17

空空如也

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

TA关注的人

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