跳至主要內容
常见加密算法总结

加密算法是一种用数学方法对数据进行变换的技术,目的是保护数据的安全,防止被未经授权的人读取或修改。加密算法可以分为三大类:对称加密算法、非对称加密算法和哈希算法(也叫摘要算法)。

日常开发中常见的需要用到的加密算法的场景:

  1. 保存在数据库中的密码需要加盐之后使用哈希算法(比如 BCrypt)进行加密。
  2. 保存在数据库中的银行卡号、身份号这类敏感数据需要使用对称加密算法(比如 AES)保存。
  3. 网络传输的敏感数据比如银行卡号、身份号需要用 HTTPS + 非对称加密算法(如 RSA)来保证传输数据的安全性。
  4. ……

Guide大约 17 分钟系统设计安全
JWT 身份认证优缺点分析

JWT 基本概念详解这篇文章中,我介绍了:

  • 什么是 JWT?
  • JWT 由哪些部分组成?
  • 如何基于 JWT 进行身份验证?
  • JWT 如何防止 Token 被篡改?
  • 如何加强 JWT 的安全性?

这篇文章,我们一起探讨一下 JWT 身份认证的优缺点以及常见问题的解决办法。


Guide大约 10 分钟系统设计安全
软件工程简明教程

大部分软件开发从业者,都会忽略软件开发中的一些最基础、最底层的一些概念。但是,这些软件开发的概念对于软件开发来说非常重要,就像是软件开发的基石一样。这也是我写这篇文章的原因。

何为软件工程?

1968 年 NATO(北大西洋公约组织)提出了软件危机Software crisis)一词。同年,为了解决软件危机问题,“软件工程”的概念诞生了。一门叫做软件工程的学科也就应运而生。

随着时间的推移,软件工程这门学科也经历了一轮又一轮的完善,其中的一些核心内容比如软件开发模型越来越丰富实用!


Guide大约 6 分钟系统设计
JWT 基础概念详解
JavaGuide官方知识星球
JavaGuide官方知识星球

什么是 JWT?

JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制。 从 JWT 的全称可以看出,JWT 本身也是 Token,一种规范化之后的 JSON 结构的 Token。


Guide大约 6 分钟系统设计安全
Java 定时任务详解

为什么需要定时任务?

我们来看一下几个非常常见的业务场景:

  1. 某系统凌晨 1 点要进行数据备份。
  2. 某电商平台,用户下单半个小时未支付的情况下需要自动取消订单。
  3. 某媒体聚合平台,每 10 分钟动态抓取某某网站的数据为自己所用。
  4. 某博客平台,支持定时发送文章。
  5. 某基金平台,每晚定时计算用户当日收益情况并推送给用户最新的数据。
  6. ……

这些场景往往都要求我们在某个特定的时间去做某个事情,也就是定时或者延时去做某个事情。

  • 定时任务:在指定时间点执行特定的任务,例如每天早上 8 点,每周一下午 3 点等。定时任务可以用来做一些周期性的工作,如数据备份,日志清理,报表生成等。
  • 延时任务:一定的延迟时间后执行特定的任务,例如 10 分钟后,3 小时后等。延时任务可以用来做一些异步的工作,如订单取消,推送通知,红包撤回等。

Guide大约 18 分钟系统设计
敏感词过滤方案总结

系统需要对用户输入的文本进行敏感词过滤如色情、政治、暴力相关的词汇。

敏感词过滤用的使用比较多的 Trie 树算法DFA 算法

算法实现

Trie 树

Trie 树 也称为字典树、单词查找树,哈系树的一种变种,通常被用于字符串匹配,用来解决在一组字符串集合中快速查找某个字符串的问题。像浏览器搜索的关键词提示就可以基于 Trie 树来做的。

浏览器 Trie 树效果展示
浏览器 Trie 树效果展示

Guide大约 4 分钟系统设计安全
设计模式常见面试题总结

设计模式 相关的面试题已经整理到了 PDF 手册中,你可以在我的公众号“JavaGuide”后台回复“PDF” 获取。

JavaGuide 官方公众号
JavaGuide 官方公众号

《设计模式》PDF 电子书内容概览


Guide小于 1 分钟系统设计