自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李益

他说:”岁月静好!”,我说:”宁静致远!”

原创 Android开发之MVVM模式实践(一):ViewModel的封装
原力计划

前言目前Android开发中,常用的几种项目架构模式分别是MVC、MVP和MVVM。当然根据项目的体量和业务的不同,可能还会对这几种模式进行融合,产生其他变种模式,这个我们暂且不谈。我们本篇的主角是最近越来越受欢迎的MVVM。随着Google在近两年推出了Jetpack系列的工具库后,MVVM的开发模式越来受开发者欢迎,毕竟是Google的亲儿子。对于开发中的MVVM模式,我们主要是依托DataBinding、ViewModel和LiveData这三者来实现。一、对于ViewModel的使用建议Vi

2020-07-05 15:06:21 269

原创 Python:人工智能库如何选择,百度图像识别入门

前言AI 是目前非常火热的一个方向,公司想要在未来有更加长足的发展,在AI 与人工智能领域的探索是必不可少的,在刚刚过去的四月份的上海科技博览展会上,部分参展公司的项目都已接入AI,比如看到的一个自助咖啡售卖机,使用了刷脸支付。当然,目前的这些AI和人工智能还有很大缺陷,因为用户行为是多变的,AI智能也只是在经过深度学习和大量模型训练后产生的,如果用户的行为习惯超出了你的训练范围,则有可能识别错...

2019-05-06 18:23:12 688 1

原创 微信小程序UI之旅:可分页加载,设置列数的智能瀑布流组件

前言在开始正文之前,不得不吐槽一下,小程序的限制好多。本来想在自定义组件中使用 slot插槽 ,让组件更加灵活的,结果 slot 并不能和 for循环列表一起配合使用,当 slot 写在循环体中时,只能被渲染一次,而使用 抽象节点 来代替的话,每次定制循环都要自定义组件,则更加麻烦,希望微信能做些优化。瀑布流结构瀑布流是一种很常见的布局,为了以后可以更加简便的使用,我们在本文会将瀑布流布局封...

2019-05-01 23:51:51 643

原创 微信小程序填坑之路(九):setData数据量过大的解决与分页加载的实现

我们经常使用setData方法来修改数据,从而达到更新页面的目的。但是当我们通过setData方法设置的数据过大时就会报如下错误。vdSyncBatch 数据传输长度为 2260792 已经超过最大长度 1048576这是因为setData设置的数据量是有限制的,单次设置的数据大小不得超过1024kb,否则就会出现如上错误。而我们在一些列表页面中,每次上拉加载更多后,会习惯性的把之前存在的...

2019-04-29 18:34:43 8362 1

原创 微信小程序填坑之路(七):scroll-view的scroll-into-view属性

前言最近做一个项目,有个页面中需要列表展示图片,并且刚进入展示页面的时候,不是直接显示顶部,而是显示列表中指定图片的位置。正好 scroll-view 的 scroll-into-view 属性可以滑动到列表中的指定 item 位置,就不用在额外去做别的实现了。scroll-into-view的注意点scroll-into-view 是 scroll-view 的一个属性,主要作用是用于滚动...

2019-04-21 20:30:48 2804

原创 微信小程序UI之旅:便捷的搜索框组件

前言做小程序开发有段时间了,开发中遇到各种各样的UI需求,很多都是类似甚至重复。虽然可以使用template和include来实现代码复用,但是它们都没有逻辑处理能力,有时一些简单的逻辑,我们更加希望可以直接被模板内部实现掉,所以更好的方法是直接封装成组件,最大程度的实现代码复用。本文及后续一系列文章将会介绍常用UI组件的封装,方便今后开发中使用,所有样式源码及示例将提交至开源项目wx-abu...

2019-04-15 18:20:55 594

原创 Python3学习笔记:清晰理解协程

线程和进程在了解协程之前,我们先简单了解一下进程与线程,并发与并行的概念。进程:是资源分配的独立单位。我们可以将其通俗的理解为电脑中运行的程序的实例,例如打开一个浏览器就是启动了一个浏览器进程,打开一个记事本就是启动一个记事本进程。线程:是操作系统调度的基本执行单位。当我们启动了一个浏览器时(即启动了一个浏览器进程),我们可能会做播放视频、下载文件等操作。在浏览器进程中,我们执行的这些操作...

2019-03-31 19:29:42 216

原创 Python3学习笔记:清晰理解迭代器、生成器以及yield表达式

前言迭代器、生成器与装饰器是python中非常重要的三个特性。对于迭代器,很多初学者理解起来不是很困难,但是学习生成器与装饰器时可能就会感觉云里雾里。本篇文章会用简洁清晰的方式讲解迭代器与生成器,同时记录一下最近的学习成果。迭代器(Iterator)在介绍迭代器之前,我们需要先简单了解一个概念:可迭代对象(iterable)。可以直接作用于for循环的对象,称之为可迭代对象,例如list、t...

2019-03-27 14:42:22 109

原创 Android:项目模块化/组件化的架构之路(二)

项目模块化的两种模式目前项目模块化大体可以分为两种模式,分别是submodule和multi-project。根据字面意思,我们就可以很容易理解这两种模式,下面就让我们来具体了解一下这两种模式!submodule模式如上图所示,项目中只有一个project工程,在project中构建多个module组件,每个module都有自己的git仓库,非常直观,这也是我们最常见的模块化架构。优点...

2019-01-21 16:20:06 830

原创 Android:超详细的本地搭建maven私服以及使用Nexus3.x搭建maven私服的讲解

前言在Android开发中,会经常遇到需要将写好的某个lib用于各个不同的项目中。一般的做法,就是将lib直接导入到项目中。但是假如lib有bug,那么所有使用lib的项目我们都要进去修改lib的bug,这样即繁琐,工作量又大。假如我们可以像gralde中添加依赖那样,直接一句implementation 'xxx'代码从maven仓库中调用lib,那么我们就不用再一个一个项目中去修复lib的b...

2018-12-06 15:05:31 1116 7

原创 彻底明白ip地址,区分localhost、127.0.0.1和0.0.0.0

通俗的理解ip是什么对于ip,大家并不陌生,在网络访问中,我们会经常使用到,那么ip是什么呢?其实如同我们的身份证一般,ip就是我们在网络中的身份证,具有唯一性,用于标识我们的身份。我们平时使用http协议对某个域名进行访问,如www.baidu.com,本质即为对域名绑定的ip进行访问。公网与内网中的ip一般我们会将网络划分公网与内网。在公网中,ip是全球唯一的,不会在公网中出现重复的...

2018-12-04 15:18:56 12572 3

原创 Kotlin学习笔记:NotImplementedError: An operation is not implemented

// 自定义的一个接口 interface OnTestCallback{ fun onTest() } // 用快捷方法生成接口内的方法 setOnTestCallback(object :OnTestCallback{ override fun onTest() { TODO("not implemented") //To change bod...

2018-11-16 11:14:37 158

原创 kotlin学习笔记:object关键字介绍与java中的静态变量与静态方法的实现以及@JvmField和@JvmStatic的使用

前言想要自己验证本文内容的小伙伴,请看文章《Kotlin学习笔记:如何将kotlin编译成java(必备小技能)》kotlin中的static:object对于java中的static我们并不陌生,并且使用的很平凡,那么在kotlin中,我们该如何定义静态变量和静态方法呢?首先,我们要明确一点,kotlin中是没有static字段的,也就是说我们并不能像java中那样,直接定义静态,这时我...

2018-11-14 18:34:52 2272 3

原创 Kotlin学习笔记:如何将kotlin编译成java(必备小技能)

使用kotlin也有一段时间了,最近突然想记录下学习的过程,也算对之前的学习有个交代。同时也希望本文能对刚刚学习kotlin的同学提供帮助!话不多说,下面开始正题!前言刚刚学习kotlin的同学,一般都是看别人的文章,或者学习教程来理解kotlin。在android开发中,用kotlin代替java,有的地方在初期学习时,我们可能不是很理解,为啥kotlin这么写就等于java那么写?举...

2018-11-14 11:45:03 2160

原创 Android:项目模块化/组件化的架构之路(一)

随着技术越来越成熟,这两年,组件化开发与插件化开发的热度一度高涨。对于组件化,有的人也喜欢称之为模块化开发,我也比较喜欢称之为模块化开发。使用模块化开发也已经有一段时间了,特此总结一下模块化开发的心得,防止以后忘记。什么是模块化开发对于模块化开发的概念,有的人可能还不是很了解,通俗的来讲就是:将项目中的具体功能模块,如登录、个人中心等,拆分成一个一个单独的module,将其中公用的功...

2018-11-13 18:22:59 8662 3

原创 Kotlin学习笔记:为什么要学习kotlin和kotlin的集成

Google在2017年的I/O大会上已经宣布kotlin正式成为Android的一级开发语言。为什么要学习KotlinGoogle发布申明,目前已经有35%的Android专业开发人员使用kotlin(爆发式增长)Google与Oracle源于Android的恩怨持续已久,也一直想要找一种语言代替JavaJava以后要开始收费了,可能导致一部分公司放弃Java当前已经有许多公司的...

2018-11-12 16:44:26 174

原创 程序代码中,怎么区分status和state?

在程序代码中,status和state是我们经常使用的两个单词,他们一般被解释为[状态]。但是虽然都被解释为[状态],但是它们的使用场景是不同的,对于具有强迫症,喜欢寻求真理的程序猿来说,必须得了解它们的区别,于是便引发了很多论坛对于status vs state的讨论,包括google在内。下面是我在知乎上看到的关于status vs state的比较通俗易懂的解释,也是赞同率最高的一个。...

2018-10-21 16:40:07 15071

转载 解析Android ListView工作原理及其缓存机制

解析Android ListView工作原理及其缓存机制 本文转载自:https://blog.csdn.net/Libmill/article/details/49644743 ...

2018-08-30 13:08:57 2662

原创 Android屏幕适配方案(出自今日头条)

最近两个月,今日头条公众号里推出的一款轻量级屏幕适配方案火了一把,身边好多小伙伴都不停的转发分享!今天终于有时间来给大家分析一下今日头条提出的适配方案了!各位系好安全带,要开车了!!!前言其实今日头条提出的方案,很早之前就有人提出过[check],但是一直不是传播的很好!直到最近,今日头条正式提出此方案,才使它被快速传播,这里不得不感叹品牌效应的威力!原理本方案的原...

2018-08-23 17:09:56 5148 1

原创 Android中MVP模式实战版(一)

从入坑android至今已经有三年了,感受颇深的就是项目的架构了。小项目不打紧,但是中大型项目就要仔细考虑了,否则后期维护以及扩展就是个大问题!目前经典的项目设计模式就是MVC、MVP以及MVVM三种,其他还有根据这三种的衍生种类就不说了,而这三种模式中,个人比较推荐的就是MVP了,虽然增加了代码量,但是稳定性很高,利于后期维护和扩展,毕竟谁也保不准小项目就做大了呢!下面内容就主要讲解一下M...

2018-08-17 16:12:09 1251

原创 Android中gradle的依赖:implementation与api的使用

当gradle插件升级到3.0.0及以上后,我们会发现在gradle中添加依赖的时候,会推荐你使用implementation或者api,而不再推荐你使用compile,今天就来简单介绍下这两者的使用与区别!让小伙伴们可以有目的的去选择implementation或者api。 apiapi的作用与compile相同,使用api添加依赖,会对外暴露其依赖的module的接口 ...

2018-08-07 10:58:30 2532 1

原创 Android的启动模式:singleTask与singleTop的使用

最近有小伙伴询问Activity的启动模式是使用singleTask好还是singleTop好,在两种模式中纠结,所以今天就简单讲解一下两种模式的使用场景!Android 的四种启动模式(网上一搜一堆哦)standard:默认模式,允许多实例singleTop:相比于standard,有新的启动请求时,只有在目标Activity处于当前栈顶时,才会调用onNewIntent()...

2018-08-06 15:48:10 13339

原创 微信小程序填坑之路(六):wx.getUserInfo 接口的变动与使用

前言 在微信小程序开发中,获取用户信息是经常会用到的!在之前,我们直接调用wx.getUserInfo接口,就可以直接获取用户的信息,然而为了安全考虑,从2018年4月30号开始,wx.getUserInfo接口不能直接调用,需要使用 <button open-type="getUserInfo"></button&am

2018-05-21 11:23:04 12566

原创 微信小程序填坑之路(五):简单的自定义组件

在微信小程序开发中,在很多地方会用到相似的UI布局时,如果我们每一页都重写一遍UI布局,不说效率低下,费时费力,在后期维护中如果需要更改UI布局,哪怕只是一个很小的改动,那么相似页面就都需要改动,工程量大!所以,这时我们可以将相似的UI做成自定义组件,在需要的页面引用,方便快捷!...

2018-05-21 10:19:17 1557

原创 基于DataBinding,实现Android所有尺寸屏幕的精准适配

fit-screen使用DataBinding的@BindingAdapter功能实现屏幕精准适配,适用于任何分辨率的手机目录原理优势注意点属性详解使用方法预览问题原理 (必看!必看!必看)本库原理与鸿洋大神的AutoLayout一致,根据UI给出的设计稿的尺寸,将设计稿的尺寸与我们实际的手机的宽高尺寸进行处理换算,获取换算比例ratio,例如设计稿尺寸为...

2018-02-16 17:22:01 2755

原创 微信小程序填坑之路(四):微信登录获取openid、unionid

在微信小程序中,因为各种各样的原因我们会需要获取到用户的unionid,但是小程序的wx.login()在一般情况下只能获取到openid,下面就简单来讲一下如何获取unionid以及当中的神坑。 微信登录在此之前,需要将微信开放平台绑定小程序,才可获取unionid错误示例: wx.login({ success: res => { ...

2017-11-18 11:53:43 34458 5

原创 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)

因为小程序是以微信为平台运行的,可以同时运行在android与ios的设备上,所以不可避免的会遇到布局适配问题,特别是在iphone5上,因为屏幕尺寸小的缘故,也是适配问题最多的机型,下面就简单介绍几种适配方法。 rpx适配rpx是小程序中的尺寸单位,它有以下特征: 小程序的屏幕宽固定为750rpx(即750个物理像素),在所有设备上都是如此1rpx=(screenWi...

2017-11-15 16:58:06 30912

原创 微信小程序填坑之路(二):cover-view

在一些情况下,我们需要对map、video、canvas、camera这些微信小程序的原生控件,进行自定义,比如在camera上添加一个矩形线框作为拍照区域,这时我们就需要使用到cover-view这个控件。 cover-view的使用方法与view基本一致,以下是一些注意点: 在同一父容器中,要在原生控件上添加布局,只能用cover类的控件,因为原生控件的层级处于顶层,即使将非cover类的

2017-11-15 16:31:10 36299 7

原创 微信小程序填坑之路:项目开发简介

前言 最近因为公司要求进行微信小程序开发,这里记录一下这一个多月下来的开发心得。首先,我得说明一下,我并不是一名前端,以前一直是从事Android开发,对html、css、js等也就是了解,可以说几乎就是小白,也是在开发小程序的时候临时学的。对于小程序开发,我只想说这个跟移动端真的没啥关系,以前网上一直有人说,开发小程序最好有过移动端开发经验,移动端人员开发怎么怎么顺利的,都是坑!!!前端开发小

2017-11-15 11:22:47 6967

原创 微信小程序填坑之路(一):text空格符号以及省略号

1、text的空格符首先需要设置<text> 控件的decode值decode可以解析的有  < > & '     值 说明 ensp 中文字符空格一半大小 emsp 中文字符空格大小 nbsp 根据字体设置的空格大小 例如: <text decode="emsp">提 交</text&gt

2017-11-13 18:25:05 7895

原创 AutoGridView:轻松实现微信朋友圈九宫格、点击添加更多、点击收起等功能

AutoGridView关于AutoGridView使用ViewGroup实现,可以如QQ空间与微信朋友圈中的照片那种九宫格方式排布(注:此处的九宫格排列不仅仅是可以按照QQ控件那种九宫格排布,只要宫格的个数达到可以开平方的要求(1x1,2x2,3x3,4x4…),都会按照正方形排列),同时AutoGridView也可以实现普通的宫格排布方式。此外AutoGridView还可以控制显示...

2017-09-29 17:01:20 1367

原创 图片查看器ImageViewer:轻松实现微信朋友圈、今日头条、横向列表、纵向列表等图片浏览效果

ImageViewer关于图片查看器,仿微信朋友圈图片查看效果,支持图片手势缩放、拖拽等操作,全新2.0版本,由1.0版本的Activity模式实现改为自定义View的模式显示,自定义图片加载方式,更加灵活,易于扩展,最低支持版本为Android 3.0及以上…演示点我看demo演示apk体验点我添加依赖Gradle Step...

2017-09-29 16:48:39 5170

原创 流布局的简单实现:FlowView(标签流什么的都so easy)

FlowView关于FlowView是一款流布局控件,采用Adapter模式,可以自定义item,更加灵活,使用起来就和ListView与BaseAdapter搭配一样简单,提供各种对齐方式,可以自适应高度,也可以设置item的高度,可以控制item的最大显示行数…演示先来看看效果吧! 添加依赖使用Gradle // 注:如果添加依赖成功,则此句...

2017-09-13 11:33:58 983

原创 Android开发中的MVP模式详解

在Android开发中,我们通常会去将项目分成一个个的模块文件夹,来进行管理维护,有的人是直接按照功能来分模块,这也是最常见的,有的人则会按照一定的设计模式,再结合功能来进行项目模式设计,比如MVP、MVVM这两种目前比较流行的项目设计模式,本文主要讲解MVP模式。MVC、MVP、MVVMMVC对于MVC我想大家应该都不陌生,最典型的MVC就是JSP + servlet + j...

2017-09-11 12:08:43 396

原创 Android开发中,常用工具类集合:Sutils,一款轻量级的Android开发工具类库

在Android开发中,我们会用到许多相同的方法,我们经常将这些方法归纳总结到一起,做成一个工具类。SUtils就是一个轻量级的Android工具类库,集成了众多平时开发用到的工具类,以后将持续更新!如果大家在使用中发现什么问题,欢迎大家及时反馈,如果大家有什么好的工具类推荐,也可以反馈给我,加到SUtils中。 添加依赖dependencies { compil...

2017-09-11 09:43:58 2969 6

原创 Android开发之MVVM模式实践(二):Activity的封装

前言上篇文章中我们主要讲述了MVVM模式中,ViewModel的封装《Android开发之MVVM模式实践(一):ViewModel的封装》,本篇文章将介绍Activity在MVVM中的封装。带有DataBinding的Activity基础封装Google为MVVM模式开发提供了许多不错的工具,DataBinding就是其中一员。DataBinding是Google于2015年在Android Stuido v1.3.0 版本中引入,于2016年4月在Android Studio v2.0.0 上正式

2020-07-05 16:35:34 85

原创 Python初学者使用Flask搭建一个个人博客的体验与感受

背景在开始介绍博客搭建之前,先介绍下站主的开发背景博主主要从事 Android 开发,目前5年开发经验同时熟悉小程序开发和涉及一些前端开发(主要是 vue 相关项目)Python 为站主从去年9月开始自学,用于公司内部使用的爬虫开发和简单的接口开发因为疫情期间,延迟复工,萌生一个使用 Python 开发个人博客网站的想法几个问题为什么不使用 WorldPress 或者 Hexo ...

2020-04-29 15:21:07 317

原创 Android进阶(一):5分钟带你了解JVM的内存分配

前言JVM的内存分配是一个老生常谈的话题了,但是如果开发者想要开发出高质量的APP,那么JVM的内存分配是必须要了解的。本文主要介绍JVM的内存分配。JVM的内存区域划分在网上一些介绍JVM内存分配的文章中,他们将Java的内存大致分为堆内存(heap)和栈内存(stack),这种划分的方式,体现了开发者最关注的区域,但是并不完全准确。JVM会将内存划分为若干个不同的数据区域,主要分为:程序...

2020-04-27 15:27:56 143

原创 Python爬虫之旅(一):小白也能懂的爬虫入门

爬虫是什么爬虫就是按照一定的规则,去抓取网页中的信息。爬虫流程大致分为以下几步:向目标网页发送请求获取请求的响应内容按照一定的规则解析返回的响应内容,获得想要的信息将获取的信息保存下来战前准备在正式开始前,我们先看下我们需要准备些什么:开发环境:Python3.6开发工具:PyCharm使用框架:requests2.21.0、lxml4.3.3以上是本次开发中使用到的...

2019-05-10 14:14:38 623

原创 微信小程序UI之旅:标签流组件的简单实现

效果图github传送门:https://github.com/albert-lii/wx-abui/tree/master/abui/widgets/ab-label-flowdemo传送门:https://github.com/albert-lii/wx-abui/tree/master/pages/mainex自定义属性和方法属性描述src数据源(数组)...

2019-05-06 11:43:59 179

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