工作感悟

IOC

在运行期确定要生成的对象,减少硬编码的依赖,可以对Object生命周期管理,带来动态性的便利。
DataSource接口,有直接JDBC访问的DataSource, 又带connection pool的DataSource.
通过IOC,可以确定运行环境的DataSource是否需要connection pool,而不需要改动任何编码.

同步

同步是为了保持对象在业务处理过程中的一致性,在多线程环境中这种问题尤其存在。同步处理得好与坏直接影响系统的性能。
Shared Object: 银行账户余额(小李) = 1000
Thread 1: 开始 -> 获取小李银行账户余额 -> 账户余额 - 500元消费 -> 结束
Thread 2: 开始 -> 获取小李银行账户余额 -> 账户余额 - 200元水电费 -> 结束
并行过程中,Thread 1和Thread 2获取的账户余额都是1000,Thread 2最后余额是800,而不是真实的300。
加了同步以后:
Shared Object: 银行账户余额(小李) = 1000
Thread 1: 开始 -> 获取小李银行账户余额 -> 账户余额 - 500元消费 -> 结束
Thread 2: 开始 -> 获取小李银行账户余额 -> 账户余额 - 200元水电费 -> 结束
这样就能保持数据的完整性。可以看出同步会延长业务单元的执行时间,如果这种争用不频繁,可以用乐观
锁的方式提高性能。
同步方式只在单一JVM下有效,在多台server的集群环境中是无效的。

事务

以一个交易过程为例子:
开始 -> 公司A - 20万 -> 公司B + 20万 -> commit(提交) -> 结束 (整个业务流程)
在公司B + 20万的过程中出错了,这个业务失败,所以公司A要加回20万.
做法是整个业务流程共用一个connection,在最后才commit, 如果中间有错误,就整个rollback。
但是,connection是一个稀缺资源,事务过长会导致系统connection不够的情况,所以控制事务的粒度是一个关键。

一年半的工作感悟
未完待续..........
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值