- 博客(84)
- 资源 (24)
- 收藏
- 关注
原创 (二)kotlin基础语法概述
记录学习过程,用简短的话描述核心价值。本文主要对kotlin的一些基本知识进行简单的介绍。1、函数kotlin中,代码末尾不需要分号(;)结束, 用fun声明一个函数,以下是声明一个无返回值的函数:/** * fun:声明一个函数 */fun main(args: Array<String>) {//参数名字冒号接上参数的类型 println("Hello wor...
2020-03-15 21:34:36 657
原创 (一)kotlin简介及相关工具介绍
kotlin目标平台–哪些地方可以使用kotlinkotlin已经作为Google官方语言,用于Android的开发。但实际上除了Android,任何java可运行的地方,都可以用kotlin来替代,因为kotlin也是运行在JVM虚拟机上的, kotlin还可以编译为javascritp, 所以服务端也能使用kotlin。kotlin代码编译过程kotlin的文件后缀是kt, 和jav...
2020-03-15 16:24:16 818
原创 Android源码解析--ContentProvider的创建及启动流程
分析源码:Android 8.0本文主要分析调用getContentResolver方法以后,获取到ContentProvider的流程,或者说getContentResolver方法以后,和ContentProvider建立联系的流程。Provider的启动及创建流程在前面一篇博客 ContentResolver与ContentProvider的搭配使用 讲到了ContentResolv...
2019-10-20 22:18:57 953
转载 android分析ContentProvider onCreate()在 Application onCreate()之前执行
原文作者:Brandon777链接:https://juejin.im/post/59c24b256fb9a00a496e5ec4来源:掘金bind Application的方法handleBindApplication(AppBindData data)内部代码块try {4524 // If the app is being launched for ful...
2019-10-13 20:14:57 5767
原创 Android MVC、MVP模式的本质区别 及MVP升级版概述
MVC简介MVC模式示意图web中的MVCMVC架构在web领域应用很广泛, 用户通过界面(view层)操作,然后相应动作会传递给Controller,Controller根据业务逻辑去操作数据层(Model层),然后数据层把得到的数据回调给View层进行更新,数据层可能是操作本地数据库,也可能是访问服务端获取数据。 这就是MVC设计模式的基本思想。从设计上来看,MVC较好的把View视...
2019-10-07 19:30:38 451
原创 ContentResolver与ContentProvider的搭配使用
简介Android中, ContentResolver是通过Uri来获取对应数据的数据, 而提供数据的,通常就是ContentProvider。ContentProvider可以作为一个公共的数据源,为多个app提供数据的增删改查。以下例子先建立一个ContentProvider, 在其内部简历数据库,然后让ContentResolver来查询数据。一、ContentProvider的创建...
2019-10-06 18:06:07 2637
转载 资深大牛告诉你什么是架构师
原文链接:https://blog.51cto.com/14528804/2434863?source=dra对于工作多年的程序员而言,日后的职业发展无非是继续专精技术、转型管理和晋升架构师三种选择。架构师在一家公司有多重要、优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析程序员如何才能晋升为优秀的高薪架构师?希望通过本文让程序员们了解架构师的市场行情,了解架构师的发展前景,...
2019-10-04 11:35:57 2386
原创 关于程序员应该如何学习的一些思考
问题有一些问题想了很久:为何别人那么牛逼?写代码信手拈来,讲理论头头是道,架构设计说来就来,既会java又会c++还能写python? 为什么有的人看《Think in java》《现代操作系统》《深入理解计算机系统》等砖头一两周就能看完一本, 有的人一年都看不完一本?为什么有的人学了就不会忘记,而我学完很快就又忘记了?这些问题响了不是一两天了,最近几年都在思考,但是一直没写下来。关于看书速...
2019-10-02 23:01:25 518 1
原创 Git常用命令总结
本篇是对自己学习git的一个小小的总结创建版本库windows安装git后, 在开始菜单里面 搜索“git bash”, 点击就能打开git命令窗口,切换到某个目录下,执行 git init ,则此目录变为git管理的仓库;工作区、暂存区、分支电脑上目录及文件,就是存在于工作区版本库上图中可以看到一个.git的隐藏目录,这个不是工作区,是Git的版本库。版本库中存放了很多东西,其...
2019-09-22 22:43:46 185
原创 Android(java)中线程的线程池
1、线程池简介线程池是我们在开发过程中用的比较多的一个功能,在Android中的线程池和其实和java是保持一致的,并无什么区别。使用线程池的好处主要有以下三个:1、重用线程池,避免现线程的创建和销毁所带来的的性能开销;2、能有效控制线程池的最大并发数,避免大量线程之间因相互抢夺资源而造成阻塞;3、能够对线程进行简单的管理,并提供定时执行及指定间隔循环等功能;线程池的概念抽象类是Ex...
2019-06-30 23:13:21 435
原创 Android AsyncTask的使用及源码分析
在上一篇博客中,我们提到AsyncTask的任务默认是串行执行的,并且AsyncTask对象必须在主线程中创建,并且一个AsyncTask对象只能执行一次execute方法,否则就会报错,这一切的原因是什么呢?本文就将通过源码分析来解释这几个问题。首先来再看一下AsyncTask的几个核心方法:excute: 创建好AsyncTask对象后,需要调用此方法才开始执行任务;onPreExec...
2019-06-30 10:24:22 264
原创 Android中线程的不同形态(Thread、AsyncTask、HandlerThread、IntentService)
线程作为CPU最小调度单位,使我们开发中进程需要用到的功能。在Android中,除了java原本就提供的Thread以外,还提供了其他形式的线程,如AsyncTask、IntentService、HandlerThread, 它们的底层还是都封装的Thread,但却提供了更加丰富的功能。所以在Android中,常用的线程的形态有:1、Thread;2、AsyncTask;3、IntentS...
2019-06-29 20:33:32 369
原创 Android除了三大动画,还有哪些动画?
在上一篇博客Android的三种动画详解 中讲解了Android的帧动画、View动画(补间动画)、属性动画。 这三种动画已能解决绝大部分需求,但实际上,随着Android的发展,有越来越多的动画产生,有的是Android原生的,有的是三方开源的,本文就此做了一个简单的梳理。1、Lottie动画(三方开源)Lottie是Airbnb开源的一个支持 Android、iOS 以及 ReactNa...
2019-06-22 18:28:03 1414
原创 Android的三种动画详解(帧动画、View动画、属性动画)
Android的动画分为了三种, 分别是 帧动画、View动画、属性动画。1、帧动画帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放。帧动画的使用很简单,总共就两个步骤:1、在res/drawable目录下定义一个XML文件,根节点为系统提供的animation-list,然后放入定义更好的图片;2、使用AnimationDrawable类播放第...
2019-06-21 22:54:03 37218 2
原创 Android常用的数据库语句
1、数据库语句1.1、创建数据库create database 数据库名称 character set 字符集名称 ;create database 数据库名称 character set 字符集名称 collate collate名称(具体查询API)例:create database mydb1 character set utf8 collate utf8_general_ci;...
2019-06-21 16:56:52 1873
原创 Android View的测量、布局、绘制过程详解(下)
View的measure()方法是final的,因此我们无法在子类中去重写这个方法,在该方法内部会调用onMeasure()方法。所以我们自定义view时,要重写也是重写onMeasure方法。同理,layout、draw也是final的,我们根据需要重写onLayout和onDraw方法即可。1、measure过程measure过程要分成两种情况来看:1、如果只是一个view,那么直接调...
2019-06-18 22:39:22 3316
原创 Android View的测量、布局、绘制过程详解(上)
Android View的绘制过程主要有三步:测量 Measure布局 Layout绘制 Draw首先理解MeasureSpec的含义,然后跟踪ViewGroup的measure、layout、draw三个方法即可view的绘制流程是我们在自定义View中通常会使用到的一个知识点,也是一个面试常问的点。简直是Android开发必备知识。1、理解ViewRootImpl和DecorV...
2019-06-17 22:32:34 1460 1
原创 Android 事件传递机制详解(事件的分发、拦截、处理)
1、事件在Android中的传递顺序事件在Android的传递顺序:Activity--> Window-->DecorView --> 布局View或者说以上顺序是事件在应用层的传递顺序。如果要说整个事件的传递机制,是Android底层收到触摸屏的事件后,使用socket跨进程通信,用InputDispatcher将事件发送给APP进程,由主线程的Looper去取出消...
2019-06-16 12:04:28 20620 2
原创 Android消息机制详解:Handler、MessageQueue、Looper
1、Handler的诞生背景在Android中,规定了只能在主线程(或者叫UI线程)中,去进行UI相关的操作,而其他线程则无法操作UI,否则报错;但同时,由于不能再UI线程进行耗时的操作,否则会报ANR异常, 因此,我们通常又把耗时操作放到子线程去进行一个处理。那这就涉及到了一个数据传递的问题,我们在子线程处理的数据,怎么传递到主线程呢?这就有了Handler消息机制。为什么要设计为只能在...
2019-06-15 21:58:55 652
原创 Android消息机制--Handler的常见用法介绍
1、Handler的诞生背景在Android中,规定了只能在主线程(或者叫UI线程)中,去进行UI相关的操作,而其他线程则无法操作UI,否则报错;但同时,由于不能再UI线程进行耗时的操作,否则会报ANR异常, 因此,我们通常又把耗时操作放到子线程去进行一个处理。那这就涉及到了一个数据传递的问题,我们在子线程处理的数据,怎么传递到主线程呢?这就有了Handler消息机制。2、Handler、...
2019-06-14 21:52:57 172
原创 用AndroidStudio编译出jar包的方法
最近由于项目需要,需要用到AndroidStudio编译jar包,赶紧搜了一波资料学习学习,现在总结如下。AndroidStudio先执行一次 make Project, 生成然后在app/build.gradle中的 android{} 中, 增加以下配置:task makeJar(type:org.gradle.api.tasks.bundling.Jar) { baseNam...
2019-04-24 21:26:11 4234 1
原创 Android源码解析--ActivityManagerService详解(一):从开机启动的角度解析AMS
ActivityManagerService是Android系统中一个特别重要的系统服务,也是我们上层APP打交道最多的系统服务之一。ActivityManagerService(以下简称AMS) 主要负责四大组件的启动、切换、调度以及应用进程的管理和调度工作。所有的APP应用都需要与AMS打交道。本文将从Android系统启动的过程中,去理解在系统启动时,AMS如何启动并完成初始化的,以及在...
2019-04-21 11:20:25 2729
原创 Android源码解析--ClipBoardService(粘贴板)服务详解
ClipBoardService是Android的粘贴板服务,我们的复制粘贴都需要通过这个服务来完成。1、与ClipBoardService相关的类如下图所示, ClipBoardService服务核心的几个类:android.content.ClipBoardManager: 继承自android.text.ClipBoardManager, 这是一个兼容性的设计, 早期android只...
2019-04-06 22:13:57 4055
原创 Android源码解析--SamplingProfilerService(系统性能分析)服务详解
SamplingProfilerService,从字面理解,就是采样剖析服务, 该服务用来进行性能采样及统计。1、SamplingProfilerService首先看一下SamplingProfilerService在SystemServer中的添加代码: ServiceManager.addService("samplingprofiler", new Samplin...
2019-04-03 23:07:26 924
原创 Android源码解析--DeviceStorageManagerService(DeviceStorageMonitorService)服务详解
DiskStatsService和DeviceStorageMonitorService两个服务都和系统内部存储管理、监控有关。这一篇继续学习DeviceStorageMonitorService(以下简称DSMS)。DeviceStorageMonitorService和DeviceStorageManagerService是一个东西,只是在5.0以后,名字改为了DeviceStorageM...
2019-04-01 23:03:15 2772
原创 Android源码解析--DiskStatsService(存储管理)服务详解
DiskStatsService和DeviceStorageMonitorService两个服务都和系统内部存储管理、监控有关。这里先讲DiskStatsServiceDiskStatsServiceDiskStatsService很简单,代码只有100行左右,它直接继承自Binder,却没有实现Binder的任何接口:/** * This service exists only as ...
2019-03-31 22:31:17 1218
原创 Android源码解析--dropbox日志:DropBoxManagerService(DBMS)服务详解
DropBoxManagerService简介DropBoxManagerService(简称DBMS)是日志相关的服务,用于生成与管理 系统运行时的一些日志文件。日志文件大多记录的是系统或某个应用出错的日志信息。该**日志输出在dropbox目录下**。它在SystemServer启动以后被添加到ServiceManager中: ServiceManager.addService(Con...
2019-03-31 14:19:42 2301
原创 Android源码解析--EntropyMixer(EntropyService 随机数)服务详解
分析源码为Android5.1(android 22)EntropyMixer(EntropyService)不明白Google为什么要改名字, 以前的EntropyService类名改为了EntropyMixer。EntropyMixer服务主要用来产生随机数.在Android4.0以后已经更新为EntropyMixer类了,名字变了,功能还是那些。物理学上定义熵的定义,一个系统中熵越大...
2019-03-30 19:39:48 1477
原创 Android源码解析--SystemServer启动的各种服务汇总集合
要想了解Android系统,了解SystemServer进程及其启动的各种核心服务,是一个必要的过程,SystemServer启动了几十个服务,这里我们选择其中的一部分进行分析:1、EntropyMixer(EntropyService) 随机数服务...
2019-03-30 19:38:56 585
原创 Android源码解析--SystemServer启动流程
1.前言在整个android系统中,进程的启动流程如下:init进程 –> Zygote进程 –> SystemServer进程 –>各种应用进程先启动init进程,它是整个linux系统的根进程,接着启动了Zygote进程,它是Android系统的根进程,接着启动的就是本文要讲到的SystemServer进程,它管理着Android系统的各种系统服务,然后才是启动各种...
2019-03-13 21:56:41 978 1
原创 Activity、Service和Application的Context的区别
1、Context的类图Context:是一个接口类,主要提供通用接口ContextImpl:Context接口的具体实现类ContextWrapper:Context的包装类,内部持有一个ContextImpl的实例对象mBase,对Context的操作最终都进入ContextImpl类ContextThemeWrapper:该类内部包含了主题(Theme)相关的接口,...
2019-03-12 22:33:12 5920
翻译 《现代操作系统(中文第四版)》课后习题答案 第四章 文件系统
题目略。1、使用 . 或 …切换文件路径/etc/passwd/./etc/passwd/././etc/passwd/./././etc/passwd/etc/../etc/passwd/etc/../etc/../etc/passwd/etc/../etc/../etc/../etc/passwd/etc/../etc/../etc/../etc/../etc/passwd...
2019-03-12 22:00:41 17990 13
翻译 《现代操作系统(中文第四版)》课后习题答案 第三章 内存管理
题目略1、答:首先,需要特殊的硬件来进行比较,而且它必须很快,因为它用于每个内存引用。第二,使用4位键,一次只能在内存中存储16个程序(其中一个是操作系统)。2、答:这是一个巧合。基址寄存器的值为16384是因为程序恰好在地址16384上加载。程序可以在任何地方加载。界限寄存器为16384是因为程序具有16384字节的长度。程序可以有任意的长度。加载地址与程序长度相等仅仅是一种巧合。3、答:...
2019-03-12 05:16:35 19554 13
原创 算法与数据结构--图论基础知识
字体改成红色了 1、图论基础概念 Graph Theory图 :是由由 节点 和 边 组成的数据模型,它有两个重要部分1、节点2、边节点是两个村, 边表示两个村直接连通的道路或者节点是人, 边表示人与人之间的关系。点是一个域名, 边是域名之间的调整无向图:边是没有方向的(如两个村是否有道路连接)有向图:边有方向(人际关系网,你认识他,他不认识你)有向图会使图更加复杂。...
2019-03-06 20:45:18 647
原创 算法与数据结构--并查集
序两个点是否连接, 在大型网络中,肉眼很难观察出来。如何判断一个巨大网络中两个点是否连接,这个网络不一定是互联网,也可能是微信中的人际关系网,两个人是否是好友,是否有连接?巨大数据库中,电影与音乐是否有交集, 网络路由器是否连接?他们的连接路径有多少条?具体路径分别是什么?想要解决两个点是否连接,是否有交集的问题,最快速的方法就是使用并查集。 而要解决他们的连接路径有多少以及具体路径,就需...
2019-03-03 12:38:00 269
原创 八大排序算法--基数排序
基数排序定义基数排序(radix sort)是一种桶排序(bucket sort), 先把个位相同的数字放到同一个桶里,然后完成对个位数字大小的排序,然后再在前面的基础上对十位 上的数字进行排序,然后依次进行到最高位, 最后完成整个排序。算法分析对于十进制来说,每个位 总共有 0~9 10 种可能举一个例子, 对一下数组进行排序:[34, 62, 11, 56, 4, 73, 2, 25...
2019-02-25 21:41:26 294
原创 八大排序算法--堆排序的优化(原地堆排序、索引堆)
优化一----原地堆排序前一篇博客我们都需要开辟一个新的数组 来进行堆的存放,下面将讲述原地堆排序。在前面讲到,堆是存放在一个数组中的,如果我们不想开辟新空间,在原来数组上依然可以实现堆排序,不过索引位置就要从0开始了。新的计算公式如上图,新的公式可以通过上图归纳出来:知道子节点索引为i, 求父节点索引: parent(i) = (i-1) / 2知道父节点索引为i,求左右子节点的索...
2019-02-24 18:14:55 884
原创 八大排序算法--堆排序
序言对于堆排序的学习,实际上就是对于 堆 这一种数据结构的学习,把堆学会了,堆排序自然也就学会了。1、为什么使用堆这种数据结构优先队列是一种很常用的队列,比如在游戏中,游戏角色在自动模式下,如何在周围一堆小怪中自动攻击某一个小怪?可能是判断这一群小怪哪一个比较近,就攻击哪一个,或者哪一个等级低,就攻击哪一个。总之,是会动态的计算周围小怪的优先级,然后攻击优先级最高的那一个小怪。堆 这一种数...
2019-02-23 18:35:01 520
原创 由归并排序和快速排序引申的思考
分治算法归并排序和快速排序都使用了分支算法的思想。分治算法:顾名思义,就是将原问题分割为同等结构的子问题,之后将子问题逐一解决后,在解决了各个小问题之后(各个击破之后)合并小问题的解,从而得到整个问题的解。归并排序:分的时候没有过多考虑,直接简单的一分为二,然后不断递归就可以了,但是在合的时候,就需要考虑怎么合在一起了。快速排序:费了较大的功夫去考虑怎么分为两部分的问题,我们写了parti...
2019-02-17 14:24:26 343
原创 八大排序算法--快速排序及其优化
快速排序定义高级排序在最后阶段较少数据排序是,都可以使用插入排序进行优化,因为越是高级的排序,实现越是复杂,通常来说在数据较大的效果越是明显,在数据较少时使用插入排序这一种简单排序更加快速。代码实现/** * 定义好脚标取值范围: * 对arr[l...r]部分进行快速排序,取值区间前闭后闭 */public static void quickSort(int[] arr, in...
2019-02-16 21:37:13 673
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人