linux修改jar包文件
使用 jar tvf jar 名称 | grep 目标文件名 查询出目标文件在 war 包中的目录
使用 jar xvf jar 名称 目标文件名(copy 上面查出的全路径) 将目标文件及所在 war 包中的目录解压到当前路径
修改目标文件的内容,或者将要新的目标文件替换掉提取出来的目标文件
使用 jar uvf jar 名称 目标文件名(和步骤(2)中的目标文件名相同) 将新目标文件替换到 jar 包中
1、具体这里以 blog.jar 为例进行操作
1、首先,查找你需要修改的文件
jar tvf blog-0.0.1-SNAPSHOT.jar | grep _fragments.html
2、解压文件到当前目录(会是个文件夹,但是不用管文件夹的其他文件,只找我们要改的文件)
jar -xvf blog-0.0.1-SNAPSHOT.jar BOOT-INF/classes/templates/_fragments.html
3、如果你有替换的文件就直接替换,没有则修改你需要修改的部分
vim _fragments.htmlcp 文件 目标文件
4、将修改的新文件替换到 ja ...
文件下载与预览
通常的文件下载方法@RequestMapping("/downLoadFile")public void downLoadLineStruImportTemplateFile(HttpServletResponse response) { // 创建缓冲区 byte buffer[] = new byte[1024];// 缓冲区大小1k int len = 0; // 重点就是获取输入流和输出流,还有设置请求头 try (InputStream in = this.getClass().getClassLoader().getResourceAsStream("template/lineStruImportTemplate.xlsx"); OutputStream out = response.getOutputStream()) { // 设置头部信息 // 文件类型application/octet-stream response.s ...
检查文件是否存在
/** * 下载文件,传入完成路径,先检查文件是否存在,如果存在就下载 * @param path */downloadFileWithPath = function (path) { $.ajax({ url: Hussar.ctxPath + '/checkFileExist', type: 'get', async: true, data: { path }, success(res) { if (res.code === 500) { Hussar.valid(res.msg) return } // 如果文件存在,那么就下载文件 window.location.href = '/downLoadFile?path=' + path }, error() { Hussar.valid(' ...
获取相对路径下的配置文件信息
路径位置如下
配置文件信息
ureport.disableFileProvider=falseureport.debug=trueureport.disableHttpSessionReportCache=falseureport.fileStoreDir=D:/hussar/hussar_v8/hussar-web/src/main/resources/ureportfiles/odmsfilePath = D:/DevelopKit/FILEopenOfficePath = D:/Program Files (x86)/OpenOffice 4/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"pdfPath = D:/PDF/fpPath = D:/fenpianpythonPath = D:/pythoncode/dataReaderName = DWDataReaderLib64.dll
代码示例
package com.jxdinfo.hussar.ut ...
获取resouces下的文件的输入流InputStream
String filePath = "/excel/1_20210709杭州地铁6号线平稳性_2021_08_28_005001_5S.xlsx";// 这里io流会自动关闭,无需加finally// try (InputStream is = new FileInputStream(filePath)) {// 读取绝对路径文件ClassPathResource classPathResource = new ClassPathResource(filePath);try (InputStream is = classPathResource.getInputStream()) {// 读取resources下文件方式1(适用于静态)// try (InputStream is = this.getClass().getResourceAsStream(filePath)) {// 读取相resources下文件方式2(不适用于静态) // ....流对象各种处理代码}
部署java项目
将运行的 jar 错误日志信息输出到 log.file 文件中,然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。
nohup java -jar 包名.jar > log.file 2>&1 &[1] 669 #669表示运行的pid
node的环境安装
nvm建议先安装 nvm,而不是直接安装 node
nvm 是什么nvm 全英文也叫 node.js version management,是一个 nodejs 的版本管理工具,为了解决 node.js 各种版本存在不兼容现象可以通过它可以安装和切换不同版本的 node.js。可在点此在上下载最新版本
nvm 命令提示
nvm arch:显示 node 是运行在 32 位还是 64 位。
nvm install <version> [arch] :安装 node, version 是特定版本也可以是最新稳定版本 latest。可选参数 arch 指定安装 32 位还是 64 位版本,默认是系统位数。可以添加—insecure 绕过远程服务器的 SSL。
nvm list [available] :显示已安装的列表。可选参数 available,显示可安装的所有版本。list 可简化为 ls。
nvm on :开启 node.js 版本管理。
nvm off :关闭 node.js 版本管理。
nvm proxy [url] :设置下载代理。不加可选参数 url,显示当前代理 ...
windows根据端口杀进程
以 8088 端口为例:
netstat -aon|findstr "8088"
最后一列是 pid。假设为 5544
taskkill /pid 5544 -t -f
Gitlab在服务器上的安装
阅前注意本文档对于 gitlab 仓库管理只适用于 http 协议。如需 ssh 协议。请自行百度生成和配置公钥和私钥
本文档适用于 linux 的发行版为 centos7。其他的发行版 ubuntu、debian 等请自行百度
整理 by:张雨晗 2020.7.20
参考博客 1
参考博客 2
参考博客 3
目录:[TOC]
1.安装过程1.下载 rpm 文件gitlab 的 rpm 包下载地址
ctrl+鼠标左键点击打开链接,下载最新的 rpm 包
2.上传 rpm 文件。注意:linux 的运营规范里明确规定了第三方软件包放在/opt/文件夹下可以使用第三方工具。注意:xftp 禁用
也可以使用 win 下的 cmd 命令
示例
scp -P 221 D:\download\gitlab-ce-14.0.4-ce.0.el7.x86_64.rpm root@123.123.122.138:/opt/
之后再输入访问的密码即可。
3.安装1.安装所需要的环境yum -y install policycoreutils-python
yum -y install openssh ...
存储zset的写法
ZSetOperations zSetOperations = redisTemplate.opsForZSet();Set<ZSetOperations.TypedTuple<Map<String, Double>>> tuples = new HashSet<>();int cycleNum = dataShowMapper.getTrackDynamicGeometryDataNum(csrwId, xb) / 10000 + 1;// 循环次数CountDownLatch countDownLanch = new CountDownLatch(cycleNum);ExecutorService executor = Executors.newFixedThreadPool(cycleNum > 4 ? 4 : cycleNum);for (int i = 0; i < cycleNum; i++) { int start = i * 10000; int num = 10000; executor.ex ...
github高级搜索
github 搜索自己想要的项目,并添加更加详细的描述github 上搜索的例子
in:name springboot forks:>4000 language:java stars:>4000 pushed:>2020-01-01
in:readme springboot mybatis forks:>4000 language:java stars:>4000 pushed:>2020-10-01
关键词
in:name xxx
in:description xxx
in:readme xxx
starts:>2000
fork:>3000
size:>=5000 注意:单位是k
pushed:>2020-01-01
language:xxx
user:xxx
搜索的方式可以组合,叠加,用空格分开条件
更多高级搜索
常用api总结
XXXTemplate 是 Spring 的一大设计特色,其中,RedisTemplate 功能是提供对 Redis 的支持。
RedisTemplate 是 Spring Boot 访问 Redis 的核心组件,是 SpringBoot 集成 Redis 的客户端方式。它的底层通过 RedisConnectionFactory 对多种 Redis 驱动进行集成,上层通过 XXXOperations 提供丰富的 API,并结合 Spring 基于泛型的 bean 注入,未开发提供了极大的便利。
一、Redis 常用的数据类型String:字符串类型,可以存储多种类型,如:字符串,JSON 串,二进制,序列化对象等;Hash:key-value 结构,就像 Java 里的 Map,特别适合存储对象;List:双端链表的结构,即可以作为栈,又可以作为队列,可以进行集合的头部或者尾部添加删除元素;Set:Set 集合是 String 类型的无序集合,通过 hashtable 实现,可以对集合取交集,并集,差集;Sorted set:是 String 类型的有序集合,并且,每个元素都会关联一个 ...
在.gitignore中添加新的规则对已经被git管理了的文件不生效的解决办法
解决办法:清理下 git 缓存即可执行以下命令
#删除git缓存git rm -r --cached .git add .git commit -m 'update .gitignore'
word转pdf
poi(慢,格式回出问题)
openOffice(单线程,不支持并发)
jacob(效果好,但是不支持 linux)
docx4j(没试过)
asposeword(效果好,块,但是付费)
判断访问设备的方法
java 版// \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔),// 字符串在编译时会被转码一次,所以是 "\\b"// \B 是单词内部逻辑间隔(连着的两个字母字符之间的逻辑上的间隔)private static final String PHONE_REG = "\\b(ip(hone|od)|android|opera m(ob|in)i" + "|windows (phone|ce)|blackberry" + "|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp" + "|laystation portable)|nokia|fennec|htc[-_]" + "|mobile|up.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";// 手记的正则表达式private stat ...
业务开发时,接口不能对外暴露的解决办法
业务开发时,接口不能对外暴露怎么办?内外网接口微服务隔离
网关 + redis 实现白名单机制
方案三 网关 + AOP
具体实操
在业务开发的时候,经常会遇到某一个接口不能对外暴露,只能内网服务间调用的实际需求。面对这样的情况,我们该如何实现呢?今天,我们就来理一理这个问题,从几个可行的方案中,挑选一个来实现。
1. 内外网接口微服务隔离将对外暴露的接口和对内暴露的接口分别放到两个微服务上,一个服务里所有的接口均对外暴露,另一个服务的接口只能内网服务间调用。
该方案需要额外编写一个只对内部暴露接口的微服务,将所有只能对内暴露的业务接口聚合到这个微服务里,通过这个聚合的微服务,分别去各个业务侧获取资源。
该方案,新增一个微服务做请求转发,增加了系统的复杂性,增大了调用耗时以及后期的维护成本。
2. 网关 + redis 实现白名单机制在 redis 里维护一套接口白名单列表,外部请求到达网关时,从 redis 获取接口白名单,在白名单内的接口放行,反之拒绝掉。
该方案的好处是,对业务代码零侵入,只需要维护好白名单列表即可;
不足之处在于,白名单的维护是一个持续性投入的工作,在很多 ...
常用的返回体封装工具类
/** * 返回体工具 */public class DtoResult<T> implements Serializable { public static final int STATUS_CODE_SUCCESS = 0; public static final int STATUS_CODE_ERROR = 500; private int code; private String message; private T data; public DtoResult() { this.setCode(0); } public DtoResult(T data) { this(); this.data = data; } public DtoResult(Integer code, String message, T data) { this.setCode(code); this. ...
以特定的编码读取文件,以特定的编码写入文件
以下代码是针对 BufferedReader 和 BufferedWriter 的
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(inF),"GB2312"));// 以GB2312的编码读文件BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), StandardCharsets.UTF_8));// 以utf-8写文件
告别非空判断
1 Objects 工具类既然要解决空指针,自然就是提前对对象进行判空校验;通常情况下,会使用if( null != obj )进行对象校验;在 Java 7 中,专门提供工具类java.util.Objects,让对象的判空校验更加简单;
特点
Java 7 自带,不需要额外的依赖
静态方法,使用简单
仅支持对象判空
示例
Objects.isNull
判断对象是否为空,为null返回true,否则返回false
Object obj = null; System.out.println(Objects.isNull(obj)); // true obj = new Object(); System.out.println(Objects.isNull(obj)); // false
Objects.nonNull
和Objects.isNull相反;判断对象不为空,为null返回false,否则返回true
Object obj = null; System.out.println(Objects.nonNull(obj)); // false ...
常用的工具包
预览 word 或者 pdf 的内容:TiKa
数学运算:joinery