Android 进阶5:Glide4.0源码分析

这篇博客其实准备了很久,从Glide的各种使用到Glide的源码分析,Glide的源码很复杂,个人感觉,比LeakCanary,Eventbus等框架源码复杂很多,网上说别Picasso源码复杂,以后再看Picasso的源码吧。 本片博客打算分为三个部分 Glide的使用以及原理 Glide的源码分析 Glide的生命周期 1: Glide的使用 其实关于Glide 的使用,网上有很多,基本都是大同小异,在此不再陈述,这里说一些Glide的比较生疏的用法; 自定义添加动画 当我们第一次加载动画
分类: 其他 发布时间: 03-31 23:42 阅读次数: 0

NodeJs后端实现文件上传和下载

最近公司需要一些做基础服务以及一个APP的后台数据分析管理系统, 为了成为全栈工程师,自告奋勇的开启了Nodejs的开发后端。 现在有一个基础服务:file的上传和下载,关于为什么是基础服务?因为file的上传和下载与业务逻辑无关,不管什么业务逻辑都可能调用该接口,故称之为:基础服务。 还有:短信网关也属于基础服务。 声明:我的开发环境是:Express 闲话少叙,开启正文。平时后端的文件上传思路都是:前端——后端服务器——CDN服务器(存储文件的服务器)。其中前端到后端服务器使用的一般也就是
分类: 其他 发布时间: 03-31 23:42 阅读次数: 0

Android进阶6:View的事件分发机制源码

前言 关于事件分发机制,这个东西对于开发者,很重要,例如:解决滑动冲突;对于面试者,也很重要,比如:请描述一下View的事件分发机制~。说句实话,这个源码是看了很长时间,一直不敢写这篇文章,生怕误人子弟啊,说实话,刚开始刚觉很难,但是硬着头皮再看,也就那么回事了。。。 View分发机制的相关方法 View dispatchTouchEvent(ev) : 专门处理事件 onTouchEvent(ev) : ViewGroup dispatchTouchEvent(ev) : 它做的也就两件事,
分类: 其他 发布时间: 03-31 23:41 阅读次数: 0

Android进阶7:内存优化——LeakCanary原理分析

好的项目离不开健壮的代码,对于想要写出健壮的代码,解决内存泄漏是必须的。 对于LeakCanary,对于大多人是不陌生的,也就是检测内存泄漏的工具。可能在代码中我们会这样引入LeakCanary: //检查leakCanary和APP是否在同一个进程,如果是同一个进程就返回,不在同一个进程,就注册。 //因为不再同一个进程,不会对APP进程造成消极影响(如:APP进程变慢或者out of memory) if (LeakCanary.isInAn
分类: 其他 发布时间: 03-31 23:41 阅读次数: 0

Android进阶7:APK瘦身(减少APK体积)

对于Android开发来说,关于减少APK体积的重要性,就不再多说了,直接进入正题吧。 首先对于APK瘦身,分为两种:压缩资源,压缩代码 1:移除无用资源和无用代码 移除无用资源分为两种:手动移除和自动移除 手动移除: Android studio提供了相应的检测工具 Link : Analyze > Inspect Code 在控制台的Inspection Results中显示出需要更改或者删除的代码和资源。 关于Link, 在开发者网站可以看到更详细的信息: 使用 Lint 改进您的代码
分类: 其他 发布时间: 03-31 23:41 阅读次数: 0

Android进阶8:SharedPreferences原理分析

关于SharePreferences(以下简称SP)的使用,相信从刚开发Android都开始使用了,但是对于SP的原理以及SP的缺点可能很多人没有系统的认知。 首先说一下SP的结论: 容易因此ANR:SP不适合存储数据量很大的信息;同时JSON以及HTML最好也不用SP存储,因为特殊字符转义是非常消耗性能的。 全量写入:在apply或者commit的时候,会先添加信息到内存中,在开启子线程,将内存中的信息写入到磁盘中(先清空磁盘该文件的信息,在全部写入)。 跨进程不安全:Sp没有跨进程的锁,就
分类: 其他 发布时间: 03-31 23:41 阅读次数: 0

Android中级工程师面试总结

年关将近,很多小朋友都在考虑换个坑蹲蹲,我也不例外,实际上我定义的初中高级开发对应如下: 初级工程师 1-3年 中级工程师 3-5年 高级工程师 5年以上 初级工程师:前两年基本都是——多处理一些场景,也就是扩展广度,在两年到三年的这一年是很关键的,需要扩展广度的同时,还要扩展深度,不过这个深度具体是大到什么程度,就根据个人情况了。 举个例子:我用了一个框架,这个框架怎么用?哪种场景使用?为什么这么用?原理是什么? 中级工程师 :由于我自己已经工作了三年,现在可以说是中级工程师了,一般来说现在
分类: 其他 发布时间: 03-31 23:40 阅读次数: 0

kubernetes service 和 ingress

kubernetes 服务端口暴露,四层负载均衡service配置和七层负载均衡ingress-nginx配置
分类: 企业开发 发布时间: 03-31 23:40 阅读次数: 0

普通人赚钱的4种进阶,从大学毕业后一定要掌握

                              普通人赚钱的4种进阶,从大学毕业后一定要掌握 90后都是22或23大学毕业,然后通过自己的专业找到一份工作开始
分类: 企业开发 发布时间: 03-31 23:40 阅读次数: 0

第四天重定向tr命令用户名密码修改

直接指针间接指针ext4格式硬链接特点不能跨分区[mage@centos7data]$ln/root/f3/data/f3.lnkln:failedtocreatehardlink‘/data/f3.lnk’=>‘/root/f3’:Invalidcross-devicelink硬链接本质是一个文件多个名称,夸分区则文件不同不能针对目录[mage@centos7data]$ln/data/d
分类: 企业开发 发布时间: 03-31 23:40 阅读次数: 0

设置Azure VM启用诊断

需要对 Azure 虚拟机进行故障排除时,可以使用Microsoft 提供的Azure 诊断。 诊断可以在运行虚拟机实例上捕获系统数据和日志记录数据。 诊断数据传输到所选的存储帐户。 本文将介绍如何在Azure 虚拟机上设置诊断、如何选择要收集的诊断信息的类型。1.登录Azure 门户2.在左侧导航栏中点击虚拟机3.选择需要设置诊断的虚拟机,然后点击监视中的诊断设置,点击启用来宾级别监视在通知中可
分类: 企业开发 发布时间: 03-31 23:40 阅读次数: 0

CSS实现父元素半透明,子元素不透明的问题

关于这个问题,其实是不熟悉opacity和rgba,下面解释一波~ 颜色我们都知道有RGB,在RG个新的值,成B颜色模型增加了一为了RGBA颜色模型。最后一个是alpha通道的值,取值在0.0到1.0之间。 共同点: 两者控制透明度的都是一个小数,从0到1,0.0是完全透明,1是完全不透明。 不同点: opacity属性的值,可以被其子元素继承!!! 让我看看代码如下: <style type="text/css"> .box{ width:
分类: 其他 发布时间: 03-31 23:40 阅读次数: 0

JS浮点计算的问题以及处理

在使用浮点计算的时候明明1.56+0.07=1.63,小学生都会算的,可是计算机为什么算出来很长一段数字呢? 因为JavaScript 里的数字是采用 IEEE 754 标准的 64 位双精度浮点数。该规范定义了浮点数的格式。 不说话直接上代码看看: <div> 数字1:<input id="input1" name=""> </div> <div> 数字2:<input id="input2" name=""> </div> <div> <button id="add">+<
分类: 其他 发布时间: 03-31 23:40 阅读次数: 0

ionic3保存图片到本地相册

1安装 PhotoLibrary插件允许通过URL访问设备中的照片。因此,您可以使用普通的img标签来显示照片及其缩略图,以及不同的第三方库。还支持将照片和视频保存到库中。 npm install --save @ionic-native/photo-library ionic cordova plugin add cordova-plugin-photo-library --variable PHOTO_LIBRARY_USAGE_DESCRIPTION="To choose phot
分类: 其他 发布时间: 03-31 23:39 阅读次数: 0

Jquery实现TreeGrid的效果【多级checkbox逻辑】

直接上代码吧: HTML: <section style="display: flex;"> <div>TreeGrid:</div> <div style="flex: 1"> <p style="margin-top: 0;"> <input class="all-check" type="checkbox" name="vehicle" value="Bike" />全选</p> <div style="background: pink;margin-b
分类: 其他 发布时间: 03-31 23:39 阅读次数: 0

Vue中配置Sass

NPM中SASS的详细指南 1.创建自己的Vue项目 2.按照Sass依赖包 npm install sass-loader node-sass --save-dev 因为sass-loader需要node-sass和webpack 作为peerDependency。 3.在build文件夹下的webpack.base.conf.js的rules里面添加配置 { test:/\.scss$/, loaders:['style','css','sa
分类: 其他 发布时间: 03-31 23:39 阅读次数: 0

帮你搞定JS混淆的apply,call,bind~~

this对象指向会经常改变的,这会造成一些意想不到的影响。JavaScript提供了call、apply、bind这三个方法,来切换/固定this的指向。 首先说说他们三个之间的区别~ 相同点: 1、apply 、 call 、bind 三者都是用来改变函数的this对象的指向的; 2、apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文; 3、apply 、 call 、bind 三者都可以利用后续参数传参; 不同点: 1、bind 是返回对应函
分类: 其他 发布时间: 03-31 23:39 阅读次数: 0

关于DOM的增删改那些事

DOM的了解 Dom是针对HTML和XML文档的一个API(应用程序编程接口),它秒回的是一个层次化的节点树,允许开发人添加,移除,和修改某一部分。 Document 1.Document类型可以表示HTML页面或基于XML的文档,不过最常见的还是作为HTMLDocument实例的document对象。 //所有浏览器都支持 document.documentElement和document.body var html =document.documentElement; alert(h
分类: 其他 发布时间: 03-31 23:38 阅读次数: 0

JS中对象比较数组对象中数据,没有增加有替换

设置一些模拟数据 //模拟数组 var arr = [ { id: 1, child: { id: 111, content: 'aaa' } }, { id: 2, child: { id: 222, content: 'bbb' } }, { id: 3, child: { id: 333, content: 'ccc' } } ] //模拟对象 var obj = { id: 3, child: { id: 333, content: 'ddd' } } 第一种方
分类: 其他 发布时间: 03-31 23:38 阅读次数: 0

JS判断当前是哪个浏览器

最近一直接触底层代码,测试中发现IE浏览器以前判断的方法行不通了。 上例子吧: var explorer =navigator.userAgent; //ie if (explorer.indexOf("MSIE") >= 0) { alert("ie"); } //firefox else if (explorer.indexOf("Firefox") >= 0) { alert("Firefox"); } //C
分类: 其他 发布时间: 03-31 23:38 阅读次数: 0