自定义博客皮肤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)
  • 收藏
  • 关注

原创 尝试加载一千张照片(二)

CoolGlide 是学习Glide的过程中,动手写的一个简单版本。主要是为了进一步了解Glide的设计原理。背景我在大三的时候写了一个简单的个人云盘,我想把手机里面的照片上传到云盘上,这之前需要展示手机里面的照片,最简单的做法就是像微信朋友圈发照片那样。但是实际上,整个网格列表特别的卡。卡的原因有两个:一是主线程中取加载Bitmap导致UI不能相应操作,二是内存中大量Bitm...

2019-10-13 14:21:50 165

原创 折腾 | 尝试肉体加载一千张照片(第二次尝试)

愿未来的自己看到这篇文章,庆幸自己的努力。 加油!CoolGlide 是学习Glide的过程中,动手写的一个简单版本。主要是为了进一步了解Glide的设计原理。详细代码:GITHUB 传送门背景我在大三的时候写了一个简单的个人云盘,我想把手机里面的照片上传到云盘上,这之前需要展示手机里面的照片,最简单的做法就是像微信朋友圈发照片那样。但是实际上,整个网格列表特别的卡。卡的原因有两个:一...

2019-09-21 13:43:29 631

原创 折腾 | 尝试肉体加载一千张照片

以下内容完全是探索性的尝试,加载大量照片请用Glide或者Picasso背景,我在捣鼓一个图片上传App,我需要上传手机上的照片,首先要把照片显示出来,类似于微信发送朋友圈选取照片的场景。假说我用一个RecyclerView去显示所有的照片(1000张)。在不适用Glide的情况下,如何尽可能好的去加载这些照片。加载一张照片可以直接imageView.setImageBitmap(B...

2019-06-18 14:15:06 899

原创 基础 | View基础

1. View位置参数参数含义获取方式(mLeft , mTop) (mRight , mBottom)左上角点和右下角点相对于父容器的坐标getXXX()x,y可视View左上角的位置getX/getYtranslationX,translationY可视View相对于视图本体的偏移量getTranslationX/YmScrollX/Y...

2019-06-18 14:11:52 170

原创 进阶 | Handler使用

Handler运行机制Handler的消息机制如下图所示,主要包含两个消息队列,一个是消息的回收队列,另一个是Message Q队列。1 消息的回收队列:消息回收队列是为Handler提供消息对象的,当Handler需要发送消息时,首先从消息回收队列中获取已被清空数据的消息对象,若消息对队列中此时没有消息对象,则创建新的消息对象。当消息对象被使用后,不会直接被当做垃圾回收,而是会进入消息的...

2019-06-18 14:10:19 183

原创 基础 | Activity注意点总结

艺术探索第一章看完之后的总结和验证A打开B:onPause(A) -> onCreate(B) -> onStart(B) -> onResume(B) -> onStop(A),onPause方法中不能执行耗时操作,否则影响显示效果。在onRestoreInstanceState中恢复Bundle中数据和onCreate中恢复的区别,onRestoreI...

2019-06-18 14:08:04 173

原创 基础 | Service集锦

1. 后台服务后台服务分为可交互服务和不可交互服务。其区别在于启动服务的方式StartService()和bindService()。后者会返回Bind对象供Service中方法和处理结果,而前者不会。1.1 不可交互服务三个方法:onCreate,用于初始化服务,只会被调用一次。onStartService,用于执行任务,每次调用Context.startService(contex...

2019-06-18 14:06:58 200

原创 进阶 | Intent Service

如果此时你对Service有些模糊可先简单浏览一下Andriod中各种服务首先看一下Google给的介绍主要的内容就是:IntentService继承Service。异步处理请求,可以自己关闭自己。所有的任务由同一个线程完成。并且是串行执行的。作为服务,所以其优先级比一般的线程要高。IntentService封装了HandleThread和handler。HandleThreadHa...

2019-06-18 14:05:09 189

原创 进阶 | AsyncTask 源码浅析

AsyncTask方便我们从异步工作切换到UI线程。虽然是异步的但是依然不建议让AsyncTask执行过大耗时操作(超过10秒),如果需要让一个线程长时间保持运行,请用线程池。AsyncTask有三个泛型四个方法需要注意。简单介绍三个泛型:Params用于初始化,Progress用于设置进度,Result返回的结果,如果没有参数则设置为Void。四个方法:onPreExecute(),...

2019-06-18 14:01:44 211

原创 基础 | 属性动画

01 属性动画背景属性动画出现之前,有帧动画和View动画帧动画(FrameAnimation)就是将一个动画分成多个帧。有点类似胶卷电影。View动画最大的缺点就是不具有交互性。监听器和View动画脱离。优点是效率高。为了实现更丰富的动画效果,Google推出了属性动画。02 属性动画涉及的类类描述ObjectAnimator属性动画最重要的类了Ob...

2019-06-18 13:58:48 129

原创 基础 | Activity

1. 活动中使用Menu复写 OnCreateOptionsMenu(Menu menu) // 创建菜单 返回值要为TRUE,不然菜单不可见复写 onOptionsItemSelected(MenuItem item) // 设置监听器 通过Item.getId() 来判断点击的菜单2. 显示IntentstartActivity(new Intent(activit, OtherAct...

2019-06-18 13:56:22 129

原创 基础 | Broadcast

全局大喇叭-广播广播的作用:广播不允许开启新的线程,所以不能进行耗时操作。一般用来创建状态栏通知或者一个服务。1.按照广播的机制分类:标准广播:异步方式。所有的广播接收器几乎收到消息,不能被截断。类似于UDP的广播功能有序广播:同步方式。链式接受,广播在传播的过程中可以被截断。2. 广播的注册方式动态注册,有叫代码中注册静态注册,在AndroidManifest.xml中注...

2019-06-18 13:53:32 166

原创 《Kotlin入门实战》CH9 | 文件IO,正则和多线程

文件IO,正则和多线程得益于kotlin的扩展函数,kotlin对java中api进行了改进,对于java中好用的api直接使用,对于不好用的api进行了扩展和改进。1 文件IO操作读写fun main() { val f = File("test.txt") // 写入文件 f.writeText("hello kotl...

2019-05-20 19:34:00 194

原创 《Kotlin入门实战》CH8 | 泛型

泛型泛型是在Java5中引入的,泛型让集合框架可以重用代码,在没有泛型时候,集合框架中存储数据的类型都是Object,也就是说存入和取出数据都需要对对象进行强制类型转换。这就很可能出现错误。1 类接口函数上使用泛型泛型接口interface Send<T>{ fun handleMessage(t : T) : T;}fu...

2019-05-20 19:33:00 103

原创 《Kotlin入门实战》CH7 | 集合类

集合类在Java类库中有一套相当完整的容器集合类来持有对象。Kotlin没有去重复造轮子(Scala则是自己实现了一套集合类框架),而是在Java类库的基础上进行了改造和扩展,引入了不可变集合类,同时扩展了大量方便实用的功能,这些功能的API都在kotlin.collections包下面。集合类概述集合层次Iterable 可遍历...

2019-05-19 16:13:00 92

原创 《Kotlin入门实战》CH6 | 扩展函数与扩展属性

扩展函数与属性在Java中获取String中的第一个字符,StringUtil.firstChar(str)可能是这样写的,但是要想`"ABC".firstChar()是不可能的,因为Java中String是final类,在Kotlin中就不一样了。1. 扩展函数给String类中添加firstChar方法fun String.firstChar(...

2019-05-19 15:17:00 113

原创 《Kotlin入门实战》CH5 | 函数与函数式编程

函数与函数式编程函数式编程与命令式编程最大的不同是:函数式编程的焦点在于数据的映射,命令式编程(imperative programming)的焦点是解决问题的步骤。函数式编程和命令式编程比较fun main() { val list = listOf<Int>(1, 2, 3, 4, 5) // 函数式编...

2019-05-19 14:35:00 129

原创 《Kotlin入门实战》CH4 | 类与面向对象编程

类与面向对象编程从面向过程到面向对象,再到设计模式,架构设计,面向服务,Sass、Pass和Iass等思想,各种软件理论思想五花八门,但万变不离其宗:你要解决一个什么样的问题?你的问题是哪个领域的?你的模型(数据结构)是什么?你的算法是什么?你对这个世界的本质认知是怎样的?你的业务领域的逻辑问题、流程是什么?声明类1. 空类2. ...

2019-05-19 13:11:00 124

原创 《Kotlin入门实战》CH3 | 类型系统与可空类型

类型系统与可空类型Kotlin属于静态类型编程语言,编程语言中类型系统定义:如何将数值和表达式归为不同类型如何操作这些类型这些类型之间如何相互作用类型系统1. 类型系统作用让编译器检查无意义、无效、类型不匹配的错误代码代码更好读懂利于抽象 char[] str = {'a','b','c'}抽象为String str = 'abc'...

2019-05-16 09:58:00 90

原创 《Kotlin入门实战》CH2 | Kotlin 语法基础

写在前面kotlin 为啥用fun声明方法?JetBrains : We use “fun” because we like it - and yes, we do know what the word means in English.JVM语言生态需要注意的式Kotlin是基于JVM的语言,而不是基于Java的语言,他们都可以翻译成Class字节码。kotlin...

2019-05-15 21:01:00 141

原创 上岸了!感谢一路帮助我的人

从投第一份简历,到现在正好两个月。感谢两个月来身边的同学,牛客网小伙伴,我的学长,亲人等对我的支持,没有你们,我很难坚持到现在。三月很惨淡,百度不招Android,腾讯没给面试机会,阿里一面挂,头条两次一面挂... 一共投了二三十家,收到的面试寥寥无几,甚至没有哪一家能进入二面,整个人真的很难受。但是,找工作还是要继续要,渐渐的开始总结面试,把面试录音记...

2019-04-29 16:01:00 262

原创 进阶解密1 | Android系统结构

让我们将事前的忧虑,换为事前的思考和计划吧!整整一个三月,投了很多家,面试机会很少,目前还是0 实习Offer,要加油(ง •_•)งandroid 系统架构Android系统分为五层,从上到下依次是:应用层,应用框架层,系统运行库层,硬件抽象层,Linux内核层。系统架构应用层 System Apps手机上自带的软件,比如...

2019-03-31 17:21:00 101

原创 进阶 | View事件体系

这两天的面试,我发现很多东西我并没有了解其机制,只是停留在表面。1. View位置参数参数 含义 获取方式 (mLeft , mTop) (mRight , mBottom) 左上角点和右下角点相对于父容器的坐标 getXXX() x,y 可视View左上角的位置 getX/getY translationX,translationY ...

2019-03-09 11:37:00 127

原创 说一说DNS解析过程

DNS提供的服务简单来说就是查询域名对应的IP各种DNS服务器根DNS:13个根"服务器",大部分在老美家。你可能会问:全球的服务13台服务器就解决了?岂不是比双十一淘宝厉害好几个档次。实际上,这里应该说是13个服务器群,每一个根服务器是一个冗余的服务器网络,只不过对外表现是一个服务器。阿里还是很厉害的。顶级DNS服务器:顶级的意思是顶级域名,...

2019-03-03 11:12:00 195

原创 进阶优秀博客

持续更新:RxJava: https://gank.io/post/560e15be2dca930e00da1083RxJava:Android进阶之光Https:HTTPS和HTTP比较:https://www.cnblogs.com/wqhwe/p/5407468.html,TLS和SSL比较:https://www.cnblogs.com/...

2019-02-16 21:17:00 103

原创 源码 | Queue、Deque、ArrayDeque源码分析

ArrayDeque,Collection框架中不起眼的一个类有删改继承关系继承关系类名中的 Array姓氏,它是基于数组实现的。类注释中,有句话引起了我的注意:/** * This class is likely to be faster than * {@link Stack} when used as a stack, and faster than ...

2019-01-30 17:26:00 104

原创 算法 | 二叉树的遍历

前序// 递归public void preOrderTraverse(TreeNode root) { if (root != null) { System.out.print(root.val+" "); preOrderTraverse1(root.left); preOrder...

2019-01-25 20:42:00 92

原创 内部类的简单理解

内部类内部类,即定义在一个类的内部的类。为什么有内部类呢?我们知道,在java中类是单继承的,一个类只能继承另一个具体类或抽象类(可以实现多个接口)。这种设计的目的是因为在多继承中,当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清,因此用了单继承。而使用内部类的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承...

2019-01-22 11:32:00 94

原创 计算机网络 | TCP

TCP和和UDP区别 TCP UDP 方式 面向连接 非面向连接 可靠性 可靠的数据传输 不可靠 适用性 适合大文件 适合多媒体数据,可容错 速度 慢,需要确认机制 快,尽管发 基本概念发送缓存,应用层将数据递交给TCP缓存,就不管了 接受缓存,TCP接受数据放入缓存后,等待应用层来取 滑动窗口,窗口大小...

2019-01-21 21:30:00 110

原创 剑指Offer55 链表环入口(链表多指针遍历)

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。带有环的链表.png设置两个指针,快指针每次走两步,慢指针每次走一步两个指针同时走,直到相遇记录相遇点为B设置两个指针,一个从A出发,一个从B出发,必定在C相遇!为啥呢????当在B相遇的时候,快指针比慢指针多走了N个环快指针还差BC长度就走了...

2019-01-21 13:25:00 89

原创 剑指Offer45 扑克牌序列(挖掘隐含条件)

LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看...

2019-01-19 22:13:00 88

原创 算法 | 剑指Offer-36 二叉树深度(广度遍历)

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。难度:易计算二叉树深度的问题是基于二叉树的广度优先遍历,以下是递归和非递归 写法。递归写法public int TreeDepth(TreeNode root) { if(root == null) return 0;// 递归出口 // 树的...

2019-01-15 11:59:00 114

原创 剑指Offer-27 字符串排列

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解答思路:image.png这是牛客网解答上的一个图。大致意思是对于字符串“abc”,首先确...

2018-12-31 17:10:00 136

原创 算法 | 剑指Offer-24 二叉树中和为某一值的路径

问题描述:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)基本思路:二叉树的路径问题,基于二叉树的遍历。也就是说既可以是递归形式也可以是非递归形式。递归解决方案 以下是非递归方案:以下三点是主要考虑的问题。因为要计算路...

2018-11-18 21:13:00 108

原创 基础 | 属性动画

01 属性动画背景属性动画出现之前,有帧动画和View动画帧动画(FrameAnimation)就是将一个动画分成多个帧。有点类似胶卷电影。 View动画最大的缺点就是不具有交互性。监听器和View动画脱离。优点是效率高。 为了实现更丰富的动画效果,Google推出了属性动画。02 属性动画涉及的类类 描述 ObjectAnimator 属性动画最重要的类了 ...

2018-11-15 21:09:00 117

原创 Python基础 | Pandas 基础总结

Pandas 基于NumPy,为数据清理提供捷径数据结构序列Series,类似于numpy中的一维数组,不过Series带索引数据框DataFrame,类似于Numpy中的二维数组Series创建series两种方式series = pd.Series([1,2,3,4],index=['a','b','c','d']) # index缺省时候,就是一维数组了pr...

2018-11-14 13:53:00 98

原创 Python基本 | 语法

1Python基础1.1 Python七种基本数据类型:Number String Boolean List Tuple Set Dictionary int,float,complex * is string copy null is false [,,,] (,,,) set(,,,) { 'key':'val...

2018-11-14 11:03:00 127

原创 Linux 心路历程

1.心路历程折腾Linux快一年了,使用过各种发行版,从Ubuntu,openSUSE、deepin以及centos,再到现在的Mint。也从开始的各种心累,心态爆炸到现在的遇问思源,熟悉常用的指令,熟悉权限系统,文件系统。Linux Mint2.截图欣赏desktopterminalwork e...

2018-10-25 09:26:00 241

原创 理发师问题加强版-多个理发师问题

写在前面:这是睡眠理发师问题加强版的Java解决方案参考,是一次操作系统实验的分析报告。实验问题完整描述可参考实验完整描述以及要求文档。实验的完整代码可参考Demo。理发师问题描述:一个理发店由一个有n个椅子的等候室和一个有一个理发椅的理发室组成。如果有没有顾客来服务,理发师就去睡觉了。如果顾客走进理发店和所有的椅子被占用了,然后顾客离开了商...

2018-06-03 13:53:00 2839 2

原创 MySQL 安装及环境配置

写在前面第一次学习数据库,特以本文记之。为啥选择MySQL呢?因为oracle数据库付费,一般大企业才用得起。MS Server 太臃肿(微软全家桶了解一下)。作为一个关系型数据库初学者,我觉得开源的MySql再适合不过了。软件版本:MySQL 8.0, Navicat12 for MySQL任务/注意事项:安装时候注意,自定义安装和用户密码...

2018-05-25 23:31:00 127

空空如也

空空如也

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

TA关注的人

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