自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天道酬勤

业精于勤荒于嬉,行成于思毁于随--自勉

  • 博客(33)
  • 资源 (7)
  • 收藏
  • 关注

原创 Java类的加载过程

概述在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态链接这个特点实现的。例如,如果编写一个面向接口的应用程序,可以等到运行时再指定其实际的实现类:用户可以通过Java预定义和自定义类加载器,让一个本地的应用程序可以在运行时...

2020-03-07 16:50:03 480

原创 垃圾收集器如何判定对象可被回收

概述Java运行时内存会分为几个部分,这其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着对象死了吗在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还活着,哪些已经死了(不再被任何途径使用的对象)。引用计数算法书面解释:给对象添加一个引用计数器,每当有一个地方引用他时,计数器值加1,当引用失效...

2020-03-07 01:15:04 384

原创 一文搞懂Java内存回收算法

前言由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程。标记-清除最基础的收集算法就是"标记-清除"算法,算法分标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。之所以说他是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改...

2020-03-06 17:27:34 436

原创 Android面试题集锦(持续更新)

一、java熟练掌握java是很关键的,大公司不仅仅要求你会使用几个api,更多的是要你熟悉源码实现原理,甚至要你知道有哪些不足,怎么改进,还有一些java有关的一些算法,设计模式等等。(一)java基础面试知识点1) java中==和equals和hashCode的区别== 在用关系操作符 == 比较的是值本身;equals 比较两个对象的引用是否相等,即 是否指向同一个对象;hash...

2020-03-01 16:26:09 802

原创 这几年看过的书,都是经典书

2020-02-20 11:47:35 183

原创 Java 泛型

1. 概述什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来...

2018-05-30 21:06:07 235

翻译 Java序列化

序列化什么事序列化?简单来说,序列化就是将对象转化为字节流,反序列化就是字节流转化为对象。在Java中具体是如何来使用的呢?他是如何实现的?有什么优缺点?基本用法Serializable要让一个类支持序列化,只需要让这个类实现接口java.io.Serializable,Serializable没有定义任何方法,只是一个标记接口。声明实现了Serializable接口后,保存/读取对象就可以使用Ob

2018-02-23 17:38:03 164

转载 Java 日志规范

前言一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神。程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的。本文想讨论的是如何在Java程序里写好日志。一般来说日志分为两种:业务日志和异常日志,使用日志我们希望能达到以下目标: 1. 对程序运行情况的记录和监控; 2. 在必要时可详细了解程序内部的运行状态; 3. 对系统性能的影响尽

2017-11-09 18:23:59 1875

原创 安装apk解析包时出现错误(应用内更新)

最近遇到一个问题,有个别用户在应用内更新版本会出现解析包失败的情况,而且有的机型还是必现,浏览器下载就没问题,应用内就有问题,这就很让人费解,之前一直没关注过这种情况,但是用户就是上帝,有问题必须得解决啊!后来查了一些资料,发现想要解决这种情况还是有迹可循的,下面是总结的几种可能出现的情况,做了一些总结。1、JDK版本问题,比如jdk1.6环境下打包可正常安装,1.7环境打的包就不行解决办法是,需要

2017-07-24 10:59:05 61179 5

翻译 OKHttp源码解析

Android为我们提供了两种HTTP交互的方式:HttpURLConnection和Apache Http Client,虽然两者都支持HTTPS,流的上传和下载,配置超市,IPv6和连接池,已足够满足我们各种http请求的需求,但更高效的使用http可以让您的应用运行更快、更节省流量。而OKHttp库就是为此而生。OkHttp是一个高效的HTTP库:支持SPDY,共享同一个Socket来处理同

2017-06-27 18:29:53 386

翻译 Android代码规范

命名规范包命名规范采用反域名命名规则,包名全部小写,连续的单词只是简单地连接起来,不使用下划线,一级包名为com,二级包名为xxx(可以是公司域名或者个人命名),三级包名根据应用进行命名,四级包名为模块名或层级名。如:com.isa.crm.activity | com.isa.crm.adapterJAVA类命名规范采用大驼峰式命名法,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,

2016-08-05 13:47:47 382

翻译 Redux详解(一)

启示Redux由Flux演变而来,但受Elm的启发,避开了Flux的复杂性。 不管你有没有使用过他们,只需几分钟就能上手Redux。安装安装稳定版:npm install --save redux多数情况下,你还需要使用React绑定库和开发者工具npm install --save react-reduxnpm install --save-dev redux-devtools要点应用中所有的

2016-05-30 12:14:00 8827

翻译 重构--重新组织函数

重构手法中,很大一部分是对函数进行整理,使之更恰当地包装代码。几乎所有问题都源于过长的函数,这很讨厌,因为它们往往包含太多的信息,这些信息又被函数错综复杂的逻辑遮盖,不易鉴别。对付过长函数,一项重要的重构手法就是把一段代码从原先函数中提取出来,放进一个单独函数中。 提取函数最大的困难就是处理局部变量,而临时变量则是其中一个主要的困难源头。参数带来的问题比临时变量稍微少一些,前提是你不在函数内赋值给

2016-04-11 17:52:01 2569

翻译 重构--第一个案例

1.1 起点实例非常简单。这是一个影片出租店的程序,计算每一位顾客的消费金额并打印详单。操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租赁时间和影片类型算出费用。影片分为三类:普通片、儿童片和新片。除了计算费用,还要为常客计算积分,积分会根据租片种类是否为新片而有所不同。 我会逐一列出这些类的代码。Movie(影片)public class Movie { public stati

2016-03-28 16:56:14 3334

翻译 View的工作原理

1、初识ViewRoot和DecorView在正式介绍View的三大流程之前,我们必须先介绍一些基本概念,这样才能更好地理解View的Measuer、layout和draw的过程,本节主要介绍ViewRoot和DecorView的概念。ViewRoot对应于ViewRootImpl类,它是链接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在

2016-03-23 01:03:44 815

原创 Java线程

Java线程的概念和其他多数计算机语言不通,Java内置支持多线程编程。多线程程序包含两条或两条以上并发运行的部分。程序中每个这样的部分都叫一个线程,每个线程都有独立的执行路径。因此,多线程是多任务处理的一种特殊形式。 你一定知道多任务处理,因为他实际上被所有的现代操作系统所支持。然而,多任务处理有两种截然不同的类型:基于进程的和基于线程的。认识两者的不通是十分重要的、对很多读者,基于进程的多任务

2016-03-21 00:59:59 324

翻译 安卓App热补丁动态修复技术介绍

当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额: 重新打包App、测试、向各个应用

2016-03-15 19:25:08 486

翻译 View的绘制流程

View的绘制机制1、View树的绘制流程当Activity接收到焦点的时候,他会被请求绘制布局,该请求有Android Framework处理,绘制是从根节点开始,对布局树进行measure和draw。整个View树的绘制流程在ViewRoot.java类的performTraversals()函数展开,该函数所做的工作可简单概括为是否需要重新计算视图大小(measure)、是否需要重新安置视图的

2016-03-14 17:19:34 308

原创 Java反射Reflection

1. 了解Java中的反射1.1 什么是java的反射Java反射是可以让我们在运行时获取类的函数、属性、父类、接口等Class内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值,即使方法火属性是私有的也可以通过反射的形式调用,这种看透class的能力被成为内省,这种能力在框架开发中尤为重要。有些情况下,我们要使用的类在运行时才能确定,这个时候我

2016-03-14 14:55:38 689

原创 Java 注解(一)

注解,也被称为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。 注解是众多引入到Java SE5中的重要语言变化之一。他们可以提供用来完整的描述程序所需的信息,而这些信息无法用Java来表达的。

2016-03-12 01:03:09 699

原创 各种技术学习地址

各类技术的学习地址,持续更新中。。。最全java教程http://www.weixueyuan.net/java/rumen/?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1快速开始reacthttp://reactjs.cn/react/docs/getting-started

2016-03-11 16:09:23 491

转载 MVC,MVP 和 MVVM 的图示

复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。昨天晚上,我读了《Scaling Isomorphic Javascript Code》,突然意识到,它们的区别非常简单。我用几段话,就可以说清。

2016-02-29 19:31:28 317

转载 React Native探索(三):与 react-web 的融合

关于对于react-native在实际中的应用, facebook官方的说法是react-native是为多平台提供共同的开发方式,而不是说一份代码,多处使用。 然后一份代码能够多处使用还是很有意义的,我所了解到的已经在尝试做这件事情的:modularise-css-the-react-wayreact-stylenative-css现阶段大家都是在摸索

2015-11-04 18:38:23 520

转载 深入浅出React(二):React开发神器Webpack

编者按:自2013年Facebook发布以来,React吸引了越来越多的开发者,基于它的衍生技术,如React Native、React Canvas等也层出不穷。InfoQ精心策划“深入浅出React”系列文章,为读者剖析React开发的技术细节。上一篇我们对React有了一个总体的认识,在介绍其中的技术细节之前,我们首先来了解一下用于React开发和模块管理的主流工具Webpack。称

2015-11-04 18:34:39 2491

转载 深入浅出React(一):React的设计哲学 - 简单之美

编者按:自2013年Facebook发布以来,React吸引了越来越多的开发者,基于它的衍生技术,如React Native、React Canvas等也层出不穷。InfoQ精心策划“深入浅出React”系列文章,为读者剖析React开发的技术细节。React最初来自Facebook内部的广告系统项目,项目实施过程中前端开发遇到了巨大挑战,代码变得越来越臃肿且混乱不堪,难以维护。于是痛定思

2015-11-04 18:32:00 2334

转载 给 Android 开发者的 RxJava 详解

前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: R

2015-10-20 12:22:44 599

转载 Android性能优化典范第二季

Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的缩放,缓存,重用,PNG压缩,自定义View的性能,提升设置alpha之后View的渲染性能,以及Lint,StictMode等等工具的使用技巧。关于该课程的介绍可以查看该地址:https://w

2015-10-19 14:23:39 386

转载 Android性能优化典范第一季

2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。  主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。

2015-10-19 14:22:04 579

转载 开源项目Philm的MVP架构分析

前言最近一直在研究ChrisBannes的开源项目Philm,其整体架构是一套MVP的实现,因为自己也确实没有遇到过整个项目利用MVP搭建的架构,看到的更多是一些代码片段,这里就探讨Philm是如何结合Android实际问题来实现一种MVP架构,如有分析不准确的地方,欢迎指出,大家一起探讨。1.简单谈一谈MVP在无任何模式下的开发时,Activity与Model层的关系

2015-10-14 19:11:36 842

原创 用二进制去控制分享

案例:做分享功能,分享功能需求是这样的,可以分享到:自己的APP广场,自己的APP中的好友,群组、微信、朋友圈、微博、QQ,QQ空间八个平台。现在要根据服务器过来的参数判断哪些需要显示,哪些不用显示。比如参数名称叫int shareStatu。我以前的解决方案可能是:1代表群组显示,2代表群组和微信都显示按照值去判断。也可以每个都定义一个变量比如:isShowGroup boolean

2015-09-18 16:14:12 486

原创 模板方法模式--封装算法

有些人没有咖啡就活不下去,有些人离不开茶,两者共同的成分是什么?

2014-08-12 15:39:52 417

原创 详解JAVA多线程(一)

一个线程可以有四个状态:1、新(new),

2014-08-07 15:48:53 409

转载 一个成功的Git分支模型

本文译自 http://nvie.com/posts/a-successful-git-branching-model/ (by Vincent Driessen)–本文中我会展示一种开发模型,一年前该模型就已经被我用在所有的项目中(包括工作中的项目和私有项目),结果是非常成功的。我早就想为此写点东西,可直到现在才有时间。本文不会讲述任何项目的细节,只会涉及到分支策略和发布管理

2014-07-29 10:49:33 411

android性能优化

本文相信介i绍了什么是性能问题,如何解决和避免性能问题,希望能对你有所帮助

2014-08-15

android实现幻灯片效果

闲着无聊写了个小demo,实现了幻灯片效果

2012-02-28

android音乐播放器

功能比较完善!!完整的音乐播放器源码。供大家参考下

2012-02-17

仿iphone下拉刷新

看iphone上好多应用都有下拉刷新,觉得android应该也能实现就自己也写了一个

2012-02-17

仿机锋市场源码

仿机锋市场源码,包括滚动加载,下载刷新等等

2012-02-17

横向滑动的listView

自己写的一个可以横向滑动的listView

2012-02-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除