自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

点滴路程

在成功的路上,留下我们坚实的痕迹

  • 博客(108)
  • 资源 (2)
  • 收藏
  • 关注

原创 【unix高级编程系列】信号

本文详细介绍了Linux信号的概念、处理方式、常见信号的用途以及信号处理函数的使用。希望能给您带来帮助若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-08-19 20:50:22 700

原创 【unix高级编程系列】进程控制

文章主要介绍了Unix系统中进程控制的相关知识,包括进程标识、创建进程、进程退出以及获取子进程终止状态的方法。进程标识。每个进程都有一个唯一的进程ID(PID),用于标识系统中的进程。PID是可复用的,当一个进程终止后,其PID就成为复用的候选者。创建进程。fork函数是用来创建新进程的。父进程通过fork创建子进程,子进程是父进程的副本,包括数据空间、堆、栈的副本,并且父进程和子进程共享正文段。进程退出。

2024-07-31 10:54:14 844

原创 一文搞懂系列——PEM文件解析流程

详细介绍了如何从.pem格式的私钥证书中提取公钥和私钥信息。.pem文件是私钥证书的常见格式,而der格式是.pem文件中数据的基本格式。文章通过介绍pem和der的关系、ASN.1、BER编码格式等基础知识,帮助读者理解如何解析.pem文件中的数据。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-07-25 16:26:56 1420

原创 【unix高级编程系列】进程环境

针对这一点,在linux环境中,我觉得和第一点是相同的。main函数也可以称为"主线程",进程中的最后一个线程”一定“是主线程。因为若main函数先退出,就会触发第一点。有不同理解的朋友,还请指正。进程的终止方式:分为正常终止和异常终止。正常终止包括从main函数返回、调用exit函数、调用_exit或_Exit函数、最后一个线程从其启动例程返回、从最后一个线程调用pthread_exit。其中,exit函数在退出前会执行一些清理动作,而_exit和_Exit函数则直接返回内核。

2024-07-21 15:07:06 965

原创 终于解决了!!! 基于GmSSL的SM2签名算法及思路分享

问题最终得以解决了,似乎看起来也并不困难。其中的酸楚,估计也就只有经历过的人才了解。找到可以验证正确性的方式。本文中就是SM2 在线验签工具确定方向可行后,花心思去研究。比如,我在通过gmssl命令行进行SM2签名、验签通过后,就认为该开源库应该是满足要求的。对于不了解的内容,遇到困难不要轻言放弃,转换思路,投机取巧。希望我的经验能够帮助你。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-07-12 08:57:51 814 1

原创 【unix高级编程系列】标准I/O

标准I/O提供了流的概念,简化了文件I/O操作,提供了更丰富的接口和缓冲机制,使得I/O操作更加高效和方便。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-07-10 17:50:33 1056

原创 【unix高级编程系列】文件I/O

文件编程是Linux开发者必须掌握的技能。本文介绍了Linux文件编程中常用的API及其注意事项,包括open、creat、close、lseek、read、write、dup和dup2等。还介绍了sync、fsync和fdatasync等接口,用于确保数据安全。此外,文章还解释了Linux内核如何标识打开的文件,以及文件表项、V节点和进程表项之间的关系。希望能给您带来帮助。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。

2024-07-06 14:43:07 1138

原创 关于读完《额尔古纳河右岸》后的一些感受

我本是一个喜欢读书的人,爱读那些有深意的书籍,而非现在这些《数据结构》、《LINUX 高级编程》、《编译原理》等技术性书籍。读它们时,我的的目的性很强,就是想了解它,思考如何运用到工作中。虽然时常也会因为get到新技能,拓展新思维而感到开心,并进行分享。但感觉并不是真正的快乐,没有那种从内心深处、灵魂涌出的宁静。前段时间因为工作上的压力,导致自己整个人都不好了,感觉突然找不到自我,出现了自我怀疑、自我否定的情绪。甚至失去了对生活的期待。这让我十分的恐慌,心态和生理上都造成了影响。

2024-06-25 14:20:34 911

原创 *** stack smashing detected ***,彻底搞懂GCC栈保护的实现原理以及问题分析套路

本文通过工作中的案例,了解到gcc实现栈保护的原理,以及分享遇到相关问题的排查思路及技巧。希望能够帮助到您。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途参考文章:https://applink.feishu.cn/client/message/link/open?

2024-05-05 17:41:49 1657

原创 LOCK、ACC、ON、START的含义及正确使用

整体而言,汽车电源状态包括OFF、ACC、CRANK、RUN四个模式,分别对应车辆未通电、附件上电、发动机点火、发动机运行状态。正确的使用这些模式有助于节约能源和保护蓄电池。参考文档:若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-04-15 18:00:05 1958

原创 【案例分析】解决困扰项目半年之久的问题,并让同事对我竖起了大拇指!!!

为了帮助您快速理解问题,我先向您简单介绍一下软件架构(架构以及基础件的设计非常不合理🤕,勿喷!!!我们采用多进程服务方式。不同类型的业务由不同的进程去实现。为了日志分析方便。后续决定将不同进程的log打印输入到同一个文件中。于是就产生了logRcv进程。它的作用就是通过读取共享内存中,来自其它业务线程的日志。将其写入统一的日志文件中。int tail;/** 1.获取共享内存锁*//** 2.将日志写入buf*/

2024-04-07 20:30:47 1192

原创 gdb 环境问题:Backtrace stopped: previous frame identical to this frame (corrupt stack?)

若您与我遇到了相似的问题,不妨试试将以上三个库重新编译一份,替换成具备debug_info,以及not stripped。若依旧不能解决,坚决一点,就是供应商的问题,让他们去解决。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-04-06 10:23:40 3164

原创 AG35-CEN休眠模式,异常唤醒。问题分析及分享

本主要介绍如何分析 AG35-CEN 模组休眠模式被异常唤醒的分析思路。通过一点点排查,分析。最终定位到是 TCP 协议中 keep alive 机制导致的。令我收获比较大的就是了解到车辆低功耗的整个实现方案,以及遇到相关问题是的大致方向。希望能帮到有需要的朋友。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-03-28 21:22:33 917

原创 【案例分析】入职第一天,如何让同事对我刮目相看

确认是进程自己触发crash,还是系统触发。若是程序自己触发,可以通过打开系统的coredump属性,待生成core文件时,进行gdb分析。关于gdb的使用,可以参考我的文章【小白进阶】Linux 调试大法——gdb。(打开程序的调试选项-g和not strip若是系统触发,一般是因为触发了OOM机制。如果内存会随着时间逐步增加,一般就是存在内存泄漏了,最简便的方式就是使用valgrind工具,运行一段时间,查看内存泄漏点;若不是逐步增加,一般是因为某个操作导致的内存急剧增加。

2024-03-24 21:44:55 692 2

原创 一文搞懂系列——可变参数函数实现原理及注意事项

可变参数函数是C语言中常见的特性,允许函数接受数量不定的参数。常见的实现方式是通过va_list系列函数,包括va_startva_argva_end。本文介绍了其实现原理,希望大家能够得到更进一步的理解。不正确使用可变参数,可能会导致程序崩溃(段错误)或其他安全问题。例如,如果调用函数时没有提供足够的参数,va_arg可能会访问非法的内存地址。明确固定参数和可变参数的个数和类型。使用编译器的警告选项(如-Wformat)来检测潜在的问题。在函数调用时提供正确的参数数量和类型。

2024-02-22 18:17:10 1141

原创 案例分享:进程如何加载相同库的不同版本

本文分享了工作中的一个案例,由于历史原因。我们不得不在一个进程中采用两个不同的版本的相同算法库。识别到了潜在问题:符号重定义、全局符号介入、如何指定版本符号。并从理论与实践上分析解决。更深入了解运行时模块加载的好处与特殊场景。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-02-19 18:37:44 1202

原创 vsCode无法连接服务器问题解决及思考

虽然问题最终是通过更新虚拟机镜像版本得以解决。但是前面走了很多弯路。我的感受就是:遇到问题,我们的第一反映则是百度搜索,查看是否解决方法,然后按照他人的操作,执行一遍,看是否能解决。如果不行,继续百度,继续做尝试。这样的方式,在大多数情况下,可能会很快的帮助我们解决问题。但是当你经历多次盲目的尝试,并且失败后。我们应该静下心来自己进行问题分析,可能会有意想不到的发现。多思考,多发现。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。

2024-02-05 14:38:44 3846

原创 安卓平台valgrind交叉编译

本文主要讲述了在Android平台使用ndk23交叉编译工具链编译valgrind时遇到的问题及解决方法。主要问题包括不支持Android系统、结构体重复定义、无法找到libgcc.a库以及32位工具编译失败等。作者首先尝试通过修改configure参数和解决依赖问题来解决问题,但在目标机调试时仍然遇到断言错误。随后,作者尝试使用gcc编译而非clang,并找到了一个早期版本的ndk14,最终成功编译并调试了valgrind。有时换一个思路,也许会让你柳暗花明又一村,拥有意外收获。

2024-02-04 15:50:23 1800 10

原创 一文搞懂系列——非局部跳转setjmp和longjmp使用及原理

本文向大家介绍了非局部跳转函数setjmp和longjmp的使用方式,以及实现原理。即使它的存在,有很多不好的影响。但是在特定场景下还是能够体现它的价值。比如异常处理,实现C语言的异常捕获和协程。但是还是希望大家谨慎使用,按需设计。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-01-25 16:04:02 1339 2

原创 【程序员的自我修养11】栈与函数调用过程

首先我们来看一张Linux进程中经典的内存布局图:内核空间:是操作系统内核运行的区域,它是内核中一个重要的部分,专门为内核以及与内核直接相关的操作和进程提供服务。用户空间无法直接访问内核空间。栈栈用于维护函数调用的上下文。离开了栈,函数调用就无法实现。栈通常在用户空间的最高地址处分配,通常大小为8M。往地址方向生长。堆:堆是用来容纳应用程序动态分配的内存区域,当程序使用malloc或new分配内存时,得到的内存来自堆里。往高地址生长。动态库:用于程序运行时,动态链接器或在程序运行过程中通过。

2024-01-16 11:30:17 636 1

原创 一文搞懂系列——Linux C线程池技术

实际上,我觉得在诊断项目中,线程池技术是非必要的。因此它不会涉及到大量的请求,以及每一个请求处理,一般都会比较耗时。参考:https://www.cnblogs.com/zhaoosheLBJ/p/9337291.html。

2024-01-15 21:09:36 1175 2

原创 【程序员的自我修养10】动态库的兼容问题——GLIBC_2.34‘ not found

前几章,花了较大篇幅介绍了动态库链接过程原理,需要面对的场景以及解决思路,真真切切的了解到动态库的优秀之处。这就导致大量开始程序使用动态链接。随着系统中的动态库越来越多,也会出现一些问题。本文介绍动态库的发展过程中遇到的问题,以及如何解决的。以及非常好用的调试tips。本文花了较大篇幅介绍了动态库如何解决和避免兼容性问题,以及分享两个分享实用的环境变量LD_PRELOADLD_DEBUG,至此关于动态库的分享算是结束了。下一章节,我们开始向《库与运行库》进军。若我的内容对您有所帮助,还请关注我的公众号。

2024-01-10 20:53:05 2873 2

原创 【程序员的自我修养09】动态链接过程的场景补充及其思考

通过上一篇【程序员的自我修养08】精华!!!动态库的由来及其实现原理,大致介绍了动态链接的历史背景,以及通过示例进一步了解当今动态库的实现过程。由于篇幅有限,所以针对一些特殊场景和动态库链接的过程没有进一步展开描述。本文主要作为上文内容的补充。本文是对上篇文章的补充,讲解了共享模块中全局变量的处理方式,以及如何实现共享模块中数据段的地址无关性。共享对象全局符号介入。坑惨啦!!!——符号冲突案例分析若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。

2024-01-04 09:15:33 939 1

原创 【程序员的自我修养08】精华!!!动态库的由来及其实现原理

通过前文的讲解,我们大致了解将程序加载到内存的过程。程序与虚拟内存空间映射表虚拟内存空间与物理内存映射表。之后在程序运行过程中,通过不断触发页错误,持续将相应程序页加载到内存中,从而保证进程正常运行。似乎一切都已经完备了。的确,在早期的程序开发中,源文件经过编译生成可重定位文件(.o文件),再经过静态链接生成可执行的ELF文件,最终运行时,通过页加载和页错误的方式,保证进程的正常运行。已经能够满足当时程序的研发,大家开发和使用都非常方便。但是随着IT行业的发展,原先静态链接方式的缺点也逐渐显露。

2024-01-03 09:13:10 1200

原创 【程序员的自我修养07】程序的装载过程——小内存如何运行大程序

经过前几篇文章的介绍,我们已经大致了解多个源文件如何编译生成可执行文件的过程。但是程序只有放在内存中才能被CPU执行,本章节向大家介绍,如何程序加载到内存中的过程。小内存如何运行大程序?本文讲述了程序加载到内存的步骤,其实质就是建立两个映射。一、虚拟空间和物理内存的映射关系;二、虚拟空间和程序的映射关系。进程运行过程中通过不断触发页错误,将程序中的页加载到内存中。从而解释了小内存运行大程序的原理。本文介绍了静态链接过程一些特殊场景和优化项。希望大家能够结合自己的实际工作,应用起来。

2024-01-03 09:11:42 1061

原创 valgrind跨平台调试及其问题分析

本文介绍valgrind跨平台的调试及应用过程,主要目的是想和大家分享遇到问题是的分析思路,如何一步步推荐,最终达到目的。再结合内存泄漏问题分析思路(案例篇)和快速定位内存泄漏的套路两篇文章,我相信内存泄漏,对于你而言,应该不再是令人头疼的问题了。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-01-02 20:58:34 1418 2

原创 一文搞懂系列——替换动态库,为什么导致运行进程异常

至此,该问题终于解决了。内容较多,希望大家有所收获。在知道根因后,我们不妨再想想,如何在程序运行时,替换动态库,却不影响正在程序。提示:先删除,再拷贝。即。不妨试试哦,可以把原理在评论区写出。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2024-01-02 09:48:59 1463 4

原创 【工具】stress-ng 压力测试环境模拟及分析

stress是一个linux的压力测试工具,专门用于对设备的CPU、IO、内存、负载、磁盘等进行压测。另一个版本是其升级版本stress-ng。在模拟io_wait性能场景时,stress一直表现不好,本文以stress-ng为例,进行介绍。stress-ng工具,在性能测试,或压力测试场景,是一个很实用的工具。希望大家能够掌握基本用法。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2023-12-21 14:58:05 1641 2

原创 cpulimit设计理念及其思考

以上便是的初步设想,后续有时间会进行代码验证,有兴趣的朋友可以关注哈。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2023-12-20 22:05:44 1259 3

原创 一文搞懂系列——DBC数据库信号解析规则及案例

DBC是vector公司定义的can网络通信文件格式。网上介绍的文章很多,有兴趣的朋友可以去搜索一下。本文的主要核心是解析DBC信号部分,对于相关信息进行简略描述。版本与新符号波特率定义网络节点的定义报文帧的定义信号的定义注解部分特征部分数值表部分格式为含义如下:。BU_为关键字,表示网络节点;表示网络节点名字,由用户自己定义。通过网络节点方便地进行CAN网络的设计、开发和测试。如下:格式为BO_,为关键字,表示报文;MessageId,报文ID,是以10进制数表示的。

2023-12-18 21:55:25 4816 5

原创 【程序员的自我修养06】静态链接过程的思考

经过前两章的介绍,我们应该大致掌握了.o文件静态链接为可执行文件的过程。相同的符号定义在多个源文件中,符号解析流程是如何处理方式的呢?无用代码是如何处理的呢?链接的过程,可以控制函数初始化的过程吗?本文则进一步分析,探讨上述几个问题,希望能够给你的工作带来帮助。我们知道不同的.o文件在链接之前是不知道其它.o文件的内容,因此它们之间若存在相同的符号,也是只有在链接阶段才能发现。若链接器发现同一个符号有多处定义,它又是如何处理的呢?两个或两个以上强符号;

2023-12-14 15:44:14 1151 4

原创 【程序员的自我修养05】符号修正的功臣——重定位表

在上篇文章【程序员的自我修养04】目标文件生成可执行文件过程空间与地址分配符号解析和重定位。建议读者看一遍上文,方便理解本章内容。在上篇文章的最后,并提出了一个思考题:链接器是如何知道哪些符号需要被修正的呢?从上文中,我们知道对外部引用的符号或变量,目标文件暂时会设置成0,待符号分析完成后,可执行程序已经确认其真实的虚拟地址,再进行修正。我们是否可以根据变量值是否为0来进行修改正呢?这样的思路,对于函数引用好像是可以的,毕竟没有哪个函数的地址是0吧。

2023-12-13 17:39:07 1097 2

原创 【程序员的自我修养04】目标文件生成可执行文件过程

在前两章的内容中,我们已经了解目标文件的基本布局以及部分局部细节,单独的可执行文件并没有什么实际作用。我们需要多个目标文件链接成可执行文件,或生成动态库。接下来的几章,我会详细介绍目标文件链接成可执行文件的过程,希望大家能够坚持,坚持必有所获。本章节概述了目标文件链接成可执行文件的过程。由如何合并多个目标文件开始,了解到相似段合并的优点。空间与地址分配符号解析和重定位。并用示例分析其过程。内容较多,希望读者能够自己本地操作一遍,认真思考,推敲。若有疑问,也可与我沟通。

2023-12-12 20:27:14 1279 3

原创 一文搞懂系列——字节对齐的前因后果及应用

通过同事偶然间遇到的一个问题,深入剖析,了解到字节对齐前因后果。也给我们警示结构体定义需要满足编译器的规则,否则可能会大量浪费内存空间。在跨平台开发过程中,我们也要考虑结构体成员long数据类型在不同平台的变化。当然也有可能会因为编译器的不同,其它基础数据的自身对齐值,也会发生变化。定义结构体成员变量时,考虑跨平台的情况。对外提供的头文件,可以通过强制设置自身对齐值。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。

2023-12-11 17:39:10 848 2

原创 一文搞懂系列——你真的了解如何生成动态库了吗?

本文从两个实际存在的场景,向大家介绍了动态库生成过程中的一些特定需求。简单介绍了和两个链接属性及使用方式。。有兴趣的朋友可以了解一下。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

2023-12-07 16:50:28 1152 1

原创 daemon和pthread_create之间的问题(线程阻塞)

这样就导致,463编译的软件,调用之后daemon之后,主线程就直接退出了,当我们调用pthread_create函数之后,会发唤醒消息给pthread_initialize记录的pid线程时,让他继续执行。首先第一点,我们之前一直听过一句话,main函数是程序的入口,其实并不是的。最近完成工具链和uClibc库升级的任务,升级之后出现了一个bug,就是大软件起来之后,原先ps能看到6个线程的进程,现在只能看到三个,导致出现了一些功能上的问题。综上所述,用了新的工具链之后出现问题,主要的原因是由于,

2023-12-05 16:24:08 914 1

原创 一文搞懂系列——动态库的加载方式及应用场景

我们从输出结果,可以知道,动态链接器只加载/etc/ld.so.cache配置文件,并没有加载/etc/ld.so.conf配置文件。-Wl,-rpath是编译阶段修改可执行程序的rpath参数,但是往往我们在工程中是不太确认最终的集成路径的。我们只需要将动态库放到对应的路径下即可。我们在工作中经常会遇到动态库链接的问题,因为正常的方式并不能满足我们的场景。知道可执行程序依赖哪些动态库口,动态链接器就需要去找这些动态库,查找的方式主要有以下四种。是我们最最常用的方式,大部分情况下,我们使用该方式即可。

2023-12-04 14:16:19 1578 4

原创 程序员的养生之道:远离猝死、脱发、身体虚的尴尬人生

因此,我们要合理安排运动时间,每天至少进行30分钟的有氧运动,如散步、跑步、游泳等。此外,还可以进行一些针对性的锻炼,如瑜伽、拉伸运动等,以缓解长时间坐姿带来的身体不适。所以,我们要尽量保持规律的作息,白天高效工作,晚上按时入睡。因此,我们要确保每天摄入足够的水分,保持身体水分充足。在工作之余,可以和朋友聚会、旅行,或者培养一些兴趣爱好,如摄影、画画等,以释放压力。在休息时间里,可以进行一些轻松的活动,如散步、喝水等,以缓解大脑疲劳。在这场较量中,我们要充分利用有限的时间,提高工作效率,同时保证身体健康。

2023-12-01 09:38:51 543 3

原创 程序员的吐槽

这位程序员的职场经历,让我们看到了一个平凡人在职场中的成长与奋斗。在这个过程中,他吐槽过、抱怨过,但最终还是选择勇敢面对,寻求改变。他的故事告诉我们,职场中的困境和挑战是每个人都会遇到的,关键是如何应对。只有调整心态,不断提升自己,才能在职场中取得成功。而对于领导和同事,我们也要学会理解和包容,努力打造一个和谐的工作氛围。如此,才能共同促进公司的发展,实现个人和团队的共赢。

2023-11-30 18:40:42 879

原创 【程序员的自我修养03】深入了解ELF文件格式

我们知道链接器在处理目标文件时,需要对目标文件中某些部位进行重定位,即代码段和数据段中哪些绝对地址的引用需要修改。我们知道不同文件间对函数、变量之间的引用,其实就是对符号的引用。之后再介绍常见的段,代码段,数据段,bss段,符号表等内容,以及工作中可以借鉴的地方。:用16进制打印了.text、.data、.rodata、.comment、.eh_frame段的信息,其长度与段表中显示的长度是一一对应的。综上所述,我们基本已经了解了ELF文件格式的布局,接下来,我们尝试深入了解各个段的内容。

2023-11-30 18:05:38 1469

安卓平台valgrind交叉编译

安卓平台valgrind交叉编译

2024-02-05

【献给过去的自己】栈实现计算器(C语言)

【献给过去的自己】栈实现计算器(C语言)

2023-11-16

Wireshark Developer’s Guide.pdf

Wireshark Developer’s Guide.pdf

2019-10-22

ps等命令源码

由于大部分设备上的命令都是被裁减过的,有些参数是不支持的。为了方便大家后续的调试,贡献这份资源,

2019-04-13

空空如也

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

TA关注的人

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