自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 使用timerfd、inotify与epoll实现的高性能文件定时删除工具(日志文件清理工具)

在实际场景中,我们往往需要定期清理日志文件。最近我在调试过程中,需要打印的日志比较多,甚至导致每调试完几次就要动手清理一次日志文件,这让人很不爽。于是上网搜有没有相关工具可以辅助我清理日志文件,然而找到的都是要币的,而我没有... ...于是只好自己动手写了个日志文件清理工具了。本工具使用inotify监控指定路径,用timerfd进行延时,使用用epoll驱动事件,没有任何主动轮询操作,...

2019-07-05 14:16:56 377

原创 【对比 Java 和 Go,探讨 C++ 的优劣之处】

本文将对比 C++、Java 和 Go 三种编程语言,分析它们的优劣之处,并探讨 C++ 在实际生产中的应用。首先,我们将介绍 C++ 的生态环境和第三方库、框架支持的问题。接着,我们将分析 C++ 的优点,如卓越的性能和可控性,以及缺点,如复杂的语法和内存安全问题。随后,我们将对比 C++、Java 和 Go 在内存管理、并发编程、编程效率等方面的优劣之处,并使用示例代码来佐证观点。最后,我们将总结 C++ 在实际生产中的应用和局限性,并提供一些建议和思考。

2023-02-27 15:16:36 712

原创 【 C++ 20 相比 C++ 11 的所有区别的详细介绍】

这是一篇关于 C++ 20 相比 C++ 11 的所有区别的详细介绍。C++ 20 是 C++ 语言的最新版本,其中包含了许多新的特性和改进,这些特性可以帮助 C++ 开发者编写更简洁、更安全、更高效的代码。

2023-02-27 14:35:17 2132

原创 腾讯云-Centos7.2-搭建饥Steam荒服务器踩坑

网上有很多的教程,这里把踩的坑记录一下。1. 在执行./dontstarve_dedicated_server_nullrenderer时,报错显示找不到`libcurl-gnutls.so.4`解决方法:

2021-08-07 21:59:54 761

原创 24位真彩色bmp图片转8位256色带调色板的bmp图

程序由C语言实现,调用了windows的库<WINGDI.h>,在windows10+VS2019环境下执行成功。/*作者:hglijiahao本程序只支持24位真彩色bmp图片转8位256色带调色板的bmp图bmp文件结构参考https://www.cnblogs.com/kingmoon/archive/2011/04/18/2020097.html思路:修改位图起始偏移量、图像色深,创建调色板,便利位图数据,将RGB转化为灰度值并转化为灰度的调色板索引值(8位色深调色板有2

2020-12-07 18:57:07 1756

转载 Ubuntu下多个版本GCC编译器的安装和切换

转自:小淼博客1、首先查看一下当前我的Ubuntu16.04版本的原装GCC版本:gcc -v #查看gcc的版本g++ -v #查看g++的版本如上图所示:GCC的版本是5.4.0(这对我编译某些很早的内核文件的确是太新了)2、安装目前需要GCC和G++的版本(目前安装的是gcc-4.8.5版本):在这之前,我尝试采用下载源文件编译安装的方法,碰到了太多的问题,先...

2019-12-11 15:42:13 576

原创 C++的左值与右值

参考自:https://blog.csdn.net/xuwqiang1994/article/details/79924310左值与右值的概念在很多地方比较模糊,但其对我们对C++的理解很重要。比如我们看github上的源码的时候会看到std::move等用法,在查找其含义之后得知它功能是将左值转成右值引用,若是我们不理解左值与右值,还是无法知道它到底有什么用。我们还会经常在编译错误和...

2019-11-24 01:03:47 179

原创 C语言计算函数执行时间差

#include “stdio.h”#include “time.h” int main( void ){ clock_t start, end; double use_seconds; start = clock(); unsigned int i = 0xffffffff; while( i-- ); end = clock(); use_...

2019-09-05 17:26:58 971

原创 inline 内联函数导致出现“无法解析的外部符号”问题原因

现象:我用VS2017编程,将类中的一些函数的实现写在了头文件里,运行成功后为优化代码阅读体验,想将函数定义放到对应的源文件中。右键点击函数名试了一下VS2017的功能,果然有“转移声明/定义位置”的选项,点击后自动将定义转移到了源文件内了。但是发现编译通不过了,报了熟悉且头疼的“无法解析的外部符号”错误。检查后发现自动转移的定义处,自动加上了 inline,我把inline删掉后就能编译通过...

2019-08-28 11:23:34 2286 2

转载 C 语言 define format与变参args 、 __VA_ARGS__使用

原文出处:《C 语言 define 变参__VA_ARGS__使用》在C语言的标准库中,printf、scanf、sscanf、sprintf、sscanf这些标准库的输入输出函数,参数都是可变的。在调试程序时,我们可能希望定义一个参数可变的输出函数来记录日志,那么用可变参数的宏是一个不错的选择。在C99中规定宏也可以像函数一样带可变的参数,如:#define LOG...

2019-08-16 19:11:54 2060

原创 Linux下cout 不加endl不会立即输出的情况

今天做socket测试偶尔发现了这个情况,客户端发送了一段字符串过来,服务器输出在屏幕上。cout<< "buffer: " << buffer;现象:1.客户端发送的返回值正常,服务器读取的返回值也正常,但就是不输出,在客户端再次发送后,服务器会显示接收到的上一条消息的内容。2.客户端发送的字符串末尾加上换行符 '\n',服务器能输出字符串3.客户端...

2019-07-08 11:22:47 1625

转载 socket()用法

http://c.biancheng.net/view/2131.html

2019-07-05 16:04:14 147

原创 epoll_data 结构体问题

学习epoll使用的过程中,了解到epoll_data中有一个指针ptr可供自定义使用,结构定义如下:typedef union epoll_data{ void *ptr; int fd; uint32_t u32; uint64_t u64;} epoll_data_t;epoll_event结构体定义如下:struct epoll_event{ u...

2019-07-04 17:28:57 796

原创 C++编程--原子变量

应用场景:多线程下的计数等等。对原子变量的操作是原子操作,能保证在任何情况下都不被打断,是线程安全的,不需要加锁。在新标准C++11,引入了原子操作的概念,并通过这个新的头文件提供了多种原子操作数据类型,例如,atomic_bool,atomic_int等等,如果我们在多个线程中对这些类型的共享资源进行操作,编译器将保证这些操作都是原子性的,也就是说,确保任意时刻只有一个线程对这个资源进行...

2019-06-06 17:38:18 8978

原创 堆排序C语言代码实现

算法思想参考博文:https://www.cnblogs.com/chengxiao/p/6129630.html废话不多说,直接上代码。// 堆排序.cpp//#include <iostream>void swap(int &m, int &n){ int temp = m; m = n; n = temp;}void adjust(...

2019-05-21 10:23:23 425

转载 类图怎么看?这样看!

受到公司的人们的影响,虽然是使用C++编程,但极少体现面向对象的思想,写出来的代码还是C语言风格偏多。基本用回调,而不是虚函数。随着代码写得看得越来越多,发现面向对象的思维方式真的很重要。老师说,只会复制粘贴搬代码,不会优化、重构代码的,只能是普通程序员,要想成为优秀的工程师,就需要经常思考如何优化、重构代码。于是决定好好学习设计模式,从中学会面向对象的思维方式。设计模式的讲解中总会出...

2019-05-13 16:23:11 192

原创 C++通过OCILIB连接oracle执行存储过程获取游标中的结果集

最近与同事合作,他提供给我一个存储过程,让我调用,得到结果集。一开始对C++对数据库进行操作的经验仅限于对mysql进行的一些select、insert等等简单操作,没有用过存储过程。如果你和我情况一样,那么这篇文章很适合你。关于下载编译ocilib库,网上资源教程很多,这里只讲执行存储过程的情况。不管是mysql还是oracle,在C++中对其操作都是简单几步:首先写好命令字符串,然...

2019-05-06 16:46:43 587

原创 模块计算机类型“X86”与目标计算机类型“X64”冲突解决方法

先说方法:把VS自带的库目录全部删除,然后加上:$(LibraryPath)网上查了很多方法,对我都没有用。后来自己找到解决办法了,这里分享给大家。我想编译64位的程序,于是选择了debug + x64的编译环境。我报的错误是:msvcprtd.lib(MSVCP110D.dll) : fatal error LNK1112:模块计算机类型“X86”与目标计算机类型“X64”冲突。...

2019-05-05 15:51:57 4804 6

转载 C/C++ windows 获取CPU核数

// 获得本机中处理器的数量int GetNoOfProcessors(){ SYSTEM_INFO si; GetSystemInfo(&si); return si.dwNumberOfProcessors;}

2019-05-04 22:49:36 1333

转载 完成端口(Completion Port)详解(转)

转自这里完成端口(Completion Port)详解手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,...

2019-05-03 16:46:47 136

转载 线程间同步之CreateIoCompletionPort和完成端口

转自https://blog.csdn.net/hionceshine/article/details/3362669摘自《Networking Programming for Microsoft Windows》第八章“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!从本质上说,完成...

2019-05-02 18:47:30 210

转载 windows下进程间通信方法

可用pipe管道实现。参考网址:https://blog.csdn.net/liukang325/article/details/46681219注:命名管道支持全双工通信。

2019-05-02 18:42:43 268

原创 libevent TCP服务器主动发送消息给客户端

最近要做一个关于libevent性能测试的任务,在琢磨如何在TCP服务器上主动发送消息给客户端的时候弄了很久。写篇博客记录一下。网上的例子大多都是,先建立一个监听回调,监听到之后新建一个bufferevent,然后在bufferevent上建立读写回调,在读回调中对消息进行显示(或者其它处理),然后调用bufferevent_write函数,发送回复信息。这样的做法,一个非常致命的缺点是,...

2019-04-30 11:43:37 2741

空空如也

空空如也

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

TA关注的人

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