孤尽训练营打卡日记day28--第四周总结

前言

        光阴似箭,日月如梭。转眼已经过去了一个月,孤尽训练营第四周也已经结束,今天我们一起来对这一周的内容做个简单回顾。

第一次课 单元测试和系统安全规约

什么是单元测试?

        对软件组成单元进行的测试,其目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元:模块,又称模块测试

为什么要单元测试?

  • 提高软件质量
  • 促进代码优化
  • 提升研发效率

怎么单元测试?

        借助常用的单元测试框架,如 Junit、SpringTest等

系统安全规约

为什么需要注意系统安全?

        一张照片就有可能暴露你的信息,客户的信息应该保密,系统权限应该严格控制

怎么做?

  • 校验权限,防止越权行为,包含数据权限和操作权限
  • 敏感信息数据脱敏,
  • 防止SQL注入

第二次课 用户系统实现

什么是JWT?

         Json web toke(JWT)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC7519)定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名

为什么使用JWT?

        传统token认证,用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息,性能低下,利用公钥私钥完成对令牌的加密,解决了性能问题。如果加密解密成功,则表示令牌合法,如果加密解密失败,则令牌无效,不合法。

怎么做?

  • 私钥颁发令牌
  • 公钥验证令牌

第三次课 Redis分布式锁

是什么?

        借助 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);

不登高山,不知天之高也,不临深溪,不知地之厚也。   --荀子

你可能感兴趣的:(java)