<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[心有多大舞台就有多大]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/sand_clock</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; sand_clock]]></copyright><item><title><![CDATA[java -jar自动化]]></title><link>https://blog.csdn.net/sand_clock/article/details/120786095</link><guid>https://blog.csdn.net/sand_clock/article/details/120786095</guid><author>sand_clock</author><pubDate>Fri, 15 Oct 2021 16:39:50 +0800</pubDate><description><![CDATA[问题场景
入职公司，基建有待提高，考虑将命令行部署服务进行脚本自动化。
分析
写了find.sh、findAndKill.sh、start.sh 3个脚本实现
find.sh
jarName='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]]></description><category></category></item><item><title><![CDATA[storm-关于Tick的坑]]></title><link>https://blog.csdn.net/sand_clock/article/details/112332381</link><guid>https://blog.csdn.net/sand_clock/article/details/112332381</guid><author>sand_clock</author><pubDate>Thu, 07 Jan 2021 19:52:37 +0800</pubDate><description><![CDATA[问题场景
优化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]]></description><category></category></item><item><title><![CDATA[统计git工程代码行数]]></title><link>https://blog.csdn.net/sand_clock/article/details/107619499</link><guid>https://blog.csdn.net/sand_clock/article/details/107619499</guid><author>sand_clock</author><pubDate>Mon, 27 Jul 2020 20:04:15 +0800</pubDate><description><![CDATA[问题场景
统计git上工程代码行数，去重不必要的文件，例如图片，idea的默认文件，日志文件等。
开发环境
idea+Java8+springboot2
分析

单个工程统计，脚本命令实现。
Java代码通过JGit实现与git通讯，通过遍历主分支最新的commit实现。

方案一实现
切换到工程目录下后执行
echo `find . "(" -name "*.java" ")" -print | xargs wc -l | tail -n -1`

方案二实现
引入maven依赖
&lt;dependen]]></description><category></category></item><item><title><![CDATA[慢SQL查询工具后台实现]]></title><link>https://blog.csdn.net/sand_clock/article/details/104670766</link><guid>https://blog.csdn.net/sand_clock/article/details/104670766</guid><author>sand_clock</author><pubDate>Thu, 05 Mar 2020 11:58:19 +0800</pubDate><description><![CDATA[问题场景
来了个需求，给各业务线提供慢SQL查询提供一个工具，要求慢查询规则可定制，系统要实现SQL聚类及指标排序。本文着重对SQL聚类实现进行解析。
开发环境
idea+Java8+springboot2+perl+MySQL
percona-toolkit.ar.gz
分析
运维把慢SQL日志文件放在了ES集群里，需要每天定时抓取慢SQL进行聚类操作，调研发现2种方案：

HanLP-面向生产...]]></description><category></category></item><item><title><![CDATA[纯后台生成echarts图片-phantomjs-2.1.1]]></title><link>https://blog.csdn.net/sand_clock/article/details/103731237</link><guid>https://blog.csdn.net/sand_clock/article/details/103731237</guid><author>sand_clock</author><pubDate>Fri, 27 Dec 2019 15:18:25 +0800</pubDate><description><![CDATA[问题场景
后端需要定时发邮件，邮件正文带图片，图片要求每次即时生成。
开发环境
idea+Java8+springboot2
echart-convert.js
phantomjs-2.1.1与字体
分析
phantomjs可以模拟浏览器执行js请求ajax等效果，俗称无头浏览器，可以用于客户端渲染。
步骤

下载上述资源，放入工程里，待调用。
安装phantomjs-2.1.1及微软雅黑字体[图...]]></description><category></category></item><item><title><![CDATA[ITEXT 把表格定位在固定位置]]></title><link>https://blog.csdn.net/sand_clock/article/details/90267388</link><guid>https://blog.csdn.net/sand_clock/article/details/90267388</guid><author>sand_clock</author><pubDate>Thu, 16 May 2019 17:05:58 +0800</pubDate><description><![CDATA[问题场景
用itext生成pdf时，需要把某部分内容固定在一个位置，比如盖章位置被固定在每页最下方。
环境
IDEA
jdk1.8
导入的jar包：itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jar
code
import com.itextpdf.text.*;
import com.itextpdf...]]></description><category></category></item><item><title><![CDATA[修改第三方jar包]]></title><link>https://blog.csdn.net/sand_clock/article/details/89714161</link><guid>https://blog.csdn.net/sand_clock/article/details/89714161</guid><author>sand_clock</author><pubDate>Tue, 30 Apr 2019 18:06:58 +0800</pubDate><description><![CDATA[问题场景
从别的公司交接一个项目，用到一个jar包，根据需求需要修改某个class文件。
环境
jd-gui.exe
idea
解决步骤

用jd-gui.exe直接打开jar包
点击File -&gt; Save All Sources 保存成压缩包 project_name.jar.src.zip
解压压缩包，重命名为project_name
idea打开project_name
在idea中...]]></description><category></category></item><item><title><![CDATA[pdf.js正式部署的坑]]></title><link>https://blog.csdn.net/sand_clock/article/details/89456759</link><guid>https://blog.csdn.net/sand_clock/article/details/89456759</guid><author>sand_clock</author><pubDate>Mon, 22 Apr 2019 17:25:20 +0800</pubDate><description><![CDATA[问题场景
公司需要把出具的报告在PC端在线预览，之前一直用embed标签解决，效果很好。产品提出在手机端（微信链接或者手机浏览器）也要在线预览，尴尬的是安卓端提示的是下载，IOS端只能看不能滑动。经一番调研采用pdf.js完美解决，参考手机端与PC端在线预览PDF。测试环境完美展示，正式部署提示pdf文件损坏或者缺失。。。
正式环境
nginx+tomcat8
测试环境
tomcat8
分析

测...]]></description><category></category></item><item><title><![CDATA[Redis-AOF重写，AOF后台重写实现原理]]></title><link>https://blog.csdn.net/sand_clock/article/details/88624424</link><guid>https://blog.csdn.net/sand_clock/article/details/88624424</guid><author>sand_clock</author><pubDate>Sun, 17 Mar 2019 20:40:07 +0800</pubDate><description><![CDATA[why
AOF（append only file）对Redis进行持久化是通过保存被执行的写命令来记录数据库状态的，随着服务器运行，AOF文件内容越来越多，载入AOF文件的时间会越来越长，影响Redis服务。
所以有必要对’冗余‘的AOF文件进行优化，即AOF文件重写。
那为什么要进行AOF后台重写？因为Redis单线程特性，AOF重写操作会引入大量写操作，引起stop the world，所以f...]]></description><category></category></item><item><title><![CDATA[Redis-字典]]></title><link>https://blog.csdn.net/sand_clock/article/details/88616664</link><guid>https://blog.csdn.net/sand_clock/article/details/88616664</guid><author>sand_clock</author><pubDate>Sun, 17 Mar 2019 14:09:10 +0800</pubDate><description><![CDATA[场景
最近在读《redis设计与实现》，记录下第4章字典这个常用数据结构。
定义
字典又叫关联数组或者映射，是一种用于保存键值对的数据结构。
用途
Redis的数据库就是使用字典作为底层实现，例如执行set msg &amp;amp;amp;quot;hello world&amp;amp;amp;quot;，在数据库中会保存为一个key为’msg‘，value为’hello world‘键值对。
实现
Redis字典底层采用哈希表实现，一个hash表有多个has...]]></description><category></category></item><item><title><![CDATA[MYSQL-查看每个数据库的大小和每个表的大小]]></title><link>https://blog.csdn.net/sand_clock/article/details/87101550</link><guid>https://blog.csdn.net/sand_clock/article/details/87101550</guid><author>sand_clock</author><pubDate>Tue, 12 Feb 2019 17:33:56 +0800</pubDate><description><![CDATA[每个数据库大小
select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,
concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
from information_schema.tables
group b...]]></description><category></category></item><item><title><![CDATA[短语去重]]></title><link>https://blog.csdn.net/sand_clock/article/details/87100108</link><guid>https://blog.csdn.net/sand_clock/article/details/87100108</guid><author>sand_clock</author><pubDate>Tue, 12 Feb 2019 17:14:10 +0800</pubDate><description><![CDATA[场景
负责的一个报告系统中需要对2个有’重复’词的短语去重，这2个短语必须符合第一个末尾的若干个词和第2个开头的若干个词一样，示例：ABC和BCD。去重后ABCD才有意义，最后展示在报告上，特此记录。
环境
idea Java8
code
/**
     * 抗疟疾能力    	    能力正常  =&amp;gt; 抗疟疾能力正常
     * @param name      抗疟疾能力
     ...]]></description><category></category></item><item><title><![CDATA[脚本常用总结]]></title><link>https://blog.csdn.net/sand_clock/article/details/86541616</link><guid>https://blog.csdn.net/sand_clock/article/details/86541616</guid><author>sand_clock</author><pubDate>Fri, 18 Jan 2019 16:00:56 +0800</pubDate><description><![CDATA[问题场景
常用脚本记录
示例
1、把文件夹下的所有符合*.txt的文件重命名为*_reupload.txt格式
for var in *.txt; do mv &quot;${var}&quot; &quot;${var/.txt/_reupload.txt}&quot;;done



]]></description><category></category></item><item><title><![CDATA[java生成PDF的几种方法]]></title><link>https://blog.csdn.net/sand_clock/article/details/85328849</link><guid>https://blog.csdn.net/sand_clock/article/details/85328849</guid><author>sand_clock</author><pubDate>Fri, 28 Dec 2018 17:24:44 +0800</pubDate><description><![CDATA[问题场景
总结一下用java生成PDF的方法：
A、itext-PdfStamper pdfStamper（俗称抠模板）
B、itext-Document document（正常代码撰写）
C、wkhtmltopdf（使用工具）
分析比较




方法
优点
缺点




A
代码简单
模板要先提供，且字段长度固定、不灵活


B
模板可根据代码调整、但样式不如C灵活
要维护的后台代码较多


C...]]></description><category></category></item><item><title><![CDATA[手机端与PC端在线预览PDF]]></title><link>https://blog.csdn.net/sand_clock/article/details/85266531</link><guid>https://blog.csdn.net/sand_clock/article/details/85266531</guid><author>sand_clock</author><pubDate>Wed, 26 Dec 2018 18:07:34 +0800</pubDate><description><![CDATA[问题场景
公司需要把出具的报告在PC端进行在线预览，之前一直用embed标签解决，效果很好。产品提出在手机端（微信链接或者手机浏览器）也要在线预览，尴尬的是安卓端提示的是下载，IOS端只能看不能滑动。经一番调研采用pdf.js完美解决。
实现方式与资源链接
pdf.js
环境
IDEA
JDK1.8
TOMCAT8
解决步骤
1、把下载的资源放到工程的webapp下

2、页面代码 pdfShow...]]></description><category></category></item><item><title><![CDATA[spring-ScheduledExecutorService+TimeTask-定时器实现]]></title><link>https://blog.csdn.net/sand_clock/article/details/84317754</link><guid>https://blog.csdn.net/sand_clock/article/details/84317754</guid><author>sand_clock</author><pubDate>Wed, 21 Nov 2018 13:55:33 +0800</pubDate><description><![CDATA[问题场景
需求：每隔2小时抓取集群固定文件夹下的数据包进行分析产生报告。
实现方式
1、spring+ScheduledExecutorService+TimeTask
2、https://blog.csdn.net/sand_clock/article/details/77866286
解决步骤
a 编写任务类
b 编写监听类
c 用ScheduledExecutorService调用任务
a ...]]></description><category></category></item><item><title><![CDATA[基础排序整理]]></title><link>https://blog.csdn.net/sand_clock/article/details/83623548</link><guid>https://blog.csdn.net/sand_clock/article/details/83623548</guid><author>sand_clock</author><pubDate>Thu, 01 Nov 2018 17:07:39 +0800</pubDate><description><![CDATA[上代码（java）
冒泡排序, 堆排序,插入排序,希尔排序,归并排序,快速排序,选择排序
冒泡排序
package sort;

/**
 * Created on 2017/6/12
 * Author: youxingyang.
 */
public class BubbleSort {
    public static void main(String[] args) {
        ...]]></description><category></category></item><item><title><![CDATA[OSS分块上传实例]]></title><link>https://blog.csdn.net/sand_clock/article/details/83623251</link><guid>https://blog.csdn.net/sand_clock/article/details/83623251</guid><author>sand_clock</author><pubDate>Thu, 01 Nov 2018 16:54:05 +0800</pubDate><description><![CDATA[问题场景
项目需要和OSS交互，对大文件进行上传，在此记录一下。
环境
jdk8, idea,
pom.xml片段
&amp;lt;!-- https://mvnrepository.com/artifact/com.aliyun.oss/aliyun-sdk-oss --&amp;gt;
        &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;com.aliy...]]></description><category></category></item><item><title><![CDATA[监控文件夹下大小是否有变化]]></title><link>https://blog.csdn.net/sand_clock/article/details/83586336</link><guid>https://blog.csdn.net/sand_clock/article/details/83586336</guid><author>sand_clock</author><pubDate>Wed, 31 Oct 2018 16:33:15 +0800</pubDate><description><![CDATA[问题场景
在写定时器时遇到个问题，当定时器扫描某一固定文件夹下的内容进行处理时，可能这个文件夹还在被追加内容，这样定时器处理的内容就不准确了，为了解决它，笔者准备了一个哨兵，在每次轮到定时器处理前让哨兵进行一次检测，通过检测进行处理，否则这次任务跳过。
CODE
/**
     * 判断指定目录下文件大小是否变化
     *
     * @param dir    监控的目录绝对路径
   ...]]></description><category></category></item><item><title><![CDATA[python多线程带返回值案例]]></title><link>https://blog.csdn.net/sand_clock/article/details/83585965</link><guid>https://blog.csdn.net/sand_clock/article/details/83585965</guid><author>sand_clock</author><pubDate>Wed, 31 Oct 2018 16:17:16 +0800</pubDate><description><![CDATA[问题场景
业务需要对网页进行PDF转换，用到了python的pdfkit模块。因报告是成批下来，每批几百例需要转换，为了加快报告生成效率，python里采用了多线程写法。笔者语言是java，所以利用了**Runtime.getRuntime().exec(cmd)**进行调用。
环境：jdk8, python 2.7, idea
CODE
import threading
import ast
i...]]></description><category></category></item></channel></rss>