自定义博客皮肤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的博客

积跬步,至千里

  • 博客(22)
  • 资源 (1)
  • 问答 (13)
  • 收藏
  • 关注

原创 堆相关操作

#include using namespace std;void swap(int *a, int *b){ int tmp = *a; *a = *b; *b = tmp;}/*1.结点i的左右子节点下标分别为2i+1,2i+22.结点i的父结点下标为(i-1)/23.一颗完全二叉树的最后一个拥有子结点的结点下标为(n/2 - 1),n为结点数*///下滤操作

2017-03-28 22:07:13 439

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

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

2017-03-28 20:40:04 1483

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

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

2017-03-28 15:25:37 1217

原创 生产者-消费者问题

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

2017-03-27 20:17:21 750

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

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

2017-03-25 11:59:10 1345 2

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

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

2017-03-24 16:40:35 2360

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

在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中。这个沙盘就是虚拟地址空间(virtual address space)。1 32位虚拟内存布局在32位模式下虚拟地址空间总是一个4GB的内存地址块。这些虚拟地址通过页表(page table)映射到物理内存,页表由操作系统维护并被处理器引用。每一个进程拥有一套属于它自己的页表,但是还有一个隐情。只要虚拟地址被使用,那么它

2017-03-19 14:37:59 647

原创 树的镜向

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

2017-03-16 17:39:39 428

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

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

2017-03-16 17:02:10 1676

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

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

2017-03-15 21:17:27 3022

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

在上一节中,我们通过修改配置文件,便能让nginx去访问我们写的html文件,并返回给浏览器。问题是:nginx是如何检测到我们写的配置项的?检测到后,nginx又是如何知道该进行什么操作的?本节通过亲自实践,写一个经典的Hello World模块来了解相应的流程是如何进行的。我们采用自上向下的方法,先让模块跑起来,再去向下分析模块的具体细节。(一)模块源码准备工作:新建的模块名为ng

2017-03-15 21:04:19 1767

转载 C/C++面试

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

2017-03-13 20:49:28 1869 3

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

教你如何迅速秒杀掉:99%的海量数据处理面试题作者:July出处:结构之法算法之道blog前言   一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。

2017-03-13 20:22:56 447

转载 腾讯后台面试过程

一位自学生的努力与梦想求职历程:只面了两间,都是一轮笔试+三轮面试,拿到心仪公司offer后就木有参加其他面试了。1、淘宝(研发工程师)终面后被BS,那RP…。2、腾讯(后台开发工程师)成功拿到offer。学习经历:作为一个非计科专业的学生,三年自学血泪史历历在目。没人指导,靠自己摸搜,走过很多歪路,不被同学朋友理解,被老师当问题学生,被早学几年的前辈嘲笑。一度怀疑自己

2017-03-13 20:17:53 4616

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

前段时间专心面过腾讯,经过了N轮的技术面,结果还是挂了,但没挂在技术面,比较欣慰,回来之后写一点总结,以供有梦想进入腾讯做后台服务器开发的同学参考,本文章为胡成精心总结,胡成原创,copy和转载请通知。ps:()之内的文字由作者点评,非面试题文字。linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的

2017-03-13 20:14:59 10945 2

转载 Nginx常用命令

1. 启动 Nginxpoechant@ubuntu:sudo ./sbin/nginx2. 停止 Nginxpoechant@ubuntu:sudo ./sbin/nginx -s stoppoechant@ubuntu:sudo ./sbin/nginx -s quit-s都是采用向 Nginx 发送信号的方式。3. Nginx 重载配置poechan

2017-03-09 17:00:33 560

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

先写个HTML文件:新建目录/home/zxin/nginx_temp_file,在该目录下写个index.html文件: My Nginx This is my first nginx ! 修改配置文件:在配置文件nginx.conf(本机位置

2017-03-09 16:33:23 685

原创 linux下动态库的使用

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

2017-03-08 19:42:47 511

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

1.线程池基本原理  在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程

2017-03-06 16:21:26 384

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

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

2017-03-02 17:58:11 8122 3

转载 TCP 的那些事儿(下)

转自:http://coolshell.cn/articles/11609.html这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需

2017-03-02 17:26:18 317

转载 TCP 的那些事儿(上)

转自陈浩:酷客TCP头格式接下来,我们来看一下TCP头的格式TCP头格式(图片来源)你需要注意这么几点:TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口。一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议。但因为这里只是说TCP协议,所以,这里

2017-03-02 15:36:18 796

STL源码剖析 中文完整版(带目录).pdf

STL源码剖析 简体 中文 完整版 清晰 扫描 带目录

2016-07-22

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

TA关注的人

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