JAVASE
文章平均质量分 86
葵续浅笑
争取每天都有进步!
展开
-
Java 8 HashMap 实现机制简析
最近看《java核心思想》看到了容器部分,本书着重描述了HashMap 的实现机制,对于Map,我们的固有印象便是存取很快,特别是HashMap,我们知道底层是哈希表结构。但HashMap具体怎么维护这个数据结构,这是我们今天要记录的问题。HashMap的基本组成要知道HashMap为什么存取性能优异,就要了解它内部的构造。hashmap实质是由 数组+链表 构成,在java 8 中,链表被优化成原创 2017-11-12 18:55:28 · 430 阅读 · 0 评论 -
JAVA泛型杂谈--擦除,协变,逆变,通配符等
在《JAVA核心思想》这本书里,关于泛型的章节意外的很多,小小的泛型里其实有很多可以学习的内容,我总结下最近看书的成果。一. 泛型的好处和应用最基础的用到泛型的地方无非是在容器里 使用泛型用以保证容器内数据的类型统一,所以我们先总结下泛型使用的好处:可以统一集合类型容器的存储类型,防止在运行期出现类型装换异常,增加编译时类型的检查解决重复代码的编写,能够复用算法。可以起到重载的作用第二个作用原创 2017-10-24 22:09:07 · 1894 阅读 · 0 评论 -
JAVA 8 StreamAPI 和 lambda表达式 总结(一)--lambda表达式
这些天看见另一本好书《给大忙人看的Java SE 8》,其中的新特性 StreamAPI 和 lambda表达式 是之前jdk没有提供的新特性,也是jdk8 重要的更新内容,我会总结一下它们的用法,更详细的参见书本。lambda表达式的概念 人对一个概念的理解是随着时间渐渐加深的,之前也见过lambda表达式,但那时候学起来完全摸不到头脑,这两天重新去看,终于有了一些概念,可以想象,过段时间会更原创 2017-02-20 18:43:46 · 396 阅读 · 0 评论 -
JAVA 8 新日期和时间API 学习总结
昨天学了Java8新的时间日期api,以前我们做时间计算大多涉及Date,Calendar类,现在几乎全部有了替代的API,使用更加简单易用,通过几个例子记录一下。1.取得瞬间点System.currentTimeMillis()以前我们为了测试程序性能,会用下面的语句拿到当前时间的瞬间点,然后前后做减法,得出毫秒值,现在有了专门的Instant类替代。// 代替System.currentTime原创 2017-03-07 14:52:15 · 2343 阅读 · 0 评论 -
总结Java中的对象和引用
之前看完了《java核心技术》,其中学习到了java传参是 传的是值还是引用的讨论,现在在看《java编程思想》时,更加理解了对象和引用的概念,结合两本书针对“对象和引用 ”的内容 做一次总结。1.java中用引用操作对象String s;这句代码没有用“new”创建对象,这里只是创建一个引用,并没有对象和它进行关联。假设你对s做操作,比如:String s;s.length();这时候程序就直原创 2017-03-13 17:11:26 · 326 阅读 · 0 评论 -
集合中视图与包装器概念,及Arrays.asList不可修改的原理解释
最近在学习《Java核心技术》集合的时候,才知道集合中视图的概念,在此做下记录,加深印象.. 在jdk中,我们对Collections和Arrays等包装类并不陌生,它提供了一些静态方法对集合的操作非常有用,比如//生成一个有三个元素为“A”的List集合。List<String> nlist = Collections.nCopies(3,"A");但是这个返回的list并不是传统的集合对象,原创 2017-02-14 15:43:51 · 734 阅读 · 0 评论 -
JAVA 8 StreamAPI 和 lambda表达式 总结(三)--Optional类型
在学习Stream的时候,我们会看到Optional类型,它是对结果的封装类,我们看一下它出现的地方:List<Integer> list = new ArrayList<>();for (int i = 0; i < 10; i++) { list.add((int) (Math.random() * 100));}ArrayList<Integer> results = new A原创 2017-02-27 17:17:34 · 837 阅读 · 0 评论 -
JAVA 8 StreamAPI 和 lambda表达式 总结(四)--stream的一些聚合操作
在sql里,一些聚合操作max,count,或者只是进行一些分组,这些我们都很熟悉,在Stream API中,我们也可以做一些聚合操作.我们定义一个类Group,里面有班级号,分数和学生的名字package JDK.StreamAndLambda.groupToMap;/** * Created by panqian on 2017/2/28. */public class Group {原创 2017-03-03 18:46:29 · 2115 阅读 · 0 评论 -
JAVA NIO 学习总结(下)
4.迭代目录中的文件4.1迭代该目录下的文件,try语句可以保证目录流最后被正常关闭/** * 遍历本目录底下所有文件和文件夹 */public static void directoryStream(Path path){try(DirectoryStream<Path> paths = Files.newDirectoryStream(path)){ Iterator<Path>原创 2017-01-24 13:20:52 · 279 阅读 · 0 评论 -
JAVA NIO 学习总结(上)
最近看到《java核心技术》的io部分,学习如何访问文件,如何以二进制格式以及文本格式来读写文件,以及jdk后续更新的nio新特性,这里主要总结nio的新内容。demo文件在:https://github.com/lovejj1994/IO1.Charset类统一了字符集的管理 我们知道在java中,英文还好,如果碰到中文,很可能就会碰到乱码问题,例如一个中文字符如果以UTF-8编码成二进制字节,原创 2017-01-23 15:05:22 · 839 阅读 · 0 评论 -
JAVA 8 StreamAPI 和 lambda表达式 总结(二)--Stream基本操作
1.从迭代器到Stream操作以前我们遍历一个集合可以用for 循环,iterator迭代器。jdk8新推出了一项特性,Stream语法,用Stream语法可以让代码更加简洁,而且原生支持的并发操作也能提高效率List<Integer> list = new ArrayList<>();for (int i = 0; i < 100000; i++) { list.add((int) (M原创 2017-02-21 19:50:34 · 619 阅读 · 0 评论 -
Git 自学笔记 egit (版本回退)
在公司一年多了,用到的项目都是用svn代码托管,没有git 的用武之地,趁国庆假期稍微自学了一下,然后人比较懒,不愿用原生敲命令行的形式,就在eclipse上学学怎么用git,话说回来用了svn再来学git,既容易也难,难在于git的命令更多,上手也需要时间。我学习用的是廖雪峰的git教程,讲得很好,浅显易懂,他敲得是命令行,我翻译成了如何在eclipse中操作,也是一样学。廖雪峰的git教程地址:原创 2016-10-05 16:25:48 · 4822 阅读 · 0 评论 -
【基本功】不可不说的Java“锁”事--转自美团技术博客
前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:乐观锁 V...转载 2019-03-04 15:16:03 · 409 阅读 · 0 评论