上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 19 下一页
摘要: 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就 阅读全文
posted @ 2018-07-30 16:31 xdyixia 阅读(20343) 评论(1) 推荐(3) 编辑
摘要: 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 阻塞队列与普通队列的区别在于:当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队 阅读全文
posted @ 2018-07-28 22:03 xdyixia 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 不可重入锁 先来设计一种锁 这其实是个不可重入锁,举个例子 当调用print()方法时,获得了锁,这时就无法再调用doAdd()方法,这时必须先释放锁才能调用,所以称这种锁为不可重入锁,也叫自旋锁。 可重入锁 相对来说,可重入就意味着:一个线程可以进入任何一个 该线程 已经拥有的锁所同步着的代码块 阅读全文
posted @ 2018-07-28 20:55 xdyixia 阅读(9235) 评论(0) 推荐(1) 编辑
摘要: 1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略。 Spring事务管理涉及的接口的联系如下: 1.1 事务管理器 Spring并不直接管理事务,而是提 阅读全文
posted @ 2018-07-27 22:44 xdyixia 阅读(2781) 评论(0) 推荐(1) 编辑
摘要: 1.存储过程 是什么? 我们常用的关系型数据库是MySQL,操作数据库的语言一般为SQL语句,SQL在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成某种特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程 阅读全文
posted @ 2018-07-26 17:13 xdyixia 阅读(748) 评论(0) 推荐(0) 编辑
摘要: 记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized。对于当时的我们来说,synchronized是如此的神奇且强大。我们赋予它一个名字“同步”,也成为我们解决多线程情况的良药,百试不爽。但是,随着学习的深入,我们知道synchronized是一个重量级锁,相对于Lock,它 阅读全文
posted @ 2018-07-26 11:14 xdyixia 阅读(12568) 评论(1) 推荐(3) 编辑
摘要: 使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。很大一部份程序员对索引的了解仅限于到“加索 阅读全文
posted @ 2018-07-25 23:24 xdyixia 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其值不为空,如:学生的姓名不能为空 反例,如果插入时 student_name为空违反了约束则报错 2 阅读全文
posted @ 2018-07-25 20:36 xdyixia 阅读(9390) 评论(0) 推荐(3) 编辑
摘要: 先说一下几个概念: 架构:简单的说架构就是一个蓝图,是一种设计方案,将客户的不同需求抽象成为抽象组件,并且能够描述这些抽象组件之间的通信和调用。 框架:软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系统。而是一个半成 阅读全文
posted @ 2018-07-25 16:20 xdyixia 阅读(795) 评论(0) 推荐(0) 编辑
摘要: SpringAOP的基础原理就是动态代理 有两种实现方式:1)jdk动态代理 2)cglib动态代理 jdk动态代理和cglib动态代理的区别在于: cglib没有接口(通过继承父类) 只有实现类。 采用字节码增强框架cglib,在运行时 创建目标的子类 ,从而对目标类进行增强。 简单来说就是把目标 阅读全文
posted @ 2018-07-24 17:28 xdyixia 阅读(537) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 19 下一页