小于 1 分钟
小于 1 分钟
需求
工作需要,经常要对电话号码数组进行各种格式转换和集合运算(交并补),特此编写一个小工具,实现实现手机号快速格式化
号码格式化
格式化X号模式
有这样一个手机号码列表
带前缀的手机号 | 或者真实手机号 |
---|---|
7035519353315435 | 19353315435 |
7035516593621769 | 16593621769 |
7035519279572417 | 19279572417 |
7035519075698040 | 19075698040 |
7035519381122510 | 19381122510 |
7035519531428939 | 19531428939 |
大约 26 分钟
需求
写md博文时候经常需要插入图片,由于直接插入图片需要图床支持,略显麻烦,所以需要将图片转成base64编码,然后直接复制到md中,这样就可以直接插入图片了.
图片base64编码互转
图片转base64字符串
/*
* 读取剪切板方式
*/
public void toBase64(BufferedImage image) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// 如果估算大小大于500k,则进行有损压缩,否则无损,反复压缩可能导致图像过于模糊
try {
if (getImageSize(image) > (1024 * 500)) {
Thumbnails.of(image).scale(1.0) // 根据需求调整缩放比例或尺寸
.outputQuality(0.6) // 设置JPEG质量
.outputFormat("jpeg") // 设置图片格式 Thumbnails不支持png,请使用jpg或者jpeg
.toOutputStream(bos);
} else {
ImageIO.write(image, "png", bos);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] byteArray = bos.toByteArray();
String encodeToString = Base64.getEncoder().encodeToString(byteArray);
// 输出base64编码到剪切板
Paste.setSysClipboardText("data:image/jpeg;base64," + encodeToString);
}
/*
* 读取文件方式
*/
public void toBase64(String fileString) {
// 在linux可能为 file:///home/bjtang/图片/Screenshot_20240312_233916.png
// 需要首先进行转换
int indexOf = fileString.indexOf("file://");
if (indexOf >= 0) {
fileString = fileString.substring("file://".length());
}
try {
File inputFile = new File(fileString);
BufferedImage originalImage = ImageIO.read(inputFile);
toBase64(originalImage);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 在Java中,BufferedImage对象的大小(即占用内存存储)并不直接提供一个API来获取。但是,你可以通过计算图像像素数量乘以每个像素的字节数来估算其内存占用。
* 对于不带Alpha通道的RGB图像,每个像素通常占用3个字节(红、绿、蓝各1字节)。如果图像有Alpha通道,则每个像素占用4个字节(红、绿、蓝、透明度各1字节)。
* */
public long getImageSize(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
// 获取图像类型并判断是否包含Alpha通道
int type = image.getType();
boolean hasAlpha = (type == BufferedImage.TYPE_4BYTE_ABGR || type == BufferedImage.TYPE_4BYTE_ABGR_PRE
|| type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_ARGB_PRE);
double bytesPerPixel = hasAlpha ? 4.0 : 3.0; // 带Alpha通道或不带Alpha通道
long estimatedSizeInBytes = (long) (width * height * bytesPerPixel);
return estimatedSizeInBytes;
}
大约 5 分钟
百度翻译API
申请API权限
- 申请API权限 百度翻译API页 https://api.fanyi.baidu.com/api/trans/product/index
- 拿到APPID和密钥 这里申请的时候只需提交应用名称和应用介绍即可
img - 官网提供了文档和各种编程语言的DEMO https://api.fanyi.baidu.com/doc/21
- 示例代码Java https://fanyiapp.cdn.bcebos.com/api/demo/java.zip
大约 8 分钟
小于 1 分钟
需求
在进行Elasticsearch搭建时需要将日志文件增量同步到本地,方便后续进行日志分析 因为不影响生产环境,所以使用shell进行文件增量同步
实现原理
- 使用rsync命令进行增量同步
- 使用sshpass提供密码访问方便定时任务
- 使用定时任务进行定时执行
实现步骤
编写脚本
#!/bin/bash
# 远程服务器信息
REMOTE_HOST="远程计算机IP"
REMOTE_USER="远程计算机用户"
REMOTE_PASSWORD="远程计算机密码"
# 获取当前年月日
CURRENT_DATE=$(date +'%Y-%m-%d')
REMOTE_LOG_PATH="/opt/small_new/logs/bridge/info/$CURRENT_DATE.log"
# 本地保存位置
LOCAL_LOG_PATH="/opt/logs/$CURRENT_DATE.log"
# 使用 rsync 命令进行增量同步
#rsync -avz --update $REMOTE_HOST:$REMOTE_LOG_PATH $LOCAL_LOG_PATH
# 使用 sshpass 提供密码,并执行 rsync 增量同步
sshpass -p $REMOTE_PASSWORD rsync -avz --update -e "ssh -o StrictHostKeyChecking=no" $REMOTE_USER@$REMOTE_HOST:$REMOTE_LOG_PATH $LOCAL_LOG_PATH
echo "日志文件已增量同步到本地:$LOCAL_LOG_PATH"
大约 1 分钟
需求
目录中存在一个日志文件,以YYYY-MM-DD.log命名,现有一批手机号,需要查询不存在日志中的手机号
实现
vim a.sh
#!/bin/bash
var=(${1//,/ })
echo 正在查询当天绑定日志...
for phone_number in ${var[@]}
do
#echo $phone_number
#当天的日志
log_file="$(date '+%Y-%m-%d').log"
if ! grep -q "$phone_number" $log_file; then
echo $phone_number
fi
#echo $log_File
done
echo 查询结束
#保存退出,赋予可执行权限
chmod +x a.sh
小于 1 分钟