开发社区核心功能

1.过滤敏感词

        前缀树(Trie、字典树、查找树)

                查找效率高、消耗内存大

                应用:字符串检索、词频统计、字符串排序

        敏感词过滤器

2.发布帖子

        AJAX(Asynchronous JavaScript and XML)

                异步的JavaScript 与XML,不是一门新技术,只是一个新的术语

                使用AJAX,网页能够将增量呈现在页面上,而不需要刷新整个页面

                虽然X代表XML,但目前JSON的使用比XML更加普遍 

https://developer.mozilla.org/zh-CN/docs/Web/Guide/AJAX

3.帖子详情

4.事务管理

        (1)事务是由N步数据库操作序列组成的逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。

        (2)事务的特性:ACID

                原子性Atomicity:事务是应用中不可再分的最小执行体。

                一致性Consistency:事务执行的结果,须使数据从一个一致性状态变成另一个一致性状态。

                隔离性Isolation:各个事务的执行互不干扰,任何事务的内部操作对其他事务都是隔离的。

                持久性Durability:事务一旦提交,对数据所做的任何改变都要记录到永久存储器中。

        (3)事务的隔离性:

                常见的并发异常

                        第一类丢失更新(某一类事务的回滚,导致另一个事务已更新的数据丢失了)、第二类丢失更新(某一类事务的提交,导致另一个事务已更新的数据丢失了)。

                        脏读(某一个事务,读取了另外一个事务未提交的数据)、不可重复读(某一个事务,对同一个数据前后读取的结果不一致)、幻读(某一个事务,对同一个表前后查询到的行数不一致)。

                常见的隔离级别

                        Read Uncommitted:读取未提交的数据。(数据的安全性无法保证,无法处理异常)(不常用)

                        Read Committed:读取已提交的数据。(解决了第一类丢失和脏读问题)

                        Repeatable Read:可重复读。(没有解决幻读)

                        Serializable:串行化。(所有的问题都不会出现,但是性能过低)(不常用)

        (4)实现机制 

                悲观锁(数据锁)

                        共享锁(S锁):事务A对数据加了共享锁后,其他事务只能对该数据加共享锁,但不能加排他锁。

                        排他锁(X锁):事务A对数据加了排他锁后,其他事务对该数据既不能加共享锁,也不能加排他锁。

                乐观锁(自定义)

                        版本号、时间戳等

                        在更新数据前,检测版本号是否发生变化。若变化则取消此次更新,否则就更新数据(版本号+1)。

        (5)Spring事务管理

                声明式事务

                        通过XML配置,声明某方法的事务特征

                        通过注解,声明某方法的事务特征

                编程式事务

                        通过transactionTemplate管理事务,并通过它执行数据库的操作

5.显示评论 /  6.添加帖子  /  7.私信列表  /  8.发送私信

9.统一处理异常

        @ControllerAdvice

                用于修饰类,表示该类是Controller的全局配置类。

                在此类中,可以对Controller进行三种全局配置:异常处理方案、绑定数据方案、绑定参数方案。

        @ExceptionHandler

                用于修饰方法,该方法会在Controller出现异常后被调用,用于处理捕获到的异常。

        @ModelAttribute

                用于修饰方法,该方法会在Controller执行前被调用,用于为Model对象绑定参数。

        @DataBinder

                用于修饰方法,该方法会在Controller执行前被调用,用于绑定参数的转换器。

10.统一记录日志

        AOP的概念(Aspect Oriented Programing):即面对方面(切面)编程。

        AOP是一种编程思想,是对OOP的补充,可以进一步提高编程的效率。

        AOP的实现

                AspectJ

                        AspectJ是语言级的实现,它扩展了Java语言,定义了AOP语法。

                        AspectJ在编译前织入代码,它有一个专门的编译器,用来生成遵守Java字节码规范的class文件。

                Spring AOP

                        Spring AOP使用纯Java实现,它不需要专门的编译过程,也不需要特殊的类装载器。

                        Spring AOP在运行时通过代理的方式织入代码,只支持方法类型的连接点。

                        Spring支持对AspectJ的集成。

                Spring AOP代理方式:

                        JDK动态代理

                                Java提供的动态代理技术,可以在运行时创建接口的代理实例。

                                Spring AOP默认采用此种方式,在接口的代理实例中织入代码。

                        GGLib动态代理

                                采用底层的字节码技术,在运行时创建子类代理实例。

                                当目标对象不存在接口时,Spring AOP会采用此种方式,在子类实例中织入代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值