Chejdj Blog

脚踏实地,仰望星空

算法:求字符串之间的距离

最近几天,发现了一个比较好玩的code的网站,相比较熟知的leetcode,我个人更加感兴趣的刷题网站CodeWars,它是一种升级的模式,每次根据所做题目的难度去获取相对应的分值,然后升级,最后还有一个排名榜,感觉挺新颖的,目前属于菜鸟级Level 6,希望努力升到level 3。 在CodeWars上面看到这样一道题目:我们经常使用搜索引擎,有的时候我们打错了字,也能够搜索出我们想...

View工作原理之实现等分布局

View的工作原理,也就是View的measure,layout,draw三个过程,为了巩固学习,写代码实现“等分布局”,下面就介绍“等分布局”的实现,不过之前,需要重新学习一下View的三个过程。 View大致工作流程 View的绘制流程,从RootView的performTraversals开始,经过measure,layout,draw三个过程才将View绘制而出。measure...

Android 获取图库中图片的坑

最近实现一个功能,实现拍照的图片或者图库中的图片向服务器后台上传数据,拍照图片实现还好,可是图库中的图片一直获取不到文件,现在记录一下自己的坑。 我的代码实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ...

ThreadPool用法解析

线程池好像每一次参加面试的时候,都会问道,自己之前确实没有使用过什么,今天大致结合看网上博客,发现了一篇写的很好的博客,略作修改,写下 原博客地址强烈推荐这个作者写的博客,思路很清晰!!! 什么是线程池 线程池当中缓存了一定数量的线程,线程池实现了对于线程的管理和复用(最重要的就是实现对线程的复用,避免频繁创建线程和销毁线程带来的开销),当然管理的可以实现线程执行的统一分配以及调优 必...

Service用法解析

最近,想到Service用法,好像大脑中就简单的记得,一些简单用法,有些模糊,今天补上(可能最近上课上蒙了,有些忘记了),现在看看Android四大组件中的Service.简单说一些Service:它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务(很耗时的任务请使用线程内部)。必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态,service...

AsyncTask源码分析

AsyncTask封装了线程池和Handler,它主要是为了方便我们在子线程当中去更新UI(大多数的情况下,是用它来更新进度条),AsyncTask类并不适合做过多任务量的后台任务(过多任务量实际逻辑复杂度高) 它主要有4个方法 (1)onPreExecute() 主线程执行,在任务执行之前 (2)doInBackground(Params…params) 执行任务 (3)onProgre...

View中requestLayout和Invalidate源码分析

我们都知道requestLayout和Invalidate都会导致View的绘制,那他们到底,有什么区别呢?我们可以去View的源码看看究竟(因为没有看过相关源码,这里重新补一下,自己太菜了) requestLayout的源码分析 首先我贴出,requestlayout的注释 1 2 3 4 5 6 7 8 9 * Call this when something ...

Activity的生命周期

本文绝大部分内容都是来自《Android艺术探索》,我只是记笔记并且在电脑打log验证,方便自己看 生命周期介绍 (1) onCreate: 表示Activity正在被创建 (2) onRestart: 表示Activity正在重新启动。一般情况下,当当前的Activity从不可见的状态变成可见状态时,onRestart就会调用,比如用户按Home键切换到桌面或则用户打开了一个新的Ac...

ListView和RecycleView的区别

一. getView()和onCreateViewHolder方法 我想对于这个滑动控件来说,最神奇的地方就是他们的数据绑定函数,对于Listview控件来说就是它的适配器getView()函数 @Override public View getView(int position,View convertview,ViewGroup parent){ Fruit fruit=ge...

阿里面试题

最近项目中需要研究了一下有向图的环路问题。一个IT企业中有成千上万个应用,各个应用之间都是相互依赖的,一个用户请求进来后,会调用一系列应用,比如A调B、B调C、C调D等。这样所有的应用形成一个有向图,那么如果这个有向图中出现了环路,就悲剧了,用户的请求如果进入这个环路,那么他永远也得不到响应。所以就有需要去判断这个应用组成的有向图中是否含有环路,如果有就要打印出所有的环路(打印的时候按...