自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 PHP获取用户IP地址

<?phpfunction getClientIp() { $uip = ''; if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], 'unknow')) { $uip = $_SERVER['HTTP_X_FORWARDED_FOR']; strpo

2015-08-06 12:29:41 423

原创 PHP 利用SPL标准库获取数组中最小的K个值

class MaxHeap extends SplHeap{ public function compare($value1, $value2) { return ($value1 - $value2); } public function GetKMinNum($arr, $k){ if(is_array($arr) && $k > 0){

2015-06-26 10:30:57 460

原创 PHP设计模式之调解者模式

<?phpabstract class Filter{ abstract public function _filter($value);}class TrimFilter extends Filter{ public function _filter($value){ return trim($value); }}class HtmlFilter

2015-06-25 10:28:09 385

原创 PHP设计模式

PHP常见设计模式主要有:工厂模式、单例模式1、工厂模式<?phpabstract class DB{ abstract public function select(); abstract public function update(); abstract public function delete(); abstract public functi

2015-06-25 09:47:10 311

转载 大型网站架构体系的演变

转载地址:http://mp.weixin.qq.com/s?__biz=MjM5MzA0OTkwMA==&mid=209324678&idx=1&sn=74ad681fa74547426493f2f44af045cc#rd互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。本文上篇将

2015-06-24 11:13:09 526

原创 常见漏洞及处理方法

1、sql注入      什么是sql注入?就是用户输入特殊字符改变原有sql的语义,这就叫sql注入。      我们看一下例子:      首先建立一个简单的user表模拟一下sql注入,如图所示           然后我们模拟一下用户登录:  $username = $_POST['username'];$passwd = $_POST['passwd'];$s

2015-06-23 16:01:48 731

转载 Apache和Nginx运行原理解析

转载地址:http://www.server110.com/nginx/201402/6543.htmlWeb服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。应用层使用HTTP协议。HTML文档格式。浏览器统一资源定位器(URL)。Web服务器常常以B/S(Browser/Server)方式提供服务。浏览器和服务器的交

2015-06-19 16:33:43 485

原创 session原理

PHP SESSION原理我们知道,session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据。HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscape将cookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众多用户的会话数据呢?首先要将客户端和服务器端建立一一联系,每个客户端都得有一个唯一标识,这

2015-06-17 10:21:51 599

原创 如何判断一个请求为ajax请求?

如何判断一个请求为ajax请求?1、我们可以通过http协议头信息里的X-Requested-With进行判断2、如果是使用jquery完成的ajax请求时,$_SERVER里会存在一个HTTP-X-REQUESTED-WITH键值,可以通过这个来判断      如:if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){

2015-06-16 15:16:56 1581

转载 IO多路复用的几种实现机制的分析

转载地址:http://blog.youkuaiyun.com/zhang_shuai_2011/article/details/7675797elect,poll,epoll都是IO多路复用的机制。所谓I/O多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们

2015-06-15 14:53:46 537

转载 IO基础入门之I/O多路复用技术

转载地址:http://my.oschina.net/fhd/blog/369064在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程/多进程模型比,I/O多路复用的最大优势是系统开销小,系统不需要创

2015-06-15 14:28:39 582

原创 面试题总结

1、关于商品秒杀的问题,如何保证100件商品,只能使前100个用户抢到呢?     思路1、我们可以使用redis缓存的list存储类型,当有一个用户请求到来时,将该用户的id存放在list中,这样当list中的llen长度达到100时就不在添加新的用户id,然后在从list中取出对应的id操作数据库,这样有一个缺点是会有一定的延迟。     谁有更好的思路,欢迎讨论2、关于mysql

2015-06-14 14:33:23 423

原创 CGI与fast-CGI的区别

PHP以CGI方式运行时,当一个请求向web server请求动态页时,web server总会fork一个CGI解释器进程进行处理这个请求,进程处理完成之后将结果返回给web server,web server将结果返回并显示出来,进程结束,当用户再次请求同一个页面时,web server总会fork一个进程进行处理,这样效率会比较低下(CGI被人诟病的主要原因)PHP以fast-CGI方式

2015-06-11 09:38:00 1889

原创 C语言 判断二叉树是不是平衡树

int getTreeDepth(treeNode *pRoot){ if(pRoot == NULL){ return 0; } int left = getTreeDepth(pRoot->pLeft); int right = getTreeDepth(pRoot->pRight); return left > right ? left+1 : right+1;}bool

2015-06-10 16:49:14 854

原创 C语言 判断二叉树是不是平衡树

int getTreeDepth(treeNode *pRoot){ if(pRoot == NULL){ return 0; } int left = getTreeDepth(pRoot->pLeft); int right = getTreeDepth(pRoot->pRight); return left > right ? left+1 : right+1;}bool

2015-06-10 16:48:56 741

原创 C语言 打印路径节点值的和为指定和的所有路径

typedef struct treeNode{ int data; struct treeNode *pLeft; struct treeNode *pRight;}treeNode;void printAllPathWithSum(treeNode *pRoot, int sum, list&path, int ¤tSum){ if(pRoot == NULL){ retur

2015-06-10 16:23:30 887

原创 C语言 打印从根节点到叶节点的所有路径

includeincludeusing namespace std;typedef struct treeNode{ int data; struct treeNode *pLeft; struct treeNode *pRight;}treeNode;void printAllPathFromRoot(treeNode *pRoot, list&path){

2015-06-10 16:09:18 3123 1

原创 C语言 二叉树中寻找指定两个数值的最低父节点

共有三种情况:1、两个节点如果一个在左子树,一个在右子树的话,则根节点就是它们的最低父节点2、两个节点全在左子树中3、两个节点全在右子树中#include#include#include#includeusing namespace std;typedef struct treeNode{ int data; struct treeNode *pLeft; s

2015-06-10 13:47:04 888

原创 C语言 链表反向打印与反转

#includeusing namespace std;typedef struct node{ int data; struct node *next;}node;node * ListCreate(){ node *pHead = (node *)malloc(sizeof(node)); if(pHead == NULL){ printf("create list f

2015-06-09 16:13:51 585

原创 C语言 二叉查找树相关算法

#include#include#includeusing namespace std;typedef struct treeNode{ int data; struct treeNode *pLeft; struct treeNode *pRight;}treeNode;//二叉查找树中增加节点 treeNode * createTree(treeNode *pRoot,

2015-06-09 15:52:47 456

转载 redis执行流程源码分析

本文所引用的源码全部来自Redis2.8.2版本。Redis源码整体运行流程的相关文件是:redis.h, redis.c, networking.c, ae.h, ae.c。转载请注明,本文出自:http://blog.youkuaiyun.com/acceptedxukai/article/details/17842119Redis Server端处理Client请求的流程图

2015-06-09 13:36:33 543

原创 PHP 缓存之客户端缓存

今天主要说一下客户端缓存客户端缓存主要是通过http response header中的cache-control来实现的当点击go时, 第一次请求client.php,  会直接向服务器发出请求, 当返回重新点击go时, 由于请求的文件已经被缓存起来, 所以再次请求是不会向服务器发出请求的, 这一点可以通过firebug或其他调试工具查看.cache-controlmax-a

2015-06-09 09:37:27 640

空空如也

空空如也

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

TA关注的人

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