
cpp软件开发学习笔记
文章平均质量分 93
围绕cpp展开的软件开发学习笔记
菜一头包
人学始知道,不学非自然
展开
-
c++ std库中的文件操作学习笔记
C++标准库中的 <fstream> 头文件提供了 std::ifstream、std::ofstream 和 std::fstream 类,分别用于文件读取、写入及同时读写操作。这些类继承自 std::istream、std::ostream 和 std::iostream,提供了类型安全的文件操作接口。std::ifstream 用于读取文件,std::ofstream 用于写入文件,std::fstream 支持同时读写。文件可以通过构造函数或 open() 函数打开,并支持多种打开模式组合原创 2025-05-13 23:05:09 · 908 阅读 · 0 评论 -
Redis学习笔记
Redis是一种高性能的内存数据结构存储系统,广泛应用于缓存、会话存储、消息队列、实时分析等场景。它支持多种数据结构如字符串、哈希、列表、集合等,并提供丰富的操作命令。Redis基于内存存储,具有极高的读写速度,同时也支持持久化机制(RDB和AOF)来确保数据安全。其单线程架构简化了并发控制,提升了效率。此外,Redis通过哨兵和集群机制实现了高可用性和水平扩展。在实际应用中,Redis常被用作消息队列,开发者在使用时需注意发布与订阅命令需在不同的上下文中执行,以确保消息的跨服务器通信。通过合理配置和使用,原创 2025-05-13 22:20:21 · 820 阅读 · 0 评论 -
Lua学习笔记
Lua是一种轻量级的、高效的、可扩展的脚本语言,由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)的一个小团队开发。Lua的设计目标是成为一种嵌入式的脚本语言,因此它的语法简单、易于学习、易于嵌入其他程序中,并且运行速度非常快。所以Lua是一种上手成本很低的脚本语言。这里放下Lua代码与注释,方便快速上手,下再详细介绍--注释方式--[[多行注释--]]原创 2025-05-08 21:40:29 · 915 阅读 · 0 评论 -
Linux开发中的线程管理(C++11 std::thread)
std::thread 是 C++11 引入的一个类,是 C++11 标准库中的一个关键特性,它提供了一种在 C++ 程序中创建和管理线程的方法。通过使用 std::thread,可以很容易地在你的 C++ 程序中创建多线程应用程序。每个 std::thread 对象都代表了一个独立的执行线程,这些线程可以并行地执行不同的任务。原创 2025-04-29 15:40:09 · 971 阅读 · 0 评论 -
Linux环境变量配置与std访问环境变量
首先介绍一下Linux下各目录操作符的含义:~/.bashrc-~” :表示主目录,也就是当前登录用户的用户目录。“/” :是指根目录:就是所有目录最顶层的目录。“./” :表示当前目录,./ 一般需要和其他文件夹或者文件结合使用,指代当前目录下的东西。“. .” :表示上级目录“/.” :隐藏文件前会带.如.bashrc作用域与类型类型生效范围配置文件生命周期临时变量当前Shell会话 无(命令行设置)终端关闭失效用户变量单用户所有会话用户登录加载系统变量。原创 2025-04-28 21:31:50 · 983 阅读 · 0 评论 -
池类设计的常客,单例模式
单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。原创 2025-04-28 15:29:24 · 1041 阅读 · 0 评论 -
C++11线程间通信同步与Linux中MySQL连接池实现
适用场景生产者-消费者队列:队列空/满时的线程同步。任务调度:线程池中任务的分发与执行。资源池管理:如数据库连接池的分配与回收。与信号量的区别特性条件变量信号量C++标准支持C++11C++20灵活性需手动管理条件,更底层直接通过计数器控制资源访问适用场景复杂条件判断(如队列空/满)简单资源计数限制协作机制需结合互斥锁和条件检查独立的计数操作(acquire/release)条件变量是 C++11 多线程编程中实现复杂同步逻辑的核心工具。原创 2025-04-27 18:43:53 · 989 阅读 · 0 评论 -
c/c++中常用循环的执行逻辑
在C++(以及C、Java等类似的语言)中,和虽然在表面上看起来相似,但它们在循环执行和条件判断方面有着显著的不同。这种差异主要体现在循环的起始条件和循环体执行后索引值的变化上。原创 2025-04-21 20:24:17 · 573 阅读 · 0 评论 -
JSON学习笔记
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。我们最常使用的存储数据的方式有很多,比如利用txt文件存,利用xml存,利用word存,利用Excel存,如果我们要求比较高,还可以使用数据库存。(2)父子节点的形式,这种方法可以定义更为复杂的形式,缺点就是定义起来较为麻烦。在一级对象后直接跟不同的二级对象作为区分,并针对二级对象进行赋值或添加的操作。定义的JSON数据结构如下。原创 2025-04-19 16:45:30 · 331 阅读 · 0 评论 -
C++学习:std::function与std::bind
在C++工程实践中,bind绑定器和function函数对象非常的重要,依靠他们可以便捷的实现松耦合。原创 2025-04-18 18:07:58 · 735 阅读 · 0 评论 -
CMake的配置使用
gcc或g++的编译指令如下1即为生成的文件可以是可执行文件或.a静态库.so动态库,2为生成的命令,生成什么文件,3要编译的文件名,4为头文件包含目录,5为库目录路径,6为库文件名-lmuduo_net即为-l muduo_net实际上稍微大一些的项目用g++编译还是比较麻烦的,用cmake的来进行构建会便捷一些使用简单方便,可以跨平台,构建项目编译环境。尤其比直接写Makefile简单(在构建大型工程编译时,需要写大量的文件依赖关系),可以通过简单的CMake生成负责的Makefile文件。原创 2025-04-16 21:18:44 · 924 阅读 · 0 评论 -
c++中的四种cast转换
C++继承并扩展C语言的传统类型转换方式,提供了功能更加强大的转型机制(检查与风险)C++11之后,C++中就有四种类型转换,分别是,一般用这四种强制转换可以替代在c代码中类似(int)这种方式的转换。如这个表达式将expression转换为一个type-id类型的对象。Type-id必须是一个指针、指向一个已经定义类的类型或一个指向 VOID 的指针。Expression的类型必须是一个指针,如果type-id是一个指针;当type-id是一个引用的时候必须是一个左值。原创 2025-03-24 17:02:46 · 943 阅读 · 0 评论 -
cpp智能指针的原理与使用
智能指针不是指针,是一个管理指针的类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏和空悬指针等等问题。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函数释放资源。智能指针的历史历程:C++ 98 中产生了第一个智能指针auto_ptr。C++boost给出了更加实用的scoped_ptr(防止拷贝) 和 shared_ptr(引进引用计数) 和 weak_ptr。原创 2025-02-25 21:49:24 · 918 阅读 · 0 评论 -
#google命名法cpp
函数命名, 变量命名, 文件命名要有描述性;少用缩写.尽可能使用描述性的命名, 别心疼空间, 毕竟相比之下让代码易于新读者理解更重要. 不要用只有项目开发者能理解的缩写, 也不要通过砍掉几个字母来缩写单词.注意, 一些特定的广为人知的缩写是允许的, 例如用i表示迭代变量和用T表示模板参数.模板参数的命名应当遵循对应的分类: 类型模板参数应当遵循的规则, 而非类型模板应当遵循的规则.原创 2024-10-08 20:06:01 · 884 阅读 · 0 评论 -
设计模式c++(二)
重构技法静态 ->动态早绑定 ->晚绑定继承 ->组合编译时依赖 ->运行时依赖紧耦合 -> 松耦合设计模式最频繁使用的结构未框选模式在设计中使用的比较多什么时候不用模式代码可读性很差时需求理解还很浅时变化没有显现时不是系统的关键依赖点项目没有复用价值时项目将要发布时经验之谈不要为模式而模式关注抽象类 &接口理清变化点和稳定点审视依赖关系要有Framework 和Application的区隔思维>良好的设计是演化的结果设计模式成长之路。原创 2024-12-04 20:28:31 · 1114 阅读 · 0 评论 -
设计模式c++(一)
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的工厂完全可以。原创 2024-12-03 21:40:26 · 1278 阅读 · 0 评论