随笔分类 -  Java 语言

摘要:ClassNotFoundException:它是Exception,不是Error在Throwable体系中只是一个Exception,说明它是可恢复的发生的时机当应用试图通过给定的name加载对应的class时可能抛出此异常,找不到对应的class文件时... 阅读全文
posted @ 2018-10-09 22:09 john8169 阅读(230) 评论(0) 推荐(0)
摘要:流与块的比较原来的 I/O 库(在 java.io.*中) 与 NIO 最重要的区别是数据打包和传输的方式。正如前面提到的,原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。面向流的I/O系统一次一个字节地处理数据。一个输入流产生一个字节的... 阅读全文
posted @ 2018-10-09 22:09 john8169 阅读(151) 评论(0) 推荐(0)
摘要:0. 前言目前在Java中存在两种锁机制:synchronized和Lock, Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。数据同步需... 阅读全文
posted @ 2018-07-15 17:47 john8169 阅读(899) 评论(0) 推荐(0)
摘要:public class ExceptionTypeTest { public void doSomething()throws ArithmeticException{ System.out.println(); ... 阅读全文
posted @ 2018-07-15 17:46 john8169 阅读(240) 评论(0) 推荐(0)
摘要:0. 前言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁, 但是随着Java SE1.6对Synchronized进行了 各种优化 之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中 为了减少获得锁和... 阅读全文
posted @ 2018-07-15 17:44 john8169 阅读(201) 评论(0) 推荐(0)
摘要:Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。偏向锁,顾名思义,它会偏向于第一个访问锁的线程,如果在接下来的运行过程中,该锁没有被其他的线程访问,则持有偏向锁... 阅读全文
posted @ 2018-07-15 17:43 john8169 阅读(1231) 评论(0) 推荐(0)
摘要:1. 简介最近出了个故障,排查的时候耗费了很长的时间,回顾整个排查过程,经验主义在这里起了不好的作用,直接导致了整个故障排查的时间非常长,这个故障的根本原因在于BlockingQueue用的有问题,顺带展开说说Java中常用的几个BlockingQueue:... 阅读全文
posted @ 2018-06-25 23:39 john8169 阅读(215) 评论(0) 推荐(0)
摘要:利用java8新特性,可以用简洁高效的代码来实现一些数据处理。定义1个Apple对象:public class Apple { private Integer id; private String name; private BigDeci... 阅读全文
posted @ 2018-06-16 10:00 john8169 阅读(1228) 评论(0) 推荐(0)
摘要:1、概述首先,让我们先定义一个简单的实体类:@Datapublic class Human { private String name; private int age; public Human() { super(); ... 阅读全文
posted @ 2018-06-16 09:58 john8169 阅读(358) 评论(0) 推荐(0)
摘要:对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面... 阅读全文
posted @ 2017-04-09 08:43 john8169 阅读(138) 评论(0) 推荐(0)
摘要:1. 可重入锁当一个线程重新获取锁,读写锁或其他不可重入的同步器时,就可能发生重入锁死。可重入的意思是线程可以重复获得它已经持有的锁。Java的synchronized块是可重入的。因此下面的代码是没问题的:(这里提到的锁都是指的不可重入的锁实现,并不是Java类库中... 阅读全文
posted @ 2017-04-09 08:35 john8169 阅读(151) 评论(0) 推荐(0)
摘要:sleep():sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;sleep()是Thread类的Static(静态)的方法;因此他不能改变对象的机锁,所以当在一... 阅读全文
posted @ 2017-04-06 23:09 john8169 阅读(258) 评论(0) 推荐(0)
摘要:1.demo public class SimpleAIOServer { static final int PORT = 30000; public static void main(String[] args) throws Exception { // ①创... 阅读全文
posted @ 2017-04-06 22:24 john8169 阅读(594) 评论(0) 推荐(0)
摘要:传统的输入流、输出流(面向流的输入/输出系统)一次只能处理一个字节(即使我们不直接去处理字节流,但底层的实现还是依赖于字节处理),因此面向流的输入/输出系统通常效率不高。新IO使用了不同的方式来处理输入/输出,新IO采用内存映射的方式的来处理输入/输出(即将文件或文件... 阅读全文
posted @ 2017-04-05 23:04 john8169 阅读(108) 评论(0) 推荐(0)
摘要:注:1.服务端的sk.isAcceptable()只能是注册的惟一一个ServerSocketChannel,所以有sk.interestOps(SelectionKey.OP_ACCEPT);产生sk.isReadable()只能是ServerSocketChann... 阅读全文
posted @ 2017-04-05 22:36 john8169 阅读(269) 评论(0) 推荐(0)
摘要:1.demo public class Server { public static void main(String[] args) throws IOException { // 创建一个ServerSocket,用于监听客户端Socket的连接请求 Serv... 阅读全文
posted @ 2017-04-05 22:26 john8169 阅读(139) 评论(0) 推荐(0)
摘要:#xxx=java.util.ArrayListxxx=javaplay.day3.aopframework.ProxyFactoryBeanxxx.advice=javaplay.day3.MyAdvicexxx.target=java.util.ArrayList... 阅读全文
posted @ 2016-11-16 21:03 john8169 阅读(125) 评论(0) 推荐(0)
摘要:这篇博文如果不能在五分钟内写出来,说明没有掌握aop的原理终于知道为什么不能invoke方法里调用proxy.toString()方法,因为要转发 package javaplay.day3;import java.lang.reflect.InvocationHan... 阅读全文
posted @ 2016-11-07 22:10 john8169 阅读(214) 评论(1) 推荐(0)
摘要:代理的原理与作用及AOP的概念代理1.要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做? 2.编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法... 阅读全文
posted @ 2016-11-01 22:09 john8169 阅读(143) 评论(0) 推荐(0)
摘要:1. 什么是类加载器? 加载类的工具.2. Java虚拟机中可以安装多个类加载器,系统默认三个主要的类加载器,每个类负责加载特定位置的类: BootStrap,ExtClassLoader,AppClassLoader3. 类加载器也是Java类,因为其是java类的... 阅读全文
posted @ 2016-10-25 22:05 john8169 阅读(166) 评论(0) 推荐(0)