作者:gillyang,腾讯PCG后台开发工程师| 导语 近期,我们接管并重构了十多年前的 Query 理解祖传代码,代码量减少80%,性能、稳定性、可观测性都得到大幅度提升。本文将介绍重构过程中系统实现、DIFF修复、coredump 修复等方面的优化经验。1 背景1.1 接手7 月份组织架构调整后,我们组接手了搜索链路中的 Query 理解基础模块,包括 …
sprintf头文件
golang 日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持. 所以催生了很多第三方的日志库,但是在 golang 的世界里,没有一个日志库像 slf4j 那样在 Java 中具有绝对统治地位.golang 中,流行的日志框架包括 logrus …
超女选秀的例子我们玩了很久,为了教学的需要,暂时离开美眉们,我将采用实际项目开发的例子。在C语言基础知识中已学习过文件操作,在实际开发中,我会把文件操作封装成一个类,类的声明如下:类的声明和成员函数的定义都是类定义的一部分,在实际开发中,我们通常将类的声明放在头文件中,而将成员函数的定义放在源文件中。类成员的访问权限C++通过 public、protecte …
前言格式化字符串漏洞 具有 任意地址读,任意地址写。printfprintf --一个参数:情况1当参数 只有 1个字符串的话(含有%?), ? 即 i, x, s 等等<br>第一个参数 作为 格式化字符串,而这个格式化字符串里含有解析 字符串的 %p ,它将第一个参数作为 格式化字符串,第二个参数 作为 格式化字符串的参数表 中的第一个参数 …
0x01 dll简介在Windows系统中,为了节省内存和实现代码重用,微软在Windows操作系统中实现了一种共享函数库的方式。这就是DLL(Dynamic Link Library),即动态链接库,这种库包含了可由多个程序同时使用的代码和数据。每个DLL都有一个入口函数(DLLMain),系统在特定环境下会调用DLLMain。在下面的事件发生时就会调用d …
linux服务器开发相关视频解析:100行代码搞定用户态协议栈10道经典面试题的剖析, 技术方向如何决定职业方向|cc++|linux一、原始套接字能干什么?通常情况下程序员接所接触到的套接字(Socket)为两类:流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP 服务应用;数据报式套接字(SOCK_DGRAM):一种 …
许多程序员在编程时都没有遵循一条规则,即操作字符串时,边界检查是必需的。否则,就有可能出现堆栈缓冲区溢出。不管你是一个开发人员,还是测试或研究人员,理解缓冲区溢出的原理都很重要。尽管操作系统和编译器已经提升了安全性,但最好的安全还是自己能够识别并消除这种潜在的编程错误。本文将通过一个编程例子,简要分析堆栈缓冲区溢出的原理和利用。下面是一段对特定目标进行Nma …
什么是浮点数浮点数是指一种既包含小数又包含整数的数据类型。浮点型变量分类浮点型分为单精度(float型)和双精度(double型)。浮点型变量使用定义。如下:float a;声明单精度浮点型变量double b;声明双精度浮点型变量单精度(float型)与双精度(double型)的区别float 单精度浮点数内存中占 4 个字节,用 32 位二进制描述。do …
恶意代码的分类包括计算机病毒、蠕虫、木马、后门、Rootkit、流氓软件、间谍软件、广告软件、僵尸(bot) 、Exploit等等,有些技术经常用到,有的也是必然用到。恶意代码常见功能技术如下:进程遍历,文件遍历,按键记录,后门,桌面截屏,文件监控,自删除,U盘监控。知己知彼,百战不殆。这里旨在给反病毒工程师提供参照。病毒作者请绕过。0x01进程遍历进程遍历 …
作者:garrycai,腾讯PCG后台开发工程师| 导语 想必每一位 C++ 选手在工作中都难免会踩中 Coredump 地雷,而我作为 C++ 新手也与 Coredump 有过激烈的战斗,下文正是我在排查 Coredump 过程中总结的一些心得经验。1. 概念Coredump(核心存储)是进程异常终止或崩溃时的内存快照,操作系统会在程序发生异常而异常在进程 …