自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux设备模型

嵌入式系统常见的硬件拓扑硬件拓扑描述Linux设备模型中的四个重要概念中的三个:Bus、Class、Device(Driver)Bus(总线):CPU和一个或多个设备之间信息交互的通道,所有的设备都连接在总线上Class(分类):类似面向对象中的Class(类),集合了具有相似功能或属性的设备并抽象出一套可以在多个设备之间共用的数据结构和接口函数。所以拥有相同class的设备驱动程...

2019-07-18 18:06:13 1009

原创 基于HTTP协议的小型Web服务器——日期计算器

HTTP协议——超文本传输协议:是互联网上应用最广泛的网络协议。它是应用层的协议,底层是基于TCP通信的。HTTP协议的工作过程:客户通过浏览器向服务器发送文档请求,服务器将请求的资源返回给浏览器,然后关闭连接。即:连接—>请求—>响应—>关闭连接。通用的HTTP服务器框架通用——与业务无关                      框架——二次开发HTTP协...

2018-09-05 10:43:54 733

原创 文件压缩

HuffmanTree概念Huffman的定义:假设给定一个有n个权值的集合{w1,w2,w3,…,wn},其中wi>0(1<=i<=n)。若T是一棵有n个 叶结点的二叉树,而且将权值w1,w2,w3…wn分别赋值给T的n个叶结点,则称T是权值为 w1,w2,w3…wn的扩充二叉树。带有权值的叶节点叫着扩充二叉树的外结点,其余不带权值 的分支结点叫做内结点。外结点的带权路...

2018-08-21 15:37:08 370

原创 数据类型

一、数值类型1、有符号和无符号tinyint(默认带符号):-128——127tinyint(无符号):0——225有符号和无符号之间的运算2、bit位数据类型(按照ASCII来展示)语法:bit[M]位字段类型。M表示每个值的位数,范围是:1——64(默认为1)bit使用的注意事项:a、bit字段在显示时,是按照ASCII码对应的值显示b、...

2018-08-06 18:45:00 163

原创 排序——非比较排序

计数排序基本算法:遍历一遍数组,统计每个元素出现的次数并将其放入标记数组中,然后在遍历这个数组来还原数组。 基数排序73   22    93   55   14    28     65   39    81首先根据个位数的数值,在遍历数据时将它们分配到编号0至9的桶中(个位数值与桶号一一对应)0         1 81   ...

2018-08-06 18:17:57 244

原创 排序——归并排序

核心思想:将一组数据分成若干个组,即分到每组只有一个数据时就不用再分了。然后分别比较每两组数据元素的大小,将其合并成一组数据,再去和其他同等级别的组的数据元素进行比较、合并,且将合并后的数据放到到临时的空间中,然后在复制给原始空间,以此类推,直到最后合并完毕。1、递归算法 4 void MergeSort(int *arr,int left,int mid,int right,int ...

2018-08-06 16:45:33 128

原创 排序——交换排序

交换排序:利用交换位置进行排序冒泡排序1、算法思想重复的走访要排序的元素,依次比较相邻两个元素的大小,如果顺序错误则交换这两个元素的位置,直到不需要在比较2、步骤比较相邻两个元素,如果前一个比后一个大,则交换位置 从第一个元素一直比较到最后一个元素,这时最后一个元素的值是最大的 减掉最后一个元素,重复上述步骤 每次比较的元素个数逐渐减少,直到没有要比较的元素程序代码...

2018-08-06 14:56:13 316

原创

一、堆的概念堆数据结构是一种数组对象,同时也是一棵完全二叉树堆得存储结构:(1)大堆:每个父节点的关键码都大于孩子节点(2)小堆:每个父节点的关键码都小于孩子节点二、堆的创建建立大堆分为两步:(1)将数据放入堆中 for (size_t i = 0; i < n; i++) { _a.push_back(a[i]); }for (size_t...

2018-08-04 12:19:46 207

原创 单元测试和gtest

背景1、互联网公司的角色开发——RD 测试——QA 运维——OP 产品经理——PM2、项目开发流程背景调研——竞品调研 需求评审——MRD需求标准 RD/QA反馈排期 项目设计——RD设计好如何进行设计 开发编码——RD搬砖 QA测试 上线/发布3、软件测试(1)从开发周期:单元测试——集成测试——系统测试——验收测试——回归测试(2)从测试形式:黑盒测试...

2018-07-19 11:53:25 875

原创 shell——工具

sort1、原则:sort以文件一行为一个单位,依次按ASCII码值从首字符向后进行比较,最后将他们按升序输出。                sort默认的排序方式为升序2、常见选项-r:按降序输出 -u:在输出行去除重复行 -n:以数值来进行排序 -t:设定间隔符 -k:在设定间隔符后,用来指定列数进行排序 -f:忽略大小写进行比较 -c:检查文件是否已排好序,若没...

2018-07-18 17:36:02 663

原创 正则表达式

正则表达式是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配的目的的工具。应用场景验证:表单提交时,进行用户名密码验证。 查找:从大量信息中快速提取指定内容。 替换:将指定格式的文本,进行正则匹配查找,找到之后进行特定替换基本要素字符类 数字限定符 位置限定符grep是Linux下按行匹配文本的工具-E:使用扩展...

2018-07-18 16:30:07 4035

原创 Shell——语法

条件测试1、测试命令:test和[,通过检查该类命令的退出码,决定条件测试是否成立shell认为退出码为0,测试条件成立;非0,测试条件不成立2、测试类型(1)整数:-eq、-ne、-lt、-gt、-le、-lt 1 #!/bin/bash 2 3 read myint 4 test $myint -eq 100 #等于 5 echo $? 6 t...

2018-07-17 17:25:42 6501

原创 Shell——符号

Shell即是一种命令语言,又是一种程序设计语言Shell脚本Shell脚本是一种为Shell编写的脚本程序Shell脚本一般以.sh结尾创建文件hello.sh 1 #!/bin/bash 2 #第一行的"#!"指明脚本用命令解释 3 #第一行必须写#!shebang 4 #除了位于第一行的“#”,其他的“#”都表示注释 5 echo "hello wor...

2018-07-09 17:04:14 285

原创 网络基础——网络层

IP协议主机:配有IP地址,但是不进行路由控制的设备路由器:即配有IP地址,有可以进行路由控制节点:主机和路由器的统称协议头格式4位版本号:指定IP协议的版本。对于IPv4来说,就是4 4位头部长度:IP头部的长度是多少个32bit,也就是length*4的字节数 8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。 4位TOS分别表...

2018-07-08 10:51:25 298

原创 网络基础——传输层

传输层:负责数据从发送端传输到接收端端口号端口号标识了一个主机上进行通信的不同的应用程序。在TCP/IP协议中,用“源IP”"源端口号" "目的端口号" "协议号"这样一个五元组来标识一个通信端口号的划分范围·0——1023:知名端口号的窗口号都是固定的并众所周知·1024——65535:操作系统动态分配的端口号知名端口号·ssh服务器:使用22端口·f...

2018-05-28 17:49:06 250

原创 网络基础——应用层

程序员所写的解决实际问题的网络程序,都是在应用层。协议(是一种约定)socket api的接口,在读写数据时,都是按“字符串”的方式来发送接收的1、网络版计算器2、HTTP协议(超文本传输协议)虽然应用层的程序是程序员自己定义的,但已经有很多大佬定义了一些现成的,有很好用的应用层协议,供我们参考使用。(1)认识URL(网址)想?/:等这样的字符已经被特殊意义理解,不...

2018-05-28 16:20:57 277

原创 模板实现顺序表和链表并栈和队列

Vector.h#include<iostream>using namespace std;#include<assert.h>//类名 Vector//类型 Vector<T>template<class T>class Vector{public: Vector()//构造函数(构造函数名与类名相同) :_start(NU...

2018-05-22 23:20:51 144

原创 顺序表和链表

一、复习STLSTL(标准数据库):不仅是一个可复用的组件库,而且是一个包罗算法和数据结构的软件框架。(1)容器:各种数据结构(string、vector、list、map、set、multimap、multilset)(2)迭代器:扮演容器和算法的胶合剂(iterator)(3)空间配置器:负责内存空间的分配与管理(allocator)解决内存碎片(4)配接器(适配器):一种修饰容器或者仿函数或...

2018-05-22 23:12:07 156

原创 计算机网络的基本知识

计算机网络背景1、网络发展独立模式:计算机之间相互独立网络互联:多台计算机连接在一起,完成数据共享局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起广域网WAN:将远隔千里的计算机连在一起所谓的广域网和局域网只是一个相对的概念。2、认识协议“协议”是一种约定计算机之间的传输媒介是光信号和电信号。通过“频率”和“强弱”来表示0和1这样的信息。要想传递各种...

2018-05-20 23:04:02 570

原创 模板

为什么要有模板?·使用函数重载,针对每个具有相同行为的不同类型重新实现int Add(int &x, int &y){ return x + y;}float Add(float &x, float &y){ return x + y;}缺点:1、只要有新类型出现,就要重新添加对应函数2、除类型外,所有函数的函数体都相同,代码的复用率不高3、如果函数只...

2018-05-18 23:40:16 159

原创 虚表剖析

虚基表是通过一块连续的内存来存储虚函数的地址。这张表解决了继承、虚函数(重写)的问题。在有虚函数的对象实例中都存在一张虚表,虚函数表就像是一张地图,指明了实际应该调用的虚函数一、探索单继承对象模型...

2018-05-16 21:43:31 181

原创 信号

场景:1、用户输入命令,在shell下启动一个前台进程2、用户按ctrl+c会产生一个硬件中断(ctrl+c只能终止前台进程)kill -l可以查看信号列表每个信号都有一个编号和宏定义名称,这些宏定义可以在signal.h中找到...

2018-05-11 10:57:49 275

原创 多态

一、虚函数虚函数——类的成员函数前加virtual关键字,则这个成员函数为虚函数虚函数重写——当在子类定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写(覆盖)了父类的虚函数总结:1、派生类重写基类的虚函数实现多态,要求函数名、参数列表、返回值完全相同(协变除外)2、基类中定义虚函数,在派生类中该函数始终保持虚函数的特性3、只有类的成员函数才能定义为虚函数,静态成员函数和全局函数都不能定义...

2018-05-10 17:36:46 104

原创 继承

继承是面向对象复用的重要手段。通过继承定义一个类,继承是类型之间的关系建模,共享公有的东西,实现各自本质不同的东西。继承定义的格式继承关系&访问限定符实现一个简单的继承关系继承是一种复用手段,在继承关系里基类的成员类的成员派生类的成员,由此达到复用的目的。三种继承关系下基类成员的在派生类的访问关系变化继承方式基类的public成员基类的protected成员基类的private成员继承引起...

2018-05-08 21:58:43 163

原创 表的操作

创建表语法:create table table_name(    field1 datatype,    field2 datatype,)character set 字符集 collate 校验规则 engine 存储引擎;查看表语法:desc 表名;修改表1、新增属性alter table 表名 add 属性名 属性类型 comment '注释...

2018-05-07 17:13:29 103

原创 库的操作

创建数据库1、语法:create database db_name;2、创建一个使用utf8字符集的数据库3、创建一个使用utf8字符集并带校验规则的数据库字符集合校验规则1、查看数据库的字符集2、校验规则:区分大小写utf8_general_ci;不区分大小写(默认的校验规则)utf8_general_bin;区分大小写影响排序ut...

2018-05-06 22:53:27 262

原创 数据库的概念

mysql数据库的基础文件保存数据的缺点文件的安全性问题 文件不利于查询和对数据的管理 文件不利于存放海量数据 文件在程序中控制不方便数据库:高效的存储和处理数据的介质(介质分为:磁盘和内存)mysql的基本使用1、连接mysql:如果没有-h,则默认连接本地2、mysql启动:3、mysql关闭:4、查看数据库:5、创建数据库:...

2018-05-06 21:51:41 111

原创 读写锁及死锁

一、读写锁有些公共数据修改的机会很少,但其读的机会很多。并且在读的过程中会伴随着查找,给这种代码加锁会降低我们的程序效率。读写锁可以解决这个问题。读写锁本质上是一种自旋锁读者——写者:同步与互斥写者——写者:互斥读者——读者:共享、没关系面试题:为什么消费者与消费者之间是互斥而读者与读者之间是没关系?因为消费者会将数据拿走,而读者只访问不会将数据拿走注意:写独占,读共享,写锁优先级高       ...

2018-05-04 10:19:16 4289

原创 线程——POSIX信号量

system V信号量只能用于进程,而POSIX信号量既可以用于进程也可以用于线程POSIX信号量统计临界资源的计数器POSIX信号量和system V信号量的相同作用:用于同步操作,达到无冲突的访问共享资源目的初始化信号量参数:sem ——要初始化的信号量            pshared——0表示线程间共享,非零表示进程间共享            value——信号量初始值返回值:成功返...

2018-05-04 08:53:39 272

原创 线程——生产者消费者模型

在生活中,我们经常去超市买东西,这里涉及到三个事物:我们、超市、供货商我们相当于消费者,超市相当于交易场所,供货商相当于生产者对于生产者消费者模型我们总结为3 2 1原则:·3中关系·2中角色·1个交易场所三种关系:(1)生产者——生产者        假设所有的供货商都生产同一种产品,而超市只能由一家供货商供货,他们之间肯定互相竞争这个名额,那么可想而知他们之间存在着互斥关系 (2)消费者——消...

2018-05-02 22:46:38 163

原创 windows环境调试

一、调试1、调试(Debug):又称除错,是发现和减少计算机程序和电子仪器中程序错误的一个过程2、调试的步骤:    ·发现程序错误的存在    ·以隔离(将代码分成一块一块)、消除等方式对错误进行定位    ·确定错误产生的原因    ·提出纠正错误的解决办法    ·对程序错误予以改正3、Debug和ReleaseDebug:调试版本,包含调试信息,便于程序员调试程序Release:发布版本,...

2018-04-27 13:54:43 333

原创 分开编写头文件和源文件

创建一个新的项目右击——>属性单击常规——配置类型的默认将其设置为单击应用——>确定Ctrl+F7进行代码编译 + F7会生成

2018-04-24 19:53:48 2062

原创 简单的扫雷实现

统计坐标(x,y)周围雷的个数看坐标x,y周围的坐标int get_mine_count(char mine[ROWS][COLS], int x, int y)//统计周围雷的个数{ return (mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y - 1] + mine[x][y + 1...

2018-04-24 19:20:01 285

原创 三字棋

game.h#define _CRT_SECURE_NO_WARNINGS #ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#define COLS 3#def...

2018-04-19 22:54:54 275

原创 面试题——有关数组的计算

总结:数组名代表整个数组的情况:(1)sizeof(数组名)(2)&数组名

2018-04-19 22:51:00 142

原创 数组

一、一维数组的创建和初始化1、数组的创建数组是一组相同类型元素的集合数组的创建方式:type_t arr_name[const_n];//type_t 数组的元素类型//arr_name 数组名//const_n 常量表达式,指定数组的大小注意:[]中是一个常量,不能是变量2、数组的初始化:在创建的同时给数组的内容一些合理的初始值int a[10] = { 1, 2, 3 };//不完全初始...

2018-04-19 20:02:09 90

原创 函数

函数具备相对的独立性,有输入、输出、返回值,提供对过程的封装和细节的隐藏C语言中函数的分类·库函数(完成有限的功能)·自定义函数(可以实现自己想要的逻辑)一、库函数C语言中常用的库函数·IO函数(printf、scanf、getchar())int printf(const char* format,...);·字符串操作函数(strcpy、strcmp、strstr)char* strcpy(c...

2018-04-19 17:16:16 121

原创 操作符

一、算数操作符    +    -    *    /    %1、除了%操作符之外,其他的几个操作符可以作用于整数和浮点数2、对于两个操作数都为整数的/运算,执行整数除法。只要有一个操作数为浮点数就执行浮点数除法3、%运算要求操作数都是整数二、移位操作符1、<<:左移操作符左边抛弃、右边补02、>>:右移操作符(1)算数移位左边补0,右边抛弃(2)逻辑移位左边补该值的符号...

2018-04-19 10:53:36 162

原创 线程的同步与互斥

一、mutex(互斥量)·大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量·但有时候,很多变量都需要在线程间共享,这样的变量称为共享变量,可以通过数据的共享,完后线程之间的交互·多个线程并发的操作共享变量,会带来问题例:操作共享变量会有问题的售票系统 2 #include<stdlib.h> 3 #incl...

2018-04-17 16:30:58 129

原创 深浅拷贝

【浅拷贝】      又称位拷贝,编译器只是直接将指针的值拷贝过来,结果多个对象共用同一块内存,当一个对象将这块对象释放掉之后,其他对象不知道该内存已经还给了系统,以为还有效,所以在这段内存进行操作的时候,发生了错误。#include<iostream>using namespace std;#include<cstring>class String{public...

2018-04-16 17:03:00 85

空空如也

空空如也

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

TA关注的人

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