java
文章平均质量分 57
sand_clock
向前看
展开
-
java -jar自动化
问题场景入职公司,基建有待提高,考虑将命令行部署服务进行脚本自动化。分析写了find.sh、findAndKill.sh、start.sh 3个脚本实现find.shjarName='business-start-1.0.0.jar'pid=$(echo `ps -ef | grep $jarName` | cut -d' ' -f2)echo "pid $pid"if [ -n "$pid" ] then echo "$jarName STA原创 2021-10-15 16:39:50 · 256 阅读 · 0 评论 -
storm-关于Tick的坑
问题场景优化storm下的一个bolt任务,测试时注释掉了一段关于Tick代码(为了不影响客户数据一致性),部署到测试环境报了个类型转换的错误。现象用了以下代码,是一个bolt部分代码测试环境启动后stormUI中的bolt作业报错 java.lang.RuntimeException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String @Override public Map&l原创 2021-01-07 19:52:37 · 333 阅读 · 0 评论 -
统计git工程代码行数
问题场景统计git上工程代码行数,去重不必要的文件,例如图片,idea的默认文件,日志文件等。开发环境idea+Java8+springboot2分析单个工程统计,脚本命令实现。Java代码通过JGit实现与git通讯,通过遍历主分支最新的commit实现。方案一实现切换到工程目录下后执行echo `find . "(" -name "*.java" ")" -print | xargs wc -l | tail -n -1`方案二实现引入maven依赖<dependen原创 2020-07-27 20:04:15 · 900 阅读 · 1 评论 -
慢SQL查询工具后台实现
问题场景来了个需求,给各业务线提供慢SQL查询提供一个工具,要求慢查询规则可定制,系统要实现SQL聚类及指标排序。本文着重对SQL聚类实现进行解析。开发环境idea+Java8+springboot2+perl+MySQLpercona-toolkit.ar.gz分析运维把慢SQL日志文件放在了ES集群里,需要每天定时抓取慢SQL进行聚类操作,调研发现2种方案:HanLP-面向生产...原创 2020-03-05 11:58:19 · 490 阅读 · 0 评论 -
纯后台生成echarts图片-phantomjs-2.1.1
问题场景后端需要定时发邮件,邮件正文带图片,图片要求每次即时生成。开发环境idea+Java8+springboot2echart-convert.jsphantomjs-2.1.1与字体分析phantomjs可以模拟浏览器执行js请求ajax等效果,俗称无头浏览器,可以用于客户端渲染。步骤下载上述资源,放入工程里,待调用。安装phantomjs-2.1.1及微软雅黑字体[图...原创 2019-12-27 15:18:25 · 1093 阅读 · 0 评论 -
监控文件夹下大小是否有变化
问题场景在写定时器时遇到个问题,当定时器扫描某一固定文件夹下的内容进行处理时,可能这个文件夹还在被追加内容,这样定时器处理的内容就不准确了,为了解决它,笔者准备了一个哨兵,在每次轮到定时器处理前让哨兵进行一次检测,通过检测进行处理,否则这次任务跳过。CODE/** * 判断指定目录下文件大小是否变化 * * @param dir 监控的目录绝对路径 ...原创 2018-10-31 16:33:15 · 1834 阅读 · 0 评论 -
python多线程带返回值案例
问题场景业务需要对网页进行PDF转换,用到了python的pdfkit模块。因报告是成批下来,每批几百例需要转换,为了加快报告生成效率,python里采用了多线程写法。笔者语言是java,所以利用了**Runtime.getRuntime().exec(cmd)**进行调用。环境:jdk8, python 2.7, ideaCODEimport threadingimport asti...原创 2018-10-31 16:17:16 · 2067 阅读 · 0 评论 -
插入大数据量方法-MySQL
背景有一个4千万行的4列字段文件data.txt要插入数据库,假设表名为table_name,字段分别为A,B,C,D,其中每行唯一标识为A+B,文件里面有重复数据(根据A+B确定),需要保留行数大的记录。解决方案方案一: 1、表结构设计:设置A,B为联合主键; 2、逐行读取文件,插入前根据A+B判断是否有重复,有则更新,没有则插入。 方案二: 1、表结构设计:先不设置A,B为...原创 2018-07-03 12:35:02 · 2927 阅读 · 0 评论 -
ChannelSftp下载文件含有中文名称的解决办法
问题描述项目里有一功能,要从FTP上上传或者下载文件,使用的是ChannelSftp来完成任务,jar包为com.jcraft.jsch_0.1.31.jar,一直运行稳定,直到有一天下载一个中文名称的文件却发现文件大小为0KB。问题分析尝试把文件名称各种编码再传参不好使。查看源码发现根本没有指定文件编码的方法。去官网下载一个最新的jar包jsch-0.1.54.jar,查看源码原创 2018-01-12 11:24:56 · 9610 阅读 · 2 评论 -
Javaweb多次调用Rengine re=new Rengine(args, false, new TextConsole()); 报错
问题场景按照前文rJava的安装与测试-不用每次设置VM参数‘-Djava.library.path’所述弄好了JRI,但是在项目里重复调用Rengine re = new Rengine(args, false, new TextConsole());这段代码时,项目会停止响应或者报错。解决方式既然重复调用不行那就让项目初始化时只调取一次Rengine实例就好了,采用单例模式即可。另外将你对应的j原创 2017-09-29 17:36:42 · 857 阅读 · 0 评论 -
web: _show -> _info 造轮子编程
问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自己页面的长期特点编写了自己的转换规则,其中采用模板模式实现,个性化转换直接继承抽象类即可。效果before: after: CODEpackage regular;/** * Created on原创 2017-11-13 17:21:45 · 326 阅读 · 0 评论 -
spring-ScheduledExecutorService+TimeTask-定时器实现
问题场景需求:每隔2小时抓取集群固定文件夹下的数据包进行分析产生报告。实现方式1、spring+ScheduledExecutorService+TimeTask2、https://blog.csdn.net/sand_clock/article/details/77866286解决步骤a 编写任务类b 编写监听类c 用ScheduledExecutorService调用任务a ...原创 2018-11-21 13:55:33 · 665 阅读 · 0 评论 -
spring-quartz-定时器实现
问题场景需求:每隔30分钟抓取集群固定文件夹下的数据包进行分析产生报告。实现方式使用quartz-1.8.5.jar解决步骤a 导入上述的jar包 b 编写作业类import com.jcraft.jsch.ChannelSftp;import itext.CommonUtil;import java.io.IOException;import java.io.InputStream;imp原创 2017-09-06 16:48:53 · 342 阅读 · 0 评论 -
手机端与PC端在线预览PDF
问题场景公司需要把出具的报告在PC端进行在线预览,之前一直用embed标签解决,效果很好。产品提出在手机端(微信链接或者手机浏览器)也要在线预览,尴尬的是安卓端提示的是下载,IOS端只能看不能滑动。经一番调研采用pdf.js完美解决。实现方式与资源链接pdf.js环境IDEAJDK1.8TOMCAT8解决步骤1、把下载的资源放到工程的webapp下2、页面代码 pdfShow...原创 2018-12-26 18:07:34 · 3070 阅读 · 0 评论 -
java生成PDF的几种方法
问题场景总结一下用java生成PDF的方法:A、itext-PdfStamper pdfStamper(俗称抠模板)B、itext-Document document(正常代码撰写)C、wkhtmltopdf(使用工具)分析比较方法优点缺点A代码简单模板要先提供,且字段长度固定、不灵活B模板可根据代码调整、但样式不如C灵活要维护的后台代码较多C...原创 2018-12-28 17:24:44 · 144267 阅读 · 23 评论 -
短语去重
场景负责的一个报告系统中需要对2个有’重复’词的短语去重,这2个短语必须符合第一个末尾的若干个词和第2个开头的若干个词一样,示例:ABC和BCD。去重后ABCD才有意义,最后展示在报告上,特此记录。环境idea Java8code/** * 抗疟疾能力 能力正常 => 抗疟疾能力正常 * @param name 抗疟疾能力 ...原创 2019-02-12 17:14:10 · 225 阅读 · 0 评论 -
pdf.js正式部署的坑
问题场景公司需要把出具的报告在PC端在线预览,之前一直用embed标签解决,效果很好。产品提出在手机端(微信链接或者手机浏览器)也要在线预览,尴尬的是安卓端提示的是下载,IOS端只能看不能滑动。经一番调研采用pdf.js完美解决,参考手机端与PC端在线预览PDF。测试环境完美展示,正式部署提示pdf文件损坏或者缺失。。。正式环境nginx+tomcat8测试环境tomcat8分析测...原创 2019-04-22 17:25:20 · 2933 阅读 · 3 评论 -
修改第三方jar包
问题场景从别的公司交接一个项目,用到一个jar包,根据需求需要修改某个class文件。环境jd-gui.exeidea解决步骤用jd-gui.exe直接打开jar包点击File -> Save All Sources 保存成压缩包 project_name.jar.src.zip解压压缩包,重命名为project_nameidea打开project_name在idea中...原创 2019-04-30 18:06:58 · 967 阅读 · 0 评论 -
ITEXT 把表格定位在固定位置
问题场景用itext生成pdf时,需要把某部分内容固定在一个位置,比如盖章位置被固定在每页最下方。环境IDEAjdk1.8导入的jar包:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jarcodeimport com.itextpdf.text.*;import com.itextpdf...原创 2019-05-16 17:05:58 · 7280 阅读 · 2 评论 -
Java统计脚本代码行数
问题场景项目完结后写软件操作手册时,需要统计一下整个项目有多少有效的代码行数,项目使用Java语言,涉及到前后台的脚本格式有.java、.xml、.jsp三种。问题分析一个脚本文件无非由注释语句,空行,和正常代码组成。发现注释语句由特定标签识别,例如Java里用’//’表示单行注释,‘/**/’表示多行注释,xml与jsp文件里用‘’表示注释,可以逐行读取脚本判断是否有这些特定标志与空行,剩下的就是原创 2017-11-02 13:16:04 · 542 阅读 · 0 评论 -
文件工具类的实用方法记录
文件工具类的实用方如题不定期更新。package file;import java.io.*;import java.math.BigDecimal;import java.math.BigInteger;import java.security.MessageDigest;/** * Created on 2017/10/19 * Author: youxingyang. */public final原创 2017-10-19 10:31:31 · 266 阅读 · 0 评论 -
ITEXT-插入水印(itext-pdfa-5.5.6.jar)
给PDF中的每一页都加上水印需导入的jar包:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jar思路: 1. 先生成不带水印的PDF,假设名为a.pdf 2. 遍历a.pdf,加上水印图片 3. 保存为最终b.pdf/** * 插入水印 * @param writer原创 2017-04-15 10:01:10 · 3144 阅读 · 1 评论 -
ITEXT-字体兼容Linux平台
问题场景在用itext开发完PDF之后,有要求Apache要部署到Linux下,也可能部署到windows下,由于笔者在Windows下开发的,字体没问题;但是Linux未必安装了字体,关于如何在Linux下安装字体请自行Google或者点击这里,那么代码也要扩展。代码需导入的jar包:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar原创 2017-04-18 13:12:39 · 10520 阅读 · 4 评论 -
ITEXT-PDF彩色字体显示-支持中文
问题场景利用itext自动生成PDF的过程中,一般情况下字体颜色都是黑色的,但是遇到一些小错误需要报出在PDF上,用彩色字体能达到效果。代码需导入的jar包:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jar /** * 用彩色字体加入警告 * @param document原创 2017-04-16 16:06:08 · 9786 阅读 · 0 评论 -
按照优先级排序List
问题场景应需求要对前端展现的数据排序,后端传过来的是个list,要求按照类A的某个字段排序,A类的M字段有几个取值,比如“0”“1”“2”“3”“9”,目标是按照 0 > 1 > 2 > 9 > 3的顺序排序list。解决方案用java自带的工具类Collections排序list,自定义优先级,按照要求输出CODEpackage list;import java.util.*;/** * Cre原创 2017-05-26 17:16:39 · 3467 阅读 · 0 评论 -
TOP-K
输入n个整数,找出其中最小的K个数package interview_offer_b;import java.util.Arrays;/** * @author 作者 yyx E-mail: yyxyyxyang@126.com * @version 创建时间:2015-7-11 上午7:59:53 * 题目: 输入n个整数,找出其中最小的K个数。 * 例如: * 输入:4,5,1,原创 2017-04-20 13:27:10 · 914 阅读 · 0 评论 -
ITEXT 目录生成的第三种方法(同时带有书签功能)
问题场景本篇接着ITEXT 目录生成的第二种方法继续下去,在上一篇博文中大体通过统计章节与对应页码来生成的,为保证每个章节唯一,正文中章节部分都是图片,不是很好,今天参照某位前辈的code改写了下。大体思路编写目录事件在写PDF的过程中设置标题与页码最后把所有内容(目录+主体)写入目标文件效果my code原创 2017-05-08 14:31:40 · 6851 阅读 · 14 评论 -
竖着排列字符串Java实现
问题场景在用JCommander维护命令行客户端时,需要列出所有命令。有两种方案可以解决:固定一个列,横着打印固定一个行,竖着打印代码 /** * 竖着打印字符串 * @param row 指定的行数 * @param string 要打印的字符串 */ public static void printColumn(int原创 2017-04-20 12:58:37 · 2297 阅读 · 0 评论 -
从HTTP和FTP上获取单个文件的大小
问题场景在维护命令行客户端导入命令时,需要初始化文件大小信息,而通过 URLConnection connection = new URL(this.importUrl).openConnection(); long blobSize = connection.getContentLengthLong(); 的方式获取ftp上文件的大小效果行不通,只能通过采用试探法去FTP上获取。CODEpr原创 2017-04-27 17:20:28 · 6354 阅读 · 2 评论 -
脚本执行jar包(使用自带jre)
问题场景写好了一个jar包,使用了Java8的新特性,需要发布给客户,考虑到客户并不一定会使用Java8,所以就把JRE8一起发布了,分为Windows和Linux两个版本,各自写了一个脚本来运行。脚本运行目录预览Windows:Linux:使用方法分别进入上图的目录执行:Windows: call client.bat <parameter1 parameter2 ...>Linux: ./sta原创 2017-05-19 10:55:35 · 8215 阅读 · 2 评论 -
有返回值的多线程示例
问题场景近期遇到用多线程优化程序,但是必须带有返回值,实现Runnable接口不可行,查看API,可以用Callable接口,试举一例。package thread;import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;/** * Created by yangyouxing * date原创 2017-06-01 20:14:14 · 1928 阅读 · 0 评论 -
正则匹配 ‘任意字符’,‘邮箱’,‘手机号码’
/** * Created on 2017/9/22 * Author: youxingyang. */public class Regular { public static void main(String[] args) { //匹配任意字符 String a = "ee878**62_-+=fasdf@汉字"; String ev原创 2017-09-22 14:42:07 · 700 阅读 · 0 评论 -
常用正则表达式
package regular;/** * Created on 2017/6/19 * Author: youxingyang. */public class Test { public static void main(String[] args) { String a = "[3] Heider, E.R.& D.C.Oliver. The structure原创 2017-06-19 09:35:29 · 370 阅读 · 0 评论 -
rJava的安装与测试-不用每次设置VM参数‘-Djava.library.path’
问题场景项目一直在用Java开发,但接下来要在Java中调用R的脚本执行某一制图任务,笔者采用JRI方式,先记录一下。笔者环境OS:win-10-64位 JDK:1.8.0_31(32位)如果不知道怎么看32位还是64位,打开cmd窗口输入java -version 命令, 如果有64字眼说明是64位,如果没有则是32位。R:R-3.4.1 官网:https://www.r-project.o原创 2017-09-19 15:55:10 · 2204 阅读 · 0 评论 -
ITEXT-定位PDF中图片的坐标与页码
问题场景:用itext自动生成PDF的过程中,想要在PDF中的某一页加入水印,这个水印图片的页码不固定,所以不能直接用‘sealStamperUnder = stamp.getUnderContent(page-1);’方式加入水印。但是该水印在某一固定图片的上一页,那么我们可以定位这张图片的位置信息,以此获取水印图片的页码信息。通过这种方法还可以获得图片的坐标信息。代码需导入的jar包:itext原创 2017-04-15 11:20:00 · 12387 阅读 · 12 评论 -
发送邮件
问题场景利用Java发送邮件作为审核流程的通知方式。CODEmail-1.4.jarpackage itext;import java.io.FileInputStream;import java.io.InputStream;import java.util.Properties;/** * Created on 2017/8/21 * Author: youxingyang. */p原创 2017-09-08 12:55:19 · 502 阅读 · 0 评论 -
sftp实现OS之间的远程传输文件与文件夹
问题场景最近的项目可能会要求从Linux环境下载文件夹到Windows,实现方式很多,本文采用com.jcraft.jsch_0.1.31.jar,支持递归上传和下载文件夹或者文件。算是对scp实现OS之间的远程传输文件的补充。CODEpackage ftp;import com.jcraft.jsch.*;import java.io.*;import java.util.*;/** * Cr原创 2017-06-23 19:01:13 · 739 阅读 · 0 评论 -
遍历list的三种方式
问题场景在IDEA里面用传统for循环遍历list的时候,提示‘for loop replaceable with foreach …’,为什么会提示?难道foreach的效率高?动手实验了一把。思考与比较首先foreach其实是语法糖,是对迭代器的简化,它让你不用关心索引的问题,即可遍历数组或者集合,但这也是它的缺点。foreach的循环对象一般是一个集合,List、ArrayList、Linke原创 2017-06-02 17:46:52 · 24035 阅读 · 1 评论 -
支持递归压缩文件夹-org.apache.tools.zip.ZipEntry
问题场景压缩文件夹或者文件,要求可以压缩到文件夹里面CODEjar包package zip;import java.io.*;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream;;/** * Created on 2017/6/7 * Author: youxingyang. */原创 2017-06-07 17:20:25 · 1813 阅读 · 0 评论