- 博客(12)
- 收藏
- 关注
原创 YAML基本语法及在c++中的应用
YAML简介1 YAML特点2 适用场景3 基础语法3.1 基本规则3.2 三种数据结构3.2.1 map,散列表3.2.2 list 数组3.2.3 纯量3.3 数据结构嵌套3.3.1 map嵌套map3.3.2 map嵌套list3.3.3 list嵌套list3.3.4 list嵌套map3.4 使用锚点4 C++中使用yaml-cpp读写yaml配置文件4.1 使用方法4.2 示例1 YAML特点YAML(YAML Ain’t Markup Language)是一个可读性高,用来表达数据序列化的
2021-01-18 15:56:59 2909 1
原创 代码需要重构的特征
之前就粗略的看过重构这本书,最近因为工作中要进行系统的重构,再来系统的复习一遍,也做一些整理。本章为代码的坏味道,当代码出现这些特征时,说明需要做一些refactor了。1 Duplicated Code (重复代码)如果再一个以上的地点看到相同的程序结构。最简单的Duplicated Code就是同一个类的两个函数含有相同的表达式,采用Extract Method提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码。两个互为兄弟的子类内含相同表达式。只需要对两个类都使用Extract
2021-01-03 16:57:04 292
原创 关于const修饰指针,指向常量的指针变量、常指针的区别
指向常量的指针变量const 类型名 * 指针变量名;int a = 12,b = 15;const int *p1 = &a;//定义了p为指向整形变量a的指针变量*p = 15;//试图通过p改变它指向的对象的值,非法指向常量的指针变量只是限制了通过指针变量改变它指向的对象的值常指针指定指针变量的值是常量。即指针变量的指向不能更改类型名 * const 指针变量名;int a = 4;int b = 6;int *const p2 = &a;//p2只能指向
2020-12-12 17:23:28 180 1
原创 SQL语法
1 聚合与排序1.1 对表进行聚合查询聚合函数count:计算表中的记录数(行数)shop=# selct count(*) from product; count不会统计null的行数sum:计算表中数值列中数据的合计值shop=# select sum(sale_price), SUM(purchase_price) from product; sum不会加null的值Average:计算表中数值列中数据的平均值shop=# select avg(sale_price),
2020-12-09 15:51:38 1926 6
原创 c++ 多线程编程
1 多线程1.1 c++11多线程相关的头文件c++11新标准中引入了四个头文件来支持多线程编程,他们分别是,,,<condition_variable>和1.2 Mutex系列类std::mutex, 最基本的mutex类std::recursive_mutex,递归mutex类std::time_mutex,定时mutex类std::recursive_timed_mutex,定时递归mutex类1.3 Lock类std::lock_guard,与mutex RAII相关,
2020-12-05 17:06:31 164
原创 线程和进程之间的区别
进程和线程的根本区别是进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。另外区别是资源开销、包含关系、内存分配、影响关系、执行过程等。资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也
2020-11-19 16:29:05 83 1
原创 static的使用
static 的使用1.1 static声明静态全局变量static变量只能在定义它的文件中使用。这里的文件指的是cpp源文件。如果在头文件中定义了static变量,那么,所有包含这个头文件的源文件都会定义自己的static变量,而不是使用该头文件中的static变量。其实就是有多少个cpp包含了这个头文件,就存在多少个该变量。这样说可能不是很明白,直接看代码吧!a.hstatic bool test = true;void print_test();a.cpp#include "a.h"
2020-11-17 14:16:12 255
原创 auto的一点小记录
今天在review代码的时候看到了auto的使用,简单记录一下1 关于auto的那些首先auto是c++11标准发布的,用于进行自动类型推断。那么大量使用auto关键字,会影响编译效率吗?答案是不会的,因为本来也需要推导出右侧表达式的类型来和左侧进行匹配同样在for循环中也可以使用,对于复杂结构体或类,可以使用&用传址代替传值来提升效率。...
2020-11-14 14:00:26 130
原创 命令模式
1 命令模式1.1 定义“命令模式”将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。1.2 类图1.3 代码// 接口类class Command{public: Command() = default; ~Command() = default;public: virtual void execute() = 0;// 用于执行命令 virtual void undo() = 0;// 用于撤销命令};// 灯类cl
2020-11-06 15:16:55 93
原创 简单工厂模式
1 工厂模式1.1 模式引出如何将实例化具体类的代码从应用中抽离出来,或者封装起来,使他们不会干扰应用的其他部分?Pizza OrderPizza(string type){ // 根据pizza的类型,实例化正确的具体类,然后将其赋值给pizza实例变量 if (type.equals("cheese")) { pizza = new CheesePizza(); } else if (type.equals("greek")) { pizza = new
2020-10-21 19:18:27 69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人