获取客户IP环境变量:HTTP_X_FORWARDED_FOR, HTTP_VIA and REMOTE_ADDR
根据不同的访问情况,PHP提供几个不同的环境变量用于获取客户端IP:
- REMOTE_ADDR
- HTTP_VIA
- HTTP_X_FORWARDED_FOR
它们的主要区别在于,用户在访问网站的时候是否使用了代理服务器,以及使用何种代理服务。 阅读全文…
根据不同的访问情况,PHP提供几个不同的环境变量用于获取客户端IP:
它们的主要区别在于,用户在访问网站的时候是否使用了代理服务器,以及使用何种代理服务。 阅读全文…
本文通过一些简单示例解释基本的SQL注入攻击,并提供方法如何去处理这些攻击问题。
如题所示,黑客能够通过SQL查询语句进行攻击。一些网站的开发者还不太了解黑客是如何通过SQL查询来攻击网站的。如果程序完全相信用户的输入信息,并不做一些适当的过滤处理,SQL注入完全可以实现,SQL注入的思路就是让程序运行一些不被期望的SQL查询。
阅读全文…
搜索引擎爬虫经常抓取收录网站在通常情况下应该是有利于网站对外推广传播的,但很遗憾,一些技术比较“烂”的搜索爬虫我们甚至可以认为它们更像流氓、无赖.比如,某些爬虫本身技术就存在缺陷,结果导致一次抓取小网站的时候能把整个网站给拖垮(不要告诉我这样的事情没有发生过),另外还有像采用云服务托管的网站,比如SAE,流量和计算量都是要收费的。尼玛一个本来就没有多少流量的搜索引擎,天天过来抓内容,带来少的可怜的流量跟花去的流量费用对比,简直让人心懂,鉴于此类原因,本人做出一个艰难的决定,封杀某些搜索引擎。 阅读全文…
SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS,源代码完全开放,可用于任何用途(SQLite is in the Public Domain)。它可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。
Percona Xtrabackup 是一个开源的MySQL热备份工具,采用GPL开源协议,支持InnoDB、XtraDB引擎在线热备份、Non-blockingd备份,流式备份,压缩备份,增量备份等特性,是商业备份工具InnoDB HotBackup的一个很好的替代品。目前Percona Xtrabackup支持InnoDB、XtraDB和MyISAM,原生MySQL以及Percona Server上的XtraDB,可运行在Linux和FreeBSD上,Windows平台目前处于测试阶段。
阅读全文…
本文安装环境为CentOS5.4,Nginx1.0.11
Perl以FastCGI模式安装,需要首先安装以下2个软件(CentOS自带Perl支持不做考虑)
“Cache为王”,无所不在。为了最小化磁盘I/O,MyISAM将最频繁访问的索引块(“index block”)都放在内存中,这样的内存缓冲区我们称之为Key Cache,它的大小可以通过参数key_buffer_size来控制。在MyISAM的索引文件中(MYI),连续的单元(contiguous unit)组成一个Block,Index block的大小等于该BTree索引节点的大小。Key Cache就是以Block为单位的。
1. MyISAM如何使用Key Cache
当MySQL请求(读或写)MyISAM索引文件中某个Index Block时,首先会看Key Cache队列中是否已经缓存了对应block。如果有,就直接在Key Cache队列中进行读写了,不再需要请求磁盘。如果是写请求,那么Key Cache中的对应Block就会被标记为Dirty(和磁盘不一致)。在MyISAM在Key Cache成功请求(读写)某个Block后,会将该Block放到Key Cache队列的头部。
如果Key Cache中没有待请求(读或写)的Block,MyISAM会向磁盘请求对应的Block,并将其放到Key Cache的队列头部。队列如果满了,会将队列尾部的Block删除,该Block如果是Dirty的,会将其Flush到磁盘上。我们看到MyISAM维护了一个LRU(Least Recently Used)的Key Cache队列。队列中的Dirty Block会在Block被踢出队列时Flush到磁盘上。
阅读全文…
数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化: 阅读全文…
对于编写代码,缩进是最基本的概念之一。至于缩进是使用空格还是制表符(Tab),或者缩进是否正好使用一个制表符来表示,很多程序员,特别是 Windows开发出身的程序员,很容易混淆。幸好,Vim对于这些概念有非常完整的支持,足以应付各种复杂的情况。以下是相关的主要Vim选项:
shiftwidth(缩进的空格数);
tabstop(制表符的宽度);
expandtab(是否在缩进和遇到Tab键时使用空格替代;使用noexpandtab取消设置);
softtabstop(软制表符宽度,设置为非零数值后使用Tab键和Backspace时光标移动的格数等于该数值,但实际插入的字符仍受tabstop和expandtab控制);
autoindent(自动缩进,即每行的缩进值与上一行相等;使用noautoindent取消设置);
cindent(使用C语言的缩进方式,根据特殊字符如”{“、”}”、”:”和语句是否结束等信息自动调整缩进;在编辑C/C 等类型文件时会自动设定;使用nocindent取消设置);
cinoptions(C语言缩进的具体方式,请参考”:help cinoptions-values”);
paste(粘贴模式,会取消所有上述选项的影响来保证后面的操作–通常是从剪贴板粘贴代码–保持原有代码的风格;使用nopaste取消设置)。
下面给出一些常用的组合:
shiftwidth=4 tabstop=4:很多Windows出身的程序员会习惯这样的设置,让缩进等于制表符宽度。
shiftwidth=4 tabstop=8:很多Unix程序员的设置,仍使用较常用的4格缩进,但制表符宽度为标准的8。
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
VIM编辑文件的时候默认会在同目录下面生成一些额外的文件,常见的一般有:“filefullname.swp”、“filefullname~”
*.ext.swp 文件是swap文件,通常保存有”undo/redo”历史操作和一些其他的VIM内部信息
*.ext~ 文件是备份文件,其内容包含当前文件的前一个版本
配置VIM禁止生成”.ext.swp”、”.ext~”文件:
set nobackup #no backup files
set nowritebackup #only in case you don’t want a backup file while editing
set noswapfile #no swap files
修改VIM默认存放”.ext.swp”、”.ext~”文件位置:
Linux下修改vimrc文件,添加以下代码
set backupdir=~/vimtmp
set directory=~/vimtmp