Android 之 FileProvider

实现一个拍照上传的功能,在miui机型上会抛出FileUriExposedException异常。检查后发现是Android API有变化。从Android 7.0开始,不再允许在app中把file://Uri暴露给其他app,否则应用会抛出FileUriExposedException。原因在于,Google认为使用file://Uri存在一定的风险。比如,文件是私有的,其他app无法访问该文件,或者其他app没有申请READ_EXTERNAL_STORAGE运行时权限。解决方案是,使用FileProvider生成content://Uri来替代file://Uri。
继续阅读“Android 之 FileProvider”

RMI服务多网卡问题

项目中使用了一些RMI服务,部署发现在linux环境下监听了端口,但无法被其他机器调用。于是打印出log分析情况。

注:如果使用spring框架,打印日志需要引入slfj4-api。

在开发环境下(Windows)输出日志如下:

同样的程序部署到生产(linux),输出日志如下:


可以看到,在window下监听的是内网地址,但在linux下是本地127.0.0.1。
继续阅读“RMI服务多网卡问题”

一次集成aar的经历

公司和某知名支付公司合作,互相交换渠道。对方使用我们的扫码和公众号、服务窗支付。我们使用对方的支付宝APP支付。一切准备工作弄完后开始接入。

对方扔过来的sdk是aar的,当时就傻眼了。以前只用过jar,没用过aar。于是上网恶补了这部分的知识。不禁感叹到,如果aar早些出来,当时就不用那么辛苦手写布局了。
继续阅读“一次集成aar的经历”

2015年8月29日凌晨

凌晨3点多梦醒,本来想继续睡的,却怎么也睡不着,各种思绪在脑海中飘浮,突然觉得有一点东西要写。

从高三起就有写网志的习惯,用于总结各种事或者做技术分享。到后来朋友圈泛滥,整个互联网是越来越浮燥,我和朋友们的网志更新也越来越少。最近因为忙,没有时间分享JAVA NIO推送,不过我遇到了比这个更值得分享的事……
继续阅读“2015年8月29日凌晨”

mod_jk奇怪的连接问题

最近进行了一次生产环境的迁移。原来的环境是做了虚拟化,所以迁移时把原来的虚拟机保持状态停用,再复制一份。但就是这么简单的理论上不会有问题的迁移,出现了奇怪问题。具体表现在,系统运行一段时间后tomcat无响应。

生产上的应用系统是使用apache+tomcat集群,所有的请求由apache的mod_jk转发至tomcat的apj13监听端口。系统运行一段时间后,tomcat无响应。tomcat1的apj13端口是8010,tomcat2的监听端口是8011。使用

netstat -nt|grep 8010|wc -l

netstat -nt|grep 8011|wc -l

查看到各有二百多个连接。
继续阅读“mod_jk奇怪的连接问题”

对账FTP的建设

环境:redhat 5.6 企业版、proftpd

需求:我们采用FTP形式提供给商户对账文件,商户自行使用FTP账号密码登录获取对账文件。我们系统对FTP需要有读写权限,而商户只能有读取权限。

分析:首先需要建立规则模版化。目前我们提供给商户FTP的账号统一使用商户号,默认密码为商户号后6位。而我们平台针对每个商户的FTP存放对账文件,FTP登录名以h为前缀加上商户号后5位,密码为统一密码。

即然规则统一确定,那么应该写成shell脚本以便日后重复利用。proftpd使用的是linux系统账号,所以每增加一个FTP账户需要增加一个系统账号。但是为安全起见,该账号是不能使用ssh登录的,所以在建立用户时需要指定bash为nologin。所有建立的用户都应该属于FTP组,提供给商户的用户home目录与我们平台使用的FTP账户目录共享,并设置权限为750(目录所属者可读写,目录所属组可读,其他用户不可访问)。以下是我的shell脚本:
继续阅读“对账FTP的建设”