随笔分类 -  java

摘要:例1、用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例。看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码。我们在这里做了什么呢?那就是用 阅读全文
posted @ 2019-05-31 21:57 人生如若初见 阅读(2685) 评论(0) 推荐(0) 编辑
摘要:在Java 8中的Map.Entry接口中增加了comparingByKey, comparingByValue方法,它们都返回Comparator<Map.Entry<K,V>>, Comparator是一个函数接口,主要是方便Lambda表达式的使用。 在Java 8中的Map接口增加了一些de 阅读全文
posted @ 2019-05-31 20:41 人生如若初见 阅读(4723) 评论(1) 推荐(0) 编辑
摘要:从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。 本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也 阅读全文
posted @ 2019-02-14 21:40 人生如若初见 阅读(3109) 评论(0) 推荐(0) 编辑
摘要:最近在看HashMap的源码,有很多概念都很模糊,今天写了一个测试例子,加深对这几个概念的理解,并演示了扩容及树化的过程(见下篇博文:)。 注:本文基于JDK 1.8 HashMap的结构 约定 约定前面的数组结构的每一个格格称为桶 约定桶后面存放的每一个数据称为bin bin这个术语来自于JDK 阅读全文
posted @ 2018-06-26 21:08 人生如若初见 阅读(1889) 评论(0) 推荐(0) 编辑
摘要:一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchron 阅读全文
posted @ 2018-04-07 10:46 人生如若初见 阅读(649) 评论(0) 推荐(0) 编辑
摘要:问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: 因此,可以只调用外层流的close方法关闭其装饰的内层流,验证例子: 问题(2)解释:如果不想使用(1 阅读全文
posted @ 2018-04-07 10:45 人生如若初见 阅读(865) 评论(0) 推荐(0) 编辑
摘要:转自 https://m.2cto.com/kf/201507/412937.html 阅读全文
posted @ 2017-09-25 15:33 人生如若初见 阅读(7153) 评论(0) 推荐(1) 编辑
摘要:/** * 获取上周周几的日期,默认一周从周一开始 * @param dayOfWeek * @param weekOffset * @return */ public static Date getDayOfWeek(int dayOfWeek,int weekOffset){ return getDayOfWeek(C... 阅读全文
posted @ 2017-09-02 00:11 人生如若初见 阅读(4678) 评论(1) 推荐(0) 编辑
摘要:JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = 0, folderNum = 0; File file = new File(path); if ( 阅读全文
posted @ 2017-08-30 14:19 人生如若初见 阅读(345) 评论(0) 推荐(0) 编辑
摘要:一、JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。这是官方文档上的定义,我看过很多次也无法很好的理解。我个人的理解是JMX让程序有被管理 阅读全文
posted @ 2017-06-20 17:27 人生如若初见 阅读(449) 评论(0) 推荐(0) 编辑
摘要:线程在一定条件下,状态会发生变化。线程一共有以下几种状态: 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU 阅读全文
posted @ 2017-06-04 15:45 人生如若初见 阅读(480) 评论(0) 推荐(0) 编辑
摘要:shutdownvoid shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务。若已经关闭,则调用没有其他作用。抛出:SecurityException - 如果安全管理器存在并且关闭,此 ExecutorService 可能操作某些不允许调用者修改的线程(因为它没有保持Runt 阅读全文
posted @ 2017-06-03 17:47 人生如若初见 阅读(730) 评论(0) 推荐(0) 编辑
摘要:原文:(六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型) 作者:zuoxiaolong8810(左潇龙),转载请注明出处。 本章我们讨论一个除前面的单例以及代理模式之外,一个WEB项目中有可能用到的设计模式,即观察者模式。 说起观察者模式,LZ还是非常激动的,当初这算是第一个让LZ感 阅读全文
posted @ 2017-01-12 15:13 人生如若初见 阅读(577) 评论(0) 推荐(0) 编辑
摘要:被观察者 观察者: 测试: 但这种写法有点问题,观察者需要手动一个一个add进去,太麻烦 改进下:被观察者不变 观察者: 测试类: 更实用点的例子:小说网站作者和读者之间的订阅 作者类: 然后我们还需要一个管理器帮我们管理这些作者。如下。 好了,这下我们的观察者模式就做好了,这个简单的DEMO可以支 阅读全文
posted @ 2017-01-12 11:36 人生如若初见 阅读(273) 评论(0) 推荐(0) 编辑
摘要:Java多线程编程中,常用的多线程设计模式包括:Future模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式等。这篇文章主要讲述Future模式,关于其他多线程设计模式的地址如下: 关于其他多线程设计模式的地址如下: 关于Master- 阅读全文
posted @ 2016-12-20 16:40 人生如若初见 阅读(7703) 评论(0) 推荐(0) 编辑
摘要:你还在学习吗? 1.内容生产者 InfoQ中文技术第一站,佩服霍老板,真金白银地为中国程序员们生产内容。 ImportNew专门面向Java的内容生产者兼聚合者,偶然也有些面向入门的小白文。 并发编程网面向高并发,Java,开源的社区。 2. 内容聚合者 现在写博客,没人用RSS读了,在微博里的传播 阅读全文
posted @ 2016-12-02 16:27 人生如若初见 阅读(432) 评论(0) 推荐(1) 编辑
摘要:在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如 阅读全文
posted @ 2016-09-20 10:49 人生如若初见 阅读(173) 评论(0) 推荐(0) 编辑
摘要:在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步 阅读全文
posted @ 2016-09-19 15:13 人生如若初见 阅读(915) 评论(0) 推荐(0) 编辑
摘要:int n1 = 14; //十进制转成十六进制: Integer.toHexString(n1); //十进制转成八进制 Integer.toOctalString(n1); //十进制转成二进制 Integer.toBinaryString(12); //十六进制转成十进制 Integer.valueOf("FFFF",16).toString(); //十六进制转成二进制 Integer... 阅读全文
posted @ 2016-08-12 16:41 人生如若初见 阅读(312) 评论(0) 推荐(0) 编辑
摘要:Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Asynchrono 阅读全文
posted @ 2016-08-04 18:53 人生如若初见 阅读(279) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示