proginn2240442156
全职 · 300/日  ·  6525/月
工作时间: 工作日19:00-01:00、周末00:00-24:00工作地点: 远程
服务企业: 0家累计提交: 0工时
联系方式:
********
********
********
聊一聊

使用APP扫码聊一聊

个人介绍

我是程序员客栈的程序员,一名后端开发工程师; 我毕业于西北工业大学,担任过腾讯的后端研发工程师,担任过百度的后端研发工程师; 负责过负载均衡系统,智能驾驶系统的开发; 熟练使用 C++/Go/Java 等语言,对性能优化有一定的认识。对操作系统有较深的认识 如果我能帮上您的忙,请点击“立即预约”或“发布需求”!

工作经历

  • 2020-03-04 -2022-08-04腾讯高级后端工程师

    主要负责腾讯的负载均衡系统的研发,对后端的常见技术有比较深刻的认识。熟悉常见的组件

教育经历

  • 2016-09-01 - 2020-08-07西北工业大学计算机科学与技术硕士

技能

C++
0
1
2
3
4
5
作品
链接与装载

链接与装载(HOOK 库) PLT hook 的流程: - 读取进程的 maps 信息,获取到 ELF 文件在进程的 maps 中的内存基地址 - 验证 ELF 文件的头信息 - 从 PHT(`program header table`) 中找到类型为 `PT_LOAD` 且 offset 为 `0` 的 segment。计算 ELF 基地址。 - 从 PHT 中找到类型为 `PT_DYNAMIC` 的 segment,从中获取到 `.dynamic` section,从 `.dynamic` section中获取其他各项 section 对应的内存地址。 - 在 `.dynstr` section 中找到需要 hook 的 symbol 对应的 index 值。 - 遍历所有的 `.relxxx` section(重定位 section),查找 symbol index 和 symbol type 都匹配的项,对于这项重定位项,执行 hook 操作。 - hook 的流程如下: - 读取 maps,确认当前 hook 地址的内存访问权限 - 如果权限不是可读可写,则使用 `mprotect` 修改访问权限为可读可写 - 将 hook 地址的值替换为新的值 - 如果之前用 `mprotect` 修改过内存访问权限,现在还原到之前的权限 - 清除 hook 地址所在内存页的处理器指令缓存

0
2023-11-21 22:57
优化 ASAN

优化 ASAN: 在 C/C++ 中,内存越界问题特别难排查,比如,线程 A 在写内存时,写越界了,操作了线程 B 的内存,线程 B 可能过了很久才去访问这块被写坏的内存,然后引起了问题,我们几乎无法从 core 文件中得到有用的信息。 ASAN 是业界所有的内存检测工具中性能最好的。与之对比的 valgrind、gperftools 会严重拖慢程序运行。 ASAN 是集成在 gcc、llvm 中的,由于我们使用的是 gcc 编译器,因此我优化了 gcc 源码中 ASAN 的运行时库实现。也就是优化了 ASAN 库中关于 malloc、free 的实现。

0
2023-11-21 22:53
手写操作系统

手写操作系统 我使用 C 语言和汇编语言实现了一个 32 位的操作系统 - 对于机器上电启动、Boot-Loader 引导程序、CPU的实模式到保护模式的跳转、以及中断有非常深入的理解。 - 基于二级页表,实现了内核层面的的内存分页机制,完成虚拟内存与物理内存之间的映射。 - 同时实现了内核级线程、用户级进程,和一个简单的用户级协程 - 参考 linux 下的 ext2 文件系统,实现了完整的文件系统,支持文件、目录的所有操作 - 实现了 fork 系统调用,完成了 shell 界面,目前支持常见的系统操作命令,可以完成简单的系统交互

0
2023-11-21 22:51
更新于: 2023-11-21 浏览: 44