- 博客(9)
- 资源 (5)
- 收藏
- 关注
原创 Java中Semaphore(信号量)的使用
Semaphore的作用:在java中,使用了synchronized关键字和Lock锁实现了资源的并发访问控制,在同一时间只允许唯一了线程进入临界区访问资源(读锁除外),这样子控制的主要目的是为了解决多个线程并发同一资源造成的数据不一致的问题。在另外一种场景下,一个资源有多个副本可供同时使用,比如打印机房有多个打印机、厕所有多个坑可供同时使用,这种情况下,Java提供了另外的并发访问控制--资源
2016-11-29 10:30:44 39613 16
原创 CNN在中文文本分类的应用
深度学习近一段时间以来在图像处理和NLP任务上都取得了不俗的成绩。通常,图像处理的任务是借助CNN来完成的,其特有的卷积、池化结构能够提取图像中各种不同程度的纹理、结构,并最终结合全连接网络实现信息的汇总和输出。RNN由于其记忆功能为处理NLP中的上下文提供了途径。
2016-11-25 22:45:18 30813 32
原创 Java中的Lock锁
Lock锁介绍:在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景、高效的性能,java还提供了Lock接口及其实现类ReentrantLock和读写锁 ReentrantReadWriteLock。 相比synchronized来实现同步,使用Lock实现同步主要有以下差异性: 1、使用synchronized关键字时,锁的控制和释放是在syn
2016-11-22 13:39:08 819
原创 synchronized与条件同步
在并发编程中,有这样的需求:当满足某个条件时线程执行同步块中的代码,条件不满足时,让线程在此等待,直至条件满足再执行同步代码块。java的Object类即提供了一类这样的方法wait(),notifyAll()/notify(),调用wait()方法后,线程A释放对同步代码块的控制并进入休眠状态,在条件再次满足时,调用notifyAll()/notify()方法唤醒线程A,线程A将被唤醒并重新试图
2016-11-17 14:32:37 1537
原创 JDBC线程池创建与DBCP源码阅读
创建数据库连接是一个比较消耗性能的操作,同时在并发量较大的情况下创建过多的连接对服务器形成巨大的压力。对于资源的频繁分配﹑释放所造成的问题,使用连接池技术是一种比较好的解决方式。在Java中,连接池已经有很多开源实现了,在这里使用commons-dbcp2这个包来创建JDBC连接池:public final class JDBCUtil{ private static DataSource
2016-11-16 18:32:11 2068
原创 Java中的synchronized关键字
Java中的多线程同步:讨论synchronized之前先看简单看一些java中的多线程同步。当我们有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常。比如,有个初始银行账户Account、其初始值为0,有两个小伙伴A、B去银行的两个窗口同时往Account这个账户存钱100¥,这个时候需要先获取账户原来的值,然后在原始值的
2016-11-12 14:08:55 443
原创 Java中的static关键字
static 概念:在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思。Java程序运行过程会涉及以下内存区域:寄存器: JVM内部虚拟寄存器,存取速度非常快,程序不可控制。栈:保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧
2016-11-11 17:20:52 464
原创 Java中的final关键字
在JAVA中经常会遇到出现final关键字的场合,final关键字在不同的上下文环境中,其含义也有所不同,同时,自己也出现过误用final关键字的情况。在此,对final关键字的左右和使用场合做一个总结:final关键字基本含义:字面意思:被final修饰的对象是无法改变的。在Think in Java这本书中,讨论了使用final的三种情况:一、final数据:在程序设计中,经常需要在程序开始运
2016-11-09 14:46:59 567
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人