自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

暗推中...

二次元の程序猿の个人总结

  • 博客(48)
  • 收藏
  • 关注

原创 ld 链接脚本 和 链接脚本中 地址段相关语句介绍

在C语言编程中,LD文件通常指链接脚本(Linker Script)。链接脚本由链接器(链接程序,如 GNU 的 ld)用于控制链接过程,最终生成ELF文件。它可以确定在最终生成的可执行文件或者库文件中,各个段(如文本段 .text、数据段 .data)的布局和对齐。连接器脚本对于嵌入式系统的程序开发尤其重要,因为在这类系统中,开发者需要精确控制代码和数据在内存中的位置,而不是由操作系统选择加载地址。我们在执行编译链接过程中,一般没有指定链接脚本,ld 命令会使用默认的链接脚本。

2024-03-11 20:35:00 675

原创 nm readelf objdump objcopy 命令之间的关系

objdump, readelf, nm, 和 objcopy 是 GNU Binutils 套件的一部分,它们用于处理二进制文件。objdump: 这是一个能够提供各种信息的程序,包括反汇编输出、源代码交叉引用等。更具体地说,它能够读取并解析二进制文件,然后以人类可读的形式显示这些信息。例如,它可以显示出二进制文件的所有头信息,包括文件的大小、段的数量和类型等。此外,它还能显示二进制文件的每个段的内容,包括段内的机器码和对应的汇编代码。readelf: 这个程序用于显示 ELF 格式文件的详细信息。

2024-02-29 19:46:01 679

原创 linux下USB抓包和分析流程

文档简单描述基于usbmon在linux系统上对通过usb口进行发送和接收的数据的抓包流程,分别描述了tcpdump支持usbmon和不支持usbmon的场景下,解析usb数据流的流程

2024-01-20 13:58:56 1231 1

原创 pyusb环境搭建和无法发包问题

但是如上述博客所述,在修改对应设备的驱动为WinUSB (v6.1)驱动之后,会导致该设备原来的功能不能使用,主要是 VendorID 和 ProductID 相同的USB设备都会使用新安装的 WinUSB驱动,而不会使用 其原先自动安装的驱动。因为这里我还是需要支持设备原先的功能,但是用默认的驱动检索安装方式都无法安装,所以简单介绍一下恢复到原有驱动的方法,参考如下博客的介绍:http://www.wrgho.com/help53.html。但是使用api的方式会有差异。

2023-11-04 16:51:38 492

原创 【软考】系统架构设计风格分类的个人理解

个人适当学习了软考系统架构设计师中关于系统架构设计相关的内容,梳理了一下相关信息。

2023-07-19 20:33:46 1448

原创 U盘写流程USB协议抓包分析

u盘写流程usb协议抓包分析

2023-07-10 20:33:30 2003

原创 strace交叉编译后对特定文件的写流程进行监控和过滤

描述了交叉编译的过程,使用strace进行特定路径输出内容的监控,并过滤无效数据的一种实践,对所使用的strace的option进行了说明。

2023-06-04 17:09:06 644 1

原创 strace过滤特定路径访问,显示fd路径,显示线程或进程名称,基于输出的内容二次过滤

本文简单介绍strace的一些比较不大众化的过滤特性的使用方式和示例。

2023-05-21 18:02:19 953 1

原创 《深入浅出SSD》读书笔记——FTL优化和异常处理

在《深入浅出SSD》的读书笔记的FTL主要业务博客中,简单介绍了FTL的映射的基本原理,和垃圾回收的基本原理。在FTL介绍章节中,FTL还做了其他很多工作,我个人理解主要分为两类,一类是优化(包括寿命优化和性能优化),一类是异常处理。以下做简单介绍。

2023-05-14 12:19:48 744

原创 《深入浅出SSD》读书笔记——FTL主要业务

FTL为SSD内部控制器的固件,主要包含3个部分,前端支持主机端的SATA NVMe等协议,中端负责闪存块的管理,为适应主机端的需求和闪存的特性实现的一系列映射管理,垃圾回收,磨损平衡等功能,后端负责实现控制闪存的时序和部分ECC校验。以下结合书籍内容,对各块做一个简单介绍。

2023-04-29 11:12:35 1468

原创 如何打开指定范围的文件描述符

linux系统中在打开描述符时,默认打开的都是最小的空闲描述符。第一个被打开的文件描述符一般是3,默认0/1/2 为输入输出和标准错误描述符。那么如果我们想打开某一个特定的描述符时要如何操作呢?。更进一步说我们需要打开一个指定范围的描述符,用于给不同的模块保留不同范围的描述符,以免不同的模块之间描述符相互交织。那么如何操作呢?。这里主要需要解决的是两个问题,一个是如何打开特定的文件描述符,另一个是如何保证这个特定的描述符是可以使用的。前者使用dup2将文件描述符进行复制。

2023-02-26 18:19:16 338

原创 /proc/meminfo的理解&vmtouch使用介绍&内存碎片整理

/proc/meminfo的理解和vmtouch使用介绍和内存碎片整理介绍

2023-01-25 11:36:06 3255

原创 sqlite3结构体与实际打开的文件描述符之间的关系

我们了解sqlite3数据库是一个文件格式的数据库,那显然它必然至少会持有一个打开的文件描述符,本文简单介绍 sqlite3结构体本身与这个文件描述符之间的关系,以及调用sqlite3_open最终打开这个文件描述符的流程。

2022-12-11 18:46:52 823

原创 部分gcc预定义宏和函数栈帧的内存分布

描述部分gcc预定义宏和函数栈帧的内存分布解析

2022-11-27 18:48:23 862

原创 websocket简介

websocket基本概念,基本信息,以及客户端服务端支持情况简单介绍

2022-10-30 23:30:23 800

原创 du和ls命令查看到的文件占用大小不同的问题

对du和ls打印的文件大小的来源做了简单说明和介绍,顺带说明了查看文件块大小的方法

2022-10-05 16:22:05 1647

原创 inotify递归监控 和 inotify的限制与警告

简单介绍一种inotify递归监控的实现原理,以及翻译man page中关于inotify本身的限制和警告

2022-08-27 18:12:38 1755

原创 perf工具与perf report children的含义

perf全名是PerformanceEvent,是在Linux2.6.31以后内置的系统效能分析工具,Perf的核心功能主要为三块,一是使用perfstat对事件进行统计,二是基于perfrecord对事件进行采样分析,三是使用perftop进行实时分析。如果仅要了解perfreportcall-graph形式输出中children的含义,拉到最后即可。...

2022-07-30 16:40:42 2360

原创 对http content-type 和 multipart的理解

介绍对http的content-type和multipart的理解,参考rfc和微软的文档

2022-06-04 15:18:52 2433 1

原创 c代码触发sysrq-trigger

通过c代码触发sysrq-trigger日常使用sysrq-trigger基本有两种场景,在有终端键盘的情况下 Alt+SysRq+“?” 特定字母的组合键触发sysrq的功能。如果有root权限,则会使用如下命令行的形式来触发echo "?" > /proc/sysrq-trigger那么如何在c代码中直接触发sysrq-trigger呢?。可以使用如下的方式 int fd = open("/proc/sysrq-trigger", O_WRONLY|O_CREAT|O_TRUNC|

2022-05-14 11:51:34 738

原创 TCP接收窗口

TCP 的窗口TCP的窗口区分 接收窗口和拥塞窗口,接收窗口是由接收对端维护的,基于TCP头部中声明的接收窗口的大小和扩展选项中的扩大因子决定,而拥塞窗口是在发送端维护的一个虚拟窗口,为了避免在造成网络拥塞,造成发出去的包丢失或者完全无响应,主动限制发出去的包的数量。实际的发送窗口的大小为min(rwnd, cwnd) rwnd即receive window, cwnd即 congestion window。接收窗口不同的接收窗口大小的设置会对传输性能产生影响。如果接收窗口设置得很小,则默认所有的

2022-05-03 17:47:20 5146

原创 sleep或sem_timedwait中断问题与 SIG32 和 SIG33之间的关系

两种系统调用中断的场景在工作中遇到过两类异常场景。其一是在系统启动的时候,sleep调用被打断。导致原本预期延时睡眠1分钟,但实际却不到1分钟就继续执行的情况,导致一些模块提前启动的情况,彼时采用循环sleep的方式规避。 for(i= 0;i<120;i++){ sleep(1); }其二是sem_timedwait系统调用中断的问题,因使用sleep延时显然是一种不严谨的做法。故而引入了sem_timedwait按照一定地超时时长等待信号量。但实际使用中却出

2022-03-05 17:32:49 1749

原创 基于hiredis库和libevent的异步redis操作

redis简介redis 作为一种key-value存储系统,是常用的非关系型数据库。主要功能是缓存数据,直接从内存获取待访问数据,避免需要从数据库访问数据,导致数据库io成为系统瓶颈。redis命令简介redis的数据存储在redis-server进程中,通过redis-cli命令可以对redis-server中的数据进行增删改查,redis-cli会与redis-server建立tcp连接,通过网络传输信息,或者使用不同语言对应的api库,库中会按照约定的协议与redis-server进行交互。常

2022-02-24 12:00:25 1488

原创 openssl源码中的SSL_read读取流程解析

文章目录SSL_read函数定义SSL record截图SSL_read源码解析工作中遇到SSL_read相关的问题,对于SSL_read的读取机制产生一些疑问:SSL_read 与read和recv的差异是什么?。SSL_read 是否会产生准备读取的数据与实际返回的数据不一致的问题?。SSL_read 在阻塞和非阻塞套接字下的表现行为是什么样的?。带着这些疑问,首先对man page中的SSL_read的定义做了了解。SSL_read函数定义SSL_read(3SSL)

2021-12-01 20:34:50 6893

原创 sql基本操作

mysql必知必会读书笔记

2021-07-24 15:53:49 74

原创 prometheus之使用特定URL和参数拉取配置示例

工作中实践配置prometheus从既有的web服务上拉取exporters信息,在web服务器上新增资源路径用于返回所需的exporters的信息。不过在配置prometheus的带params拉取的时候遇到一些问题,没有找到样例,特此记录。这块属于官网配置中的<scrape_config>的配置。scrape_config 主要指定目标和参数以描述如何抓取exporters上的信息,一般而言,一份scrape的配置只用于一个任务,但在高级配置,也可以是多个。目标可以在static_con

2021-07-16 19:35:58 3987 1

原创 nginx反向代理的断连问题

在工作中遇到使用nginx做反向代理时,执行文件下载动作过程中断连的问题,nginx 代理本地12345端口的服务。下载100MB以内的小文件没有问题,下载500MB以上的大文件时,必然在过程中出现断连。通过 error.log发现异常时会出现如下报错。因磁盘空间满导致的写报错,而引起的异常。2021/07/13 04:45:47 [crit] 32072#0: *126 pwritev() “/run/basis/nginx/proxy_temp/7/00/0000000007” failed (28

2021-07-14 10:14:46 2345

原创 SSL简单梳理

文章目录1、SSL全景式说明2、密码学工具对称加密算法非对称加密算法摘要算法3、SSL解决方案-数字证书4、SSL协议流程5、参考1、SSL全景式说明最常见的SSL的应用是在HTTPS中,主要是在传输层之上,应用层之下,加入了一层加密层,构建一条安全的信道,来传输应用层的数据,传输层的TCP仅保证了传输数据不丢包,但是未保证数据在传输的过程中不被窃听,篡改,甚至有可能访问的对端本身就是一个伪装的对端,比如出现了DNS劫持的情况。SSL主要就是为了解决上述3个问题,来保证 数据的保密性,数据的完整性以

2021-06-06 15:43:23 618

原创 nginx交叉编译流程

文章目录1、生成Makefile前修改点a) 修改 auto/cc/name 脚本,注释掉line21的exit 1b)修改 auto/types/sizeof 脚本(该点需要适当注意)2、依赖库的准备a) pcre-8.43的编译接入进行分析b)openssl-1.1.1d库的编译接入分析c) zlib-1.2.11库的编译接入分析3、调用configure生成makefilea)需支持http2和sslb)GNU_SOURCE 选项c)–without-http_upstream_zone_module

2021-05-16 15:48:57 3025 4

原创 记录数据处理流程中用到的excel工具

文章目录具体场景列举问题背景分析和数据准备成功率分析成功率统计的简化方法失败情况假设符合度分析最终数据展示具体场景列举使用到的场景包括场景1、针对VLOOKUP使用时,同一个检索字段存在多个实际匹配结果时,需要返回所有的匹配结果的场景,提供一种曲线救国的方法。场景2、对同一个字段下不同值的出现情况进行统计,提供一种上述vlookup的复杂用法的实现,以及另一种基于常规数据透视图的方法。场景3、COUNTIFS函数的使用,对多列同时匹配某些不同条件的场景进行判断统计。场景4、多条件排序的应用场景

2021-04-24 16:39:56 267

原创 对strip过的多线程程序进行gdb运行时栈打印

文章目录gdb的常用调试场景调试strip过的程序的注意事项对于多线程进程,只显示一个线程的问题gdb的基本原理gdb的常用调试场景gdb是一种强大的嵌入式环境下的程序调试工具,其常见的使用场景一般分为两种类型。一种是直接以gdb启动可执行程序,类似如下流程,然后配置好参数,再直接允许程序,这种场景一般是在调试的过程中,比如调试特定场景下的崩溃或者死锁问题,可以使用这种方式。在出现崩溃时,通过 bt命令打印函数栈,就可以推断出潜在的崩溃风险点。./gdb a.out(gdb) set args -

2021-01-31 15:18:11 479

翻译 【博客】系统调用解释-Computer Science from the Bottom Up翻译

参考http://bottomupcs.com/https://www.bottomupcs.com/system_calls.xhtml总览系统调用是描述用户态程序与内核如何与交互的机制,这背后的一般性原理如下描述。系统调用编号每个系统调用都有一个单独的系统调用编号,这个编号同时被用户态和内核态所知晓,比如,内核态和用户态同时知道系统调用编号10是 open(), 编号11是read()。(注:这里存疑,与unistd.h中不一致,望大佬告知)ABI(application binary i

2020-11-22 18:32:45 248

原创 根据文件名找到对应的lib库或者包

在ubuntu上使用安装一些package或者配置环境时,因为ubuntu发行版系统版本的原因或者时不同的package工程自身的完善程度的差异,经常会出现依赖缺失的情况。最常见的操作是根据对应的错误去网上baidu或者google,因为绝大部分坑前人已经踩过。但一直想知道某种通用的处理这类问题的方法,比如说提示了缺失某个头文件,如何能直接找到对应的lib库,然后直接apt-get install 来安装对应的库,解决依赖问题,避免还需要绕道搜索引擎,还得去甄别网上层次不齐的信息。如下链接给了我答案,h

2020-10-02 21:31:55 1208

原创 git常用命令脑图

2020-08-09 12:40:28 110

原创 libcurl返回DNS无法解析的问题

最近在使用libcurl作为httpclient来获取一些服务时遇到了一个问题,就是在网络切换的时候,执行 curl_easy_perform的时候会报 can’t resolve host 的错误。而且是持续很长时间。但是此时网络环境其实是正常的,使用ping,能够正常地ping通www.baidu.com。应用场景是在一个嵌入式设备上,同时包含有网口和无线,两者接入在不同的网络中。默认以有线优先。但是如果将有线拔掉,切换到无线。调用libcurl服务的进程就会报上述错误。因为设备相当于在家用路由器下面,

2020-06-21 15:20:39 2771 5

原创 libevent信号响应机制的介绍

文章目录问题说明libevent信号响应机制使用libevent信号注册流程解析libevent信号响应机制解析问题说明在测试过程中发现了一个进程存在无法被kill 杀死的情况,也就是发送SIGTERM(15)信号后进程无任何响应的情况。因该进程的信号处理机制,是借用了libevent框架实现,怀疑是libevent的信号响应机制没有生效导致。故而对libevent的生效机制进行适当的分析,发现对信号的捕获也是在event_base_dispatch中的event_base_loop中实现的,而代码中存

2020-06-14 18:47:33 795

原创 多线程随机数生成重复问题

文章目录问题背景流程介绍1、处理流程2、随机数生成流程问题分析解决方案和结果问题背景在设备与服务器端定义的json类型的日志上报消息结构中,定义了字段msgId的字段作为唯一关键字,用于唯一标记单条上报消息。类似于手机的UUID。在测试过程中发现存在大量日志上报的时候,会出现实际本地产生日志条数,小于服务器端elastic-search服务器记录日志条数的现象,经分析是由于上传标记的唯一关键字中msgId重复,导致服务器端日志被顶掉的问题,特此记录。流程介绍1、处理流程原有流程下,日志上报由一个独

2020-06-14 15:21:35 1520

原创 C++错误赋值对象引起崩溃

C++错误赋值对象引起崩溃本文记录一次错误的赋值引起的崩溃问题1.C++函数中对象的声明和使用的常见方式C++函数中使用对象有两种常见的方法,可以使用对象的指针来new一个堆上的对象,后续由自己delete回收。或者是确定对象的生命周期只在当前函数,就使用一个栈上的对象,直接声明对象,并调用构造函数进行赋值。以下两种处理显然都是最基本的使用方式。class foo{public: ...

2020-04-12 21:51:16 2175

原创 SIGPIPE错误出现的一种场景和网络编程异常处理的梳理

网络编程中异常处理SIGPIPE信号的使用在涉及到网络交互的程序中,我们经常会在程序的伊始就执行一个信号注册signal(SIGPIPE, SIG_IGN);忽略了 SIGPIPE这个信号错误,那为什么要忽略这个错误?如果这个错误永远都是默认要被忽略,那其存在的意义是啥?通过查阅资料可以了解到,SIGPIPE信号出现的场景是在建立好连接,对端关闭之后,我们这端仍然连续地往套接字中发送消息...

2020-03-01 15:13:56 551

原创 windows无法接收到组播问题

windows上组播接收异常的问题应项目要求, 参与将一个设备发现服务从 linux 移植到 windows 上的过程, 设备发现服务通过加入特定的组播组,比如239.255.255.250,来监听对应组播组的发现报文,接收到目的地址为对应组播组的地址时,返回当前设备的IP地址,完成发现的流程。测试过程中发现, 在部分型号路由器(包括TPlink部分型号,萤石,ASUS)下, 无法进行 SAD...

2020-01-20 19:31:14 10785

空空如也

空空如也

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

TA关注的人

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