PHP和JS加解密

最近遇到的几个网站在提交密码时提交的已经是密文,也就是说在网络上传输的密码是密文,这样提升了密码在网络传输中的安全性。

后端语言加解密已经有很成熟的方案了,前端的话Google之前出过一个crypto-js,为浏览器的js提供了加解密方案。今天一起来了解一下基于AES的前后端加解密流程。

Javascript

解决数据库N+1查询问题

需求

数据表如下:

department表

在Swoole环境下运行注入Yii2框架的thrift应用

前两天发布了使用swoole来运行thrift应用,项目虽然可以运行起来,但是周边的生态(如缓存,ORM,日志等等)并没有跟上,实际上开发体验比较差。周末研究了一下,把Yii2框架集成到了thrift应用上。

项目地址:https://github.com/swoole-foundation/yii2-swoole-thrift

Yii2优势:

在swoole上运行Yii2应用

Yii2:业界著名的开发框架,完美的OOP设计以及组件化开发思想保证了框架的扩展性。
Swoole:面向生产环境的 PHP 异步网络通信引擎。使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。

Yii2优点

  • 完美的OOP设计

使用swoole来运行thrift应用

Swoole扩展简介

Swoole:面向生产环境的 PHP 异步网络通信引擎

使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

在缓存中使用闭包函数

闭包函数

PHP官方文档对于闭包函数的定义:

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。

在事务中使用闭包函数简化开发

闭包函数

PHP官方文档对于闭包函数的定义:

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。

c语言实现简单版的php z_val结构体

源码

学习过PHP的人都知道PHP是基于C语言开发的,但是C语言是强类型的,PHP如何实现弱类型呢?答案在于这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
typedef union _zvalue_value {
long lval; /* long value */
double dval; /* double value */
struct {
char *val;
int len;
} str;
HashTable *ht; /* hash table value */
zend_object_value obj;
zend_ast *ast;
} zvalue_value;

struct _zval_struct {
/* Variable information */
zvalue_value value; /* value */
zend_uint refcount__gc;
zend_uchar type; /* active type */
zend_uchar is_ref__gc;
};

type保存了实际的类型,而value这个共用体保存了具体的值,我们使用到变量的时候需要根据变量类型来取出_zvalue_value中保存的具体值。
采用union能够避免内存浪费,同一时刻,一个_zval_struct中的共用体zvalue_value只有一个成员会分配内存,避免了无谓的内存分配。

redis常用实践

Redis相信大家都不陌生,而如果只是用来取代memcached做缓存的话,实在是大材小用了。一起来看看生产环境下的常用用法。

分布式锁

1
2
3
4
$canLock = $redis->set('k', 1, 'NX', 'EX', 2);
if($canLock) {
// 获得锁成功
}

锁定键名为k的数据两秒钟,两秒后该方法才能重新获取锁

使用yii2依赖注入规范业务开发

本文代码

https://github.com/xialeistudio/yii2-di-demo

什么是依赖注入(DI)?

对象由框架来创建而不是程序员通过 new 创建。跟IoC差不多一个意思。

为什么要有依赖注入?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×