自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (6)
  • 收藏
  • 关注

原创 统计数组

原题给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。能够在O(n)的时间复杂度,O(1)的空间复杂度要求下完成么?分析这个题目,是有一定技巧的。技巧是需要慢慢积累,待经验多了之后,可以灵感或者直觉,就产生了技巧。如果不知道技巧,那该怎么办呢?在开始分析之前,说明两个问题:

2014-09-22 17:54:17 691

原创 腾讯2015校园招聘技术类研发笔试题

一、不定项选择题(共25题,每题4分,共100分,多选、少选、错选均不得分)1、 如果MyClass为一个类,执行”MyClass a[5], *b[6]”语言会自动调用该类构造函数的次数是()A. 2 B.5 C. 4 D.92、下面程序的运行结果是()#includeusing namespace std;class Base{int x;public:Base(i

2014-09-19 22:37:15 2556

原创 腾讯软件测试笔试题

1、计算机系统中CPU中的base寄存器和limit寄存器的作用是()    base寄存器是指向

2014-09-19 21:20:42 2767

原创 C++ 从终端获取字符串——OJ字符串输入处理

首先我们来看cin的用法:

2014-09-19 14:17:14 3816

原创 Iptables服务全攻略之实战

Iptables原理现在防火墙主要分以下三种类型:包过滤、应用代理、状态检测包过滤防火墙:现在静态包过滤防火墙市面上已经看不到了,取而代之的是动态包过滤技术的防火墙哈~代理防火墙:因一些特殊的报文攻击可以轻松突破包过滤防火墙的保护,比如大家知道的SYN攻击、ICMP洪水攻击,所以以代理服务器作为专门为用户保密或者突破访问限制的数据转发通道的应用代理防火墙出现了哈~其使用了一种应用协议分

2014-09-15 23:03:42 2180

原创 泛洪攻击的几种方法解析

ICMP泛洪ICMP泛洪(ICMP flood)是利用ICMP报文 进行攻击的一种方法。如果攻击者向目标主机发 送大量的ICMP ECHO报文,将产生ICMP泛洪, 目标主机会将大量的时间和资源用于处理ICMP ECHO报文,而无法处理正常的请求或响应,从而实现对目标主机的攻击。ICMP反射泛洪:Smurf IP利用广播地址发送ICMP包,一旦广播出去,就会被广播域内的所有

2014-09-15 21:42:32 6734

原创 TCP为什么需要3次握手与4次挥手

为什么需要“三次握手”            在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。            谢希仁版《计算机网络》中的例子是这样的,“已失效的连接

2014-09-15 00:12:57 691

原创 Linux线程池

半同步 / 半反应堆线程池的实现这里我们实现了一个半同步 / 半反应堆并发模式的线程池,代码清单见https://github.com/walkerczb/threadpool 中的 threadpool.h 。该线程池使用一个工作队列完全解除了主线程和工作线程的耦合关系:主线程往工作队列中插入任务,工作线程通过竞争来取得任务并执行它。不过,如果要将该线程池应用到实际服务器程序中,那么我们

2014-09-14 12:53:45 1078

转载 Linux进程池的实现

通过动态创建子进程(或者子线程)来实现并发服务器的。这样做有如下缺点: 1、 动态创建进程(或线程)是比较耗费时间的,这将导致较慢的客户响应。 2、动态创建的子进程(或子线程)通常只用来为一个客户服务(除非我们做特殊处理),这将导致系统上产生大量的细微进程(或者线程)。进程(或者线程)间的切换消费大量CPU时间。 3、动态创建的子进程是当前进程的完整映像。当前进程...

2014-09-13 23:40:51 5977 4

原创 Ubuntu 12.04 搭建bind9域名服务器实验

基本概念:DNS:Domain Name Server,一种程序,它保存了一张域名(domain name)和与相对应的IP地址(IP address)的表,以解析消息的域名。域名:internet上某一台计算机或计算机组的名称,是IP地址的映射。域名解析实际上就是把域名映射回IP地址。域名解析的过程:当一个浏览者在浏览器地址框中打入某一个域名,或者从其他网站点击了链接来到了这个域名,

2014-09-13 23:07:33 1211

原创 使用queryperf对DNS服务器作压力测试

一、querperf简介当我们把DNS服务器配置好后,我们肯定会想测试一下DNS服务器的性能如何,上线后如果请求数够多服务器还能否响应?于是,我们可以使用软件模拟环境,对DNS服务器作评估性的测试。在bind中,有一款自带的压力测试软件,queryperf。使用这款软件可以对DNS服务器作请求测试,并且使用方法简单,我们可以使用queryperf测试多次,取一个平均值,这样就算结果不准确,

2014-09-13 17:30:26 1541

原创 实战Memcached缓存系统(7)Memcached的一些基础FAQ

1. Memcached是什么?Memcached是分布式的内存对象缓存系统。2. Memcached的基本数据结构是什么?Memcached是基于Key/Value对的HashMap。每一对,都可以设定过期时间。3. Memcached用什么实现?服务端程序由C语言编写,客户端可以用任何语言编写。客户端通过Memcached协议与服务端通信。4.

2014-09-11 10:13:21 543

转载 实战Memcached缓存系统(6)Memcached CAS的多线程程序实例

1. 源程序package com.sinosuperman.memcached;    import java.io.IOException;  import java.net.InetSocketAddress;    import net.spy.memcached.CASResponse;  import net.spy.memcached.CASV

2014-09-11 10:12:21 693

原创 实战Memcached缓存系统(5)Memcached的CAS程序实例

1. 非CAS首先看一个不是CAS的Memcached程序实例。实例的问题原型,见上一篇博文。程序实例:package com.sinosuperman.memcached;    import java.io.IOException;  import java.net.InetSocketAddress;    import net.s

2014-09-11 10:11:47 568

原创 实战Memcached缓存系统(4)Memcached的CAS协议

1. 什么是CAS协议很多中文的资料都不会告诉大家CAS的全称是什么,不过一定不要把CAS当作中国科学院(China Academy of Sciences)的缩写。Google.com一下,CAS是什么?CAS是Check And Set的缩写。2. CAS协议原文http://code.sixapart.com/svn/memcached/trunk/ser

2014-09-11 10:11:05 647

转载 实战Memcached缓存系统(3)Memcached配置参数初解

一、基本参数在我们第一次安装Memcached时,一般都是用过这个命令:memcached -m 512 -u root -d -l 127.0.0.1 -p 11211  我们先来解释这几个参数的含义吧。-m 指定缓存所使用的最大内存容量,单位是Megabytes,默认是64MB-u 只有以root身份运行时

2014-09-11 10:10:22 524

原创 实战Memcached缓存系统(2)Memcached Java API基础之MemcachedClient

1. 构造函数public MemcachedClient(InetSocketAddress[] ia) throws IOException;  public MemcachedClient(List addrs) throws IOException;  public MemcachedClient(Connection

2014-09-11 10:09:33 562

转载 实战Memcached缓存系统(1)Memcached基础及示例程序

1、Cache定义(1)狭义概念:用于CPU的相对高速处理与主存(Main Memory)的相对低速处理的之间起到协调功能的硬件设备。(2)广义概念:用于速度相差较大的两种硬件之间,起到协调两者数据传输速度差异的结构。狭义概念来自于Cache自1967出现以来较长时间内的应用场景。因为CPU的数据处理速度,要远远高于主存,所以在CPU和主存之间会有高速缓存设备,甚至是多级缓存设备。而广

2014-09-11 10:08:50 544

原创 Apache、Nginx 、Lighttpd性能比较

1. web服务器简介1. lighttpd     Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的Web server环境        Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为

2014-09-11 10:02:15 663

原创 Nginx学习之十四-GDB调试Nginx初试

本文的测试环境:Win7+虚拟机VMWareVMware-workstation-full-7.1.4-385536+Ubuntu12.04Nginx-1.4.0要想有效的研究Nginx源码,必须要动手调试,GDB就是有用的利器。下面简要介绍用GDB调试Nginx的一个小例子。本文完成了这样的工作:跟踪worker子进程,观察worker子进

2014-09-11 09:56:28 540

原创 Nginx学习之十三-负载均衡-IP哈希策略剖析

前面介绍过nginx负载均衡的加权轮询策略(http://blog.csdn.net/xiajun07061225/article/details/9318871),它是Nginx负载均衡的基础策略,所以一些初始化工作,比如配置值转储,其他策略可以直接复用他。在后面的初始化的代码中将可以看到。注:本文中源代码版本为Nginx-1.4.0。IP哈希初始化

2014-09-11 09:55:45 684

原创 Nginx学习之十二-负载均衡-加权轮询策略剖析

本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更多机会获取到监听套接口,从而客户端的请求到达后也就相应地被它捕获并处理)。如果Nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适

2014-09-11 09:55:10 575

原创 Nginx学习之十一-Nginx启动框架处理流程

Nginx启动过程流程图下面首先给出Nginx启动过程的流程图:ngx_cycle_t结构体Nginx的启动初始化在src/core/nginx.c的main函数中完成,当然main函数是整个Nginx的入口,除了完成启动初始化任务以外,也必定是所有功能模块的入口之处。Nginx的初始化工作主要围绕一个类型为ngx_cycle_t类型的全局变量(

2014-09-11 09:53:31 620

原创 Nginx学习之十-超时管理(定时器事件)

Nginx事件管理主要是网络事件和定时器事件。下面介绍定时器事件管理,即超时管理。为什么要进行超时管理Nginx有必要对可能发生超时的事件进行统一管理,并在事件超时时作出相应的处理,比如回收资源,返回错误等。举例来说,当客户端对nginx发出请求连接后,nginx机会accept()并建立对应的连接对象、读取额护短请求的头部信息。而读取这个头部信息显然是要在

2014-09-11 09:52:47 511

原创 Nginx学习之九-负载均衡(客户端请求与Nginx进程间负载均衡)

本文介绍的负载均衡是针对的客户端请求在多个Nginx进程之间的均衡。注意与客户端请求在多个后端服务器之间的均衡相区别。负载均衡问题的产生在nginx中,建立连接的时候,会设计负载均衡问题。在多个子进程争抢处理一个新连接事件时,一定只有一个worker子进程最终会成功建立连接,随后它会一直处理这个连接直到连接关闭。那么,就有可能出现这样的情况:有的子进程建立并处理

2014-09-11 09:51:50 890

原创 Nginx学习之八-惊群问题

惊群问题(thundering herd)的产生在建立连接的时候,Nginx处于充分发挥多核CPU架构性能的考虑,使用了多个worker子进程监听相同端口的设计,这样多个子进程在accept建立新连接时会有争抢,这会带来著名的“惊群”问题,子进程数量越多越明显,这会造成系统性能的下降。一般情况下,有多少CPU核心就有配置多少个worker子进程。假设现在没有用户连入服务器,

2014-09-11 09:51:13 590

原创 Nginx学习之七-模块ngx_epoll_module详解(epoll机制在nginx中的实现)

本文结合实际代码介绍事件驱动模块接口与epoll用法是如何结合起来发挥作用的。Nginx中ngx_epoll_module模块基于epoll实现了Nginx的事件驱动。模块定义(src/event/ngx_epoll_module.c):[cpp] view plaincopyprint?ngx_module_t  ngx_epoll

2014-09-11 09:50:30 723

原创 Nginx学习之六-nginx核心进程模型

一、Nginx整体架构正常执行中的nginx会有多个进程,最基本的有master process(监控进程,也叫做主进程)和woker process(工作进程),还可能有cache相关进程。一个较为完整的整体框架结构如图所示:二、核心进程模型启动nginx的主进程将充当监控进程,而由主进程fork()出来的子进程则充当工作进程。ng

2014-09-11 09:49:16 574

原创 Nginx学习之四-Nginx进程同步方式-自旋锁(spinlock)

自旋锁简介Nginx框架使用了三种消息传递方式:共享内存、套接字、信号。Nginx主要使用了三种同步方式:原子操作、信号量、文件锁。基于原子操作,nginx实现了一个自旋锁。自旋锁是一种非睡眠锁。如果某进程视图获得自旋锁,当发现锁已经被其他进程获得时,那么不会使得当前进程进入睡眠状态,而是始终保持进程在可执行状态,每当内核调度到这个进程执行时就持续检查是否可以获

2014-09-11 09:47:11 734

原创 Nginx学习之五-nginx基础架构设计

一、优秀的模块化设计(1)高度抽象的模块接口所有的模块都遵循着同样的ngx_module_t接口设计规范。(2)模块接口简单,灵活性高模块的基本接口ngx_module_t足够简单,只涉及模块的初始化、退出以及对配置项的处理,这同时带来了足够的灵活性,是的nginx比较简单的实现了动态可修改性,也就是保持服务正常运行下使得系统功能发生改变。102

2014-09-11 09:45:54 626

原创 Nginx学习之三-ngx_http_request_t结构体

ngx_http_request_s是nginx中非常重要的一个结构体,贯穿于htpp请求处理的整个过程中。下面解释了ngx_http_request_s结构体中与HTTP框架相关的重要的成员变量。[cpp] view plaincopyprint?struct ngx_http_request_s {      uint32

2014-09-11 09:44:06 908

原创 Nginx学习之二-配置项解析及编程实现

在开发功能灵活的Nginx模块时,需要从配置文件中获取特定的信息。不过,我们并不需要再编写一套读取配置的系统,Nginx已经为用户提供了强大的配置项解析机制,同时还支持“-s reload”命令,可以在不重启服务的情况下可使配置生效。一、Nginx配置文件简介如果编译安装Nginx时使用默认路径,那么Nginx运行目录是/usr/local/nginx,其配置文件存放目

2014-09-11 09:43:03 659

原创 Nginx学习之一-第一个程序Hello World

本例子实现了一个简单的hello world程序。运行效果:虚拟机Ubuntu中:win7中chrome浏览器:一、config文件编写Nginx提供了一种简单的方式将第三方的模块编译到Nginx中。首先把源代码文件全部放到一个目录下,同时在该目录中编写一个文件用于通知Nginx如何编译本模块,这个文件名必须为config

2014-09-11 09:42:23 613

原创 SGI STL空间配置器详解(二)-第二级空间配置器

本文讲解SGI STL空间配置器的第二级配置器。相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片。不仅仅是碎片的问题,配置时的额外负担也是一个大问题。因为区块越小,额外负担所占的比例就越大。额外负担是指动态分配内存块的时候,位于其头部的额外信息,包括记录内存块大小的信息以及内存保护区(判断是否越界)。要想了解详细信息,请参考MSVC或者其他malloc实现。

2014-09-11 09:40:37 766

原创 SGI STL空间配置器详解(一)-第一级空间配置器

一、SGI STL配置器简介SGI STL的配置器与众不同,它与标准规范不同。如果要在程序中明确使用SGI配置器,那么应该这样写:[cpp] view plaincopyprint?vectorint,std::alloc> iv;  他的名字是alloc,而且不接受任何参数。标准配置器的名字是allocator,

2014-09-11 09:37:34 770

原创 C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例

一、容器适配器stackqueuepriority_queuestack、queue、priority_queue 都不支持任一种迭代器,它们都是容器适配器类型,stack是用vector/deque/list对象创建了一个先进后出容器;queue是用deque或list对象创建了一个先进先出容器;priority_queue是用vector/deque创建了一个排

2014-09-11 09:01:34 774

原创 C++之STL(九):函数适配器bind2nd 、mem_fun_ref 源码分析、函数适配器应用举例

一、适配器三种类型的适配器:容器适配器:用来扩展7种基本容器,利用基本容器扩展形成了栈、队列和优先级队列迭代器适配器:(反向迭代器、插入迭代器、IO流迭代器)函数适配器:函数适配器能够将仿函数和另一个仿函数(或某个值、或某个一般函数)结合起来。针对成员函数的函数适配器针对一般函数的函数适配器二、函数

2014-09-11 09:00:20 748

原创 C++之STL(八):函数对象、 函数对象与容器、函数对象与算法

一、函数对象1、函数对象(function object)也称为仿函数(functor)2、一个行为类似函数的对象,它可以没有参数,也可以带有若干参数。3、任何重载了调用运算符operator()的类的对象都满足函数对象的特征4、函数对象可以把它称之为smart function。5、STL中也定义了一些标准的函数对象,如果以功能划分

2014-09-11 08:59:36 562

原创 C++之STL(十):迭代器适配器{(插入迭代器back_insert_iterator)、IO流迭代器(istream_iterator、ostream_iterator)}

一、迭代器适配器反向迭代器插入迭代器IO流迭代器其中反向迭代器可以参考以前的文章。二、插入迭代器插入迭代器实际上是一个输出迭代器(*it=; ++)back_insert_iteratorback_inserterfront_insert_iteratorfront_inserter

2014-09-11 08:58:41 1539

原创 C++之STL(六):变动性算法源代码分析与使用示例(copy_backward、 transform、 replace_copy_if 等)

我们把for_each 归类为非变动性算法,实际上它也可以算是变动性算法,取决于传入的第三个参数,即函数指针。如果在函数内对容器元素做了修改,那么就属于变动性算法。变动性算法源代码分析与使用示例:一、copy、copy_backward C++ Code 1234567891

2014-09-11 08:58:09 935

jdk-8u111-linux-x64.zip

jdk-8u111-linux-x64.tar.gz.

2019-06-10

mysql-5.6.26.7z

mysql-5.6.26.tar.gz 下载下载.

2019-06-09

TCP-IP详解卷1

这本书是学习TCP/IP协议的经典,是初学者学习的最好的入门资料。

2012-06-27

嵌入式WEB服务器及远程测控应用详解

重点描述了在嵌入式Linux系统上搭建Web服务器,通过Web的方式控制和检测资源。物联网。

2012-06-27

Java学习手册光盘

里面的资源很全,代码很实用。对学习Java编程的人,很实用。

2012-03-07

空空如也

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

TA关注的人

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