自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 中文读取数字

以中文方式读取数字(大疆笔试题)string getstr_thousand(int num){ string code[]={"零","一","二","三","四", "五","六","七","八","九"}; string unit[]={"千","百","十"}; num%=10000; int level=1000; int unit_index=0; int digit; string res,zero; while(num) { digit=num/l

2020-11-15 21:48:40 159

原创 海量数据查重和TOP K问题

文章目录利用小根堆(优先级队列)求前10大的数求重复次数最多的10个数有内存限制的查重和TOP K问题利用小根堆(优先级队列)求前10大的数 vector<int> vec; for(int i=0;i<100000;i++) { vec.push_back(rand()+i); } priority_queue<int,vector<int>,greater<int>> pq; int i=0; for(;i<10;i++

2020-11-10 15:21:49 157

原创 文件读取

vector<int> vec; FILE* fd; if((fd=fopen("D:\\c.txt","a+"))==NULL) { cout<<"fopen error"<<endl; } //将随机数写入到文件中 /* for(int i=0;i<1000;i++) { vec.push_back(rand()); } for(int val : vec) { fprintf(fd,"%d#",val); .

2020-11-10 13:05:43 94

原创 awk:A和B文件的重复数据处理

找出A和B中相同的数据并输出awk ‘NRFNR{a[$0]++} NR>FNR&&a[$0]’ A Bawk 'NRFNR{a[$0]} NR>FNR {if($1 in a) print $0 }’ A B在A中找出B中没有的内容并输出awk ‘NR==FNR{a[$0]} NR>FNR{if(!($1 in a)) print $0}’ B A...

2020-10-24 21:24:23 396

原创 二维矩阵的输入

键盘输入一个不定长的二维数字矩阵vector<vector<int>> vec;vector<int> v;string str;while(getline(cin,str)){ if(str.size()==0) { break; } int tmp=0; for(int i=0;i<str.size();i++) { if(str[i]==' ') { v.push_back(tmp); tmp=0; }

2020-10-03 09:42:59 829

原创 重建二叉树

文章目录以数组形式前序和中序后序和中序主函数测试以字符串形式struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};以数组形式前序和中序TreeNode *pre_in_construct(vector<int> pre,int preleft,int preright,vector<i

2020-09-30 13:23:51 43

原创 字符串转换/输入处理

文章目录数值val转stringvector转string分割以指定字符' '等的字符串到vector数值val转stringstring s=to_string(val);//char/int/float等vector转string#include<iterator>#include<sstream>vector<int> vec;stringstream ss;string str;copy(vec.begin(),vec.end(),ostre

2020-09-29 21:43:31 62

原创 printf非常规的使用情况

文章目录int类型用%f格式化float类型用%d格式化float数据可以精确表示float数据不能精确表示int a=5;float b=5.5;float c=5.01;printf("%f,%d,&d",a,b,c);先以相应的类型在内存存储,再去使用相应的格式化符进行打印,就比较容易清楚。int类型用%f格式化int类型32个字节,以%f格式化时,%f会默认是double类型,所以以64个字节,所以相当于一次浮点数双精度的转化。5的二进制00000000000000000

2020-09-07 09:49:16 70

原创 锁机制与触发器

文章目录MyISAM读锁(共享读锁)写锁(独占写锁)InnoDB读锁(共享锁)写锁(排他锁)悲观锁乐观锁间隙锁MyISAM表锁读锁(共享读锁)select底层会自动加锁A查询表1,会对表1加读锁,B此时也可以查询表1,也会加读锁,则读锁与读锁共享共存;B如果想要修改表(即加写锁),就会阻塞等待A释放读锁。写锁(独占写锁)updata、insert、delete底层会自动加写锁A修改表1,会对表1加写锁,B此时如果想要查询表1或者修改表1,会阻塞等待A释放写锁,即加上写锁后,读锁与写锁都不能再

2020-09-03 11:53:12 72

原创 事务

文章目录A原子性C一致性I隔离性D持久性开启事务 begin;提交事务 commit;一组SQL的集合 具有ACID特性A原子性保证全部执行成功或者全部执行失败。日志系统:日志先行==》 会将日志刷新到磁盘上,则事务将要执行的操作永久的保存下来redo log 重做日志 记录事务将要执行的每一个操作undo log 未作日志 保存事务执行过程中的每一个执行点日志系统解决了原子性和持久性C一致性事务执行前后,完整性约束不变。I隔离性消除事务间的互相影响。如果没有隔离,会出现的问题

2020-09-03 11:52:57 72

原创 索引

文章目录索引的分类和创建普通索引主键索引唯一索引全文索引组合索引索引的优化索引的注意事项索引就是一个数据结构,是为了提高效率,以空间换时间。索引的分类和创建普通索引直接创建索引create index index_name on tablename(column_name);建表时指定索引create table tablename (index index_name(column_name));修改添加索引alter table tablename ADD ind

2020-09-02 16:36:32 69

原创 MySQL体系架构和存储引擎

文章目录体系架构存储引擎MyISAMInnoDBMEMORYARCHIVE体系架构C/S架构客户端 进程名mysql服务器 进程名mysqld (连接池、服务管理模块、SQL API、SQL解析器、SQL优化器、缓冲区、数据库文件set在磁盘,存储引擎、记录日志模块log)由客户端发起连接请求(mysql -uroot -p),在服务器端由连接池接受请求,服务管理模块拿到用户信息进行匹配,匹配成功则连接成功。然后阻塞等待客户端发起SQL语句请求,SQL语句到达 SQL API,API将语句交

2020-09-02 16:11:43 67

原创 异常处理机制

当在运行某程序出现异常时,系统只会取调用abort()函数将该程序终止,而不会去处理该异常。C++标准库异常类exception的异常处理机制throw std::exception(“error”);//显示生成该作用域的临时对象,抛出该对象由try包含可能异常的代码块,try会将抛出异常的对象拷贝一份副本到当前作用域由catch进行捕获并处理异常,将副本与catch对应的形参类型匹配class St{public: St():top(0) {} void push(T val)

2020-09-02 11:32:35 196

原创 设计模式:观察者模式

观察者观察事件到来并通知感兴趣的监听者处理事件内部有一张注册表,注册表存放事件编号对应的感兴趣的监听者(map、multimap)观察者接口注册接口 register 将该监听者与感兴趣的事件注册通知接口 noty 当消息到来通知感兴趣的监听者监听者处理相应的事件监听者接口处理事件 handle...

2020-09-02 11:00:30 69

原创 STL

文章目录STL6大组件1. 容器顺序容器关联容器容器适配器2. 泛型算法3. 迭代器4. 函数对象5. 适配器容器适配器函数适配器6. 空间配置器STL6大组件1. 容器用来存储数据的数据结构顺序容器vector、list、deque顺序容器关联容器set、multiset、map、multimapset单集合容器,存储关键字简单使用insert 插入 _valerase 定点删除 _where底层实现底层以红黑树实现节点由三个域组成,左孩子L,数据data、右孩子R

2020-09-02 10:35:48 67

原创 STL:顺序容器

文章目录vector简单操作底层实现扩容方式特点list简单操作底层实现特点deque简单操作底层实现扩容方式特点vector简单操作1.push_back2.pop_back3.insert4.erase关于访问查询支持的是随机访问迭代器底层实现底层以数组形式处理,动态开辟扩容方式以倍数形式开辟更大的内存,然后将旧的数据拷贝到新的内存中,然后释放旧的内存,指向新的内存并调整总大小。特点在尾部快速的插入或删除O(1),直接访问元素。list简单操作1.push_front、p

2020-09-02 09:27:14 67

原创 设计模式:迭代器模式

文章目录什么是迭代器迭代器的作用迭代器的基本操作什么是迭代器迭代器有时又称为游标,是一种设计模式,可以通过迭代器去访问容器对外提供的接口(begin,end),从而访问容器内部的数据,从而保护了容器的封装性,也就对外屏蔽了容器的结构。迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。以对象的方式存在,作指针使用。迭代器的作用避免了暴露容器的可能针对不同的数据结构提供了统一的访问方式迭代器的基本操作迭代器的基本操作:

2020-09-01 17:42:35 45

原创 设计模式:单例模式

文章目录什么是单例模式饿汉单例模式懒汉单例模式懒汉单例模式线程安全版本经典枷锁版本优化版本:双重检查锁机制使用内部静态变量保证线程安全单例模式的使用场景什么是单例模式保证一个类仅有一个实例,提供一个访问它的全局访问点。要点:单例类只能有一个实例它必须自行创建实例他必须自行向系统提供这个实例具体实现:只提供私有的构造函数类定义中含有一个该类的静态成员对象提供了静态的公有方法用于创建或获取它本身的静态私有对象。分类:懒汉模式:第一次使用时才创建唯一的实例,实现了延迟加载。饿汉

2020-09-01 17:01:44 68

原创 写时拷贝机制

文章目录string类浅拷贝深拷贝写实拷贝string类浅拷贝问题:只是一个简单的赋值,使得指针指向同一块内存块,当销毁时会内存被多次释放,就会出现问题。浅拷贝的优点:实现了一种共享机制,如果在使用过程中仅仅只是访问,那么开销大大减少,节省了空间。而如果修改量比较大,那么就需要考虑进行深拷贝的实现了。深拷贝每个对象拥有自己独立的资源,实现了资源私有,在释放时就不会出现问题。问题:资源占用率太大,而如果使用只是为了访问,那么这种深拷贝机制就大大浪费了空间资源。写实拷贝写之前,浅拷贝,实现资

2020-09-01 16:01:21 84

原创 运算符重载

文章目录什么是运算符重载基础运算符的重载机制单目运算符双目运算符Cint类重载++、<、[ ]CComplex类重载+、<<、+=、++、Cstring类重载>、+、[ ]、<<什么是运算符重载使得自定义类型满足和内置类型相同的逻辑类中:单目不涉及形参,双目形参拿右操作数类外:单目设一个形参,双目设两个形参,第一个接受左操作数,第二个接受右操作数限制:不能改变运算符的优先级和结合性不能改变原有运算符的用法不能创造运算符不允许有函数的默认值不能重

2020-09-01 15:04:10 69

原创 模板

文章目录模板的基本概念什么是模板模板的作用模板的类型函数模板类模板模板实例化和实参推演模板类型参数模板非类型参数模板的编译模板特例化完全特例化(全特化)部分特例化(偏特化)模板重载模板的基本概念什么是模板模板是C++支持参数化多态的工具,使用模板可以使用户为类或函数声明一种模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是C++的一种特性,允许函数或类通过泛型的形式表现或运行。模板可以使得函数或类在对应不同的型别的时候正常工作,而无需为每一份代码都写一份代码。模板是一种

2020-09-01 11:10:22 66

原创 数据结构复习题

文章目录顺序表单链表栈和队列顺序表题目:设顺序表 va 中的数据元素递增有序。试写一算法,将 x 插入到顺序表的适当位置上,以保持该表的有序性。//:单次插入排序void Fun(std::vector<int>& vec1,int val){ if(vec1.size()<1) { return ; } int len=vec1.size(); if(val>=vec1[len-1]) { vec1.push_back(val);

2020-08-15 16:23:16 118

原创 static在类中的应用

文章目录static修饰成员变量static修饰成员方法static修饰成员变量class Test{public: Test(int a,int b):ma(a)mb(b) {}private: int ma; int mb; static int mc;};int Test::mc=10;普通成员变量各对象独享,因此在构造函数的初始化列表中就可直接初始化;而加了static关键字的成员变量,不属于对象私有,属于整个类,也就是所有对象共享,所以必须要进行初始化,但是却不能由构

2020-08-06 00:39:11 117

原创 普通和常的调用(对象、方法)

普通方法可以调用常方法常方法不可以调用普通方法普通对象可以调用常方法常对象不可以调用普通方法,只能调用常方法。 常方法 void show() const {} const Test* const this指针 普通方法 void show() {} Test* const this指针只能权限缩小,不能增大,所以普通方法可以调用常方法,传递指针时就是典型的权限缩小(普通方法的Test* const传递给常方法的const Test* const)..

2020-08-06 00:12:37 217

原创 对象生存周期和系统优化

返回值与临时量#if 0/*返回值规则: 1.类类型 都是以临时量带回及原因 2.其他类型 字节数 <=4 由eax寄存器带回 >4 <=8 由eax 和edx 寄存器带回 >8 由临时量带回*/class Test{public: Test(int a=10):ma(a) { cout<<"Test::Test(int)"<<endl; }Test(cons

2020-08-05 23:03:57 71

原创 类中默认的六个函数

文章目录类中6个默认的函数构造函数初始化列表析构函数拷贝构造函数系统提供的默认拷贝构造函数形参必须用引用赋值运算符重载函数系统提供的默认函数形参const+引用取地址操作符的重载函数const修饰的取地址操作符重载函数类中6个默认的函数构造函数作用:初始化对象的内存空间class Test{public: Test() {} Test(char* str,int num) { name=new char[strlen(str)+1](); strcpy_s(name,strlen

2020-08-03 18:57:07 108

原创 类与对象基础

文章目录OOP面向对象思想封装的思想this指针和调用约定**this指针的使用****关于this指针的几个问题**调用约定不同调用约定不同规则OOP面向对象思想语言的设计目的是为了模拟现实。在现实世界中的东西被称为实体,实体包括属性+行为。例如笔,我们叫做笔,但是我们也可以叫做一、二或者其他,它的实质是什么,实质就是一个物体,至于名称只是附加的信息而已,所以实体就是一种不可描述的真实存在的东西。而为了使用语言和文字广泛概括性的描述这种真实存在的东西,我们就可以将之抽象成数据类型(ADT),这种

2020-08-03 16:53:39 77

原创 八种排序算法

文章目录冒泡排序选择排序插入排序希尔排序shell堆排序归并排序快速排序基数排序测试#include<ostream>using namespace std;#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<assert.h>#include<time.h>#include<math.h>#include<queue>

2020-08-03 00:52:25 78

原创 SQL基础

什么是SQL结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言包含6个部分:1、数据查询语言(DQL:Data Query Language)保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQ...

2020-02-25 16:32:09 103

原创 C++:智能指针

智能指针的引入void func(int* ptr){ auto_ptr<int>p(new int); if(ptr==NULL) { throw exception("ptr is null");//new 开辟了内存还没释放 抛出异常跳出了 就会产生内存泄露 //使用智能指针后 如果再对异常进行处理 就不会产生内存泄露 } *...

2020-02-23 19:41:50 143

原创 深入程序编译链接和装载过程

文章目录预编译编译汇编链接基础先知指令和数据分析二进制可重定位目标文件 main.o 的组成强符号和弱符号符号表链接过程分析运行提问:一个源文件是如何变成可执行文件的?在linux中,使用GCC来编译程序,我们逐步来分析:预编译gcc -E hello.c hello.i编译gcc -S hello.i -o hello.s汇编g...

2020-02-19 20:14:47 149

原创 C++:关键词

explicit禁止隐式转换(可加在构造函数中)volatile防止编译器优化mutable去常性,突破const的限制,被mutable修饰的变量,即使在const修饰的函数中也是可变的。...

2020-02-19 15:54:39 65

原创 设计模式:工厂模式

工厂模式工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。(生成对象,屏蔽对象生成的细节)用一个单独的类来做创造实例的过程,就是工厂。1.简单工厂模式定义与特点简单工厂模式是属于创建者模式,又叫做静态工...

2020-02-15 21:13:59 55

原创 C++:类型转换

C++四种类型转换const_cast去除常性 将常量指针转化为非常量指针举例 const int a =10;//int p=&a; 错误 不能从const int 转换为int*int* p=const_cast<int*>(&a);static_cast最常用的类型转换 安全性高reinterpret_cast作指针类型的转换dy...

2020-02-11 15:41:50 69

原创 虚拟内存管理(二)操作系统软件

文章目录操作系统软件读取策略请求式分页预约式分页放置策略替换策略帧锁定基本算法OPT策略LRU策略FIFO策略Clock时钟策略操作系统软件操作系统的内存管理设计取决于三个基本方面的选择:是否使用虚拟内存技术使用分页还是分段,或者是二者的结合为各种存储管理特征采用的算法前两者的选择取决于使用的硬件平台。早期的UNIX实现没有提供虚存,是因为该系统运行的处理器不支持分页或分段。除...

2020-02-09 16:12:39 255

原创 C++:多态和虚函数

文章目录多态虚函数什么是虚函数虚函数存在的必要性虚函数的设置条件和限制多态即同一接口,不同形态静多态(早绑定 静态绑定)(编译阶段确定函数的调用 函数重载 模板)动多态(晚绑定 动态绑定)(运行阶段确定函数的调用 虚函数机制)宏多态(预编译阶段确定函数的调用)不建议使用 高级宏:内联函数虚函数什么是虚函数即加了virtue关键字的函数虚函数存在...

2020-02-06 17:46:20 131

原创 C++:继承

文章目录文章目录继承什么是继承派生类继承方式公有继承-public私有继承-private保护继承-protected同名函数重载(overload)覆盖(override)隐藏(overhide)基类指针和派生类的相互指向或引用文章目录继承什么是继承面向对象编程的主要目的之一是代码复用。传统的C函数库通过预定义、预编译的函数(如strlen()和rand()),提供了可重用性。C++...

2020-02-05 16:59:35 290

原创 虚拟内存管理(一)硬件和控制结构

前言在8086/80186时还没有操作系统,把它称之为实地址模式。那么怎么将地址表示出来呢?比如:数据寄存器DS中的值是16位,要转换成20位的地址。怎么转换呢?所以左移四位后则低四位变为0了,然后再加上IP寄存器中的偏移值,就是物理地址。DS << 4 + IP (即偏移值)= 物理地址 没有操作系统则它的空间就称为物理空间(上图的空间)DS(基地址) IP(偏...

2020-01-20 17:12:09 231

原创 内存管理-----分页和分段

分页大小不等的固定分区和大小可变的动态分区在内存的使用上都是低效的,前者会产生内碎片,后者会产生外碎片。假如主存被划分成大小固定相等的块,且块相对比较小,每个进程也被分成同样大小的小块,那么进程中称为页(page)的块可以指定到内存中称为帧(frame)或页帧的可用块。在本节中,我们将会看到,在内存中为每个进程浪费的空间仅仅是进程最后一页的一小部分形成的内部碎片。没有任何外部碎片。图7.9...

2020-01-19 20:29:22 215

原创 内存管理-----操作系统组成及内存分区

操作系统对内存的管理操作系统的组成CPU ( 中央处理器): 运算器 控制器 高级缓存(cache)内存 : 存储器I/O :磁盘 输出设备 输入设备而三者是通过总线将其串联起来。总线:数据(传递数据)、地址(寻址)、控制(0/1控制数据流向)为了屏蔽底层I/O的差异,操作系统通过 VFS(虚拟文件系统)来统一管理为了屏蔽内存与I/O(VFS)的区别,作为资源分配的...

2020-01-19 14:28:53 218

空空如也

空空如也

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

TA关注的人

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