记一次生产环境上线的经历

最近写了一个项目,也是两三年没写后端的我再次尝试后端项目,在开发和部署的过程中,都遇到了许多奇奇怪怪的问题,
记录下来,也算是对这段时间惊心动魄经历的一次总结吧。

K8s容器内部时间错误

项目上线后,是使用Docker+K8s进行运维和部署的,但是测试环境是普通ECS主机。测试环境一切正常,
但是在生产环境出现了订单时间出现了错误,起初是认为自己项目时间没有做"UTC+8"处理,或者是mysql连接时
未指定时区。不过这两点检查之后,都没有问题。最后把目光放到了容器里。

Java关于时间操作整理

由于最近的项目中,经常需要对时间进行操作和计算,每次搜索出的计算方式都不一样,为了保证代码的统一性,还是仔细的看一下,java的时间和相关处理类,到底都有什么吧。

Date (java.util.date)

Date类的大部分方法都被标记为Deprecated过时方法。在java1.8之后,增加了新的时间处理类(java.time)。

AndroidStudio生成模板代码

由于我的项目是MVP分层架构的,其实分层架构本身是一个好事,结构清晰,代码的健壮性强,但是每次创建页面都需要生成四五个类,页面一多,就要重复非常多次,这样的效率太低了,那有没有什么办法可以一次性,将样板代码生成好呢?

答案当然是有的,注意过么,每次我们通过AndroidStudio创建一个新Activity的时候,是会生成完整Activity模板代码的,那么我们是否可以自定义这个行为呢?

可以的!方法如下:

首先进入到AndroidStudio软件目录下android-studio\plugins\android\lib\templates\activities\,这里面可以看到很多熟悉的名字,这就是平时使用的模板的存放位置。

在这里可以建立一个模板文件夹,举例为MVPActivity。也可以复制一个模板以此为基础修改。

Android指纹识别功能的接入

在指纹识别手机没有大规模普及之前,许多app提供了使用手势密码进行快速登录或解锁的功能。但是在指纹识别大规模普及的今天,安卓的许多app还是仅支持收拾密码登陆功能,一方面是出于安全性的考量,另一方面是出于对适配兼容的担忧。一但用户进行了Root的操作,那么指纹识别的结果将变得不可信。

最近在寻找市面上常用的密码本软件的时候,发现大部分指纹密码软件支持通过生物识别解锁app。也许是指纹识别的兼容支持变好了?查阅资料发现,安卓对指纹识别的功能进行过封装,使用FingerprintManagerCompat可以轻松对指纹识别进行对接操作。身边8台不同品牌和版本的测试机,都可以正常的使用指纹验证功能。

但是由于Android统一封装指纹功能是在Android6.0后才加入的,这里也只对6.0以上的版本进行指纹识别功能适配。

那么来看一下指纹识别该如何去实现和接入吧。这里为了方便接入,讲指纹识别的全部功能,封装到了一个Dialog中,当打开次dialog时,就可以进行指纹识别了。

解决EditText中InputFilter与联想词输入法冲突

这一天,产品提出了一个神奇的需求:用户姓名设置框限制,允许最多8个汉字或16个英文字母或数字。
简单来说就是长度限制最大为16个字符,一个汉字认为是两个字符。虽然其实跟用户解释一个汉字等于两个字符这件事情是很奇怪的,但是毕竟是需求,我们来实现一下吧。

首先简单说一下要求:

  • 只允许输入数字汉字或英文字母
  • 输入限制为最大16字符
  • 汉字计为2字符,数字和英文计为1字符
  • 当输入超过16字符时(如拼音输入法一次性输入多个文字),输入内容截取到最大部分

多EditText页面如何清除输入焦点

开发中,如果需要清空EditText的输入焦点,一般情况下都需要使用EditText.clearFocus()
但在当一个页面中有多个EditText输入框时,clearFocus有时却无效,清空焦点之后,焦点会重新回到第一个EditText。
那么是不是说明clearFocus在多EditText情况下无效呢?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×