![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 90
限量发行x
限量发行
展开
-
Java基本功——Reference
有这样一种说法,如今争锋于IT战场的两大势力,MS一族偏重于底层实现,Java一族偏重于系统架构。说法根据无从考证,但从两大势力各自的社区力量和图书市场已有佳作不难看出,此说法不虚。于是,事情的另一面让人忽略了。偏巧,我是一个喜欢探究底层实现的Java程序员,虽然我的喜好并非纯正咖啡,剑走偏锋却别是一番风味。ReferenceJava世界泰山北斗级大作《Thinking In Ja转载 2016-03-16 10:56:29 · 283 阅读 · 0 评论 -
Java对象的强、软、弱和虚引用(二)
1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次。图1⑴转载 2016-03-16 10:07:41 · 297 阅读 · 0 评论 -
ClassLoader详解及用途
ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回 这个类的class对象。 1.1 几个相关概念ClassLoader负责载入系统的所有Resources(Class,文件,来自网络的字节流 等),通过ClassLoader从而将资源载入JVM 每个class都转载 2016-03-14 09:29:08 · 386 阅读 · 0 评论 -
java中进行二进制,八进制,十六进制,十进制间进行相互转换
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf("FFFF",16).toString() 八进制转成十进制 Integer.va原创 2016-03-30 10:28:32 · 636 阅读 · 0 评论 -
Java中什么是接口回调?
1.接口回调是什么[2]?接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。 [java] view plain copyinterface Peopl转载 2016-03-18 11:34:26 · 463 阅读 · 1 评论 -
关于JAVA匿名内部类,回调,事件模式的一点讨论
关于JAVA匿名内部类的一点讨论.基本理论:-----------------------------------------------------关于JAVA内部类:一个内部类的定义是定义在另一个类内部的类。 存在它的原因是: 1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。即内部类实例对包含它的哪个类的实例来说,是特权的。 2.对于同一转载 2016-03-19 09:38:33 · 565 阅读 · 0 评论 -
JNI/NDK开发指南(四)——字符串处理
从第三章中可以看出JNI中的基本类型和Java中的基本类型都是一一对应的,接下来先看一下JNI的基本类型定义:[cpp] view plain copy typedef unsigned char jboolean; typedef unsigned short jchar; typedef short转载 2016-03-31 15:46:54 · 335 阅读 · 0 评论 -
JNI/NDK开发指南(开山篇)
转载请注明出处:http://blog.csdn.net/xyang81/article/details/41759643 相信很多做过Java或Android开发的朋友经常会接触到JNI方面的技术,尤其做过Android的朋友,为了应用的安全性,会将一些复杂的逻辑和算法通过本地代码(C或C++)来实现,然后打包成so动态库文件,并提供Java接口供应用层调用,转载 2016-03-30 20:45:06 · 276 阅读 · 0 评论 -
JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
当我们在调用一个Java native方法的时候,方法中的参数是如何传递给C/C++本地函数中的呢?Java方法中的参数与C/C++函数中的参数,它们之间是怎么转换的呢?我猜你应该也有相关的疑虑吧,咱们先来看一个例子,还是以HelloWorld为例:HelloWorld.java:[java] view plain copy转载 2016-03-31 14:52:29 · 336 阅读 · 0 评论 -
JNI/NDK开发指南(二)——JVM查找java native方法的规则
通过第一篇文章,大家明白了调用native方法之前,首先要调用System.loadLibrary接口加载一个实现了native方法的动态库才能正常访问,否则就会抛出java.lang.UnsatisfiedLinkError异常,找不到XX方法的提示。现在我们想想,在Java中调用某个native方法时,JVM是通过什么方式,能正确的找到动态库中C/C++实现的那个native函数呢?转载 2016-03-31 14:33:25 · 617 阅读 · 0 评论 -
JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld
JNI全称是Java Native Interface(Java本地接口)单词首字母的缩写,本地接口就是指用C和C++开发的接口。由于JNI是JVM规范中的一部份,因此可以将我们写的JNI程序在任何实现了JNI规范的Java虚拟机中运行。同时,这个特性使我们可以复用以前用C/C++写的大量代码。 开发JNI程序会受到系统环境的限制,因为用C/C++语言写出来的代码或转载 2016-03-30 20:49:05 · 512 阅读 · 0 评论 -
java锁的种类以及辨析
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。1.自旋锁自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能转载 2016-03-20 13:51:47 · 561 阅读 · 0 评论 -
Java回调机制解析
模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,也是我们在写程序中经常使用的;回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口,这句话可能有点绕,等文章后面举例说明;异步调用是一种类似消息或事件的机制,解决了同步阻塞的问题,举例来讲:A通知B后,他们各走各的路,互不影响,不用像同步调用那样,A通知B后,非得等转载 2016-03-18 13:26:15 · 305 阅读 · 0 评论 -
JCE中支持AES,支持的模式和填充方式
Java Cryptography Extension(JCE)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象。它不对外出口,用它开发完成封装后将无法调用。JCE中AES支持五中模式:CBC,CFB,ECB,OFB,PCBC;原创 2016-03-21 19:39:36 · 2141 阅读 · 0 评论 -
Java反射机制的学习(1)
反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。下面具体介绍一下java的反射机制。Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的转载 2016-03-23 09:34:05 · 381 阅读 · 0 评论 -
Java反射机制的学习(3)
Java反射机制的学习Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法)。也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制。你会嗤之以鼻地告诉我,Java反射机制转载 2016-03-07 09:59:44 · 478 阅读 · 0 评论 -
Java反射机制的学习(2)
反射之中包含了一个“反”的概念,所以要想解释反射就必须先从“正”开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化对象,但是“反”指的是通过对象找到类。packagecn.mldn.demo;classPerson {}publicclassTestDemo {publicstaticvoidmain(String[] args) thro转载 2016-03-23 09:48:07 · 306 阅读 · 0 评论 -
"equals"和"=="的区别
java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后原创 2016-03-24 16:51:33 · 327 阅读 · 0 评论 -
Java finally语句执行情况总结
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:(1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被转载 2016-03-24 18:23:17 · 360 阅读 · 0 评论 -
Java RTTI与反射(参照Java编程思想与新浪博客)
一、Java的RTTI RTTI(Run-Time Type Identification,通过运行时类型识别)的含义就是在运行时识别一个对象的类型,其对应的类是Class对象,每个java里面的类都对应一个Class对象(在编写并且编译后),这个对象被保存在这个类的同名class文件里。类加载器在类被第一次静态调用(比如一个静态方法,一个静态代码块或者new关键转载 2016-03-25 17:13:49 · 299 阅读 · 0 评论 -
JAVA大数处理(BigInteger,BigDecimal)
在用C或者C++处理大数时感觉非常麻烦,但是在JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。这两个类都在java.math.*包中,因此每次必须在开头处引用该包。 Ⅰ基本函数:1.valueOf(parament); 将参数转换为制定的类型 比如原创 2016-03-26 21:54:01 · 456 阅读 · 0 评论 -
Java词频统计算法(使用单词树)
许多英语培训机构(如新东方)都会出几本“高频词汇”的书,主要内容是统计近几年来各类外语考试中屡次出现的高频词汇,帮助考生减少需要背的生词的数量。但这些高频是如何被统计出来的呢?显然不会用手工去计算。假如我们已经将一篇文章存在一字符串(String)对象中,为了统计词汇出现频率,最简单直接的做法是另外建一个Map:key是单词,value是 次数。将文章从头读到尾,读到一个单词就到M原创 2016-03-27 18:14:13 · 5605 阅读 · 4 评论 -
ThreadLocal(3)--源码分析
概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟,清空之前对ThreadLocal的错误的认知!看看JDK中的源码是怎么写的:This class provides thr转载 2016-03-28 17:43:42 · 306 阅读 · 0 评论 -
ThreadLocal(2)--ThreadLocal源码(jdk1.7)
本文通过对ThreadLocal源码(jdk1.7)解析来加深对ThreaLocal类理解源代码如下:[java] view plain copypackage java.lang; import java.lang.ref.*; import java.util.concurrent.atomic.AtomicInteg转载 2016-03-28 22:15:17 · 945 阅读 · 0 评论 -
ThreadLocal(4)--总结
以下内容摘自《疯狂java讲义第三版》原创 2016-03-28 22:26:20 · 325 阅读 · 0 评论 -
Java对象的强、软、弱和虚引用(三)--具体应用
强引用 本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。软引用(SoftReference)如果一个对象只具有软引用,那就类似于可有原创 2016-03-16 18:25:08 · 321 阅读 · 0 评论 -
深入Java集合学习系列:LinkedList的实现原理
1. LinkedList概述: List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现 Deque 接口,为 add、poll 提供先进先出转载 2016-04-26 17:40:34 · 315 阅读 · 0 评论 -
java实现格雷码生成
什么是格雷码? 下面一段来自百度百科: 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实原创 2016-03-30 10:14:13 · 2849 阅读 · 0 评论 -
HashMap与HashTable的对比分析
前言 前一段时间分析Java collection中间一些数据结构代码的时候,单独把HashMap的实现做了一个分析(见链接)。以前看到很多人讨论问题的时候,会把HashMap和HashTable放在一起对比和分析。最开始的时候觉得他们两者的差别很小,网上也有很多浅显的解答。后来结合一些细节分析的时候,发现他们也存在许多细节上的差异,有的也许是针对不同应用的考量,有的也许是由于历史原转载 2016-05-10 17:04:30 · 335 阅读 · 0 评论 -
java collections集合类总结:概述
简介 在java的包java.util和java.util.concurrent里面定义了java的集合类框架。我们大部分日常使用到的数据结构都可以在这里找到一个对应的实现。在以往的学习过程中可能会接触过一些具体的结构。但是对于java集合类框架来说,他里面包含有哪些类别的结构呢?对于不同的结构,他们分别适用于哪些应用场景?集合类框架中这些类之间是否有着某种关系呢?在这里,我们尝试对转载 2016-05-10 10:00:06 · 659 阅读 · 0 评论 -
java集合类深入分析之List篇
简介 在List中最常用的两个类就数ArrayList和LinkedList。他们两个的实现代表着数据结构中的两种种典型:线性表和链表。在这里,这个线性表是可以根据需要自动增长的。Java的库里面默认没有实现单链表,LinkedList实际上是一个双链表。这些具体的细节我们会在后续的代码里分析。 实际上,ArrayList和LinkedList他们之间的整体类关系图如下转载 2016-05-10 10:21:41 · 2964 阅读 · 0 评论 -
java集合类深入分析之HashSet, HashMap篇
简介 Map和Set是比较常用的两种数据结构。我们在平常的编程中经常会用到他们。只是他们的内部实现机制到底是怎么样的呢?了解他们的具体实现对于我们如何有效的去使用他们也是很有帮助的。在这一篇文章里,已经对HashMap, HashSet的实现做了一个详细的讨论。这里主要是针对Map, Set这两种类型的数据结构规约和典型的HashMap,HashSet实现做一个讨论。Ma转载 2016-05-10 17:14:55 · 349 阅读 · 0 评论 -
通过分析 JDK 源代码研究 Hash 存储机制
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。实际上,HashS转载 2016-05-10 18:21:43 · 378 阅读 · 0 评论 -
java Scanner nextLine next 连用的区别
在java中,next()方法是不接收空格的,在接收到有效数据前,所有的空格或者tab键等输入被忽略,若有有效数据,则遇到这些键退出。nextLine()可以接收空格或者tab键,其输入应该以enter键结束。当next()和nextLine()连用时,nextLine()会自动接收next()函数的结束符,所以为了避免数据接收有误,要避免二个函数连用。next 方法的使用规则:当 n原创 2016-04-28 21:15:34 · 809 阅读 · 0 评论 -
优先级队列:PriorityQueue
PriorityQueue是从JDK1.5开始提供的新的数据结构接口,它是一种基于优先级堆的极大优先级队列。优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列(参阅Comparable转载 2016-04-15 15:41:14 · 482 阅读 · 0 评论 -
java中的移位运算符:<<,>>,>>>总结
java中有三种移位运算符>> : 右移运算符,num >> 1,相当于num除以2>>> : 无符号右移,忽略符号位,空位都以0补齐下面来看看这些移位运算都是怎样使用的/** * */public class Test { public static void main(String[] args) {原创 2016-05-11 15:30:03 · 263 阅读 · 0 评论 -
深入Java集合学习系列:Hashtable的实现原理
我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable。第1部分 Hashtable介绍第2部分 Hashtable数据结构第3部分 Hashtable源码解析(基于JDK1.6.0_45)第4部分 Hashtable遍历方式第5部分 Hashtable示例转载请注明出处:http://www.cnblogs.com/转载 2016-05-11 15:39:59 · 662 阅读 · 0 评论 -
深入Java集合学习系列:HashSet的实现原理
1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet转载 2016-05-11 15:41:37 · 256 阅读 · 0 评论 -
深入Java集合学习系列:LinkedHashSet的实现原理
1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必转载 2016-05-11 15:42:42 · 342 阅读 · 0 评论 -
java stack的详细实现分析
简介 我们最常用的数据结构之一大概就是stack了。在实际的程序执行,方法调用的过程中都离不开stack。那么,在一个成熟的类库里面,它的实现是怎么样的呢?也许平时我们实践的时候也会尝试着去写一个stack的实现玩玩。这里,我们就仔细的分析一下jdk里的详细实现。Stack 如果我们去查jdk的文档,我们会发现stack是在Java.util这个包里。它对应的一转载 2016-05-11 16:00:53 · 16438 阅读 · 0 评论