仿牛客网社区项目总结 第三章

文章详细介绍了Java中过滤敏感词的原理和优化,包括使用前缀树提高性能。此外,讨论了异步请求的概念,如AJAX的应用,以及事务管理的基础知识,如事务的隔离级别和并发异常。文章还涵盖了AOP(面向切面编程)的原理,SpringAOP的实现方式,以及如何统一捕获和记录日志。
摘要由CSDN通过智能技术生成

学习仿牛客网社区项目

代码&资源

各章节总结
第一章
第二章
第三章
第四章
第五章
第六章
第七章
第八章

过滤敏感词

Java原生API的缺点?

Java自带的原生API也可以实现过滤敏感词,但若遇到大篇幅文章,replace方法性能就太低了。
故使用前缀树方法,此方法用空间换时间,以消耗内存为代价。

过滤敏感词的基本原理?

  1. 用到三个指针,第一个指针指向树的结点,根节点为空。如下图:
    在这里插入图片描述
  2. 用两个指针遍历字符串,上面的为begin,下面的为position。begin先移动,同时树指针检查root的子节点,若二者匹配则树指针指向子节点position++;若二者没有匹配则begin++position++。直到position遍历完整个字符串(相比begin遍历完整个字符串更节约性能一点)。最终begin~position即为敏感词,用“**”替换。

特点:begin只进不退,position以当前begin为起点,来回跳动。

在这里插入图片描述
3. StringBuilder是一个类,用来拼接字符串,这里我们用作存储结果字符串。
在这里插入图片描述

异步请求

什么是异步请求?

整个网页不刷新,访问服务器,得到数据后返回给网页,局部刷新。实现异步请求的技术叫AJAX。网页能够将增量更新呈现在页面上。

什么是AJAX?

AJAX指异步的json和xml技术,不是一门新的语言,而是使用现有技术的新方法。项目中帖子发布成功/失败的提示使用该技术。

事务管理

什么是事务?

事务是由N步数据库操作序列组成的逻辑执行单元,这一系列操作要么全执行,要么全放弃执行。即一旦开始,必须全部执行完。

常见的并发异常有哪些?

详细解释

  • 第一类丢失更新:某一个事务回滚,会导致另一个事务已更新的数据丢失。
  • 第二类丢失更新:某一个事务提交,会导致另一个事务已更新的数据丢失。
  • 脏读:某一个事务读取了另一个事务未提交的数据。
  • 不可重复读:某一个事务对同一个数据前后读取的结果不一致。
  • 幻读:某一个事务对同一个表前后查询的行数不一致。

常见的隔离级别有哪些?

  • Read Uncommitted:读取未提交的数据。
  • Read Committed:读取已提交的数据。
  • Repeatable Read:可重复读。
  • Serializable:串行化。
    在这里插入图片描述

事务的实现机制有哪些?

  1. 悲观锁(数据库)

    • 共享锁(S锁):事务A对某数据加了共享锁,其他事务只能加共享锁,不能加排他锁。(只读不写)
    • 排他锁(X锁):事务A对某数据加了排他锁,其他事务不能加共享锁,也不能加排他锁。(不读不写)
  2. 乐观锁(自定义)

    更新前检查版本号/时间戳,若未变化则更新,否则取消本次更新。

统一捕获异常

怎样实现统一捕获异常?

服务器的三层结构中,错误会层层向上传递,所以只需要在表现层(controller)统一处理错误即可。
在Spring Boot的项目某一路径下,加上对应的错误页面,发生错误时会自动跳转。

AOP

什么是AOP?

面向切面编程,是一种编程思想,是对OOP(面向对象编程)的补充。将业务模块共同调用的逻辑封装起来,降低耦合,可以进一步提高编程效率。如下图:右上角为系统组件,这些组件横跨了多个业务组件,像切开它们一样(面向切面)。
在这里插入图片描述

AOP的常用术语有哪些?

我们只需要编写Aspect封装组件的代码,通过Weaving(织入)到目标代码的连接点(Jionpoint)进行控制。
切点(Pointcut)控制织入的具体位置;
通知(Advice)控制织入的具体逻辑。
在这里插入图片描述

什么是Spring AOP?

Spring AOP本质上基于动态代理,当要代理的对象实现了某接口,会使用JDK动态代理,在运行时通过创建接口的代理实例,织入代码。当要代理的对象没有实现接口,则使用Cglib技术(编译时增强),通过子类代理织入代码。

怎样实现统一记录日志?

本项目中,将aspect织入所有业务模块,通过这段代码,实现统一记录日志。
在这里插入图片描述

参考文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值