
java
我不掉头发
知其然,后知其所以然
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自己动手编译OpenJDK1.8
自己动手编译OpenJDK1.8前言相信看过《深入理解Java虚拟机》的小伙伴都尝试过自己动手编译OpenJDK,有没有成功呢?评论告诉我。纵观网上那么多教程,不客气的说,要么讲的太简单要么不能用,今天,在踩了无数坑之后成功编译完成的我,为了不让后来者继续踩坑,所以决定写这篇博文。废话不多说,亮图:想想自己到底在哪个坑????我把编译JDK的坑分为这几个阶段安装linux,配置环境工具如yum、ssh下载OpenJDK,获取完整OpenJDK资源(解压后500M左右)准备编译所需工具编译原创 2020-09-09 10:50:35 · 1695 阅读 · 11 评论 -
java泛型-看这一篇就够了
java泛型-看这一篇就够了泛型,JDK1.5添加的特性,这都0202年了,还没整明白?今天我们就来再回顾下,本篇主要介绍以下几个方面:泛型接口、泛型类、泛型方法的定义。泛型擦除和泛型检测泛型擦除和多态的冲突希望能给你带来一点点帮助或者欢乐~一、定义泛型接口public interface GenericInterface<T>{ public T get(T t);}泛型类public class GenericClass<T>{原创 2020-06-03 15:29:20 · 366 阅读 · 0 评论 -
Double、Integer、Long对象的值传递问题
Double、Integer、Long和一般对象的不同之处我们知道对于Java来说:函数的参数 对参数为基本类型来说, 参数是一个局部变量且值是原来值的一份拷贝;对函数的参数为对象来说,参数是一个局部变量对象且值是原来对象的地址的一份拷贝。那么我们就可以得出所有人都知道的结论:传递给函数的基本类型的值即使函数对其做了处理也不会影响原来的值。那我非要影响而又非要不使用全局变量、自定义对象封装、数组、容器这些怎么办,我就是欠欠的怎么办?可能自然而然的想对于基本类型double来说 不行。Double是个对原创 2020-05-27 17:26:35 · 1934 阅读 · 0 评论 -
Java异常那些事
Java异常的那些事一、 前言在日常的Java编码工作学习中,我们总免不了和异常打交道,比如说新手常见的简称NPE的空指针异常、类型转换异常;读写文件数据库常见的IO异常、SQL异常;还有不是很常见但是总有一天你把程序搞崩遇到的栈溢出异常、内存溢出异常。今天我们就来详谈下Java异常的二三事。下面是Jdk1.8中的异常类图:二、 万物(异常)始于ThrowableThrowable是所...原创 2020-04-20 20:59:41 · 288 阅读 · 0 评论 -
自定义异常类是继承Execption异常还是继承RuntimeExecption异常?
1.继承Execption异常还是继承RuntimeExecption的区别想分辨这两种的区别,首先要介绍可检查异常和不可检查异常,何为可检查何不不可检查?可以参考博客Throwable、Exception、Error分析可检查的异常(checked Execption):可检查异常必须在代码中显式的捕获,这是编译期工作的一部分,不然无法通过编译。不可检查异常:不可检查即意味着编译期检测不...原创 2019-12-18 11:47:14 · 5298 阅读 · 0 评论 -
Java容器类源码学习-Hashtable(十一)
一、介绍最近变的不太愿意翻译官方介绍了,看过源码的都懂,除了特性介绍,剩下的每个容器类都基本一致。所以这里就说下既然都有的HashMap了,为啥还要来个Hashtable?我也不晓得,哈哈。说说区别吧:HashMap线程不安全,Hashtable线程安全(方法带锁 synchronized)。底层实现还是不一样的,但是用起来,Hashtable有HashMap的感觉,当遇到key值的ha...原创 2019-12-04 14:55:26 · 184 阅读 · 0 评论 -
Java容器类源码学习-TreeMap(十)
官方介绍一个基于红黑树的NavigableMap实现。Map根据其key的自然顺序进行排序,或者根据使用的构造函数由创建map时提供的比较器进行排序。这个实现为containsKey、get、put和remove操作提供了保证的log(n)时间成本。算法是对Cormen, Leiserson和Rivest介绍的算法的改编。...原创 2019-11-28 14:59:27 · 156 阅读 · 0 评论 -
Java编程杂谈-多线程篇
本文章记录学习多线程一路走过的点点滴滴,解法一定不是最好的,但一定是那是我觉得很棒的。1.创建线程,并命名//命名方式1 new Thread(() -> { while (true) { System.out.println("我是" + Thread.currentThread().ge...原创 2019-11-28 14:17:31 · 176 阅读 · 0 评论 -
Java编程杂谈-容器篇
本篇文章主要记录日常工作中的编程经验,一定不是最好,但一定是当前我知道的较好的方法,持续更新容器类操作1.Object类型List转数组 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); Integer[] arr1 = list.toArray(new Integer[list....原创 2019-11-28 13:30:10 · 199 阅读 · 0 评论 -
Java容器类源码学习-HashMap(九)
一、官方介绍基于Hash table实现的Map接口。此实现提供所有可选的Map操作,并允许空值和空键。(HashMap类大致相当于Hashtable,只是它是不同步的,并且允许为空。)该类不保证Map的顺序;特别是,它不能保证顺序在一段时间内保持不变。这个实现为基本操作(get和put)提供了稳定的时间性能,假设 hash函数将元素适当地分散到各个bucket中。集合视图的迭代需要与Has...原创 2019-11-13 14:56:16 · 258 阅读 · 0 评论 -
Throwable、Exception、Error分析
一、Exception和Error的异同Error和Exception都继承了Throwable类,而只有继承了Throwable类的才能抛出或者捕获异常。Exception是java程序运行中可以预料的意外情况,可以并且应该被捕获。Error指正常情况不可能出现的错误,一旦出现,程序将进入不正常,不可恢复状态,且无法被捕获。常见的如:栈移除,内存溢出,线程死亡等。二、Execptio...原创 2019-11-05 16:13:16 · 884 阅读 · 0 评论 -
Java容器类源码学习-Map(八)
一、官方介绍将键映射到值的对象。Map不能包含重复的键;每个键最多可以映射到一个值。这个接口代替了Dictionary类,Dictionary类是一个完全抽象的类,而不是接口。Map接口提供了三个集合视图,它们允许将映射的内容视为一组键、值的集合或一组键-值映射。映射的顺序定义为映射集合视图上的迭代器返回其元素的顺序。一些映射实现,比如TreeMap类,对它们的顺序做了特定的保证;而其他类...原创 2019-11-05 15:01:45 · 220 阅读 · 0 评论 -
Java容器类源码学习-TreeSet(七)
一、官方介绍基于TreeMap的NavigableSet实现。元素使用它们的自然顺序排序,或者通过在设置创建时提供的比较器进行排序,这取决于使用的是哪个构造函数。这个实现为基本操作(添加、删除和包含)提供了保证的log(n)时间开销。...原创 2019-11-04 16:06:49 · 216 阅读 · 0 评论 -
ArrayList转基础类型double数组
平时写代码的时候,经常遇到List转数组,这有啥难的? List<double> list = new ArrayList<>(); Double[] arr1 = list.toArray();搞定收工,可是有一天,突然想将Doule类型的数组转成基本类型double的数组,问题来了,怎么办?list.toArray()生成的是一个对象数组,不能直接赋值给dou...原创 2019-11-04 15:12:17 · 7233 阅读 · 2 评论 -
Java容器类源码学习-HashSet(六)
一、官方介绍这个类实现Set接口,由一个 hash table (实际上是一个HashMap实例)支持。它不保证集合的迭代顺序;特别是,它不能保证顺序在一段时间内保持不变。该类允许空元素。这个类为基本操作(添加、删除、包含和大小)提供了常数时间性能,假设hash函数正确地将元素分散到各个bucket中。遍历这个集合需要的时间与HashSet实例的大小(元素的数量)和支持HashMap实例的“...原创 2019-10-31 16:38:49 · 227 阅读 · 0 评论 -
Java容器类源码学习-Stack(五)
一、官方介绍Stack类表示对象的后进先出(LIFO-In lastly,Out firstly)堆栈。它通过5个操作扩展了Vector类,这5个操作允许将一个Vector视为一个Stack。为基础的push和pop提供了操作,以及一个方法peek来获取Stack顶部,一个方法来测试是否栈是空的,和一个方法来判断某一项和stack的顶部距离。第一次创建Stack时,它不包含任何项。Dequ...原创 2019-10-31 15:53:34 · 278 阅读 · 0 评论 -
Java容器类源码学习-LinkedList(四)
一、官方介绍双向链表实现了List和Deque接口。实现所有可选的List操作,并允许所有元素(包括null)。所有操作的执行都符合双向链表的预期。索引到List中的操作将从头或尾遍历列表,以更接近指定索引的操作为准。**注意,这个实现不是同步的。**如果多个线程同时访问一个链表,并且至少有一个线程从结构上修改了链表,那么它必须在外部同步。(结构修改是指增加或删除一个或多个元素的任何操作;...原创 2019-10-22 16:43:51 · 200 阅读 · 0 评论 -
Java容器类源码学习-Vector(三)
一、官方介绍Vector类实现了一个可增长的对象数组。与数组一样,它包含可以使用整数索引访问的组件。但是,Vector的大小可以根据需要增长或收缩,以适应在创建向量之后添加和删除项。每个Vector都试图通过维护容量和容量扩充来优化存储管理。容量总是至少与Vector大小相同;它通常更大,因为随着组件被添加到Vector中,向量的存储以块的形式增加,容量增量的大小。应用程序可以在插入大量组件...原创 2019-10-16 17:34:27 · 337 阅读 · 0 评论 -
netty源码学习_服务端启动源码
本思维导图来自闪电侠netty教学视频课后总结原创 2019-10-15 17:11:11 · 177 阅读 · 0 评论 -
Java容器类源码学习-ArrayList(二)
一、官方说明List接口的可调整大小的数组实现。实现所有可选的 List操作,并允许所有元素,包括null。除了实现List接口之外,该类还提供了一些方法来操作内部用于存储List的数组的大小,(这个类大致相当于Vector,只是它是不同步的。)size、isEmpty、get、set、iterator和listIterator操作在常数时间内运行。添加操作在平摊常数时间内运行,也就是...原创 2019-10-14 14:06:26 · 217 阅读 · 0 评论 -
Java容器类
Java容器类java容器类图interface Iterable官方介绍实现这个接口允许对象成为“for-each循环”语句的目标方法iterator()返回一个迭代器forEach(Consumer<? super T> action)默认的forEach方法spliterator()interface Collection ex...原创 2019-10-12 11:22:14 · 227 阅读 · 0 评论 -
Java多线程详解
<p> 线程对象是可以产生线程的对象。比如在<a class="replace_word" style="color: #df3434; font-weight: bold;" title="Java EE知识库" href="http://lib.csdn.n...转载 2019-09-25 09:51:11 · 160 阅读 · 0 评论 -
Java8新特性 函数式接口学习(一)
函数式接口定义函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式特点有且仅有一个抽象方法,Object的public方法除外可以包含Object里所有能重写的方法,因为即使接口包含像String toString()这样的抽象方法,它的实现类也会因继承了Object...原创 2019-09-24 10:58:40 · 287 阅读 · 0 评论 -
Java中泛型 类型擦除
转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类型在编译后都会被清除掉,看下面一个列子,代码如下:public class Foo { ...转载 2019-09-24 10:39:19 · 142 阅读 · 0 评论 -
Java8 Stream学习(一)
1.什么是流java8提供的对集合数据进行处理的一种方式流中的元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等2. 流的特点...原创 2019-09-23 15:36:49 · 564 阅读 · 0 评论 -
java1.5 注解
https://www.cnblogs.com/liaojie970/p/7879917.html转载 2019-07-10 11:41:01 · 315 阅读 · 0 评论