自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小青年儿

Think Different ! Beyond Technology !

  • 博客(294)
  • 收藏
  • 关注

原创 undefined reference to `pthread_create'的错误。

晚上编译一个工程,TMD编译时总是报thread.o: In function `create_thread':thread.c:(.text+0x1ef): undefined reference to `pthread_create'collect2: ld returned 1 exit statusmake: *** [serverd] Error 1的错误,可是makefi

2015-08-19 21:19:29 1099

原创 向GITHUB提交本地代码

第一步:在本机上操作1、安装 Git 客户端如何安装不同操作系统的 Git 客户端,参见:http://help.github.com/win-set-up-git/2、打开 Git Bash,开始键入各种配置信息:git config --global user.name "You Name"git config --global user.email yo

2015-08-06 22:31:42 1136 2

原创 压力测试工具ab

在 Apache 有个叫 ab(ApacheBench) 的程序, 此程序是专门用在做压力测试用的软件. ApacheBench(ab) 用来测试 apache 执行效率,可以用来测试网站的压力工具.ab 参数:Usage: /usr/sbin/ab [options] [http[s]://]hostname[:port]/pathOptions are:§ -n requests Number

2015-07-21 11:43:17 995

原创 ngx.timer.at(0, func)

ngx.timer.at syntax: ok, err = ngx.timer.at(delay, callback, user_arg1, user_arg2, …) The first argument, delay, specifies the delay for the timer, in seconds. One can specify fractional seconds li

2015-07-17 15:17:08 5830

原创 HTTP头部详解

轮询调度算法(Round-Robin Scheduling)  轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。   算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。   轮询调度算法流程   假设有一组服务器N台,S = {S1, S2, …, Sn},一个指示变量i表示上一次选择的服务器I

2015-07-14 15:05:36 722

原创 NGX负载均衡策略

负载均衡策略nginx的负载均衡策略可以划分为两大类:内置策略和扩展策略。内置策略包含加权轮询和ip hash,在默认情况下这两种策略会编译进nginx内核,只需在nginx配置中指明参数即可。扩展策略有很多,如fair、通用hash、consistent hash等,默认不编译进nginx内核,是第三方模块。nginx 的 upstream目前支持

2015-07-09 14:51:17 2473

原创 NGX打印日志时对特殊字符的转码

问题: [root@3WR ~]# curl -svo /dev/null test/ -x 127.0.0.1:9711 日志打印结果不一致1.控制台输出结果>User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 **OpenSSL/0.9.**zlib/1.2.3 libidn/0.6.52.access.log

2015-07-01 17:16:37 3798

原创 查看某个进程号下面的子进程

[root@3WR ~]# ps --ppid 60768   PID TTY          TIME CMD 38907 ?        00:00:03 nginx 38908 ?        00:00:03 nginx

2015-07-01 11:33:09 4784

原创 使用curl命令发送http请求

Examples: curl -svo /dev/null http://test/index.html -x 127.0.0.1:9711

2015-07-01 11:03:53 3625

原创 利用二级指针删除单向链表

Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。下面是Linus的教学原文及翻译——“At the opposite end of the spectrum, I actually wish more people und

2015-06-25 17:47:18 613

原创 Nginx+Lua开发

Lua入门本文目的是学习Nginx+Lua开发,对于Lua基本知识可以参考如下文章:Lua简明教程http://coolshell.cn/articles/10739.htmllua在线lua学习教程http://book.luaer.cn/Lua 5.1 参考手册http://www.codingnow.com/2000/download/lua_manual.htm

2015-06-19 17:50:21 2400

原创 Nginx源码分析之变量

nginx中的变量在nginx中的使用非常的多,正因为变量的存在,使得nginx在配置上变得非常灵活。我们知道,在nginx的配置文件中,配合变量,我们可以动态的得到我们想要的值。最常见的使用是,我们在写access_log的格式时,需要用到多很多变量。 而这些变量是如何工作的呢?我们可以输出哪些变量?我们又怎么才能输出自己想要的内容呢?当然,我们可能还想知道,如何在我们的模块里面去使

2015-06-19 16:50:41 657

原创 图解TCP-IP协议

本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。图1 TCP 三次握手四次挥手图1主要包括三部分:建立连接、传输数据、断开连接。1)建立TCP连接很简单,通过三次握手便可建立连接。2)建立好连接后,开始传输数据。TCP数据传输牵涉到的概念很多

2015-06-12 11:34:42 668

原创 在阅读源代码或设计文档时,看到惊艳的技巧

提两个C语言里实现列表用到的技巧。会用的人可能会觉得很平常,但是第一次看到的时候还是觉得很厉害的:两级指针:两级指针要怎么用呢?我们先来看一下大部分正常人实现列表的方法://定义链表节点structstruct node { data_type data; struct node *next, *prev;}*head = NULL;//然后插入一个节点就要这样:

2015-04-13 21:39:16 957

原创 Reactor 模式

概念:Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。 并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。 先用比较直观的方式来介绍一下这种方

2015-04-02 21:31:21 817

原创 libevent源码分析

1、入门1.1、概述Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点: (1)事件驱动(event-driven),高性能;(2)轻量级,专注于网络,不如 ACE 那么臃肿庞大; (3)源代码相当精炼、易读; (4)跨平台,支持 Windows、Linux、*BSD和 Mac Os;

2015-03-30 21:22:08 687

原创 ptrace

下面是转帖的内容,写的很详细。但是不同的linux发行版中头文件的路径和名称并不相同。如在某些发行版中就不存在,其中定义的变量出现在和中。==================================================================================================by Pradeep PadalaCrea

2015-01-24 20:28:18 974

原创 Nginx定时器机制的实现

nginx提供一套高效的定时器实现,除了nginx核心能够使用定时器以外,我们在进行模块开发的时候也可以使用定时器来完成一些定时执行的任务。nginx定时器实现的核心是使用一棵红黑树来存储各个定时事件,每次循环的时候就从这棵树里找出超时的事件,然后一一触发,完成定时任务操作。下面简单的描述一下nginx在实现定时器时的几个关键点。本文是基于linux的epoll来描述的定时器实现。

2015-01-11 09:44:52 1038 1

原创 Nginx如何解决事件过期问题

详细解释请参考《Nginx模块开发与架构解析》的9.6.3节ngx_epoll_module模块的实现nginx源码如下:static ngx_int_tngx_epoll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags){ int op; uint32_t

2015-01-10 23:47:27 1711 2

原创 Epoll的LT模式与ET模式分析

ET模式仅当状态发生变化的时候才获得通知,这里所谓的状态的变化并不包括缓冲区中还有未处理的数据,也就是说,如果要采用ET模式,需要一直read/write直到出错为止,很多人反映为什么采用ET模式只接收了一部分数据就再也得不到通知了,大多因为这样;而LT模式是只要有数据没有处理就会一直通知下去的.    LT(level triggered)是缺省的工作方式,并且同时支持block和no-bl

2015-01-10 22:12:41 1058

原创 docker详细的基础用法

2、docker使用过程实践2.1 在测试机启动容器,安装ssh    docker run -i -t ubuntu /bin/bash #此方式运行的容器,退出后容器就会关闭。      apt-get install openssh-server #安装ssh      #需要修改/etc/sshd/sshd_config文件中内容      Permit

2015-01-10 12:08:45 878

原创 深入浅出Docker(二):Docker命令行探秘

【编者按】Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源。Docker提供了一种在安全、可重复的环境中自动部署软件的方式,它的出现拉开了基于云计算平台发布产品方式的变革序幕。为了更好的促进Docker在国内的发展以及传播,我们决定开设《深入浅出Docker》专栏,邀请Docker

2015-01-10 09:48:11 987

原创 socketpair

一.概念及用途一个问题:如何创建全双工管道?直接的办法当然是pipe两次,创建两组管道,但是有没有更简单的呢?socketpair就可以了,man socketpair:socketpair - create a pair of connected sockets, The two sockets are indistinguishable,也就是说,用socketpair创建

2015-01-02 12:06:02 964

原创 红黑树算法解析

红黑树系列,六篇文章于今日已经完成:1、教你透彻了解红黑树2、红黑树算法的实现与剖析3、红黑树的c源码实现与剖析4、一步一图一代码,R-B Tree5、红黑树插入和删除结点的全程演示6、红黑树的c++完整实现源码------------------------------ 一、红黑树的介绍先来看下算法导论对R-B Tree的介绍:红黑树,一种二叉查找树,但在每个结点上增

2014-12-31 19:51:48 1202

原创 U盘安装ubuntu组成双系统

简介  想学习一下linux,于是准备安装ubuntu桌面版,去ubuntu官网下载最新了目前最新的ubuntu-12.10-desktop-i386.iso镜像文件。我当前操作系统是win7,去网上搜索到的硬盘安装方法感觉比较麻烦,加上我本身有一个4GB大小的U盘,之前一直中意用U盘安装系统,于是搜索了U盘安装ubuntu的方法。网上的教程写的都比较清楚,不过安装过程中却给我带来不少麻烦

2014-12-23 21:51:09 907

原创 Docker源码分析(一):Docker架构

【编者按】在《深入浅出Docker》系列文章的基础上,InfoQ推出了《Docker源码分析》系列文章。《深入浅出Docker》系列文章更多的是从使用角度出发,帮助读者了解Docker的来龙去脉,而《Docker源码分析》系列文章通过分析解读Docker源码,来让读者了解Docker的内部实现,以更好的使用Docker。总之,我们的目标是促进Docker在国内的发展以及传播。另外,欢迎加入Info

2014-12-16 22:34:50 1031

原创 git clone速度慢

解决方法:1.clone最新一个提交git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 2.更新获取完整历史版本[如果需要的话]git fetch --unshallow

2014-12-13 22:57:25 4462

原创 signalfd、timerfd、eventfd使用说明

种新的fd加入linux内核的的版本:signalfd:2.6.22timerfd:2.6.25eventfd:2.6.22三种fd的意义:signalfd:传统的处理信号的方式是注册信号处理函数;由于信号是异步发生的,要解决数据的并发访问,可重入问题。signalfd可以将信 号抽象为一个文件描述符,当有信号发生时可以对其read,这样可以将信号的监听放到se

2014-12-13 20:38:42 1194

原创 Linux epoll工作原理

定义:  epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被

2014-12-13 19:42:28 1141 1

原创 Nginx源码学习资源集

nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源。首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的。看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码。现在你最希望要的是一份注释版的nginx源码,可以从下面的链接中下载一份:https://github.com/jianfengye/ngi

2014-12-06 21:50:24 934

原创 服务器运维手册

添加一个新的用户,并给用户设置密码useradd 用户名passwd 用户名输入密码即可

2014-11-20 22:29:11 1739

原创 Linux shell控制台前缀

环境变量 PS1以 Bash shell 为例一般默认的情况下.bashrc里面应该是:    ~/.bashrc     export    PS1=' \u@\h:\w\$ '     上面的意思是:用户@主机:当前目录 $转义序列    要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制

2014-11-20 22:03:41 2850

原创 【Laravel】安装配置开发环境

摘要Laravel的目标是给开发者创造一个愉快的开发过程,并且不牺牲应用的功能性。快乐的开发者才能创造最棒的代码!为了这个目的,开发者博取众框架之长处集中到Laravel中,这些框架甚至是基于Ruby on Rails、ASP.NET MVC、和Sinatra等开发语言或工具的。对Laravel初步认知刚从事PHP开发没多久,对PHP的一些框架了解甚少,在CSDN上看到一篇

2014-11-18 21:57:47 979

原创 yum [Errno 256] No more mirrors to try 解决方法

刚才安装smb时遇到问题yum [Errno 256] No more mirrors to try 解决方法:1.yum clean all2.yum makecache3. yum update

2014-11-10 23:12:08 41212 8

原创 git不能上传空目录

git 和 svn 不同,仅仅跟踪文件的变动,不跟踪目录。Perforce 也是如此。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留某个空目录。比如测试时需要用到的空目录。变通的解决办法是在空目录下存

2014-11-07 23:46:27 4997

原创 查看系统信息

一。查看内核版本命令:1) [root@SOR_SYS ~]# cat /proc/versionLinux version 2.6.18-238.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Sun Dec 19 14:22

2014-11-01 21:38:43 732

原创 服务器运维的几重境界

标题所说的运维是一个比较宽泛的概念,基本上与游戏本身无关的、程序员(主要针对服务器)又要去做的事情都涵盖在内,包括版本管理、发布部署、集群管理、服务器容灾、服务器扩容、数据备份恢复、监控警报等等。“虽然我很笨,但是我很勤奋。”就像愚公移山,最原始的运维靠的是蛮力。愚公的愚主要就体现在做事情太直接,缺乏进一步的思考。要打版本?新建个目录把代码check出来,make一下就编译好了

2014-10-14 21:35:30 1736

原创 PHP环境搭建:Ubuntu系统配置Apache+MySQL+PHP

1.#apt-get install apache2 php5 mysql-server2.#mysql-server libapache2-mod-auth-mysql php5-mysql3.配置虚拟主机  #vi /etc/apache2/sites-available/default   可以把其中默认的/var/www改成自己的,也可以另外添加虚拟配置 N

2014-09-07 15:42:51 841

原创 理解MVC

学习一个框架之前,基本上我们都需要知道什么是mvc,即model-view-control,说白了就是数据控制以及页面的分离实现,mvc就是这样应运而生的,mvc分为了三个层次,而且三个层次各司其职,互不干扰,首先简单介绍下,各个层次,view即是视图,也就是web页面,control即是控制器 向系统发出指令的工具,model 简单说是从数据库中取出数据进行处理。Mvc的工作流程:第一步

2014-09-07 13:19:17 658

原创 PHP发送邮件

我们知道,PHP发送邮件有两种方式,一个是mail()函数,另一个就是socket发送邮件。对于第一种方式,我不多做介绍,因为它的用法相对简单,只是说可能需要配置的东西比较多。详细可参加PHP文档。这里,我主要谈谈第二种方式。讲到第二种方式,我首先要谈谈发送邮件的原理。发送邮件是基于客户/服务器模式的,也就是说,客户端首先需要向服务器端发送连接请求,当双方连接后,再进行数据的传输,

2014-08-28 22:40:07 850

空空如也

空空如也

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

TA关注的人

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