[置顶] C++ 设计模式--模板模式、策略模式、观察者模式

摘要: 现代软件设计特征:需求频繁变化 设计模式的要点是“寻找变化点”,在变化点应用设计模式,从而更好的应对需求变化。 1、 Template Method 在软件构建结构中,往往他有整体的稳定结构,但是各个子步骤确有变化的需求,或者因为固有的原因(比如框架和应用之间)而无法和任务的整体结构同时实现。 这个 阅读全文
posted @ 2020-11-16 14:31 Smarc 阅读(688) 评论(2) 推荐(0) 编辑

宏定义方式 进行枚举类型和枚举类型的相互转换

摘要: 很多时候我们会有这样的困扰: 1、如何在LOG中打印程序中的枚举类型 2、如何通过其他库内的枚举类型配置当前中的枚举类型 话不多说直接上代码: 1、枚举类型转字符串: #include <iostream> #include <string> enum Type { SC_TYPE1, SC_TYP 阅读全文
posted @ 2021-06-29 19:11 Smarc 阅读(318) 评论(0) 推荐(0) 编辑

Linux常见信号介绍

摘要: 1、信号 首先信号我们要和信号量区分开来,虽然两者都是操作系统进程通信的方式。可以简单的理解,信号是用来通知进程发生了什么需要做什么,信号量一般是用作进程同步(pv操作) 2、常见信号量 (以下数字标号代表信号再bitmap中的位置) 2SIGINT 可能使我们最常用的信号之一。一般在我们想进程中断 阅读全文
posted @ 2021-06-26 10:44 Smarc 阅读(961) 评论(0) 推荐(0) 编辑

git rebase 操作

摘要: 1、切换到master 拉取最新代码: git checkout master git pull //如果有冲突 确保本地修改没有需要的时候可以 执行以下操作拉取到最新的代码: git fetch --all git reset --hard origin/master git pull 2、切换到 阅读全文
posted @ 2020-12-30 19:45 Smarc 阅读(297) 评论(0) 推荐(0) 编辑

vim 如何在行首/行尾添加字符 , 如何替换文件的字符。sed命令 如何替换文件的字符,或者在文件的选定字符前后添加内容。

摘要: 首先我们介绍有关于vim和sed 共同的参数选择 我们先列举每个代表的意思,下面会详细介绍用法: a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通 阅读全文
posted @ 2020-12-18 23:05 Smarc 阅读(2416) 评论(0) 推荐(0) 编辑

fatal --You are in the middle of a merge -- cannot amend 如何解决

摘要: 在本地分支 1、git stash 将修改的文件保存下来 2、git reset --merge 取消合并 3、git rebase 重新定位到和追踪分支相同的基准。 如果 3 有冲突 1)解决冲突 2)git add + 文件 3)git rebase (--continue) 4、git sta 阅读全文
posted @ 2020-12-17 14:50 Smarc 阅读(6965) 评论(1) 推荐(0) 编辑

C++ 有关指针作为函数参数的问题,自定义内存分配函数传递二级指针的问题

摘要: 如题所示,我们主要讨论在自定义的内存分配函数中通常见到的代码如下所示: void Create(A** addr); 其中传递的参数是二级指针。为什么? 我们先看一下完整的动态内存分配函数的简单例子: struct A { int a = 0; int b = 0; int c[3]; }; voi 阅读全文
posted @ 2020-12-09 20:51 Smarc 阅读(333) 评论(0) 推荐(0) 编辑

C++ 中表达式求值

摘要: 首先我们来看一段代码: int a() { return std::puts("a"); } int b() { return std::puts("b"); } int c() { return std::puts("c"); } void z(int, int, int) {} int main 阅读全文
posted @ 2020-10-10 12:22 Smarc 阅读(978) 评论(0) 推荐(0) 编辑

Effective Modern C++ ——条款7 在创建对象时注意区分()和{}

摘要: 杂项 在本条款的开头书中提到了两个细节性问题: 1、类中成员初始化的时候不能使用小括号。 如: class A { int a(0);//错误 }; 2、对于原子性类别的对象初始化的时候不能使用= 如: std::atomic<int> a = 0;//错误 大括号初始化的特性(以下都是使用 1、禁 阅读全文
posted @ 2020-09-01 00:08 Smarc 阅读(169) 评论(0) 推荐(0) 编辑

Effective Modern C++ ——条款6 当auto型别不符合要求时,使用带显式型别的初始化物习惯用法

摘要: 类的代理对象 其实这部分内容主要是说明了在STL或者某些其他代码的容器中,在一些代理类的作用下使得最后的返回值并不是想要的结果。 而他的返回值则是类中的一个容器,看下面的一段代码: std::vector<bool> Boolen(const Sign& w);//返回值为vector<bool>的 阅读全文
posted @ 2020-08-29 22:43 Smarc 阅读(145) 评论(0) 推荐(0) 编辑