![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java技术
文章平均质量分 85
candyguy242
这个作者很懒,什么都没留下…
展开
-
ParameterizedType详解
ParameterizedType详解参数化类型public interface ParameterizedType extends Type { Type[] getActualTypeArguments(); Type getRawType(); Type getOwnerType();} 何为参数化类型列举一个实体类用代码来解释什么...转载 2019-11-06 17:54:40 · 14606 阅读 · 3 评论 -
Java泛型的获取
讨论:https://ask.csdn.net/questions/921549Java泛型是一种语法糖,最终统一都是 Object 类型,而不是编码时指定的类型。结论是:编译器底层并不会存储泛型类型的,也不可能得到泛型的真实的 Class 类型。要获取自身的泛型定义,只能由子类获取。最后那种方式要写成子类方式,在构造方法后面加上花括号,比如:new A<...原创 2019-11-06 18:02:32 · 383 阅读 · 1 评论 -
java知识总结之Type
参考Java中的TypeType是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java中所有类型的“爹”,它并不是我们平常工作中经常使用的 int、String、List、Map等数据类型,而是从Java语言角度来说,对基本类型、引用类型向上的抽象;Type体系中类型的包括:原始类型(Type):不仅仅包含我们平常所指的类,还包括枚举、数组、注解等 参数化类型...转载 2019-11-06 09:57:31 · 697 阅读 · 1 评论 -
Android:dagger2让你爱不释手-基础依赖注入框架篇
前言dagger2的大名我想大家都已经很熟了,它是解决Android或java中依赖注入的一个类库(DI类库)。当我看到一些开源的项目在使用dagger2时,我也有种匆匆欲动的感觉,因此就立马想一探它的究竟,到底能给我带来怎样的好处。在学习使用dagger2的过程中,我遇到了以下的一些困惑:dagger2中的Inject,Component,Module,Provides等等都是什么东东,有什么作...转载 2018-07-04 18:08:06 · 164 阅读 · 0 评论 -
一小时搞明白注解处理器(Annotation Processor Tool)
Java中的注解是个很神奇的东西,还不了解的可以看下一小时搞明白自定义注解(Annotation)。现在很多Android的库都用使用注解实现的,比如ButterKnife,我们不防也来学习一下,学完注解处理器,我们尝试写一个简单的类似ButterKnife的东西来绑定控件。什么是注解处理器? 注解处理器是(Annotation Processor)是javac的一个工具,用来在...转载 2018-07-04 11:16:21 · 801 阅读 · 0 评论 -
自定义注解之编译时注解(RetentionPolicy.CLASS)(三)—— 常用接口介绍
前面介绍了关于编译时注解的使用方式,这里再补充一个关于注解处理器开发中的一些常用类、接口的使用方式和概念。Element和TypeMirror我觉得这两个是开发注解处理器最重要的两个概念,理解这两个的概念和使用是非常有必要的。这两个都是接口,先来看一下Element的定义:/** * 表示一个程序元素,比如包、类或者方法,有如下几种子接口: * ExecutableElement:表示某个类或接口...转载 2018-07-04 11:09:16 · 449 阅读 · 0 评论 -
Dagger 2 完全解析(六),dagger.android 扩展库的使用
Dagger 2 完全解析系列:Dagger 2 完全解析(一),Dagger 2 的基本使用与原理Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等Dagger 2 完全解析(三),Component 的组织关系与 SubComponentDagger 2 完全解析(四),Android 中使用 Dagger 2Dagger 2 完全解析(五),Kotlin...转载 2018-07-08 10:27:44 · 604 阅读 · 0 评论 -
Dagger 2 完全解析(五),Kotlin 中使用 Dagger 2
Dagger 2 完全解析系列:Dagger 2 完全解析(一),Dagger 2 的基本使用与原理Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等Dagger 2 完全解析(三),Component 的组织关系与 SubComponentDagger 2 完全解析(四),Android 中使用 Dagger 2Dagger 2 完全解析(五),Kotlin...转载 2018-07-08 10:27:07 · 2310 阅读 · 0 评论 -
Dagger 2 完全解析(四),Android 中使用 Dagger 2
Dagger 2 完全解析系列:Dagger 2 完全解析(一),Dagger 2 的基本使用与原理Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等Dagger 2 完全解析(三),Component 的组织关系与 SubComponentDagger 2 完全解析(四),Android 中使用 Dagger 2Dagger 2 完全解析(五),Kotlin...转载 2018-07-08 10:26:36 · 367 阅读 · 0 评论 -
Dagger 2 完全解析(三),Component 的组织关系与 SubComponent
Dagger 2 完全解析系列:Dagger 2 完全解析(一),Dagger 2 的基本使用与原理Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等Dagger 2 完全解析(三),Component 的组织关系与 SubComponentDagger 2 完全解析(四),Android 中使用 Dagger 2Dagger 2 完全解析(五),Kotlin...转载 2018-07-08 10:25:58 · 586 阅读 · 0 评论 -
Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等
Dagger 2 完全解析系列:Dagger 2 完全解析(一),Dagger 2 的基本使用与原理Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等Dagger 2 完全解析(三),Component 的组织关系与 SubComponentDagger 2 完全解析(四),Android 中使用 Dagger 2Dagger 2 完全解析(五),Kotlin...转载 2018-07-08 10:25:26 · 862 阅读 · 0 评论 -
Dagger 2 完全解析(一),Dagger 2 的基本使用与原理
Dagger 2 完全解析系列:Dagger 2 完全解析(一),Dagger 2 的基本使用与原理Dagger 2 完全解析(二),进阶使用 Lazy、Qualifier、Scope 等Dagger 2 完全解析(三),Component 的组织关系与 SubComponentDagger 2 完全解析(四),Android 中使用 Dagger 2Dagger 2 完全解析(五),Kotlin...转载 2018-07-08 10:24:42 · 275 阅读 · 0 评论 -
NotRxJava懒人专用指南-RxJava的演进过程
NotRxJava懒人专用指南原文链接 : NotRxJava guide for lazy folks原文作者 : Yaroslav Heriatovych译文出自 : 开发技术前线 www.devtf.cn译者 : Rocko校对者: Mr.Simple状态 : 完成校对如果你是一位 Android 开发者,那么这些天你可能已经听到或看到一些关于 RxJava 满天飞的宣传了。RxJava 是...转载 2018-06-17 22:50:06 · 353 阅读 · 0 评论 -
Java 8 Stream Collectors groupingBy 示例
展示如何使用Java 8 Stream Collectors进行分组,计数,总和和排序List分组,计数和排序1.1分组List并显示其总数。Java8Example1.javapackage com.mkyong.java8;import java.util.Arrays;import java.util.List;import java.util.Map;import java.ut...转载 2018-06-17 15:27:18 · 41738 阅读 · 2 评论 -
Android:dagger2让你爱不释手-重点概念讲解、融合篇
前言Android:dagger2让你爱不释手-基础依赖注入框架篇这篇讲解了Inject,Component,Module,Provides是如何构成dagger2整个依赖注入框架的component_module_inject.png因为dagger2的整个依赖注入框架已经构建完成,所以dagger2中剩下的Qualifier(限定符)、Singleton(单例)、Scope(作用域),SubC...转载 2018-07-04 18:10:26 · 116 阅读 · 0 评论 -
Android:dagger2让你爱不释手-终结篇
前言如果您对dagger2的概念,整个依赖注入框架还不清楚,可以先了解下我的前2篇文章:Android:dagger2让你爱不释手-基础依赖注入框架篇Android:dagger2让你爱不释手-重点概念讲解、融合篇这2篇文章也收到好多网友的好评和提问,谢谢大家的支持。我大概总结了下提的问题:dagger2到底能带来哪些好处?dagger2怎么使用?因此我将结合这2点来进行本文的讲解。并且会有具体的...转载 2018-07-04 18:11:17 · 227 阅读 · 0 评论 -
浅析java内存管理机制
内存管理是计算机编程中的一个重要问题,一般来说,内存管理主要包括内存分配和内存回收两个部分。不同的编程语言有不同的内存管理机制,本文在对比C++和Java语言内存管理机制的不同的基础上,浅析java中的内存分配和内存回收机制,包括java对象初始化及其内存分配,内存回收方法及其注意事项等……java与C++内存管理机制对比在C++中,所有的对象都会被销毁,局部对象的销毁发生在以右花括号为界...转载 2018-07-22 21:54:14 · 228 阅读 · 0 评论 -
JVM内存模型、指令重排、内存屏障概念解析
https://www.cnblogs.com/chenyangyao/p/5269622.html 在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要。否则,你很难搞清楚哪些操作是在并发先绝对安全的?哪些是相对安全的?哪些并发同步手段性能最低?valotile的...转载 2018-07-22 19:48:04 · 302 阅读 · 0 评论 -
JVM之指令重排分析
引言:在Java中看似顺序的代码在JVM中,可能会出现编译器或者CPU对这些操作指令进行了重新排序;在特定情况下,指令重排将会给我们的程序带来不确定的结果.....1. 什么是指令重排? 在计算机执行指令的顺序在经过程序编译器编译之后形成的指令序列,一般而言,这个指令序列是会输出确定的结果;以确保每一次的执行都有确定的结果。但是,一般情况下,CPU和编译器为了提升程序执行的效率...转载 2018-07-22 19:04:16 · 634 阅读 · 0 评论 -
方法区和常量池
最近一直被方法区里面存着什么东西困扰着? 1.方法区里存class文件信息和class文件常量池是个什么关系。 2.class文件常量池和运行时常量池是什么关系。 方法区存着类的信息,常量和静态变量,即类被编译后的数据。这个说法其实是没问题的,只是太笼统了。更加详细一点的说法是方法区里存放着类的版本,字段,方法,接口和常量池。...转载 2018-07-27 11:16:05 · 160 阅读 · 0 评论 -
Java虚拟机详解02----JVM内存结构
主要内容如下:JVM启动流程 JVM基本结构 内存模型 编译和解释运行的概念 一、JVM启动流程:JVM启动时,是由java命令/javaw命令来启动的。二、JVM基本结构:JVM基本结构图:《深入理解Java虚拟机(第二版)》中的描述是下面这个样子的: Java中的内存分配:Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,就...转载 2018-07-21 21:59:06 · 460 阅读 · 0 评论 -
类初始化
类初始化类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的 Java 程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化:遇到 new、getstatic、putstatic、invokestatic 这四条字节码指令时,如果类还没有进行过初始化,则需要先触发其初始化。生成这四条指令最常见的 Java 代码场景是:使用 new 关键字实例化对象时、读取...转载 2018-07-21 00:27:17 · 236 阅读 · 0 评论 -
类加载机制
类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持 Java 语言的运行时绑...转载 2018-07-21 00:26:39 · 117 阅读 · 0 评论 -
JVM内存的那些事
前言对于C语言开发的程序员来说,在内存管理方面,必须负责每一个对象的生命周期,从有到无。对于Java程序员你来说,在虚拟机内存管理的帮助下,不需要为每个new对象都匹配free操作,内存泄露和内存溢出等问题也不太容易出现,不过也正是因为把内存管理交给了虚拟机,一旦运行中的程序出现了内存泄露问题,给排查过程造成很大困难。所以只有理解了Java虚拟机的运行机制,才能够运筹帷幄于各种代码。本文以H...转载 2018-07-21 00:22:20 · 177 阅读 · 0 评论 -
老生常谈java垃圾回收算法(必看篇)
下面小编就为大家带来一篇老生常谈java垃圾回收算法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧1.引用计数法(Reference Counting Collector)1.1算法分析引用计数是垃圾收集器中的早期策略。在这种方法中,堆中每个对象实例都有一个引用计数。当一个对象被创建时,且将该对象实例分配给一个变量,该变量计数设置为1。当任何其...转载 2018-07-19 12:05:42 · 159 阅读 · 0 评论 -
都是套路——Dagger2没有想象的那么难
谷歌开发维护的Dagger2出来有很长时间了,目前在很多开源项目上也能看到它的身影。看了一些文章和项目,发现Dagger2的入门虽然有些难,但还是有一些规律可循的。对于开源的第三方项目,我认为都是有套路可循的,找到这个套路,入门就不会难了,难的是如何更好的在实际开发项目中灵活运用。而灵活运用必然是建立在对这些开源框架深刻理解的基础之上。关于Dagger2这种依赖注入框架的好处在这只简单的提一下依赖...转载 2018-07-04 22:20:48 · 301 阅读 · 0 评论 -
MessageFormat妙用
java.text.MessageFormat类MessageFormat提供一种语言无关的方式来组装消息,它允许你在运行时刻用指定的参数来替换掉消息字符串中的一部分。你可以为MessageFormat定义一个模式,在其中你可以用占位符来表示变化的部分: Object[] arguments = { new Integer(7), new Date(System.currentTi...转载 2018-06-23 11:38:14 · 590 阅读 · 0 评论 -
JAVA字符串格式化-String.format()和MessageFormat的使用
String.format()常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Lo...转载 2018-06-23 11:37:29 · 4013 阅读 · 0 评论 -
Eclipse调试Bug的七种常用技巧
本文写给那些像几年前的我一样刚刚走出校门,及一些未使用过这些高级些的调试技巧的人。记得刚刚毕业的时候,自己连断点也不会打,当时还在用JCreate ,就连毕业设计也是用 System.out 找 Bug 的,想想真的很笨。开始工作后,一个星期过去了,在一个 1 、 2 百万行的系统中找 Bug ,我依然在用 System.out ,当时最痛苦的就是修改代码,每次找到疑似 Bug ,就输出一转载 2013-03-13 11:14:07 · 575 阅读 · 0 评论 -
Eclipse workspace包含哪些工程的配置文件在什么地方?
今天下午遇到一个问题,Eclipse在某一个Workspace上启动CPU占用率就会是100%,我怀疑是前两天反编译生成的一个源代码工程错误太多导致,所以想在workspace里找到工程的配置文件然后把它删除。 经过一番尝试后发现它存在: Java代码 d:\workspace\.metadata\.plugins\org.eclipse.core.r转载 2013-02-06 11:04:15 · 2424 阅读 · 0 评论 -
xliff XML本地化数据交换格式
下面主要介绍android文本资源文件/res/values/strings.xml中xliff标签。预备知识:1、什么是xliff? 参照http://baike.baidu.com/view/4160854.htm。2、java格式化字符串有哪些? 参照http://wenku.baidu.com/view/56f3ed0e52ea551810a687e转载 2013-01-07 13:39:47 · 800 阅读 · 0 评论 -
关于匿名内部类的垃圾回收
最近在工程中常在函数中用final声明一些常量,以便使用,常量也经常是一些匿名内部类。想到一个问题,这样的“局部”常量是不是也会被系统进行垃圾回收。于是写了个小例子:public class InnerFinalTest { public static void main(String[] args) { for(;;){ final TestObj o= new T原创 2012-12-12 17:26:50 · 2769 阅读 · 0 评论 -
String.format用法
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。下面我们着重讨论一下转载 2012-11-13 17:55:53 · 634 阅读 · 0 评论 -
快速上手java.util.Formatter 类,(实例教程)
因为工作需要,前段时间有用到java.util.Formatter类, 因为关于此类的api文档 可能会有一些难度,所以在这里用自己的方式给大家讲解一番,希望大家能快速上手。 Q. 为什么要用到此类: A:此类提供了对布局对齐和排列的支持,以及对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持。 通俗一点说就转载 2012-11-13 17:39:56 · 640 阅读 · 0 评论 -
Java 序列化的高级认识
简介: 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列 化的问题、静态变量问题、transient 关键字的影响、序列化 ID 问题。在笔者实际开发过程中,就多次遇到序列化的问题,在该文章中也会与读者分享。引言将 Java 对象序列化为二进制转载 2012-10-28 17:59:44 · 345 阅读 · 0 评论 -
JAVA NIO 简介
1. 基本概念IO是主存和外部设备(硬盘、终端和网络等)拷贝数据的过程。IO是操作系统的底层功能实现,底层通过I/O指令进行完成。所有语言运行时系统提供执行I/O较高级别的工具。(c的printf scanf,java的面向对象封装)2. Java 标准io回顾Java标准IO类库是io面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。 InputStream\转载 2012-09-26 09:36:16 · 541 阅读 · 0 评论 -
Java aio(异步网络IO)初探
按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,按照POSIX标准来划分只分为两类:同步IO和异步IO。如何区分呢?首先一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO转载 2012-10-10 11:03:23 · 830 阅读 · 0 评论 -
Java NIO API详解
Java NIO API详解NIO API 主要集中在 java.nio 和它的 subpackages 中: java.nio 定义了 Buffer 及其数据类型相关的子类。其中被 java.nio.channels 中的类用来进行 IO 操作的 ByteBuffer 的作用非常重要。 java.nio.channels 定义了一系列处理 IO 的转载 2012-09-17 14:21:12 · 1400 阅读 · 0 评论 -
java多线程编程的常见陷阱(转~~)
1、在构造函数中启动线程我在很多代码中都看到这样的问题,在构造函数中启动一个线程,类似这样:public class A{ public A(){ this.x=1; this.y=2; this.thread=new MyThread(); this.thread.start(); } }转载 2012-09-12 17:16:43 · 665 阅读 · 0 评论 -
Java反射高级应用--注入代码
有时候我们需要改变一些系统平台里某些组件的执行流程,但限于系统平台的原因,不能通过修改源代码来直接实现,这时候反射这一大法宝就有了用武之地。下面的Demo就是一个简单的例子,通过平台对外曝露的接口,实现另类的包装,并注入我们自己的代码~ 模拟系统平台的类: package reflectInject;public class SysComponent { private fi原创 2012-04-12 15:47:44 · 2345 阅读 · 2 评论