显示下一条  |  关闭

爱拼才会赢

我思故我在

 
 
 
 
 
 

PHP中的stdClass类

2012-4-26 20:21:41 阅读7 评论0 262012/04 Apr26

以上的定义大多数都是正确的,但是一个致命性的诊断错误: stdClass是PHP的一个基类,所有的类几乎都继承这个类。 看一个简单的例子:

class EmptyClass { } $object = new EmptyClass(); if ($object instanceof stdClass) { echo 'yes'; }else{ echo 'no'; }

执行代码,输出”no”,这个例子充分说明了stdClass类并不是所有类的基类。它仅仅是PHP的一个保留类,或者说一个类似于strlen函数这样的一个角色。 我们从源码的维度看看stdClass类的实现,它注册的位置在 Zend/zend_buildin_functions.c文件中。如下:

ZEND_MINIT_FUNCTION(core) { /* {{{ */ zend_class_entry class_entry; /* 注册stdClass 类 */ INIT_CLASS_ENTRY(class_entry, "stdClass", NULL); zend_standard_class_def = zend_register_internal_class(&class_entry

作者  | 2012-4-26 20:21:41 | 阅读(7) |评论(0) | 阅读全文>>

Jquery_form_json

2012-4-12 22:02:37 阅读9 评论0 122012/04 Apr12

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="zh-CN">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>

</title>

<script type="text/javascript" src="../jquery.min.js" ></script>

<script language="javascript" type="text/javascript">

$(function(){

$("#f1").submit(function(){

var post = $("#f1").formtojson();

// alert($(this).serialize());

alert(post.content);

});

});

$.fn.formtojson = function() {

作者  | 2012-4-12 22:02:37 | 阅读(9) |评论(0) | 阅读全文>>

CPU地址空间

2012-4-11 13:20:31 阅读9 评论0 112012/04 Apr11

(一)地址的概念

1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。

        物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来决定的,因此在32 bits地址线的x86处理器中,物理地址空间是2的32次方,即4GB,但物理RAM一般不能上到4GB,因为还有一部分要给总线用(总线上还挂着别的 许多设备)。在PC机中,一般是把低端物理地址给RAM用,高端物理地址给总线用。

2)总线地址:总线的地址线或在地址周期上产生的信号。外设使用的是总线地址,CPU使用的是物理地址。

        物理地址与总线地址之间的关系由系统的设计决定的。在x86平台上,物理地址就是总线地址,这是因为它们共享相同的地址空间——这句话有点难理解,详见下 面的“独立编址”。在其他平台上,可能需要转换/映射。比如:CPU需要访问物理地址是0xfa000的单元,那么在x86平台上,会产生一个PCI总线 上对0xfa000地址的访问。因为物理地址和总线地址相同,所以凭眼睛看是不能确定这个地址是用在哪儿的,它或者在内存中,或者是某个卡上的存储单元, 甚至可能这个地址上没有对应的存储器。

作者  | 2012-4-11 13:20:31 | 阅读(9) |评论(0) | 阅读全文>>

Jquery 常用方法

2012-3-19 10:48:07 阅读8 评论0 192012/03 Mar19

Attribute:

$(”p”).addClass(css中定义的样式类型); 给某个元素添加样式

$(”img”).attr({src:”test.jpg”,alt:”test Image”}); 给某个元素添加属性/值,参数是map

$(”img”).attr(”src”,”test.jpg”); 给某个元素添加属性/值

$(”img”).attr(”title”, function() { return this.src }); 给某个元素添加属性/值

$(”元素名称”).html(); 获得该元素内的内容(元素,文本等)

$(”元素名称”).html(”<b>new stuff</b>”); 给某元素设置内容

$(”元素名称”).removeAttr(”属性名称”) 给某元素删除指定的属性以及该属性的值

$(”元素名称”).removeClass(”class”) 给某元素删除指定的样式

$(”元素名称”).text(); 获得该元素的文本

$(”元素名称”).text(value); 设置该元素的文本值为value

$(”元素名称”).toggleClass(class) 当元素存在参数中的样式的时候取消,如果不存在就设置此样式

$(”input元素名称”).val(); 获取input元素的值

$(”input元素名称”).val(value); 设置input元素的值为value

作者  | 2012-3-19 10:48:07 | 阅读(8) |评论(0) | 阅读全文>>

php curl_init函数用法

2012-3-15 21:10:18 阅读7 评论0 152012/03 Mar15

使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网 页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内 容,cURL 是一个功能强大的PHP库。

PHP中的CURL函数库(Client URL Library Function)

curl_close — 关闭一个curl会话

curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数

curl_errno — 返回一个包含当前会话错误信息的数字编号

curl_error — 返回一个包含当前会话错误信息的字符串

curl_exec — 执行一个curl会话

curl_getinfo — 获取一个curl连接资源句柄的信息

curl_init — 初始化一个curl会话

curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源

curl_multi_close — 关闭一个批处理句柄资源

curl_multi_exec — 解析一个curl批处理句柄

curl_multi_getcontent — 返回获取的输出的文本流

curl_multi_info_read — 获取当前解析的curl的相关传输信息

curl_multi_init — 初始化一个curl批处理句柄资源

作者  | 2012-3-15 21:10:18 | 阅读(7) |评论(0) | 阅读全文>>

决战Cookie僵尸:恶性追踪API意在“提高警惕”

2012-3-15 8:40:28 阅读9 评论0 152012/03 Mar15

对抗目前僵尸Cookie——好像永远不会丢失你数据的cookie的战争硝烟四起,因为越来越多的用户知道了其技术内幕。尽管广泛传播的Flash cookie和最近最新的HTML5存储技术内幕让用户提高了警惕,但要我们避免Internet用户被顽固跟踪,仍然任重而道远。  一个很好的例子:evercookie,一个由Samy Kamkar开发的开源JavaScript API。当被网站使用时,evercookie保存user ID和cookie data至不只是两个或三个地方,而是八个不同的地方——以后还会更多!其中就有你的standard HTTP cookies,Flash cookies,你强制缓存的PNG的RGB值,你的Web history以及一些HTML5存储特性。此外,Silverlight Storage 和 Java显然也在跟近。  因此当你删掉一处、三处或五处的cookie时,evercookie可以从其他cookie源获取你的user ID,并恢复数据跟踪cookie。它还跨浏览器——如果Local Shared Object cookie(本地共享对象cookie)完整,evercookie可以传播到任何你在本机上使用的浏览器。由于在、大多数用户对这些cookie保存技术不甚了解,他们不大可能彻底清除某一cookie。  简单把它想象成不会摆脱的cookie(Cookie僵尸)吧,evercookie FAQ这样写着。听起来很邪恶吧? 是。但是Kamkar——他的座右铭是“think bad, do good”(“

作者  | 2012-3-15 8:40:28 | 阅读(9) |评论(0) | 阅读全文>>

面向普通人的 PHP 加密

2012-3-10 20:20:52 阅读12 评论0 102012/03 Mar10

了解当今现实世界与 20 年前的现实世界的不同。在 20 世纪 80 年代,加密是一种特工人员的行为 —— 是您在 Tom Clancy 的侦探小说中才可以读到的情节。如果某人想保持少量私有信息,那么他必须使用密码、密码短语或其他基本方法对数据进行加密。

而现在,加密遍布各个领域。密码也被加密保存在数据库中。电脑空间中的加密的通道可能是通过 SSL、SSH 和其他技术加密的 —— 更不必说拟虚专用网络。人们平常可以而且一定能够使用 Pretty Good Privacy (PGP) 来保护敏感的文件和电子邮件。

作为一名 PHP 开发人员,您应该知道,强有力的安全做法并不是只将安全保护用于独特的应用程序 —— 还可以将其用于您当前从事的项目。用户要树立从一般加密方法(例如,在登录页上的密码字段中不显示明文)过渡到各种高级加密方法(如 DES、MD5、SHA1 和 Blowfish)的意识。

因时间和篇幅所限,这里无法讨论加密的各个方面,但是您将从这里了解涵盖适用于您的多数情况的基本内容。我们通过使用 PHP 内置功能先了解加密和解密信息的意义,进而了解涉及密码和其他数据的一些实际示例。在本文中,加密是在更大的安全上下文中进行讨论的。最后,将介绍其他 PHP 扩展和插件。

加密技术的初级读本

作为希腊的词根资产,加密技术是一种 “神秘编写” 艺术。凯撒密码 是最古老的一种密码,形式也最为简单。它采用明文消息,将字母移动 n 个位置,从而产生暗文。例如:

作者  | 2012-3-10 20:20:52 | 阅读(12) |评论(0) | 阅读全文>>

Web应用中的缓存

2011-12-22 13:16:10 阅读33 评论0 222011/12 Dec22

1 数据库的缓存

通常数据库都支持对查询结果的缓存,并且有复杂的机制保证缓存的有效性。对于MySQL,Oracle这样的数据库,通过合理配置缓存对系统性能带来的提升是相当显著的。

2 数据连接驱动的缓存。

诸如PHP的ADODB,J2EE的连接驱动,甚至如果把HIbernate等ORM也看成连接器的话。这里的缓存有效机制就不是那么强了,使用此步的方法实现缓存的一个最好的优点就是我们取数据的方式可以保持不变。例如,我调用

$db->CacheGetAll("select * from table"); 的语句不需要改变,可以透明实现缓存。这主要应用于一些变化不大的数据上,例如一些数据字典是不经常变化的。

3 系统级的缓存

可以在系统内通过Cache库,自行对需要的数据进行缓存,例如一个树桩菜单生成十分消耗资源,那可以将这个生成的树缓存起来。这样做的缺点是,当 这颗树的某些地方被更新时,你需要手动更新缓存内的东西。使用的缓存库都可以有不同的缓存方法,有的把内容放在硬盘上,有的放在内存里面,如果你把内容模 拟成硬盘来缓存,速度当然也能提升不少。

4 页面级的缓存

这个在内容管理系统里面用的最多。也就是生成静态页面。这里面缓存控制机制最为复杂,一般也没有什么包治百病的方法,只有具体情况具体分析。通常生成的静态叶面你需要有一个机制去删除过时的,或访问很少的叶面,以保证检索静态叶面的速度。

5 使用预编译叶面和加载为FastCGI的办法

对于PH

作者  | 2011-12-22 13:16:10 | 阅读(33) |评论(0) | 阅读全文>>

关于ob_flush和flush

2011-12-14 20:19:06 阅读37 评论0 142011/12 Dec14

buffer ---- flush()

buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。

这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入 一个字符,操作系统并不会立即把这个字符直接写入到磁盘,而是先写入到buffer,当写满了一个buffer的时候,才会把buffer中的数据写入磁 盘,当然当调用内核函数flush()的时候,强制要求把buffer中的脏数据写回磁盘。

同样的道理,当执行echo,print的时候,输出并没有立即通过tcp传给客户端浏览器显示,而是将数据写入php buffer

php output_buffering机制,意味在tcp buffer之前,建立了一新的队列,数据必须经过该队列。当一个php buffer写满的时候,脚本进程会将php buffer中的输出数据交给系统内核交由tcp传给浏览器显示。

所以,数据会依次写到这几个地方echo/pring -> php buffer -> tcp buffer -> browser

output_buffering --- ob_flush()

默认情况下,php buffer是开启的,而且该buffer默认值是4096,即1kb。你可以通过在php.ini配置文件中找到output_buffering配

作者  | 2011-12-14 20:19:06 | 阅读(37) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 

浙江省 杭州市 摩羯座

 发消息  写留言

 
三分天注定,七分靠打拼,爱拼才会赢。
 
近期心愿找到好工作,交到好朋友。
人生格言爱拼才会赢
交友目的思想交流
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 

日历

 
 
模块内容加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注