![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
java小蓝-
想要的都会有的,你要想要,你要努力。
展开
-
springboot+redis实现登录失败次数限制
需求:为了防止枚举攻击,完成安全性测试扫描。先是保证账号和密码其一错误但返回错误一致,添加Referer拦截器,现在需要限制登录失败次数限制,本文做的是登录失败五次账号锁定3小时。登录Controller添加如下代码 @Autowired private RedisTemplate<String, String> redisTemplate; //用户登录是否被锁定 三小时 redisKey 前缀 private String SHIRO_IS_.原创 2021-10-25 15:58:54 · 2404 阅读 · 2 评论 -
SpringBoot添加Referer拦截器最详细实例
背景:项目进行了安全漏洞扫描,扫描中风险提示需要验证“Referer”头的值。application-referer.yml配置可访问referer地址application-referer: refererDomain: - http://42.228.55.222 - https://42.228.55.222 - http://59.207.61.21加载application-referer.yml文件获取referer listpackage ..原创 2021-09-28 11:01:53 · 3420 阅读 · 0 评论 -
java jpa自定义sql语句
背景:最近接手的项目是spring boot + jpa,有点懵,突然回忆到刚工作实习的时候学习过这个搭配的,如今是忘得一干二净啊。2019-02-25 我曾经写过这么一篇博客:jpa通过解析方法名创建查询和使用@Query创建自定义查询,回头一看已经两年有余。本篇只是为了再次记录自己又学习了jpa的使用,通过解析方法名多适用用单表操作,自定义的sql查询则可以解决所有问题,做些自定义sql语法的记录,以便后续参照。1.多表关联查询,含条件。 @Query(value ...原创 2021-08-12 17:36:28 · 1427 阅读 · 0 评论 -
JAVA代码实现RocketMQ消息发送和接收
背景:系统需要对接接收阿里云RocketMQ的消息。在内网没有打通的情况下,暂做模拟。引入rocketmq的依赖: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version..原创 2021-08-11 17:12:03 · 2769 阅读 · 1 评论 -
全网最全JVM知识点导图
朋友分享的,全网最全JVM知识点导图,存着以后虐自己看!https://www.processon.com/view/link/606d5985e0b34d28299a3bca#outline原创 2021-07-07 11:18:50 · 349 阅读 · 0 评论 -
nfs挂载配置使用步骤
nfs软件,运行systemctl startrpcbind 和systemctl startnfs检测服务状态,服务正常后可进行配置阶段。使用背景:在CA系统上配置的内网http目录地址如下:/home/pki/httpfiles/cert。配置的外网http访问地址为http://11.12.110.84:18080/httpfiles。现在需要将11.12.110.86上的/home/pki/httpfiles/cert 文件夹内容,通过NFS挂载到11.12.110.84上...原创 2021-06-09 16:16:04 · 547 阅读 · 0 评论 -
java使用BigDecimal实现加减乘除法四四舍五入
import java.math.BigDecimal;/** * 提供精确的浮点数运算(包括加 、 减 、 乘 、 除 、 四舍五入)工具类 * * @author yangmenghao * @date 2020/07/02 */public class BigDecimalUtil { /** * 除法运算默认精度 */ private static final int DEF_DIV_SCALE = 5; /** * 精确加法 */ public st..原创 2021-06-09 13:59:34 · 1254 阅读 · 0 评论 -
java压缩多层目录文件zip格式
package com.xdja.utils;import java.io.*;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/** * @description: TODO * @author: wly * @date: 2021/3/10 16:10 */public class ZipUtils { public static void doZip(File inFile, Zi.原创 2021-06-07 11:05:11 · 738 阅读 · 0 评论 -
redis+springboot集群定时任务锁解决方案
集群项目问题之一:定时任务的执行。页面配置/项目启动等产生的定时任务如何在集群下维护?1.触发第一次启动线程时刻,计算下次执行时间放入redis;2.执行中加锁并更新下次执行时间,到时间自动释放锁;3.项目重新启动先取消已有线程,获取下次执行时间进行计算等待时间开启新的线程。4.运行过程中修改定时任务相关配置,使用redis发布订阅重新开启定时任务。...原创 2021-06-07 10:33:24 · 616 阅读 · 1 评论 -
java操作Tomcat配置文件
Tomcat配置文件操作package com.xdja.pki.backup.util;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.XMLConstants;import javax.xml.parsers.DocumentBuilder;import javax....原创 2021-06-04 15:46:51 · 217 阅读 · 0 评论 -
Sersync+rsync+xinetd文件同步脚本部署配置实操
经过查询资料和试验验证,该方案频繁操作下具有不稳定性,可能导致文件丢失,对于网上的双向同步更是缺少架构理论依据。个人评估可应用于以下场景:原创 2021-06-04 14:48:33 · 197 阅读 · 0 评论 -
windows添加临时和永久路由命令
背景:一台电脑想要同时使用内外网,可以采取同时连接内网网卡和外接无线网卡连接外网wifi,这时需要通过不同的路由转发到不同的网段以保证网络畅通。0.先以管理员方式打开命令提示符:1.添加临时路由:route add 0.0.0.0 mask 255.0.0.0 192.168.62.1临时路由电脑重启就会消失。2.添加永久路由 -proute -p add 11.0.0.0 mask 255.0.0.0 11.12.86.13.删除路由route delet.原创 2021-05-07 19:08:33 · 15392 阅读 · 1 评论 -
Mysql双主配置
1.my.cnf配置分别修改主机和备机的配置文件,文件位置/etc/my.cnf[mysqld]#两台机器这个id值要配置成不一样的,可以一个是1,一个是2server-id=1#两台机器需要相互同步的数据库名,分配配置db1、db2的数据库名字replicate-do-db = db1replicate-do-db =db2#不会因为一个错误影响所有语句 slave_skip_errors=all #其他添加下面两项。 sync_binlog=1lo..原创 2021-04-19 18:59:11 · 440 阅读 · 0 评论 -
项目防火墙配置安全策略Centos7 linux命令(含sshd端口修改、添加防火墙白名单、指定端口访问源等)
背景: 一般为提升项目部署服务的安全性,避免客户对产品漏扫造成不必要的麻烦,对外项目部署时必须开启防火墙。服务器SSHD默认22端口修改为其他自定义端口(自定义端口设置时尽量向后定义);a) 执行 vim /etc/ssh/sshd_configb) 修改#Prot 22 为 Prot xxxx;:wq保存并退出。c) 执行 /etc/init.d/sshd restart 重启sshd服务d) 测试:使用ssh工具连接该端口2. 开启防火墙并设置开机自...原创 2021-01-04 17:29:17 · 3006 阅读 · 3 评论 -
字符串分割StringUtils.split()和string.split()的区别
代码评审:StringUtils.split()和string.split()的区别1.分隔符匹配:StringUtils.split()是把分隔符拆成一个个单独的字符,再用这些字符去把字符串进行分割的。只要匹配到了分隔符中的任意一个字符,就会进行分割。string.split()是把分隔符作为一个整体来对字符串进行分割。比如分隔符是#!,在用StringUtils.split()时,只要被分割的字符串里遇到 ! 或 # ,就会被分割;在用string.split()时,必须被分割的字符串.原创 2020-12-25 15:47:50 · 5440 阅读 · 4 评论 -
springboot shiro框架整合多模式redis实现session共享以及注意事项(报错记录)
session共享原创 2020-11-24 20:27:21 · 1196 阅读 · 3 评论 -
session共享的几种实现方案对比
背景:系统需要通过集群实现高可用,session如何共享?根据查阅资料,了解到有如下几种session共享方案,简单列出了其优缺点。分析得知最常用的高可用的session共享方案为基于tomcat配置和缓存机制,针对我正在用的springboot+shiro框架,又进行了深一步研究。在学习过程中参照了几篇关于很优秀的文章。redis介绍:https://zhuanlan.zhihu.com/p/250102489?utm_source=wechat_session&utm.原创 2020-10-17 14:48:54 · 557 阅读 · 1 评论 -
java zip打包工具类和使用
经常用到的生成可下载的zip压缩包的工具类和调用示例import com.xdja.pki.core.exception.ServiceException;import org.apache.commons.compress.archivers.ArchiveEntry;import org.apache.commons.compress.archivers.zip.Zip64Mode;import org.apache.commons.compress.archivers.zip.ZipA.原创 2020-09-20 16:34:41 · 864 阅读 · 0 评论 -
java使用正则表达式和常用正则表达式
/** * 身份证 */ private static final String ID_CARD_PATTERN = "\\d{17}[0-9xX]"; /** * 军官证 军+7位数字 */ private static final String MILITARY_OFFICER_PATTERN = "^(?:军)\\d{7}"; /** * 护照 字母加数字9位 */ public static...原创 2020-09-19 14:19:19 · 298 阅读 · 0 评论 -
一个java小白的性能压测、性能优化思路
性能指标 常见的有响应时间,并发,tps等1 代码优化:1)sql优化,梳理业务,查找是否有多余业务、慢查询、可简化的sql查询等,正确使用索引;2)缓存优化:正确的使用缓存,常用的数据类似配置项参数可放到缓存中便于获取;3)日志优化:正确使用日志级别打印日志,压测过程中调整日志级别为ERROR运行。2 通过服务器资源如cpu、内存、磁盘、的使用情况等排查性能瓶颈点,一般都在高性能的机器上做压测;3 数据库服务配置优化,针对数据库服务可调整数据库配置参数innodb_flush_lo.原创 2020-09-16 21:04:03 · 591 阅读 · 0 评论 -
Xshell修改选中即为复制粘贴
如图,点击 工具-->选项下拉或勾选红框中值即可之后再选中部分字符后,xshell右下角即可会显示 已复制xx字符。原创 2020-09-10 20:51:33 · 695 阅读 · 0 评论 -
java 将数据写入excel工具类
日常开发中常有数据统计功能,要求统计某一时段或某条件下的系统数据并导出excel,以下为获取数据后的写出工具类。package com.xdja.pki.ra.core.util.file;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.a..原创 2020-09-07 16:22:27 · 1041 阅读 · 0 评论 -
java将对象保存为文件
/** * 将对象保存为文件 * * @param obj * @param path */ public static void writeObjToFile(Object obj, String path) { new File(path).getParentFile().mkdirs(); CharArrayWriter out = new CharArrayWriter(); PEMW...原创 2020-09-04 17:48:15 · 1431 阅读 · 0 评论 -
一个例子看懂java回调函数
回调:类A的a()方法调用类B的b()方法类B的b()方法执行完毕主动调用类A的callback()方法假定领导安排给员工张三某工作,员工张三完成工作完成后通过约定好的方法告知领导,就是一个回调过程。package com.xdja.callback;/** * 回调接口 * @date 20200710 * @author wly */public interface Callback { /** * 当员工做完领导让他做的事后就通过该方法通知领导 ..原创 2020-07-10 14:37:26 · 310 阅读 · 0 评论 -
详细使用git打tag,删除tag,切换到某个tag时期,删除/查看分支
使用git打tag标签 :#Git Bash here 执行命令#查看tagadmin@DESKTOP-OJDN2HN MINGW64 /d/Users/admin/work/PKI-RA-SERVER-TAG (dev)$ git tag -lRA-V1.0.2.9#在本地打tagadmin@DESKTOP-OJDN2HN MINGW64 /d/Users/admin/work/PKI-RA-SERVER-TAG (dev)$ git tag RA-V1.0.6.5#再次查看tag原创 2020-05-23 16:50:35 · 1751 阅读 · 0 评论 -
Maven项目模块通过设置pom文件打可执行jar
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma.原创 2020-05-22 17:46:06 · 1134 阅读 · 0 评论 -
mysql中的timestamp类型时间范围
背景:服务数据入库的时候报错 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '2050-04-14 13:43:55' for column 'failure_time' at row 1鉴于部分入库时间报错,首先排除了代码问题,想到了是不是timestamp时间有范围限制,于...原创 2020-04-29 16:10:35 · 4915 阅读 · 0 评论 -
使用开源软件7ZIP在Windows压缩.tar.gz格式包
背景:项目要搞自动化部署,需要将自动化部署的包打成 .tar.gz格式上传到linux。在Linux上压缩包.tar.gz命令:tar -zcf fileName.tar.gz fileName在Windows上可以借助开源软件7ZIP。1.7ZIP官网:https://www.7-zip.org/下载后直接默认安装即可。2.使用:选择文件右键--> 7...原创 2020-04-21 11:48:30 · 4720 阅读 · 0 评论 -
Java判断数组中是否存在某字符串以及一个数组的值是否都在另一个数组
背景:如有字符串:String certDn = "CN=00,GIVENNAME=44,STREET=55,DNQUALIFIER=66,TITLE=77,UID=88,C=CN";判断等号左边的字符串是否为规定值。package com.xdja.pki.test.util;import java.util.Arrays;import java.util.List;...原创 2020-04-16 14:43:21 · 4699 阅读 · 2 评论 -
Jmeter安装使用
安装1. 下载 官网地址:http://jmeter.apache.org/download_jmeter.cgi,Binaries下即为最新版本,Windows选择zip格式。2. 安装 解压压缩包到合适的位置即可,注意要求对应的jdk1.8以上。3. 配置环境变量电脑桌面---->计算机---->右键属性---->高级系统设置---->高级--...原创 2020-04-13 10:23:54 · 328 阅读 · 0 评论 -
java获取Linux服务器上tomcat下classes相对路径,将文件打包到war后获取
背景:原来模板文件读取方式:/** * 配置文件常量 * * @author */@Componentpublic class PathConstants { /** * 系统配置根目录 */ public static String GLOBAL_CONF_ROOT; @Value("${ra.global.conf.pa...原创 2020-03-31 09:20:30 · 2119 阅读 · 2 评论 -
IDEA打可执行jar包详细教程(包含依赖的所有jar包)
时常感觉自己笨到家了,完全不适合做一个码农,搜罗网上各种教程,打个jar包竟然搞了一个多小时,一直在迷惑我没有什么主类啊,到底存哪了啊。。。好记性不如烂笔头,咱终于搞清楚了赶紧再记一下!IDEA版本:IntelliJ IDEA 2018.3.3 x641. 选中项目,右键-->Open Module Settings :2. 弹框菜单选择-->Artifacts...原创 2019-12-30 15:07:08 · 7676 阅读 · 9 评论 -
SQLite 可视化工具下载
分享一款好用的SQLite 可视化工具。百度网盘链接: https://pan.baidu.com/s/16SEeZYYa_PFZHpVos1rnyg提取码: qj2u使用如图:File --> Open Database / newDatabase打开后:...原创 2019-12-19 19:14:28 · 472 阅读 · 0 评论 -
java简单无遍历将一个List赋值给另一个List
背景:工作bugList<X509Certificate> caTrustCert = CommonVariable.getTrustCaCerts();caTrustCert.add(signCert);本意通过缓存类CommonVariable获取TrustCaCerts,将CommonVariable.getTrustCaCerts()的值赋给caTrustCert ...原创 2019-12-17 09:48:52 · 1352 阅读 · 0 评论 -
java开发中异常的定义,跨系统接收错误码,以及通过code返回枚举
本人目前在做的系统,尤其依赖另外一个系统,在调用另外一个系统时,可能会返回多种报错,如下结构的错误: /** * 返回异常结果对象 * * @return */ public ErrorBean resp(HttpServletResponse resp) { if (null != resp) { resp.setStatus(this.status); ...原创 2019-12-05 11:20:03 · 2069 阅读 · 1 评论 -
SQL分类查询并统计,使用 coalesce()函数等
纪念一下最近写的“庞大” sql !这个sql是关于数量分类统计的,总结一下所用到函数。 /** * 第三方系统拥有证书统计 查询 * * @param customerSysName * @param startTime * @param endTime * @return */ public List&l...原创 2019-11-19 18:07:04 · 1273 阅读 · 1 评论 -
Linux Centos7新装tomcat 启动./startup.sh报Permission denied详解
项目压测,弄来了几个新服务器部署,从SVN拉了一个最新的tomcat,部署好所有之后 ./startup.sh之后报Permission denied,也就是权限拒绝。咨询了一下同事,同事表示公司SVN上放的 .tar.gz 结尾的tomcat是用于linux系统的, .zip结尾用于windows系统,我拉错了......但是加个权限就ok了。先搞清楚权限拒绝原因:- rw -...原创 2019-11-13 15:43:34 · 1344 阅读 · 2 评论 -
常用linux命令
一定会用到的linux命令:(新手必记)0. 切换目录pwd (显示当前目录)cd ../ (上一级目录)cd /file/file1 (切换到指定目录)1. 新建目录mkdir file2. 删除目录rm -rf file* (递归强制删除)rm -r file3. 复制目录cp file1 file2...原创 2019-11-13 11:38:23 · 160 阅读 · 0 评论 -
json字符串转换JSONObject的两种方式(无对应实体类)
1. 使用google依赖<dependency> <groupId>com.vaadin.external.google</groupId> <artifactId>android-json</artifactId> <version>0.0.20131108.vaadin1</vers...原创 2019-11-11 10:46:11 · 2991 阅读 · 1 评论 -
String、Date类型时间互相转换,计算时间差
1. String类型时间转换Date,计算时间差 /** * Method: String 类型时间转 Date */ @Test public void testStringToDate() throws Exception { String ss = "{\"notbefore\":\"2019.11.09 15:09:00\"...原创 2019-11-10 18:13:45 · 1447 阅读 · 0 评论