自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (5)
  • 收藏
  • 关注

原创 在堆上分配动态内存与直接使用静态内存的性能差异分析

按照经典理论,频繁的在堆上分配动态内存对于系统是一个开销,应当尽可能的使用静态内存来降低开销。我们以std::vector为例,假如重写其allocator,该allocator在静态数组中分配空间,其实际表现如何?开启-O3优化后,平均开销0.2286微秒。从性能开销上看,这段代码并未体现任何优势。不开启任何优化,平均开销1.2648微秒。按照10000次的规模,2ms间隔。

2024-04-13 16:43:00 129

原创 O3级别对性能到底有多少影响

结果,在-O3级别的优化下,这四个vector创建及销毁的开销大约是0.194微秒。先看一个代码片段, 主要是测试std::vector的开销。如果不加任何优化,开销大约在1.25微秒左右。10000次, 间隔2ms。

2024-04-13 14:25:09 100

转载 boost asio分析汇总(整理自网络)

boost asio详细研究

2024-03-19 15:05:36 18

原创 Windows C盘的清理方法-持续更新

Windows下清理C盘空间的方法

2022-10-30 16:34:02 288 1

原创 如何在host上快速尝试FAST-DDS-GEN

快速尝试FAST-DDS-GEN

2022-08-31 10:28:51 256

原创 使用链式调用风格来增加C++代码的可阅读性

使用链式调用风格来增加C++代码的可阅读性

2022-08-13 15:07:19 361

原创 C++11 std::async 结合 lambda, std::function<>的例子

std::async std::function lambda

2022-08-12 23:49:46 903

原创 C++ 纯虚类实例化中对于引用成员的使用

C++ 纯虚类实例化中对于引用成员的使用

2022-08-09 22:08:47 720

原创 C++使用动态库导出的坑

C++编译中的坑

2022-08-05 19:50:39 282

原创 CMake使用基础汇总

CMake入门基础

2022-07-27 23:25:34 1392

原创 CMake使用基础汇总

cmake使用基础汇总

2022-07-27 22:35:41 583

原创 gerrit操作-回退掉某个patch_set

教你如何在gerrit上撤销patch set

2022-07-27 22:27:37 4150

原创 芯片、存储器及其关键指标简述 一

关于处理器,微控制器、存储器、其它芯片及其关键指标和特性的简单描述,仅供参考。

2022-07-19 22:13:28 842

转载 服务器相关的指标解释

TPS、QPS、RPS、PV、UV这些指标的理解

2022-07-18 11:16:46 330

原创 std::bind与std::function的一些应用

typeid std::bind std::function的一些应用

2022-07-13 14:15:02 167

原创 使用-Wall清除代码隐患

使用编译参数清除代码隐患

2022-06-06 23:14:26 124

原创 小技巧-彻底删除U盘中的文件

安全清理U盘的小技巧

2022-06-06 19:47:53 2855

原创 malloc和new之间的不同-实战篇

很多人在面试时都会被问malloc和new之间的不同,有些人会说一下。但很多人可能并没有真正的遇到过因其不同而带来的问题。1 new会调用构造函数,malloc不会。这句话的真正意思是,new会给struct的成员分配空间,而malloc其实则不一定。struct Data { string name; int id;};struct Data* pData = (Data*) malloc(sizeof(Data));if (pData == nullptr) {

2022-05-17 16:14:24 142

原创 如何管理大量的定时任务

目前知道的常用方法是【Hashed Wheel Timer】该实现是依据是George Varghese和Tony Lauck在1996年的论文。论文附件PPT附件

2022-05-17 16:08:58 335

原创 古老的艺术-用好长尾关键词

长尾关键词的挖掘和设置是一门古老的艺术,但它不会过时。

2022-04-17 12:14:19 164

原创 System Design的相关准备材料

整理了一些材料,后续会继续补充。有需要补充的也可以在留言中说下,谢谢。Grokking the System Designaws solutions architect certificate《design data intensive application》《micro services patterns》《guide to reliable distributed systems》《System Design Interview》作者 Alex XuHigh Scala

2022-04-17 11:28:16 198

原创 游戏AI算法相关文章合集

​​​​​​​在AI寻路决策中运用势力图(Influence Map) – AI分享站行为树(Behavior Tree)实践(1)– 基本概念 – AI分享站游戏角色并行状态机之boost::msm_senlin2684的博客-CSDN博客FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别_小鱼儿飞呀飞的博客-CSDN博客游戏服务器总纲_bestans的博客-CSDN博客帧锁定同步算法 - Skywind Inside体育竞技游戏的团队AI - Skywind Ins.

2022-03-27 09:48:42 4196

原创 子类调用父类构造函数的时机

子类调用父类构造函数的时机

2022-02-05 19:43:05 1199

原创 C++中如何在一个类中初始化其它类

#include <iostream>using namespace std;class GPU {public: GPU(int id) : m_gpuId(id) { cout << "GPU" << endl; }private: int m_gpuId;};class Memory {public: Memory(int mem) : m_memSize(mem) { .

2022-01-27 21:34:53 2507

原创 现代C++中如何检测new的失败

C++和C,在分配动态内存时,分别用new和malloc,但检查其结果的方式完全不同。在C中,一般是检查返回指针是否为NULL,但这在C++中可能行不通。#include <iostream>using namespace std;struct GPU { string m_name; uint64_t m_serialNumber;};int main(){ struct GPU* pGpu = nullptr; try {

2022-01-27 21:04:26 1222

原创 谈谈为何需要将类的成员函数声明为private

1 析构函数声明为私有, 有些资源必须要在析构前释放掉,则将析构函数声明为私有,然后另外再定义一个公有的destroy函数,先做释放资源操作,再调用析构函数。 delete this.2 当类成员中有文件描述符,锁之类的系统资源时,因为这些资源不具备可复制性。所以要防止使用者复制使用它们。此时的做法是将copy构造函数、赋值操作符声明为private3 析构函数声明为私有,则在创建该类的对象时必须是在堆上创建,如果是在栈上创建会导致编译不过。#include <iostream>

2022-01-26 18:03:59 895

原创 C++ map中使用私有类型做key为什么必须要重载<

使用自定义类型作为容器map中的key,必须要重载

2022-01-26 16:02:11 957

原创 socket编程二:使用select

tcp_server.c#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <sys/types.h>#include <sys/select.h>#include <sys/time.h>#include <netinet/in.h>#include <arpa

2022-01-18 17:42:15 286

原创 socket编程一:使用fork()实现最基础的并发模式

tcp_server.c#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <netinet/in.h>#include <arpa/inet.h>int main(int argc, char **argv){ // crea

2022-01-17 15:30:26 508

原创 使用C++11 可变参数模板计算

#include <iostream>using namespace std;template<typename T>T Calculate(T t){ return t;}template<typename T, typename ... Args>T Calculate(T first, Args... rest){ return first * (1 << sizeof...(rest)) + Calculate&.

2021-12-18 17:37:41 614

原创 回调使用lambda

// lambda_callable.cpp#include <iostream>using namespace std;template <typename T, typename Func>void ForEach(T* begin, T* end, const Func& func){ while (begin != end) { func(*begin++); }}int main(int argc, char .

2021-12-07 20:53:34 512

原创 operator() 用法之一

#include <iostream>using namespace std;template <typename T>struct Print { void operator() (const T& msg) const { cout << msg << " "; }};template <typename T, typename Func>void ForEach(T* beg.

2021-12-07 20:44:09 183

原创 重载operator()

#include <iostream>using namespace std;class A {public: A(string msg) : m_msg(msg) { cout << "A constructor:" << msg << endl; } virtual ~A() { cout << "A destructor" << endl; .

2021-12-07 20:33:28 193

原创 类模板中的成员函数能否声明为虚函数

#include <iostream>using namespace std;template<typename T>class A {public: A(T a):m_a(a) { cout << "A::a" << endl; } virtual void b(T bb) { cout << "A::b" << endl; }priva.

2021-12-06 18:49:01 175

原创 虚函数能否声明为内联

#include <iostream>using namespace std;class A { public: virtual inline void a() { cout << "A::a" << endl; }; inline virtual void b() { cout << "A::b" << endl; }};int main().

2021-12-06 18:44:58 62

原创 子类成员直接调用父类的函数

#include <iostream>using namespace std;class A {public: virtual void a() { cout << "A::a" <<endl; }};class B : public A {public: virtual void a() { cout << "B::b" << endl; A *aa = .

2021-12-06 18:42:06 504

原创 deque用法测试

#include <deque>#include <iostream>using namespace std;class Event {public: Event(int type, string data) : m_eventType(type), m_eventData(data) { cout << "construct Event:" << m_eventType << ", " <&l.

2021-11-16 11:27:04 602

原创 emplace_back与push_back的真实效率比较

我测下的结果,反而是push_back耗时更小些。这个明显和大家的结论不一致。#include <vector>#include <iostream>#include <sys/time.h>using namespace std;int64_t GetSysTimeMicros(){ timeval tv; gettimeofday(&tv, 0); return (int64_t)tv.tv_sec * 100000

2021-11-10 20:33:43 545 2

原创 centos6.8上编译安装PHP7.4.12时遇到的问题解决思路

每个人的环境不同这里不穷举所有的例子,此处仅分享解决问题的思路。1 configure时遇到sqlite3 onig等库确实,使用yum install安装后重新configure,如过提示还是无法找到,仔细看提示。根据提示设置环境变量即可。#how to fix the oniguruma dependency issueexport ONIG_CFLAGS="/usr/bin/onig-config"export ONIG_LIBS="/usr/lib64/"2 make时遇到u.

2020-11-13 23:58:27 1099

原创 php7.3与httpd结合的方式

背景:如果自己选择安装7.X版本的php,安装完成之后需要配置httpd.conf.配置方法如下:

2020-11-11 00:08:46 310 1

linux设备驱动程序第三版.pdf(中文)

学习linux驱动设计的经典教程,对应最新的 2.6. 2.6与2.4有很大的不同.这本书是非常标准的~

2009-05-23

《LINUX与UNIX SHELL编程指南》读书笔记-二次发布版.pdf

学习linux下shell编程的经典教材,入门与提高。<br>中文版本,适合英语一般的朋友!

2008-07-30

v4l(video4Linux)

Video4linux(简称V4L),是linux中关于视频设备的内核驱动,现在已有Video4linux2,还未加入linux内核,使用需自己下载补丁。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0下。<br>

2008-07-30

ucLinux核心(中文手册)

学习嵌入式操作系统的好资料,对于英语基础一般的朋友很有用.<br>

2008-05-05

大型服务器基础

讲述了大型服务器的相关基础知识,是入门的经典教材.

2008-05-05

空空如也

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

TA关注的人

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