- 博客(9)
- 收藏
- 关注
原创 Spring MVC开发环境搭建
一、pom.xml文件配置 从maven官网中查找需要的包,找release版本,复制依赖信息到自己的pom.xml文件中。 注:可使用<properties>标签统一管理版本 配置sping,spring-beans(表示受spring管理的对象)、spring-contest(监听spring上下文) 配置Spring MVC+Spring Web,spri...
2018-07-10 16:30:47
183
转载 spring事务管理
事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交,那在没有Spring帮我们管理事务之前,我们要怎么做。 事务是一系列的动作,一旦其中有一个动作出现错误,必须全部回滚,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态,避免出现由于数据不一致而导致的接下来一...
2018-05-20 20:24:07
157
原创 线程调度-线程池
一、new Thread弊端 1.每次new Thread新建对象,性能查。 2.线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致司机或OOM(Out Of Memory)。 3.缺少更多的功能,如更多执行、定期执行、线程中断。二、线程池的好处 1.重用存在的线程,减少对象创建、消亡的开销,性能好。 2.可有效控制最大并发线程数,提高系统资...
2018-05-06 21:20:54
382
原创 J.U.C之AQS
一、AbstractQueuedSynchronizer-AQS(J.U.C核心) 提供了一个FIFO队列SyncQueue,可用于构建锁,或其他相关同步机制的基础框架,底层使用双向链表实现队列。还提供了一个ConditionQueue(单向链表),只有程序中用到Condition时,才会涉及到ConditionQueue。 AQS内部维护了一个队列管理锁,线程尝试获取锁,如果失败,就...
2018-05-06 20:16:36
340
原创 线程安全策略
一、不可变对象1.不可变对象需要满足的条件 1)对象创建以后其状态不可修改。 2)对象所有域都是final类型。 3)对象是正确创建的(在对象创建期间,this引用没有逸出)。2.定义不可变对象 创建不可变对象方法:将类声明为final(该类不可以被继承),将类中所有变量声明为私有变量(不允许直接访问成员),所有变量不提供set方法,所有可变成员声明为final(保证只可以...
2018-05-06 00:47:28
285
原创 安全发布对象
一、发布对象1.什么是发布对象 ·使一个对象能够被当前范围之外的代码使用。当一个对象能够通过自身的public方法被其他代码得到并修改时,在多线程情况下就会出现线程不安全的现象。 ·对象逸出:一种错误的发布。当一个对象还没有构造完成时,就使它被其他线程所见,提供给外部代码一个对象引用。 比如,一个private对象,被类中的public对象发布,就称这个对象被不安全的发布逸出了它...
2018-05-05 18:32:26
241
原创 JAVA高并发-线程安全性(原子性、可见性、有序性)
一、原子性提供了互斥访问,同一时刻只能有一个线程对它进行操作。保证原子性的操作:1.Atomic 1)Atomic:CAS(Unsafe.compareAndSwapInt) Atomic包下提供的类利用CAS保证操作的原子性,如和int/integer相对应的AtomicInteger类提供的incrementAndGet()函数实现一个整数自增的操作count++,通过查看源码发现...
2018-05-05 17:13:31
4229
1
原创 JAVA并发基础知识(了解)
一、基础概念1.cpu多级缓存1) 为什么需要cpu缓存 cpu频率太快,主存跟不上,cpu在处理问题时,需要等待主存,浪费资源。缓存(cache)的出现缓解了cpu和内存之间速度不匹配问题(cpu->cache->memory)。2) 缓存的意义 时间局部性(如果某个数据被的访问,在不久的将来还可能被访问)。 空间局部性(如果某个数据被访问,相邻的数据很快也可能被访...
2018-05-04 12:30:18
139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人