C++葵花宝典
文章平均质量分 79
Go和分布式IM
这个作者很懒,什么都没留下…
展开
-
qt creator使用vcpkg
Qt Creator使用Vcpkg,有图,快速有效!原创 2022-05-21 17:01:05 · 4429 阅读 · 0 评论 -
C++调用Python3实战,和PyImport_ImportModule返回NULL问题解决
Linux C++调用Python3入门准备以下面的目录结构演示如何在Linux C/C++调用python3。|--hello.py|--main.cpp|--CMakeLists.txthello.py:python的脚本,里面有2个函数main.cpp:c++函数CMakeLists.txt:Cmake文件,生成makefilepython脚本示例python脚本hello.py内容如下,有2个函数:def add(a,b): return a+bdef ge原创 2021-09-07 20:46:12 · 6157 阅读 · 0 评论 -
C++打印堆栈
今日发现http_msg_server异常,遂查看日志,发现了这么一坨东西:2021-08-24 20:13:20.102 [ERROR] [0x7f7fe5a80820] [IM] - <HttpConn.cpp>|<178>|<Close>,erase handle:99 ,./http_msg_server(_Z13GetTraceStackv+0x2f) [0x4f766f]./http_msg_server(_ZN9CHttpConn5CloseEv+0x3原创 2021-08-24 20:27:43 · 1370 阅读 · 0 评论 -
GDB调试指南:C++中如何调试生产环境的程序?
GDB调试指南:C++中如何调试生产环境的程序?引言对于后端开发而言,不管是java还是c++/go等程序员,都会遇到线上程序崩溃的问题,此时,我们有2种方式进行排查:通过log确定问题范围,比如有没有error级别的log,或者根据最后一行log大概确定出问题的模块如果启用了linux的coredump功能,则在程序崩溃时,会把当时的所有堆栈信息按照指定格式转存到文件中,我们可以通过gdb加载这个文件,还原崩溃时程序运行的情况,找到错误具体原因。除了生产环境中出现问题,平时的调试中我们可能也原创 2021-08-21 23:46:42 · 799 阅读 · 0 评论 -
CentOS 7 中如何启用coredump,一个shell脚本搞定
CentOS 7 中如何启用coredump,一个shell脚本搞定引言为了尽可能的提高服务的可用性,在程序部署时,我们通常会打开很多的辅助功能:监控报警类:帮助我们迅速发现问题快速恢复服务。如端口监控、健康检查等日志类:通常在线上我们会禁用应用程序TRACE、DEBUG等级别的日志,启用INFO等级以上的日志,便于留痕和事后追溯。另外一个方面,我们会启用linux的coredump功能,一旦程序崩溃,让其把程序的堆栈、内存等信息进行转储,方便我们事后确定问题原因。守护类:如monit等进程监测原创 2021-08-21 23:41:09 · 3105 阅读 · 0 评论 -
Linux C++后端开发学习路线参考汇总
文章目录Linux C++后端开发学习路线参考汇总如何快速掌握C++?路线一(<6个月):知乎Milo Yip路线二(<1年):华中大守门员一、C++基础(3个月)二、计算机网络(1个月)三、操作系统(1个月)四、网络编程(1个月)五、数据结构与[算法]()及[刷题]()(2个月)六、mySQL数据库(7天~15天)七、[项目]()(2个月)总结路线三(<3年):编程指北正文一、后端/后台/服务器开发?二、后台开发都考察哪些?三、C/C++四、操作系统五、计算机网络六、网络编程七、系统级编原创 2021-06-23 11:33:50 · 5607 阅读 · 3 评论 -
SSL_shutdown崩溃Broken pipe
文章目录问题解决方式原理问题static inline void SSL_free_(SSL *&ssl) { if (ssl) { ::SSL_shutdown(ssl); // crash ::SSL_free(ssl); ssl = nullptr; }}写了个性能测试工具,每 20毫秒启动一个协程 ,进行TCP连接和SSL握手,然后关闭。服务端运行过程中,程序有时在SSL_shutdown处崩溃,如果降低客户端连接频率,该问题原创 2021-06-07 14:23:54 · 1690 阅读 · 0 评论 -
GCC 常用编译选项整理和效果演示
GCC 常用编译选项C++11项目常用GCC编译选项cmake_minimum_required(VERSION 2.8)project(online-im)add_definitions( -g # gdb调试 -W # 只显示编译器认为会出现错误的警告 -Wall # 编译后显示所有警告 # 一些警告选项 #-Werror原创 2021-05-28 13:57:43 · 383 阅读 · 0 评论 -
evpp库增加openssl和websocket支持
前言evpp是一个基于libevent开发的现代化C++11高性能网络服务器,自带TCP/UDP/HTTP等协议的异步非阻塞式的服务器和客户端库。来自于奇虎360公司github,star: 2.7k。使用方面,因为支持跨平台,通过vcpkg install evpp安装很方便,故在团队内推广,最近希望扩大其使用范围,奈何其不支持openssl和websocket,还需要自己动手。本教程很多思路借鉴了 不败青铜: websocket协议实现及基于muduo库的功能扩展 https/ws/wss 的教程原创 2021-05-24 16:53:44 · 907 阅读 · 0 评论 -
WebSocket入门和帧协议详解
WebSocket学习笔记简介WebSocket 是一种基于 TCP 的网络协议。在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准,并由 RFC7936 补充规范。WebSocket API 也被 W3C 定为标准。WebSocket 也是一种 全双工通信 的协议,既允许客户端向服务器主动发送消息,也允许服务器主动向客户端发送消息。在 WebSocket 中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久性的连接,进行双向数据传输。该协议的特点是:原创 2021-05-24 16:52:33 · 3600 阅读 · 3 评论 -
OpenSSL API入门和踩坑大全
SSL学习笔记OpenSSL库基础根据 官方的例子,OpenSSL常用的结构体和函数如下:初始化OpenSSL库SSL_library_init():初始化SSL算法库函数SSL_load_error_strings():载入所有SSL 错误消息OpenSSL_add_all_algorithms(): 载入所有SSL 算法加载和验证证书通过SSL_CTX_new(SSL_METHOD *method)创建一个SSL_CTX *实例,用来保存证书的私钥。其中method通过TLS_原创 2021-05-24 16:46:26 · 5687 阅读 · 0 评论 -
Vcpkg使用MD运行时静态库——如何设置?
背景vcpkg、conan等都是c++的包管理工具,且都是跨平台的,解决了c++程序员每次新建项目都需要拷贝代码依赖的痛点,就像前端npm一样,先search,然后再install,非常方便,再也不用配置include路径、lib路径了,点赞。vcpkg search <keyword>$ vcpkg search httpapr[private-headers] Install non-standard files required for bui原创 2021-04-28 10:16:18 · 3505 阅读 · 4 评论 -
Clion下vcpkg的使用
环境ubuntu 20+clion 2021.1背景在Linux下,每次新创建1个项目,可能会使用一些第三方库,比如:toml解析spdlog日志难道每次都要我去重新下载源码,然后编译,在配置CMake?太麻烦了吧,看看别人前端,需要一个包只用执行 npm install axio 就行了,好羡慕。刚好,前段时间在windows下使用了一把vcpkg,目前vcpkg作为c++的包管理工具,已经相对成熟了,很多著名的开源组件都对vcpkg进行了支持。于是,我们在Ubuntu 20 下 通原创 2021-04-09 19:50:45 · 6982 阅读 · 0 评论 -
解决注入器在DLL的入口函数中创建线程时卡死的问题
问题描述根据网上的教程,写了一个注入器的实现:但是我发现注入后无法卸载,经过一系列的排除法验证后,最终确定了原因。验证过程创建动态库项目使用VS 2017,点击新建->动态链接库(DLL)在dllmain.cpp中,加入日志,以便使用 DugView工具(下载,提取码:m194)查看动态库运行情况BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call,原创 2021-03-19 12:38:09 · 1892 阅读 · 0 评论 -
ubuntu20搭建C++开发环境
文章目录概述Ubuntu20安装Ubuntu20中文输入法问题SSH启用Clion安装安装clion字体大小不等clion代码模板配置默认文件头自定义代码VS Code基础编译环境和库Git客户端概述放一张图先编辑器IDE:Clion 2020.3.2 + VS CodeGit客户端:GitKrakenUbuntu20安装官网下载镜像比较慢,可以使用网易的源下载。20.04版本:点进去根据你的电脑版本下载iso后缀那个http://mirrors.aliyun.com/ubuntu-原创 2021-03-03 12:02:47 · 2421 阅读 · 0 评论 -
VS2017 C++开发环境插件推荐
文章目录引言VS2017安装插件安装和配置Assistx安装代码高亮快速插入代码模板模板介绍新建模板常用模板汇总DoxygenAStyle代码格式化插件安装代码格式化风格配置总结引言通常在Windows下开发,必装Visual Studio 系列,目前VS2017/2019比较常用,在早一点如2013/2015等,笔者刚好有一台电脑需要在全新的环境下搭建C++的开发环境,遂写文本记录一下,备忘。VS2017安装参考VS2017下载地址和安装教程(图解)。插件安装和配置Assistx安装下载。原创 2021-02-17 15:25:00 · 4494 阅读 · 0 评论 -
解决网易开源duilib自带RichEdit在部分系统下键盘无法输入的问题
现象最近基于网易开源维护的duilib做了一款客户端,上线后,用户反馈了一系列问题,其中最诡异的问题就是RichEdit有时候无法输入。调查使用官方自带的例子进行测试后,发现同样存在问题:NIM_Duilib_Framework这2个RichEdit的XML如下:<!-- 单行文本 --><RichEdit class="simple input" height="30" margin="0,3" padding="6,6,6" promptmode="true" p原创 2021-01-28 16:10:20 · 1051 阅读 · 0 评论 -
尝试一下Clion,抛开VS2017吧
文章目录尝试一下Clion,抛开VS2017吧引言安装使用新建项目CMakeLists.txt结束语尝试一下Clion,抛开VS2017吧引言在Windows上开发桌面应用或者动态库等,一定绕不开来自于微软的Visual Studio 20XX系列IDE,简称VS。如果你是一个来自于Linux C++环境下的开发者,可能也会像我一样。快捷键不习惯明明编译成功,却还是报错,莫名其妙函数跳转还要选一次筛选器和文件夹不一一对应,降低效率,总是投入不了编码,没有灵感。整原创 2020-08-27 11:17:16 · 5995 阅读 · 0 评论 -
C++标准总揽
C++标准至今为止,C++标准列表如下:C89C99C11C++ 98C++ 03C++ 11C++ 14C++ 17在哪里下载?《STL源码剖析》 一书中,主要以SGI STL源码为例讲解,根据书中指明的下载连接:stlport.org,得知其在sourceforge上开放下载:https://sourceforge.net/projects/stlport/在看STLPORT-5.2.1的源码的时候,从FAQ文档里面看到:Q1.0 What is STLport?原创 2020-07-17 14:38:33 · 285 阅读 · 0 评论 -
c++日志库实战——spdlog,是不是感觉log4cxx有点笨重,不妨试一试spdlog
c++日志库实战——spdlog,是不是感觉log4cxx有点笨重,不妨试一试spdlog背景spdlog是什么spdlog快速入门常见问题打印行号怎么控制台看不到log同时输出控制台和文件文件按天分割完整代码附录CMakeList.txt关于背景在最近新入职同事的推荐下,作者在一个小工具中学习和使用了spdlog,且已发布到线上运行,以下是学习记录。spdlog是什么Fast C++ ...原创 2020-04-30 16:34:59 · 14911 阅读 · 5 评论 -
C++在线参考手册
C++在线参考手册今天无意中发现一个在线的C++参考手册。效果如下:https://zh.cppreference.com/w/%E9%A6%96%E9%A1%B5切换函数函数使用示例比如字符串的find()函数怎么用的?关于作者博客:https://blog.csdn.net/xmcy001122我的Golang项目自荐:IM开源项目。包含Flutter客户端和纯Go实现...原创 2020-01-03 18:33:23 · 1132 阅读 · 0 评论