最近代码写的有些痛苦,或者说,有些慢。觉得自己不能任性地去写代码,在写代码的时候,应该去考虑代码的复用,以及一些事务性的操作。
学习这东西真的很奇怪,大约在两周前,我大致看了下事务的概念,当时觉得也就一个一致性,并没有什么卵用。而事实上,在短短两周之后,在自己写代码的过程中,就遇到事务性的问题,写事务性的代码。
具体问题是APP的注册,在校验手机和验证码符合之后,会跳转到下一个页面提示用户填写密码,在我看来,之前和APP端定的是两个接口,做完之后稍加思考,就发现了其中的问题,用户注册应该是一个事务,用户名和密码永远应该同步生成。
至于原子性,涉及的具体操作是修改密码,因为确实可以用一句sql解决这个问题,而实际上,也也可以分成三步操作:1.根据用户名获取账户信息;2.比对密码;3.更新密码。仅仅对于这一个问题来说,一句sql确实容易,后者分解操作,反而繁杂;
这里就涉及到了原子性,因为根据手机号获取账户信息这一步操作,在整个业务过程中,会多次使用。那么将这种多次使用的功能单独拿出来,就很有必要了。
最直接的例子是,经过代码重构,Dao层只有四个接口,相比重构之前的8个接口,少了很多。
回头再看MVC框架,在之前的一篇文章中说过 controller-service-dao大多都是一对多的,这种一对多的好处在于,尽量原子化每一层的服务,使得每一层的接口尽可能的少。听起来似乎有点矛盾,尽量细化接口,还能减少接口?
事实上真是如此,就像数据库,不过增删改查四种功能,却支撑起庞大的互联网应用。
代码写到一定阶段,确实应该思考代码怎么写优雅,而不是仅仅为了实现功能。
都说程序员的抽象思维很重要,其实,就在这些不断地思考中慢慢提高的。
回头再看本科看操作系统时,书上提到的一对概念,精简指令集和复杂指令集。现在计算机的芯片大多都是精简指令集,也就是提供原子化的操作供上层应用使用。
而实际上,无论是从芯片还是操作系统,它们所提供的,都是对当前对象来说一些原子化的操作。
所谓的事务,其实早就被先贤们玩透了,我们仅仅是偷换个概念罢了。
分享到:
相关推荐
ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)四个属性的首字母缩写。原子性确保事务的所有操作要么全部完成,要么全部不完成;一致性则保证事务执行前后,数据库...
ACID(原子性、一致性、隔离性和持久性)是事务处理的四个基本特性。 9. **并发控制**:在多用户环境中,数据库需要处理多个事务同时进行的问题。并发控制机制如锁、多版本并发控制(MVCC)和两阶段提交等,确保了...
事务具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。当一个事务中的所有操作都成功完成时,我们称之为提交(Commit);如果其中任何一步失败,所有操作...
事务的四个核心特性是ACID(原子性、一致性、隔离性和持久性): 1. **原子性(Atomicity)**:事务中的所有操作要么全部成功,要么全部失败,不存在部分成功的情况。例如,在银行转账中,用户A账户的资金减少和...
为了确保数据的一致性和完整性,SQL Server 2000支持了分布式事务处理,确保了即使是在多个数据库或多个服务器之间,事务的原子性、一致性、隔离性和持久性(即ACID属性)也能得到保证。 以上内容仅是对文件片段的...
实用的事务处理技术,如ACID(原子性、一致性、隔离性、持久性)属性,由Jim Gray倡导,确保了在多用户环境下的并发操作和数据一致性,使得数据库系统能够在商业环境中稳定运行。 然而,随着技术的发展,数据库的...
事务是数据库管理中的基本操作单元,具有原子性、一致性、隔离性和持久性。实验要求你设计和执行事务,同时理解不同事务状态(提交、回滚或未明确结束)对数据的影响。此外,还需要通过多客户端并发操作来体验并发...
6. 数据库事务和并发控制:理解事务的概念、ACID属性(原子性、一致性、隔离性和持久性),学习死锁的预防和检测,以及各种并发控制技术,如锁定协议和多版本并发控制(MVCC)。 7. 数据库恢复:包括事务的日志、...
5. **事务处理与并发控制**:数据库中的事务处理是保证数据一致性和完整性的关键,报告可能涉及ACID属性(原子性、一致性、隔离性和持久性)以及锁机制。 6. **性能优化**:实验可能涉及到数据库性能的测试和优化,...
这要求学生理解事务的ACID属性(原子性、一致性、隔离性和持久性),并学会如何在游标中控制流程和处理数据。 评分标准强调了问题解决能力的重要性,每个问题的分值反映了其在整体学习目标中的地位。同时,学生的...
同时,也会涉及数据的插入、更新和删除,以及事务处理的概念,理解事务的ACID特性(原子性、一致性、隔离性和持久性)和并发控制的重要性。 实验报告要求包括对实验步骤的详细记录,调试过程的描述,以及对实验中...
理解事务的ACID属性(原子性、一致性、隔离性和持久性)以及不同的事务隔离级别是学习JTA的重点。 **EJB** EJB是J2EE中的核心组件,提供了服务器端的组件模型。EJB分为三种类型:session beans(处理业务逻辑)、...
6. **事务处理与并发控制**:事务的ACID属性(原子性、一致性、隔离性、持久性)是数据库系统的核心特性。理解并发控制机制,如锁定和行版本控制,对于处理多用户环境下的数据一致性至关重要。 7. **存储过程与...
- **原子性**:确保事务操作的完整性,要么全部完成,要么全部回滚。 - **一致性**:事务完成后,数据库处于合法状态。 - **隔离性**:并发执行的事务之间不会相互干扰,保证数据的一致性。 - **持久性**:一旦...
事务处理对于银行系统至关重要,因为它们确保了数据的原子性、一致性、隔离性和持久性。在ATM操作中,如转账,必须在事务中进行,以防止因网络故障或其他异常导致的数据不一致。 最后,项目还强调了使用游标技术,...
4. **事务处理**:通过实验,学生需要理解事务的概念,学习如何使用BEGIN、COMMIT、ROLLBACK等语句来管理事务,以保证数据库操作的原子性、一致性、隔离性和持久性。 5. **查询优化**:实验可能包含复杂的SQL查询,...
5. 数据库事务:解释什么是事务,以及ACID属性(原子性、一致性、隔离性和持久性)。举例说明在并发环境下如何利用事务处理数据操作。 实验一的结果截图和思考题解答是检验理解和应用的关键。通过清晰的截图,我们...
4. **事务处理**:财务管理涉及大量金融交易,这些交易需要在数据库中以原子性、一致性、隔离性和持久性(ACID)特性进行处理。SQL Server支持事务管理,确保了财务数据的完整性和一致性。 5. **安全性与权限管理**...