- 博客(30)
- 收藏
- 关注
原创 秋招C++开发学习之路day31
sql的四种连接查询内连接inner join 或者 join外连接1.左连接left join 或者 left outer join2.右连接 right jion 或者 right outer join3.完全外连接 full join 或者 full outer join建立新的数据库:create database testjoin;创建两个表:person表:id...
2019-09-25 11:01:17
160
原创 秋招C++开发学习之路day30
数据库的三大设计范式第一范式1NF数据表中的所有字段都是不可分割的原子值。范式,设计的越详细,对于某些实际操作可能更好,但是也不一定都是好的,所以根据实际的情况来设计。如:中国四川省成都市高新区2008号 与 中国 成都市 高新区 2008号设计数据表的时候,可以继续拆分就不满足第一范式,拆分到不能拆分时才满足第一范式。第二范式必须是满足第一范式的前提下...
2019-09-25 11:00:36
108
原创 秋招C++开发学习之路day29
day1mysqlexit;退出数据库use xxx;选定某个数据库create database test;创建数据库show databases;展示数据库先用use xx 选定数据库,再用 show tables;展示选定的数据库创建数据表mysql> CREATE TABLE pet(-> name VARCHAR(20),-> owner VARC...
2019-09-25 10:58:24
163
原创 秋招C++开发学习之路day27
day32字符存储汉字一个字符是一个字节,一个汉字是两个字节。所以单纯的一个字符存储是会截断的!用字符数组,或者字符指针可以存储多个汉字!即汉字字符串!浅拷贝和深拷贝编译系统在我们自己没有自定义拷贝构造函数时,会在拷贝对象时候调用默认拷贝构造函数,进行浅拷贝,即对指针name拷贝后出现两个指针指向同一个内存块。所以析构时候就析构了两次,导致内存泄漏。所以在对“含有指针成员的对象”进行...
2019-09-25 10:57:11
83
原创 秋招C++开发学习之路day26
day31const关键字修饰普通变量,表示该变量不能被再一次赋值。修饰指针 有两个情况:一是在最前面表示指针所指的值不能变,二是在指针前面则表示指针本身不能被修改。修饰成员函数时:是为了防止成员函数修改被调用对象的值。const的成员函数不能调用非const函数,因为非const成员函数可以修改成员变量的值地址栏输入url到页面呈现整个过程(url就是俗称网址)地址栏输入ur...
2019-09-25 10:56:45
105
原创 秋招C++开发学习之路day25
day30http1.x的缺陷,实现简单是以牺牲性能为代价的a. 客户端需要使用多个连接才能实现并发和缩短延迟。b. 不会压缩请求和响应首部,从而导致不必要的网络流量。c. 不支持有效的资源优先级,致使底层TCP连接的利用率下降。http1.1的新特性默认是长连接、支持流水线、支持同时打开多个tcp连接、支持虚拟机、新增状态码100、支持分块传输编码、新增缓存处理指令max-a...
2019-09-25 10:56:06
184
原创 秋招C++开发学习之路day24
day28(阻塞与非阻塞、IO模型、同步与阻塞、异步与非阻塞、atoi、assert、字符拼接等)阻塞与非阻塞阻塞:阻塞的系统是指,当进行系统调用的时候,除非出错(被信号打断也视为出错),进程将会一直陷入内核态直到调用完成。非阻塞:非阻塞的系统调用是指无论I/O操作成功与否,调用都会立即返回。在linux环境下,所有的I/O系统调用都是阻塞的,我们可以给socket系统调用的第二个参数S...
2019-09-25 10:55:31
184
原创 秋招C++开发学习之路day23
day27(大数相乘、哈夫曼树、linux启动过程、B树、B+树。内存拷贝、TCP怎么保证可靠性、面向对象)大数相乘:模拟乘法运算的过程。约瑟夫环哈夫曼树,我们称判定过程最优二叉树为 哈夫曼树。3. linux启动过程主要分为5个阶段:内核的引导、运行init、系统初始化、建立终端、用户登录系统4. B树,是一种平衡的的多路查找树,节点最大的孩子数目称为B树的阶。一个m...
2019-09-19 09:57:30
103
原创 秋招C++开发学习之路day22
day26(继承、为什么三次握手、TCP/UDP区别、socket基本操作)简单介绍一下继承:继承就是利用已有的数据类型来定义新的数据类型,所定义的新的类型不仅拥有新定义的成员,同时还拥有旧的成员。一个基类派生的继承是单继承,从多个基类派生的继承称为多继承。三种继承方式,私有的继承,成员都变作私有的,保护继承都变成保护的,公有继承不变。但是三种方式的私有成员都不被派生类继承,即在派生类里...
2019-09-19 09:56:29
125
原创 秋招C++开发学习之路day21
day24(设计模式)设计模式面向对象最基本的设计原则有5条:单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则和Liskov替换原则。常见的设计模式单例模式:单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实现实例化并向整个系统提供这个实例。单例模式有三个要素,一是某个类只能有一个实例;二是他必须自行创建这个实例;三是它必须...
2019-09-19 09:55:24
94
原创 秋招C++开发学习之路day20
day23(排序、哈希冲突)快速排序,时间复杂度O(nlogn)堆排序找第K大的数,O(n+klogn)哈希表统计出现的次数,然后从大到小现行扫描。各种排序的时间复杂度插入排序,初始有序数组元素为1,从第二个元素开始。对于一次插入,从后往前遍历,当前元素大于插入元素,则往前移动,当前元素小于或者等于插入元素时,就把元素插入到当前元素的下一位。希尔排序:将序列分成若干子序列,分别进行排...
2019-09-19 09:54:50
120
原创 秋招C++开发学习之路day19
day 22(mysql隔离、redis定时机制、红黑树、select、poll、epoll多路IO复用、epoll优点、epoll实现、堆、栈、描述符、优先级队列)Mysql主要包含四种隔离状态,事务隔离级别:读取未提交、不可重复读、可重复读、串行化。内存管理机制上:redis数据全部存在内存,定期写入磁盘,当内存不够的时候,可以选择指定的LRU算法产出数据。MongoDB数据在内存,由l...
2019-09-19 09:54:19
97
原创 秋招C++开发学习之路day18
day21(数据库操作)group by子句根据一个或者多个属性的值来对元组进行分组,值相等的为一组。对查询的结果分组目的是细化聚集函数的作用对象,分组后聚集函数的作用讲作用于每个组。如:查询Student表中具有相同年龄的每个组得人数。select Sage,count() from Student group by Sage;分组后还要求筛选的话,就用HAVING短语指定筛选条件,H...
2019-09-19 09:53:46
91
原创 秋招C++开发学习之路day17
day20(MAC地址、数据库、关系模型、事务、索引、视图、SQL添查改删)MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。而IP地址是IP协议提供的一种统一的地址格式,为互联网上每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。DNS服务是基于UDP的一旦拥塞窗口>慢开始门限,就采用拥塞避免算法,以减慢增长速度。一旦出现丢包的情况,就...
2019-09-19 09:53:15
93
原创 秋招C++开发学习之路day16
day19(三报文握手、四次挥手,TIME-WAIT)三报文握手a、Client(客户)将首部中的同步位SYN=1,同时选择一个初始序列号seq=x。将该数据报发送给server(服务器),客户进入SYN-SENT(同步已发送)状态。b、服务器收到数据报后由标志位SYN=1知道客服请求建立连接。需要发送确认报文段,其中把SYN和ACK位都置1,确认号是ack=x+1,同时随机选择一个序列号...
2019-09-19 09:52:39
73
原创 秋招C++开发学习之路day15
day18(static。virual、大端存储、用户态内核态、内存溢出、线程模型)类中的static、virtualstatic修饰成员变量,对于非静态成员变量,每个对象都有自己的拷贝,而静态成员变量不管定义多少个对象,都只有一个拷贝,为该类型的所有对象共享。static修饰成员函数,静态成员函数不与任何对象相联系,因此不具有this指针,无法访问属于类对象的非静态数据成员,也无法访问非...
2019-09-19 09:52:06
85
原创 秋招C++开发学习之路day14
day17(线程产生、线程锁、线程同步、死锁条件和解决死锁、互斥锁)线程产生的原因,进程可以使多个程序并发的执行,提高系统的资源利用率和吞吐量,但是有些缺点:进程同一个时间只能干一件事,执行过程中如果有阻塞,整个进程就会挂起。线程作为并发执行的基本单位,减少程序在并发执行时的时空开销,提高了并发性。启动一个新的进程,必须分配新的独立的地址空间,建立很多的数据表。切换效率上线程也要快的多,因...
2019-09-19 09:51:12
82
原创 秋招C++开发学习之路day13
day16(linux虚拟地址空间、请求分页、分段、段页式、虚拟内存好处、缺页中断、fork与vfork、写时复制、页表地址)Linux虚拟地址空间为了防止不同进程在同一时间在物理内存中运行而产生的物理内存争夺,采用了虚拟内存。虚拟内存技术使得不同进程运行时,看到的是自己独自占有当前系统的4G资源。所有进程共享一个物理内存,每个进程只需要把需要的虚拟内存映射并存储到物理内存上。每个进...
2019-09-17 09:23:05
105
原创 秋招C++开发学习之路day12
day15(内存泄漏、段错误、malloc与new、API、reacter、单线程高并发、进程通信、线程通信)内存泄漏通常是由new/malloc申请内存后,缺少对应的delete/free。判断内存是否泄漏,一方面使用linux环境下的内存泄漏检查工具Valgrind另一方面可以添加内存申请和释放的统计功能,统计当前内存申请和释放是否一致,判断内存是否泄漏。段错误是发生在访问非法内存地...
2019-09-17 09:22:29
106
原创 秋招C++开发学习之路day11
day14(map set、STL组成、迭代器、epoll、继承、右值引用、include<>""区别、malloc、内存管理)map和set都是根据键值排序的,所以键值不能被修改。set只有键值和元素合一,所以不允许修改元素。STL的allocaotr,就是分配器。用于封装STL容器在内存管理上的底层细节。为了精密分工,分配器把new和delete两个阶段操作区分开来。为了...
2019-09-17 09:21:54
167
原创 秋招C++开发学习之路day10
day12(fork、引入线程后变化(资源、调度等)、进程线程通信方式、调度算法、死锁产生条件)forward_list 单向链表,deque双端队列,fork()产生一个新的进程。线程不能跨机器迁移。 同一进程下的线程共享地址空间。data section存放全局变量,可以被同一进程下的线程共享。(1)调度上。传统操作系统上,拥有资源和独立调度的基本单位都是进程。引入线程后,线程是...
2019-09-17 09:20:44
119
原创 秋招C++开发学习之路day9
day11(停止等待、超时重传、流水线传输、窗口、拥塞控制、三报文握手)IP层提供的是最大努力服务,所以TCP下面的网络是不可靠的传输,所以要使用一些协议来使两个运输层的通信变得可靠。停止等待协议,超时重传。每次发送完一个分组就 设置一个超时计时器,如果收到对方的确认,就撤销已设置的超时计时器。流水线传输,相比于停止等待协议提高了信道的利用率,可以连续的发送分组。使用流水线传输就需要 ...
2019-09-17 09:20:11
117
原创 秋招C++开发学习之路day8
day11(运输层、网络层、TCP/UDP)只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时只用到下三层:物理层,数据链路层,网络层。真正通信的实体是主机中的 进程。主机通信就是两个主机中的应用进程互相通信。运输层一个主要的功能就是:复用和分用。网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信。运输的两种协议:面向连接的TCP协议,面向无连接的U...
2019-09-17 09:19:36
105
原创 秋招C++开发学习之路day7
day9(分值算法、三种IP、ABR、IP数据报、数据报生命周期、首部、默认路由、ICMP)分治算法,将问题划分为一些独立的子问题,递归的求解子问题,然后合并这些子问题的解得到原问题的解。而动态规划分解得到的子问题通常不是相互独立的。主要是把得到的子问题的解保存下来,在需要的时候再找出来,这样可以避免大量的重复计算。网络层提供两种服务,一个是虚电路服务,一个是数据报服务。互联网可以由多种...
2019-09-17 09:19:05
124
原创 秋招C++开发学习之路day6
day7(并行传输、信噪比、信道频带、香农、时分复用、波分复用)数据在计算机内部多采用并行传输,而数据在通信线路(传输媒体)上的传输方式一般都是串行传输,即这个比特按时间顺序传输。任何信道,码元 传送的速率都是有限的,超过则会出现严重的码间串扰,使接收端完全无法识别。信道的频带越宽,能够通过的高频分量就越多,就可以更高速率传输码元且不出现码间串扰。信噪比,信号的平均功率和噪声的平均功率之...
2019-09-17 09:18:27
144
原创 秋招C++开发学习之路day5
day5(进程、线程、并行、并发、包、IP协议)for的新用法,for(定义一个变量:对象){ 语句};变量类型要与对象一致,可以直接用auto自动匹配。进程,一个进程就是对一个正在运行的程序的抽象。在一个系统上可以运行多个进程,而且每个进程就像在独立的使用硬件。并发进程就是说一个进程的指令和另一个进程的指令交错执行的。一般的系统需要运行的进程数都大于CPU的个数。一个进程到另一个进程的...
2019-09-17 09:12:26
119
原创 秋招C++开发学习之路day4
day4(map、迭代器、set、TCP、TCP头部)map,其内部的数据都是有序的,默认排序是按照key的大小进行的排序。使用例子:Map<int, string> mapStudent; 一一对应的key-value。key可以任意类型,但是必须支持<操作符。根据key可以快速查找,复杂度为logN。map的头文件, #include map<int, s...
2019-09-17 09:11:49
124
原创 秋招C++开发学习之路day3
day3(list、string、str.copy、vector、reserve、resize、static、数组和指针区别)0. list是双向链表实现的,所以也是一段不连续的内存存储。string类的底层是一个字符串指针。对字符串的操作和字符数组的操作是不一样的。C++字符串转换成C字符数组,常用的data()、c_str()、copy();最好不用C指针来存放转换,如:const...
2019-09-17 09:10:55
104
原创 秋招C++开发学习之路day2
day2(类模板、构造函数和析构函数制成顺序、继承、虚函数、纯虚函数、多态)类模板,同样的类只是类型不同就可以使用一个模板来定义类,然后调用时加入类型在类的声明之前加入 template<class 虚拟类型参数〉,类里面类型都用虚拟类型参数代替。然后定义对象的时候两种:类名<类型名>对象名(实例列表);列表也可以没有,另外初化。当成员函数在类模板外定义的时候,tem...
2019-09-17 09:10:08
93
原创 秋招C++开发学习之路day1
day1(共用体union,枚举enum,字节占用,this指针、宏定义、条件编译、累的封装、构造函数、析构函数、this指针、静态成员、对象所占内存)共用体定义union 名称{数据类型 成员名;数据类型 成员名;}变量名;一个共用体内可以定义多个数据类型,这些数据共享一段内存。在不同的时间里保存不同的数据类型和长度的变量,以节省空间。但是同一时间只能存储其中一个成员变量的...
2019-09-17 09:09:00
167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人