自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 收藏
  • 关注

原创 【java必会】springboot使用maven高效管理多环境配置

项目开发中难免会遇到有多个环境的配置文件,使用maven可高效对环境进行切换。

2025-06-06 20:16:05 311

原创 【java必会】springboot项目不重新打包修改配置文件之nacos

springboot项目如何在打成iar后,不重新打包的情况下修改配置文件,下边讲解使用nacos config动态刷新配置。

2025-06-06 20:08:45 186

原创 【java必会】springboot mybatis 配置多数据源的2种方式 总有一种适合你

项目中开发中难免会有配置多数据源的场景,下边讲解2种方式,总有一种适合你。2.1 继承AbstractRoutingDataSource。第一种:扫描固定位置的mapper包。第二种:继承spring框架的类。2.5 自定义多数据源切换注解。2.6 方法或类上直接使用即可。2.3 初始化设置多数据源。2.4 数据源切换处理。1.1 定义数据源1。1.2 定义数据源2。2.2 定义数据源1。2.3 定义数据源2。

2025-05-06 21:07:27 325

原创 【java安全】重要字段脱敏 三种方式 总有一种适合你

/ 如果返回的是集合,遍历每个对象>) data) {} else {return;Class<?if (value!break;break;// 定义脱敏类型@Override其他自定义序列化器同理在实体类字段上进行使用//省略get set测试类方法。

2025-04-13 17:49:44 376

原创 【java必会】springboot项目不重新打包的情况下修改配置文件

使用vim jar文件,进入后,输入/配置文件名 敲回车进行查找,找到后,敲回车进入对应的文件中找到对应的行按i进行编辑,完事后,按esc:wq进行保存后回到上一级查找页面,再按:q即可退出,再使用java -jar 进行启动验证即可。使用winRAR或其他解压软件打开后,找到对应的配置文件,进行修改后,对解压软件弹出的提示选择是即可更新,再使用java -jar 进行启动验证即可。

2025-04-12 14:30:00 255

原创 【安全】nginx防止host头攻击

系统上线之前要经过安全测试,安全测试中有这么一项,请求头中的host字段,这个值随便修改之后,响应还可以正常返回,这种这种就是有风险的,是测试不通过的,默认情况下,浏览器地址栏中的URL和请求头中的host字段值的ip和端口(或者是域名)是一样的,进行安全测试的时候使用会使用拦截工具,把请求头中的host头进行篡改。在nginx.config的server块中配置。

2025-03-29 21:55:29 438

原创 【java必会】java调用excel中的公式来快速求值

【代码】【java必会】java调用excel中的公式来快速求值。

2025-03-04 20:29:24 241

原创 java调用python2.x、python3.x版本

链接:https://pan.baidu.com/s/1iZ6JaQIz5qs0qhPbO-708g?pwd=cn9s 提取码:cn9s 复制这段内容后打开百度网盘手机App,操作更方便哦。视频:https://www.bilibili.com/video/BV13F411V7xc/

2025-02-22 17:44:56 104

原创 【java必会】vue和springboot安全专题

关于java安全专题,工作中遇到的,分为下面几种场景。

2025-02-15 18:49:33 224

原创 BeanUtils复制List对象

【代码】BeanUtils复制List对象。

2023-08-12 15:10:10 1723

原创 java 富文本html 转 word(带图片处理

java 富文本html 转 word(带图片处理

2023-02-15 14:24:38 4912 3

转载 [Linux系统] VMware克隆CentOS7,解决网络配置问题

VMware克隆CentOS7,解决网络配置问题

2022-07-16 15:16:24 885

原创 freemark 使用ftl文件 生成word

<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency>import freemarker.template.TemplateException;import java...

2022-05-27 15:21:34 472

原创 MyBatis一级缓存和二级缓存命中场景

MyBatis一级缓存命中场景MyBatis一级缓存是与会话(sqlSession)相关的,会话关闭后,一级缓存会被清空一:运行时参数相关:1.同一个会话(sqlSession)2,sql语句和参数形同3、相同的statementId4.RowBound相同二:配置与操作相关的1、未手动清空缓存(提交或回滚)2.未配置flushCahch=true3.未执行update、delete、insert语句4.缓存作用域不是statement备注:和spring集成后,非事务环境下,不走一

2022-03-09 21:48:05 752

原创 springBoot过滤器、拦截器配置使用

拦截器与过滤器的区别 :拦截器是基于java的反射机制的,而过滤器是基于函数回调。拦截器不依赖与servlet容器,过滤器依赖与servlet容器。拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次拦截器的代码实现。Filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而inter

2022-02-28 11:11:36 1017

原创 后台系统登录一般流程

登录整个流程1.异步请求后端得到验证码(生成验证码的答案后存入redis,uuid作为key),验证码图片以base64的编码和uuid返回前端2.根据用户名和密码、验证码值、uuid传递到后端,为了效率,先判断验证码值是否正确,正确的话,再根据用户名和密码去数据库进行匹配,匹配时,查询用户表、部门表、用户与角色的关联表、角色表获取当中的有用字段信息,再使用用户id去查询权限表、角色权限关联表、用户角色关联表、角色表(因其中功能涉及角色、权限状态)返回权限标识如(system:role:edit多个的

2022-02-25 16:18:26 8072

原创 maven 命令 分环境 打包 指定pom文件

mvn clean package -DskipTests -Pdev -f pom_2.xml备注:clean:清除项目中target目录package: 打包-DskipTests :跳过测试文件-Pdev :dev代表对应的环境-f pom_2.xml :pom_2.xml代表指定的pom文件

2021-07-16 17:48:27 4488

原创 java List<Object> 深拷贝

//list深度拷贝List<Object> newList = new ArrayList<>();org.apache.commons.collections4.CollectionUtils.addAll(newList, new Object[list.size()]);Collections.copy(newList, list);备注:list为源数据

2021-05-27 10:33:18 862

原创 java 根据对应的年份取出在所有年份中的位置及取对应的数值

public class TestF { public static void main(String[] args) { String [] quanYearArray={"2016","2017","2018","2019","2020"}; String [] haveYearArray={"2018","2020"}; String [] haveValueYearArray={"2018的值","2020的值"}; Map .

2021-04-28 13:00:09 268

转载 VMware12 CentOS 7 NAT方式连接网络配置

转自https://blog.youkuaiyun.com/u013305747/article/details/78375946VMware、CentOS 7 安装略过(网上教程一堆),以下是安装完成后以NAT方式链接网络的配置,需要注意的几个点:一、虚拟网络编辑器配置1、VMnet8设置(不需要改动)2、NAT设置(不需要改动)3、DHCP设置(CentOS IP地址段设置,不需要改动)二、虚拟机设置(网络适配器选择NAT模式)三、主机VMware Virtual Ethe

2021-04-22 11:18:08 265

转载 java 线上应用故障排查之二:高内存占用

前一篇介绍了java线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查。搞Java开发的,经常会碰到下面两种异常:1、java.lang.OutOfMemoryError: PermGen space(jdk1.7及之前版本)2、java.lang.OutOfMemoryError: Java heap space要详细解释这两种异常,需要简单重提下Java内存模型。(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogja...

2021-04-13 11:15:42 678

转载 java 线上应用故障排查之一:高CPU占用

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen)以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程或者代码呢?首先显示

2021-04-13 10:58:00 206

原创 java 通过反射创建对象并给属性赋值

import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class ReflectPO { private String h1; private String h2; public String getH1() { return h1; } public void setH1(String h1) { .

2021-04-12 17:17:22 1403

原创 java 通过网络流 把文件写到某个地方

@Testpublic void testCopyFile() throws Exception{ URL url = null;//把远程文件地址转换成URL格式 InputStream fin=null; FileOutputStream fileOut=null; try { url = new URL("http://ip地址/6456b1051fa6531cf9b36cacb9a0e92a.xlsx"); fin = url.o.

2021-04-08 17:29:44 407

原创 centos7普通用户和root用户 安装python3

一:普通用户python -V,看下之前系统中是否有python,看这个是因为安装python3时的基本环境都已具备了,如下图中的是python2版本官网下载 Python-3.7.9.tar.xz 安装包解压 tar -xvJf Python-3.7.9.tar.xz 编译安装 创建编译目录mkdir /home/username/python3 备注:username为用户名 cd Python-3.7.9 ./configure --prefix=/home/user...

2021-03-18 17:52:23 2699 1

原创 java 多个数组 按照一个数组元素排序 其他数组值也跟着变

//前提,每个数组的元素个数一致 ,使用对象是最简单的方法,下边这种方法没有使用对象public static void main(String[] args) {String[] xValue={"1","2","3","4","5"};String[] xNote={"1月1日0时","1月1日1时","1月1日2时","1月1日3时","1月1日4时"};String[] xNoteNew=new String[xNote.length];//String[] xValueNew=new

2021-01-26 14:52:33 1310

原创 java 远程调用 RestTemplate 传json

@SpringBootTestpublic class NyyTest { private Logger logger = LoggerFactory.getLogger(NyyTest.class); @Test public void initProcess() { RestTemplate restTemplate=new RestTemplate(); String url ="http://aaa"; HttpHeader...

2021-01-20 18:05:18 343

原创 列表 转成 树形结构

List<Abc> chainList = mapper.selectList(bb);for (int i = chainList.size() - 1; i >= 0; i--) { // 当前要移动的记录 Abc child = chainList.get(i); // 如果当前节点没有父节点,则不用往下了 if (StringUtils.isEmpty(child.getParent())) { continue; }...

2020-12-10 18:05:59 719

原创 高并发系统的演进(如何设计一个高并发系统架构)

一:系统拆分:将一个系统拆分为多个子系统,用dubbo或springCloud来搞,然后每个系统连接一个数据库,这样就可以对并发访问起到一定的作用。二:缓存:必须得用缓存。大部分的高并发场景,都是读多写少,完全可以在数据库和缓存中都写一份,然后读的时候大量都是走的缓存。毕竟redis轻松单机几万的并发是完全没有问题的。三:MQ:可能你还是会出现高并发写的场景,比如一个业务操作里要频繁操作数据库多次,这时候就得用MQ了,大量写请求到MQ里,后边的系统消费后慢慢写,控制在mysql承载范围之内,MQ单机

2020-12-05 10:45:15 243

原创 Redis 过期策略 内存淘汰机制 原理

一:删除策略1.定期删除 redis默认每隔100ms会随机抽取一些设置了过期的key进行检查其是否过期,如果过期了就删除2.惰性删除 因定期删除可能导致很多过期key到了时间并没有被删除掉,这就用到了惰性删除,就是你在获取某个key的时候,redis会检查下,这个key是否设置了过期时间,如果设置了而且已经过期了,就会删除而且不会给你返回任何东西,并不是key到时间就被删除掉,而是你查询这个key的时候,redis才会进行检查二:内存淘汰策略如果redis的内存占用过多的时候,此时会进行内

2020-11-26 21:52:32 438

原创 Redis 单线程原理 示意图

1.客户端向redis server发送socket连接到server socket,server socket接收到请求后会产生AE-READBLE事件,IO多路复用程序会监听到AE-READBLE事件,IO多路复用程序中有一个队列,客户端来的请求会进入到里边,后边就是文件事件分派器,接着就到连接应答处理器,server socket接收到连接后,命令请求处理器会读出来数据,在自己内存中完成key.value数据处理,命令回复处理器处理完后,IO多路复用程序会监听AE-WRITEABLE事件,再返回到客户

2020-11-26 17:09:37 352

原创 redis memcahe 区别

1.redis单线程,memcache多线程2.redis数据类型更丰富,memcache比较单一3.reids官方支持原生cluster模式,memcache不支持

2020-11-26 15:58:51 146

原创 elasticSearch es 性能优化

1.写入到es中的数据量尽量少于filesystem cache的剩余内存2.es中的数据放那些需要搜索的必要信息3.冷热数据分离,假如有6条机器,两个索引,一个索引放热数据,一个索引放冷数据,每个索引3个shard,3台机器放热数据index,另外3台机器放冷数据index,这样你大部分时间在访问热数据,热数据都在filesystem cache中,这样访问性能是很高的,另外冷数据的话,大部分都在磁盘上,即使性能差点,也是少部分人在访问。4.设计es中的数据模型,例如订单表、订单条目表o.

2020-11-25 17:19:35 157

原创 elasticSearch es 概念 写入 读取 搜索数据 原理

1.index 相当于数据库中的一张表2.mapping相当于字段表结构的定义(字段及类型)3.document代表数据表中的一条数据,每个document中有多个filed,每个filed就代表这个document中一个字段的值4.shard 每个index会被拆成多个shard,每个shard中放index的一部分数据,每个shard可能分在不同的机器上,每个shard都有一个副本,主数据和副本不在同一台机器,primary shard 会自动同步到replication shard上m

2020-11-24 17:36:01 289

原创 RabbitMQ 高可用 幂等 消息丢失 顺序消费

1.高可用:RabbitMQ的高可用指的是镜像模式的集群,queue的元数据和消息数据都存在每个节点上,不是分布式的(中小公司推荐,qps万级)2.(重复消息)幂等:不管生产者发送几条相同的消息到mq,消费者消费的时候,只消费一条,实现思路1.例如写库,订单表,生产者生产消息的时候在消息体中加入一个唯一标识(一个字段或者多个字段组合),这样在消费者消费的时候,首先去从库中查看是否有这个标识的数据,如果有的话,直接丢掉就行。3.消息丢失:分为三个部分,分别为3.1:生产者消息是否发送到mq服务器中

2020-11-23 17:49:36 181

转载 转java通过身份证号码获取出生日期、性别、年龄

转自:https://blog.youkuaiyun.com/u011199063/article/details/79564587身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1月1日出生)+3位顺序码 18位:6位地址码+8位出生年月日(19900101代表1990年1月1日出生)+3位顺序码+1位校验码 1 2 3地区码: 1、 第一、二位表示省(自治区、直辖市、特别行政区)。 2、 第三、四位表示市(地级市、自治州、..

2020-11-12 11:08:55 1595

转载 转 Springboot的异步线程池 四种线程池拒绝策略

1:定义线程池 1 2 3 4 5 6 7 8 9 10 11 12 13 一般写到启动类中,当做启动类中的内部类 @EnableAsync @Configuration classTaskPoolConfig { @Bean("taskExecutor") publicE...

2020-10-29 16:19:42 2317

转载 转 java8一行代码获取昨天时间字符串

import java.time.Instant;import java.time.ZoneId;import java.time.format.DateTimeFormatter;import java.time.temporal.ChronoUnit;String date = DateTimeFormatter.ofPattern("yyyy-MM-dd") .withZone(ZoneId.systemDefault()).format(Instant.now().minus(1,

2020-10-28 17:35:37 586

原创 oracle 使用sql查询表注释和列注释及数据类型等

SELECTt1.Table_Name || chr(13) || t3.comments AS "表名称及说明", ROWNUM , t1.Column_Name AS "字段名称", t1.DATA_TYPE AS "数据类型", t1.DATA_LENGTH AS "长度", t1.NullAble ...

2020-10-28 11:58:33 731

原创 web 统一打印出接到前端的请求参数是什么 调试使用

public class MyAuthorityInterceptor implements HandlerInterceptor{@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//请求中Controller中的方法名HandlerMethod handlerMethod = (Ha.

2020-10-22 14:33:55 430

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除