- 博客(233)
- 资源 (8)
- 收藏
- 关注
原创 Vscode搜索报错“UniError, if an URI contains an authority component...“
解决方法:鼠标移动到工作区打开的文件上,把打开的窗口都关闭掉,然后再试试。
2024-07-30 10:50:42 164
原创 linux下core文件被系统转存而不能直接找到
coredumpctl -o 自定义文件名 dump Pid。2. 使用coredumpctl命令列出core的进程信息。3. 使用coredumpctl取出文件。1. 查看core_pattern。原因大概率是被系统转存了。
2024-06-04 16:55:14 966 1
转载 用 Python 拓展 GDB
https://segmentfault.com/a/1190000005718889https://segmentfault.com/a/1190000005718889
2023-10-19 10:05:04 225
原创 Linux系统高并发socket最大连接数所受的各种限制解决
当系统中某一时刻同时存在太多的TCP客户端连接时,由于每个TCP客户端连接都要占用一个唯一的本地端口号(此端口号在系统的本地端口号范围限制中),如果现有的TCP客户端连接已将所有的本地端口号占满,则此时就无法为新的TCP客户端连接分配一个本地端口号了,因此系统会在这种情况下在connect()调用中返回失败,并将错误提示消息设为“Can’t assignrequested address”。在高TCP并发的情形下,如果使用同步I/O,这会严重阻塞程序的运转,除非为每个TCP连接的I/O创建一个线程。
2023-10-16 20:24:19 1718
原创 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 15005 3
转载 【转】防雪崩利器:熔断器 Hystrix 的原理与使用
Hystrix的Metrics中保存了当前服务的健康状况, 包括服务调用总次数和服务调用失败次数等. 根据Metrics的计数, 熔断器从而能计算出当前服务的调用失败率, 用来和设定的阈值比较从而决定熔断器的状态切换逻辑. 因此Metrics的实现非常重要.上图中, A为服务提供者, B为A的服务调用者, C和D是B的服务调用者. 当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时, 服务雪崩就形成了.
2023-01-04 10:40:14 93
原创 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 5146
原创 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 406
原创 单元测试中关闭访问控制
单测中建议都使用编译参数 -fno-access-control 关闭访问控制,而不是#define private publicC++ 单元测试 访问控制小坑
2021-12-17 14:49:32 301
原创 使用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 899
原创 内存管理方面的一些好文推荐
CPU中的cache结构以及cache一致性ptmalloc、tcmalloc与jemalloc对比分析百度C++工程师的那些极限优化(内存篇)
2021-11-11 15:17:58 638
转载 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 645
原创 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 1752
原创 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 676
转载 【转】基于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 471
原创 查看机器的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 139
原创 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 199
转载 [转]CPU中的cache结构以及cache一致性
timer实现https://cloud.tencent.com/developer/article/1553274
2021-08-15 23:06:26 630
原创 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 425
原创 网络框架的Timer实现
业界的Timer实现有两种方式:时间堆(最小堆):可以使用std::priority_queue c++11的优先队列来实现最小堆方式的时间堆,详情请参考高性能定时器概述(包含时间堆的实现)相关应用:brpc框架,具体见bRPC Timer时间轮:基本思想为将时间分片(如最小间隔为500us),添加timer时,将timer挂到时间轮上对应时刻的定时器链表上,然后将按时间推进时间轮并执行该时间点的所有timer;由于运行过程中,只需要执行时间轮上对应时刻定时器即可(无需经过logN复杂度的查询,因
2021-08-15 22:54:20 302
原创 高效内存分配:tcmalloc和jemalloc
timer实现https://cloud.tencent.com/developer/article/1553274
2021-08-14 10:43:20 369
原创 一个简单的滚动日志脚本
程序运行中不免会不断打印日志,为了避免日志过大,一般需要做滚动日志功能,这有几种做法:使用滚动日志库接口进行日志打印使用logrotate开源软件进行log rotate使用日志滚动脚本:原理是监控日志大小,若超过大小则使用truncate进行日志截取+日志文件滚动对于一个简单的应用来说,使用3最简单省事,其日志脚本如下(使用方式见注释):#!/bin/sh# https://github.com/eyjian/mooon/blob/master/mooon/shell/log_rotate
2021-05-18 22:31:05 721
原创 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 3161
原创 C++可变参数模板特化
项目中使用了可变参数模板,需要特化出一个带固定参数个数的实现,以提升效率,下面是参考的一些文章,先mark下,后面做个介绍和总结。文章列表:泛化之美–C++11可变模版参数的妙用C++11模版元编程的应用function_traits...
2021-03-29 09:19:58 580
原创 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 115
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人