自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常用设计模式

一、单例模式是一种对象创建模型,使用单例模式可以保证为一个类只生成唯一的一个实例对象。在整个程序空间中,该类只存在一个实例对象。单例模式的设计步骤:1、构造函数私有化2、提供一个全局的静态方法3、在类定义一个静态指针,指向本类的静态变量指针单例的实现分为:懒汉式和饿汉式主要区别在于:对象的创建时机不同。懒汉式:第一次使用对象时创建对象,饿汉式:程序启动时创建对象。由于懒汉式在每次获...

2019-01-26 22:26:58 144

原创 异常

一、类型转换static_cast : 用于普通类型之间的转换reinterpret_cast : 用于指针类型之间的转换dynamic_cast : 用于类层次之间的转换const_cast : 用于 const 和 非const 之间的转换二、异常1、异常可以跨函数2、异常变量的捕获要严格匹配类型3、异常变量处理可以留着,也可以继续...

2019-01-24 21:53:45 152

原创 set和map

一、查找数据set <int>::iterator it = s.find(xxx);返回值:指向找到位置的迭代器,如果没有元素,返回end();set <int>::iterator it1 = s.lower_bound(7);返回值:搜索第一个 >= 要查找元素的迭代器 set <int>::iterator it2 = s.upper...

2019-01-23 20:17:53 142

原创 标准模板库(STL)

一.STL广义:包括算法,容器,迭代器STL六大组件:容器,算法,迭代器,仿函数,适配器,空间配置器。容器:类模板 ===> 各种各样的数据结构:数组,链表,栈,队列,树,集合等等。算法:函数模板:统计,排序,查找,遍历等等,100多种。迭代器:对容器内的元素提供统一的遍历方式。单端数组:头文件#include <vector>vector<int> ...

2019-01-20 20:52:02 125

原创 C++:模板

一、函数模板template <typename ***>该模板声明只适用于当前函数调用的时候有两种方法:1.隐式调用编译器会自动识别 mySwap(a, b);2.显式调用mySwap<double>(d1, d2);函数模板:将算法与数据类型分开,可以专注于算法的实现二.函数模板与普通函数一起使用时,应该遵循的原则:1、隐式调用过程中不支持类型...

2019-01-18 19:31:29 101

原创 多继承与多态

多态

2019-01-17 23:02:20 366

原创 C++:继承

一.继承的基本概念类的关系:拥有 has-A :类B中有类A的对象 例如:A a使用use -A :类B中有函数 例如:int func(A &a)继承 is-A :一个类从另一个类获取成员函数和成员变量的过程(类似于父进程与子进程)类B继承类A的那一刻拥有A的所有功能继承:class 新类:访问控制(public、protected、private) 要继承的类二....

2019-01-16 21:26:31 90

原创 C++:封装一个字符串

封装一个字符串

2019-01-15 22:54:10 288

原创 C++:运算符重载

一.用C来实现类的操作1、类的普通成员变量内部隐藏了一个指向当前对象的指针2、静态成员变量必须在外部对其进行赋初值int Test::m_sa = 10;3、sizeof 运算符, 计算栈里面变量类型所占空间大小strlen 函数 ,计算字符串长度4、静态成员变量存在数据段,在程序编译的时候调用用C语言来实现类的操作需要注意的几点总结:1、普通成员变量 ===>...

2019-01-14 20:08:05 145

原创 C++预备知识

C++ = C语言 + 面向对象的编程思想C语言代表的是面向过程的语言,C++ 语言是在C语言的基础上添加的类代表的面向对象语言。C语言是面向过程式的语言,这意味着它强调的是强调的是编程的算法方面,从概念来说,过程编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作。在C语言中,其理念是将大型程序分解成小型,便于管理的任务,如果其中的一项任务仍旧过大,则将它分解为更小的任务,这...

2019-01-13 21:11:16 112

原创 类:构造函数和析构函数

一.类类定义的变量就是对象1.构造函数(只有)创建对象的时候系统自动调用的函数(初始化对象)(1)构造函数名与类名相同(2)构造函数没有返回值(3)构造函数可以重载注意:关于构造函数(1)如果构造函数被调用了,则一定有一个新对象被创建了(2)如果有一个新对象被创建,则一定有一个构造函数被调用了如果类中一个构造函数都没有(注意是一个都没有),系统会自动添加一个无参构造函数,给函数...

2019-01-12 19:01:19 237

原创 判断点是否在圆内(C++编程思想)

两个对象:点和圆属性(变量):自身所拥有的东西方法(函数):自身所能够做的事情首先建立两个类:Point 和 Cicle点要做的工作是:定义两个变量(点的坐标 :x 和y),然后点上要做的事情就是计算我这个点和圆心这个点之间的距离(注意:比较点是否在圆内这个工作点可以做,圆也同样可以做)圆要做的工作是:定义圆的半径,定义圆形这个点(点这个类来做),然后圆要做的工作是:判断圆心这个点是否...

2019-01-12 18:08:20 4955

原创 C++ (2)

一.constC++中的const修饰的是一个常量:1、const常量正常情况下内存不会为其分配空间,而是存在符号表中2、使用的时候去符号表中取值你3、如果对 const 常量进行取地址操作,则编译器会为其分配一块空间,但是 它本身并不会使用4、建议用 const 替换 宏常量const 和 define 的区别:1、define 是预处理的处理,做的工作是累心完全替换,在程序中会有...

2019-01-11 21:00:23 109 1

原创 命名空间,标准输入输出,函数重载

一.命名空间(1).命名空间的定义:定义一块命名空间,名字叫 NameAnamespace NameA{ // 原来全局空间可以做的事情,命名空间都可以做:定义变量、函数、宏、结构体、枚举.... int g_a; int g_b; int add(int a, int b) { return a+b; } nam...

2019-01-11 20:00:56 151

原创 网络编程(UDP)

数据库

2019-01-05 23:43:55 784

原创 多路复用

#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <stdlib.h>#include

2019-01-04 21:32:27 112

原创 数据库(sqlite)

一.基本SQL语句SQLite将每个数据库都保存成一个文件。数据库中的数据被组织成表的形式。表由若干拥有相同字段的记录组成。 表可以为空,即拥有0条记录。字段指的是记录中的数据域,它有不同的类型,可以是一个数值,也可以是字符串。每个表中可以指定一个或多个字段为主键,表中所有记录的主键的值都不能重复。这种不重复是在插入记录时控制的,即如果向一个表中插入记录时,这个表中已有与插入记录具有相同...

2019-01-03 21:44:36 116

原创 网络编程

一.网络模型二.TCP/UDP 协议 ===> 传输层TCP(传输控制协议):为用于程序提供可靠的通信连接,适合一次传输大批数据的情况,并适用要求得到相应的应用程序。(打电话)UDP(用户数据报协议):提供无连接通信,且不对传送包进行可靠的保证,适合一次传输少量数据(写信)。1.TCP协议是TCP/IP体系中面向连接的传输层协议,它提供全双工和可靠交付的服务,采用许多...

2019-01-02 20:06:24 106

原创 线程

一.多线程程序设计1.线程的创建:pthread_createint pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);第一个参数:创建的线程的id,是一个传出参数第二个参数:线程属性 —> 一般为NULL(控制线程的大小)第三个参...

2018-12-28 19:44:29 73

原创 线程与进程的区别与联系

一.进程1.基本概念进程是一个具有一定独立功能的程序的一次运行活动,是一个程序正在执行的实例。进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的...

2018-12-27 20:44:35 100 1

原创 贪吃蛇改版

父进程工作: 检测方向键子进程工作:负责游戏运行main.c#include <stdio.h>#include <unistd.h>#include <string.h>#include "snake.h"#define SIZE 1024int kfd = 0;struct termios cooked, raw;extern ch...

2018-12-26 21:31:57 195

原创 进程间通信

一.管道通信管道:单向的,先进先出,数据只读一次;一端用来读,一端用来写,写端不能读,读端不能写。管道包括:无名管道和有名管道1.无名管道:用于父进程和子进程间的通信(1)创建管道:pipe()函数int pipe(int pipefd[2]);创建两个文件描述符:filedis[0]用于读管道,filedis[1]用于写管道管道是由内核创建的,独立于进程之外。完成数据交换:一...

2018-12-25 20:51:43 110

原创 进程控制

一.获取ID获取本进程ID:pid_t getpid(void)获取父进程ID:pid_t getppid(void)int main(){ printf ("当前进程id: %d\n", getpid()); printf ("父进程 id: %d\n", getppid()); while(1); return 0;}二.进程创建创建子进程:pid_t for...

2018-12-24 19:49:27 85

原创 数据结构

要求将下列名单随机分组:分组要求,随机选择4个人组成一组输出结果:4个人一行进行输出,每行代表一个组例如:许新华 王玉恒 陶小康 王娇娇盛 开 郑 丹 陈 芳 张 龙陈梦玉 祝秋培 吴赟鹏 胡光兴曾从威 边金鹏 陈逸伦 王 琦刘加封 徐煜清 姚 笛 孔海宇孙凌霄 王 鹏 王 虎 李 峰周 波 蒋恺均 徐小蕤 缪 峰...

2018-12-23 21:23:37 73

原创 链表与文件间的导入导出

一.将链表里面的内容导入到文件中判断链表里面的内容是否为空void judge_Linklist(List *ls, int fd){ if(NULL == ls) return ; if(ls->head->next == NULL) { return ; } write_file(ls, fd); //return TRUE;}将链表里...

2018-12-22 20:22:17 1564

原创 文件:标准库函数

一.I/O缓冲C标准库提供了操作文件的标准I/O函数库,与系统调用相比,主要差别是实现了一个跨平台的用户态缓冲的解决方案。1. I/O缓冲的解释(以printf()为例)printf函数向标准输出写入多个字符,所写入的字符被放在一个用户态的缓冲区中,直到碰到一个换行符,系统才调用write函数将缓冲区中的数据写入标准输出,也就是说,在换行符之前写入的字符并不会立即出现在控制台屏幕上。系统调...

2018-12-21 21:20:36 204

原创 文件—系统调用

系统调用:内核提供的函数让用户能访问内核数据。用户区和内核区不能直接访问,需要借助系统调用。(开销大)文件描述符:0 标准输出1标准输出2标准错误文件指针:stdinstdoutstderr一.打开文件1.加头文件:man 2 open#include <sys/types.h>#include <sys/stat.h>#include &l...

2018-12-20 19:55:21 336

原创 数据结构:二叉树

一、树一种非线性的数据结构,树的结点包含一个数据及若干指向子树的分支。结点拥有的子树数称为结点的度。度为0的结点称为叶结点,度不为0的结点称为分支结点。树的度定义为所有结点中度的最大值。树中结点的最大层次称为树的高度或深度。二、二叉树一个根结点上最多有两个结点的树称为二叉树。满二叉树:二叉树中所有分支结点的度数都为2,且叶结点都在同一层次上。完全二叉树:如果一棵具有n个结点的高度...

2018-12-19 16:25:17 308

原创 C语言:函数

一.函数设计的一般原则和技巧1.原则上尽量少使用全局变量,因为全局变量的生命周期太长,容易出错,也会长时间占用空间。2.参数命名要恰当,顺序要合理。一般情况下,目的参数放在前面,源参数放在后面。3.如果参数是指针,且仅作为输入参数用,则应该在类型前面加const,以防止该指针在函数体内被意外修改。例如:void str_copy(char * strDestination ,const ...

2018-12-19 10:16:58 117

原创 9种基本排序

一.冒泡排序法重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。算法描述和分析1、比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。2、针对所有的元素重复以上的步骤,除了最后一个。3、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。最差时间复杂度O(n^2)...

2018-12-18 21:18:34 274

原创 C语言:内存管理

一.野指针定义变量的同时最好初始化为NULL,用完指针之后也将指针变量的值设置为NULL。二.栈(stack),堆(heap)和静态区堆:由malloc系列函数或new操作符分配的内存,其生命周期由free或delete决定,在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但是容易出错。栈:保存局部变量,栈上 内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被...

2018-12-17 11:43:44 97

原创 数据结构:栈

定义●只允许在一端插入和删除的线性表;●允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。特点后进先出 (LIFO)栈的应用举例栈在表达式计算过程中的应用 :建立操作数栈和运算符栈。运算符有优先级。规则:自左至右扫描表达式,凡是遇到操作数一律进操作数栈。当遇到运算符时,如果它的优先级比运算符栈栈顶元素的优先级高就进栈。反之,取出栈顶运算符和操作数栈栈顶的连续...

2018-12-16 21:05:48 138

原创 数据结构:单链表

#include "LinkList.h"#include <stdlib.h>#include <stdio.h>//创建链表List* CreateList(){ List *ls =(List *)malloc(sizeof(List)/sizeof(char)); if(NULL == ls) return NULL;

2018-12-15 21:54:09 71

原创 时间函数

C语言中读取系统时间的函数为time(),其函数原型为:#include <time.h>time_t time( time_t * ) ;将通过time()函数返回的值,转换成时间结构struct tm :struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59]...

2018-12-15 21:50:11 90

原创 数据结构:链表常见题目

#include <stdio.h>BOOL Insert_Last(List *ls, Data data){ if (NULL == ls) return ERROR; Node *node = (Node *)malloc(sizeof(Node)/sizeof(char)); if (NULL == node) return ERROR; node...

2018-12-13 23:11:36 206

原创 C语言:多项式计算器

main.c#include <stdio.h>#include "stack.h"#include <string.h>BOOL Ope_judge(Stack *s_ope,int ope)//判断操作符是否入栈{ if(Empty(s_ope)) return TRUE; int top = GetTop(s_ope); switch(...

2018-12-12 22:06:43 1493

原创 C语言:指针与数组

一.指针1.指针的内存布局注意:一个基本的数据类型(包括结构体等自定义类型)加上号就构成了一个指针类型的模子,这个模子大小是一定的,一号前面的数据类型无关;*前面的数据类型只是说明指针所指向的内存存储的数据类型。2.将数值存储到指定的内存地址假设需要将内存地址为0x12ff7c上存入一个整数0x100,可以这样做:int *p = (int *)0x12f7c;*p = 0x100;...

2018-12-11 20:46:26 217

原创 C语言:加密基础题

将一个不定长的字符串转换为一个定长的数字输入:字符串输出:16位数字转换格式:将字符串分成n组,每组16个字符将n组字符串相应位置的字符相加,如果值不是个位数,则各个位再进行相加直到为个位数为止,最终得出的16个数字即要求输出的数字#include <stdio.h>#include <string.h> int main() { ...

2018-12-10 21:44:16 724

原创 数据结构:链表

LinkList.c#include "LinkList.h"#include <stdlib.h>#include <stdio.h>List *CreateList(){ List *ls = (List*)malloc(sizeof(List)/sizeof(char)); if (NULL == ls) return NULL;

2018-12-09 22:44:28 69

原创 C语言:预处理

一.宏定义(1)数值宏定义const这个关键字修饰的数据是有类型的,而define宏定义的数据是没有类型的。因此在定义一些宏常数的时候用const代替,编译器会给const修饰的只读变量做类型校验,减少错误的可能。(2)字符串宏常量除了定义宏常数之外,经常还用来定义字符串,尤其是路径。#define ENG_PATH_1 E:\English\listen_to_this\listen...

2018-12-08 22:22:12 941

空空如也

空空如也

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

TA关注的人

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