- 博客(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 1536
原创 Nginx源码分析与实践---进程间通信机制(信号)
在前面我们分析了nginx进程间通信机制的共享内存和套接字。这次我们分析剩下一种进程间通信机制---信号。首先要区分信号和信号量:信号是用于进程间通信的机制,而信号量是用于保证共享资源不被并发访问的机制,如可使用信号量作为互斥锁实现多进程下对共享资源的同步。1.nginx中什么地方用到了信号?比如我们输入命令:./nginx -s reload或./nginx -s stop,
2017-03-28 15:25:37 1218
原创 生产者-消费者问题
生产者-消费者问题是进程间或线程间同步的经典问题。该问题有多种实现,如消息队列、共享内存等,这次我们用的是多线程和互斥锁以及条件变量来实现该问题。动手写程序之前先得把问题想明白。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 1346 2
原创 Nginx源码分析与实践---进程间通信机制(共享内存)
Nginx有一个master进程和多个worker进程,那么master进程与worker进程间或worker进程之间是如何通信的呢,又什么时候需要进程间通信呢?我们知道linux下的进程间通信方式主要有:管道、FIFO、套接字、消息队列、共享内存、信号。那么nginx的进程间通信方式采用的是什么呢?nginx的3种进程间通信方式为:共享内存、套接字、信号共享内存1.什么时
2017-03-24 16:40:35 2366
转载 内存管理之程序内存分布
在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中。这个沙盘就是虚拟地址空间(virtual address space)。1 32位虚拟内存布局在32位模式下虚拟地址空间总是一个4GB的内存地址块。这些虚拟地址通过页表(page table)映射到物理内存,页表由操作系统维护并被处理器引用。每一个进程拥有一套属于它自己的页表,但是还有一个隐情。只要虚拟地址被使用,那么它
2017-03-19 14:37:59 648
原创 树的镜向
问题: 求一颗树的镜向解决思路: 镜向其实就是将所有结点的左右两个子结点交换就行。所以可以遍历二叉树,遍历到一个结点时,交换其左右两个子结点。代码:递归版本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 1677
原创 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 3024
原创 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 1870 3
转载 教你如何迅速秒杀掉:99%的海量数据处理面试题
教你如何迅速秒杀掉:99%的海量数据处理面试题作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。
2017-03-13 20:22:56 448
转载 腾讯后台面试过程
一位自学生的努力与梦想求职历程:只面了两间,都是一轮笔试+三轮面试,拿到心仪公司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 10949 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 687
原创 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 514
转载 一个Linux下C线程池的实现
1.线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程
2017-03-06 16:21:26 384
原创 关于TCP超时重传、快速重传、慢启动、拥塞避免、拥塞发生、快速恢复、滑动窗口之间的关系概括
标题上这些概念很多,理解也有一定困难,尤其是它们之间的相互关系。这次就简单概括一下。1.滑动窗口接收端使用的流量控制。当接收端的应用程序从TCP缓存中提取数据速度过慢,导致TCP缓存中还有未被提取的数据,由于TCP缓存大小是固定的,则接收端下次能接收的数据量就变小了。2.糊涂窗口综合症当滑动窗口变为0的时候,则发送端不能再继续发送任何数据。若之后应用程序从TCP缓存中提取了几个字节
2017-03-02 17:58:11 8123 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 799
fortran语言,初次接触fortran
2015-10-09
关于goto语句执行问题
2015-10-09
有人懂fortran语言吗?可以帮我看下代码,写成c语言吗?十分感谢!
2015-10-09
vc++中中文注释有下划线,怎么去掉
2015-09-05
vc中程序调用ntgraph控件
2015-08-20
vc中写好的程序怎么利用控件
2015-08-18
全局变量的定义和使用
2015-08-18
卷积的C++实现的代码问题
2015-08-16
负几十次方数字的数据类型
2015-08-15
vc中用struct来将txt文件中的数据导入到数组中
2015-08-14
c++读取txt文件中的数据
2015-08-14
vc程序中调用控件的方法,谢谢。
2015-08-13
vc程序中使用控件的方法,谢谢。
2015-08-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人