徒手打造一款为业务赋能的小工具,另附实战经验…

2020-04-04 16:05:52来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

徒手打造一款为业务赋能的小工具,另附实战经验。

线上应用程序升级,需要把缺失的数据关联补充一下,你写个程序处理一下?

客户信息同步,由于是线上敏感字段都是加密处理,所以需要你再写个程序解密处理一下?

曾记得 N 年前,我经常干这种事情,码这种代码。今天回过头来,对此类事情简单做一个分享,以防你们也遇到此类问题,不妨拿去实践一下,说不定会提高效率呢。

 

01. 说思路

 

640?wx_fmt=png

 

其实上图已经把问题解决思路,简单明了化了,还是再重复解释一下。

 

首先要写一个 Java Main 函数, 接收应用执行所需的参数,例如:数据库连接 URL、用户名、密码;待更新数据的时间等等。

 

然后需要提供一个触发 shell 脚本,术业有专攻,考虑到运维同事在线上操作的方便,一键便可运行。

 

思路清晰之后,其实写数据处理的程序一点都不难。

 

数据处理程序最基本、最简单的写法可以用 JDBC;略显牛掰的可以用 MyBatis,程序写完部署到线上时只需要编译后的 class 文件;另外程序需要引入数据库相关类库(jar 包)以及用到的三方类库;偶尔会接到结合源数据 srcData 来处理线上数据的需求场景。

 

所以线上发布的 package 大致如下:

640?wx_fmt=png

classes 用于存放编译之后的数据处理程序	
lib     用于存放数据库相关jar包以及三方类库等	
notifyDataUpdate.sh 用于触发数据处理程序的脚本	
srcData.txt 源数据(偶尔会解析源数据入库更新等操作)

 

02. 讲实现

 

上面已经说过,写数据处理的程序一点都不难,这个小儿科的东西,也不是咱们今天分享的重点(不懂的,问一问度娘,度娘会告诉你一大堆)。

 

接下来咱们还是重点聊一聊,如何编写触发数据处理程序的 shell 脚本吧,一言不合,直接抛代码。

#!/usr/bin/ksh	
LANG=zh_CN	
export LANG	
echo "----------" `date` "--------"	
cd /usr/app/p2pDataUpdate	

	
# do business	
APP_BASE=/usr/app/p2pDataUpdate	
LIB_BASE=$APP_BASE/lib	

	
CLASSPATH=./:./classes	
CLASSPATH=$CLASSPATH:$LIB_BASE/db2jcc_license_cu.jar	
CLASSPATH=$CLASSPATH:$LIB_BASE/db2jcc.jar	

	
export CLASSPATH	

	
java P2PDataUpdate jdbc:db2://localhost:50000/dev username userpwd /usr/app/p2pDataUpdate

  

仔细看的你们,应该发现很简单,就是进入应用目录,然后配置 CLASSPATH,最后运行 java Main 再加上参数。

 

这样运维同事在线上操作时,就无需关注数据处理 Java 程序这些东东啦,直接运行 shell 脚本就 ok 了,术业有专攻,那么运维遇到 shell 脚本,应该是最亲热不过了。

 

03. 写最后

 

分享了个简单的数据处理工具,如果我们再配上一个 crontab 定时调度 shell 脚本,那么就可以解决业务数据定期同步的场景啦(这个场景用的也比较多)。

 

为了让你们轻松玩转上面这款工具,最后再分享一些经验(躺过的坑)吧。

 

经验一:shell脚本中的空格如何去除?

sed -i 's/\r$//' XXXX.sh

经验二:shell 脚本中如何传入当前的日期?

LD=`perl -MPOSIX -le 'print strftime "%Y-%m-%d", localtime(time()-86400);'`	
echo LD=${LD}	
java P2PDataUpdate jdbc:db2://localhost:50000/dev username userpwd ${LD}

经验三:如何修改 Linux 的时区?

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

经验四:如果数据创建时间 intime 字段有索引,注意下面的拼接才会走索引呦

intime>='2012-04-01-00.00.00.000000' and intime<='2012-04-30-23.59.59.999999'

  

希望今天的简单分享,能帮助你们提高工作的效率,腾出更多时间去喝咖啡。

 

 


原文链接:https://www.cnblogs.com/socoool/p/12629796.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:实际开发中 dao、entity的代码怎样自动生成?一款工具送给你

下一篇:详解时间、空间复杂度(内含彩蛋~~)