CryptoJS是原生javascript写的加密类库,提供了各种编码和加密算法,如MD5、SHA-1、SHA-256、AES、HMAC、PBKDF等。
以常见的Md5摘要及Base64编码为例,测试代码如下:
index.html
|
|
CryptoJS是原生javascript写的加密类库,提供了各种编码和加密算法,如MD5、SHA-1、SHA-256、AES、HMAC、PBKDF等。
以常见的Md5摘要及Base64编码为例,测试代码如下:
|
|
Nginx是一款高性能的HTTP和反向代理服务器(安装),有如下优势:
相比而言,劣势如下:
定义:阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。
BlockingQueue是个接口,实现有ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue。
本文使用ArrayBlockingQueue:有界的阻塞队列,内部实现是将对象放到一个数组中。jdk源码为:
参数capacity为数组容量;fair为true,插入或删除对象时,按FIFO顺序处理。
微信昵称支持Emoji表情,存储微信昵称时,若线上mysql编码未采用utfmb4,依然使用utf-8,向数据库写数据时就要过滤掉昵称中的Emoji表情。
过滤emoji可选用以下方法:
|
|
服务端收到通过拦截器的请求后,第一步,即为对请求参数的合法性校验。
合法性校验依次为三部分:
一般的参数校验举例如下:
如果采用如下方式接受传入参数,看起来好像可以解决校验臃肿的问题:
但是如果参数过多呢,列出所有传参,代码显示较多,而且耦合较高,无法复用。
统一提出为Model,使用validation校验,采用bean注入方式调用,使代码看起来不那么臃肿,层次分明,Model大多时候可以复用,如下所示:
RSA为非对称加密,根据应用场景不同,分如下两种:
1.签名:使用私钥加密,公钥解密。用于验证私钥持有者的身份,防止私钥所有者发布的内容被篡改,但是公钥一般是公开的,所以无法保证加密内容不被其他人获得。
2.加密:公钥加密,私钥解密。加密内容无法被他人获得,但是信息可能被他人篡改伪造。
以下为Java中RSA算法的实现:
mysql使用limit,offset实现分页。
limt 3 offset 5 效果同 limit 5,3
都表示偏移5,从第6条开始读,读3条记录。示例如下:
在接口自测及联调阶段,需要伪造数据供测试使用,以如下简单程序示例循环插入数据:
注释:DELIMITER作用是告诉Mysql解释器,该段命令是否已经结束。默认情况下,delimiter是分号;mysql一遇到分号,就要自动执行,所以需要事先把delimiter换成其它符号,如//或$$,最后再重置为默认值。
最近开发遇到当Mysql存储微信昵称,而微信昵称有emoji表情符号时,数据库存储数据出现乱码。原因是mysql支持的utf8编码最大长度为3字节,如果遇4字节的宽字符(emoji表情符号、不常用的汉字、新增的Unicode字符等)就会插入异常。
Mysql在5.5.3之后增加utf8mb4(most bytes 4)编码,专门用于兼容四字节的unicode,一般情况。为了节省空间,使用utf8即可,但是建议使用utf8mb4。
使用Linux的发行版本为Centos
查看版本简易方法:
终端下:mysql -V
mysql下:status; 或 select version();
修改my.conf(windows下为my.ini)
修改前后的配置文件及系统编码分别如下: