自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZX714311728的博客

积跬步,至千里

原创 Explorer : 发布一个key-value存储系统,带有客户端和服务器端

Explorer 一个key-value存储系统,带有客户端和服务器端。使用非常方便。 使用B+树作为存储引擎,客户端和服务器端使用TCP协议进行通信。   代码采用C++实现,底层将客户端和服务器通信封装成了一个网络库,里面还有些还不错的实现可供看看,比如线程池、工作队列...

2017-07-28 21:53:15

阅读数 549

评论数 0

原创 一款线程安全、基本功能齐全的STL

MiniSTL   目前正在完成一个STL,主要想通过该项目锻炼C++编程、模板编程、熟悉STL、锻炼数据结构和算法能力。   项目的目标是实现STL的几大构件+线程安全。项目过程中主要参考SGI STL源码,项目名称为:MiniSTL。   目前已完成空间配置器和迭代器部分,接...

2017-06-10 17:54:53

阅读数 382

评论数 0

原创 MySQL基本操作

初步知识 数据库是一个以某种有组织方式存储的数据的集合 DBMS是数据库管理系统也叫数据库软件 MySQL是一种DBMS SQL语句是DBMS用来操控数据库的语言 MySQL主配置文件     /etc/my.cnf ...

2017-05-17 20:40:50

阅读数 311

评论数 0

原创 Memcached的使用与CAS命令

Memcached的前台启动 memcached -p 11211 -m 64m -vv -u root 作为daemon后台启动 memcached -p 11211 -m 64m -vv -u root -d  -...

2017-05-14 17:22:31

阅读数 963

评论数 0

原创 vector空间的动态增长

vector空间的动态增长     当添加元素时,如果vector空间大小不足,则会以原大小的两倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间。vector的空间动态增加大小,并不是在原空间之后的相邻地址增加新空间,因为vector的空间是线性连续...

2017-04-10 11:19:33

阅读数 2709

评论数 1

原创 升级gcc后出现错误:/usr/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found

升级gcc后,今天用g++编译一个c++程序时出现一个错误,如下: ./destructor: /usr/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./destructor) 经过网上查找后...

2017-04-07 19:40:47

阅读数 36735

评论数 2

原创 堆相关操作

#include using namespace std; void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } /* 1.结点i的左右子节点下标分别为2i+1,2i+2 2.结点i的父结点下标为(i-1)/2 3...

2017-03-28 22:07:13

阅读数 296

评论数 0

原创 七种排序算法及其复杂度

1.冒泡排序 时间复杂度:O(N^2) 思想:从后往前开始,相邻的两两进行比较,将小的逐渐移到前面。(也可以从前往后开始两两相邻的进行比较) 代码: void BubbleSort(int *a, int N) { if (a == NULL || N <= 0) return ; ...

2017-03-28 20:40:04

阅读数 737

评论数 0

原创 Nginx源码分析与实践---进程间通信机制(信号)

在前面我们分析了nginx进程间通信机制的共享内存和套接字。这次我们分析剩下一种进程间通信机制---信号。 首先要区分信号和信号量:信号是用于进程间通信的机制,而信号量是用于保证共享资源不被并发访问的机制,如可使用信号量作为互斥锁实现多进程下对共享资源的同步。 1.nginx中什么地方用到了信...

2017-03-28 15:25:37

阅读数 816

评论数 0

原创 生产者-消费者问题

生产者-消费者问题是进程间或线程间同步的经典问题。该问题有多种实现,如消息队列、共享内存等,这次我们用的是多线程和互斥锁以及条件变量来实现该问题。 动手写程序之前先得把问题想明白。 1.该问题难在什么地方? 难点其实只有一个,就是同步问题。这个同步涉及了以下几个方面:多个生产者之间的同步(...

2017-03-27 20:17:21

阅读数 372

评论数 0

原创 Nginx源码分析与实践---进程间通信机制(套接字)

在上一篇中,我们看到了nginx共享内存方式的进程间通信。这次我们看下nginx使用套接字的进程间通信方式。 同样的几个问题: 1.什么时候需要使用套接字方式的进程间通信机制呢? 举个栗子:我们知道nginx有master进程和worker进程,那么master进程是如何向worker进程发送...

2017-03-25 11:59:10

阅读数 836

评论数 2

原创 Nginx源码分析与实践---进程间通信机制(共享内存)

Nginx有一个master进程和多个worker进程,那么master进程与worker进程间或worker进程之间是如何通信的呢,又什么时候需要进程间通信呢? 我们知道linux下的进程间通信方式主要有:管道、FIFO、套接字、消息队列、共享内存、信号。那么nginx的进程间通信方式采用的是什...

2017-03-24 16:40:35

阅读数 1582

评论数 0

转载 内存管理之程序内存分布

在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中。这个沙盘就是虚拟地址空间(virtual address space)。 1 32位虚拟内存布局 在32位模式下虚拟地址空间总是一个4GB的内存地址块。这些虚拟地址通过页表(page table)映射到物理内存,页表由操作系...

2017-03-19 14:37:59

阅读数 366

评论数 0

原创 树的镜向

问题:     求一颗树的镜向 解决思路:     镜向其实就是将所有结点的左右两个子结点交换就行。所以可以遍历二叉树,遍历到一个结点时,交换其左右两个子结点。 代码: 递归版本 void Mirro(BTree *T) { if (T == NULL || (T-&...

2017-03-16 17:39:39

阅读数 276

评论数 0

原创 判断一棵树为另一颗树的子树

题目:     有两颗二叉树,判断其中一颗A是否是另一颗B的子树。 解决思想:     按先序遍历树B的每个结点,判断结点是否和树A的根结点相同。若相同,再判断以该结点为根结点的树是否有和树A相同的子树。 代码: #include using namespace std...

2017-03-16 17:02:10

阅读数 1193

评论数 0

原创 Nginx源码分析与实践---ngx_command_t

从上一节了解到配置项的相关属性是由ngx_command_t这个结构体设置的,下面就来看其源码,分析一下。 .../src/core/ngx_core.h : typedef struct ngx_command_s ngx_command_t;由上可知,以s结尾的和以t结尾的是同一种类...

2017-03-15 21:17:27

阅读数 1962

评论数 0

原创 Nginx源码分析与实践---(一)编写一个简单的Http模块

在上一节中,我们通过修改配置文件,便能让nginx去访问我们写的html文件,并返回给浏览器。问题是:nginx是如何检测到我们写的配置项的?检测到后,nginx又是如何知道该进行什么操作的? 本节通过亲自实践,写一个经典的Hello World模块来了解相应的流程是如何进行的。我们采用自上向下的...

2017-03-15 21:04:19

阅读数 1206

评论数 0

转载 C/C++面试

首先说明,此帖针对的是非计算机专业想转互联网开发的童鞋,C/C++后台开发方向,想起自己在准备阶段也经常水河畔,看了一些面经对自己确立方向和需要准备哪些上帮助很大,所以也分享下自己的经历,希望对大家有所帮助。 基本情况:电工硕士,教研室项目就是matlab仿真,自己毫无兴趣,一心想从事互联...

2017-03-13 20:49:28

阅读数 1102

评论数 2

转载 教你如何迅速秒杀掉:99%的海量数据处理面试题

教你如何迅速秒杀掉:99%的海量数据处理面试题 作者:July 出处:结构之法算法之道blog 前言    一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的...

2017-03-13 20:22:56

阅读数 318

评论数 0

转载 腾讯后台面试过程

一位自学生的努力与梦想 求职历程: 只面了两间,都是一轮笔试+三轮面试,拿到心仪公司offer后就木有参加其他面试了。 1、淘宝(研发工程师)终面后被BS,那RP…。 2、腾讯(后台开发工程师)成功拿到offer。 学习经历: 作为一个非计科专业的学生,三年自学血泪史历历在目。没人...

2017-03-13 20:17:53

阅读数 3757

评论数 0

转载 腾讯后台开发面试总结

前段时间专心面过腾讯,经过了N轮的技术面,结果还是挂了,但没挂在技术面,比较欣慰,回来之后写一点总结,以供有梦想进入腾讯做后台服务器开发的同学参考,本文章为胡成精心总结,胡成原创,copy和转载请通知。ps:()之内的文字由作者点评,非面试题文字。 linux和os: netstat ...

2017-03-13 20:14:59

阅读数 9504

评论数 2

转载 Nginx常用命令

1. 启动 Nginx poechant@ubuntu:sudo ./sbin/nginx 2. 停止 Nginx poechant@ubuntu:sudo ./sbin/nginx -s stop poechant@ubuntu:sudo ./sbin/nginx -s quit ...

2017-03-09 17:00:33

阅读数 428

评论数 0

原创 Nginx源码分析与实践---Nginx的初步配置

先写个HTML文件: 新建目录/home/zxin/nginx_temp_file,在该目录下写个index.html文件: My Nginx This is my first ...

2017-03-09 16:33:23

阅读数 484

评论数 0

原创 linux下动态库的使用

动态库的调用分为隐式调用和显式调用 动态库的编写 动态库是由源文件编译而成的,与普通程序不同的是,动态库没有main函数,不能单独执行,需要被调用才能执行。 写一个四则运算的动态库 calculate.h文件 #ifndef CALCULATE_H_H #define CAL...

2017-03-08 19:42:47

阅读数 239

评论数 0

转载 一个Linux下C线程池的实现

1.线程池基本原理   在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线...

2017-03-06 16:21:26

阅读数 247

评论数 0

原创 关于TCP超时重传、快速重传、慢启动、拥塞避免、拥塞发生、快速恢复、滑动窗口之间的关系概括

标题上这些概念很多,理解也有一定困难,尤其是它们之间的相互关系。这次就简单概括一下。 1.滑动窗口 接收端使用的流量控制。当接收端的应用程序从TCP缓存中提取数据速度过慢,导致TCP缓存中还有未被提取的数据,由于TCP缓存大小是固定的,则接收端下次能接收的数据量就变小了。 2.糊涂窗口综合症 当滑...

2017-03-02 17:58:11

阅读数 5072

评论数 2

转载 TCP 的那些事儿(下)

转自:http://coolshell.cn/articles/11609.html 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同...

2017-03-02 17:26:18

阅读数 176

评论数 0

转载 TCP 的那些事儿(上)

转自陈浩:酷客 TCP头格式 接下来,我们来看一下TCP头的格式 TCP头格式(图片来源) 你需要注意这么几点: TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口。一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, d...

2017-03-02 15:36:18

阅读数 619

评论数 0

原创 系统架构方面的文章

(0) 系统架构汇总 (1)关于负载均衡的一切 (2)智能广告系统架构 (3)twitter系统架构分析 (4)秒杀系统架构优化思路 (5)大型网站后台架构的演变 (6)Instagram的技术架构 (7) 知乎技术方案初探 (8)F...

2017-02-28 17:40:33

阅读数 340

评论数 0

转载 【Linux学习】epoll详解

什么是epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了...

2017-02-22 21:17:36

阅读数 247

评论数 0

转载 Linux Epoll介绍和程序实例

Linux Epoll介绍和程序实例 1. Epoll是何方神圣? Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。 其实在Linux下设计并发网络程序,向来不...

2017-02-22 21:16:00

阅读数 174

评论数 0

原创 I/O多路复用之epoll

1.epoll介绍 epoll是当前开发大规模并发网络程序的热门人选。epoll在linux 2.6内核中正式引入。 linux下设计并发网络程序的几种方法有:典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)...

2017-02-22 21:00:00

阅读数 311

评论数 0

原创 I/O多路复用之poll

对于poll的理论讲解,可参考文章:http://www.cnblogs.com/Anker/p/3261006.html 实战:写一个echo程序,服务器原样返回客户端发送过来的内容。用poll写。 client: #include #include #include #include ...

2017-02-22 10:55:21

阅读数 236

评论数 0

原创 增加I/O多路复用的回射程序

在上一版本的回射程序中,若服务器子进程被杀死,则客户端检测不到这一事件的发生。原因在于,子进程被杀死时,虽然发送了FIN给客户端套接字,但此时客户端进程是阻塞于等待标准输入上的,因此检测不到套接字的输入。解决办法就是使用I/O多路复用。

2017-02-22 10:36:24

阅读数 329

评论数 0

转载 sturct stat 结构体中 st_mode 的含义

在中定义的stat结构体内容如下:[cpp] view plain copy print?struct stat { dev_t st_dev; /* ID of device containing file */ ino_t st_ino; /* inode number */ mode_t s...

2017-02-20 15:07:28

阅读数 734

评论数 0

原创 增加信号处理的回射服务器

问题:由上一篇文章分析可知,若客户端进程终止,则服务器子进程会变成僵尸进程。原因是由于服务器子进程退出后,服务器父进程未获取子进程的状态信息,导致子进程变成僵尸进程。 解决方法:由于子进程退出会产生SIGCHLD信号给父进程,所以添加一个对该信号的捕获函数,在该函数内获取子进程的终止状态,从而避免...

2017-02-16 20:48:07

阅读数 313

评论数 0

原创 经受时延的确认(Delay ACK)

通常TCP在接收到数据时并不立即发送ACK,相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(有时称这种现象为数据捎带ACK),这样做的目的是尽量减少发往网络的报文,以提高传输的效率,节省网络资源。         捎带ACK的意思是,当接收端接收到TCP报文段后,并不立即...

2017-01-03 20:24:51

阅读数 1736

评论数 0

转载 TCP的交互数据流和成块数据流

转自:http://blog.csdn.net/ns_code/article/details/32329157 前言     建立在TCP协议上的应用层协议有很多,如FTP、HTTP、Telnet等,这些协议根据传输数据的多少可以分为两类:交互数据类型和成块数据类型。     ...

2017-01-03 20:04:27

阅读数 973

评论数 0

转载 C/C++框架和库

转自:http://blog.csdn.net/weiwangchao_/article/details/52675869 值得学习的C语言开源项目 - 1. Webbench  Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同...

2016-12-31 11:47:08

阅读数 416

评论数 0

转载 linux常用命令的常用使用方法---ps

Linux作为Unix的衍生操作系统,Linux内建有查看当前进程的工具ps。这个工具能在命令行中使用。 PS 命令是什么 查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态,可以使用top命令。 ps命令...

2016-12-31 11:10:47

阅读数 531

评论数 0

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