自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 指针和引用

1. 指针(pointer)1.1 定义指针(pointer)本质上是指向(point to)其他对象的对象,其内存中存储的是地址,可以通过解引用操作间接的去访问其指向内存对象(如果指针中存储的是一个有效的地址)1.2 初始化和赋值指针无需在定义时初始化,并且可以随时指向其他对象,因此在使用指针前,需要对其进行有效性检查,否则可能会访问无效指针1.3 指针的值指针的值有四种可能 1. 指向一个对

2017-12-29 00:23:32 492

原创 源码剖析之epoll(3)

1. 源码剖析本篇主要分析epoll_wait以及相关函数以下源码取自4.101.1 epoll_waitfs/eventpoll.c/* * Implement the event wait interface for the eventpoll file. It is the kernel * part of the user space epoll_wait(2). */SYSCALL

2017-12-26 16:06:39 176

原创 源码剖析之epoll(2)

1. 源码分析本篇主要分析epoll_ctl以及相关函数以下源码取自4.101.1 epoll_ctl用于添加/调整/删除我们要监视的事件fs/eventpoll.c/* * The following function implements the controller interface for * the eventpoll file that enables the insertion/

2017-12-22 15:05:27 375

原创 源码剖析之epoll(1)

1. 源码剖析以下源码取自4.101.1 核心数据结构epitemfs/eventpoll.c/* * Each file descriptor added to the eventpoll interface will * have an entry of this type linked to the "rbr" RB tree. * Avoid increasing the size o

2017-12-21 18:25:37 194

原创 源码剖析之wait queue

wait queue在内核中,一般使用等待队列(wait queue)实现当发生特定事件时的异步通知 具体方法如下: 1. 为每个特定的事件(可读、可写等)维护一个等待队列,本质上是一个双向链表 2. 关心该事件的实体作为等待队列中一项加入该等待队列中 3. 每个等待队列项包含关注该事件的实体的信息(进程、线程),以及回调函数 4. 当关注的事件发生时,会遍历相应的等待队列,调用每个节点中

2017-12-21 15:12:59 826

原创 源码剖析之poll

1. poll   从内核的角度看来,借助于VFS, 一切皆file// 文件表示 include/linux/fs.hstruct file { const struct file_operations *f_op; spinlock_t f_lock; // 文件内部实现细节 void *priv

2017-12-21 15:06:44 481

原创 RAII

1. 资源1.1 系统中的资源内存文件描述符Socket套接字内核同步/互斥资源(Mutex)1.2 资源“泄露“    由于系统中的资源有限,所以在需要的时候去申请,在不需要的时候应该立即释放。但是由于程序提前结束或者误操作很容易忘记对资源的释放。这就会造成资源的“泄露”,如常见的“内存泄露“和“死锁”。内存泄漏Object* p = new Object();doSomething(

2017-12-11 21:49:34 160

原创 设计模式之Singleton模式

定义保证类只有一个对象实例, 并提供一个访问它的全局访问点难点只有一个对象实例提供一个全局访问点线程安全代码实现方法一在C++11之后,通过静态局部成员变量的特性来实现单例模式第一次调用getInstance实例化静态局部成员变量instance之后每次调用getInstance都是返回第一次实例化的instance编译器会通过一定手段保证线程安全class Singleton{

2017-12-11 15:13:33 83

原创 Memcpy/Memmove

方法一void* myMemcpy(void* dst, const void* src, size_t num){ if(NULL == dst || NULL == src) return NULL; char* pdst = (char*)dst; const char* psrc = (const char*)src; i

2017-12-11 10:10:21 132

原创 打印不大于N的所有素数

方法一#include <iostream>#include <math.h>using namespace std;void printPrime(int n){ if(n < 2) return; cout << 2 << endl; for(int i = 3; i <= n; i += 2) { bool flag = tr

2017-12-02 17:53:34 563

原创 Merge Sort

递归版算法思想采用分治(Divide and Conquer)思想 将长度为n的序列分为两个长度为n/2的子序列,分别对子序列进行排序,然后将这两个内部有序的子序列进行归并代码实现int merge(vector<int>& nums,int left,int mid,int right){ int index1 = left; int index2 = mid+1; v

2017-11-22 22:42:33 162

原创 Quick Sort

算法思想采用分治(Divide and Conquer)思想实现方法从待排序序列nums[left,right]选择一个元素作为pivot对序列进行partition操作,形成两个子序列nums[left,pivot-1]和nums[pivot+1,right],并且nums[left,pivot] <= pivot < nums[pivot+1,right]递归的对两个子序列进行以上操作,直

2017-11-22 21:50:58 142

原创 Git之修改commit

1、git commit --amend "new commit-description"在提交后,发现提交的内容和描述都有偏差,首先在工作区进行相应修改,然后添加到暂存区,然后使用该命令,并修改commit-description,Git会将暂存区的修改和上次commit合并,生成新的commit-id提交到版本库,从而达到修改commit内容和descrip

2016-10-14 10:59:34 1018

原创 GIT基本概念

GIT本地仓库(Local repo)分3个区域工作区 (working )项目工程目录 暂存区 (stage)版本库的stage 分支 (branch)master和其他分支当我们对工作区的项目进行修改后可以使用git status查看修改文件信息将其放到暂存区stage使用git add somefile.cxs 然后提交到本地分支git

2016-10-12 14:28:03 377

原创 Ubuntu之terminal的打开方式

1.快捷键Ctrl+Alt+T(仅Ubuntu适用)2.命令行首先打开命令行ALT+F2(这个命令在所有Linux版本中都是适用)然后再命令行输入框中输入gnome-terminal(安装了gnome的都适用)3.在右键菜单中 打开需要安装一个小工具,命令如下:sudo apt-get install nautilus-open-terminal

2016-10-10 14:38:56 320

转载 Windows核心编程之线程终结

二、线程终结1.线程函数的return返回(最好这样):  其中用线程函数的return返回, 而终止线程是最安全的, 在线程函数return返回后, 会清理函数内申请的类对象, 即调用这些对象的析构函数. 然后会自动调用 _endthreadex()函数来清理 _beginthreadex(...)函数申请的资源(主要是创建的tiddata对象).

2016-04-27 21:47:29 283

转载 Windows核心编程之线程内幕

1.线程内核对象(操作系统接口CreateThread内部实现)2.线程数据块_tiddata(C/C++运行时库的实现 _beginthreadex与_beginthread)3.线程结束_endthreadex下面分别介绍一、线程内核对象线程创建时,会先创建一个线程内核对象(分配在进程的地址空间上),如上图,存储上下文context(一个数据结构

2016-04-27 21:21:20 822

转载 Windows核心编程之线程创建

一、线程创建Windows线程在创建时会首先创建一个线程内核对象,它是一个较小的数据结构,操作系统通过它来管理线程。新线程可以访问进程内核对象的所有句柄、进程中的所有内存及同一进程中其它线程的栈。创建有以下几种方式,分别说明CreateThread(...) (操作系统提供的API,尽量不要使用)_beginthread(...)_beginthreadex(...)Afx

2016-04-27 21:09:04 475

转载 Windows核心编程之CloseHandle

主线程只要拥有线程句柄,事后就可以对线程执行某些操作,比如查询线程状态等等,靠的就是句柄,如果没有句柄,系统就无从知道要查的是那个线程的状态。但保持这个句柄不关闭,并不是线程运行的条件。        关闭线程句柄只是释放句柄资源,新开启线程后,如果不再利用其句柄,应该关闭句柄,释放系统资源。关闭线程句柄和线程的结束与否没有关系。       句柄可以认为是系统对资源(如线程)的分

2016-04-27 20:45:54 1438

转载 windows核心编程之服务(services)、函数(functions) 、例程(routines)

这几个术语在用户和编程的不同上下文中不着不同的意思,比如 service可能指OS中可调用的例程,设备驱动程序或者服务器进程,下面的列表描述了这些术语在本书中的表示的意义    例程                 例程的作用类似于函数,但含义更为丰富一些。例程是某个系统对外提供的功能接口或服务的集合。比如操作系统的API、服务等就是例程    windows API函数:

2016-04-25 18:51:19 995

转载 windows核心编程之并行、并发、同步、异步

1. 并发:  在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥互斥:   进程间相互排斥的使用临界资源的现象,就叫互斥。   2 同步:  进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一

2016-04-20 21:31:37 424

转载 Windows核心编程之内核对象

在Windows操作系统中我们常常接触的有三种对象类型:Windows内核对象 (事件对象,文件对象,进程对象,I/O完成端口对象,互斥量对象,线程对象等等):由执行体(Excutive)对象管理器(Object Manager)管理,内核对象结构体保存在系统内存空间(0x80000000-0xFFFFFFFF),句柄值与进程相关。Windows GDI对象 (画笔对象,画刷对

2016-04-20 11:28:39 405

转载 C++中malloc/free与new/delete的区别及内存分配失败错误处理

首先谈谈C/C++内存分配失败错误处理一、C语言中的malloc/calloc/realloc/valloc/alloca/memalign函数:这样的内存分配函数在内存分配失败时都返回空指针,因此,在调用返回时,检查返回值的方法比较简单,只需要与空指针比较即可;如:char* p = (char*)malloc(1204);if(p == NULL){ /

2015-08-05 16:19:32 325

图解HTTP(彩色版、完整书签)

图解HTTP,彩色版,完整书签 本书对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。本书的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过本书快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。 本书适合Web开发工程师,以及对HTTP协议感兴趣的各层次读者。

2018-03-09

Boost程序库完全开发指南(3rd、清晰、完整书签)

 基于2014年11月发布的Boost 1.57版,介绍了其中的所有129个库。   国人原创精品   C++开发的好帮手   C++专家的优秀学习教材   深入解析Boost库的内部实现   内容丰富、组织得当、概念清晰、讲解细致,是广大C++程序员和爱好者的必备好书。

2018-03-05

空空如也

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

TA关注的人

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