关于我


人生信条:学海无涯
书山有路勤为径,学海无涯苦作舟.
—《增广贤文》 韩愈
业精于勤荒于嬉,行成于思毁于随.
—《进学解》 韩愈

开此博客的目的:学习前人的经验,形成自己的知识体系和知识框架,总结自己的经验和教训,写出来之后,整理了自己的思路,印象会更加深刻。
都说好记性不如烂笔头,对于学习这件事,这句话的确很重要,平时的积累,积少成多,最后可以产生质变。
此博客会分析Java很基础的一些知识点,并且对Android的源码进行分析,搞清楚其基本原理和设计规则.
有人说过最好的理解代码原理方式是:Read The Fucking Source Code.所以在很多文章中会穿插很多的源码code(包括Android的源码和JDK的源码),从而使得文章显得很长,阅读起来需要有一定的耐心.
对源码的解析,相当于一个翻译过程,这个过程和英语等其他语言翻译有些类似,我们需要通过自己掌握的知识点,对作者写出来的代码进行解读,了解作者的意图和要达到的目的.
自我对编程的理解和学习一门日常交流的语言很像,只不过和我们打交流的是其他程序员或者计算机程序.

之前也是喜欢记录自己的经验和教训,主要是通过手写的方式,记录在纸质的笔记本上面。
这种方式存在以下缺点:

  • 纸质容易丢失,之前写了不下15个笔记本的内容,都是日常工作中点点滴滴的记录。现在那些本子都找不到了,^-^ ^-^.
  • 纸质的思路比较混乱,不成章法,都是一些琐碎,不连贯,写完之后,几乎没怎么花时间回头看,相当于无用功.

当然纸质的记录也有其优点:

  • 对于不连贯的思路,可以随时记下来.
  • 可以用来记录日程工作中的一些琐碎事情,用来提醒自己.

电子档的优点:

  • 不会丢失.只要有网络就行随时查看.当然,不会丢失的前提是,存储的网络服务器不会挂掉.
  • 每篇文章为了形成一个知识点的体系,会有一定的推敲.有利于对某个知识点研究的更加深入.
  • 雅俗共赏,^-^ ,不管写的好或者不好,都可以拿出来交流与探讨.
  • 提升自己的写作能力.

一方面此博客会记录个人生活和工作中的一些事情,同时也会收藏一些我认为高质量的技术文章。
还在继续补充和完善中,不足之处,还请留言指正交流。

编程语言:

说明:

  • 代表已经学习并使用过的编程语言
  • 代表正在学习的编程语言
  • Java
  • C
  • C++
  • Matlab
  • Shell
  • Html
  • JavaScript
  • Python
  • CSS
  • Json
  • Xml
  • MySQL
  • SQL Server
  • Bat
  • OpenCV
  • Kotlin
  • Go
  • Dart
  • LLVM
  • GCC
  • Clang
  • 汇编
  • NDK

Android框架:

RxJava
RxAndroid:RxAndroid是基于RxJava的扩展,用到了RxJava的包
RxJava学习

EventBus†
Retrofit†
Gson†
Glide†
Dagger2

Xposed 利用了Hook技术,开源且免费

  1. https://xposed.appkg.com/category/xposed
  2. 源码 : https://github.com/rovo89
  3. Native 侧代码: https://github.com/rovo89/Xposed
  4. Java 侧Framework代码:https://github.com/rovo89/XposedBridge
  5. ART 部分代码: https://github.com/rovo89/android_art

    [Android开发] Xposed 插件开发之一: Xposed入门
    深入理解Android之Xposed详解
    深入理解Android之Xposed–带图

    • [CydiaSubstrate] 收费

Google的框架

Flutter: Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。
FireBase:
Skia: C++实现的2D向量图形处理函数库,被Android/Flutter等框架使用
https://skia.googlesource.com/skia
https://github.com/google/skia
angle: Google推出C++语言实现的WebGL浏览器图像技术
https://chromium.googlesource.com/angle/angle https://github.com/google/angle
protobuf: Google推出的C++语言实现的一种序列化语言,在Android中已经有使用
https://github.com/google/protobuf
Go: Google推出的Go语言 API
https://github.com/google/go-github
https://golang.org/doc/contribute.html
Go on Android: Go语言写的Android…
https://github.com/golang/mobile
https://godoc.org/golang.org/x/mobile

Android知识点:

  • Service和IntentService

—————线程————–

  • Thread/Runable/线程池
  • ANR
  • RxJava
  • AsynTask
  • Handler/HandlerThread/Looper/Executor
  • Callble/Future
  • LMK:Low Memory kill
  • Android 内存管理机制

专业名词:

JIT模式:Just in time : 运行时编译 https://www.cnblogs.com/lyhero11/p/5080306.html
AOT模式:Ahead of time: 静态编译 https://blog.csdn.net/xtlisk/article/details/39099199
RxJava: 一种Android中线程异步方式 https://gank.io/post/560e15be2dca930e00da1083 使用到的设计模式:观察者模式
RxJava源码: https://github.com/ReactiveX/RxJava
RxAndroid源码:https://github.com/ReactiveX/RxAndroid RxAndroid是基于RxJava在Android中的扩展
EventBus:
Butterknife:
Serializable Java中的序列化方式
Parcelable Android中的序列化方式
AsyncTask
AIDL
Binder
**

代码规范

Android 命名规范 (提高代码可以读性)
代码规范和Android项目中的一些可用工具

开发利器(工具):

Emmagee [网易推出的一个实用的、便利的Android App性能测试工具}(https://github.com/NetEase/Emmagee)
GT 随身调,腾讯开发的,直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug Environment)。利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。
源码:https://github.com/Tencent/GT
ios2android 将IOS格式图片转换为Android
Octotree Chrome的插件工具,安装之后,浏览托管在Github上的项目,可看到左侧的树形结构,更方便查看代码,有点 IDE 的感觉 https://github.com/buunguyen/octotree
Android Launcher等图标在线生成工具 一个帮助你快速生成Android Launcher图标的在线生成工具
http://jgilfelt.github.io/AndroidAssetStudio

技术交流

美团技术交流

Log系统

log4

glog
C++实现的Google的log模块
glog 入门教程
glog使用教程

galgo
Android日志工具库,可以把log显示在屏幕上。 https://github.com/inaka/galgo

Puree
一个Log日志收集框架。 https://github.com/cookpad/puree-android

gologcat
Go语言编写的,彩色输出logcat https://github.com/airk000/gologcat

Android的Log系统

开源库&源码

Fire Eye 轻量级输入校验库
dex-method-counts 一个可以统计 .dex 文件中方法个数的命令行工具
smli2java 可以将smli文件转为java文件的工具

Android 开源项目源码解析

有趣的源码

Python adb
Python 语言实现的adb 和fastboot工具

Go USB
Go 语言实现的USB驱动

Kotlin fastboot
Kotlin 语言实现的fastboot命令

写简历

Android开发常用工具类

NDK 编程样例

Android踩坑历史

Android 源码设计模式分析

Android架构文章合集

使用过的工具软件:

• JDK
• JRE
• Tomcat
• AndroidStudio
• Android SDK(Android SoftWare Development Kit)
包含:DDMS(Delvik Debug Monitor Service)
UIAutoMonitorViewer
ADM(Android Device Monitor)
TraceView
Sqlite
• AVD:(Android Virtual Device)
• ADT
• Eclipse
• Visual Studio
• Atom
• IntelliJ IDEA
• PyCharm
• notepad++
• Sublime
• notepad++
• Source Insight
• OpenGork
• Matlab
• Cygwin
• Jenkins
• Dreamweaver
• Git
• SVN
• CVS
• beyondcompare
• Xshell
• Putty
• TeamViwer
• VirtualBox
• Vmware
• PhotoShop
• MicroSofte Office tool
• JIRA
• RedMine
• MarkDown
• FileZilla
• Wireshark
• Viso
• Snife
• TcpDump
• SSCOM
• minicom
• Understand
*

Android学习书籍推荐

1.《Android第一行源代码》 –郭霖 –初级–读过
偏应用,偏基础,2014年人民邮电出版社出版

2.《疯狂Android讲义》 –李刚 –初级—读过
偏应用,偏基础,2011年电子出版社出版

3.《Android开发艺术探索》 —任玉刚 –在读
偏原理,2015年电子工业出版社出版

4.《Android进阶之光》 —刘望舒 –待购买

5.《Android群英传》 —徐宜生 有电子版
偏原理,2015年电子工业出版社出版

6.《深入解析Android5.0系统》 —刘超 –在读
偏原理,2015年人民邮电出版社出版

7.《Android移动性能实战》 —-大部分都是实例,可以看下目录

8.《Android内核剖析》 —柯元旦 –在读第二遍
偏原理,2011年电子工业出版社出版

9.《Android源码设计模式解析与实战》 —何红辉、关爱民
设计模式,2015年人民邮电出版社

10.《Android系统源代码情景分析》 —罗升阳

11.《深入理解 Android 卷 II》

12.《Android 底层开发技术实战详解》–内核、移植和驱动
王振丽,2012年第一版电子工业出版社出版

13.《Linux设备驱动开发详解》基于最新的Linux4.0内核
宋宝华,2017年机械工业出版社出版

14.《Unix环境高级编程》第三版
戚正伟等,2014年人民邮电出版社出版

15.《Android 应用 安全防护和逆向分析》第二版
姜维,2018年机械工业出版社

Linux相关的英文书籍:

  1. Linux Kernel Development.
  2. Understanding the Linux Kernel.
  3. Linux Device Drivers.
  4. Linux内核源代码情景分析.

罗升阳推荐的两本Android的书:

  1. Professional Android Application Development.
  2. Google Android SDK开发范例大全

语言:
《深度探索C++对象模型》,对应的英文版是《Inside C+++ Object Model》
程序编译、链接、加载:
《链接器和加载器》,对应的英文版是《Linker and Loader》
《程序员的自我修养:链接、装载和库》
操作系统:
《Linux内核设计与实现》,对应的英文版是《Linux Kernel Development》
《深入理解Linux内核》,对应的英文版是《Understanding the Linux Kernel》
《深入Linux内核架构》,对应的英文版是《Professional Linux Kernel Architecture》
《Linux内核源代码情景分析》
网络:
《Linux网络体系结构:Linux内核中网络协议的设计与实现》,对应的英文版是《The Linux Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel》
《深入理解LINUX网络技术内幕》,对应的英文版是《 Understanding Linux Network Internals》
设备驱动:
《Linux设备驱动程序》,对应的英文版是《Linux Device Drivers》
《精通Linux设备驱动程序开发》,对应的英文版是《Essential Linux Device Drivers》
虚拟机:
《Java SE 7虚拟机规范》
《深入Java虚拟机》,对应的英文版是《Inside the Java Virtual Machine》
《Oracle JRockit: The Definitive Guide》
嵌入式:
《嵌入式Linux开发》,对应的英文版是《Embedded Linux Primer》
《构建嵌入式Linux系统》,对应的英文版是《Building Embedded Linux Systems》
ARM体系架构:
《ARM嵌入式系统开发:软件设计与优化》,对应的英文版是《ARM System Developer’s Guide: Designing and Optimizing System Software》
综合:
《深入理解计算机系统》,对应的英文版是《Computer Systems: A Programmer’s Perspective》

《剑指Offer:名企面试官精讲典型编程题》剑指Offer学习

移动开发必读书单
Android开发学习书籍推荐

[程序员面试金典Cracking the Coding Interview]

AI知识图谱

https://blog.csdn.net/qq_33414271/article/details/79704138

联系我

邮箱: xnzds2008@163.com;

欢迎在留言板留言 。