自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jaqen's Blog

微信公众号 JaqenAndroid,后台回复「1024」,送你特别推送。

  • 博客(53)
  • 收藏
  • 关注

原创 Android 面试题(8):抽象类和接口的区别?

抽象类和接口的区别1、抽象类可以提供成员方法的实现细节,而接口中只能存在 public 抽象方法;接口在 Java 长达 20 多年的时间中,都只能拥有抽象方法,直到 JDK1.8 才能拥有实现的方法(还必须用default关键字修饰)2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的;3、接口中不能含有构造器、静态代码块以及静...

2019-12-12 19:45:56 333 1

原创 Android 面试题(7):你对单例模式了解多少?

不管是在开发还是面试过程中,单例模式出现的频率都非常的高。但很多人对单例模式一知半解,单例模式的写法非常多,不同写法的区别很大,这篇文章的目的是带你深入学习一下单例模式。什么是单例模式单例模式是一种对象创建型模式,用来编写一个类,在整个应用系统中只能有该类的一个实例对象。UML 结构图:单例模式的三要点:1、某个类只能有一个实例2、必须自行创建这个实例3、必须自行向整个系统提供这个...

2019-11-27 08:39:07 321

原创 Android 面试题(6):谈谈你对 ANR 的了解?

什么是 ANRANR(Application Not responding),即应用程序无响应,简单来说,就是用户界面突然卡住,无法响应用户的操作(比如触摸事件)。Android 系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成 ANR。一般情况下,ANR 后会弹出一个提示框,告知用户当前应用无响应,用户可选择继续等待或者关闭应用。出...

2019-11-27 08:36:45 755

原创 Android 面试题(5):谈谈 Handler 机制和原理?

这一系列文章致力于为 Android 开发者查漏补缺,准备面试。所有文章首发于公众号「JaqenAndroid」,长期持续更新。由于笔者水平有限,总结的内容难免会出现错误,欢迎留言指出,大家一起学习、交流、进步。1、说一下 Handler 消息机制中涉及到哪些类,各自的功能是什么?Handler 主要用于跨线程通信。涉及MessageQueue/Message/Looper/Handl...

2019-11-16 20:53:35 2128

原创 Android 面试题(4):谈谈 Activity 的启动模式

这一系列文章致力于为 Android 开发者查漏补缺,面试准备。所有文章首发于公众号「JaqenAndroid」,长期持续更新。由于笔者水平有限,总结的答案难免会出现错误,欢迎留言指出,大家一起学习、交流、进步。众所周知,Activity 有 4 种启动模式,分别是:standard、singleTop、singleTask 和 singleInstance,它们控制了 Activity...

2019-11-06 22:01:09 297

原创 Android 面试题(3):回答一下什么是强、软、弱、虚引用以及它们之间的区别?

这一系列文章致力于为 Android 开发者查漏补缺,面试准备。所有文章首发于公众号「JaqenAndroid」,长期持续更新。由于笔者水平有限,总结的答案难免会出现错误,欢迎留言指出,大家一起学习、交流、进步。从 JDK1.2 版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1、强引用(Stron...

2019-11-03 22:28:07 309

原创 Android面试题(2):一般什么情况下会导致内存泄漏问题?

这一系列文章致力于为 Android 开发者查漏补缺,面试准备。所有文章首发于公众号「JaqenAndroid」,长期持续更新。由于笔者水平有限,总结的答案难免会出现错误,欢迎留言指出,大家一起学习、交流、进步。内存泄漏也是面试常见问题,主要可以考察面试者是否了解内存泄漏,工作中是如何排查解决内存泄漏问题,还可以延伸考察 Java 内存回收机制,Java 中对象的引用方式等等。这篇文章...

2019-11-03 22:26:53 546

原创 Android 面试题(1):使用 Handler 时如何有效地避免内存泄漏问题?

这一系列文章致力于为 Android 开发者查漏补缺,面试准备。所有文章首发于公众号「JaqenAndroid」,长期持续更新。由于笔者水平有限,总结的答案难免会出现错误,欢迎留言指出,大家一起学习、交流、进步。什么是内存泄漏?Java 中采用可达性分析算法判断一个对象是否可被回收。基本思路是这样的:通过一系列称为 “GC Roots” 的对象作为起始点,从这个节点向下搜索,搜索走...

2019-11-03 22:22:36 332

原创 Ubuntu 下 Android Studio 安装与配置

本文主要记录一下 Ubuntu 环境下 Android Studio 的安装和配置,方便查找使用。Android Studio 安装Android Studio 下载地址:https://developer.android.com/studio下载后,直接解压即可。然后进入 /android-studio/bin/ 文件下,会看到一个studio.sh的执行文件。终端命令进入 /an...

2019-10-15 18:54:48 353

原创 ijkplayer 编译实践

记录 ijkplayer 的编译过程,以及遇到的问题,有需要的朋友可以参考。编译环境Linux 环境由于主机是 Windows 系统,所以使用 VMware 安装了 Ubuntu 18.0.4 系统。VMware 安装 Ubuntu 系统的安装步骤网上非常多,这篇文章比较详细,没有经验的可以参考。https://zhuanlan.zhihu.com/p/38797088Android ...

2019-10-15 18:53:03 178

原创 韭菜的自我修养

近来读到李笑来老师的一本书,光书名就很有意思,叫做《韭菜的自我修养》。李笑来不亏是曾经当过名师的人,整本书的内容浅显易懂,可读性很高。非常适合大多数新入门的投资者好好读读。我挑重点概要总结了一些精要,和你们分享下。什么是韭菜?书中一开始的定义是:“在交易市场中没赚到钱甚至赔钱的势单力薄的散户”,他们一般是缺乏基本的阅读能力,比如购买所有的产品都不会去看说明书的人,他们拒绝学习,拿来主义,伸...

2019-10-12 20:13:37 273

原创 如何使用 Python 爬取微信公众号文章

我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章。但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦。于是便想着能不能把某个公众号所有的文章都保存下来,这样就很方便自己阅读历史文章了。话不多说,下面我就介绍如何使用 Python 爬取微信公众号所有文章的。主要有以下步骤:1 使用 Fiddler 抓取公众号...

2019-10-12 20:03:36 312

原创 Java 内存分配和回收策略

Java 内存分配和回收策略

2019-01-31 19:44:13 254

原创 JVM 安全点介绍

JVM 安全点介绍

2019-01-20 17:29:10 837

原创 垃圾收集算法有哪些?

垃圾收集算法有哪些?

2019-01-17 20:18:08 249

原创 Java 对象的自我救赎

Java 对象的自我救赎

2019-01-16 10:33:23 236

原创 JVM 中的内存溢出

内存溢出,通俗一点,就是 JVM 内存不足了,没有空闲内存,并且垃圾收集器也无法提供更多内存。这里的意思是说,通常在抛出 OutOfMemoryError 之前,垃圾收集器会被触发,尽其所能去清理空间。但也不是在所有情况下垃圾回收器都会被触发,比如分配了一个大对象,超过了堆的最大值,JVM 可能判断出垃圾收集并不能解决这个问题,直接抛出 OutOfMemoryError 。在 JVM 内存结...

2019-01-13 18:19:26 341

原创 JVM 内存结构

1、程序计数器Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现,所以确定的时刻一个处理器只会执行一个线程中的指令。为了线程切换后能恢复到正确的执行位置,每个线程都需要一个独立的程序计数器,用于记录线程所执行字节码指令的地址。2、虚拟机栈虚拟机栈是线程私有的。每个方法执行时会创建一个帧栈,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。当方法调用时,栈帧入栈...

2019-01-13 18:17:58 185

原创 JVM 中如何判断对象可以被回收

JVM 的垃圾回收器主要关注的是堆上创建的实例对象,在每次对这些对象进行回收前,需要确定哪些对象是可以去进行回收的。主要有下面两种方法。引用计数算法给对象添加一个引用计数器,当有一个地方引用它,计数器值加 1;当引用失效时,计数器值减 1。任何时刻计数器值为 0 表示这个对象可以被回收了。优点:判断效率高,实现简单。不足之处:难以解决对象之间相互循环引用的问题。比如:public...

2019-01-13 18:16:15 608

原创 我的 2018 年终总结

水电费水电费

2019-01-01 12:38:29 513

原创 Android 音视频学习资源汇总

1、Android 音视频开发入门指南 :音视频学习思路,一系列学习任务。2、Android 音视频开发学习思路:音视频学习路径,教程。3、《雷霄骅的专栏》:http://blog.csdn.net/leixiaohua10204、《Jhuster的专栏》:http://blog.51cto.com/ticktick5、《FFMPEG Tips》:http://ticktick.blog....

2018-12-12 22:16:37 737

原创 达克效应

达克效应(英语:D-K effect),全称为邓宁-克鲁格效应(英语:Dunning–Kruger effect),是一种认知偏差,能力欠缺的人有一种虚幻的自我优越感,错误地认为自己比真实情况更加优秀。简言之即:庸人容易因欠缺自知之明而自我膨胀。Kruger和Dunning将其归咎于元认知上的缺陷,能力欠缺的人无法认识到自身的无能,不能准确评估自身的能力。他们的研究还表明,反之,非常能干的人会...

2018-12-05 22:40:41 3463

原创 Android 8.0 应用保活实践

虽然我也觉得强行保活应用挺不厚道的,但是没办法,为了完成需求。一开始尝试的方案是 Android 5.0 后系统提供的 JobScheduler,能够预先设置条件,达到条件时自动启动 JobService,在 Android 8.0 以下都能很愉快的使用。但是在华为的 Android 8.0 上,当应用被杀后,JobService 就不能被系统调用了。于是采取了双进程服务绑定方式,实现了应用保...

2018-12-02 20:56:51 6292 2

原创 经济机器是怎样运行的?

最近看到的一个视频,是大师级人物瑞达利欧自己的宏观经济框架,三十分钟解释了经济机器是怎样运行的,通俗易懂。视频地址:https://www.youtube.com/watch?v=rFV7wdEX-Mo以下是个人总结的要点,结合视频看,效果更佳。经济是由几个简单的零部件和无数次重复的简单交易组成,这些交易首先由人的天性所驱动,因而形成了三股主要的经济动力。1、生产率的提高2、短期债务周期...

2018-10-17 21:37:30 2284

原创 Android Clean 架构

Clean 一般是指,代码以洋葱的形状依据一定的依赖规则被划分为多层:内层对于外层一无所知。这就意味着依赖只能由外向内。Clean 架构的准则:架构独立。架构不依赖于一些满载功能的软件库。可测试性。业务规则可以在没有 UI、数据库等外部元素的情况下完成测试。UI的独立性。在不改变系统其余部分的情况下完成UI的简易修改。数据库的独立性。业务规则不绑定数据库,可以随意更换数据库的实现。...

2018-10-17 21:36:27 2017

原创 Android 加固技术调研

第一代加固第一代加固原理是基于 Dex 加载器的加固技术。基本步骤1、从 Apk 文件中获取原始的 dex 文件。2、对原始的 dex 文件进行加密,并将加密后的 dex 文件存放在 asset 目录。3、用脱壳 dex 文件替换原始 apk 文件的 dex 文件。脱壳 dex 文件的作用主要有两个:一是解密加密后的 dex 文件,二是动态加载解密后的 dex 文件。4、修改清单文件...

2018-10-17 21:35:01 930

原创 Android事件分发机制

事件分发流程图1、当 UI 主线程收到触摸 input 事件,经过一系列处理,最终会走到 DecorView 的 dispatchTouchEvent 方法。@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) { final Window.Callback cb = mWindow.getCallback(); ...

2018-10-10 19:57:19 121

原创 因代码规范导致枪击案,这样黑程序员不太好吧 。

这两天刷遍朋友圈的一遍热文,相信很多人都转发了,顺便又调侃了下程序员。在文章评论区作者给了原文链接。https://www.theepochtimes.com/middleton-shooting-4-injured-at-wts-paradigm-office-building-in-wisconsin_2665307.html我特地去看了一下,然后感觉真的被侮辱了一番。我相信作者的英语应...

2018-09-23 21:56:13 812 1

原创 Java反射基础

最近在调研 Android 应用加固方案,涉及大量反射技术,因此趁这个机会总结下 Java 反射的一些知识。什么是反射?反射是 Java 语言提供的一种基本功能。通过反射我们可以在运行时动态地操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造函数,甚至可以在运行时修改类定义。基本使用方法反射的主要步骤包括:获取目标类型的 Class 对...

2018-09-13 22:20:40 124

原创 String、StringBuilder和StringBuffer

在之前的文章 Java 中 String 类为什么要设计成不可变的? 中对 String 的特性已经作了总结。这篇文章主要介绍另外两个常用的类 StringBuilder 和 StringBuffer 的特性。我们知道 String 是不可变的 (Immutable),字符串的操作会产生新对象,消耗内存。为此,JDK 提供了 StringBuffer 和 StringBuilder 两个类。S...

2018-09-09 22:15:17 119

原创 Java的强引用,软引用,弱引用,虚引用及其使用场景

从 JDK1.2 版本开始,Java 把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1、强引用(Strong Reference)强引用就是我们经常使用的引用,其写法如下:Object o = new Object();只要还有强引用指向一个对象,垃圾收集器就不会回收这个...

2018-09-04 23:06:14 12043 13

原创 Java 中 String 类为什么要设计成不可变的?

String 是 Java 中不可变的类,所以一旦被实例化就无法修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。本文总结下 String 类设计成不可变的原因及好处,以及 String 类是如何设计成不可变的。String 类设计成不可变的原因及好处?其实好处就是原因,String 设计成不可变,主要是从性能和安全两方面考虑。1、常量池的需要这个方面很好理解,Java 中的字符串...

2018-09-02 21:14:36 335

原创 Android Studio 插件推荐一

工欲善其事,必先利其器。接下来我将推荐一些好用的 Android Studio 插件,这些插件能够帮助我们提高开发效率,让我们可以把更多宝贵的时间投入到真正的开发当中。首先推荐两款界面插件,毕竟每天都得面对着 Android Studio,好的界面让心情更加愉悦。1、CodeGlance 直译过来就是代码一瞥,其实就是帮我们快速浏览及定位代码的工具。直接看效果。 2、Mat...

2018-08-15 22:41:04 284

原创 谈谈认知与知识

我们先看看维基百科是怎么解释的。 知识是对某个主题确信的认识,并且这些认识拥有潜在的能力为特定目的而使用。意指透过经验或联想,而能够熟悉进而了解某件事情;这种事实或状态就称为知识,其包括认识或了解某种科学、艺术或技巧。因此知识具备三个特征:被证实的(justified)、真的(true)和被相信的(believed )。 认知或认识(英语:cognition)在心理学中是指通...

2018-08-07 22:35:33 1007

原创 Android RxJava + Retrofit + Dagger2 + MVP

如何即快速掌握 Android RxJava + Retrofit + Dagger2 + MVP,以下是个人认为值得学习的开源项目、库以及技术教程,基本涵盖了当前 Android 开发中常用的主流技术框架,适合没有项目经验的同学,能够帮助你快速提高项目开发能力、掌握前沿技术。值得学习的项目Awesome-WanAndroid :基于Material Design + MVP + Rxj...

2018-08-05 19:55:34 716

原创 印象笔记终于支持 Markdown 了

2018 年 8 月 3 日,印象笔记举办六周年庆祝活动,印象笔记官方现场展示了新版 App,新增专为中国用户开发的 Markdown 、电脑端密码锁、Widget 剪藏功能。对于广大印象笔记的用户来说,其中最为感动的一定是印象笔记终于支持 Markdown 了,这个功能真是让用户等得太辛苦了。Evernote 是 2007 年创立的,最开始国内用户都是用的国际版,2012 年有了印象...

2018-08-05 08:44:36 5062 1

原创 微信公众号文字该如何排版?

文字排版是一篇文章展现给读者的第一印象,不知道大家怎么看,反正我每次看到排版错乱的文章,往下读的兴趣直接减少了一半。自从在微信公众平台写文章,发现平台自带编辑器功能确实很弱,尤其对于技术文章,其排版更是惨不忍睹。所以光用它默认的功能,是很难做出优秀的排版的。所以我一直在寻找好的排版工具。网上有很多公司自己开发了微信排版器,基本使用方法差不多,即用户选择内容类型,然后选择一种样式,编辑器里就...

2018-07-30 19:22:27 6408

原创 Android Handler 消息处理机制

日常开发中,一般不会在子线程中直接进行 UI 操作,大部分采取的办法是创建 Message 对象,然后借助 Handler 发送出去,再在 Handler 的 handlerMessage() 方法中获取 Message 对象,进行一系列的 UI 操作。Handler 负责发送 Message, 又负责处理 Message, 其中经历了什么 ,需要从源码中一探究竟。首先看 Handler 的构...

2018-07-29 15:02:39 177

原创 习惯一定是好的吗?

从工作以来,一直在用 Excel 作研发计划,每次都需要一边列任务,一边看日历排周期,确实挺麻烦的。但时间久了之后也就习惯了。最近一些日子,项目组中突然流行使用微软的 Project 软件做计划。虽然我觉得微软的软件做得确实很难看难用,但是在排计划方面确实要比 Excel 好用些。习惯了 Excel 之后,使用这个工具一时也是非常不习惯,第一次使用的时候,用不好就直接放弃了。都是因为被习惯绑架...

2018-07-26 23:10:52 154

原创 最好用的 Markdown 编辑器

Markdown ,相信没有人不知道了吧,这里不多介绍了。如果还没听过,强烈建议百度一下,五分钟即可上手,包你会了之后就不想zai用 Office Word 写文档了。今天主要推荐的是我一直在用的 Markdown 编辑器「Typora」。网站的首页是这样的,一看就是很清新文艺啊。很多 Markdown 编辑器都是分两屏,左边编辑,右边显示文档效果,而 Typora 厉害了,编辑和...

2018-07-25 22:59:57 5108

空空如也

空空如也

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

TA关注的人

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