光阴似箭,日月如梭。转眼已经过去了一个月,孤尽训练营第四周也已经结束,今天我们一起来对这一周的内容做个简单回顾。
什么是单元测试?
对软件组成单元进行的测试,其目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元:模块,又称模块测试
为什么要单元测试?
怎么单元测试?
借助常用的单元测试框架,如 Junit、SpringTest等
系统安全规约
为什么需要注意系统安全?
一张照片就有可能暴露你的信息,客户的信息应该保密,系统权限应该严格控制
怎么做?
什么是JWT?
Json web toke(JWT)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC7519)定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名
为什么使用JWT?
传统token认证,用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息,性能低下,利用公钥私钥完成对令牌的加密,解决了性能问题。如果加密解密成功,则表示令牌合法,如果加密解密失败,则令牌无效,不合法。
怎么做?
是什么?
借助 setnx 和 expire 两个redis命令完成
为什么?
传统的并发加锁无法处理多实例的场景
怎么做?
利用Jedis 实现分布式锁,
Jedis就是集成了redis的一些命令操作,封装了redis的java客户端。提供了连接池管理。'
加锁
jedis.set = set key value [Ex seconds][Px milliseconds] [NX|XX]
解锁
jedis.del(key)
redisson分布式锁
是基于netty的redis 客户端。不但能操作原生的Redis 数据结构,还能为使用者提供了一系列具有分布式特性的常用工具类,实现了分布式锁。
RLock disLock = client.getLock("DISLOCK"); disLock.lock(); // 默认 30s ======================= disLock.tryLock(2000, 150000, TimeUnit.MILLISECONDS);
不登高山,不知天之高也,不临深溪,不知地之厚也。 --荀子