- 博客(29)
- 问答 (1)
- 收藏
- 关注
原创 x86杂记
编译器:将程序语言的代码转化为其他形式的软件。这个转换过程叫做编译。Eg:c->(gcc)Linux可执行的文件通常指符合(ELF)Executable and Linking Format)这种特定形式的文件。ls 、cp 这些命令对应的实体文件都是可执行文件,使用file命令能查看文件是否符合ELF形式。ELF文件包含了程序以及如何运行程序的相关信息(元数据),机器语言是唯一一种cpu能够直接
2017-02-18 18:57:02
701
原创 程序员自我修养杂记
计算机 对于系统程序开发者来说,计算机三个部件最为关键:CPU、内存、I/O控制芯片。 高速的北桥芯片:为了协调CPU、内存和高速的图形设备。此时慢速的I/O总线已经无法满足需求。 低速设备的南桥芯片:由于北桥芯片运行速度非常高,于是人们有设计了低速设备的南桥芯片,磁盘、usb、键盘、鼠标等设备都连接在南桥芯片上,由南桥芯片将他们汇总后链接到北桥上。 SMP(对称多处理器)多CPU的
2017-02-18 18:56:14
311
原创 程序员自我修养杂记
计算机 对于系统程序开发者来说,计算机三个部件最为关键:CPU、内存、I/O控制芯片。 高速的北桥芯片:为了协调CPU、内存和高速的图形设备。此时慢速的I/O总线已经无法满足需求。 低速设备的南桥芯片:由于北桥芯片运行速度非常高,于是人们有设计了低速设备的南桥芯片,磁盘、usb、键盘、鼠标等设备都连接在南桥芯片上,由南桥芯片将他们汇总后链接到北桥上。 SMP(对称多处理器)多CPU的
2017-02-18 18:55:59
653
原创 git入门
Git 是一款免费、开源、的分布式版本控制系统,最早由Linus Torvalds创建,用于管理linux内核开发。 版本控制系统(VSS)/源代码管理器(SCM)/修订控制系统(RCS):是指一个可以管理和追踪软件代码和其他类似内容的不同版本工具。有两种建立Git版本库的基础技术。一是从头·开始创建,用现有的内容填充它;二是克隆一个已有的版本库。 第一,从头开始创建: 1. 创建初始化版本
2017-02-18 18:54:57
446
原创 linux杂记
Linux可划分为:linux内核、GNU工具、图形化桌面环境、应用软件。 内核主要负责:系统内存管理、软件程序管理、硬件设备管理、文件系统管理。 交换空间:内核通过硬盘上的存储空间来实现虚拟内存的这块区域。一、linux内核内存管理:分段分页软件程序管理:内核控制着linux系统如何管理运行在系统上的所有进程。内核创建的第一个进程称为init进程,它是用来启动系统上所有其他进程
2017-02-18 18:53:19
309
原创 工作中用的Linux/unix下的命令
1. curl、wget、nvm(安装 Node.js 的最佳方式是使用 nvm。)cURL: $ curl https://raw.github.com/creationix/nvm/master/install.sh | sh Wget: $ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
2017-02-11 11:31:13
230
原创 成长
学习学习要有自己的体系架构、思维方式与学习笔记。这样才能对自己有更大的提高。第一, 要多看书。书,看完后,不清楚时用来做查询的工具。所以有时间就要多读书,读好书。第二, 学习完一定要总结,要有自己的学习笔记。养成写博客的习惯。因为学习新东西,可能感觉自己懂了,但让自己讲出来或者写出来,可能就会发现自己还有一些东西不是很清楚。所以要写下来。另外,这也是自己复习的资料。第三, 对自己的bug和优秀
2016-10-04 21:52:58
246
原创 多态
C和C++的区别: 1> C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。C的优势在于编写的程序更接近于硬件,仅次于汇编语言,所以他相对其他编程语言高效的多,但同时程序员负责一切不安全,如内存泄露等。但正是由于这样的风险的存在,对程序员的紧密思维要求更高。 2> C++是有C,面向
2016-07-12 22:31:31
248
原创 Redis-sds源码剖析第一天
源码剖析第一天/* * 类型别名,用于指向 sdshdr 的 buf 属性 */typedef char *sds;/* * 保存字符串对象的结构 */struct sdshdr { // buf 中已占用空间的长度 int len; // buf 中剩余可用空间的长度 int free; // 数据空间;使用柔性数组;sizeof(sdshdr)时十8
2016-06-28 00:40:48
293
原创 private、protected、public
/************************************************************************* > File Name: private.cpp > Author: > Mail: > Created Time: Sat 16 Apr 2016 11:19:10 PM EDT ****************
2016-06-10 17:47:10
382
原创 清空缓存的四个函数
两个getchar()中间应清空缓存 1.fflush(stdin); 2.rewind(stdin); 3.setbuf(stdin,NULL); 4.flushall(std);
2016-06-09 23:21:53
635
原创 结构体、共用体、枚举
一、结构体 1.结构体和类一样定义时最后要加分号; 2.结构体类型定义变量时struct关键字不能省略; 3定义好的结构体,系统对之不分配存储单元; 4.c99标准允许对某一成员初始化; 5.不能企图输出结构体变量名来达到输出结构体的目的; 6.同类结构体间可以相互赋值;二、共用体 1.几个不同的变量共享同一段内存结构; 2.共用体所占字节为最长变量所占字节数;而结构体是,各变量所占
2016-06-09 23:12:53
491
转载 C++虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐
2016-06-09 22:42:29
193
转载 C++ const
1 最基本的用法: A) const int a=100; b的内容不变,b只能是100也就是声明一个int类型的常量(#define b =100) int const b=100; //和上面作用一样 B)const指针和引用一般用在函数的参数中 int* m = &a; //出错,常量只能用常指针,如下 int c= 1;const int*pc = &c;//常指针可指向常量 con
2016-06-09 22:38:53
191
原创 c++点滴
1.const变量和宏的区别? (1)宏是在预编译器直接在使用位置将代码直接展开插入的,不进行类型正确性检查,由于仅仅是单纯的展开替换,不会分配内存;而const常量具有具体的类型,编译阶段会严格执行类型检查,并且是一个编译期的常量,具体是否分配空间视情况而定,对于只声明未使用的const常量不分配内存,在编译期遇到有使用const常量时才会分配内存,并将常量名称保存在符号表中; 1. http
2016-06-09 22:35:00
281
转载 string函数用法详解
//string函数用法详解!附代码,写具体的用法! include //#includeinclude include using namespace std; int main() { //1.string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作 string str1; cin >> str1;//当用cin
2016-06-09 22:27:36
520
转载 C++中 模板Template的使用
1、在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 答:class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为一
2016-06-09 22:26:19
414
原创 c点滴
1.getss()函数以回车作为结束标志,字符串中可以输入空格。 scanf()函数以空白字符作为结束标志,不可在字符串中包含空格。2.字节对齐 a.普通变量存储是其所占字节整数倍地址。 b.结构体中存储地址是其中最大成员所占字节整数倍数。 c.以#pragma pack(n) 开始的结构体,是以n或者结构体中最大成员长度中最小者的整数倍。3.柔性数组:在结构体中出现,出现在结构体最后
2016-06-09 21:10:39
274
原创 c练习
一、编码实现某一变量某位清 0 或置 1。假如:给定一个整形变量 a,写两段代码,第一个 设置 a 的 bit3,第二个清 a 的 bit3,在以上两个操作中要保持其他位不变。 int set_one(int a, int n) { int temp = 1; temp = temp << (n - 1); return (a | temp); }int empty_ze
2016-06-09 20:48:14
352
原创 虚表探索
/*************************************************************************> File Name: class_mul_hin.cpp> Author:> Mail:> Created Time: Sat 09 Apr 2016 11:48:56 PM EDT ****************************
2016-06-09 20:33:16
278
原创 c语言小知识点总结
1、.h 头文件中的 ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 2、简述 sizeof 和 strlen 的区别。 (1)sizeof 是一个操作符,strlen 是库函数。 (2)sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以 结尾为‘\0‘的字符串作参数。 (3)编译器在编译时就计算出了 sizeof 的结
2016-06-09 20:29:31
296
转载 Linux键盘快捷键
下述所有命令在Linux/unix的shell下有效,这里以bash为主。如有出入,以你自己的服务器为准。本文所指的Linux主要指RHEL/CentOS,unix指的是FreeBSD,这也是服务器中用得最多的版本。 Ctrl + a 切换到命令行开始 这个操作跟Home实现的结果一样的,但Home在某些unix环境下无法使用,便可以使用这个组合;在Linux下的vim,这个也是有效的;另外,在
2016-06-09 20:24:06
245
转载 vim
一、移动光标1、左移h、右移l、下移j、上移k2、向下翻页ctrl + f,向上翻页ctrl + b3、向下翻半页ctrl + d,向上翻半页ctrl + u4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^5、移动光标到下一个句子 ),移动光标到上一个句子(6、移动到段首{,移动到段尾}7、移动到下一个词w,移动到上一个词b8、移动到文档开始gg,移动到文档结束G9、移动到匹配的{}
2016-06-09 20:23:09
261
原创 多处理机、多核cpu、多线程cpu的区别
一、多处理机(SMP): 1.多个物理cpu 2.每个cpu有自己的独立cache、寄存器、运算单元。 3.每个cpu对内存的访问速度一样。 二、多核cpu 1.一个物理cpu包含多个cpu核心。 2.每个核心有自己的独立寄存器和运算单元。 3.可共享最后一级cache. 三、多线程cpu 1.一个物理cpu包含多个逻辑cpu
2016-06-09 20:20:17
1934
转载 string
//string函数用法详解!附代码,写具体的用法! #include <iostream> //#include<iostream.h> //VC6.0未完全支持标准,对std命名空间也未完全兼容,g++已全部兼容 #include <string> #include <sstream> using namespace std;int main() { //1
2016-06-01 23:30:48
290
转载 printf,scanf,getchar
赋值运算符 赋值号也是运算符。 用运算符连接起来的式子称为表达式,表达式就有值。 a=4 是表达式,其值为4; a=b=6 是表达式,利用运算符= 的结合性进行分析。 = 结合性 自右至左:“右边粘性大”。1. printf函数 通式: printf(格式字符串,以逗号分开的零到多个表达式)#include<stdio.h>main(){double w1; float
2016-06-01 23:23:38
333
转载 c指针——上课
预编译 程序从编辑到执行的过程:预编译的输入是源程序(文本文件),输出依然是源程序(文本文件), 只不过作了一些替换而已. 1. #define 预编译指令 也称为宏定义. 在计算机技术中, 宏的意思是用一个字符序列替换另一个字符序列. 例:以下是用字符序列3.14 替换字符序列 PAI#include 预编译指令8地址、指针与内存的分配 以上引自于Kerniigan & Ritc
2016-06-01 23:12:21
263
转载 字符串函数
常见的C字符串处理函数的源代码 char *strcpy(char *strDes, const char *strSrc) { assert((strDes != NULL) && (strSrc != NULL)); char *address = strDes; while ((*strDes ++ = *strSrc ++) != ‘\0’)
2016-06-01 23:07:40
207
转载 关于C语言编程书写规范的规则和建议
关于C语言编程书写规范的规则和建议 一、 头文件 • 头文件由三部分内容组成: 1、头文件开头处的版权和版本声明。 2、预处理块。 3、函数和类结构声明等。 • 【规则】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。 • 【规则】用 #include
2016-06-01 23:05:54
386
空空如也
sendfile发送文件的种种疑惑
2016-04-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人