在PHP中,可以使用openssl扩展来实现AES/ECB/PKCS7Padding解密。我们需要自己实现PKCS7Padding和PKCS7Unpadding,因为openssl_encrypt和openssl_decrypt函数默认不使用PKCS7Padding。
php与java的rsa加密互通问题
近在整接口对接;对方用的是java,里面用到了RSA加密模式,我用php写,结果不行,发过去以后,对方表示无法解密
去官网看了下openssl_private_encrypt的OPENSSL_NO_PADDING形式;
For a 1024 bit key length => encrypted number of raw bytes is always a block of 128 bytes (1024 bits) by RSA design.
For a 2048 bit key length => encrypted number of raw bytes is always a block of 256 bytes (2048 bits) by RSA design.
然后就手动填充了ASCII 0;补全256字节就解决了
$Str = str_pad($Str, 256, “\0”, STR_PAD_LEFT);
SFtp上传下载文件
一个用php写的sftp上传下载文件类
RSA加解密工具类
一个用php写的RSA加解密工具类
READ MORE →
记录一下统一流量商城的架构设计
要求为:1、多个分省对外暴露统一接口。2、统一请求、响应参数。
mysql的查询缓存QUERY_CACHE
查询缓存(QueryCache)保存查询返回的完整结果。当查询命中该缓存,MySQL会立即返回结果,跳过解析、优化和执行阶段。
官方在特定环境测试结果(官方文档中有详细说明):
1.如果对某表进行简单查询,但每次查询条件都不一样时,打开查询缓存会导致性能下降13%。
2.如对一个只有一行数据的表进行查询,则可以提升238%。
所以查询缓存特别适用于更新频率非常低、查询频率非常高的场景。
缓存命中规则
缓存存放在一个引用表中,通过一个哈希值引用,哈希值包含了(查询本身、当前查询的数据库、客户端协议的版本等)。
判断是否命中时,MySQL不会解析语句,而是直接使用SQL语句和客户端发送来的其他原始信息。任何字符上的不同都会导致缓存不命中。
如果查询语句中包含任何的不确定函数则不会缓存(如NOW()),因为在执行这个查询之后,MySQL会禁止缓存该查询,所以在查询缓存中是不可能找到缓存结果的。
什么情况下查询缓存能发挥作用
并不是所有情况下查询缓存都能提高系统性能。打开查询缓存对读和写操作都会带来额外消耗:
- 读查询在开始之前必须先检查是否命中缓存。
- 如果这个读查询可以被缓存,那么当完成执行后,需要将结果存入缓存。
- 每次写入操作时,需要将对应表的所有缓存都设置失效。如果缓存较大或碎片很多,则会带来很大消耗。
缓存命中率:
SHOW STATUS中能提供一个全局的性能指标用以计算缓存命中率:
每次SELECT查询,要么增加Qcache_hits(查询缓存命中次数),要么增加Com_select(无缓存的查询次数+错误查询+权限检查查询),所以命中率计算公式:Qcache_hits / (Qcache_hits + Com_select)。
缓存配置和维护
query_cache_type:是否打开查询缓存。可以设置为(OFF、ON、DEMAND)。DEMAND表示只有在查询语句中明确标记SQL_CACHE的语句才放入查询缓存。
query_cache_size:查询缓存使用总空间。
query_cache_min_res_unit:在查询缓存中分配内存块的最小单位。
query_cache_limit:MySQL能缓存的最大查询结果。
query_cache_wlock_invalidate:如果某个数据表被其他的连接锁住,是否仍然从查询缓存中返回结果。
指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:
SHOW VARIABLES LIKE ‘%query_cache%’;
SHOW STATUS LIKE ‘Qcache%’;
Thinkphp5 的widget(小部件)功能使用
现在Widget叫分层控制器,不过我习惯叫它小部件,它是非常好用的一个东西。网页上很多地方是可以公用的,比如说导航栏、用户登录区域等,我们可以使用小部件功能减少重复代码。
官方文档连接:https://www.kancloud.cn/manual/thinkphp5_1/353983
thinkphp UEditor编辑器添加在线图片&&在线附件删除功能
通过ueditor来编辑文章,其中可以上传些图片附件,文章删除只能删除数据库中的图片路径,并不会把文件删除,久而久之就会有大量的垃圾文件。用以下方法给Ueditor编辑器添加附件删除功能。
php7的新特性
1. null合并运算符(??)
??语法: 如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个操作数.
//php7以前 if判断 if(empty($_GET['param'])) { $param = 1; }else{ $param = $_GET['param']; } //php7以前 三元运算符 $param = empty($_GET['param']) ? 1 : $_GET['param']; //PHP7 null合并运算符 $param = $_GET['param'] ?? 1;//1