自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注探索c++,Linux等后台开发相关机制,欢迎关注,欢迎交流

博客持续更新,欢迎关注,个人github博客:https://chhy2009.github.io,

  • 博客(231)
  • 资源 (8)
  • 收藏
  • 关注

原创 ASan runtime error

这边通过删除/etc/ld.so.preload文件解决。

2024-03-22 17:38:53 166

转载 用 Python 拓展 GDB

https://segmentfault.com/a/1190000005718889https://segmentfault.com/a/1190000005718889

2023-10-19 10:05:04 142

原创 腾讯RPC框架开源了

开源公告|tRPC-多语言插件化高性能的RPC开发框架

2023-10-18 09:11:25 247

原创 Linux系统高并发socket最大连接数所受的各种限制解决

当系统中某一时刻同时存在太多的TCP客户端连接时,由于每个TCP客户端连接都要占用一个唯一的本地端口号(此端口号在系统的本地端口号范围限制中),如果现有的TCP客户端连接已将所有的本地端口号占满,则此时就无法为新的TCP客户端连接分配一个本地端口号了,因此系统会在这种情况下在connect()调用中返回失败,并将错误提示消息设为“Can’t assignrequested address”。在高TCP并发的情形下,如果使用同步I/O,这会严重阻塞程序的运转,除非为每个TCP连接的I/O创建一个线程。

2023-10-16 20:24:19 958

原创 tcmalloc好文推荐

TCMalloc分析 - 如何减少内存碎片]([TCMalloc解密](

2023-03-21 14:16:12 100

原创 性能优化好文推荐

性能优化好文推荐

2023-02-06 11:18:28 314

原创 网络io零拷贝好文推荐

简述 Linux I/O 原理及零拷贝(下) — 网络 I/O

2023-02-01 09:33:56 126

原创 时间轮算法好文推荐

基于Linux内核的时间轮算法设计实现【附代码】

2023-01-31 17:09:06 100

原创 vscode无法跳转到函数定义

在打开的c_cpp_properties.json JSON文件编辑窗口中,修改 cppStandard 为:c++20。或者修改成c++14/c++17,你的c++代码是哪个版本的,那就改成哪个就行。原因一:C/C++插件没有生效。VS Code 安装 C/C++插件后,按 F12 后无法跳转到函数定义处,此时可以先 Disable C/C++ 插件,再 Eanble C/C++ 插件。输入:Edit configurations。原因二:C/C++标准没有配置正确。执行命令打开搜索:⇧⌘P。

2023-01-31 14:07:40 13159 2

转载 【转】防雪崩利器:熔断器 Hystrix 的原理与使用

Hystrix的Metrics中保存了当前服务的健康状况, 包括服务调用总次数和服务调用失败次数等. 根据Metrics的计数, 熔断器从而能计算出当前服务的调用失败率, 用来和设定的阈值比较从而决定熔断器的状态切换逻辑. 因此Metrics的实现非常重要.上图中, A为服务提供者, B为A的服务调用者, C和D是B的服务调用者. 当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时, 服务雪崩就形成了.

2023-01-04 10:40:14 73

原创 使用 gperftools 分析程序内存占用情况

使用 gperftools 分析程序内存占用情况

2022-09-08 10:21:25 2521

原创 【好文推荐】C++内存问题,看这篇就够了

C++内存问题,看这篇就够了

2022-09-07 22:10:57 266

原创 Linux基础及工具命令进阶

linux基础及好用的命令详解

2022-07-26 16:41:29 140

原创 【转】浅谈C++ Executor

浅谈The C++ Executors - 知乎

2022-06-01 15:22:36 948

原创 c++17 pmr

收藏几篇c++17 pmr的文章:[C++17 Polymorphic Memory Resources (pmr) and STL Containers for Embedded Applications](https://www.rkaiser.de/wp-content/uploads/2021/03/embo2021-pmr-STL-for-Embedded-Applications-en.pdf)[游戏引擎开发新感觉!(6) c++17内存管理](https://www.rkaiser.d

2022-03-27 23:15:30 5094

原创 c++再探string之eager-copy、COW和SSO方案

转载自[c++再探string之eager-copy、COW和SSO方案 - CTHON - 博客园](https://www.cnblogs.com/cthon/p/9181979.html)

2022-01-17 10:36:26 361

原创 单元测试中关闭访问控制

单测中建议都使用编译参数 -fno-access-control 关闭访问控制,而不是#define private publicC++ 单元测试 访问控制小坑

2021-12-17 14:49:32 237

原创 使用doxygen生成接口api文档

符合doxygen格式的代码注释可以直接通过doxygen命令生成api文档:# doxygen -h Doxygen version 1.8.5Copyright Dimitri van Heesch 1997-2013You can use doxygen in a number of ways:1) Use doxygen to generate a template configuration file: doxygen [-s] -g [configName] If

2021-11-26 16:39:01 812

原创 内存管理方面的一些好文推荐

CPU中的cache结构以及cache一致性ptmalloc、tcmalloc与jemalloc对比分析百度C++工程师的那些极限优化(内存篇)

2021-11-11 15:17:58 614

转载 ptmalloc、tcmalloc与jemalloc对比分析

转载自[ptmalloc、tcmalloc与jemalloc对比分析](https://www.cyningsun.com/07-07-2018/memory-allocator-contrasts.html)背景介绍在开发微信看一看期间,为了进行耗时优化,基础库这层按照惯例使用tcmalloc替代glibc标配的ptmalloc做优化,CPU消耗和耗时确实有所降低。但在晚上高峰时期,在CPU刚刚超过50%之后却出现了指数上升,服务在几分钟之内不可用。最终定位到是tcmalloc在内存分配的时候使用

2021-11-04 14:42:24 578

原创 内存池和对象池

实现高性能内存池业界内存池代表:tcmalloc,jemalloc高性能对象池实现

2021-10-24 21:27:53 261

原创 shared_ptr和unique_ptr对性能的影响

shared_ptr内部引用计数对象要通过new创建,这样所有的对象才能指向同一个引用计数变量;由于调用make_shared要调用两次new,所以有一定的性能开销。unique_ptr由于不需要存储引用计数,对象的所有权通过reset和release进行过渡。调用make_unique只要调用一次new,所以有着接近原生指针的性能。但unique_ptr指向的对象不能共享,所以在有时候要求对象要共享又对性能有要求时,使用继承引用计数基类的方式来实现share,这时要求需要shared的类必须继承引用计

2021-09-21 19:21:36 1522

原创 Bazel BUILD文件格式化及命名

BUILD文件格式化:BUILD style guide - Bazel mainhttps://docs.bazel.build/versions/main/skylark/build-style.html命名工具:CODELFBest GitHub stars, repositories tagger and organizer. Search over projects from Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedo

2021-09-12 17:08:04 576

转载 【转】基于Linux内核的时间轮算法设计实现【附代码】

首先声明,本文内容参考了以下博客文章,向这三篇文章的作者表示感谢。https://www.cnblogs.com/arnoldlu/p/7078262.html https://blog.csdn.net/HELPLEE601276804/article/details/36717979 https://www.cnblogs.com/lsgxeva/p/8072468.html1. 时间轮算法基本思想对于一个复杂的软件系统,定时器的对任务的管理和调度至关重要,通常定时器的管理已成为一

2021-08-29 10:14:08 426

原创 文件IO零拷贝

分享一篇文章:文件 I/O 简明概述 —— DMA与零拷贝技术

2021-08-22 17:42:29 99

原创 查看机器的cpu信息

总核数 = 物理CPU个数 X 每颗物理CPU的核数总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 1查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq 1查看逻辑CPU的个数cat /proc/cpuinfo| grep "processor"| wc -l

2021-08-21 10:17:07 111

原创 seastar

Seastar is an advanced, open-source C++ framework for high-performance server applications on modern hardware. Seastar is used in Scylla, a high-performance NoSQL database compatible with Apache Cassandra. Applications using Seastar can run on Linux or OSv

2021-08-20 14:58:11 159

转载 [转]CPU中的cache结构以及cache一致性

timer实现https://cloud.tencent.com/developer/article/1553274

2021-08-15 23:06:26 586

原创 C++11~C++17的新特性

函数调用:call_once(c++11):https://en.cppreference.com/w/cpp/thread/call_oncestd::invoke(c++17), std::apply(c++17)内存管理:std::destroy_at(c++17), std::launder(c++17)泛型:std::all_of,std::any_of,std::none_ofstd::is_convertible_vstd::is_copy_construc...

2021-08-15 22:56:22 394

原创 网络框架的Timer实现

业界的Timer实现有两种方式:时间堆(最小堆):可以使用std::priority_queue c++11的优先队列来实现最小堆方式的时间堆,详情请参考高性能定时器概述(包含时间堆的实现)相关应用:brpc框架,具体见bRPC Timer时间轮:基本思想为将时间分片(如最小间隔为500us),添加timer时,将timer挂到时间轮上对应时刻的定时器链表上,然后将按时间推进时间轮并执行该时间点的所有timer;由于运行过程中,只需要执行时间轮上对应时刻定时器即可(无需经过logN复杂度的查询,因

2021-08-15 22:54:20 238

原创 Go gRPC

先mark一些文档:Go gRPC教程

2021-08-15 22:35:02 183

原创 高效内存分配:tcmalloc和jemalloc

timer实现https://cloud.tencent.com/developer/article/1553274

2021-08-14 10:43:20 330

原创 谷歌代码审查指南

谷歌代码审查指南

2021-08-08 11:22:04 178

原创 一个简单的滚动日志脚本

程序运行中不免会不断打印日志,为了避免日志过大,一般需要做滚动日志功能,这有几种做法:使用滚动日志库接口进行日志打印使用logrotate开源软件进行log rotate使用日志滚动脚本:原理是监控日志大小,若超过大小则使用truncate进行日志截取+日志文件滚动对于一个简单的应用来说,使用3最简单省事,其日志脚本如下(使用方式见注释):#!/bin/sh# https://github.com/eyjian/mooon/blob/master/mooon/shell/log_rotate

2021-05-18 22:31:05 667

原创 Golang http.Client设置超时

golang提供的http get、post请求是没有设置超时的,但实现生产环境一般都需要设置超时时间。网上搜索,可以查询到通过设置http.Client中Transport的Dail函数,在自定义的Dail函数里面设置建立连接超时时长和发送接收数据超时:c:=http.Client{ Transport:&http.Transport{ Dial:func(netw, addr string) (net.Conn, error) {...

2021-03-30 19:50:57 2914

原创 Go语言文档

Go语言文档go标准库包中文文档go标准库包英文文档

2021-03-30 14:10:47 141

原创 C++可变参数模板特化

项目中使用了可变参数模板,需要特化出一个带固定参数个数的实现,以提升效率,下面是参考的一些文章,先mark下,后面做个介绍和总结。文章列表:泛化之美–C++11可变模版参数的妙用C++11模版元编程的应用function_traits...

2021-03-29 09:19:58 461

原创 gdb调试

先记录几篇不错的文章,后面再来补充下https://github.com/selfboot/CS_Offer/blob/master/C%2B%2B/GDB_Debug.mdhttps://deepzz.com/post/gdb-debug.html gdb调试http://www.vimer.cn/2009/11/07/shi-yong-gdbdiao-shi-cheng-xu-xiang-jie/小技巧:[gdb查看shared_ptr](https://blog.csdn.net/cao1

2021-03-26 14:18:11 92

原创 谈谈性能优化

性能指标API接口:每次调用耗时 或 QPS网络服务端: Throughput (吞吐,即QPS)+ Latency (调用延迟)性能测量的方法性能分析工具:如c++下有perf/gprof,go下有pprof使用这类工具可以帮你发现性能瓶颈时间测量:通过使用时间测量方式来看程序执行发了多少时间Linux下常用的有clock_gettime, gettimeofday等命令,获取起止时间后相减即可,亦可将其包装为一个timer类,然后插入程序代码段中来测量常见的性能优化方法性能优化本质

2021-03-21 18:16:12 135

原创 彻底弄懂EPOLLOUT事件

epoll是linux下实现IO multiplex的利器。一般编程实现方式如下:使用epoll_create创建一个epoll fd使用epoll_ctl往epoll fd里添加需要监听的fd,并注册需要监听的事件(由于EPOLLLET边缘触发方式更加高效,所以一般都使用边缘触发方式)使用epoll_wait等待事件,然后依次处理各个事件,反复循环其最常用的网络事件为EPOLLIN和EPOLLOUT,EPOLLIN对应为有socket缓冲区数据可读(当又收到了对端的一些数据,就会触发;或者作为

2021-03-21 12:16:02 8004 2

socket_program.tgz

linux下的socket编程Client/Server示例

2021-02-15

LeetCode算法题汇总

LeetCode算法题解

2017-08-06

objective-c快速入门

oc基本语法描述

2017-08-06

Graph search 个性化模型中高级特征挖掘浅谈.docx

Graph search 个性化模型中高级特征挖掘浅谈.docx

2017-08-06

etao爬虫抓取系统的那些事

etao爬虫抓取系统讲解

2017-08-06

stl源码及帮助文档

sgi stl源码及相关说明文档,资源也可以从sgi官网上获取

2016-03-05

C++/MFC绘图

MFC中绘图讲解与代码,很好的学习资料。例子很详细,是很好地C++入门资料。

2013-09-26

空空如也

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

TA关注的人

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