推荐下徐飞的专栏

最近在极客时间看了徐飞的专栏《技术与商业案例解读》,大概看了90%的文章,专栏里谈论了很多的西雅图和硅谷科技公司的兴衰故事,虽然很多公司以及人物之前都有所耳闻,但是对他们的了解却比较肤浅,这个专栏可以帮我我们开拓眼界,改善思维方式。

徐飞,浙大本科,佛罗里达大学博士,主要精通大数据领域,前微软和Tableau员工,现在在华为云。专栏里有很多是大数据相关的,除此之外,还有”亚马逊领导力准则”、”Dota帝国”、“从面试看企业文化”等一些文章,具体可以点击这里

每篇文章都有音频,非常适合上下班的路上听一听。

(更多…)

继续阅读 →

服务号、订阅号、小程序和企业微信的关系

首先,他们都是属于微信的公众平台。服务号是企业或其他组织用来在微信上服务自己的客户的,比如银行、电信运营商等,可以直接出现在用户会话列表。订阅号用来传播资讯新闻等,用户的所有订阅号会放在”订阅号消息”会话里。服务号和订阅号合称公众号。

小程序大家都知道,开发者可以基于微信开发应用,跨平台,一次开发到处运行,成本低。企业微信原来叫做企业号,是团队沟通工具,类似于slack。企业微信除了团队内部沟通,还可以添加其他企业人员为好友,还可以添加普通的微信好友,这样toB的客户和toC的客户都可以触及到。

(更多…)

继续阅读 →

Spring Boot要不要搞?

最近抽空学写了下Spring Boot,它旨在简化Java应用的开发。利用自动配置的特性,你可以少写很多配置代码,利用COC(Convention Over Configuration),你可以直接上手,快速投入到你业务的开发过程中。

刚开始听说Spring Boot的时候,我是拒绝的。最早学习Spring,是通过《Spring实战(第四版)》开始的,这本书覆盖了Spring开发的方方面面,是一本极好的入门书籍。然后我还写了个模板项目,配置好了一些常用的东西,比如第三方库、数据库配置、资源路径等等。当我以为自己算是踏入Java Web开发的大门的时候,发现我在github找的一些开源项目都是使用的Spring Boot,而且拉勾上很多职位都对SB有要求(说明已经被广泛应用了),再加上Spring Cloud是基于Spring Boot的,我决定上手试一试。

(更多…)

继续阅读 →

Actuator不支持Gson?

Spring Boot提供了Actuator,用来监控和管理运行中的系统,添加一句依赖之后,就可以在/actuator/health和/actuator/info下查看信息了。

Gson是谷歌提供的一个json类库,作为一个Android开发,自然是选择用他。Spring Boot是支持Gson的,只需要在build.gradle添加一句依赖,在application.properties添加一句配置就可以用了。

然而,他俩同时用会出问题。Actuator为了安全,默认的暴露出来的路径很少,只有上面说到的两个,其实有用的信息还有很多,可以通过配置将所有的路径都打开。当我想通过/actuator/beans查看所有的bean的时候,报错了,提示缺少type adapter。

(更多…)

继续阅读 →

我的近况

经常有朋友问我最近在忙什么,是不是发财了咋没有上班?

当然没有。去年初从上一家公司离职后,我一直靠做点小活赚钱。后来时常到外地,因为家里事情多以及强度大就不干了。自从10月之后就一直没有找工作,也没有接活,就在家发发呆,看看娃,学学以前想学的东西。

今年过完年之后,我就在各大程序员兼职平台上注册了账号,开始有意识的地接活,这个过程倒是挺有意思的。你需要对过去做个整理,对自己有个重新的认识,毕竟已经好久没有写过简历了。另外你需要对自己进行包装,尽可能让别人信任你,觉得你技术和人品的都还行,这个我也在探索之中。的确有人会来咨询,也会受到别人的否定,不过最重要的是我增加了与人的交流,交流越多,机会也就越多。

最近就有个做外包产品的机会,我试试看能不能接下来并且完成它。

继续阅读 →

LiveData – 数据监听神器

LiveData我认为是Jetpack构架组件里最有用一个。

以前做项目的时候,不同页面里会经常显示一些通用信息,比如当前登录用户的用户名和头像等。这些信息都保存在数据层,你的UI如果想及时响应数据的变化,那么必须想办法去监听数据的变化。假设你的N个页面都有显示头像,那么用户进入你的App的设置页面,更改了头像,然后显示了头像的这些页面是不是得及时改变?

我以前是这么做的。使用EventBus,在各个需要显示头像的Activity里注册事件,用户改完了头像,发送一个事件,然后各个页面自己去更新。

LiveData提供了一个简洁优雅的方式来完成这种通用需求。我们可以给LiveData注册观察者,一旦数据变化,就可以响应。配合LifeCycle使用,可以获取当前Activity的LifeCycle,当LifeCycle到达DESTROYED状态的时候,把观察者给删除。也即是说,你在Activity的onCreate开始监听数据之后,就不用操心再在onDestroy去写代码了,取消监听是自动的,你省事儿了。

(更多…)

继续阅读 →

ViewModel能替代onSaveInstanceState么?

ViewModel出现之前,处理横竖屏的最佳实践就是使用Activity的onSaveInstanceState()来保存Activity销毁之前的数据,在onCreate()或者onRestoreInstanceState()的时候取出数据。有了ViewModel之后,你可能会思考,这两种方式都有啥区别,是不是只用ViewModel就行了?

仁者见仁智者见智。这两种方式还是稍稍有些不一样的,我们简单做个回顾:

(更多…)

继续阅读 →

使用ViewModel存储Activity数据

ViewModel是用来存储UI相关的数据的,Activity在横竖屏变化的时候会被销毁,然后再重新创建,如果你把你的数据存储在Activity中,那么新建Activity的时候这些数据就没有了,用户就会很疑惑,屏幕旋转了下怎么界面的东西就没了?所以需要把界面相关的数据存储下来,下回接着用。使用ViewModel就可以做到这一点。

你可能会问,我的App只有竖屏是不是需要考虑这些了?

答案是否定的。这种Activity重新创建的情况有很多,只要发生了configuration changes,就会重建,横竖屏切换只是其中最典型的一种,其他还有十几种,比如字体变化和语言切换等,你总不可能每一种都不管吧,用户瞎操作出问题了咋办。

(更多…)

继续阅读 →

生命周期组件LifeCycle

我们知道Activity有着自己的生命周期,在不同的阶段有着不同的回调函数,比如onCreate、onResume等等。这些回调是非常常用的,因为你时常要利用它们完成一些事情,比如你如果用EventBus的话,可能需要分别在onCreate和onDestroy中注册和取消监听器。类似这样的操作多了去了,需要一个方便的工具来做这些操作,那就是LifeCycle组件

LifeCycle类把生命周期给抽象了出来,包含了不同的状态和事件,事件一来,状态就变,参考下图:

(更多…)

继续阅读 →

初识Android Jetpack

Android Jetpack就是谷歌提供的一堆帮助你加速开发的工具,你不必再去重复地写样板代码,对于经常使用的一些逻辑代码,Android Jetpack已经帮你实现了,你能把更多的时间放在业务逻辑上。

Android Jetpack并不是全新的,他将我们所熟知的工具都整合到一起,比如AppCompat、LiveData、DataBinding等。又增加了一些工具比如WorkManager、Paging和Navigation等。

(更多…)

继续阅读 →