摘要: 抽象工厂模式解决的是一系列相互依赖的对象的创建。 class MyConnect { }; class MyDatabse { }; class MyCommand { }; //sqlServer的连接 class SqlServerConnect :public MyConnect { }; c 阅读全文
posted @ 2024-06-01 20:23 陈浩辉 阅读(16) 评论(0) 推荐(0)
摘要: 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。下面是一个使用C++实现的线程安全的单例模式的例子: class Singleton { private: static std::atomic<Singleton*> instance; // 静态私有 阅读全文
posted @ 2024-06-01 19:27 陈浩辉 阅读(52) 评论(0) 推荐(0)
摘要: 这里模拟了一个队列,5个消费者线程和5个生产者线程来共同使用队列里面的数据处理。包括了阻塞和非阻塞的出队入队方法。注意在添加线程时使用到了std::ref引用,在传参给线程时不能直接传入queue的引用,要使用std::ref才是真正意义上的引用,当直接使用queue编译器是不会通过的,因为其实直接 阅读全文
posted @ 2024-06-01 14:51 陈浩辉 阅读(93) 评论(0) 推荐(0)
摘要: Vector扩容在Linux平台下面GCC编译器扩容的大小是2倍,在VS下扩容大小是1.5倍; 选择2倍的扩容大小也是因为扩大2的时候,vector的操作可以接近到常数级别的O(1),因为空间变得很大了,基数大了相对的时间复杂度就小了。 但是扩容2倍这样的话,后面申请的空间是一定会大于之前申请的全部 阅读全文
posted @ 2024-05-31 01:53 陈浩辉 阅读(239) 评论(0) 推荐(0)
摘要: STL两级空间适配器 为什么需要两级空间适配器? 因为我们如果频繁的再堆上面申请内存释放内存,就会在堆上面造成很多的外部碎片,造成空间浪费,每次都要调用malloc、free函数,降低空间利用率。 一级空间适配器: 当申请内存>128bytes的时候就用一级空间适配器。(malloc、free、realloc等方法) 二 阅读全文
posted @ 2024-05-30 17:58 陈浩辉 阅读(39) 评论(0) 推荐(0)
摘要: class Base { public: void step1() { //... } virtual void step2() = 0; void step3() { //... } virtual void step4() = 0; void step5() { //... } void run 阅读全文
posted @ 2024-05-30 00:07 陈浩辉 阅读(12) 评论(0) 推荐(0)
摘要: 1、依赖倒置原则(DIP ) ·高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象稳定)。 ·抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。 2、开放封闭原则( OCP ) ·对扩展开放,对更改封闭。 ·类模块应该是可扩展的,但是不可修改。 3、单一职责原 阅读全文
posted @ 2024-05-29 22:24 陈浩辉 阅读(77) 评论(0) 推荐(0)
摘要: std::map 和 std::unordered_map 都是C++标准模板库(STL)中的关联容器,用于存储键值对(key-value pairs),但它们在底层实现和性能特征上有所不同。 std::map 底层实现:std::map 是基于红黑树(Red-Black Tree) 实现的。红黑树 阅读全文
posted @ 2024-05-29 11:19 陈浩辉 阅读(156) 评论(0) 推荐(0)
ヾ(≧O≦)〃嗷~