Java
文章平均质量分 50
weijinqian0
邮件:1184188277@qq.com
展开
-
java中的原子操作
Java中的原子操作包括:1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切操作。 但是java对long和double的赋值操作是非原子操作!!long和double占用的字节数都是8,也就是64bits。在32位操作系统上对64位的数据的读写要分两步完成,每一步取...转载 2019-02-19 10:40:34 · 392 阅读 · 0 评论 -
复写的要求
方法的重写(override)两同两小一大原则: 方法名相同,参数类型相同 子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限转载 2016-09-04 20:49:27 · 761 阅读 · 0 评论 -
怎样理解Java静态分派和动态分派
本文是基于网上资料搜集的结果:首先,静态分派和解析的区别静态分派是发生在编译的时候,而解析是在类加载的时候,没什么关系。它们是在不同层次上去筛选、确定目标方法的过程前言这里所谓的分派指的是在Java中对方法的调用。Java中有三大特性:封装、继承和多态。分派是多态性的体现,Java虚拟机底层提供了我们开发中“重写”和“重载”的底层实现。其中重载属于静态分派,原创 2016-08-25 10:51:05 · 431 阅读 · 0 评论 -
反射的原理
一 反射机制的概念:指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制.二 反射机制的应用:生成动态代理,面向切片编程(在调用方法的前后各加栈帧).三 反射机制的原理:1 首先明确的概念: 一切皆对象----类也是对象.2 然后知道类中的转载 2016-08-25 10:22:41 · 415 阅读 · 0 评论 -
Java反射的运用
JAVA 反射的应用还是比较多,这里会对反射的一些原理进行介绍,然后我们才知道如何使用和优化。至 于反射的使用介绍,这里就不在过多叙述了,API 上都介绍得有。 要了解JAVA 反射的原理,我们还得对类在虚拟机中的一些知识做简要介绍... 一、类文件的结构: 1.1 虚拟机加载Class文件过程: 在JVM 类加载机制的博原创 2016-08-25 10:15:03 · 822 阅读 · 0 评论 -
12种泛型面试题
1. Java中的泛型是什么 ? 使用泛型的好处是什么?这是在各种Java泛型面试中,一开场你就会被问到的问题中的一个,主要集中在初级和中级面试中。那些拥有Java1.4或更早版本的开发背景的人都知道,在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCastExcep转载 2016-08-25 09:56:59 · 1265 阅读 · 0 评论 -
生产者与消费者模式
本文是在搜集网络上的相关知识的基础上实现的虽然生产者-消费者模式能够将生产者和消费者的代码彼此解耦开来,但它们的行为仍然会通过共享工作队列间接滴耦合在一起。开发人员总会假设消费者处理工作的速率能够赶上生产者生产工作项的速率。在类库中存在BlockingQueue的多种实现,其中,LinkedBlockingQueue和ArrayBlockingQueue是FIFO队列。Priori原创 2016-08-24 16:36:36 · 370 阅读 · 0 评论 -
java多态的实现
本文主要是在收集网路上的相关资料,在此基础上进行总结。初始化地方:首先,摘抄一段来自《深入理解JAVA虚拟机》的一段话,最常用的“稳定优化”手段是在类的方法区建立一个虚方法表,与此对应的是在invokeinterface执行的时候也会用到接口方法表,使用虚方法表索引来代替数据查找以提高性能。虚方法表中存放着各个方法的实际入口地址,如果某个方法在子类中没有被重写,那子类的虚方法表里面的入原创 2016-08-24 15:55:05 · 640 阅读 · 0 评论 -
有return的情况下try catch finally的执行顺序(最有说服力的总结)
结论:1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally转载 2016-08-24 15:03:31 · 265 阅读 · 0 评论 -
Object中的方法
protected Object clone() throws CloneNotSupportedExceptionprivate native Object internalClone();public boolean equals(Object o)public final Class getClass()public int hashCode()public fina原创 2016-08-24 14:45:39 · 249 阅读 · 0 评论 -
super()和this()的区别和用法
1)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。2)super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。 3)super()和this()均需放在构造方法内第一行。 4)尽管转载 2016-09-11 09:31:25 · 310 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2016-09-09 14:46:29 · 273 阅读 · 0 评论 -
关于1.8的ConcurrentHashMap资料
http://blog.csdn.net/zly9923218/article/details/51420561http://blog.csdn.net/u010723709/article/details/48007881CAS锁的机制:http://www.tuicool.com/articles/zuui6z原创 2016-08-03 10:52:46 · 269 阅读 · 0 评论 -
Java动态代理的实现
动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于AOP的框架)的设计与开发,本文将通过实例来讲解Java动态代理的实现过程。 友情提示:本文略有难度,读者需具备代理模式相关基础知识,。 通常情况下,代理模式中的每一个代理类在编译之后都会生成一个class文件,代理类所实现的接口和所代理的方法都被固定,这种代理被称之为静态代理(Sta转载 2016-09-19 14:44:11 · 229 阅读 · 0 评论 -
java中的强制类型转换
数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中 “ 悄然 ” 进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。自动数据类型转换自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下: 低 -------------------------------------------转载 2016-09-07 14:34:17 · 2667 阅读 · 0 评论 -
Java注解处理器使用详解
在这篇文章中,我将阐述怎样写一个注解处理器(Annotation Processor)。在这篇教程中,首先,我将向您解释什么是注解器,你可以利用这个强大的工具做什么以及不能做什么;然后,我将一步一步实现一个简单的注解器。一些基本概念在开始之前,我们首先申明一个非常重要的问题:我们并不讨论那些在运行时(Runtime)通过反射机制运行处理的注解,而是讨论在编译时(Compile time)处...转载 2018-09-27 10:10:39 · 974 阅读 · 0 评论 -
理解Java关键字volatile
在Java中,关键字volatile是除同步锁以外,另一个同步机制,它使用起来比锁要简单方便,但是却很容易被忽略,或者被误用。这篇文章就来详细讲解一下volatile它的作用,它的原理以及如何正确的使用它。volatile的定义这个引用JSR中的定义:The Java programming language allows threads to access s转载 2018-02-05 10:31:47 · 274 阅读 · 0 评论 -
浅析java内存模型--JMM(Java Memory Model)
在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。 线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/代码块需要在多线转载 2018-01-17 15:02:22 · 258 阅读 · 0 评论 -
Java8 lambda表达式10个示例
特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里。在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码。而定义行为最重要的那行代码,却混在中间不够突出。Lambda表达式取代了匿名类,取消了模板,允许用函数式风格编写代码。这样有时可读性更好,表达更清晰。在Java生态系统中,函数式表达与对面向对象的全面支持是个激动人心的进步。将进一步促进并行第三方库的转载 2017-11-03 17:32:09 · 457 阅读 · 0 评论 -
Java8新特性与Android支持API版本
先Mark一下 再添加原创 2017-11-03 17:20:03 · 1600 阅读 · 0 评论 -
Object[]强制转String[]会出错的原因
Object[]与String[]之间没有继承关系,类型转换会出错。引申直toArray的使用,这里的原因介绍是错的。http://m.blog.csdn.net/java2009cgh/article/details/7599496原创 2017-09-15 13:00:55 · 1882 阅读 · 0 评论 -
正确理解ThreadLocal
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作转载 2017-08-14 19:16:35 · 192 阅读 · 0 评论 -
浅析Java中的final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正。 请尊重作者劳动成果,转载请标明原文链接转载 2017-08-14 11:10:18 · 280 阅读 · 0 评论 -
HTTP断点续传
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下: 1.客户端下载一个1024K的文件,已经下载了其中512K 2. 网络中断,客户端请求续传,因此需要在HTTP头中转载 2017-08-17 19:56:04 · 395 阅读 · 0 评论 -
java运算符优先级记忆口诀
尊重原创:(口诀)转自http://lasombra.iteye.com/blog/991662 今天看到《java编程思想》中的运算符优先级助记口诀,不过“Ulcer Addicts Really Like C A lot”在中文语境下不好记。我试着写一个口诀: 单目乘除为关系,逻辑三目后赋值。 单目:单目运算符+ –(负数) ++ -- 等 乘除:算数单目运算符转载 2017-07-20 11:21:41 · 361 阅读 · 0 评论 -
深入理解synchronized(synchronized锁住的是代码还是对象)
面试安卓难免会问到许多的Java问题,毕竟安卓目前就是用java编写的,虽然一些小众语言很强势,比如kotlin,AndroidStudio的一个插件,可以用来开发安卓程序,kotlin有许多特性是java所没有的,比如空指针的问题,好像有点跑偏了,根据我的面试经历,今天来说下Synchornized的理解及面试题。面试官问你,考虑到并发场景,如何实现线程同步,你一想,这不就是Java中S转载 2017-06-29 11:34:00 · 889 阅读 · 0 评论 -
线程池工作机制和原理
书接上文,Java线程池。 接下来记录一下线程池的工作机制和原理线程池的两个核心队列: - 线程等待池,即线程队列BlockingQueue。 - 任务处理池(PoolWorker),即正在工作的Thread列表(HashSet)。线程池的核心参数: - 核心池大小(corePoolSize),即固定大小,设定好之后,线程池的稳定峰值,达到这个值之后池的线程数大小不转载 2017-04-16 16:29:01 · 592 阅读 · 0 评论 -
关于收集器采用的算法
两个最基本的java回收算法:复制算法和标记清理算法 复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法 标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出 标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象转载 2016-08-28 09:51:20 · 1647 阅读 · 0 评论 -
静态内部类访问外部类静态变量的原因分析
写一个类用来判断是否静态类和非静态类的能不能访问外部的静态变量和非静态变量,答案是静态内部类可以访问静态变量,而不可以访问类的非静态内部类。原因是:当一个静态内部类被使用的时候,它的外部类一定已经被加载了(这个可以参考类加载机制),外部类加载了以后它的静态变量才会放到了方法区中,然后才能被静态内部类访问,而一般的成员变量此时还没有被分配内存,因而没法进行访问。package Mai原创 2016-08-27 20:23:50 · 4782 阅读 · 0 评论 -
线程、多线程与线程池总结
先看几个概念:线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池转载 2016-07-26 11:00:23 · 299 阅读 · 0 评论 -
Java基础:IO 流中的 flush
Java设计Io流可谓是煞费苦心,如果你是初学者我敢保证第一次接触Java的IO类,一定会“狂晕!!”,晕,倒不是因为它有多么难学,而是太多,而且及其让人容易迷惑。在编程日子中,尤其是在网络编程中,几乎离不开Java的IO,关于Java的IO流的分类,可以到网上soso,今天跟大家分享一下flush方法。1. OutputStream类的flush方法该类实现了Flushable接口,所转载 2016-06-07 21:33:40 · 397 阅读 · 0 评论 -
Java File类总结和FileUtils类
文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录。 用public boolean exists()可以判断文件是否存在。 File类的对象可以是目录或者文件。 如果是目录,public boolean isDirectory()返回true; 如果是文件(非目录则是文件),public boolean isFil转载 2016-06-07 21:12:46 · 977 阅读 · 0 评论 -
Java多线程学习
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-]一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区别四线程状态转换五线程调度六常用函数说明使用方式为什么要用join方法七常见线程名词解释八线程同步九线程数据传递转载 2016-05-07 10:35:44 · 206 阅读 · 0 评论 -
Java的各种操作
java的IO类操作主要包括如下几类 1、File类的使用。 2、字节操作流:OutputStream、InputStream 3、字符操作流:Reader、Writer 4、对象序列化:serializable(1)File类Java代码 [java] view plain copy print?public c转载 2016-03-12 10:14:57 · 324 阅读 · 0 评论 -
深入分析Java I/O 工作机制
深入分析Java I/O 工作机制作者:egg邮箱:xtfggef@gmail.com微博:http://weibo.com/xtfggef博客:http://blog.csdn.net/zhangerqing论坛:http://www.qtlife.net(随便建了一个,方便大家一起交流!)IO是Java及众多编程语言很重要的一块,同时很多程序转载 2016-03-12 09:46:34 · 285 阅读 · 0 评论 -
Java的注解与使用
注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁。 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致。Java SE5内置了三种标准注解: @Override,表示当前的方法定义将覆盖超类中的方法。 @Deprecated,使用了注解为它的元素编译器将发出警告,因为转载 2016-03-10 12:29:56 · 283 阅读 · 0 评论 -
静态方法和实例方法的区别
静态方法和实例方法的区别主要体现在两个方面:在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。转载 2016-03-21 14:55:49 · 278 阅读 · 0 评论 -
Java中HashMap遍历的两种方式
原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next();转载 2016-03-09 15:20:48 · 416 阅读 · 0 评论 -
Hashtable的四种遍历方法
要遍历一个Hashtable,api中提供了如下几个方法可供我们遍历: keys() - returns an Enumeration of the keys of this Hashtable keySet() - returns a Set of the keys entrySet() - returns a Set of the mapp转载 2016-03-08 15:24:59 · 461 阅读 · 0 评论 -
Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comparable位于包转载 2016-03-08 14:18:33 · 212 阅读 · 0 评论