- 博客(32)
- 收藏
- 关注
转载 PHP 真正多线程的使用
PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。 我之前的文章中说过,大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统、环境都不用安装配置),而是在于MyS
2015-05-27 17:40:04 602
转载 wamp安装pthreads扩展(PHP多线程)
首先,通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。 然后,根据PHP ts\nts版选择对应pthreads的版本,http://windows.php.net/downloads/pecl/releases/pthreads/0.1.0/ ,例如:php版本是5.4.17
2015-05-27 14:28:15 1051
转载 IP分类
一、IP分类 点分十进制数表示的IPv4 地址分成几类,以适应大型、中型、小型的网络。这些类的不同之处在于用于表示网络的位数与用于表示主机的位数之间的差别。IP地址分成五类,用字母表示: A 类地址 B 类地址 C 类地址 D 类地址
2015-05-26 14:27:16 546
转载 web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
通过上一篇,获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR) ,我们已经意 识到直接从http_x_forwarded_for中读取用户IP,跟我们直接从一个get,post值中读取其实没有两样。web参数检测里面一个基本原则:“一切输入都是有害的”,因此,只要是输入我们就需要进行过滤。安全过滤后的getIP函数 function ge
2015-05-26 14:15:28 417
转载 获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)
分析过程这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的。 一般朋友,都会看到如下通用获取IP地址方法。function getIP() { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else
2015-05-26 11:53:11 874
转载 怎样辨别Google蜘蛛
怎样辨别Google蜘蛛。点击Windows系统里的“开始” – “运行”,输入tracert 203.208.60.179,点击确定。运行结果显示:crawl-203-208-60-179.googlebot.com这种方法叫做反向DNS查找,和辨别百度蜘蛛真伪的操作是一样的。但我发现现在的采集越来越高明,也会伪造反向DNS来指向***.googlebot
2015-05-26 08:17:48 1362
转载 漫谈可视化Prefuse(二)---一分钟学会Prefuse
prefuse框架中各个主要接口的职责以及如何有序使用它们构建一个prefuse应用。首先看图:从图中可以发现一个prefuse程序的编写需要经历以下步骤:准备好原始数据(文件或是数据库数据);通过prefuse.data.io以及prefuse.data.io.sql包将数据读入prefuse,实现原始数据与内置丰富的数据结构如Table、Graph、Tree等之间的映射
2014-12-25 16:07:37 1874 1
转载 漫谈可视化Prefuse(一)---从SQL Server数据库读取数据
看了prefuse.data、prefuse.data.expression等包的具体接口,大致了解了prefuse框架是如何完成外部数据与prefuse数据之间的映射关系转换;如何通过prefuse.data.expression包中的各个类完成对于逻辑表达式、字符串表达式、常见函数(如加减乘除正弦余弦预算)等的解析。在看到prefuse.data.io.sql时发现了几个主要的类Con
2014-12-25 16:06:17 466
转载 可视化工具solo show-----Prefuse自带例子GraphView讲解
1.Prefuse主要特征: (1)任意数据类型的表格、图和树形数据结构,数据索引、选择查询,有效的内存占用 (2)具有布局、着色、大小、图形编码、扭曲、动画等多个组件 (3)具有交互控制库 (4)支持动画过渡,通过一系列的活动调度机制 (5)支持平移、缩放等视图变换 (6)对于交互过滤数据的动态查询 (7)能够使用可用的搜索引
2014-12-25 16:05:17 907
转载 伪装豆瓣爬虫程序——如何解决豆瓣禁用爬虫程序?
要将豆瓣上的图书以及影视信息抓取下来,网页抓取其实很简单,很快就完成,但是系统还没上线就发现了问题,豆瓣会根据请求分析客户的行为,判断是否是机器人,如果判断为机器人,将要求输入验证码,最终导致抓取不到数据。要解决这个问题,主要就两个思路,一个是识别验证码,当要求输入验证码时,识别图片中的验证码;另外一方案是伪装成正常访问,绕过豆瓣的分析程序。前一种方案受限于验证码识别率太低,很难满足需求,
2014-12-12 14:03:20 2702
转载 基于crawler4j、jsoup、javacsv的爬虫实践
1. crawler4j基础crawler4j是一个基于Java的爬虫开源项目,其官方地址如下:http://code.google.com/p/crawler4j/crawler4j的使用主要分为两个步骤:实现一个继承自WebCrawler的爬虫类;通过CrawlController调用实现的爬虫类。WebCrawler是一个抽象类,继承它必须实现两个方法
2014-12-07 14:34:04 667 2
转载 网络爬虫
网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源 HtmlUnit 包,4行代码就OK啦,例子如下:final WebClient webClient=new WebClient();final HtmlPage page=webClient.getPage("http://www.yanyulin.info");System.out.print
2014-11-22 14:46:27 396
转载 java中url中文转码问题
public static void main(String[] args){try { System.out.println("中文");//1 System.out.println("中文".getBytes());//2 System.out.println("中文".getBytes("GB2312"))
2014-11-22 14:40:27 2118
转载 AVL树
定义:一棵空二叉树是AVL树,如果T是非空二叉树,TL和TR分别是其左子树和右子树,则当且仅当TL和TR都为AVL树且|HL-HR|由定义知道一个AVL树的任何节点的左右子树的高度之差不超过1,这是AVL树最基本的特征。
2014-10-13 10:24:28 403
转载 常用排序算法比较
1.稳定性比较 插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的 选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 插入排序、冒泡排序、选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂性为O(nlog2n) 线形排序的时间复杂性为O(n);3.辅助空间的比较 线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为
2014-08-10 11:18:02 358
转载 linux 下oracle安装
Linux环境配置[c-sharp] view plaincopyOS:Fedora 15 DB:Oracle 11gR2 将Oracle安装到home/oracle_11目录 配置过程:本文来自Oracle官方文档+网上资料Oracle官方文档:http://www.oracle.com/pls/db112/homepage1.
2014-08-07 15:07:27 414
原创 字符串函数的使用方法
1、strstr的使用包含文件:string.h函数名: strstr函数原型:extern char *strstr(const char *str1, const char *str2);语法:* strstr(str1,str2)str1: 被查找目标 string expression to search.str2: 要查找对象 The
2014-07-07 10:51:33 496
转载 JAVA的三种标准输入方法例子
import java.io.*;import java.util.*;public class TestInput { public TestInput() { } public static void main(String[] args) throws IOException { byte b[]= new byte[50
2014-07-04 17:32:15 552
转载 qsort排序
qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针用于确定排序的顺序 排序方法有很多
2014-07-04 13:58:09 334
转载 android字体工作原理
Android字体工作原理本文简单介绍了上层如何使用特定字体,android字体工作原理提出要求浏览器使用单独的字体,并且不影响系统默认字体的使用。图形小组在该需求的基础上,又提出了如果一个ttf文件包含多个字库,skia是否支持,如果不支持,实现难度多大。本文主要在这两个方面展开。2.1 问题分析针对以上需求,主要从以下两个方面展开:1. android是
2014-06-19 16:42:03 590
转载 pthread_join/pthread_exit函数
函数pthread_join用来等待一个线程的结束。函数原型为: extern int pthread_join __P ((pthread_t __th, void **__thread_return)); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的线程将一直等待到被等待的线程结束为止,当函
2014-03-27 15:11:12 433
转载 vi的使用
多方搜索整理如下:(除特殊说明以下操作均在命令模式下)1.将光标移动到将要复制的行处,按yy进行复制当前行(按nyy复制n行),再移动到粘贴位置,按p进行粘贴。2.将光标移到复制的首位置,按下v,用hjkl移动,按y复制,按p粘贴。3.光标移到起始行,输入ma;光标移到结束行,输入mb;光标移到粘贴行,输入mc;然后 :'a,'b co 'c,把 co 改成 m就成剪切了。
2014-03-26 08:12:50 326
原创 tar 报错gzip: stdin: not in gzip format
在linux下 用tar -zxf xxx.tar.bz2然后就报这个错。gzip: stdin: not in gzipformattar: Child returned status1tar: Error exit delayed fromprevious errors这个压缩包没有用gzip格式压缩 所以解压的时候也不用加上z 。直接tar -xf 就可以了。
2014-03-17 14:22:58 787
转载 Ubuntu下为Firefox安装Adobe Flash Player
Ubuntu下为Firefox安装Adobe Flash Player 使用环境: OS:Ubuntu 12.04 LTS Browser: Firefox 12.0 Adobe Flash Player: install_flash_player_11_linux.x86_64.tar.gz 安装方法: 1. 下载Adobe Flash
2014-03-17 09:21:12 373
原创 配置交叉编译环境
1. 安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装一下(如果已 经安装好的话,就可以免去这一步了): #sudo apt-get install gcc g++ libgcc1 libg++ make gdb2. 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下,我把它下载到了我的个人文件夹 里/home/wrq arm-l
2014-03-17 00:18:49 578
原创 ubuntu下使用vi是方向键变乱码_退格键不能使用的解决方法
ubuntu下使用vi是方向键变乱码_退格键不能使用的解决方法 跳过文件探测系统的一句命令 sudo umount -l /isodevice 一、编辑/etc/vim/vimrc.tiny由于/etc/vim/vimrc.tiny的拥有者是root用户,所以要在root的权限下对这个文件进行修改。很简单,这个文件里面的倒数第二句话是“set compatible”,
2014-03-16 23:54:44 524
原创 Makefile:3: *** missing separator. Stop.
在编写makefile后,make项目时提示错误“Makefile:3: *** missing separator. Stop.”偶然发现这个错误是有makefile中的tab的长度导致的,在makefile中的命令需要以tab键开始,在.vimrc文件中发现没有设置tab键的默认长度,然后在.vimrc中添加如下配置后,set tabstop=4便可以执行m
2014-03-12 22:51:24 804
转载 kill函数
kill函数kill(传送信号给指定的进程)相关函数 raise,signal表头文件 #include#include定义函数 int kill(pid_t pid,int sig);函数说明kill()可以用来送参数sig指定的信号给参数pid指定的进程。参数pid有几种情况:pid>0 将信号传给进程识别码为pid 的进程。pid=0 将信号传
2014-03-05 23:29:58 1178
原创 关于Linux中的SIGABRT信号
SIGABRT是中止一个程序,它可以被捕捉,但不能被阻塞。处理函数返回后,所有打开的文件描述符将会被关闭,流也会被flush。程序会结束,有可能的话还会core dump。 当程序调用abort(3)时,该进程会向自己发送SIGABRT信号。所以,SIGABRT一般用于信号中一些关键的处理,assert失败时也会使用它。你不应该去捕捉SIGSEGV和SIGABRT信号,如果收到这种信号,说明进程处
2014-03-05 23:29:23 2444
原创 linux 命令学习
Linux 的学习Linux 是开源且免费的。需要内存极小,可用于嵌入式开发。root用户是linux系统的超级用户,具有最高权限。以redhat 为例讲述关于linux的一些指令。以下均是在root用户下的操作。在文字界面内可以通过输入 “startx” 命令进入图形界面。超级用户权限下 关机命令为 “shutdown -h now ”可以立即关机,重启可以用“reboot ”或者“
2013-05-02 16:50:00 402
原创 关于js的若干内容
如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖:eg:My First Paragraph.点击这里function myFunction(){document.write("糟糕!文档被覆盖了。");}关于外部文件,外部文件直接写函数内容eg A Paragraph.点击这里注
2013-05-02 16:48:18 382
原创 关于黑框下模拟贪食蛇的若干经验
首先,要了解按键的获取。按键的获取过程中,我们只需要获得到按键的键值而不需要显示按键的内容。我们学过的getchar()获得按键同时会显示按键的内容。而在头文件为 下的getch()函数不会显示按下的键的内容。其次,获取键盘的上下左右四个键值。四个方向键的键值两个字节。而getch()函数和getchar()都是读取一个字节。 要分成两个字节读取。再就是gotoxy()函数的使用。可以跳到
2013-04-12 22:38:20 572
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人