排序:
默认
按更新时间
按访问量

shell基础知识

shell基础知识        脚本语言:脚本是短小的、用来让计算机完成一系列工作的程序,这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。   &am...

2018-02-08 19:40:16

阅读数:115

评论数:0

C++面试题(~10)

C++中忘记用delete释放内存,如何防止内存溢出 使用智能指针 使用RAII方法 Kill -9 pid 直接杀死进程。。。

2017-09-18 16:20:17

阅读数:313

评论数:0

Linux中的文件描述符与打开文件之间的关系

概论在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件、设备文件等。文件描述符(file descriptor)是内核为了高效管理已打开文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序在刚启...

2017-09-07 17:34:48

阅读数:147

评论数:0

TCP发送缓冲区

每一个TCP套接字都有一个发送缓冲区,可以使用SO_SNDBUF套接字选项来更改缓冲区的大小。当某个进程调用write时,内核从该应用进程的缓冲区复制所有数据到套接字的发送缓冲区中,如果该套接字的发送缓冲区容不下该应用进程的所有数据(或是应用进程的缓冲区大于套接字的发送缓冲区,或是套接字的发送缓冲...

2017-09-07 11:00:41

阅读数:270

评论数:0

常见缓存算法和LRU的C++实现

对于web开发而言,缓存必不可少,也是提高性能最常用的方式。无论是浏览器缓存(如果是chrome浏览器,可以通过chrome:://cache查看),还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。那么,了解常见的...

2017-09-04 10:56:36

阅读数:185

评论数:0

C++面试知识点

strcpy函数实现char* strcpy(char* dest, const char* src){ assert((dest != NULL) && (src != NULL)); //检查指针的有效性 char* res = dest; while((*des...

2017-09-02 21:12:19

阅读数:127

评论数:0

Segmentation Fault错误原因总结

一、 什么是“Segmentation fault in Linux”所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的...

2017-09-01 17:24:52

阅读数:63506

评论数:0

linux硬链接与软链接

链接概念Linux链接分两种,一种称为硬链接(Hard Link),另一种称为符号链接(Symbolic Link),默认情况下,ln命令产生硬链接;硬链接硬链接指通过索引节点来进行链接,在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode ...

2017-08-30 22:06:52

阅读数:179

评论数:0

多进程 or 多线程

什么是多线程?多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。 使用线程的好处有以下几点: 使用线程可以把占据长时间的程序中的任务放到后台去处理 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出...

2017-08-29 22:54:52

阅读数:146

评论数:0

函数对象和函数指针

C++的函数调用语法实体有函数、类似于函数的宏、函数指针、仿函数(函数对象)。函数调用方式有: 直接调用:通过函数名直接调用函数,函数起始地址成为指令的一部分,因此编译器就能确定调用了哪个函数; 间接调用:通过函数指针来调用函数,函数起始地址位于内存或寄存器的某处,因此,到运行期才能确定调用哪个函...

2017-08-29 15:54:21

阅读数:118

评论数:0

索引

索引数据库索引,是数据库管理系统中的一个排序的数据结构,以协助快速查询,更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构,就是索引;为...

2017-08-23 22:20:29

阅读数:107

评论数:0

数据库事务的隔离等级

数据库的事务隔离级别有4个,由低到高依次是Read uncommitted,Read Committed,Repeatable read,Serializable,这四个级别可以逐个解决脏读,不可重复读,幻读等问题。 Tables 脏读 不可重复读 幻读 Read uncommi...

2017-08-23 17:52:05

阅读数:752

评论数:2

多线程编程

Linux线程概述内核线程和用户线程线程是程序中完成独立任务的完整执行序列。即一个可调度的实体,根据运行环境和调度者身份,线程分为内核线程和用户线程: 内核线程:在有的系统上也称为LWP(轻量级进程),运行在内核空间,由内核调度; 用户线程:运行在用户空间,由线程库调度; 当进程的一个内核线程获得...

2017-08-19 17:35:55

阅读数:91

评论数:0

管道

管道(pipe)管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系的进程间通信;实现机制管道是由内核管理的一个缓冲区,相当于放入内存的一个纸条。管道的一端连接一个进程的输出,这个进程会向管道中放入信息。管道的另一端连接一个进程的...

2017-08-18 23:17:44

阅读数:161

评论数:0

多进程编程

fork()系统调用#include<sys/types.h> #include<unistd.h> pid_t fork(void);返回值:在父进程中返回子进程的pid,在子进程中返回零;fork函数复制当前进程,在内核进程表创建一个新的进程表项,新的进程表项有很多属性...

2017-08-18 21:56:24

阅读数:79

评论数:0

定时器

定时器概述网络程序需要处理的第三类事件是定时事件,比如定期检测一个客户连接的活动状态。服务器程序通常管理着众多定时事件,因此有效的组织这些定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑,对于服务器的性能有着至关重要的影响。为此,我们要将每个定时事件分别封装成定时器,并使用某种容器类数...

2017-08-18 11:46:40

阅读数:84

评论数:0

sigaction()之sa_mask

sigset_t sa_mask是一个信号集,在调用该信号捕捉函数之前,将需要block的信号加入这个sa_mask,仅当信号捕捉函数正在执行时,才阻塞sa_mask中的信号,当从信号捕捉函数返回时进程的信号屏蔽字复位为原先值;这个复位动作是sigaction函数内部处理,还是由调用者自己处理呢?...

2017-08-17 23:03:09

阅读数:219

评论数:0

I/O复用

I/O复用虽然能同时监听多个fd,但它本身是阻塞的,并且当多个文件描述符同时阻塞时,如果不采取额外的措施,程序就只能顺序依次处理其中每一个fd,这使得服务器程序看起来像是串行工作的。如果要实现并发,只能使用多进程或多线程等编程手段。select系统调用函数原型#include <sys/se...

2017-08-17 17:43:52

阅读数:100

评论数:0

守护进程

概念守护进程(daemon)是一种运行在后台的特殊进程,它独立于控制终端并周期的执行某种任务或等待处理某些发生的事件。在Linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭...

2017-08-17 11:42:44

阅读数:104

评论数:0

网络编程问题

数据发送假设应用程序要发送40KB数据,但是OS的TCP发送缓冲区只有25KB剩余空间,那么剩下的15KB数据怎么办? 如果等待OS缓冲区可用,会阻塞当前线程,因为不知道对方什么时候收到并读取数据,因此网络库应该把这个15KB数据缓存起来,放到这个TCP链接的应用层发送缓冲区中,等socket变得...

2017-08-17 09:59:49

阅读数:64

评论数:0

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