
java
share_free
自由 分享 免费
展开
-
slf4j
SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。 (Facade(外观)模式为子系统中的各类提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。) 实际上,SLF4J所原创 2016-09-11 20:50:07 · 249 阅读 · 0 评论 -
happens-before
happens-before是用来解决内存可见性的。 hadppens-before产生的背景 JMM中每个线程都有本地内存空间,既然说是模型,当然实际上是没有的,它是cache和寄存器的作用的抽象。线程A修改的共享变量何时才能被线程B看到呢?此外,编译器重排序,处理器重排序都会优化指令的执行顺序,也就是说和程序编写的顺序不同,都会对并发编程中的内存可见性有影响。如何定义规则保证内存可加性原创 2016-12-20 11:21:18 · 368 阅读 · 0 评论 -
synchronized和volatile
要想 1)线程修改后的共享变量能够及时从工作内存刷新到主内存 2)其他线程能够及时把共享变量的最新值从主内存更显到自己的工作内存中 synchorized保证synchorized{}范围内的操作的原子性和共享数据的可见性syn的原子性是添加互斥锁。syn的内存可见性: 1)获取互斥锁 2) 清空工作内存 3)从主内存拷贝变量的最新值到工作内存中 4)执行代码 5)将更改后的共享变量原创 2016-12-13 16:29:16 · 386 阅读 · 0 评论 -
javaIO装饰者模式类图
装饰者可以扩展类的功能,这比继承更加弹性,减少类的数量原创 2016-12-28 09:42:34 · 1424 阅读 · 0 评论 -
java工厂模式
工厂模式的目的就是封装对象的创建过程。工厂类的目的就是封装对象创建的过程,即使以后创建一个新添加的类,也不需要修改代码。工厂模式分为两类: 工厂方法模式和抽象工厂模式原创 2016-12-28 09:29:02 · 298 阅读 · 0 评论 -
观察者模式
先看类图 再看源码package observer_Push;public interface ISubject {public void registerObserver(IObserver observer);public void removeObserver(IObserver observer);public void notifyObserver();public void原创 2016-12-25 14:56:22 · 291 阅读 · 0 评论 -
java静态代理和动态代理
代理,顾名思义就是”代人受理“啦,在java 中就是本来是使用A类,但结果却是调用了实现了A类功能的B类(代理类),并且B类对A类的功能进行了扩展,功能更强大。java中代理分为静态代理和动态代理但都要求代理类和被代理类实现相同的接口. 静态代理:代理类和被代理类是确定的,比如说B类就是A类的代理类,不是其他类的代理类。 代码如下:public interfece Moveable{publi原创 2016-05-11 16:46:18 · 317 阅读 · 0 评论 -
java线程上路
初始状态:就是刚刚new一个Runnable或者Thread的子类可运行: 调用start()方法。调用start()方法并不会立即运行,而是得到cpu时间片后才运行终止:run()方法运行结束线程阻塞的几种方式第一种方式阻塞IO,比如读取用户在控制台输入的一行数据Scanner sc=new Scanner(System.in); sc.nextLine();第二种:调用线程的wait()原创 2016-12-09 20:48:04 · 250 阅读 · 0 评论 -
java输入输出节点流和过滤流
java的IO使用装饰者模式,装饰者模式分为装饰者和被装饰者,对应的就是java IO的节点流和过滤流。 节点流就是基本流,过滤流保证节点流,添加特色功能,在构造函数中有一个InputStream参数,这是我区分节点流和过滤流的方法,我们编程一般使用过滤流的引用。以前以为FilterInputStream的子类是过滤流,现在不这样认为了。 如何知道过滤流的特色功能呢? 通过类名和方法推测。ja原创 2016-12-09 19:58:30 · 3341 阅读 · 0 评论 -
java异常
按照java一切皆对象的思想,错误也被封装在对象中Error 是严重错误,比如虚拟机崩溃Exception分为编译期异常和运行时异常(RuntimeException及其子类)编译期异常必须处理,否则编译不通过,更不要说运行了。 运行期异常 可处理可不处理 为啥呢? 比如ArithmeticException,当你不把0作为分母就程序就可以安全运行,0做分母程序才GG在这里讨论一下处理的情况:原创 2016-12-05 12:37:42 · 271 阅读 · 0 评论 -
java集合的简要体系结构
Iterator --ListIteratorListIterator列表迭代器的由来:当我想在迭代器迭代时添加元素,如果使用集合类对象的add方法就会出现并发修改异常 ConcurrentModificationException而继承Iterator的ListIterator就有增删改查的功能Collection --List ----ArraryList原创 2016-07-06 19:08:15 · 556 阅读 · 0 评论 -
jdbc
jdbc是什么? java database connectivity (java数据库连接)是一组接口,之所以会有它,就是使用java操作各种数据库。 hibernate是ORM框架,它封装了jdbc,使程序员以更加简单的方式开发数据访问层,使开发中不再出现重复冗余的代码。 mysql-connector-java-5.1.40-bin.jar就是由mysql官方实现的驱动,jar包实现原创 2016-10-07 17:38:51 · 2291 阅读 · 1 评论 -
为速度而散列
查找某一个键,你能想到的是使用for循环逐个遍历存储key的集合,然而这是我们能想到的最低效率的方法。当然你也可能想到把key排序,然后使用Collections.binarySearch()二分查找。散列更近一步,数组是查询速度最快的数据结构,但数组是不能调整容量的,这可怎么办呢?答案就是:数组并不保存键本身,而是通过键对象生成一个数字,将其作为数组的下标。这个数字就是散列码,生成散列码的方法就叫原创 2016-07-11 17:24:59 · 372 阅读 · 0 评论 -
java笔记
equals方法是判断两个对象的内容是否相等,而==是判断两个引用是否指向同一个对象。Object类的equals()方法的实现是public boolean equals(Object obj) { return (this == obj);}String类的equals方法重写了Object类的equals方法,因而可以判断字符序列是否相等,也就是判断内容是否相等。内存 栈:保存的原创 2016-09-04 19:52:08 · 217 阅读 · 0 评论