Linux系统越来越受到电脑用户的欢迎,于是很多人开始学习Linux时,学习linux,你可能会遇到linux内核问题,这里将介绍linux内核中idle知识, 在这里拿出来和大家分享一下。

1. idle是什么

简单的说idle是一个进程,其pid号为 0。其前身是系统创建的第一个进程,也是唯一一个没有通过fork()产生的进程。在smp系统中,每个处理器单元有 独立的一个运行队列,而每个运行队列上又有一个idle进程,即有多少处理器单元,就有多少idle进程。系统的空闲时间,其实就是指idle进程的"运行时间"。 既然是idle是进程,那我们来看看idle是如何被创建,又具体做了哪些事情?

php安全过滤是防止注入的第一道防线,不得大意。提到PHP的安全过滤,不得不提的两个东西是`set_magic_quotes_runtime` 和 `magic_quotes_gpc`。

`set_magic_quotes_runtime()` 可以让程序员在代码中动态开启或关闭 `magic_quotes_runtime`,`set_magic_quotes_runtime(1)` 表示开启, `set_magic_quotes_runtime(0)` 则表示关闭。当`set_magic_quotes_runtime(1)`时,从数据库或通过`fread`之类的函数读取的文本,将自动对' "和\自动 加上反斜杠\进行转义,防止溢出。这在对数据库的数据进行转移的时候非常有用。但在一般情况下,应当将其关闭,否则从数据库读取出来的数据单引 号、双引号和反斜杠都会被加上\,导致显示不正常。像Discuz,PHPWind都在公共文件的头部加上一句 `set_magic_quotes_runtime(0);` 强制关闭 `magic_quotes_runtime` 。

`magic_quotes_gpc` 和 `magic_quotes_runtime` 的区别在于,`magic_quotes_gpc` 是对通过GET、POST、COOKIE传递的数据进行转义,一般在数据入库前 要先进行转义,`magic_quotes_gpc`不能在代码中动态开启或关 闭,需要到`php.ini`将`magic_quotes_gpc`设置为on或off,代码中可以用`get_magic_quotes_gpc` 获取 `magic_quotes_gpc`的状态。当`magic_quotes_gpc`为off时,需要手工对数据进行addslashes,代码如下:

入侵者使用假IP地址发送包,利用基于IP地址证实的应用程序。其结果是未授权的远端用户进入带有防火墙的主机系统。

假设有两台主机A、B和入侵者控制的主机X。假设B授予A某些特权,使得A能够获得B所执行的一些操作。X的目标就是得到与B相同的权利。 为了实现该目标,X必须执行两步操作:首先,与B建立一个虚假连接;然后,阻止A向B报告网络证实系统的问题。主机X必须假造A的IP地址, 从而使B相信从X发来的包的确是从A发来的。

我们同时假设主机A和B之间的通信遵守TCP/IP的三次握手机制。握手方法是:

1
2
3
A->:SYN(序列号=M)
B->A:SYN(序列号=N),ACK(应答序号=M+1)
A->B:ACK(应答序号=N+1)

采用PHP5+ 开发的一个简单的 PHP HTML DOM 分析,支持 invalid HTML 并提供非常简单的方式来操作 HTML 元素。在 HMTL 页面 上查找标签所使用的语法与 jQuery (一个轻量级,实用的 javascript 框架) 相似,从页面中抽取内容只需要一行代码。开源代码: http://sourceforge.net/projects/simplehtmldom/

它具有以下几个特点:
1. 只支援 PHP5 以上.
2. 可以分析不严谨 (invalid) 的 HTML.
3. 支援简单的 CSS Selector.
4. 简单的 DOM 操作.
5. 会维持 HTML 中的原始格式 .
下面是使用手册上举的几个简单的使用示例。

以下是从FleaPHP上挖来的,感谢FleaPHP的开发者们。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 输出变量的内容,通常用于调试
*
* @package Core
*
* @param mixed $vars 要输出的变量
* @param string $label
* @param boolean $return
*/
function dump($vars, $label = '', $return = false)
{
    if (ini_get('html_errors')) {
        $content = "<pre>\n";
        if ($label != '') {
            $content .= "<strong>{$label} :</strong>\n";
        }
        $content .= htmlspecialchars(print_r($vars, true));
        $content .= "\n</pre>\n";
    } else {
        $content = $label . " :\n" . print_r($vars, true);
    }
    if ($return) { return $content; }
    echo $content;
    return null;
}

UTF-8有点类似于Haffman编码,它将Unicode编码为:
00000000-0000007F的字符,用单个字节来表示;
00000080-000007FF的字符用两个字节表示 (中文的编码范围)
00000800-0000FFFF的字符用3字节表示
编码转换:iconv -f “文件目前编码” -t “文件转换后的编码” -o “转换后生成的新文件名” “源文件名”temp = Iconv.conv("UTF-8","gb2312",a)

因为目前为止Unicode-16规范没有指定FFFF以上的字符,所以UTF-8最多是使用3个字节来表示一个字符。但理论上来说,UTF-8最多需要用6字节表示一个字符。 在UTF-8里,英文字符仍然跟ASCII编码一样,因此原先的函数库可以继续使用。而中文的编码范围是在0080-07FF之间,因此是2个字节表示(但这两个字节 和GB编码的两个字节是不同的)。

主流的爬虫

Nutch
开发语言:Java
主页:http://lucene.apache.org/nutch/
简介:
Apache的子项目之一,属于Lucene项目下的子项目。
Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的分布式处理模型保证了系统的性能,类似Eclipse的插件机制 保证了系统的可客户化,而且很容易集成到自己的应用之中。

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy正确运行需要你的服务器的PHP版本在4以上, 并且支持PCRE(Perl Compatible Regular Expressions),基本的LAMP服务都支持。

一、Snoopy的一些特点

1.抓取网页的内容 fetch
2.抓取网页的文本内容 (去除HTML标签) fetchtext
3.抓取网页的链接,表单 fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码验证
6.支持设置user_agent, referer(来路), cookies和header content(头文件)
7.支持浏览器重定向,并能控制重定向深度
8.能把网页中的链接扩展成高质量的url(默认)
9.提交数据并且获取返回值
10.支持跟踪HTML框架
11.支持重定向的时候传递cookies,要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择

现在很多主机空间都是IIS上执行PHP程序,大多不能直接用mail()发送邮件,有了这个类只要你有注册过邮箱, 就可以随意的发送邮件,速度也不慢哦。

先给一个具体的使用示例:

<? 
require (FILE_DIR."smtp.php"); 
$smtpserver = "smtp.xxx.com";//SMTP服务器 
$smtpserverport =25;//SMTP服务器端口 
$smtpusermail = "xxxxx@xxx.com";//SMTP服务器的用户邮箱 
$smtpemailto = "aaaaa@xxx.com";//发送给谁 
$smtpuser = "xxxxx";//SMTP服务器的用户帐号 
$smtppass = "xxxxx";//SMTP服务器的用户密码 
$mailsubject = "Test Subject";//邮件主题 
$mailbody = "<h1>This is a test mail</h1>";//邮件内容 
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件 
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证. 
$smtp->debug = TRUE;//是否显示发送的调试信息 
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype); 
?>