PHP, Python和Javascript的装饰模式
修饰模式(Decorator Pattern),又叫装饰者模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。装饰模式非常适用于灵活扩展对象的功能,下面是装饰模式的UML图:

…阅读更多>>
修饰模式(Decorator Pattern),又叫装饰者模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。装饰模式非常适用于灵活扩展对象的功能,下面是装饰模式的UML图:

…阅读更多>>
为了降低成本,树莓派省去了传统计算机用来存储引导加载程序的板载存储器(BIOS), 而是直接把引导程序放在了SD卡中。(树莓派提供另外一个具有4G eMMC板载Flash存储的计算模块)
开放网络中数据传输的安全性一直是一个热门的话题,特别是电子商务兴起的今天,各种攻击欺骗手段更是层出不穷,安全的网络传输需求愈显重要。互联网发展至今天,已经有比较成熟的解决方案了,最典型的就是HTTPS(安全套接层超文本传输协议), 它通过在应用层和传输层之间的安全套接层进行加密和解密,以保证信息不被第三方知晓和篡改,如下图

说到信息加密,就不得不说到几种加密方式,对称加密、非对称加密和哈希算法:
1, 对称加密(Symmetric-key algorithm):采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常见的对称加密算法有DES、3DES等。
2, 非对称加密(asymmetric cryptographic algorithm):采用互成一对的公开密钥和私有密钥,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。常见的非对称加密算法有RSA,ECC等。
3, 哈希算法(Secure Hash Algorithm):又称安全散列算法,将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。这个算法具有不可逆,碰撞低等特性。常见的哈希算法有MD5,sha1等。
…阅读更多>>
问题是在用apache的ab工具测试网站的负载时候产生的, ab工具有两个参数-c和-n,-c是用来设置并发的数量,-n是用来设置请求的数量,如用ab -c 100 -n 100 https://www.hitoy.org/来给我的网站发送100个并发,100个请求。这里疑问就产生了,并发量和请求量有什么关系,并发到底是什么,用浏览器一次打开多个网站页面会产生的大并发吗, HTTP协议的keep-alive有什么用?
查看apache官方对ab工具的解释:
-c concurrency
Number of multiple requests to perform at a time. Default is one request at a time.
-c 并发
同一时间的请求数量,默认为1。
-n requests
Number of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative benchmarking results.
-n 请求数
一次测试过程中的所有请求数量,默认为1(此设置对测试结果不具有参考意义)。 …阅读更多>>
pushStack是jQuery内核中一个非常重要的函数,它是如此重要,以至于许多jQuery内部函数中都频繁用到它。平常情况下,虽然很少用到它, 但是掌握这个函数,不仅有利于理解jQuery的运行原理,还方便我们做更加高级的jQuery操作。
顾名思义,pushStack是入栈, 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。数据入栈时,类似与我们进电梯,后进而先出, 如下图:
…阅读更多>>
在去年10月份,我在博客中分析了php接收前台name值相同的表单提交数据的处理的问题,当时说的方案是为把name值改成数组类型,php接收到之后,再对数组进行合并处理。这样做的缺点就是不完全兼容前台表单,用户必须要对表单作出更改,而系统需求是所有升级对用户完全透明,所以说这种方式还是不够完美。
经过差不多一年时间的沉淀,发现php提供原始的访问输入/输出流的方法,POST的数据可以通过php://input来获取:
php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype=”multipart/form-data” 的时候 php://input 是无效的。
php://input 打开的数据流只能读取一次; 数据流不支持 seek 操作。 不过,依赖于 SAPI 的实现,请求体数据被保存的时候, 它可以打开另一个 php://input 数据流并重新读取。 通常情况下,这种情况只是针对 POST 请求,而不是其他请求方式,比如 PUT 或者 PROPFIND。