自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 反射的简单示例

package com.hongx.proxy;public class Singleton { public String name; public Singleton() { name = "FuHongXue"; } public void setName(String name) { this.name = name; }}package com.hongx...

2019-10-31 11:17:15 196

原创 Android静态和动态代理

文章目录1 静态代理2 动态代理1 静态代理Class1有个doSomething方法,如果在方法执行前记录一行日志。一般的做法是,直接子doSomething方法的最前面写一行记录日志的代码。使用代理模式,我们可以设计一个Class1Proxy,这样可以不需要更改Class1中的任何代码就能实现这个功能,如下图所示。图 : 静态代理模式代码实现:public interface ...

2019-10-31 09:55:25 321

原创 Android startActivity源码分析

Android 6.0 Activity.java 源码地址//frameworks/base/core/java/android/app/Activity.java4179 @Override4180 public void startActivity(Intent intent) {4181 this.startActivity(intent, null);...

2019-10-31 09:21:43 428

原创 LeetCode-102. 二叉树的层次遍历

文章目录DFS迭代二叉树的层次遍历https://leetcode-cn.com/problems/binary-tree-level-order-traversal/submissions/给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:DFShttp...

2019-10-28 13:52:37 175

原创 第9课-深度优先搜索和广度优先搜索

文章目录遍历搜索搜索 - 遍历深度优先搜索 Depth-First-Search实战题目Homework遍历搜索在树(图/状态集)中寻找特定结点public class TreeNode { public int val; public TreeNode left, right; public TreeNode(int val) { this.val = val; t...

2019-10-28 10:40:27 190

原创 算法训练营总览

文章目录预习周第1课 数据结构和算法总览第2课 训练准备和复杂度分析第1周第3课 数组、链表、跳表第4课 栈、队列、优先队列、双端队列第2周第5课 哈希表、映射、集合第6课 树、二叉树、二叉搜索树第7课 泛型递归、树的递归第8课 分治、回溯第3周第9课 深度优先搜索和广度优先搜索第10课 贪心算法第11课 二分查找第4周期中复习直播、期中测验第5周第12课 动态规划第6周第13课 字典树和并查集第...

2019-10-28 08:08:14 1410

原创 Android插件化1-插桩式-Activity插件化

1、插件化概述插件化属于动态加载技术动态加载技术:插件化、热修复动态加载技术:在应用程序运行时,动态加载一些程序中原本不存在的可执行文件并运行这些文件里的代码逻辑,可执行文件总的来说分为两个,一个是动态链接库so,另一种是dex相关文件(dex文件包含jar/apk文件)。插件化的作用:主要用于解决应用越来越庞大以及功能模块的解耦,所以小项目中一般用的不多。热修复:主要用于修复bug。...

2019-10-24 22:07:14 1061

原创 Android插件化技术总结与对比

插件化历史2014 - 任玉刚推出新一代插件技术dynamic-load-apk2015 - 360公司推出插件技术DroidPlugin后面陆续推出 Small DynamicApk Atlas VirtualApk 都是基于DroidPlugin来展开目前正在维护的有 DroidPlugin atlas VirtualApk插桩式实现插件化通过在宿主内声明一个代理Ac...

2019-10-24 20:04:33 824

原创 Android面试目录

文章目录第3章 不假思索:我精通Java第6章 居然问我Activity这么简单的东西?第7章 Handler相关第8章 内存优化相关第9章 插件化和热修复相关第10章 优化相关第3章 不假思索:我精通Java03-1 Java的char03-2 Java String有多长第6章 居然问我Activity这么简单的东西?06-1 Activity的启动流程是怎样的?06-2 如何跨A...

2019-10-23 13:19:16 211

原创 LeetCode-50. Pow(x, n)

文章目录方法 1:蛮力方法2:快速幂算法(递归)方法 3:快速幂算法(循环)https://leetcode-cn.com/problems/powx-n/实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.000...

2019-10-22 17:11:31 169

原创 LeetCode-590N叉树的后序遍历

https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个 3叉树 :返回其后序遍历: [5,6,3,2,4,1].public class LeetCode_590_555 { public static void main(String[] args) {...

2019-10-22 14:25:49 130

原创 LeetCode-94二叉树的中序遍历

文章目录方法一:递归方法二:基于栈的遍历https://leetcode-cn.com/problems/binary-tree-inorder-traversal/方法一:递归第一种解决方法是使用递归。这是经典的方法,直截了当。我们可以定义一个辅助函数来实现递归。public List<Integer> inorderTraversal(TreeNode root) { ...

2019-10-22 11:28:06 107

原创 LeetCode-49字母异位词分组

文章目录总代码方法一:排序数组分类方法二:按计数分类https://leetcode-cn.com/problems/group-anagrams/总代码//方法一:排序数组分类public List<List<String>> groupAnagrams(String[] strs) { if (strs.length == 0) { return ne...

2019-10-22 09:38:38 192

原创 LeetCode-1两数之和

文章目录方法一:暴力法https://leetcode-cn.com/problems/two-sum/给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为...

2019-10-22 08:25:29 129

原创 LeetCode-242有效的字母异位词

文章目录代码方法1:排序方法2:哈希映射方法3代码public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arr...

2019-10-21 22:29:08 173 2

原创 第8课-分治、回溯

文章目录递归状态树分治 Divide & Conquer分治代码模板回溯 Backtracking预习题目实战题目分治 Divide & Conquer递归状态树分治 Divide & Conquer分治代码模板def divide_conquer(problem, param1, param2, ...): # recursion terminator...

2019-10-21 13:32:23 163

原创 第7课-泛型递归、树的递归

文章目录递归 Recursion盗梦空间计算 n!Java 代码模版思维要点实战题目实战题目Homework树的面试题解法一般都是递归节点的定义重复性(自相似性)示例代码def preorder(self, root): if root: self.traverse_path.append(root.val) self.preorder(root.left) ...

2019-10-21 13:27:51 358 2

原创 第6课-树、二叉树、二叉搜索树

树 Tree二叉树 Binary Tree图 GraphLinked List 是特殊化的 TreeTree 是特殊化的 Graph示例代码Pythonclass TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, NoneJavapublic ...

2019-10-21 12:30:26 349

原创 第5课-哈希表、映射、集合

文章目录Hash table工程实践Hash FunctionHash Collisions完整结构复杂度分析Java codePython codeMap, Set : interfaces复杂度分析实战题目Hash table哈希表(Hash table),也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的...

2019-10-21 10:55:57 419

原创 Java PriorityQueue源码分析

文章目录类继承关系QueueAbstractQueuePriorityQueue源码分析grow方法offer方法poll方法remove方法总结Java API 地址:https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/PriorityQueue.htmljdk源码下载地址https://gitee...

2019-10-20 20:42:03 195

原创 Deque简单使用

Deque API文档地址:https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/Deque.htmlDeque API使用示例push和poppublic void doDeque() { Deque<String> deque = new LinkedList<String&g...

2019-10-20 19:28:34 366

原创 LeetCode-189旋转数组

链接:https://leetcode-cn.com/problems/rotate-array给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转...

2019-10-18 23:22:30 152

原创 Leetcode-26删除排序数组中的重复项

文章目录题目解法 双指针法https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/https://leetcode.com/problems/remove-duplicates-from-sorted-array/题目给定一个排序数组(注意:已经排序),你需要在原地删除重复出现的元素,使得每个元素只出现一次,...

2019-10-18 16:18:32 79

原创 LeetCode-11盛最多水的容器

文章目录1 题目2 暴力法3 双指针法while写法for写法https://leetcode-cn.com/problems/container-with-most-water/https://leetcode.com/problems/container-with-most-water/1 题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐...

2019-10-17 13:55:14 186

原创 第4课-栈、队列、双端队列、优先队列

文章目录1 栈和队列1.1 原理图1.2 Stack & Queue 关键点2 Deque: Double-End Queue3 Stack、Queue、Deque 的工程实现示例代码 - Stack示例代码 - Queue示例代码 - DequePriority Queue5 Stack 和 Queue 的实现(源码分析)6 复杂度分析7 小结8 实战题目预习题目实战题目作业1 栈和队...

2019-10-17 10:56:50 245

原创 Android应用进程

文章目录你知道应用进程是怎么启动的吗?进程启动方式应用进程启动原理什么时候触发的进程启动?进程是怎么启动的?思考:问题:你知道应用进程是怎么启动的吗?你知道应用进程是怎么启动的吗?谈谈你对Application的理解?谈谈你对Context的理解?你知道应用进程是怎么启动的吗?了解Linux下进程启动的方式熟悉应用进程启动的基本流程深入理解应用进程启动的原理进程启动方式应用进程...

2019-10-16 16:45:52 214

原创 ServiceManager的启动和工作原理

文章目录1 ServiceManager启动2 如何获取ServiceManager?3 怎么添加Service?4 怎么获取Service?5 总结ServiceManager启动流程是怎样的?怎么获取ServiceManager的binder对象?怎么向ServiceManager添加服务?怎么从ServiceManager获取服务?1 ServiceManager启动启动进程启...

2019-10-16 16:20:34 919

原创 系统服务和bind的应用服务区别

它们在启动方式上有什么区别?它们在注册方式上有什么区别?它们在使用方式上有什么区别?启动方式上有什么区别?系统服务的启动应用服务的启动注册方式上有什么区别?系统服务的注册应用服务的注册使用方式上有什么区别?系统服务的使用应用服务的使用系统服务和bind的应用服务有什么区别?启动方式有什么区别?注册方式有什么区别?使用方式有什么区别?...

2019-10-16 16:03:36 353

原创 怎么添加一个系统服务

文章目录1 如何使用系统服务?2 系统服务调用的基本原理3了解服务的注册原理如何注册系统服务?什么时候注册的系统服务?独立进程的系统服务启用binder机制你知道怎么添加一个系统服务吗?了解如何使用系统服务?了解系统服务调用的基本原理了解服务的注册原理1 如何使用系统服务?以PowerService为例:ServiceManager的getService实现:2 系统服务调...

2019-10-16 15:50:32 753

原创 Android系统的启动流程

文章目录1 系统进程2 进程启动2.1 Zygote是怎么启动的2.2 SystemServer是怎么启动的?3 看两个问题3.1 系统服务是怎么启动的?系统服务怎么发布,让应用程序可见?系统服务跑在什么线程?问题:3.2 怎么解决系统服务之间的互相依赖?分批启动分阶段启动4 桌面的启动5 说说Android系统的启动流程?1 zygote是怎么启动的?2 systemServer是怎么启动的?3...

2019-10-16 15:25:23 210

原创 对zygote的理解

文章目录1 了解Zygote的作用1.1 启动三段式2 Zygote的启动流程2.1 Zygote进程是怎么启动的?2.1.1 启动配置2.1.2 启动进程1 fork + handle2 fork + execve信号处理3 进程启动之后做了什么?3.1 Zygote的Native世界3.2 Zygote的Java世界4 要注意的细节5 两个问题6 谈谈你对zygote的理解?了解Zygote...

2019-10-16 13:51:53 685

原创 FFmpeg基础知识

基础知识文章目录基础知识为什么需要压缩为什么可以压缩视频编码格式音频编码格式封装格式流媒体协议YUV简介H.264 I,P,B帧和PTS,DTSFFmpeg核心模块为什么需要压缩● 未经压缩的数字视频的数据量巨大● 存储困难● 传输困难为什么可以压缩● 去除冗余信息空间冗余:图像相邻像素之间有较强的相关性时间冗余:视频序列的相邻图像之间内容相似​ 编码冗余:不同像素值出现的...

2019-10-12 13:08:20 248

原创 FFmpeg交叉编译

FFmpegndk最新的发布版是r17,如果只能找到r16的下载地址,那只要把这个地址中的16改成17就可以了https://baike.baidu.com/item/ffmpeg/2665727?fr=aladdinFFmpeg是一个开源的音视频处理程序,也可以把它看成一个用于处理音视频的库。如果需要在Android中使用这个库,那就需要进行交叉编译。从官网下载FFmpeg的源码:...

2019-10-11 14:53:08 1117 1

原创 Shell 脚本

Shell Script文章目录Shell Script变量、字符串、数组与注释传参运算符流程控制函数与输出重定向Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell Script(Shell脚本)是一种为Shell编写的脚本程序。Linux的Shell(程序)种类很多,常见的有:Bourne Shell (/us...

2019-10-11 14:51:48 101

原创 生成Android可执行文件命令笔记

export CC=/Volumes/Docment/soft/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc export AAA="--sysroot=/Volumes/Docment/soft/android-ndk-r...

2019-10-10 13:53:09 808 1

原创 Android.mk与Cmake配置

CMake基本配置与注意事项文章目录CMake基本配置与注意事项CMake5.0及以下与6.0及以上的注意事项:Android.mkCMakeCMake​ 在android studio 2.2及以上,构建原生库的默认工具是 CMake。​ CMake是一个跨平台的构建工具,可以用简单的语句来描述所有平台的安装(编译过程)。能够输出各种各样的makefile或者project文件。Cmak...

2019-10-10 08:05:12 3908

原创 cc++编译器配置(交叉编译重要参数)与makefile

编译器与Makefile文章目录编译器与Makefilegcc/g++/clangclanggccg++编译器过程Makefile什么是MakefileMakefile规则变量include文件搜索其他预定义变量自动变量条件语句输出信息Android.mkApplication.mkgcc/g++/clang了解c/c++编译器的基本使用,能够在后续移植第三方框架进行交叉编译时,清楚的了解...

2019-10-10 08:03:19 2116

原创 JNI线程、Linux常用指令、权限、防火墙

Linux 文件权限、VIM、防火墙文章目录Linux 文件权限、VIM、防火墙SSH连接环境变量权限更改文件所属更改文件权限su和sudo包管理器VI/VIMiptables防火墙CentOS vs Ubuntu: Which one is better for a serverhttps://linux.cn/article-8141-1.htmlSSH连接无论是mac还是wi...

2019-10-10 08:01:24 231

原创 Java与CC++交互JNI编程

JNI编程文章目录JNI编程第一个JNI程序JNI数据类型C/C++反射Java反射方法反射属性JNI引用局部引用全局引用弱引用JNI_OnLoad动态注册native线程调用JavaJNI是一种本地编程接口。它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言、C++、汇编,写的应用和库之间的交互操作。第一个JNI程序#引入jni头文件支持include_dire...

2019-10-08 13:30:24 197

原创 C++多线程与智能指针

C++线程与智能指针文章目录C++线程与智能指针线程C++11线程POSIX线程线程属性分离线程调度策略与优先级线程同步条件变量智能指针shared_ptrweak_ptrunique_ptr自定义智能指针部分C++11、14特性nullptr类型推导基于范围的 for 循环Lambda作业(后面FFmpeg直播播放器课程的队列工具类)线程线程,有时被称为轻量进程,是程序执行的最小单元。...

2019-10-08 09:12:01 1593

HxSkin.zip

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

2019-07-16

空空如也

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

TA关注的人

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