C++
Hash table
这个作者很懒,什么都没留下…
展开
-
《项目》-博客系统
主页管理页面编辑页面添加博客图片库原创 2020-08-13 16:33:33 · 231 阅读 · 0 评论 -
《数据结构》-归并排序
#include<iostream>using namespace std;int a[] = { 1, 0, 3, 4, 6, 5, 7, 2 };int tmp[8];// 归并排序(C-递归版)//void merge_sort_recursive(int arr[], int reg[], int start, int end) {// if (start >= end)// return;// int len = end - start, mid = (len原创 2020-08-01 17:37:49 · 154 阅读 · 0 评论 -
《C++》-智能指针
一、 为什么需要智能指针?malloc出来的空间,没有进行释放,存在内存泄漏的问题。异常安全问题。如果在malloc和free之间如果存在抛异常,那么还是有内存泄漏。这种问题就叫异常安全。二、内存泄漏2.1 什么是内存泄漏,内存泄漏的危害什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不 是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而 造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影原创 2020-07-31 00:00:02 · 196 阅读 · 0 评论 -
《http和https》-两者的区别
http协议与https协议的区别?1、https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。4、http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。https协议的工作原理?我原创 2020-07-28 17:56:44 · 203 阅读 · 0 评论 -
《TCP》-TCP为什么可靠
事务隔离级别当我们有多个客户端同时操作数据库的某张表,如何进行隔离操作?MySQL提供了隔离级别。当MySQL表被多个线程或者客户端开启各自事务操作数据库中的数据时,MySQL提供了一种机制,可以让不同的 事务在操作数据时,具有隔离性。从而保证数据的一致性。无隔离性的问题脏读是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务 也访问这个数据,然后使用了这个数据。案例:1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(但未原创 2020-07-20 17:04:20 · 254 阅读 · 0 评论 -
《Mysql》-表的约束
表的约束真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。1、空属性两个值:null(默认的)和not null(不为空)数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证原创 2020-07-11 08:55:41 · 192 阅读 · 0 评论 -
《协议》HTTP协议
虽然我们说, 应用层协议是我们程序猿自己定的.但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。认识URL平时我们俗称的 “网址” 其实就是说的 URLurlencode和urldecode像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义.转义的规则如下:将需要转码的字符转为16进制,然后从右到左,原创 2020-07-01 16:42:44 · 322 阅读 · 0 评论 -
《解析网络版计算器》
例如, 我们需要实现一个服务器版的加法器. 我们需要客户端把要计算的两个加数发过去, 然后由服务器进行计算, 最后再把结果返回给客户端.约定方案一:客户端发送一个形如"1+1"的字符串; 这个字符串中有两个操作数, 都是整形;两个数字之间会有一个字符是运算符, 运算符只能是 + ;数字和运算符之间没有空格;约定方案二:定义结构体来表示我们需要交互的信息;发送数据时将这个结构体按照一个规则转换成字符串, 接收到数据的时候再按照相同的规则把字符串转化回结构体;这个过程叫做 “序列化” 和 “反原创 2020-07-01 16:35:21 · 216 阅读 · 0 评论 -
《继承与多态》-继承
C++中的继承**1.继承的概念及定义2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数1.继承的概念及定义1.1继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。class Person{public: void Pri原创 2020-05-28 14:44:02 · 232 阅读 · 0 评论 -
《Linux》-进程间通信
进程间通信进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。进程间通信发展管道System V进程间通信POSIX进程间通信进程间通信分类1.管道 1.1匿名管道pipe 1原创 2020-05-27 16:03:50 · 181 阅读 · 0 评论 -
《内存管理》-内存
内存管理1. C/C++内存分布我们先来看下面的一段代码和相关问题int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(siz原创 2020-05-27 15:29:26 · 279 阅读 · 0 评论 -
《Linux》-线程控制
Linux线程控制POSIX线程库与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的要使用这些函数库,要通过引入头文<pthread.h>链接这些线程函数库时要使用编译器命令==“-lpthread”==选项创建线程功能:创建一个新的线程原型 int pthread_create(pthread_t *thread, const p...原创 2020-04-02 23:19:05 · 126 阅读 · 0 评论 -
《问题积累》-在线OJ
积累在Nowcoder中经常遇到多次调用函数,导致不通过,开始给我整蒙了都。百思不得其解,一度于怀疑自己是不是入错行了。在主函数里面,他会输入好几组数据,你需要循环来处理每一组数据,而不是只处理完第一次数据就return。#include <iostream>using namespace std;int main() { int a,b; while(sca...原创 2020-03-24 23:53:33 · 219 阅读 · 0 评论 -
《类和对象》-析构函数
析构函数概念前面通过构造函数的学习,我们知道一个对象时怎么来的,那一个对象又是怎么没呢的?析构函数:与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成类的一些资源清理工作。特性析构函数是特殊的成员函数。其特征如下:析构函数名是在类名前加上字符 ~。无参数无返回值。一个类有且只有一个析构函数。若未显式定义,系...原创 2020-03-19 22:10:55 · 189 阅读 · 0 评论 -
《类与对象》-类的默认成员函数-构造函数
类的六个默认成员函数六个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。class Date {};1.构造函数2.1 概念对于以下的日期类:class Date {};{ public: void SetDate(int year, int month, int day...原创 2020-03-19 22:05:35 · 254 阅读 · 0 评论 -
《C++》-内联函数
概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。查看方式:在release模式下,查看编译器生成的汇编代码中是否存在call Add在debug模式下,需要对编译器进行设置,否则不会展开特...原创 2020-03-16 15:05:52 · 139 阅读 · 0 评论 -
《C++》-引用
引用引用概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。类型& 引用变量名(对象名) = 引用实体void TestRef(){ int a = 10; int& ra = a;//<====定义引用类型 printf("%p\n", &a); printf("%...原创 2020-03-16 14:51:15 · 124 阅读 · 0 评论 -
《C++》-函数重载
自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!原创 2020-03-16 14:37:53 · 203 阅读 · 0 评论 -
《C++》-缺省参数
缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实 参则采用该 默认值,否则使用指定的实参。缺省参数分类1.全缺省参数void TestFunc(int a = 10, int b = 20, int c = 30) { cout<<"a = "<<a<<endl; cout<<"...原创 2020-03-16 14:19:24 · 146 阅读 · 0 评论