自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 gdb调试core dump快速入门

本文介绍了core dump调试的快速入门,最后给出了进一步学习的参考资料。

2024-08-11 18:06:24 488

原创 开箱即用的sph转wav工具

写了一个 shell 脚本,利用 sph2pipe 进行批量的文件格式转换

2024-08-11 11:55:08 425

原创 解决C++编译时的产生的skipping incompatible xxx 错误

解决C++编译时的产生的skipping incompatible xxx 错误

2024-07-06 10:19:44 956 3

原创 《C++并发编程》之正确使用thread和jthread

C++11从语言层面引入了多线程编程的能力,使得开发者可以通过标准库提供的 thread 等库实现跨平台的多线程编码。标准库中的 thread 等库为开发者屏蔽了不同平台下的多线程实现细节,提供了统一的编程接口,并且可以和标准库中的其它库一同使用,提高程序的开发效率。

2024-05-06 10:51:54 999

原创 【muduo源码学习】源码分析之Channel、EventLoop和Selector

在本篇本章中,将重点介绍该模型中的IO事件处理部分在 muduo 网络库中是如何实现的。

2024-05-06 10:45:42 627

原创 c++11引入的constexpr关键字

c++11引入了 constexpr 关键字,容易与 const 关键混淆。下面从两个方面理解 constexpr 关键字的用途。

2024-04-24 10:50:45 781 1

原创 【muduo源码学习】多线程下的 one loop per thread

多线程多Reactor模型的实现,主要涉及 Thread、EventLoopThread 和 EventLoopThreadPool 这三个类,下面依次进行介绍。

2024-04-16 08:49:36 1084

原创 【muduo源码学习】one-loop-per-thread核心原理

在 TCP 网络编程中,这里我们特指在单机的环境下,主要关注两件事。第一,如何正确的处理TCP的连接和断开,以及正确处理数据的收发;在错综复杂的网络环境中,这并非易事,涉及很多细节。第二,如何榨干机器的性能,即如何让单台机器在已有的硬件条件下处理尽可能多的连接请求;这需要设计一种高效的网络模型。

2024-04-16 08:45:13 1016

原创 Windows-WSL2-VSCode+Docker配置C++开发环境

使用Docker配置C++开发环境。

2024-03-13 14:25:52 1621

原创 使用一个定时器(timer_fd)管理多个定时事件

如何使用 timerfd 管理多个定时事件

2024-01-27 20:04:53 1419 1

原创 std::bind中传入的实参变量的生命周期不能短于生成的可调用对象的生命周期

在使用bind生成可调用对象时,bind的中传入的实参变量的生命周期不能短于生成的可调用对象的生命周期。

2024-01-24 14:03:07 440

原创 Linux中timerfd系列函数使用指南

Linux中,timerfd_create、tiimerfd_settime、timerfd_gettime 函数使用指南。

2024-01-23 09:43:14 1675

原创 C语言中的标准IO

本文对 Linux 下C语言的标准IO进行总结,所有代码示例均在 Ubuntu-20.04、GCC 11.3.0 环境下运行通过。

2023-12-29 10:19:52 1184

原创 优先考虑基于任务的编程而非基于线程的编程

而 async 以一种隐式的方式开启一个异步任务,”看不到线程“,从编码模式上看,和同步编程的模式类似,对比基于线程的编程方式,基于任务的设计为开发者避免了手动线程管理的痛苦(这种调用方式将线程管理的职责转交给C++标准库的开发者),并且自然提供了一种获取异步执行程序的结果(即返回值或者异常)的方式。async 和 thread 的另一个重要区别为,async 没有将创建的线程 detach 的机制,因此在调用 async 的作用域中,会等待 async 执行的异步任务完成之后才会离开其作用域。

2023-12-14 21:07:45 871

原创 从 enable_if 了解模板元编程

模板元编程是什么?SFINAE是什么?enable_if 是什么?

2023-12-14 14:15:06 1011

原创 typename的两种用法

typename的两种用法

2023-12-13 14:13:51 746

原创 CMake常用命令指南

CMake常用命令指南:add_library、target_link_libraries

2023-12-03 20:08:02 2287

原创 C++生成静态库和动态库

什么时静态库和动态库?如何制作静态库和动态库?如何使用动态库和静态库?

2023-12-02 21:25:22 1149

原创 git常用命令

git常用命令速查

2023-12-01 10:18:05 1428

原创 C++中异常的栈展开概念

C++中的异常栈展开是指,当某个函数中有异常产生(这里不考虑是主动抛出的还是被动产生的),在异常被捕获之前的函数调用链上,函数不会正常执行返回,即异常产生之后的程序逻辑不会被执行。

2023-11-30 20:47:11 549

原创 python 的 import 机制

ImportError: attempted relative import with no known parent package 是如何造成的?

2023-11-19 14:53:00 246

原创 C++中计算函数运行时长的工具类

c++中计算函数运行时长的工具类

2023-11-07 09:48:56 119

原创 auto自动类型推导总结

auto 推导出的是 “值类型”,不会是 “引用类型”。

2023-10-31 17:19:42 270

原创 从语言层面了解线程(std::thread)使用的里里外外

如何利用理解 thread 的 joinable 和 unjoinable 状态,如何使用 future 和 promise 在线程之间通信。

2023-10-24 19:36:49 118

原创 从一道面试题开始学习C++标准库提供的并发编程工具

一个空列表,用两个函数(只可调用一次)轮流写入值(一个写奇数,一个写偶数), 最终实现列表的值为1-100,有序排列。

2023-10-19 22:59:52 595 1

原创 关于Raft的Q&A

Raft 是一种共识算法,用来解决分布式环境下服务器节点的数据一致性的问题。共识算法保证了一群节点对外提供的服务像一台单独的节点对外提供服务一样,当集群中的少数节点出现故障时,任然能正常的像一个节点一样对外提供服务。使用 Raft 的应用有分布式键值存储数据库,和。

2023-10-15 19:59:39 72

原创 使用STL algorithm 解决一些算法问题

原地将 [first, last) 中的元素重新排列为下一个字典序更大的排列。若当前排列存在下一个更大的排列,则返回 true,并生成下一个更大排列;若不存在,则返回 false,按从小到大的顺序排列。思路:对序列 [1, 1, 1, 0, 0, 0, 0] 做全排列,对于每个排列,输出数字1对应的位置上的元素。从 7 个不同元素中取出 3 个元素的所有组合。,返回删除后数组的新长度。范围内的每个元素分配连续递增的。删除重复出现的元素,使每个元素。

2023-09-15 15:14:03 74

原创 设计模式之单例模式

采用了单例模式的类是指,在程序的整个生命周期中,该类只能有唯一一个实例化对象。

2023-08-11 14:16:02 58

原创 muduo网络库学习笔记之日志系统

muduo日志系统采用的是多生产者单消费者模型,基本思路是,前端线程(产生日志消息的线程)和后端线程(负责将缓冲区中的日志信息写入磁盘文件的线程)各自维护一块buffer,前端线程维护bufferA,后端线程维护bufferB。

2023-08-10 16:19:39 219

原创 在多线程环境中使用pthread_once函数初始化全局资源

POSIX线程库提供了一个名为 `pthread_once` 的函数,可以在多线程环境下,确保某个函数只被调用一次。

2023-08-08 13:57:05 149

原创 使用GDB调试程序(Quick Start)

GDB调试程序,快速上手

2023-07-20 11:31:13 217

原创 C++中的static关键字

从两个角度来分析 static 关键字:与类相关和与类无关。与类无关,即C语言中的static关键字部分;与类相关,即C++中static关键字与类成员。

2023-06-25 20:03:09 64

原创 《Linux高性能服务器编程》学习笔记-----服务器程序架构

《LInux高性能服务器编程》之服务器程序架构的学习笔记总结。

2023-06-24 11:56:27 1049

原创 pytorch单机多卡训练--完整示例代码

实现了多卡训练中数据的 shuffle 功能,此外,为了保证每个epoch训练中,数据shuffle成功,需要在每个 epoch 的 dataloader 前调用。在多人共用多卡的情况下,并不是任何时刻每张卡都是空闲的,因此,在模型训练和推理时,需要指定可用的gpu。如上所示,每个gpu的一个 batch size 为32,如果gpu的可用数量为4,那么有效的 batch size 为 32 x 4;若一个服务器上有多个GPU设备,可以使用多GPU设备进行训练,充分利用多GPU计算的性能,缩短训练时长。

2023-06-21 11:36:55 8663 8

原创 四种强制转换 reinterpret_cast、const_cast、static_cast、dynamic_cast

四种强制转换 reinterpret_cast、const_cast、static_cast、dynamic_cast

2023-06-20 22:46:49 151

原创 初识with和上下文管理器

快速上手上下文管理器

2023-05-21 11:35:57 221

原创 Linux中安装MySQL(以Ubuntu为例,实操)

MySQL安装实操

2023-04-24 16:07:03 1808

原创 python中使用多进程执行计算密集型任务(完整代码示例)

你有大量的数据,需要对这些大量的数据进行相关计算,并且计算的结果要和给定的数据顺序对应一致。

2023-03-19 22:10:36 504 3

原创 ANN搜索—Faiss库的基本使用

Faiss 是一个用于高效相似性搜索和密集向量聚类的库。它包含搜索任意大小的向量集的算法,直到可能不适合 RAM 的向量集。它还包含用于评估和参数调整的支持代码。Faiss 是用 C++ 编写的,具有完整的 Python/numpy 包装器。一些最有用的算法是在 GPU 上实现的。

2023-01-04 15:07:37 1268

原创 设计模式之装饰器模式

装饰器模式中新增加的功能一定要是在不改变原有实现的前提下,这也是设计模式中要遵循的开放封闭原则。通过采用组合而非继承的手法, Decorator模式实现了在运行时 动态扩展对象功能的能力,而且可以根据需要扩展多个功能。避免 了使用继承带来的“灵活性差”和“多子类衍生问题”。Decorator类在接口上表现为is-a Component的继承关系,即 Decorator类继承了Component类所具有的接口。

2022-12-10 16:38:57 352

空空如也

空空如也

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

TA关注的人

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