自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Standard PHP Library(SPL)中的数据结构

SPL提供了一组标准数据结构。SplDoublyLinkedList Class:双向链表(DLL)是在两个方向上相互链接的节点列表。当底层结构是dll时,迭代器的操作、对两端的访问、节点的添加或删除均是O(1),为堆栈和队列提供了良好的实现SplDoublyLinkedList::add — Add/insert a new value at the specified indexSp

2017-07-17 09:27:56 260

原创 PHP中的数据结构:DS扩展

PHP7以上才能安装和使用该数据结构扩展,安装比较简单:1. 运行命令 pecl install ds2. 在php.ini中添加 extension=ds.so3. 重启PHP或重载配置 Collection Interface:包含本库中所有数据结构通用功能的基本interface。 It guarantees that all structures are traversa

2017-07-17 09:27:53 573

原创 关于Lumen / Laravel .env 文件中的环境变量是如何生效的

.env 文件可自定义其他任何有效的环境变量,并可通过  调用 env() 或 $_SERVER 或 $_ENV  来获取该变量。那么env()是如何加载到这些变量的呢?在Lumen的vendor/laravel/lumen-framework/src/helpers.php中,我们可以发现env函数是这样被定义的:if (! function_exists('env')) { /**

2017-07-17 09:27:48 2500

原创 PHP垃圾回收机制

实现垃圾回收机制的整个原因是为了通过清理循环引用的变量来节省内存占用。引用计数:php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息:is_ref和refcount。is_ref是个bool值,用来标识这个变量是否是属于引用集合,php引擎才能把普通变量和引用变量区分开来;refcount用以表示指向这个zval变量容器的变量个数

2017-07-17 09:27:46 806

原创 排序算法系列

基于比较排序算法时间下限为O(nlogn),计数排序时间复杂度O(n)。  在待排序列基本有序的情况下,直接插入排序是最佳排序算法;快速排序的效率一般情况下都比较高,但在待排序列基本有序的情况下,时间复杂度接近 O(n2);归并排序效率仅次于快速排序,是稳定排序,经常用于多个有序的数据文件归并成一个有序的数据文件以及求解逆序对数,最好、最坏、平均时间复杂度均为O(nlogn),空间复杂度为O(n

2017-07-17 09:27:41 395

原创 关于Javascript循环体变量声明与初始化的效率问题

针对循环体变量声明与初始化的效率问题,将执行的简单测试代码如下:function test(n) { console.time('Internally initialized'); for (let i = 0; i ) { let a = i; } console.timeEnd('Internally initialized');

2017-07-17 09:27:36 574

原创 求最短路径算法系列

一 . 动态规划算法  适用于求解多阶段决策过程中的最优化问题,必须满足最优化原理、无后效性和重叠性。使用动态规划只需要多项式时间复杂度,因此它比回溯法、暴力法等要快许多。划分阶段:  求解最短路径:     过程指标函数基本方程(和):  Javascript实现算法:/** * 示例:s = {* 4:{s:{C1:

2017-07-17 09:27:31 316

原创 Nginx上部署HTTPS + HTTP2

Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/,然后在编译配置Nginx时要指定--with-http_ssl_module和--with-http_v2_module。另外,若要在本地运行openssl命令,要安装OpenS

2017-07-17 09:27:26 2378

原创 OAuth 2.0 / RCF6749 协议解读

OAuth是第三方应用授权的开放标准,目前最新版本是2.0,以下将要介绍的内容和概念主要来源于该版本。恐篇幅太长,OAuth 的诞生背景就不在这里赘述了,可参考 RFC 6749 。  四种角色定义:Resource Owner:资源所有者,即终端用户Resource server:资源服务器,即提供资源存储访问一方Client:通常指第三方应用Authorization server

2017-07-17 09:27:21 632

原创 OAuth 2.0: Bearer Token Usage

Bearer Token (RFC 6750) 用于OAuth 2.0授权访问资源,任何Bearer持有者都可以无差别地用它来访问相关的资源,而无需证明持有加密key。一个Bearer代表授权范围、有效期,以及其他授权事项;一个Bearer在存储和传输过程中应当防止泄露,需实现Transport Layer Security (TLS);一个Bearer有效期不能过长,过期后可用Refresh T

2017-07-17 09:27:16 2883

原创 HTTP认证模式:Basic and Digest Access Authentication

一. Basic 认证  客户端以“ : ”连接用户名和密码后,再经BASE64编码( Base64 Content-Transfer-Encoding )通过Authorization请求头发送该密文至服务端进行验证,每次请求都需要重复发送该密文。可见Basic认证过程简单,安全性也低,存在泄露个人账号信息以及其他诸多安全问题,最好在实现了Transport Layer Security (T

2017-07-17 09:27:11 1697

原创 MySQL 事务与锁机制

  下表展示了本人安装的MariaDB(10.1.19,MySQL的分支)所支持的所有存储引擎概况,其中支持事务的有InnoDB、SEQUENCE,另外InnoDB还支持XA事务,MyISAM不支持事务。锁可以通过SQL语句(如 LOCK TABLES )显式申请,也可以由InnoDB引擎自动为你获取。下文将讨论InnoDB和MyISAM在事务与锁定方面的相关话题ENGINESUPPORTCOMM...

2017-07-17 09:27:07 267

原创 Laravel框架一:原理机制篇

Laravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特点。 一. 请求周期  Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件。注册类文件自动加载器:Laravel通过composer进行依赖管理,并在bootstrap/autoload.php中注册了Composer Auto Loader (PSR-4),应

2017-07-17 09:27:02 404

原创 PHP对象相关知识点的总结

对象传递:一种说法是“PHP对象是通过引用传递的”,更准确的说法是别名(标识符)传递,即它们都保存着同一个标识符(ID)的拷贝,这个标识符指向同一个对象的真正内容,与引用(&)有质的区别,请比较下例中行11和行18的输出结果。 1 php 2 class A { 3 public $foo = 1; 4 } 5 6 $a = new A; 7 $b = $a;

2017-07-17 09:26:57 230

原创 Docker笔记二:Lumen + Redis

Lumen 基于 Laravel 打造,专为构建微服务和 APIs 而生;Redis 与 Memcached 均为常用的 key-value 内存对象缓存服务(系统),免费开源,Redis 支持持久化,但Memcached 不支持持久化,Redis 与 Memcached 均可进行集群化部署。Lumen与Redis服务端通信可通过Predis(PHP库)或者PhpRedis(PHP的C扩展)来实现

2017-07-17 09:26:50 1104

原创 ECMAScript 6新特性简记

ECMAScript 6.0是JavaScript语言的2015年6月的发布版。一.let和const命令let:用来声明变量,用法类似于var,但是只在let命令所在的代码块内有效。var a = [];for (let i = 0; i ) { a[i] = function () { console.log(i); };}a[6](); // 6con

2017-07-17 09:26:45 444

原创 Tsung:开源多协议分布式负载&压力测试工具

Main featuresHigh Performance: the load can be distributed on a cluster of client machinesMulti-protocols using a plugin system: HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP , XMPP/Jabber, BOSH, MQT

2017-07-17 09:26:38 459

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除