5 TellH

尚未进行身份认证

我要认证

Keep passion! Fuel with code!

等级
TA的排名 4w+

深入理解JVM方法调用的内部机制

我们都知道,Java源代码需要编译成字节码文件,由JVM解释执行,而方法调用可以说是很常见的操作。Java不同于C++,Java中的实例方法默认是虚方法,因此父类引用调用被子类覆盖的方法时能体现多态性。下面我们来看看JVM是如何完成方法调用操作并实现动态绑定的。栈帧结构为了能高效地管理程序方法调用,有条不紊地进行嵌套的方法调用和方法返回,JVM维护了一个栈结构,称为虚拟机方法栈(这里没考虑Nativ

2017-08-18 15:11:42

一起来造一个RxJava,揭秘RxJava的实现原理

RxJava是一个神奇的框架,用法很简单,但内部实现有点复杂,代码逻辑有点绕。我读源码时,确实有点似懂非懂的感觉。网上关于RxJava源码分析的文章,源码贴了一大堆,代码逻辑绕来绕去的,让人看得云里雾里的。既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能、兼容性、扩展性有关的代码剔除,留下核心代码带大家揭秘RxJava的实现原理。什么是响应式编程首先,我们需要明确,

2017-05-10 15:33:46

你真的懂Java泛型吗

泛型实现参数化类型的概念,使代码可以应用于多种类型,解除类或方法与所使用的类型之间的约束。在JDK 1.5开始引入了泛型,但Java实现泛型的方式与C++或C#差异很大。在平常写代码用到泛型时,仿佛一切都来得如此理所当然。但其实Java泛型还是有挺多tricky的东西的,编译器在背后为我们做了很多事。下面我们来看看有关Java泛型容易忽视的点。

2017-05-07 11:40:43

select/poll/epoll到底是什么一回事

面试题:说说select/poll/epoll的区别。 这是面试后台开发时的高频面试题,属于网络编程和IO那一块的知识。Android里面的Handler消息处理机制的底层实现就用到了epoll。

2017-05-04 14:08:47

浅谈Java反射的实现原理

Java反射的实现原理

2017-04-30 10:54:54

从字节码角度理解JVM异常处理机制的原理

前几天看到一条阿里巴巴的面试题:你了解try-catch块的实现原理吗? 我服,阿里的面试题就是有深度啊。要答好这一题,我觉得需要反编译一下.java源文件,因为字节码面前了无秘密。

2017-04-28 20:38:57

ThreadPoolExecutor源码初探

ThreadPoolExecutor线程池

2017-03-28 22:02:07

图解Activity的启动过程

由于Activity的启动涉及大量IPC和Binder方面的知识,因此了解这方面的知识后再来看Activity启动的相关源码可能不会那么吃力。

2017-02-26 17:13:17

图解+源代码 全面理解Android View事件分发

View事件分发是Android里面非常重要的知识点,我查阅了很多资料,新建demo分析Log日志加以验证,总结成这篇博文。宏观的角度View 事件分发涉及到三种角色,三个方法,三种重点事件,分别是Activity,ViewGroup,View;dispatchTouchEvent, onInterceptTouchEvent,onTouchEvent和ACTION_DOWN,ACTION_MOVE

2017-02-21 21:35:52

浅析AIDL的使用和工作原理

AIDL是一种接口定义语言,用于生成可在Android设备上两个进程之间进行进程间通信(IPC)的代码。AIDL的使用新建一个aidl文件,定义进程间通信的接口// IStudentManager.aidlpackage com.tellh.androidart;// Declare any non-default types here with import statementsimpor

2017-02-14 15:41:25

正则表达式必知必会

正则表达式必知必会本文共有2571字,阅读耗费11分钟。本文首发于个人博客:http://tanlehua.top/posts/tech/others/learn-regex/

2016-10-06 15:21:54

消灭模板代码,自定义AndroidStudio文件模板(2)

在上一篇讲到的自定义AndroidStudio文件模板的方法,但这种方法虽然简单却只能一次生成一个文件。有没有方法能一键生成一套文件呢?

2016-08-13 12:53:37

消灭模板代码,自定义AndroidStudio文件模板(1)

Previously我们日常开发肯定会或多或少遇到写模板代码的时候,比如写Adapter、写单例类、写用Parcelable实现序列化的相关代码、写实现Mvp架构的相关接口等等。但作为一个追求优雅编码的人,我一直崇尚“Write the code you have to write ”,快速高效地开发。这系列文章将分享如何将AndroidStudio打造成消灭模板代码的利器。照葫芦画瓢当我们在工程中

2016-08-12 23:08:26

用最优雅的方式startActivity

相信很多人看到标题startActivity可能会轻蔑一笑,启动Activity不是Android开发里基础得不能再基础的内容吗? 但相信点进来的各位看官都是追求优雅编码的开发者:) 。我要用一个优雅的姿势,最小的代码来启动一个Activity。

2016-08-04 13:33:39

Huffman编码解压缩的通俗讲解

前言好久没写博客了,主要是各种事缠着,难以抽出时间。这两个月以来,由于项目需要,我也逼着自己学到了很多,什么java后台,web前端,还有万恶的OpenCV图形处理……,呵呵,全栈:( 。但对Android的学习我始终不肯放下。但是今天这篇博客不是关于Android的,而是算法的相关应用–哈夫曼压缩。这是数据结构与算法实验里面的一个项目,网上关于这方面的资料很多,但大多数博客都是随便讲讲然后扔下代码

2016-04-30 14:56:14

解读Google官方SwipeRefreshLayout控件源码,带你揭秘Android下拉刷新的实现原理

前言想必大家也发现,时下的很多App都应用了这个Google出品的SwipeRefreshLayout下拉刷新控件,它以Material Design风格、适用场景广泛,简单易用等特性而独步江湖。但在我们使用的过程中,不可避免地会发现一些bug,或者需要添加某些特性来满足需求。出现这些问题,最好的方法就是解读源码,理解它实现的原理,并且在理解源码的基础上修改源码,达成需求。然而不知为何,至今还没有一

2016-03-02 22:42:04

实现类似微信Viewpager-Fragment的惰性加载,lazy-loading

前言今天起床,拿起手机开机第一时间当然是打开微信了,左右滑动Viewpager,发现它使用了一种叫惰性加载,或者说懒加载(lazy-loading)的方式加载Viewpager中的Fragment。效果如图: 什么是lazy-loading呢?顾名思义就是在必要的时候才加载,否则不进行View的绘制和数据的加载。原因是Viewpager一次只会显示一个页卡,那么刚开始的时候,只需加载第一张Frag

2016-02-20 20:47:36

偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder

前言昨天开始接触江湖口碑很好的RecyclerView,事实上,我已经被她的强大所征服了!资源回收,数据绑定,布局显示,分割线,Item动画多个模块高度解耦,灵活优雅。其实,RecyclerView在使用上已经是相当简单了(个人觉得),但仍有很多代码是可以加以封装的。今天受简书上一篇博文的启发,作为写代码喜欢优(tou)雅(lan)的人,想到了一种封装方式,打造万能适配器,供大家食用。正统模式:pu

2016-02-15 21:56:07

判断Listview滑到顶部的最精准方案,解决Listview设置EmptyView与SwipeRefreshLayout冲突

故事发生的背景SwipeRefreshLayout是谷歌自家控件,提供下拉刷新的功能。然而这个控件简单易用的同时也有一个令人头疼的缺点,那就是它里面只能包含一个子View!有一天,需求来了,需要在为Listview添加EmptyView和下拉刷新,同时当显示EmptyView时也要求有下拉刷新。尝试与探索大家都知道,设置EmptyView需要把它放在一个容器内。这还不简单,SwipeRefreshL

2016-02-14 13:29:01

用全屏DialogFragment代替Activity,结合ViewPager展示图片

最近在知乎上看到一篇很不错的分享,关于Fragment的一些用法和开发经验,其中提倡用全屏的DialogFragment代替Activity处理一些特殊的场景,比如用户点击item触发打开一些内容详情页,相册点击小图片时会将图片全屏放大展示...等等的这些场景都可以考虑用全屏的DialogFragment来代替Activity来代替进行视图的展示。由于具体的代码逻辑非常简单,我就直接上代码了,注释

2016-01-26 23:28:02

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!