摘要: 垃圾收集器 垃圾收集器是垃圾收集算法的具体实现。Java规范对垃圾收集器的实现没有做任何规定,因此不同的虚拟机提供的垃圾收集器可能有很大差异。HotSpot虚拟机1.7版本使用了多种收集器。如下图。 共有7种作用不不同分代的收集器,其中Serial、ParNew、Parallel Scavenge属 阅读全文
posted @ 2018-03-17 15:52 linghu_java 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 垃圾收集算法 一般来说,垃圾收集算法分为四类: 标记-清除算法 最基础的算法便是标记-清除算法(Mark-Sweep)。算法分为“标记”和“清除”两个阶段:首先标记处需要收集的对象,在标记完成之后,再统一回收所有被标记的对象。 这是最简单的一种算法,但是缺点也是很明显的:一个是效率问题,标记和清除效 阅读全文
posted @ 2018-03-17 15:51 linghu_java 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 怎么判断对象是否需要回收? 常用的方法有两种。 1、引用计数算法。为每一个对象添加一个引用计数器,每当有人持有对其的一个引用的时候,该计数器加1。这种算法(Reference Counting)实现简单,判断效率高,是一个很不错的算法,如Python语言、COM和Squirrel中都用它来管理内存。 阅读全文
posted @ 2018-03-17 15:50 linghu_java 阅读(400) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机在执行Java程序时,会把它管理的内存划分为若干个不同的数据区。这些区域有不同的特性,起不同的作用。它们有各自的创建时间,销毁时间。有的区域随着进程的启动而创建,随着进程结束而销毁,有的则始终贯穿虚拟机整个生命周期。 Java虚拟机运行时内存区域主要分为七部分,分别是:程序计数器,Ja 阅读全文
posted @ 2018-03-17 15:49 linghu_java 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 内存中对象的创建、对象的结构以及访问方式。 一、对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载。虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号代表的类是否被 阅读全文
posted @ 2018-03-17 15:49 linghu_java 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 在IntelliJ IDEA里面Ctrl+Alt+M用来拆分方法。选中一段代码,敲下这个组合,非常简单。Eclipse也用类似的快捷键,使用 Alt+Shift+M。我讨厌长的方法,提起这个下面这个方法我就觉得太长了: [java] view plain copy public void proce 阅读全文
posted @ 2018-03-17 15:48 linghu_java 阅读(1873) 评论(0) 推荐(0) 编辑
摘要: 在部分的商用虚拟机中,Java 程序最初是通过解释器( Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,即时编译器(Just In Time Compiler )会把这些代码编译成与本 阅读全文
posted @ 2018-03-17 14:55 linghu_java 阅读(13556) 评论(2) 推荐(3) 编辑
摘要: 语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这些语法糖虽然不会对语言的功能产生任何影响,却能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会。 阅读全文
posted @ 2018-03-17 13:05 linghu_java 阅读(619) 评论(0) 推荐(0) 编辑
摘要: 方法调用过程是指确定被调用方法的版本(即调用哪一个方法),并不包括方法执行过程。我们知道,Class 文件的编译过程中并不包括传统编译中的连接步骤,一切方法调用在 Class 文件调用里面存储的都只是符号引用,而不是方法在实际运行时的内存布局入口地址,也就是说符号引用解析成直接引用的过程。这个特性使 阅读全文
posted @ 2018-03-16 11:18 linghu_java 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 运行时栈帧结构 栈帧(Stack Frame) 是用于虚拟机执行时方法调用和方法执行时的数据结构,它是虚拟栈数据区的组成元素。每一个方法从调用到方法返回都对应着一个栈帧入栈出栈的过程。 每一个栈帧在编译程序代码的时候所需要多大的局部变量表,多深的操作数栈都已经决定了,并且写入到方发表的 Code 属 阅读全文
posted @ 2018-03-13 18:11 linghu_java 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 虚拟机把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类与类加载器 任意一个类,都需要由加载它的类加载器和这个类本身共同确定其在Java 虚拟机中的唯一性,每一个类加载器 阅读全文
posted @ 2018-03-13 10:09 linghu_java 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中,验证、准备 阅读全文
posted @ 2018-03-12 19:53 linghu_java 阅读(3316) 评论(0) 推荐(0) 编辑
摘要: Class 文件中描述的各种信息都必须加载到虚拟机中才能运行和使用。而虚拟机怎么加载这些Class 文件呢?Class 文件进入到虚拟机中会发生什么变化呢? 虚拟机类加载机制是指 虚拟机把描述类的数据从 Class 文件加载到内存中,并对数据进行校验、转换解析、初始化,最终形成可以被虚拟机直接使用的 阅读全文
posted @ 2018-03-12 16:38 linghu_java 阅读(428) 评论(0) 推荐(0) 编辑
摘要: Android 中有几个比较有名的图片加载框架,Universal ImageLoader、Picasso、Glide和Fresco。它们各有优点,以前一直用的是ImageLoader 做项目中的图片加载,由于作者宣布ImageLoader 不会在更新了,因此新的项目打算换一个图片加载框架-Pica 阅读全文
posted @ 2018-01-25 11:01 linghu_java 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 摘要: 一、APT概述 我们在前面的java注解详解一文中已经讲过,可以在运行时利用反射机制运行处理注解。其实,我们还可以在编译时处理注解,这就是不得不说官方为我们提供的注解处理工具APT (Annotation Processing Tool )。 APT用来在编译时期扫描处理源代码中的注解信息, 阅读全文
posted @ 2017-12-27 15:06 linghu_java 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 环境 使用Android注解前需要导入相关的包 注意:如果我们已经引入了appcompat则没有必要再次引用support-annotations,因为appcompat默认包含了对其引用 使用 Android注解给我们提供了三种主要和其他注释供我们使用: IntDef和StringDef注解; 资 阅读全文
posted @ 2017-12-25 11:48 linghu_java 阅读(2815) 评论(0) 推荐(0) 编辑
摘要: 下面是最早从事android开发的时候写的网络请求的代码,简单高效,对于理解http请求有帮助。直接上代码,不用解释,因为非常简单。 1. application/x-www-form-urlencoded 最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctyp 阅读全文
posted @ 2017-12-20 21:39 linghu_java 阅读(1486) 评论(0) 推荐(0) 编辑
摘要: Type是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java中所有类型的“爹”;其中,“所有类型”的描述尤为值得关注。它并不是我们平常工作中经常使用的 int、String、List、Map等数据类型,而是从Java语言角度来说,对基本类型、引用类型向上的抽象; Type体系中类 阅读全文
posted @ 2017-12-19 21:46 linghu_java 阅读(23762) 评论(3) 推荐(13) 编辑
摘要: 概述 IntentService继承了Service并且是一个抽象类,使用它必须创建它的子类。IntentService可执行后台耗时的任务,当任务结束时它会自动停止。由于IntentService是一种服务,所以它的优先级会比普通线程的高,适合执行一些高优先级的后台任务,因为高优先级不容易被系统杀 阅读全文
posted @ 2017-12-14 19:45 linghu_java 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 为什么我们需要保存View的状态? 这个问题问的好!我坚信移动应用应该帮助你解决问题,而不是制造问题。 想象一下一个非常复杂的设置页面: 这并不是从一个移动应用的截图(这不是典型的win32程序吗。。),但是适合用于说明我们的问题: 这里有非常多的文字输入控件,多选框,开关(switch)等等,你花 阅读全文
posted @ 2017-12-13 14:47 linghu_java 阅读(963) 评论(0) 推荐(0) 编辑
摘要: ANR定义与分类 ANR(Application Not Responding):应用程序无响应,是Android中AMS与WMS监测应用响应超时的表现; 我们应用开发中常见的ANR主要有如下几类: 按键触摸事件派发超时ANR,一般阈值为5s(设置中开启ANR弹窗,默认有事件派发才会触发弹框ANR) 阅读全文
posted @ 2017-10-12 10:51 linghu_java 阅读(385) 评论(0) 推荐(0) 编辑
摘要: android中自定义控件,自己绘制文字canvas.drawText()的时候,怎样才能让文字垂直居中那? drawText()的方法说明 也就是使用paint画笔在(X,Y)处进行绘制,X为横向坐标的起始位置,Y为纵向坐标的文本的baseline的坐标值。 首先必须了解下文本的五线谱 其中: a 阅读全文
posted @ 2017-09-21 16:31 linghu_java 阅读(4484) 评论(0) 推荐(1) 编辑
摘要: Activity转场动画 先介绍个动画的好例子:https://github.com/lgvalle/Material-Animations Activity的转场动画是通过overridePendingTransition(int enterAnim, int exitAnim)实现的。 这个方法 阅读全文
posted @ 2017-07-21 14:20 linghu_java 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://www.jianshu.com/p/650c3fd7e6ab 一、 LinearLayout的属性和用法 LinearLayout对于开发来说,是使用最常用的布局控件之一,但是对于LinearLayout我们究竟有多了解呢?最近在看LinearLayout的源码,看源码过程中发 阅读全文
posted @ 2017-07-14 15:56 linghu_java 阅读(1471) 评论(0) 推荐(0) 编辑
摘要: 阅读目录 前言 Unsafe类的作用 获取Unsafe对象 Unsafe类中的API 阅读目录 前言 Unsafe类的作用 获取Unsafe对象 Unsafe类中的API 前言 以下sun.misc.Unsafe源码和demo基于jdk1.7; 最近在看J.U.C里的源码,很多都用到了sun.mis 阅读全文
posted @ 2017-07-14 15:06 linghu_java 阅读(754) 评论(0) 推荐(0) 编辑
摘要: 1. 初识Bitmap Bitmap是一个final类,因此不能被继承。Bitmap只有一个构造方法,且该构造方法是没有任何访问权限修饰符修饰,也就是说该构造方法是friendly,但是谷歌称Bitmap的构造方法是private(私有的),感觉有点不严谨。不管怎样,一般情况下,我们不能通过构造方法 阅读全文
posted @ 2017-07-10 11:15 linghu_java 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 一、概述 保证系统流畅度,也就是保证系统能连续不间断地提供每秒60帧的运行状态。当出现掉帧时(也可称为Jank),需要知道当前整个系统所处的状态,systrace便是最佳的选择,它能手机检测Android系统各个组件随着时间的运行状态,并能提示该如何有效地修复问题,接下来说说systrace如何使用 阅读全文
posted @ 2017-07-05 16:19 linghu_java 阅读(1974) 评论(0) 推荐(0) 编辑
摘要: 先说下android的classloader Android中的ClassLoader与Java有些不同,Android中ClassLoader加载的是dex文件,而Java中加载的是jar文件.相同的是两者都采用了双亲委派模型.ClassLoader中loadClass函数体现了这个模型: 其中f 阅读全文
posted @ 2017-04-28 15:19 linghu_java 阅读(399) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-04-27 11:53 linghu_java 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 如果你用 apktoool 反编译过 apk 就知道,反编译后res/values 下有一个 public.xml 文件,内容如图 这个东西有什么用呢? 先从如何使用资源 ID 开始,在开发中我们通常使用 Resources.getXXX(resid) 来获取某个资源,传入的是 ID 这个 ID 定 阅读全文
posted @ 2017-04-27 09:53 linghu_java 阅读(1745) 评论(0) 推荐(0) 编辑
摘要: 一、android:clipChildren属性 效果图 看到这个图时你可以先想想如果是你,你怎么实现这个效果。马上想到用RelativeLayout?NO,NO,NO,,, 实现代码 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns 阅读全文
posted @ 2017-04-18 15:50 linghu_java 阅读(273) 评论(0) 推荐(0) 编辑
摘要: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" 阅读全文
posted @ 2017-04-08 15:51 linghu_java 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 一、简介 setColorFilter(ColorFilter filter) 设置颜色过滤,这个方法需要我们传入一个ColorFilter参数同样也会返回一个ColorFilter实例。我们在setColorFilter(ColorFilter filter)的时候可以直接传入ColorMatri 阅读全文
posted @ 2017-04-08 15:42 linghu_java 阅读(644) 评论(0) 推荐(0) 编辑
摘要: 我们可以通过Paint中大量的setter方法来为画笔设置属性: 这些属性大多我们都可以见名知意,很好理解,即便如此,哥还是带大家过一遍逐个剖析其用法,其中会不定穿插各种绘图类比如Canvas、Xfermode、ColorFilter等等的用法。 set(Paint src) 顾名思义为当前画笔设置 阅读全文
posted @ 2017-04-08 15:33 linghu_java 阅读(3215) 评论(0) 推荐(1) 编辑
摘要: 一、概述 作为一名开发者,相信对adb指令一定不会陌生。那么在手机连接adb后,可通过am命令做很多操作: (1) 拨打电话10086 adb shell am start -a android.intent.action.CALL -d tel:10086 (2) 打开网站www.gityuan. 阅读全文
posted @ 2017-03-29 15:48 linghu_java 阅读(1466) 评论(0) 推荐(0) 编辑
摘要: 叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。 关于滑动冲突 滑动冲突分类 滑动冲突,总的来说就是两类。 同方向滑动冲突比如ScrollView嵌套ListView,或者是S 阅读全文
posted @ 2017-02-16 10:01 linghu_java 阅读(1982) 评论(0) 推荐(0) 编辑
摘要: 伴随着Android5.0的发布也更新了support-v7-appcompat 到V21,其中增加了ToolBar、recyclerview、cardview等控件。 Android5.0对改变APP样式下了不小的功夫,写法也和以前不一样了,下面先简单介绍一下colorAccent,colorPr 阅读全文
posted @ 2016-10-08 15:48 linghu_java 阅读(234) 评论(0) 推荐(0) 编辑
摘要: [java] view plain copy print? /* * 观察者模式 * 定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的 * 对象都得到通知并被自动更新 * * 当然,MVC只是Observer模式的一个实例。Obse 阅读全文
posted @ 2016-09-20 16:42 linghu_java 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 1. 功能介绍 1.1 EventBus EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,这里的事件可以理解为消息,本文中统一称为事件。事件传递既可用于 Android 四大组件间通讯,也可以用户异步线程和主线程间通讯等等。传统的事 阅读全文
posted @ 2016-09-19 20:06 linghu_java 阅读(1458) 评论(0) 推荐(0) 编辑
摘要: EventBus总结 1. 采用订阅者模式(观察者模式)设计的简化Activity、Fragment、threads、Service等之间通信的一种事件框架机制, 让代码简洁,耦合性更低。2. 主要核心内容:注册(事件订阅)函数、事件发布函数、反注册(取消订阅)函数。 EventBus 需要解决的问 阅读全文
posted @ 2016-09-19 19:49 linghu_java 阅读(3418) 评论(0) 推荐(0) 编辑