
计算机系统
文章平均质量分 70
emmmzhang
这个作者很懒,什么都没留下…
展开
-
Xshell中vim编辑时,数字小键盘不能用的解决办法
问题:后台开发人员经常使用Xshell来访问远程服务器,在用vim(或vi)编辑文件的时,使用小键盘数字键的时候,可能会输入一堆字母和换行,并不是数字。修改:1.修改会话属性2.选择类别“终端”-VT模式3.选择“初始数字键盘模式”为“设置为普通”。确定即可。...原创 2018-10-30 15:23:14 · 10333 阅读 · 10 评论 -
I/O多路复用的select、poll,以及epoll的区别
问题提出在Linux2.6中,加入了新的api:epoll,对比以前使用select和poll,epoll的增加使得性能大大提升,这是如何实现的?epoll的工作模式有哪几种?其内部原理是什么?相关文件描述符:索引值,指向记录表,当程序打开或者创建一个文件时,内核向进程返回一个文件描述符。在网络编程中,很多函数是阻塞的,利用IO复用可以用非阻塞的形式来执行代码。同时处理读写、监听多端口等...原创 2018-12-03 20:12:38 · 337 阅读 · 0 评论 -
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 · 6510 阅读 · 4 评论 -
面试知识点总结(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 · 674 阅读 · 0 评论 -
面试知识点——数据库
1. SQL事务事务概念事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。eg:订票、银行、保险公司以及证券交易系统等。事务属性1.事务4大属性:原子性(Atomicity):事务是...转载 2018-11-26 23:16:02 · 158 阅读 · 0 评论 -
C++多线程的原子操作、线程阻塞
头文件#include <Thread>及原子操作在C++11中,<Thread>头文件包含了Thread类,提供线程的管理。原子操作:不可被中断的一个或者一系列操作,这些操作要一次性执行完毕,或者一个都不执行。多线程存在的问题在多线程中,由于进程的多个线程都是共享该进程的所有资源,那么如果有多个线程访问同一个资源时,可能会出现问题。如果多个线程都是只读操作,...原创 2018-11-29 21:55:59 · 8752 阅读 · 1 评论 -
线程安全、C++多线程的管理(detach、join、get_id)
线程安全线程安全函数:当一个函数被多个并发线程反复调用的时候,它的结果始终是正确的一般线程不安全的情况,是由于同一个进程的不同线程共享进程内存空间中的全局/静态存储区和堆,如果一个函数中包含全局变量和静态变量,那么可能会线程不安全,导致程序错误。但是如果对全局变量和静态变量的操作只有读,没有修改的话,也可以将这个函数看做是线程安全的。C++多线程(C++11)多线程demoC++11的...原创 2018-11-29 18:06:28 · 3809 阅读 · 1 评论 -
指针、指针常量、常量指针的概念和区分
在学习指针的时候,经常会遇到指针常量、常量指针这两个概念。指针常量: 就是说指针自己是常量,指针本身的地址不能变,但是指针指向地址的值可以变常量指针: 指针指向地址的值,是常量不能修改。但是指针本身可以修改,可以让指针指向其他地址。这两个概念比较绕,下面通过代码对他们进行区分。指针:#include &amp;lt;iostream&amp;gt;using namespace std;int ma...原创 2018-11-20 12:33:24 · 215 阅读 · 0 评论 -
Unix/Linux的用户态与内核态
一、Unix/Linux的体系架构 Linux操作系统的体系架构分为用户态和内核态。 内核:本质是一种软件,控制计算机的硬件资源,并提供给上层应用程序运行的环境。 用户态:上层应用程序的活动空间。为了是上层应用能访问CPI资源、存储资源、I/O资源等,内核必须为上层应用提供访问的接口:系统调用。 系统调用:是OS的最小功能单位,库函数通过对系统调用的封装,将简单的业务逻辑呈现给上层...原创 2018-11-17 19:20:46 · 903 阅读 · 0 评论 -
C++基类的虚析构函数(virtual)与内存泄露
一、C++ 内存泄露C++本身没有GC机制,所以需要开发人员做好内存管理。一般情况,C++内存泄露主要原因为:1. 在构造和析构函数中,没有匹配new和delete;2. 没有将基类的析构函数定义为virtual(如果没有定义virtual的话,析构函数只清理自己的成员)二、虚析构函数的作用下面根据三个场景来说明基类中virtual虚析构函数的作用1. 派生类指针指向派生类对象...原创 2018-11-22 17:23:39 · 1027 阅读 · 0 评论 -
多维数组中下标的含义
多维数组一、多维数组定义 数组名,代表数组的第一个元素存放的地址,对于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 · 5356 阅读 · 1 评论 -
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 · 52876 阅读 · 1 评论 -
vector的reserve的使用(避免内存重新分配以及内存分配的方式)
文章目录vector的reserve的作用Demo:对比使用reserve的区别Demo运行结果分析新的疑问:大于capacity指定之后的动态分配重新分配空间后内存地址的变化vector的reserve的作用之前提到vector中不断的push_back,会进行内存的重新自动分配的问题(详见:https://blog.youkuaiyun.com/hl_zzl/article/details/847...原创 2018-12-10 18:40:43 · 52969 阅读 · 6 评论