摘要:
AgileBoot 仓库 后端地址:https://github.com/valarchie/AgileBoot-Back-End 技术栈:Springboot / Spring Security / MyBatis Plus JPA 无XML/ Druid / Redis / Hutool / J 阅读全文
摘要:
请求重复提交的危害 数据重复:例如用户重复提交表单,造成数据重复。 资源浪费:多次重复请求提交将会浪费服务器的处理资源。但这个相比数据重复的危害性较小。 不一致性:假设我们触发请求增加用户的积分500,如果多次触发这个请求,积分是累加的。这个危害性比重复的数据更大。 安全性:例如我们在登录页面触发手 阅读全文
摘要:
何为请求限流? 请求限流是一种控制API或其他Web服务的流量的技术。它的目的是限制客户端对服务器发出的请求的数量或速率,以防止服务器过载或响应时间变慢,从而提高系统的可用性和稳定性。 中小型项目请求限流的需求 按IP、用户、全局限流 基于不同实现的限流设计(基于Redis或者LRU缓存) 基于注解 阅读全文
摘要:
XSS攻击是什么? XSS攻击是指攻击者利用网站中的漏洞,向页面中注入恶意脚本,从而获取用户的信息或者控制用户的计算机。 举一个通俗的例子,早期使用JSP页面渲染页面的项目,如果将用户名改成nick<alert>1</alert>,则当用户打开页面时,就会弹出一个警告框,而这个警告框可以被恶意脚本所 阅读全文
摘要:
缓存的重要性 简而言之,缓存的原理就是利用空间来换取时间。通过将数据存到访问速度更快的空间里以便下一次访问时直接从空间里获取,从而节省时间。 我们以CPU的缓存体系为例: CPU缓存体系是多层级的。分成了CPU -> L1 -> L2 -> L3 -> 主存。我们可以得到以下启示。 越频繁使用的数据 阅读全文
摘要:
需求场景 基础设施模块中有一些通用固定的基础配置。例如:日志的配置,Spring本身的配置以及MyBatis Plus相关的固定配置等等。 这些配置往往与环境无关,如何复用? # 日志配置 logging: level: # 记得配置到包名 com.agileboot: debug org.spri 阅读全文
摘要:
在使用了Mybatis Plus框架进行项目重构之后,关于如何更好的利用Mybatis plus。在此做一些总结供大家参考。 主要总结了以下这几个方面的实践。 基础设计 BaseEntity 逻辑删除 自动填充字段 代码生成类 查询操作 Query基类(复用+PageQuery) 普通Query L 阅读全文
摘要:
一些开源项目包含了各种编程的最佳实践供人参考学习和借鉴。但是也有一些开源项目虽然初衷是好的。但是包含了一些代码的坏实践。特别是对于一部分刚入行的大学生来说,可能会给到一些错误的示范。于是在此列举一些项目中的坏实践。 1.方法的用意判断是与否却返回字符串的“0”或者“1” 如果一个方法明确返回是与否这 阅读全文
摘要:
⚡平台简介⚡ AgileBoot是一套开源的全栈精简快速开发平台,毫无保留给个人及企业免费使用。本项目的目标是做一款精简可靠,代码风格优良,项目规范的小型开发脚手架。 适合个人开发者的小型项目或者公司内部项目使用。也可作为供初学者学习使用的模板项目。 前端采用Vue3、Element UI。对应前端 阅读全文
摘要:
本项目地址: github: https://github.com/valarchie/AgileBoot-Back-End gitee: https://gitee.com/valarchie/AgileBoot-Back-End 本项目说明:AgileBoot - 基于SpringBoot + 阅读全文
摘要:
本篇文章主要探讨关于统一错误码的设计,并提供笔者的实现 欢迎大家讨论,指正。 该错误码的设计在仓库: github:https://github.com/valarchie/AgileBoot-Back-End gitee:https://gitee.com/valarchie/AgileBoot- 阅读全文
摘要:
AgileBoot是笔者在业余时间基于ruoyi改造优化的前后端全栈项目。 关于AgileBoot的详细介绍:https://www.cnblogs.com/valarchie/p/16777336.html 学习一个项目首先的第一步就是把项目给run起来。 为了便于大家把项目Run起来~ 写个启动 阅读全文
摘要:
本文总结了常见高频的关于排序的算法考察。 1.冒泡排序 冒泡排序的思想是元素两两比较,将较大或者较小的元素往一端进行移动 public static void bubble(int[] array) { for (int i = 0; i < array.length - 1; i++) { for 阅读全文
摘要:
本文总结了常见高频的关于二叉树的算法考察。 1.计算一个给定二叉树的叶子节点数目。 可以采用递归的方式进行累加 2.计算二叉树的深度。 跟上题一样采用递归的方式,但需返回左右子树中较深的深度。 3.如何打印二叉树每层的节点。 借助一个队列,先把根节点入队,每打印一个节点的值时,也就是打印队列头的节点 阅读全文
摘要:
本文总结了常见高频的关于链表的算法考察。 1.如何找到链表的中间元素? 我们可以采用快慢指针的思想,使用步长为1的慢指针和步长为2的快指针,当快指针抵达链表末尾时,此时慢指针指向的即为中点位置。 我们还可以采用递归的方式,当递归到最末尾的时候,我们已经能知道链表的长度,此时当递归回去的时候,判断当前 阅读全文
摘要:
1.给定一个数值在1 100的整数数组,请找到其中缺少的数字。 找到丢失的数字 利用byte数组的1或0标记该数字是否被删除,例如byte数组下标为0的数值为1的话,代表数字1存在 public static void findMissNumber2(int[] ints) { int sum = 阅读全文
摘要:
这两段代码分别会打印出什么呢?? 很多人可能会想说都是打印333。 也有人会说打印333/222. 但其实第二个打印会直接报错。 ArrayList在按坐标添加元素的时候,会进行Index和size的对比,如果index大于size的话,则会直接报错。 阅读全文
摘要:
究其原因, 原来spring 扫包时候 扫了Webfilter 注解,注册了一次过滤匹配路径,扫了Component注解(又注册了一次过滤匹配路径,默认是全路径)。 Component注解后于WebFilter注解加载,所以导致Component注解覆盖了前面的匹配路径。 阅读全文
摘要:
import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List studentList = new ArrayList(); ... 阅读全文