自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (2)
  • 论坛 (1)
  • 收藏
  • 关注

原创 一个程序员的日常书单(更新于2018/10/7)

今日元宵节,祝各位节日快乐.本想谈谈读书这个话题,想来想起觉得无从下手,就此作罢.毕业这几年,一直不敢放松,在现代这个互联网时代更加认同萧抡谓的”一日不读书,胸臆无佳想;一月不读书,耳目失清爽”.如果非要给自己找个读书的理由的话,这句诗就是最好的理由:”胸藏文墨虚若骨,腹有诗书气自华”.

2017-02-11 23:59:51 19760 19

原创 OpenJDK系列(四):从JVM谈C/C++编译流程

编译器的这点事gcc和g++还傻傻分不清楚?clang与gcc有什么关系?llvm又是什么?下面将对一些常见的名词进行说明以免在后续阅读中感到疑惑.gcc和g++gcc 即 GNU C Compiler, 刚开始它就是一个c编译器项目。后来越来越多的其他语言编译器也被添加到这个项目中,如用于编译c++代码的cc1plus.此时的gcc代表的是一堆编译器的集合(the GNU Compiler...

2018-09-29 23:19:20 1420

原创 OpenJDK系列(三):VM对CAS的设计与实现

CAS简介CAS即Compare-and-Swap的缩写,即比较并交换,它是一种实现乐观锁的技术.在CAS中包含三个操作数:V: 需要读写的内存位置,从java角度你可以把它当成一个变量A: 预期值,也就是要进行比较的值B: 拟写入的新值当且仅当V的值等于A时,CAS才会通过原子方式用新值B来更新V的值,否则不会执行任何操作.无论位置V的值是否等于A,最终都会返回V原有的值.换...

2018-09-10 16:37:18 650

原创 OpenJDK系列(二):从ClassFileParser谈Endian

EndianEndian即所谓的字节序,通俗点说就是多于一个类型的数据在内存中存取的顺序目前有两种字节序.Big-Endian: 也称为大端序:高位字节存放在内存的低地址端,低位字节存放在内存的高地址端.Little-Endian: 也称为小端序:高位字节存放在内存的高地址端,低位字节存放在内存的低地址端.Endian与内存单元对于0x12345678而言,1234是高四...

2018-09-05 17:03:29 836

原创 TensorFlow学习笔记(一)

最近致力于深度学习,希望在移动领域能够找出更多的应用点.其中TensorFlow作为目前的一个热点值得我们重点关注.

2017-05-12 23:15:49 40163 11

原创 Android应用优化指南

对我们技术从业者而言,很多时候时候不是我们不知道怎么做,而是不知道做什么?今天系统的总结自己关于如何对Android应用进行优化的一些经验,共计八个维度.

2017-03-16 18:24:32 11277 5

原创 Android 7.0应用冷启动流程分析

最近在为自己一部Moto G定制Rom,顺便重新读了一遍Android 7.0的相关源码,特此记录当做笔记.在开始正文之前,首先要明白冷启动和热启动.

2017-03-05 13:06:44 10205 2

原创 不一样的视角:从JVM内存模型谈线程安全

从内存模型谈线程安全

2017-02-28 00:40:38 7130 7

原创 Android 7.0系统启动流程分析

简单的分析Android 7.0系统启动流程

2017-02-27 00:31:06 11668 1

原创 求职与面试(一):Android必备

前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注https://github.com/closedevice/interview-about,我会不断的增加和修正相关问题的描述.

2017-02-26 12:35:55 17926 12

原创 Python多线程入门指南

一直懒得写Python相关的文章,恰好有天需要简单的给童鞋们讲点课,仓促之余就诞生了此文.今天本来准备全面的聊聊有关高性能并发这个话题来着,但是周末马上要来了啊.所以我就取了其中的一点来介绍,关于其他的方面,有兴趣的小伙伴可以和我交流.

2017-02-25 21:48:54 12499 6

原创 谈乱序执行和内存屏障

十多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代高级语言多提供了多线程并发技术,如果不深入下来,那么有些由多线程造成问题就很难排查和理解.

2017-02-22 19:21:15 19863 5

原创 求职与面试(一):Java必备

今天要谈的主题是关于求职.求职是在每个技术人员的生涯中都要经历多次,对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦.在跳槽季来临之前,特地做这个系列的文章,一方面帮助自己巩固下基础,另一方面也希望帮助想要换工作的朋友.

2017-02-19 23:07:51 45225 47

原创 来自Unix/Linux的编程启示录

写本文的最初灵感源于16年11月份我将工作环境切换到Mac OS上,其中一些使用"差异"让我开始对Unix/Linux中设计产生了浓厚的兴趣.虽然从13年开始使用redhat,再到后来一直使用的ubuntu,但却从来关注过这些,特此记录.

2017-02-08 04:46:00 6821 13

原创 年轻人谈独处和自律

这个话题有点老套,甚至是无聊.在开始写之前,我问自己:你还这么年轻,有什么资格谈独处和自律?想想未成仙前也论道,也就有了这篇不成熟的文章也,作为2016年的一个小结.

2017-01-05 22:21:24 9602 27

原创 拓展篇:注解处理器最佳实践

在基础篇中,我们介绍了什么是注解以及如何开发注解处理器,今天就来说说在开发编译时注解处理器中的那些最佳实践。

2016-12-31 19:25:29 7287 7

原创 基础篇:带你从头到尾玩转注解

一起玩转高端大气上档次的Annotation。要玩就玩的痛快,从头到位带你了解Annotation以及自己动手编写注解处理器。

2016-12-25 22:35:45 12134 7

原创 Android 开发:由模块化到组件化(一)

当你看到这的时候,想必心理一阵恶寒:模块化?组件化?到底是什么鬼?有啥区别.有这种感觉才是对的,模块化和组件化本质思想是一样的,都是"大化小",两者的目的都是为了重用和解耦,只是叫法不一样.如果非要说区别,那么可以认为模块化粒度更小,更侧重于重用,而组件化粒度稍大于模块,更侧重于业务解耦.

2016-12-15 01:43:15 56137 44

原创 随想录:开发一流Android SDK

目前更多开发者热衷于应用开发,极少数的开发者才有机会从事SDK开发工作,而市面上关于SDK开发介绍的文章少之又少,以至于让大家觉得SDK开发是相对比较难而且非常无聊的工作,今天我们就来简单的聊聊SDK开发的哪点事.

2016-12-10 13:59:32 36472 43

原创 打造RxJava生命周期管理框架RxLife

在前边RxJava实战技巧大全一文中,我们介绍了RxJava使用过程中常见的应用场景和可能遇到的问题,其中我们谈到利用RxLifeCycle来管理RxJava的生命周期,避免内存泄漏问题,今天自己动手打生命周期管理框RxLife来加深对RxJava的认识。

2016-11-04 01:30:22 14393 3

原创 漫谈Android 增量更新

在前几年,整体移动网络环境相比现在差很多,加之流量费用又相对较高,因此每当我们发布新版本的时候,一些用户升级并不是很积极,这就造成了新版本的升级率并不高。而google为了解决了这个问题,提出了Smart App Update,即增量更新(也叫做差分升级)。尽管现在网络环境有了很大的提升,但一个不争的事实就是应用越做越大,因此,增量更新在目前的仍然是一种解决APP更新包过大的有效方案。

2016-10-25 22:53:07 22352 12

原创 打造急速开发框架FastApp

在前面的文章中,我们介绍了开发过程容易出现的一些问题,今天我们就在此基础上打造自己急速开发框架(FastApp)。该框架旨在向你展示一个轻量级的应用的总体结构以及如何构建多Fragment应用,为了使他对所有的开发者都比较友好,我们返本溯源,抛弃“臃肿”的MVP及MVVM模式,而是继续沿用MVC的设计理念。

2016-10-13 20:29:57 7972 8

原创 RxJava实战技巧大全

这几天一直看《激荡三十年》,感觉非常不错。这篇文章本身并不想写,总觉得没什么含量,后面写着写着,发现其中的有些点还是非常有意思的,因此这篇文章的重点在rxjava使用场景说明及rxjava内存优化上。rxjava的使用场景更多的取决于我们所面临的业务以及当前rxjava的一些操作符是否提供了对业务的支持,而对于内存优化上,则是要求我们尽可能快的解除订阅关系。

2016-09-30 23:59:13 13288 7

原创 Retrofit响应数据及异常处理策略

今天我们来谈谈客户端对通讯协议的处理,主要分为三部分:约定响应数据格式,响应数据的自动映射以及错误处理三部分。由于数据协议采用json的居多,因此我们在此基础上进行说明。

2016-09-28 11:27:13 12199 11

原创 Retrofit中如何正确的使用https?

很多文章对客户端https的使用都是很模糊的,不但如此,有些开发者直接从网上拷贝一些使用https的“漏洞”代码,无形之中让客户端处在一种高风险的情况下。今天我们就对有关https使用的问题进行深入的探讨,希望能解决以往的困惑。对于https,需要了解其工作原理的可以参考https是如何工作的?,更多关于https的问题我会站在客户端的角度在后面陆陆续续的写出来。证书锁定 简介首先来说说什么是证书锁

2016-09-24 02:12:01 28160 11

翻译 https是如何工作的?

最近在看到这么一篇讲解Https原理的文章,语言精炼,通俗易懂,特地将其翻译下。

2016-09-20 17:26:50 9438 22

原创 Retrofit实现持久化Cookie的三种方案

在上一文中,我们提到retrofit 2.0中如何实现非持久化cookie的两种方案,但并未做过深的解释。 现在我们重点关注JavaNetCookieJar实现非持久化cookie背后的原理,最终找出实现Cookie持久化的三种方案。

2016-09-17 00:13:16 10637 5

原创 观战Retrofit开发中的哪点事

又是一年中秋佳节,祝各位中秋节快乐。今天我们来聊聊这个最近很火的网络请求库retrofit,在此基础上会延伸出一些列的知识点。

2016-09-15 21:32:39 7525 9

原创 深入理解Dalvik字节码指令及Smali文件

今天来介绍有关Davilk虚拟机相关的知识,首先便是介绍我们最关心的Davilk字节码相关知识,进而深入到Android逆向领域.之所以写这篇文章,是因为有姑娘要学习这,再加上网上的许多资料太过零散和片面,

2016-07-31 04:11:46 24520 13

原创 深入分析AIL语言及init.rc文件

init.rc简介init.rc文件由系统第一个启动的init程序进行解析.它由”Android Init Language”语言编写而成.init.rc文件可以在你android设备根目录下找到.还记得我们上次编译的Android源码么?如果你已经编译过源码了,那么可以在out/target/generic/root/目录下找到该文件.要想读懂init.rc文件,首先要掌握AIL语言

2016-07-21 01:22:02 4560

原创 从inotify机制说到FileObserver实现原理

有些情况下,我们难免需要监控一些文件的变化情况,这该如何实现呢?自然而然的我们会想要利用一个线程,每个一段时间便去看看文件的情况,这种方式本质上就是基于时间调度的轮训.虽然能够实现我们的需求,但是这种方式只适合文件经常变化的情况,其他情况下都非常低效,并且可能丢掉某些类型的变化,也就是说,这种方式无法实现实时的文件监控.

2016-07-14 03:01:02 4864 3

原创 深入分析PMS服务(一)

PMS服务即PackageManagerService,主要用来进行APK的管理任务.但是今天,我们并不直接分析PMS的源码,而是从一个工具类PackageParse说起.

2016-07-09 20:40:50 5358

原创 自己动手调试Android源码

在自己动手编译Android最新源码一文中,我们为自己编译了一份最新的Android源码.很多时候,我们编译源码的目的不仅仅是尝试一番,而是希望对其进行调试,并修改源码,看看其中一些关键机制的运行原理.比如你对AMS掌握不深,那么就来单独的调试一下;又或者是说你想看看launcher的实现原理,同样也可以自己动手调试.

2016-07-04 00:02:00 16054 13

原创 深入了解AccessibilityService

微信红包自打出世以来就极其受欢迎,抢红包插件可谓红极一时.今天,我们重新谈谈抢红包插件的哪些事儿.

2016-06-30 23:43:32 36247 31

原创 自己动手编译最新Android源码及SDK(Ubuntu)

在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事.(俺认为,作为android developer人人都应该有一份自己Android源码,这样我们就可以随时对自己有疑惑的地方通过亲手调试来加强理解).本文适用于以下以下编译途径: Ubuntu 16.04上编译Android 6.0.x 及以上版本.

2016-06-20 01:54:30 52538 39

原创 (心态篇)空杯心态,一个程序员的自我修炼

原计划端午假期回家清静一下,反思这半年的得与失,但是因为自己的失误导致没赶上回家的高铁,此外,最近心态略有自满,相比去年而言,少了点勤奋,多了些懒惰和抱怨,今日午后昏睡中觉醒,脑海中只有”空杯心态”这四个字.

2016-06-11 12:03:41 3281 8

原创 Android Studio代码调试大全

Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手。作为开发者,调试并发现bug,进而解决,可是我们的看家本领。正所谓,工欲善其事必先利其器,和其他开发工具一样,如Eclipse、Idea,Android Studio也为我们提供了强大的调试技巧,今天我们就来看看Android Studio中有关调试的技巧。

2016-06-02 02:21:20 45694 16

原创 深入了解LOD

在从类关系说起一文中,我们谈到了几种类与类之间的关系,在此来深入一下对象与对象之间的通信问题.为什么要深入对象与对象之间的通信呢,其根本在于,系统中不会存在唯一的对象,不同的对象势必要相互进行交流.

2016-05-22 16:31:33 9895

原创 浅淡ISP

接口做作为面向抽象编程中的一环,有无可替代的地位。那么,什么样的接口设计才算是好的设计,或者说如何设计一个好的接口?就接口的设计而言,我认为”接口隔离(简称ISP)”原则已经足够.

2016-05-17 00:20:14 3532 1

原创 从类关系说起

温故知新,最近更多的是研究和开发各种类库,对设计的是有些感触.以前在大学的时候,虽然知道,但是总归是欠缺经验的,现在,我尝试用最通俗易懂的方式说出来.所谓的设计不正是采用恰当的方式组织雷类关系么?因此谈设计我认为首先要从类之间的关系开始说起.

2016-05-07 19:43:45 3975 3

自定义开关按钮

Android开发中自定义控件示例。简单易懂。

2014-12-04

twitter数据采集实例-最初

用来展示twitter数据采集,当初的事例.

2016-03-03

江湖人称小白哥的留言板

发表于 2020-01-02 最后回复 2020-03-10

空空如也

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

TA关注的人 TA的粉丝

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