
JAVA SE
艾慕达
一个希望通过coding改变自己,改变世界的人
展开
-
JDK、JRE、JVM的区别的联系
很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的。 今天特写此文,来整理下三者的关系。 JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java原创 2017-07-14 11:26:54 · 251 阅读 · 0 评论 -
transient的用途及使用方法
1,transient的用途及使用方法1,用途我们知道,当一个对象实现了Serilizable接口,这个对象就可以被序列化,我们不关心其内在的原理,只需要了解这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。而在开发过程中,我们可能要求:当对象被序列化时(写入字节序列到目标文件)时,有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(...原创 2018-10-03 18:05:44 · 515 阅读 · 0 评论 -
ConcurrentHashMap 源码分析
前言 HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CPU利用率接近100%。final HashMap<String, String> map = new HashMap<String, String>(2); for (int i = 0; i < 10000;...原创 2018-05-13 16:46:45 · 249 阅读 · 0 评论 -
Java中Static关键字用法总结
Java中的Static关键字用的很多,但是总结起来,大概有:Static member、Static Block、Static import三部分内容。下面分别介绍Static Entry Static实体包括静态变量、静态方法、静态内部类。首先理解一下Static这个词,在Java中,这个词的意思是这些实体归类所有,与类绑定在一起,所有该类的实例共享这些实体。例如同一个厂商生产的自行...原创 2018-03-24 10:17:47 · 411 阅读 · 0 评论 -
在Java中用引号创建String对象和用构造函数的区别
创建一个String对象一般有以下两种方式:String str1 = "abcd"; String str2 = new String("abcd"); 这两种方式有什么区别呢?我们可以通过下面两个小例子来说明.Example 1:String a = "abcd"; String b = "abcd"; System.out.println(a == b)原创 2018-02-07 16:05:30 · 278 阅读 · 0 评论 -
java中unicode utf-8以及汉字之间的转换工具类
1. 汉字字符串与unicode之间的转换1.1 stringToUnicode[java] view plain copy/** * 获取字符串的unicode编码 * 汉字“木”的Unicode 码点为Ox6728 * * @param s 木 * @return \uf原创 2017-12-20 17:58:18 · 1879 阅读 · 0 评论 -
JVM内存模型 & GC触发条件
JVM 内存区域JVM会将Java进程所管理的内存划分为若干不同的数据区域. 这些区域有各自的用途、创建/销毁时间:一. 线程私有区域线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束而创建/销毁(在Hotspot VM内, 每个线程都与操作系统的本地线程直接映射, 因此这部分内存区域的存/否跟随本地线程的生/死).1. Program Counter Reg...原创 2017-11-21 11:06:45 · 686 阅读 · 0 评论 -
Java 回调函数作用和使用场景
1. 什么是回调函数 回调函数(callback Function),顾名思义,用于回调的函数。 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性: 1、属于工作流的一个部分;2、必须按照工作流指定的调用约定来申明(定义);3、他的调用时机由工作流决定,回调函数的实现者转载 2017-09-13 13:51:03 · 6853 阅读 · 0 评论 -
阿里巴巴 JAVA 开发手册
一、编程规约 (一) 命名规约1. 【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name / __name / $Object / name_ / name$ / Object$ 2. 【强制转载 2017-09-04 09:34:08 · 363 阅读 · 0 评论 -
Java中HashCode的作用
以下是关于HashCode的官方文档定义:[plain] view plain copyhashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 has原创 2017-07-15 19:08:01 · 312 阅读 · 0 评论 -
Java多线程总结(二):理解对象锁 & synchronized和Lock的区别
在并发环境下,解决共享资源冲突问题时,可以考虑使用锁机制。在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。 java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的转载 2017-08-03 14:55:27 · 594 阅读 · 0 评论 -
Java多线程总结(一):Java两种创建线程方式的比较
1、通过实现Runnable接口线程创建(1).定义一个类实现Runnable接口,重写接口中的run()方法。在run()方法中加入具体的任务代码或处理逻辑。(2).创建Runnable接口实现类的对象。(3).创建一个Thread类的对象,需要封装前面Runnable接口实现类的对象。(接口可以实现多继承)(4).调用Thread对象的start()方法,启动线转载 2017-08-04 10:43:35 · 189 阅读 · 0 评论 -
HashMap 四种同步方式的性能比较
转自:http://blog.youkuaiyun.com/heyutao007/article/details/6422412如果需要使 Map 线程安全,大致有这么四种方法: 1、使用 synchronized 关键字,这也是最原始的方法。代码如下 synchronized(anObject) { value = map.get(key);转载 2017-08-08 15:51:30 · 1458 阅读 · 0 评论 -
Java多线程总结(三):Java四种常用线程池的使用和分析
1、线程池的简介:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 ...原创 2017-08-08 14:58:26 · 356 阅读 · 0 评论 -
Java序列化的几种方式
本文着重讲解一下Java序列化的相关内容。如果对Java序列化感兴趣的同学可以研究一下。一.Java序列化的作用 有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从一个字节流中恢复一个Java对象。例如,有的时候我们想要把一个Java对象写入到硬盘或者传输到网路上面的其它计算机,这时我们就需要自己去通过java把相应的对象写成转换成字节转载 2017-08-01 14:00:54 · 344 阅读 · 0 评论 -
JAVA IO常用类总结
初学者如笔者我对于IO最头疼的地方是Java的io类太多了,分不清其区别。其实多思考一下分清这些区别也不是太难。我们首先来看一幅图,该图清楚地展示了基本常用到的IO流(浏览大体框架即可,下面再看具体类):可见IO流分为字节流和字符流。首先什么是流:流(Stream)的概念来源于UNIX中的管道(pipe)概念,在unix中,管道是一条不间断的字节流,用来实现转载 2017-08-01 10:27:25 · 2883 阅读 · 0 评论 -
Exception和RuntimeException的区别
Java compiler要求所有的Exception 要么被catch,要么被throw,除非这是一个RuntimeExeption (e instanceof RuntimeException)。也就是说,通常的Exception一定要被处理,也即我们所说的 checked exception,而RuntimeException不强制要求处理,(当然你自己要处理也可以),所以我们称为unche转载 2017-08-01 10:04:44 · 359 阅读 · 0 评论 -
JAVA内存泄露原因详细解释
一、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方转载 2017-07-18 17:08:06 · 311 阅读 · 0 评论 -
JVM指令集大全
看字节码从这里开始。指令码 助记符 说明0×00 nop 什么都不做0×01 aconst_null 将null推送至栈顶0×02 iconst_m1 将int型-1推送至栈顶0×03 iconst_0 将int型0推送至栈顶0×04 iconst_1 将int型1推送至栈顶0×05 iconst_2 将int型2推送至栈顶0×06 iconst_3 将int型3推送至栈顶0×0...原创 2018-12-11 17:34:12 · 2015 阅读 · 1 评论