ikki@github.io:~$

  • 安全算法

    安全算法 安全算法概览 安全相关的常见的算法分为2大类:消息摘要算法 和 加密算法 类别 算法 区别 消息摘要算法 MD5, SHA1, SHA256, HmacMD5, HmacSHA1,Hmac512 其中HMAC 是带有秘钥的摘要算法。签名数据,数据本身可读,数据被修改时被发现 加密算法 DES,3DES,AES,RSA 其中 RSA 是非对称加解密算法,即 加密和解密使用的不是同一个秘钥。加密,数据不可读。防止获取 误区 有人经常把 摘要算法 也叫做 加密算法,这个是错误的认知。凡是加密就一定能解密,凡是不能解密的算法都不能叫做加密算法。 有人把Base64 也叫做加密算法,这个也是错误的,Base64 只能叫做编码算法。和 2进制转16进制 的算法本质上没有区别,而且Base64 算法没有秘钥的概念。 非对称秘钥可以互换加解密:公钥不一定是用来加密的, 私钥也不一定是用来解密的。 性能 基于JMH 的加解密性能测试(仅供参考) Benchmark Mode Cnt Score Error Units CipherPerformTest.encryptByCBC avgt 10 5893.295 ± 315.086...

  • 基于redis 的延迟队列

    基于Redis 的延迟队列 延迟队列 延迟队列是一个业务需求。没有谁愿意在系统里阻塞一堆数据不去消费。 使用redis Zset 和 List 的相关特性实现 Redis ZSet 是一个有序集合, 每一个 Member 都可以添加一个Score, 数据会按照Score 进行排序 将要消费的数据的时间戳作为Score, 添加到ZSet中 Redis List 是一个有序列表, 可以从头部(左边) 插入, 尾部(右边) 弹出 将要消费的数据从 ZSet 中捞出, 添加到List 中, 消费者线程Pop List 中的数据并进行消费 搬迁: 从ZSet 到 List 中 // 实现一个分布式锁, 使用spring-boot-data-redis-luttuce 实现 boolean isLock = false; String lockValue =...

  • Shardingsphere读写分离

    基于shardingsphere 读写分离方案 shardingsphere ShardingSphere 源于 Sharding-JDBC, 是当当网自研的 java 框架, 用于实现读写分离, 分布式事务, 分库分表等更高级的功能。 ShardingSphere 现已进入Apache 孵化器, 从 4.0.0 版本开始, 由Apache 发布 数据库架构 主流的 数据库架构方案中, 要实现 读写分离 或 分库分表的功能, 有 2 种方案: 在应用层实现 优点是: 依赖应用层的数据库驱动, 可以实现对任意数据库的操作; 没有额外的网络性能消耗 缺点是: 对代码有一定的侵入性; 当部署多个应用实例时, 数据库连接数会成倍增加 在代理层实现 优点是: 对应用层没有侵入, 无需代码变动, 支持异构语言; 需要的连接数不会增加 缺点是: 支持的数据单一, 有额外的网络性能损耗。 基于 Spring...