自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 深度探索C++对象模型——Function语意学

前言:最近在读《深度探索C++对象模型》,收获不小,整理一些笔记,一来总结加体悟,二来希望以后在某些知识点的遗忘时能快速拾起也希望对读者有一定的帮助。C++支持三种类型的成员函数static nonstatic virtualstatic成员函数静态成员函数不能直接存取非静态成员(包括静态成员数据和静态成员函数):因为静态成员函数是属于类的,不属于任何一个对象,在类对象创建以前就已经存在了。而

2017-08-20 20:27:19 449 1

原创 重载运算

重载的运算符是具有特殊名字的函数:它们的名字由关键字 operator 和其后要定义的运算符号共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。对于一个运算符函数来说,它或者是类的成员,或者至少含一个类类型的参数://错误:不能为int重定义内置的运算符int operator+(int, int);重载运算符函数的参数与该运算符作用的运算对象数量一样多,一元运算符有一个参

2017-06-12 16:31:02 606

原创 动态内存与智能指针

我们先来看一些对象的生存期。全局对象在程序启动时分配,在程序结束时销毁。局部static对象在第一次使用前分配,在程序结束时销毁。局部自动对象,在进入其定义所在的程序块儿时被创建,离开块时销毁。即,它们都是由编译器自动创建与销毁。 而动态分配的对象的生存期与它们在哪里创建的无关,只有当显式地被释放时,这些对象才销毁。在C++中,动态内存的管理是通过一对运算符来完成的:new:在动态内存为对象分配空

2017-06-07 01:11:06 324

原创 C++ I/O库概述

平时用到的I/O操作也不多,对这块儿的整体认识还是比较生疏,简单整理一下,当作笔记。常用的I/O库设施:1) istream(输入流类型),提供输入操作,该类型在头文件iostream中。2) ostream(输出流类型),提供输出操作,在头文件iostream中。3) cin,一个istream对象,从标准输入读取数据。4) cout,一个ostream对象,

2017-05-24 23:02:43 356

原创 可靠传输之TCP协议

首先,我们来看一下TCP报文段结构,梳理一下关键字含义: 传输层最常用的两种协议:UDP和TCP。它们最基本的责任是将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。在这里我只对提供可靠传输的TCP做介绍。在讨论图中的TCP报文段之前,我先介绍一下TCP提供的服务:(1) TCP提供可靠数据传输。通过使用流量控制、序号、确认和定时器,TCP确保正确地、按序地将数据从发送进程

2017-03-14 16:29:14 1340

原创 I/O复用之 select和epoll

在我们介绍I/O复用之前,先来看一个小例子:...while(fgets(sendline, MAXLINE, fp) != NULL){ write(sockfd, sendline, 1) ... ...} 粗略地描述一下上述代码: 第一行表示从文件fp中读数据到sendline中,第二行表示将sendline中的数据写入套接字描述符sockfd。

2016-10-17 22:36:54 1043

原创 Fedora 23 Mysql 安装及配置

第一步,下载一个Mysql客户端dnf install mysql *这时,当你执行命令:mysql -uroot -p 会出现以下错误:mysql connection refused and mysql no such file or directory或者其他有些变化的提示,反正就是没有本地服务器的意思啦第二步,安装MySQL YUM资源库dnf install https://dev.mys

2016-10-10 23:32:44 2643

原创 信号和中断的联系

经常见到信号和中断这两个名词,好像有中断的地方就有信号的概念,但是在介绍信号的地方却并没有提及中断,而这两者又不存在包含关系。那么,到底什么是信号,什么是中断?信号的概念:信号是信息的一种表达形式 举实际生活中例子来说:我们俩认识,我向你招一下手,就是在向你发一个信号。而你看到了我向你招手,就表示你收到了这个信号。假如你没看到我向你招手,表示我虽然发给你了一个信号,但实际上你并没有收到这个信号。

2016-09-06 22:16:01 1044

原创 TCP连接的建立与终止过程

我们知道,网络间的通信简单的从应用层来看,就是同一或者不同主机上的进程之间进行信息传送和/或接收。在信息传输的过程中我们需要遵循一定的规则。 举个简单例子,假如我想传送一个信息A给你,那么按照特定的规则我发送的A在传输的过程中实际上是以A++的形式存在的。但是你收到的信息还是A。说明在传输过程中我的信息被“规则化”了以后又被“规则化”回来了。这种“规则”,就是我们平时所说的协议。即,要按照它的格调

2016-07-29 09:03:22 5589 2

原创 80x86微处理器结构及其工作模式

80X86是一系列微处理器微处理器又称为中央处理单元,即CPU,是一块集成电路芯片。它是微型计算机的核心组成部分。 既然微处理器是微型计算机的核心,那么我们有必要先来简单地讨论一下微型计算机。微型计算机:微型计算机是指以微处理器为核心,配上存储器、输入/输出接口电路等所组成的计算机(又称为主机)。微型计算机系统是指以微型计算机为中心,配以相应的外围设备、电源和辅助电路(统称硬件)以及指挥电路工作的

2016-07-18 15:06:52 6792

原创 计算机网络体系结构及其简单通信

(一)通信的基本概念:我们知道,通信的目的是快速、有效地传递信息。下面我们先来简单地介绍一点通信的基本知识: 现代信息的表达方式有文字、符号、声音、图像数据等多种形式。为了实现信息传递,通常以光、电等信号作为信息的载体。信号:信息的表达形式 信道:信号传输的通道,是信号传输媒介的总称。 信源:发出信息的地方 信宿:信息传送的终点根据传送信息的信道(信号传输媒介)不同,通信可分为有线通信和无线

2016-06-20 21:51:05 8296 1

原创 安全擦除swap分区

我们知道,现在的安全问题越来越严峻,好多地方存在信息泄漏问题。例如,swap分区。swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到swap分区中,等到那些程序要运行时,再从swap分区中恢复保存的数据到内存中。即,swap分区是一个交换区,当物理内存不够的时候与它交

2016-03-19 11:49:02 1302

原创 存储器层次结构(2)

接着上次简单的介绍,让我们来继续讨论这些“存储器们”吧。 在上一篇中我提到了传统的DRAM,简单描述了每个DRAM芯片与存储控制器的“交互”过程。下面,我们来看一下多个DRAM芯片是怎样集合在一起工作的。存储器模块:DRAM 芯片包装在存储器模块中,这个存储器模块是插到主板的扩展槽上的。常见的包装包括168个引脚的双列直插存储器模块(DIMM),它以64位为块传送数据到存储控制器和从存储控制器传出

2016-03-11 16:17:17 833

原创 存储器层次结构(1)

我们知道,一个简单的计算机系统模型是CPU执行指令,而存储器为CPU存放指令和数据。 在简单模型中,存储器系统是一个线性的字节数组,CPU能够在常数时间范围内访问每个存储器位置。这样的一个简单模型并不能有效地反映现代系统实际工作的方式。实际上,存储器系统是一个具有不同容量,成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的快速的高速缓存存储器作为一部分存储在相对慢

2016-03-08 22:22:17 1220

原创 Glibc 内存管理知识点总结

这几天在看Glibc 内存管理模块的内容,感觉收获颇多,在此做个简单的总结,以便知识点回顾。 先介绍一下相关的背景。有个项目组在研发一个类似数据库的NoSql 系统时,遇到了Glibc 内存暴增问题。据此,在经过一系列排查过后,他们提出了几个问题,分别是:1.Glibc 在什么情况下不会将内存归还给操作系统系统?2.Glibc 的内存管理方式有哪些约束?适合什么样的内存分配场景?3.我们系统

2015-12-02 16:25:33 1833

原创 Linux虚拟存储器系统

一个虚拟存储系统要求硬件和内核软件之间紧密协作,版本与版本之间细节都不尽相同,在这里我们的目标是对Linux的虚拟系统做一个描述,大致理解操作系统是如何组织虚拟存储器以及如何缺页的。虚拟地址空间:一套虚拟地址的集合。cpu从一个有N=2^n个地址的虚拟地址空间中生成虚拟地址来访问内存。Linux为每一个进程维持了一个单独的虚拟地址空间,虚拟地址空间可以有间隙。(一)Linux虚拟存储器定义:Linu

2015-11-08 15:44:06 1947 1

原创 学习笔记:基础正则表达式

我们知道,正则表达式在程序语言中很常见,灵活应用正则表达式,能帮助我们建立一些编程思维和语法习惯。那么,到底什么是正则表达式呢?正则表达式的概念:正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要是用于字符串的模式分割、匹配、查找及替换工作。 其实,在正则表达式中最常用也最主要的是包含匹配即:匹配。不少人在学习正则表达式的时候容易把正则表达式和通配符搞混淆,下面我简要说明一下正则表达式和

2015-10-08 18:04:12 688

原创 学习笔记:第八章—线程控制上篇

既然要讨论线程,那么,什么是线程呢? 线程的概念:线程是计算机中独立运行的最小单位,系统会给每个线程分配一个时间片,每个线程都在给它分配好的时间片内取得CPU的控制权,执行线程中的代码。既然有每个线程这个概念,可见线程不是只能有一个。Linux操作系统支持多线程,它在一个进程内生成了许多个线程。一个进程可以拥有一至多个线程。 多线程的特别之处:同一进程内的线程共享进程的地址空间线程间的切换速度

2015-08-03 23:13:33 580

原创 学习笔记:linuxc第七章—进程控制 下篇

我们知道,父子进程终止的先后顺序不同会产生不同的结果,下面,我简单说明一下几个容易混淆的概念。 1.孤儿进程:如果一个子进程的父进程先于子进程结束,那么子进程就会成为孤儿进程,它会由init进程收养,成为init进程的子进程。 2.僵尸进程:当子进程先于父进程终止,而父进程又没有调用wait函数等待子进程结束,子进程就会进入僵死状态,并且会一直保持下去,除非系统重启。此时,该子进程就是一个僵尸进

2015-07-29 14:44:44 498

原创 学习笔记:linuxc第七章—进程控制 上篇

linux系统的一个重要特点就是:可以同时启动多个进程。那么什么是进程呢? (一)进程概念:进程简单地讲就是运行中的程序。它是一个动态的实体,是程序的一次执行过程。另外,进程是操作系统资源分配的基本单位。 进程与程序不同,程序是一些保存在硬盘上的可执行的代码,是静态的。 (二)进程操作: 每个进程都由ID号标识,进程被创建时系统会为其分配一个唯一的进程ID。 1.创建进程:除了极少数以特殊

2015-07-28 10:22:19 693

原创 学习笔记:linuxc第六章下

本章讲述了一些基本的文件操作,文件主要包含两方面的内容:(1)文件本身包含的数据,(2)文件属性。下面,我简述一下文件属性操作,和在学习、练习过程觉得应该注意的地方。 文件属性操作: 1.获取文件属性:在shell下直接用命令ls获取文件属性在程序中需要用到stat/fstat/lstat函数,这三个函数都是用来获取文件信息,区别见下面函数声明及其注释/*获取filename指定的文件名的信息*

2015-07-26 23:30:38 528

原创 学习笔记:linuxc第六章上

利用chmod函数实现自己简化版chmod命令时所需要注意的问题:利用chmod 函数实现chmod命令修改一个文件权限时需要输入其权限对应的数字。此时输入的数字是字符型的(即字符串),需要把它转换为八进制整数。首先我们先把这个字符串转换为十进制数,可以调用atoi函数,然后再把十进制整数转换为八进制整数 。 例如,设置一个文件的访问权限为:_wx_wx____,那么它对应的八进制数就是330。输

2015-07-21 11:33:52 576

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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