关于我
人生信条:学海无涯
书山有路勤为径,学海无涯苦作舟.
—《增广贤文》 韩愈
业精于勤荒于嬉,行成于思毁于随.
—《进学解》 韩愈
开此博客的目的:学习前人的经验,形成自己的知识体系和知识框架,总结自己的经验和教训,写出来之后,整理了自己的思路,印象会更加深刻。
都说好记性不如烂笔头,对于学习这件事,这句话的确很重要,平时的积累,积少成多,最后可以产生质变。
此博客会分析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技术,开源且免费
- https://xposed.appkg.com/category/xposed
- 源码 : https://github.com/rovo89
- Native 侧代码: https://github.com/rovo89/Xposed
- Java 侧Framework代码:https://github.com/rovo89/XposedBridge
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文件的工具
有趣的源码
Python adb
Python 语言实现的adb 和fastboot工具
Go USB
Go 语言实现的USB驱动
Kotlin fastboot
Kotlin 语言实现的fastboot命令
使用过的工具软件:
• 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系统源代码情景分析》 —罗升阳
12.《Android 底层开发技术实战详解》–内核、移植和驱动
王振丽,2012年第一版电子工业出版社出版
13.《Linux设备驱动开发详解》基于最新的Linux4.0内核
宋宝华,2017年机械工业出版社出版
14.《Unix环境高级编程》第三版
戚正伟等,2014年人民邮电出版社出版
15.《Android 应用 安全防护和逆向分析》第二版
姜维,2018年机械工业出版社
Linux相关的英文书籍:
- Linux Kernel Development.
- Understanding the Linux Kernel.
- Linux Device Drivers.
- Linux内核源代码情景分析.
- Professional Android Application Development.
- 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学习
[程序员面试金典Cracking the Coding Interview]
AI知识图谱
https://blog.csdn.net/qq_33414271/article/details/79704138
联系我
邮箱: xnzds2008@163.com;
欢迎在留言板留言 。