自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 第18课-排序算法

文章目录排序算法初级排序 - O(n^2)高级排序 - O(N*LogN)快速排序(Quick Sort)归并排序(Merge Sort)— 分治归并 和 快排比较堆排序(Heap Sort)特殊排序 - O(n)排序动画实战题目排序算法比较类排序: 通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元...

2019-11-25 09:06:56 221 1

原创 第17课-布隆过滤器、LRU Cache

文章目录布隆过滤器 Bloom FilterHashTable + 拉链存储重复元素Bloom Filter vs Hash Table布隆过滤器示意图案例科普Python 实现其他实现LRU CacheCache 缓存CPU SocketLRU CacheLRU cache 工作示例替换策略实战题目LRU Cache — PythonLRU Cache — Java布隆过滤器 Bloom Fi...

2019-11-25 08:53:52 319

原创 第16课-位运算

文章目录为什么需要位运算位运算符XOR - 异或指定位置的位运算实战位运算要点实战题目N皇后的位运算解法DP + 位运算为什么需要位运算• 机器里的数字表示方式和存储格式就是 二进制• 十进制 <—> 二进制 : 如何转换?如何从十进制转换为二进制4(d): 01008(d): 010005(d): 01016(d): 0110位运算符含义运算符示例...

2019-11-25 08:40:28 215

原创 ARouter简单使用

ARouter:https://github.com/alibaba/ARouter参考:https://www.jianshu.com/p/6021f3f61fa6添加依赖: implementation 'com.alibaba:arouter-api:1.5.0' annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'初始...

2019-11-22 10:37:56 452

原创 Android MaterialDesign

文章目录简介Material Design提供的材料主题AppCompatActivityCoordinatorLayoutBehaviorMaterial Design中的部分控件Material Design相关网站Material Design官网:https://www.mdui.org/design/material-design/introduction.htmlMaterial...

2019-11-22 09:02:39 285 1

原创 Java注释中的Target和Retention

文章目录RetentionTarget参考:https://blog.csdn.net/hongxue8888/article/details/90319473Retention在Annotation中,可以使用Retention定义一个Annotation的保存范围。Retention和RetentionPolicy定义如下:package java.lang.annotation;...

2019-11-20 16:07:18 352

原创 Gradle中的Settings和SourceSet

文章目录SettingsSourceSetSettingsSettings 的核心作用就是决定我们项目的哪些工程是要被gradle处理的。Settings.java部分源码:@HasInternalProtocolpublic interface Settings extends PluginAware, ExtensionAware { /** * <p>...

2019-11-20 10:55:52 443

原创 Gradle核心之Task详解

文章目录Task定义和配置Task执行顺序Task依赖Task输入输出挂接自定义Task到构建过程中Task类型查看task./gradlew tasksTask定义和配置task helloTask{ println 'i am helloTask'}或者写成task(helloTask,{ println 'i am helloTask'}) ./g...

2019-11-20 10:17:31 560

原创 AndroidStudio Gradle自定义Task实例

文章目录配置变量配置变量新建 common.gradle//用来存放应用中的所有配置变量,统一管理,而不再是每个moudle里都自己写一份,修改起来更加的方便ext { android = [compileSdkVersion : 25, buildToolsVersion : '25.0.0', applica...

2019-11-20 09:55:22 975

原创 Java实现线程的方法

文章目录实现 Runnable 接口继承 Thread 类线程池创建线程有返回值的 Callable 创建线程定时器 Timer实现线程只有一种方式实现 Runnable 接口比继承 Thread 类实现线程要好为什么说本质上只有一种实现线程的方式?实现 Runnable 接口究竟比继承 Thread 类实现线程好在哪里?实现 Runnable 接口public class Runnabl...

2019-11-19 14:12:13 123

原创 Java并发知识网

java并发知识体系图常用的并发工具类及原理:线程池、synchronized、Lock 锁,悲观锁和乐观锁、可重入锁、公平锁和非公平锁、读写锁、ConcurrentHashMap、CopyOnWriteArrayList、ThreadLocal、6 种原子类、CAS 原理、线程协作的 CountDownLatch、CyclicBarrier、Semaphore、AQS 框架、Java 内存...

2019-11-19 11:10:50 129

原创 Android应用开发实战6-图片加载组件开发

文章目录ImageLoaderManager初始化为view加载图片方法封装加载圆形图片方法封装viewgroup加载图片方法封装Notification图片加载组件封装技术选型封装思路ImageLoaderManager初始化public class ImageLoaderManager { private ImageLoaderManager() { } ...

2019-11-18 22:18:47 179

原创 第15课-高级树、AVL 树和红黑树

文章目录二叉树二叉树遍历Binary Search Tree 二叉搜索树性质如何查找结点极端情况保证性能的关键思考:如何平衡?AVL 树记录左右子树高度旋转操作子树形态:右右子树 —> 左旋子树形态:左左子树 —> 右旋子树形态:左右子树 —> 左右旋AVL 总结红黑树关键性质对比二叉树二叉树遍历Pre-order/In-order/Post-order前序(Pre...

2019-11-18 09:23:32 289

原创 第14课-高级搜索

文章目录初级搜索Coin change(零钱置换)的状态树DFS 代码 - 递归写法DFS 代码 - 非递归写法BFS 代码剪枝回溯法实战练习八皇后代码LeetCode 讨论区代码剖析双向 BFS实战题目启发式搜索(A*)基于 BFS 代码A* search估价函数实战题目Shortest PathSliding Puzzle初级搜索朴素搜索优化方式:不重复(fibonacci)、剪枝(生...

2019-11-18 09:07:33 164

原创 第13课-字典树和并查集

文章目录字典树 Trie内容基本结构基本性质核心思想实战题目并查集 Disjoint Set适用场景基本操作初始化查询、合并路径压缩Java 实现Python实现实战题目字典树 Trie内容字典树的数据结构字典树的核心思想字典树的基本性质基本结构基本性质结点本身不存完整单词;从根结点到某一结点,路径上经过的字符连接起来,为该结点对应的 字符串;每个结点的所有子结点路...

2019-11-18 08:51:16 249

原创 数据结构和算法代码模板

文章目录递归代码模板Java 代码模板Python 代码模板分治代码模板递归代码模板Java 代码模板public void recur(int level, int param) { // terminator if (level > MAX_LEVEL) { // process result return; } // process...

2019-11-17 08:31:18 448

原创 第12课-动态规划

文章目录分治 + 回溯 + 递归 + 动态规划递归代码模版分治 Divide & Conquer感触动态规划 Dynamic Programming实战例题一 斐波拉契数列实战例题二 路径计数动态规划关键点实战例题三 最长公共子序列子问题DP 方程动态规划小结MIT algorithm course实战题目实战题目实战题目Homework分治 + 回溯 + 递归 + 动态规划递归代码模...

2019-11-16 23:00:13 161

原创 Gradle核心之Project详解

文章目录project核心api新建项目,添加lib_a、lib_b、lib_c三个module在命令行中输入: ./gradlew projects是否是gradle项目,是看目录下是否有build.gradle文件project核心api...

2019-11-15 17:09:50 1423

原创 groovy简介和环境搭建

文章目录1 groovy简介2 groovy环境搭建来自慕课课程的笔记:https://coding.imooc.com/learn/list/206.html1 groovy简介领域特定语言DSLDSL:domain specific language与通用语言的区别:核心思想:求专不求全,解决特定问题groovy初探是一种基于JVM的敏捷开发语言结合了python、ruby和...

2019-11-15 10:08:57 179

原创 groovy高级语法

文章目录json操作xml文件操作xml解析xml文件生成json操作class Person implements Serializable { String name Integer age def increaseAge(Integer years) { this.age += years } /** * 一个方法找不到时...

2019-11-15 09:49:09 557

原创 Android应用开发实战-保活组件

文章目录应用层常用保活方式基于JobService保活开发应用层常用保活方式一个像素activity播放无声音乐前台ServiceJobService基于JobService保活开发新建 lib_pullalive module/** * 一个轻量的后台job service,利用空闲时间执行一些小事情,提高进程不被回收的概率 */@TargetApi(value = Bu...

2019-11-14 15:04:55 407

原创 Android应用开发实战5-网络请求组件开发

文章目录技术选型封装思路导包request封装post请求get请求文件上传请求response封装json类型响应处理文件类型响应处理okhttpclient封装请求框架使用技术选型HttpClient、HttpUrlConnection、Volley、okhttp/retrofit这里选用okhttp封装思路导包新建lib_networkmodule在自定义的项目.gradle...

2019-11-14 14:29:31 240

原创 Android应用开发实战4-沉浸式效果

参考:https://www.jianshu.com/p/752f4551e134在res下新建values-v21目录,在这个目录下新建styles.xml文件<?xml version="1.0" encoding="utf-8"?><resources> <style name="AppTheme" parent="Theme.AppCompat...

2019-11-14 10:53:00 150

原创 Android应用开发实战3-gradle统一参数配置

新建hongx.gradle文件ext { android = [compileSdkVersion: 28, buildToolsVersion: "28.0.3", minSdkVersion : 19, targetSdkVersion : 28, appl...

2019-11-14 10:18:37 280

原创 Android应用开发实战2-maven私服搭建

文章目录maven库介绍maven私服优势maven私服搭建下载运行创建仓库什么是maven私服为什么要用maven私服maven私服搭建流程项目如何接入maven私服maven库介绍maven私服优势maven私服搭建下载运行https://www.sonatype.com/download-oss-sonatype下载-解压缩在bin目录下输入命令行 ./nexus ...

2019-11-14 08:46:48 298

原创 Android应用开发实战1-架构设计分析和创建

文章目录项目架构核心技术目标工程架构分析1 传统架构分析2 模块化工程架构3 组件化工程结构项目需求分析工程创建项目架构核心技术目标掌握企业级的应用开发核心技术掌握组件化开发应用的核心思路掌握原生app体验交互实现原理掌握适配最新api和androidx结构掌握app整体架构的设计和实现工程架构分析1 传统架构分析缺点:单一app工程,代码量指数级膨胀,带来一系...

2019-11-13 22:56:50 365

原创 groovy核心语法

groovy简介领域特定语言DSLDSL:domain specific language与通用语言的区别:核心思想:求专不求全,解决特定问题groovy初探是一种基于JVM的敏捷开发语言结合了python、ruby和smalltalk的许多强大的特性是java的扩展,语法和java非常类似groovy可以和java完美结合,而且可以使用java所有的库groovy特性语法上支...

2019-11-13 14:17:22 447

原创 热修复AndFix详解

文章目录AndFix介绍原则修复过程AndFix集成AndFix初始化apatch文件生成补丁文件安装AndFix组件化AndFix源码讲解总结AndFix介绍https://github.com/alibaba/AndFixAndFix是一个在线修复漏洞的解决方案,而不是重新发布Android应用程序。它作为Android库分发。Andfix是“Android热修复”的缩写。AndFi...

2019-11-12 16:52:35 330

原创 Java和Android的ClassLoader原理分析

文章目录Java中的ClassLoaderAndroid中的ClassLoaderAndroid的ClassLoader的种类Android中ClassLoader的特点ClassLoader源码Android中的动态加载总结Java中的ClassLoader类加载器加载流程Android中的ClassLoaderAndroid的ClassLoader的种类BootClassLoa...

2019-11-12 13:15:14 245

原创 Android虚拟机

文章目录JVM结构解析编译流程类加载器加载流程JVM内存管理Java栈区本地方法栈方法区堆区垃圾收集算法引用的类型垃圾回收算法触发回收Dalvik与JVM的不同ART比Dalvik的优势总结JVM结构解析编译流程类加载器加载流程Loading:类的信息从文件中获取并且载入到JVM的内存里Verifying:检查读入的结构是否符合jvm规范的描述Preparing:分配一个结构...

2019-11-12 10:57:31 505

原创 class和dex文件解析

文章目录class文件什么是class文件如何生成一个class文件class文件格式详解dex文件什么是dex文件如何生成一个dex文件dex文件的作用dex文件结构class和dex对比总结class文件什么是class文件?如何生成一个class文件?class文件的作用?class文件格式详解什么是class文件能够被jvm识别,加载并执行的文件格式。如何生成一个clas...

2019-11-12 09:34:32 360

原创 Android插件化-Hook实现加载完整的插件

文章目录1 小实验ClassLoader相关知识可以参考:1、理解Java和Android的ClassLoader2、Android ClassLoader源码分析1 小实验 ClassLoader cl = getClassLoader(); Log.i("fuhongxue", "onCreate: "+cl);打印:I/fuhongxue: onCreate: dalvi...

2019-11-11 17:04:38 582

原创 Android 插件化插桩式和Hook式的区别

2019-11-10 10:58:00 1541

原创 Tinker热修复手写实现1

手写实现从服务器下载dex文件如果修复包存在先删除拷贝到私有目录开始修复:创建自己的类加载器获取系统的PathClassLoader获取自己的dexElements获取系统的dexElements将系统的dexElements和自己的合并成新的dexElements重新赋值给系统的pathList先生成一个带bug的bug.apk,然后修复代码生成一个修复的fixed.apk...

2019-11-08 10:38:38 227

原创 Tinker热修复原理

热修复背景刚发布的版本出现了严重的Bug,这就需要去解决Bug、测试打包重新发布,这会耗费大量的人力和物力,代价比较大。已经更正了此前发布版本的Bug,如果下个版本是大版本,那么两个版本之间间隔时间会很长,这样要等到下个大版本发布再修复Bug,而之前版本的Bug会长期的影响用户。版本升级率不高,并且需要长时间来完成版本迭代,前版本的Bug就会一直影响不升级的用户。有一些小但是很重要的功能需...

2019-11-08 10:37:57 219

原创 LeetCode-283. 移动零

文章目录题目方法1 双指针方法2方法3https://leetcode-cn.com/problems/move-zeroes/https://leetcode.com/problems/move-zeroes/题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]...

2019-11-07 15:25:23 91

原创 LeetCode-247. Strobogrammatic Number II

A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).Find all strobogrammatic numbers that are of length = n.Example:Input: n = 2Output: [“11”...

2019-11-07 13:28:21 182

原创 LeetCode-24. 两两交换链表中的节点

https://leetcode-cn.com/problems/swap-nodes-in-pairs/submissions/给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.1 递归法先直接处理一下最基本...

2019-11-07 10:15:26 100

原创 LeetCode-3. 无重复字符的最长子串

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解...

2019-11-07 08:59:03 94

原创 LeetCode-206. 反转链表

文章目录迭代递归https://leetcode-cn.com/problems/reverse-linked-list/反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?迭代 public Li...

2019-11-06 21:50:59 139

HxSkin.zip

Android 动态换肤实现,模仿网易云音乐,简单易懂,值得学习!

2019-07-16

空空如也

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

TA关注的人

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