
java
文章平均质量分 70
jamespengo
这个作者很懒,什么都没留下…
展开
-
JAVA8 Lambda表达式
1. 什么是λ表达式λ表达式本质上是一个匿名方法。让我们来看下面这个例子: public int add(int x, int y) { return x + y; }转成λ表达式后是这个样子: (int x, int y) -> x + y;参数类型也可以省略,Java编译器会根据上下文推断出来: (x, y) -> x + y; //返...转载 2014-07-30 14:54:03 · 740 阅读 · 0 评论 -
JAVA动态代理(JDK和cglib)
JAVA的动态代理(被代理类必须实现了接口) 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,...原创 2018-03-31 17:32:54 · 168 阅读 · 0 评论 -
JAVA线程的interrupt
interrupt()只是改变中断状态而已. interrupt()不会中断一个正在运行的线程。这一方法实际上完成的是,给受阻塞的线程抛出一个中断信号, 这样受阻线程就得以退出阻塞的状态。更确切 的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞, 那么,它将接收到一个中断异常(InterruptedException),从而提早...原创 2018-03-31 17:32:25 · 188 阅读 · 0 评论 -
JAVA正确地停止一个线程
如何正确停止线程关于如何正确停止线程,这篇文章(how to stop thread)给出了一个很好的答案, 总结起来就下面3点(在停止线程时):1. 使用violate boolean变量来标识线程是否停止2. 停止线程时,需要调用停止线程的interrupt()方法,因为线程有可能在wait()或sleep(), 提高停止线程的即时性3. 对于blocking IO的处理,尽量使用Interr...原创 2018-03-31 17:32:01 · 432 阅读 · 0 评论 -
为什么线程协作之前必须先获得锁?
为什么Object.wait()/notify()/notifyAll() 之前必须获得锁? 这是JLS的规定。Wait-notify机制是围绕监控器锁进行的,获得锁是很自然的前提,自身没有拿到锁之前,怎么能够尝试去操作靠锁来调控的线程呢?不过今天偶尔有时间,就看下Sun Hotspot是怎么实现这一机制的。当我们执行下面的代码时,线程会抛出异常java.lang.IllegalMonitorSt...原创 2018-03-31 17:31:32 · 719 阅读 · 0 评论 -
JAVA NIO 之Channel
Channel接口提供缓冲区与实体文件或套接字连接的一个抽象——通道,用于字节缓冲区和位于通道另一侧(通常是一个文件或套接字)之间有效地传输数据。多数情况下,通道与操作系统的文件描述符(File Descriptor)和文件句柄(File Handler)有着一对一的关系。虽然通道比文件描述符更广义,但我们经常使用到的多数通道都是连接到文件描述符的。1.通道基础Channel接口继承关系下面是ch...原创 2018-03-31 17:29:11 · 256 阅读 · 0 评论 -
JAVA AIO
转载Reactor and Proactor的内容系统I/O 可分为阻塞型, 非阻塞同步型以及非阻塞异步型[1, 2]. 阻塞型I/O意味着控制权只到调用操作结束了才会回到调用者手里. 结果调用者被阻塞了, 这段时间了做不了任何其它事情. 更郁闷的是,在等待IO结果的时间里,调用者所在线程此时无法腾出手来去响应其它的请求,这真是太浪费资源了。拿read()操作来说吧, 调用此函数的代码会一直僵在此...转载 2018-03-31 17:27:53 · 725 阅读 · 0 评论 -
java io以及unix io模型
这部分的东西在网络编程经常能看到,不过在所有IO处理中都是类似的。IO请求的两个阶段: 等待资源阶段:IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。 使用资源阶段:真正进行数据接收和发生。 举例说就是排队和服务。 在等待资源阶段,IO分为阻塞IO和非阻塞IO。 ...原创 2018-03-31 17:26:53 · 224 阅读 · 0 评论 -
I/O基本概念
IO相关的内容包含:1.缓冲区操作2.内核空间与用户空间3.虚拟内存4.分页技术5.面向文件的IO和流IO6.多工IO(就绪性选择——IO多路复用)1. 缓冲区进程执行io操作,归结起来,也就是向操作系统发出请求,让它要么把缓冲区里的数据排干,要么用数据把缓冲区填满。进程使用这一机制处理所有数据的操作。io操作过程:用户进程使用read()系统调用,要求其缓冲区被填满,内核即向磁盘控制硬件发出命令...原创 2018-03-31 17:25:45 · 15619 阅读 · 0 评论 -
文件系统中的逻辑块、物理块和扇区之间的关系
扇区(sector):硬件(磁盘)上的最小的操作单位,是操作系统和块设备(硬件、磁盘)之间传送数据的单位。 block由一个或多个sector组成,文件系统中最小的操作单位;OS的虚拟文件系统从硬件设备上读取一个block,实际为从硬件设备读取一个或多个sector。对于文件管理来说,每个文件对应的多个block可能是不连续的;block最终要映射到sector上,所以block...原创 2018-03-31 17:23:42 · 8444 阅读 · 0 评论 -
性能监控工具
一、图形化监控工具: 在JDK安装目录bin下面有两个可视化监控工具 1. JConsole(Java Monitoring and Management Console) 基于JMX的可视化管理工具。 2. VisualVM(All-in-one Java Troubleshooting Tool)随JDK发布的最强大的运行监视和故障处理程序。 推荐使用VisualVM,他有很多插件,转载 2018-02-01 18:25:11 · 273 阅读 · 0 评论 -
MinorGC or FullGC
Minor GC 还是 Full GC?原创 2018-02-01 17:50:46 · 228 阅读 · 0 评论 -
JVM垃圾收集GC
1.如何判断垃圾对象1)引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器减1;任何时刻计数器为0的对象就是不可能再被使用的。 引用技术算法实现相对简单,判定效率也比较高(ActionScript3,Python语言等都使用此算法),但是java虚拟机没有使用这个算法,主要原因是引用技术算法很难解决循环引用的问题2)可达性...原创 2018-02-01 17:46:19 · 174 阅读 · 0 评论 -
引用类型
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。下图为对象层次的引用1强引用 平时我们编程的时候例如:Object object=new Object();那object就是一个强引用了。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足原创 2018-02-01 17:40:02 · 201 阅读 · 0 评论 -
JAVA 内存区域
运行时数据区域java虚拟机在执行java程序的时候会把它管理的内存分为若干不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间。根据java虚拟机规范规定,虚拟机所管理的内存区域包括以下几个区域:1.程序计数器(线程私有) 程序计数器是一块较小的内存区域,它是当前线程所执行的字节码的行号指示器,在虚拟机的实现里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要...原创 2018-02-01 17:38:36 · 206 阅读 · 0 评论 -
HttpURLConnection学习
最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。下面的代码简单描述了转载 2012-05-15 11:24:53 · 614 阅读 · 0 评论 -
JAVA LinkedBlockingQueue阻塞队列
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注:什么叫线程安全?这个首先要明确。线程安全就是说多线程访问同一代码,不会产生...转载 2018-04-02 16:35:30 · 556 阅读 · 0 评论