自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

窗外阴天的博客

关注技术细节

  • 博客(63)
  • 资源 (1)
  • 收藏
  • 关注

原创 Libevent解析(二)从简单使用代码剖析建立对Libevent的认识主线

Libevent解析我的上篇博客从整体宏观流程,对它进行的简单易懂的一个解释,而本篇我想从一个Libevent实例入手,让大家能从整体上去把握软件逻辑和结构,代码如下:#include#include            //Libevent安装后提供的核心库函数#includeusing namespace std;void signal_cb( int f

2018-01-01 20:12:19 283 1

原创 Libevent剖析(一):建立对Libevent的宏观认知如何运作等

一)Libevent是什么:我们应该都已经了解过linux服务器程序必须处理的三类事件:I/O事件,信号事件,定时事件。而如何去编写程序统一处理这三类事件,同时保证可以移植到其他操作系统(因为不同的操作系统可能会具有不同的I/O复用的方式,比如Solaris的dev/poll,linux的epoll,FreeBSD的Kqueue等),并支持并发编程,如何去协同等等,如果每个服务器程

2017-12-26 21:19:28 290 1

转载 非常好的一篇对linux信号(signal)的解析 (转载)

Linux信号(signal) 机制分析转载至:https://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。

2017-12-19 17:41:38 15947

转载 I/O复用的不同机制间区别(select/poll/epoll)

转载至:http://blog.csdn.net/u012570105/article/details/52079765select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件

2017-12-06 21:07:07 175

原创 字符串常量,指针,数组,[],*各关系梳理

字符串常量,指针,数组各关系梳理1)在C语言中没有专门的字符串类型,但存在字符串常量,字符串常量存放在常量区,不可修改;例:char* str = “woshini”;    这是申请一个字符串常量“woshini”,双引号作用是返回所开辟空间(常量区)的首地址,str指向这个字符串常量,不可修改;    char dest[] = “woshini”;    看到

2017-07-31 21:31:59 406

原创 TCP的三次握手四次分手详解

tcp的三次握手详解1.客户端向服务器端发送连接请求,生成syn=1的状态包和随机顺序包seq=#.syn=1表示请求连接并且进入syn_send状态。2.服务器接收到syn=1,生成确认包ack_number=seq+1和seq=#随机数顺序包,并且还要回复一个syn=1的同步包,再随机生成顺序包,并发出ack=1确认包,进入syn_recive状态。3.客户端接收到以后确认ack 

2017-06-21 23:36:10 779

原创 事件与状态机 事件驱动编程

编程思想 方法

2017-05-12 17:53:03 4499

转载 自己实现的库函数(memset,memcmp,memcpy,memmove)

几个重点内存函数的自己实现库函数的理解内存函数的更深一步了解

2017-04-16 11:49:33 763

原创 C语言指针相关定义的练习题及答案

C语言指针定义方面几点练习

2017-04-05 22:45:23 3645

原创 升级https总结

实时流水升级https总结文章:背景:实时流水系统作为计费系统的相关联辅助系统,主要负责对实时交易流水的存储查询和推送业务或相关系统进行逻辑处理等。相关推送模块之前只支持http,作为外部通知模块,关键路径推送用户交易信息,需要更加安全可靠的机制保证信息传输的安全可靠,需要支持https。升级方案:curl+openssl+签名。一般curl库只支持http,需要openssl库配合cur...

2019-03-16 11:46:41 290

转载 C++的门道(一些C++的关键坑)

C++的门门道道【导语】 C++是一门被广泛使用的系统级编程语言,更是高性能后端标准开发语言;C++虽功能强大,灵活巧妙,但却属于易学难精的专家型语言,不仅新手难以驾驭,就是老司机也容易掉进各种陷阱。 本文结合作者的工作经验和学习心得,对C++语言的一些高级特性,做了简单介绍;对一些常见的误解,做了解释澄清;对比较容易犯错的地方,做了归纳总结;希望借此能增进大家对C++语言了解,减少编程出错,提...

2019-02-21 20:38:02 2144

转载 HTTP协议格式详解

一、URI结构HTTP使用统一资源标识符(URI)来传输数据和建立连接。URL(统一资源定位符)是一种特殊种类的URI,包含了用于查找的资源的足够的信息,我们一般常用的就是URL,而一个完整的URL包含下面几部分:http://www.fishbay.cn:80/mix/76.html?name=kelvin&password=123456#first1.协议部分该URL的协议部分...

2018-11-17 20:05:06 8831

原创 OSI七层模型介绍

OSI参考模型OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。OSI起源1969年12月,美国国防部高级计划研究署的分组交换网ARPANE...

2018-09-21 23:13:31 1549

原创 腾讯西安实习生招聘C++后台面经(已拿offer)

之前一篇面经提到过,腾讯的内推三面最终挂掉,很难受,幸运的是内推一面面试官推了我到别的部门,两面技术面一个hr面,已经收到offer。 拿到offer后开心了一下放松了一下,本该早点发博客的,理解万岁,浑浑噩噩学了两周也没发技术博客,下来慢慢步入正轨,先来面经预热吧!* 一面:* 扫码排队等待叫号,进入面试房间后,一面没有寒暄,自我介绍进入正题(自我介绍最后要落脚到技术的学习历程)...

2018-05-19 11:18:37 862

原创 腾讯内推三面经验分享

腾讯2019届C/C++实习生招聘,本人内推,到现在电话面试了三次(已经凉凉),写篇面试经验吧!总体来说,面试所问的问题有前有深,还是比较注重基础知识和底层的东西的,包括网络,I/O,STL,数据结构等 三次面试问题会有重复的,重复的我就不再列出来一面没有让自我介绍,大多电话面也不会很尴尬的让你介绍自己,都会选择问你的大学,学习生活开始慢慢进...

2018-04-18 17:58:13 6273

原创 虚拟地址相关问题明了解释

早期的内存分配机制在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当程序同时运行多个程序时,操作系统是如何为这些程序分配内存的呢?下面通过实例来说明当时的内存分配方法:某台计算机总的内存大小是128M,现...

2018-04-14 16:46:11 1108 1

原创 STL中容器list的sort方法详解

**List 不能使用STL提供的算法 sort() , 必须使用自己定义的sort() member function,因为STL算法sort()只接受RamdonAccessIterator,它的实现代码如下,是一个quick sort;**list::sort的代码如下(sgi stl):template <class _Tp, class _Alloc> ...

2018-03-18 21:35:55 1864 3

原创 const

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。const关键字的作用主要有以下几点:(1)可以定义const常量,具有不可变性。 例如: const int Max=100; int Array[Max]; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { ………} 编译器就会知道i...

2018-03-12 21:29:40 133

转载 Linux定时任务Crontab命令详解

inux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。一、crond简介crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows...

2018-03-09 21:40:13 244

原创 Boost库的智能指针shared_ptr剖析

之前的博客对Boost库的智能指针诞生的原因它们的作用,VS 和 VC下auto_ptr的不足,还解析了vc下的auto_ptr,以及Boost库的scoped_ptr和scoped_array这两个兄弟智能指针,可以查看之前的博客,今天我们直接入手shared_ptr。 shared_ptr简介 shared.ptr 是一个最像指针的“智能指针”,是boost.smart.ptr 库中最...

2018-03-02 10:35:07 342

原创 Boost库中的智能指针scoped_ptr,scoped_array

一 . boost库中smart_ptr产生的原因,所发挥的作用我们知道,为了更安全使用指针,不再让C/C++程序猿为了代码的内存管理而苦恼,VC和VS都带有智能指针auto_ptr供程序猿调用。如果还没了解建议先了解auto_ptr源代码,下面是之前对它的解析boke: 智能指针auto_ptr的解析可无论是vc下的auto_ptr还是vs下的auto_ptr都存在设计上的缺陷,vs...

2018-03-01 20:53:32 313

转载 可变参函数对变参的取值工具(va_start,va_arg,va_end)

本文主要介绍va_start,va_arg,va_end的使用及原理。在以前的一篇帖子www.cnblogs.com/hanyonglu/archive/2011/04/19/2020738.html详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。  介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类...

2018-02-28 11:22:15 285

原创 不完全类型检测 “typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];”

最近在关注Boost库中智能指针的相关知识,剖析到下面的一段代码,在头文件checked_delete.hpp中的用于释放空间的类模板函 checked_array_delete(T * x);:template<class T> inline void checked_array_delete(T * x) { typedef char type_must_be...

2018-02-27 20:48:20 949

原创 智能指针auto_ptr的解析

智能指针(smart pointer)是一个c++中必须去探讨的一个重点知识,它代理了原有的“裸指针”的一些行为,并添加了很多特性。auto_ptr是为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针且很不完善,不推荐使用) 先用例子说明下int main (){ auto ptr< class_need_resource > p...

2018-02-25 23:17:57 245

原创 红黑树的删除操作分析(简单粗暴有道理)

看了很多材料,关于红黑树的删除,大概所有的总结都大同小异,今天先聊聊对红黑树删除的情况分析:红黑树的删除操作 1:节点命名约定D表示要被删除的节点。即:取 Delete 的首字母;P 表示父节点。即:取 Parent 的首字母;S表示兄弟姐妹节点。即:取 Sibling的首字母;U表示叔伯节点。即:取Uncle的首字母;G表示祖父节点。即:取 Grandfather的首字

2018-02-02 21:46:29 4789 2

原创 带你了解STL空间配置器运作方式

在STL运用中,空间配置器总是隐藏在一切组件(各种容器container)的后面,默默付出。所有STL操作的对象都是存放在容器中的,而容器所需要的空间的申请释放等,正是它在幕后的工作。1. 建立空间配置器的认知框架:空间配置器提供给使用者统一的接口(空间申请,构造对象,析构对象,释放空间) 我们先通过自己简化的一个不很标准但却能以小见大的的简单空间配置器入手介绍:#ifndef _MEMORY_H

2018-01-28 23:24:14 298 1

原创 linux网络配置

网络属于内核功能地址属于内核(虽然配置在网卡上),但属于内核,从哪一个网卡传来的数据都可连接以太网:命名eth XDHCP动态主机配置协议服务如果获得不到DHCP服务器则使用自动随即地址配置,但只可用本地通信ifconfig:获得活动中网卡上的相关信息 IP地址 子网掩码 收发报文的统计等-a 显示所有接口的配置信息 (非活动状态)[ethX]则显示

2017-12-21 16:01:29 159

转载 setsockopt()函数解析(转载)

setsockopt() 介绍setsockopt()函数用于任意类型、任意状态套接口的设置选项值。尽管在不同协议层上存在选项,但本函数仅定义了最高的“套接口”层次上的选项。选项影响套接口的操作,诸如加急数据是否在普通数据流中接收,广播数据是否可以从套接口发送等等。设置套接字的选项。#include int setsockopt(int s,int level,int op

2017-12-19 11:16:47 258

原创 LINUX(socket)网络编程部分头文件归纳解释

头文件解释归纳

2017-12-19 10:40:59 1108

原创 IO复用(select)代码实现

IO复用:IO复用说白了就是通过这种机制,只需要使用一个进程或线程就可以去管理多个套接字描述符,去实现不同套接字的读写。与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。select,poll,epoll都是IO多路复用的机制。select,poll,epoll本质上都是同步I/O

2017-11-30 21:30:20 671

原创 git的传输协议及各自优缺点(本地传输协议,ssh,http,git)

协议Git 可以使用四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议。下面分别介绍一下哪些情形应该使用(或避免使用)这些协议。值得注意的是,除了 HTTP 协议外,其他所有协议都要求在服务器端安装并运行 Git。本地协议最基本的就是_本地协议(Local protocol)_,所谓的远程仓库在该协议中的表示,就是硬盘上的另一个目录。这常见于团队每一个

2017-11-01 22:21:28 3721

原创 System v 和 Posix作用和区别(进程间通信IPC)

System v 和 Posix当我们在linux系统中进行进程间通信时,会有比如共享内存(shm),信号量(sem),消息队列(msg)等方式时,会发现有System v以及POXIS两种不同的类型。我们探究一下System v和Posix到底代表着什么意义又有什么区别。Posix:Posix(Portable Operating System Int

2017-11-01 19:45:02 8648

原创 git add -A和 git add . git add -u作用和区别

git add -A和 git add .   git add -u在功能上看似很相近,但还是存在一点差别git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交

2017-10-31 16:43:37 2120

原创 github分支的理解.创建.合并(github非常重要的部分)

为了理解 Git 分支的实现方式,我们需要回顾一下 Git 是如何储存数据的。或许你还记得第一章的内容,Git 保存的不是文件差异或者变化量,而只是一系列文件快照。在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对 象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个

2017-10-23 17:24:04 11467 2

原创 return/exit/—exit三种返回方式的区别

主要的区别如下:1.exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。2.exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return 是退出当前函数,返回函数值,把控制权交给调用它的函数。exit是系统调用级别,它表示一个进程的结束;而return 是语言级

2017-10-22 14:27:38 1166

原创 github基础操作命令集(ru'meng)

Git 是当前最流行的版本控制程序之一,文本包含了Git 的一些基本用法 创建git 仓库 初始化git 仓库 mkdir project  # 创建项目目录 cd project  # 进入到项目目录 git init  # 初始化 git 仓库。此命令会在当前目录新建一个 .git 目录,用于存储 git 仓库的相关信息 初始化提交 touch README

2017-10-12 22:03:39 214

转载 linux下调试基础知识 GDB

调试是所有程序员都会面临的问题. 如何提高程序员的调试效率, 更好更快地定位程序中的问题从而加快程序开发的进度, 是大家共同面对的问题. 就如读者熟知的Windwos下的一些调试工具, 如VC自带的设置断点, 单步跟踪等, 都受到了广大用户的赞赏. 那么, 在Liunx下有什么好的调试工具呢?    Gdb是一款GNU开发组织并发布的Linux下的程序调试工具. 虽然它没有图形化的友好界面

2017-10-09 18:38:47 227

转载 linux启动过程详解

启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Ma

2017-10-06 18:19:04 150

原创 vim的配置(适合编程)

vim一般是用在linux下的一个编辑软件,它十分灵活,相信用的熟练后,你就会深有体会的;linux下代码一般都在vim下编辑,但vim有好多的设置不像windows一样存在图形界面选项去让你设置,vim的配置需要在全局etc目录下的vimrc中手动配置,即就是写配置文件,下面提供一组配置文件,适合编程的朋友的设置;//在配置文件中"是注释符,如果运行vim时候报错可能是注

2017-10-05 18:36:58 567

转载 Git常用命令详解

Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro)Git 的更多介绍,请参考我的上一篇博客:Git 版本管理工具 一、 Git 命令初识 在正式介绍Git命令之前,先介绍一下Git 的基本命令和操作,对Git命令有一个总体的认识

2017-10-05 18:29:56 169

计算机英语词汇大全(整理最新)

计算机英语词汇大全(整理最新)

2018-01-02

空空如也

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

TA关注的人

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