- 博客(24)
- 收藏
- 关注
原创 vector的reserve的使用(避免内存重新分配以及内存分配的方式)
文章目录vector的reserve的作用Demo:对比使用reserve的区别Demo运行结果分析新的疑问:大于capacity指定之后的动态分配重新分配空间后内存地址的变化vector的reserve的作用之前提到vector中不断的push_back,会进行内存的重新自动分配的问题(详见:https://blog.csdn.net/hl_zzl/article/details/847...
2018-12-10 18:40:43
49417
6
原创 vector中push_back后iterator失效程序崩溃的原因
vector的push_back操作在c++ reference中,对push_back的描述如下:void push_back(const value_type&val);void push_back(value_type && val);Add element at the endAdds a new element at the end of the vector...
2018-12-04 21:05:58
6202
4
原创 I/O多路复用的select、poll,以及epoll的区别
问题提出在Linux2.6中,加入了新的api:epoll,对比以前使用select和poll,epoll的增加使得性能大大提升,这是如何实现的?epoll的工作模式有哪几种?其内部原理是什么?相关文件描述符:索引值,指向记录表,当程序打开或者创建一个文件时,内核向进程返回一个文件描述符。在网络编程中,很多函数是阻塞的,利用IO复用可以用非阻塞的形式来执行代码。同时处理读写、监听多端口等...
2018-12-03 20:12:38
301
转载 CDN的关键技术(内容路由、内容分发、内容存储、内容管理)
CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等。随着宽带网络和宽带流媒体应用的兴起,CDN(通常被称为内容分发网络Content distribution network,有时也被称作内容传递网络Contentdeliverynetwork)作为一种提高网络内容,特别是提高流媒体内容传输的服务质量、 节省骨干网络带宽的技术,在国内外得到越来越广泛的应用。一、内...
2018-12-03 17:48:00
2905
原创 C++多线程的原子操作、线程阻塞
头文件#include <Thread>及原子操作在C++11中,<Thread>头文件包含了Thread类,提供线程的管理。原子操作:不可被中断的一个或者一系列操作,这些操作要一次性执行完毕,或者一个都不执行。多线程存在的问题在多线程中,由于进程的多个线程都是共享该进程的所有资源,那么如果有多个线程访问同一个资源时,可能会出现问题。如果多个线程都是只读操作,...
2018-11-29 21:55:59
8628
1
原创 线程安全、C++多线程的管理(detach、join、get_id)
线程安全线程安全函数:当一个函数被多个并发线程反复调用的时候,它的结果始终是正确的一般线程不安全的情况,是由于同一个进程的不同线程共享进程内存空间中的全局/静态存储区和堆,如果一个函数中包含全局变量和静态变量,那么可能会线程不安全,导致程序错误。但是如果对全局变量和静态变量的操作只有读,没有修改的话,也可以将这个函数看做是线程安全的。C++多线程(C++11)多线程demoC++11的...
2018-11-29 18:06:28
3729
1
原创 如何获取vector的一个迭代器iterator的地址
在使用vector时,使用*iterator可以读出迭代器指向vector中的值,那如果想读出iterator的地址,该怎么表示呢?思考对于常规的指针而言,可以用int *ptr来表示一个指向整型变量的指针,*ptr即指向整型变量的值,ptr即地址代码如下#include <iostream>using namespace std;int main(){ int i =...
2018-11-27 23:56:23
10171
原创 vector中使用erase操作删除迭代器的问题(避免野指针)以及end的地址变化
在vector中,使用erase来剔除对应的元素,但是使用iterator的时候需要注意不要让iterator变成野指针vector的erase在C++ Reference 中,对erase的说明如下:vector::erase - C++ Reference http://www.cplusplus.com/reference/vector/vector/erase///c++98i...
2018-11-27 17:48:32
11264
6
原创 面试知识点总结(Part 2:数据库、网络、操作系统、Nginx)
本文涉及:数据库:范式、索引、MySQL主备网络:TCP/IP(三次握手、滑动窗口)、流量控制和拥塞控制、网络层次结构、http状态码、局域网通信原理、http和https、http1.0和http1.1、浏览器访问页面的整个过程操作系统:线程和进程、进程通信、进程状态转化、银行家算法、死锁,Linux命令(cd、ls、top、ps、netstat -anp、lsof -i、grep、ca...
2018-11-26 23:41:33
602
转载 面试知识点——数据库
1. SQL事务事务概念事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。eg:订票、银行、保险公司以及证券交易系统等。事务属性1.事务4大属性:原子性(Atomicity):事务是...
2018-11-26 23:16:02
135
原创 面试知识点总结(Part 1)
总结一下自己之前面试的时候准备的和问到的知识点。写的比较浅,还需要自己深入展开1.自我介绍专业及研究方向、小论文,项目经验2.排序算法的原理常见的排序算法主要是冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序稳定性:如果a在b之前,且a=b,排序之后a仍然在b之前。称为稳定。冒泡排序(稳定)前后两个相邻的元素对比和调整位置,小上大下,时间复杂度:最好O(n),当...
2018-11-26 23:14:06
181
原创 C++基类的虚析构函数(virtual)与内存泄露
一、C++ 内存泄露C++本身没有GC机制,所以需要开发人员做好内存管理。一般情况,C++内存泄露主要原因为:1. 在构造和析构函数中,没有匹配new和delete;2. 没有将基类的析构函数定义为virtual(如果没有定义virtual的话,析构函数只清理自己的成员)二、虚析构函数的作用下面根据三个场景来说明基类中virtual虚析构函数的作用1. 派生类指针指向派生类对象...
2018-11-22 17:23:39
897
原创 C++ Primer(第五版) 第三章Chap.3 课后代码题 答案
C++ Primer (第五版)》最近在补基础,在看《C++ Primer (第五版)》,先把 第三章Chap.3 自己写的代码题发上来。。不定期更新3.4#include &lt;iostream&gt; #include &lt;string&gt;using namespace std;int main(){ string str1, str2; cin &gt;&gt;
2018-11-21 20:00:57
187
原创 多维数组中下标的含义
多维数组一、多维数组定义 数组名,代表数组的第一个元素存放的地址,对于int arr[10]; 来说,arr即指向arr[0]地址。定义一个多维数组: int matrix[3][4] = {0,1,2,3, 4,5,6,7, 8,9,10,11}; 数组的元素是顺序存储的。把这个二维数组理解为矩阵的话,matrix即3行4列的矩阵。(矩阵的概念只是更好的理解二维数组,数据在内存中...
2018-11-20 17:15:42
5266
1
原创 指针、指针常量、常量指针的概念和区分
在学习指针的时候,经常会遇到指针常量、常量指针这两个概念。指针常量: 就是说指针自己是常量,指针本身的地址不能变,但是指针指向地址的值可以变常量指针: 指针指向地址的值,是常量不能修改。但是指针本身可以修改,可以让指针指向其他地址。这两个概念比较绕,下面通过代码对他们进行区分。指针:#include &amp;lt;iostream&amp;gt;using namespace std;int ma...
2018-11-20 12:33:24
181
原创 Unix/Linux的用户态与内核态
一、Unix/Linux的体系架构 Linux操作系统的体系架构分为用户态和内核态。 内核:本质是一种软件,控制计算机的硬件资源,并提供给上层应用程序运行的环境。 用户态:上层应用程序的活动空间。为了是上层应用能访问CPI资源、存储资源、I/O资源等,内核必须为上层应用提供访问的接口:系统调用。 系统调用:是OS的最小功能单位,库函数通过对系统调用的封装,将简单的业务逻辑呈现给上层...
2018-11-17 19:20:46
844
原创 C++中 string作为参数的传递(string类型的引用 )
C++ string作为参数的传递(string类型的引用 )在传递参数的时候,如果参数是string类型,可以用string类型的引用,减少内存的拷贝。例如:void func(const string& para){}int main(int agrc, char **argv){ //... string str = "test"; func(test); //......
2018-11-05 12:46:25
51379
1
原创 Xshell中vim编辑时,数字小键盘不能用的解决办法
问题:后台开发人员经常使用Xshell来访问远程服务器,在用vim(或vi)编辑文件的时,使用小键盘数字键的时候,可能会输入一堆字母和换行,并不是数字。修改:1.修改会话属性2.选择类别“终端”-VT模式3.选择“初始数字键盘模式”为“设置为普通”。确定即可。...
2018-10-30 15:23:14
10008
10
原创 用uint64来表示IP+Port
uint64_t这是uint64在<stdint.h>(/usr/include/stdint.h)中的定义/* Unsigned. */typedef unsigned char uint8_t;typedef unsigned short int uint16_t;#ifndef __uint32_t_definedtypedef uns...
2018-10-25 17:32:17
681
原创 C++ —— 封装(1)
(部分内容来自慕课网)类和对象根据不同的目的抽象不同的信息封装:选择性暴露 访问限定符:public、protected、private对象实例化从栈中实例化(自动回收)从堆中实例化(需要手动将申请的内存释放)对象的访问栈中使用栈中使用new申请一个对象,使用完之后需要delete,并指向NULLDemo定义了一个类,通过栈和堆两种不同的方式对类的对象进行实例化...
2018-10-22 01:14:14
155
原创 C++杂记。。(引用、const、函数特性、内存管理)
引用指针类型的引用类型 *&指针引用名 = 指针;结构体的引用函数参数引用constint const *p = NULL;const int *p = NULL; //和上一句等价int x = 3;const int *p = &x; //此时不能通过*p修改x的值(可以用p = &y)int x = 3;int *const p =...
2018-10-21 21:54:00
181
原创 C++标准库类型
标准库string类型string s;cin >> s; //读取并忽略开头所有的空白字符(空格、制表符、换行符等)。读取字符直至再次遇到空白字符,读取终止。string::size_type类型,从逻辑上讲,size()成员函数似乎应该返回整型数值,但事实上,size操作返回的是string::size_type类型的值。任何存储string的size操作结果的变量必须为s...
2018-10-18 23:08:14
608
原创 C++变量和基本类型
基本内置类型通常将8位的块作为一个字节,32位或者4个字节作为一个“字”(word)。1 字 = 4字节 = 32位 = 4 * 8位一般的,short类型为半个机器字(word)长,int类型为一个机器字长,long类型为一个或者两个机器字长(在32位机器中,int和long类型字长相同)unsigned型取值:0~255signed型取值:-128~127 表示signed类型最常见...
2018-10-18 23:03:12
222
原创 C++快速入门
C++快速入门a + b = c一个非常简单的demo#include &lt;iostream&gt;int main(int agrc, char* argv[]){ std::cout&lt;&lt; "Enter two numbers: "&lt;&lt; std::endl; int v1, v2; std::cin &
2018-10-18 21:33:16
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人