SoulNov23
码龄13年
关注
提问 私信
  • 博客:380,737
    动态:5
    380,742
    总访问量
  • 82
    原创
  • 358,557
    排名
  • 154
    粉丝

个人简介:那些我们说着永远不分离的朋友,早已散落在天涯,时光的洪流中,我们总会长大。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2011-12-27
博客简介:

Linux C/C++后台开发

博客描述:
Talk is cheap. Show me the code!
查看详细资料
个人成就
  • 博客专家认证
  • 获得155次点赞
  • 内容获得119次评论
  • 获得360次收藏
  • 代码片获得256次分享
创作历程
  • 5篇
    2022年
  • 7篇
    2021年
  • 2篇
    2020年
  • 6篇
    2019年
  • 16篇
    2018年
  • 30篇
    2017年
  • 17篇
    2016年
成就勋章
TA的专栏
  • 数据结构与算法
    6篇
  • c/c++
    10篇
  • go
    2篇
  • python
    6篇
  • shell/makefile
    13篇
  • docker/k8s
    9篇
  • mysql
    11篇
  • 网络编程
    21篇
  • epoll/libev/libevent
    7篇
  • 进程/线程/协程
    6篇
  • gdb/strace
    4篇
  • 内存管理
    3篇
  • linux内核
    2篇
  • 开发工具
    7篇
联系方式
公司:腾讯
地区:深圳
职位:后台开发
QQ交流群: Linux C/C++后台开发
知乎: 访问个人主页
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

352人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

DP动态规划之最长回文子串

现在的求解过程就是,基于已知的1,2条件,往后循环推导,同时找到推导过程中长度最大的字符串。给你一个字符串 s,找到 s 中最长的回文子串。
原创
发布博客 2022.09.13 ·
351 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

SW滑动窗口之无重复字符的最长子串

执行结果不是很理想,我们其实可以看到左指针和右指针分别都遍历了一次字符串,如果我们只循环一次保存每个字符的位置,碰到重复的字符只更新位置,可以少遍历一次。给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。执行用时确实提高了不少。
原创
发布博客 2022.09.09 ·
272 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

升级go1.18版本json-iterator coredump问题

今天用go1.18编译了之前的项目运行的时候core了,代码里面使用了recover捕获,然后用runtime.Stack打印了现场,看了下堆栈的信息发现是我们在使用json-iterator时出的问题,找到json-iterator的github。看了下主要改动是json-iterator引用的reflect2包,增加了一个go_below_118.go文件一个go_above_118.go文件,主要区别是mapiterinit这个函数。可以看下go1.18相较于go1.17的改动。...
原创
发布博客 2022.07.22 ·
2822 阅读 ·
8 点赞 ·
0 评论 ·
2 收藏

spdlog和fork冲突问题

遇到个问题,使用spdlog的async_logger打印日志,一直都是正常的,但是调用了fork之后就不打印了先使用打印TODO大法,使用的spdlog的default_logger打印,走的console打印,结果发现console打印没问题,就async_logger在fork之后就不打印了使用strace -f运行看一下这里的write 1就是console打印的,在fork前后都是正常的,但是write 3只在fork之前调用了,fork后没有调用,直接卡在了futex FUTEX
原创
发布博客 2022.02.19 ·
969 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

spdlog封装自己的日志库

先上日志配置定义struct logger_config { std::string name = "run_logger"; spdlog::level::level_enum level = spdlog::level::trace; std::string format = "[%Y-%m-%d %H:%M:%S.%f] [%P] [%^%l%$] [%s:%# %!()] %v"; std::string file_name = "../log/run.log";
原创
发布博客 2022.02.19 ·
2016 阅读 ·
0 点赞 ·
4 评论 ·
6 收藏

Inferior 1 (process xxx) exited with code 0177

今天调试的时候遇到个很奇怪的问题,我的服务是多进程的,每次收到请求子进程就退出了,然后又重新被父进程拉起一个新的子进程,看了下core目录也没有生成core文件。通过日志看到当前执行到了哪里,在后面调用和return位置加打印TODO,再次调试,发现是在调用一个函数的时候直接退出了,并且都没有进入到函数里面去。通过ps -ef查看子进程的pid,然后gdb -p到子进程上,打断点,再次调试(gdb) b xxx.cpp:26No source file named xxx.cpp.Make b
原创
发布博客 2021.12.21 ·
3420 阅读 ·
0 点赞 ·
2 评论 ·
0 收藏

escape string实现

void escape_string(const string& sql, string& dest) { char escape; for (auto character : sql) { switch (character) { case 0: /* Must be escaped for 'mysql' */ escape = '0'; break;
原创
发布博客 2021.10.08 ·
652 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

DP动态规划之斐波那契数

https://leetcode-cn.com/problems/fibonacci-number/F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1在学校的时候课本上用这个题目介绍了递归,我们看下int fib(int n) { if (n < 2) { return n; } return fib(n - 1) + fib(n - 2);}在递归的过程中,我们对fib(n)都进行了两次
原创
发布博客 2021.10.07 ·
205 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

docker配置同一个域名下的多个仓库auths

假如现在我们要登录两个仓库pull和push镜像,并且仓库的域名相同,例如hub.registry.com/ahub.registry.com/b那么我们vim ~/.docker/config.json{ "auths":{ "hub.registry.com":{ "auth":"dXNlcjE6cGFzc3dvcmQx" }, "hub.registry.com":{ "auth":"dXN
原创
发布博客 2021.09.29 ·
1517 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

DFA有限状态自动机之有效数字

https://leetcode-cn.com/problems/valid-number/根据题目给的算法描述,定义字符类型,用函数返回当前字符类型,挖掘出所有的状态定义出来enum State{ state_begin, state_integer_sign, // 整数符号 state_integer, // 整数 state_point_without_integer, // 前面没有数字的小数点 st
原创
发布博客 2021.09.04 ·
235 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

DFA有限状态自动机之字符串转换整数(atoi)

for循环字符串的时候,有4种类型的字符情况,我们可以定义在当前所处状态下,遇到space类型字符正常的话就流转到state_space,遇到sign类型字符正常的话就流转到state_sign,遇到number类型字符正常的话就流转到state_number,其它所有异常情况直接结束流转到state_end,通过表格穷举循环遍历4类字符时所有组合的情况下的状态。这样做的好处是,我们在定义有限状态自动机的穷举时,可以更简单,只需要列出所有的正常情况就行了。我们可以看看只穷举正常情况的表格。
原创
发布博客 2021.09.02 ·
440 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

升级openssl导致yum不可用

文章目录检查ld.so.conf使用ldconfig使用ldd重新构建pycurl# yumThere was a problem importing one of the Python modulesrequired to run yum. The error leading to this problem was: /usr/lib64/python2.7/site-packages/pycurl.so: undefined symbol: CRYPTO_num_locksPlease
原创
发布博客 2021.07.07 ·
2090 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

centos7升级git2.28.0

1.下载地址https://github.com/git/git/releaseshttps://mirrors.edge.kernel.org/pub/software/scm/git/2.不建议用wget下载,可能会存在包有问题无法解压的情况,直接去下载页面下载好以后,传到centos上。wget https://github.com/git/git/releases/tag/v2.28.0/git-2.28.0.tar.gzwget https://www.kernel.org..
原创
发布博客 2020.08.03 ·
771 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

centos7升级gcc10.1.0,gdb9.2

https://www.gnu.org/prep/ftp.html先找一个亚洲的镜像站点选一个站点,打开gcc或者gdb目录,选择自己想要安装的版本,我这里选择的gcc-10.1.0和gdb-9.2http://mirrors.nju.edu.cn/gnu/gcc/gcc-10.1.0/https://mirrors.ustc.edu.cn/gnu/gdb/解压gcc-10.1.0.tar.gz后进入目录,执行./contrib/download_prerequisites下载gcc
原创
发布博客 2020.07.08 ·
2473 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

URL安全的Base64算法

base64是取3个字节(24位)的数据强行组成4个字节(32位)的数据做为一个分组,24位分成4个字节的话,每个字节分到6位,然后前面补两位0,然后这个字节的值位索引去base64表找值。1. 因为前面补两个0,那么只有6位来算索引,最长就是2^6=64,所以base64表只有64个。2.因为每4个字节一个分组,所以base64后的长度肯定是4的倍数。3.因为不是所有的字符串都能...
原创
发布博客 2019.09.02 ·
946 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

VS Code Remote Development

在Windows下编辑Linux代码,并且有Linux下的系统接口,第三方dep库的语法解析,代码提示,自动补全,跳转,用起来真香。困扰了Linux后台开发人员多年的难题终极解决方案!要求VS Code版本在1.35.1以上。1.安装远程开发插件,在Extensions中输入Remote Development安装Remote Development后会自动安装关联的几个插件2....
原创
发布博客 2019.08.20 ·
5123 阅读 ·
2 点赞 ·
0 评论 ·
11 收藏

epoll的ET和LT模式触发场景

epoll有两种事件模型:Level Triggered (LT) 水平触发socket接收缓冲区不为空,有数据可读,读事件一直触发socket发送缓冲区不满,可以继续写入数据,写事件一直触发Edge Triggered (ET) 边缘触发socket的接收缓冲区状态变化时触发读事件socket的发送缓冲区状态变化时触发写事件总结:水平触发:只要可读,就一直触发读事件,只要可写,就...
原创
发布博客 2019.04.12 ·
3218 阅读 ·
0 点赞 ·
10 评论 ·
11 收藏

makefile常用编译选项

我们习惯创建一个环境变量文件Inc.mk来定义常用的变量CC = gccCXX = g++ -std=c++11AR ?= arARFLAGS = -scurvRANLIB ?= ranlibCFLAGS ?=CXXFLAGS ?=INCLUDE ?=LDFLAGS ?=CFLAGS += -Wall -g -fPIC -pipe -Wl,-z -Wl,defs -...
原创
发布博客 2019.03.27 ·
7492 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

curl源码编译安装

https://curl.haxx.se/download.html首先去curl官网下载对应版本,这里有个坑需要注意。如果下载的源码版本太高,编译是成功的,但是curl可执行文件访问https的时候还是会报各种奇怪的错误。所以我这里的做法是,先yuminstallcurl,然后curl -V看我的系统yum支持的curl最新版本。我这里是7.29.0这里点击OldRelease...
原创
发布博客 2019.03.27 ·
19873 阅读 ·
9 点赞 ·
1 评论 ·
31 收藏

宏定义的巧用

1. #用来标记参数是字符串#defineSTRING(X) #Xconst char *str = STRING(test);cout << str << endl;这里str的内容就是"test"2. ##用来连接参数#define AND(X) X##Xint num = AND(8);cout << num <<...
原创
发布博客 2019.03.27 ·
397 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多