随笔分类 -  Java

1
摘要:ConditionObject是AQS中的内部类,提供了条件锁的同步实现,实现了Condition接口,并且实现了其中的await(),signal(),signalALL()等方法。 Condition的分析点此 AbstractQueuedSynchronizer(AQS)的分析点此 Condi 阅读全文
posted @ 2018-04-30 10:23 Ouka傅 阅读(4703) 评论(1) 推荐(2) 编辑
摘要:AbstractQueuedSynchronized 以下简称AQS,是用来构建锁或者其他同步组件的基础框架。 在AQS中,为锁的获取和释放提供了一些模板方法,而实现锁的类(AQS的子类)需要实现这些模板方法中的同步方法。 这些方法包括: ·tryAcquire():尝试以独占模式获取锁 ·tryR 阅读全文
posted @ 2018-04-30 08:49 Ouka傅 阅读(2815) 评论(0) 推荐(0) 编辑
摘要:Condition中提供了一组类似于Object中的监视器方法。与Lock配合可以完成等待通知模式。 Condition只能通过Lock#newCondition()方法获取,所以Condition是依赖于Lock的,而在调用这个方法之前,线程需要先获得锁, 同时,在一个Lock中,可以获取多个Co 阅读全文
posted @ 2018-04-28 12:56 Ouka傅 阅读(947) 评论(0) 推荐(1) 编辑
摘要:Lock接口是锁的实现,用来控制多个线程访问共享资源的方式,是在java 1.5的时候引入的,在此之前,只能通过synchronized的方式来取得对象的锁。 synchronized中的锁是隐式获取释放的,而Lock中的锁需要显示的获取和释放,同时提供了可中断,超时获取等Synchronized不 阅读全文
posted @ 2018-04-28 12:27 Ouka傅 阅读(342) 评论(0) 推荐(0) 编辑
摘要:LockSupport是java.util.concurrent.locks包中的一个工具类,主要提供了一些在创建锁和同步类中用来阻塞其他线程的原始操作。 当有多个线程需要获取同一个资源的锁的时候,如果第一个线程已经获取了锁,则后面的线程需要阻塞等到前面的线程释放锁。 这个阻塞的操作就是通过Lock 阅读全文
posted @ 2018-04-28 12:03 Ouka傅 阅读(395) 评论(0) 推荐(1) 编辑
摘要:0、说明 1、ConcurrentHashMap跟HashMap,HashTable的对比 2、ConcurrentHashMap原理概览 3、ConcurrentHashMap几个重要概念 4、ConcurrentHashMap几个重要方法 5、ConcurrentHashMap的初始化 6、Co 阅读全文
posted @ 2018-04-22 09:56 Ouka傅 阅读(38863) 评论(10) 推荐(25) 编辑
摘要:Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志的输出到控制台,或者文件等等。 同时,在各大框架中也主要是使用log4j来进行日志的输出。 下面是log4j1.x版本的详细配置: 在1.x版本的log4j中,只需要一个依赖包:log4j-1.x.x.jar 要使用log4 阅读全文
posted @ 2017-08-20 14:55 Ouka傅 阅读(3444) 评论(0) 推荐(0) 编辑
摘要:JDBC是一组专门负责连接操作数据库的标准。 常见的连接方式:JDBC-ODBC桥连接、JDBC连接。 一般JDBC比较常用,JDBC-ODBC性能比较差。 JDBC开发的四大步骤: 1、加载数据库驱动程序 2、连接数据库 3、操作数据库 4、关闭数据库连接 实例: 创建如下的表数据: packag 阅读全文
posted @ 2017-03-04 14:21 Ouka傅 阅读(150) 评论(0) 推荐(0) 编辑
摘要:Java反射在平常开发中虽然基本上用不着,但是在框架中,基本上都是通过反射来实现,比如说:Sping中来实现IOC。 通过反射,我们可以在运行时获得一个类的所有属性和方法,通过任意一个对象,可以调用它的任意属性和方法。 在Java反射中,一切都起源于Class类。此类的定义如下: public fi 阅读全文
posted @ 2017-03-04 14:19 Ouka傅 阅读(165) 评论(0) 推荐(0) 编辑
摘要:在Java日期格式化中,用到的日期操作类主要有Date,Calendar,DateFormat,SimpleDateFormat。 Date 类Date表示特定的瞬间,精确到毫秒。 现在Date类中的方法基本上都不用了,不推荐直接使用Date类。 package com.fuwh.date; imp 阅读全文
posted @ 2017-03-04 14:18 Ouka傅 阅读(511) 评论(0) 推荐(0) 编辑
摘要:正则表达式通常用来查找或替换那些符合某个规则的文本。 在java中,提供正则表达式的支持使用的是java.util.regex包。在这个包中只有两个类:Matcher和Pattern。 Pattern: 该类的定义:public final class Patern extends Object i 阅读全文
posted @ 2017-03-03 22:05 Ouka傅 阅读(919) 评论(0) 推荐(1) 编辑
摘要:在Java中,有两种实现多线程的方式:继承Thread类和实现Runnable接口。 Thread 此类的定义如下: public class Thread extends Object implments Runnable 构造方法如下: Thread(),Thread(Runnable targ 阅读全文
posted @ 2017-03-02 22:29 Ouka傅 阅读(164) 评论(0) 推荐(0) 编辑
摘要:打印流:PrintStream与PrintWriter PrintStream 该类的定义如下: public class PrintStream extends FilterOutputStream implemtns Appendable,Closeable 可以发现,它是OutputStrea 阅读全文
posted @ 2017-03-02 22:26 Ouka傅 阅读(184) 评论(0) 推荐(0) 编辑
摘要:在文件操作流中,输入输出的目标都是文件,但是有时候,我们并不需要写入文件,只是需要中转一下而已,这样就会显得很麻烦,所以我们就可以使用内存操作流。在内存操作流中,输入输出目标都是内存。 内存输出流:ByteArrayOutputStream 内存输入流:ByteArrayInputStream pa 阅读全文
posted @ 2017-03-01 20:54 Ouka傅 阅读(128) 评论(0) 推荐(0) 编辑
摘要:在Java IO提供的类中,除了前面介绍的RandomAccessFile类之外,还有一系列的io操作类。 主要分为两大类。字符流和字节流。关系图如下: 在Java IO的操作中,很好的体现了Java的面向对象的思想。一个接口或类的具体行为由子类来决定。 字节流字节是直接操作文件,而字符流是通过缓冲 阅读全文
posted @ 2017-02-28 21:21 Ouka傅 阅读(215) 评论(0) 推荐(0) 编辑
摘要:上一节我们说到通过File访问文件,但是我们访问文件的最终目的都是访问文件中的内容,那么这个时候我们就需要使用到的一个类就是:RandomAccessFile。 此类的定义如下: public class RandomAccessFile extends Object implements Data 阅读全文
posted @ 2017-02-27 21:48 Ouka傅 阅读(160) 评论(0) 推荐(0) 编辑
摘要:在Java中,所有的io类都放在java.io包中。 在IO操作中,我们总是会从一个源数据读取到一个目标数据。那么这个源数据和目标数据可以是文件,流等等。那最常见的就是文件,就像我们在本地电脑上写入东西一样,写入到一个文件中。在java中操作文件,就不得不提到一个File类。 File File类在 阅读全文
posted @ 2017-02-26 20:06 Ouka傅 阅读(186) 评论(0) 推荐(0) 编辑
摘要:在前面讲到的java类集中的Hashtable中,有一个子类Properties,此类定义如下: public class Properties extends Hashtable<Object,Object> 该类表示了一个持久的属性集。Properties可保存在流中或从流中加载。属性列表每个键 阅读全文
posted @ 2017-02-26 20:05 Ouka傅 阅读(306) 评论(0) 推荐(0) 编辑
摘要:前一篇我们已经讲过了Collectin是存放单值的最大接口, 可以看到Map接口和其主要之类的关系图如下: 快速访问 HashMap HashTable TreeMap Map输出 那Map就是存放一对值的最大接口。此类的定义如下: ·public interface Map<K,V> ·K:此映射 阅读全文
posted @ 2017-02-26 13:43 Ouka傅 阅读(228) 评论(0) 推荐(0) 编辑
摘要:在学习集合之前,我们需要思考的是为什么要有集合?集合有什么用? 我们知道,在java中有数组的概念,数组可以用来存放一组数据。但是,数组是固定长度的,这样在使用的时候就会有很多的不方便,比如说资源的浪费。这个时候,我们就希望有一种可以动态改变大小的数组,那就是集合的作用了。 首先我们来看看常用集合类 阅读全文
posted @ 2017-02-25 21:58 Ouka傅 阅读(365) 评论(0) 推荐(0) 编辑

1