![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
Fanzongshen
只要学不死,就往死里学!
展开
-
Mockito.when返回的list长度为0问题解决方法
这是因为虽然你在单测中已经mock数据,但是mock数据的参数与在实际单测执行时大参数不是一个对象。今天玩Mockito.when遇见一个问题Mockito.when返回的list长度为0;原创 2024-03-24 11:38:38 · 468 阅读 · 0 评论 -
ERROR Error while deleting the clean shutdown file in dir E:\kafka_2.11-2.3.1\tmp\kafka-logs (kafka.
kafka启动一段时间后报错....原创 2023-08-23 16:15:24 · 237 阅读 · 0 评论 -
error: error validating “pod-nginx.yaml“: error validating data: apiVersion not set; if you choose t
因为我个人非常喜欢用快捷键在用vim 编辑文件几乎也是直接shift+ins直接粘贴然后shift+zz直接保存,就没有看文本类容,一直卡在这里了,今天我仔细看了一下才发现用Xshell的时候shift+ins直接粘贴,真是坑死人的bug啊!希望广大攻城狮特别注意!记录一下最近玩k8s,linux系统踩坑。原创 2023-03-07 16:18:37 · 4090 阅读 · 6 评论 -
kafka的使用,监听器容器工厂,定时启动、停止监听器
kafka的使用,监听器容器工厂,定时启动、停止监听器。原创 2022-10-24 10:21:03 · 1985 阅读 · 0 评论 -
支付系统流程以及防止订单重复提交
支付的话,一般是走支付中心,然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。创建订单的时候,用订单信息设置redis的key值,判断redis中是否有key,有则不允许重复提交,没有则生成一个新key,放到redis中设置个过期时间,然后创建订单。1、支付订单增加一个中间状态"支付中",当同一个订单去支付的时候,先检查有没有状态为"支付中"的支付流水,当然支付的时候要加个锁。原创 2022-10-03 01:38:10 · 482 阅读 · 0 评论 -
BIO、NIO、AIO的区别和原理
BIO、NIO、AIO的区别和原理。原创 2022-07-27 22:47:17 · 295 阅读 · 0 评论 -
windows安装kafka
windows安装kafka。原创 2022-07-27 15:26:56 · 125 阅读 · 0 评论 -
windows管理员命令行模式中cd命令无效。
windows管理员命令行模式中cd命令无效。原创 2022-07-26 23:47:52 · 447 阅读 · 0 评论 -
解决@Valid List传参无法校验的问题
解决@Valid注解传参List对象无法校验的问题。原创 2022-07-20 00:01:21 · 1104 阅读 · 1 评论 -
org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Unrecognized
最近写springSecurity +redis遇到问题报错在实现接口UserDetails过后报错,于是我查阅了大量的文章并且分析过源码,再加上一步一步的断点调试,总结出了以下结论对于权限Set集合因为json反序列化原因写入redis,再取出来会出现反序列化失败异常,所以此时我们应该写一个新的类来继承它让其序列化成功代码如下此时我们的UserDetailsService实现类如下这样一来我们用redis的set方法存进去的时候再取出来就不会报错了最后顺利完成jwt认证...原创 2022-07-13 13:37:52 · 4537 阅读 · 3 评论 -
stream流根据时间筛选list最新数据
stream流根据时间筛选list最新数据原创 2022-07-11 22:14:41 · 5396 阅读 · 0 评论 -
configuration和component的区别
结论Configuration是同一个对象,Component不是同一个对象原创 2022-06-07 23:34:25 · 6843 阅读 · 1 评论 -
swagger 踩坑记录
导入依赖<!--swagger 2--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>原创 2022-05-16 09:06:19 · 288 阅读 · 0 评论 -
服务器启动,初始化执行计划,定时任务
package com.changan.contract.common.timer;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.time.ZonedDateTime;import java.util.*;import com.alibaba.druid.sql.visitor.functions.Now;import com.changan.contract.utils.JsonResult;原创 2022-05-12 11:18:30 · 215 阅读 · 0 评论 -
java获取当前时间两个月前的时间
public static void main(String[] args){ try{ String time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()); String timeBefore=getTwoMonthBefore(time); System.out.println("now time is :"+time+" and原创 2022-05-10 10:25:31 · 2299 阅读 · 0 评论 -
java截取字符串中间一部分内容
/** * 获取string字符串指定内容 */private static String getFullDepartmentName(String result) { for (String s : result.split(",")) { if (s.startsWith("\"fullDepartmentName\"")){ String[] split = s.split(":"); ...原创 2022-05-10 08:56:42 · 2906 阅读 · 0 评论 -
Resolved [org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException: F
错误示范当有多个@RequestParam并且list<对象>里面是个对象的时候是会报错的Resolved [org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException: Failed to convert value of type ‘java.lang.String’ to required type ‘java.util.List’; nested exception i原创 2022-04-16 09:54:38 · 7627 阅读 · 0 评论 -
Failed to instantiate [java.util.List]: Specified class is an interface
Failed to instantiate [java.util.List]: Specified class is an interface这里用了@Param接口中的请求也得加@RequestParam原创 2022-04-13 14:14:26 · 638 阅读 · 0 评论 -
java读取Excel内容添加到list集合里面去
java读取Excel内容添加到list集合里面去package com.changan.contract.newsign.utils;import com.changan.contract.xqht.entity.ProcessAudit;import com.google.common.collect.Lists;import lombok.extern.slf4j.Slf4j;import org.apache.poi.hssf.usermodel.HSSFDateUtil;import原创 2022-04-08 14:11:49 · 1760 阅读 · 0 评论 -
比较时间Date
比较时间大小package com.fan.test;import com.fan.dto.PersonDTO;import com.fan.entity.Person;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * @author およそ神 *原创 2022-04-06 21:50:06 · 447 阅读 · 2 评论 -
The Tomcat connector configured to listen on port 8080 failed to start. The port may already beinuse
The Tomcat connector configured to listen on port 80 failed to start.The port may already be in use or the connector may be misconfigured.windows系统:netstat -anotasklist | findstr 7676taskkill /f /t /im java.exe原创 2022-03-24 15:22:55 · 1636 阅读 · 0 评论 -
集合框架底层与区别优缺点
hashmap①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。当两个不同的键对象的has原创 2022-02-17 13:40:17 · 319 阅读 · 0 评论 -
springbean的生命周期
springbean的生命周期1.实例化bean对象(通过构造方法或者工厂方法)2.设置对象属性(setter等)(java反射机制依赖注入)3.如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的ID。(和下面的一条均属于检查Aware接口)4.如果Bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身5.将Bean实例传递给Bean的前置处理器的postProcessBeforeI原创 2021-12-14 17:41:46 · 200 阅读 · 0 评论 -
JVM虚拟机
栈内存溢递归调用方法会发生StackOverFlowError可以通过调整参数-xss去调整jvm栈的大小JVM内存模型jvm将虚拟机分为5大区域:程序计数器、虚拟机栈、本地方法栈、java堆、方法区JVM中GC算法:标记清除法、标记整理法、复制算法、分代收集算法判断一个对象是否存活1:引用计数法;2:可达性分析算法;...原创 2021-12-14 17:32:14 · 1383 阅读 · 0 评论 -
synchronized锁
synchronized用来解决多线程问题,保证被锁的代码只有一个线程执行。volatile1.volatile保证变量的可见性,不能保证原子性2.防止指令重排对象锁:独一无二,与其他对象不影响类锁:所有该类的对象共用这把锁1.一个线程获取一把锁,没有得到锁的线程只能排队等待;2.synchronized 是可重入锁,避免很多情况下的死锁发生。3.synchronized 方法若发生异常,则JVM会自动释放锁。synchronized 同步的范围越小越好,如果执行的方法很耗时,其他原创 2021-12-14 17:12:48 · 114 阅读 · 0 评论 -
threadlocal本地线程池
线程与线程之间是相互隔离package com.fan.threadlocal;/** * @author およそ神 * @version JDK 1.8 */public class Concurrent { private static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>(); public static void main(String[] args)throws原创 2021-12-13 17:06:16 · 455 阅读 · 0 评论 -
redis的RDB和aof的区别以及优缺点
redis持久化redis是基于内存超过,如果进程退出或者宕机了那么redis中的数据将会丢失无法恢复。RDB:把当前数据生成快照保存在硬盘上某个时间点全部数据的快照,所以速度比较快,无法做到实时持久化,版本不兼容保存一次rdb文件至少花费5分钟左右时间,如果在此时宕机,就会丢失好几分钟数据如果数据庞大fork会非常耗时,会导致服务器在某某毫秒内停止处理客户端AOF:记录每次对数据的操作到硬盘上每次写的命令追加到日志中,数据精确度高,速度慢aof默认策略是everysec每秒同步一次,宕机最原创 2021-11-25 16:22:07 · 889 阅读 · 0 评论 -
秒杀系统设计方案
搭建eureka集群,编写生产消费者,业务逻辑,熔断降级,git配置中心前端:静态页面,CDN抗衡峰值灰色按钮,禁止重复提交用户限流,ip限流后端:网关层控制脚本插件,限制访问频率服务层1.主要信息存到redis中2.登录验证3.flag开关4.redis的decr预减库5.redis的布隆过滤器防止重复秒杀6.redis的Lua脚本完成redis的事务操作6.发送秒杀成功到MQ给相应的业务端处理7.用户id和商品id作为redis的key值,通过布隆过滤器来标识是否秒杀成功,原创 2021-11-19 14:58:09 · 1005 阅读 · 0 评论 -
反射获取class的4种方法!
/** * およそ神 */ @Test public void test() throws ClassNotFoundException { //方式一:调用运行时类的属性:.class Class clazz1 = Person.class; //Person为自定义类 System.out.println(clazz1); //方式二:通过运行时类的对象,调用getClass() Pe原创 2021-05-27 00:20:22 · 140 阅读 · 0 评论 -
java连接数据库实现查询
java连接数据库实现多功能查询import java.sql.*;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * およそ神 */public class DbUtils { private static final String DRIVER = "com.mysql.cj.jdbc.Driver"; private原创 2021-05-26 17:06:25 · 1830 阅读 · 1 评论 -
23种模式之代理模式以房屋出租举例子
首先是一个租房子的接口!package com.fan.demo01;/** * およそ神 * 租房子接口 */public interface Rent { void rent();}然后是房东来实现这个接口package com.fan.demo01;/** * およそ神 * 房东房屋出租 */public class Host implements Rent{ public void rent() { System.out.print原创 2021-05-18 20:26:52 · 366 阅读 · 0 评论 -
如何从spring官网获取最新的beans配置文件!
关于spring官网 首先打开浏览器进入spring官网找到project选项,然后点击spring framework就可以进入到如下界面然后点击LEARN就可以看到当前最新版本的spring项目的特点和新特征然后点击Reference Doc.查看具体介绍然后再点击Core就可以看到项目的容器,事件,资源然后找到例子里面的结构就可以把它拿过来了哦!切记不要将网页翻译成中文,不然编码也会变成中文的编码,很多东西都不能使用!...原创 2021-05-16 00:43:05 · 273 阅读 · 0 评论 -
多线程使用AQS实现红绿灯依次亮
多线程实现红绿灯 首先是我们抽象的灯类:定义3个方法分别对应3种颜色package HXZY.moth5.day5_11.linghtpract;/** * およそ神 * 抽象的灯类 */public abstract class Linght { abstract void gree() throws InterruptedException; abstract void red() throws InterruptedException; abstract voi原创 2021-05-12 10:20:25 · 222 阅读 · 0 评论 -
交替执行AB线程让A线程+1,B线程-1
调用LockSupport方法实现import java.util.concurrent.locks.LockSupport;/** * およそ神 * 交替执行AB线程 */public class Test1 { // 定义为static static Thread t1 = null; static Thread t2 = null; public static void main(String[] args) { Share share原创 2021-05-10 23:29:35 · 374 阅读 · 0 评论 -
实现1-100之间的阶乘
使用递归计算1到100之间的阶层!这里我们要考虑到最后的结果肯定是一个非常巨大的数字所以这里我们考虑BigInteger来接收最后获取的值!import java.math.BigInteger;/** * およそ神 * 实现1-100之间的阶乘 */public class Test1 { public static void main(String[] args) { System.out.println(mul(new BigInteger("100")));原创 2021-05-10 11:43:33 · 1709 阅读 · 0 评论 -
filechannel结合mappedbytebuffer高效复制2g以上的文件
高效复制/** * およそ神 * filechannel结合mappedbytebuffer高效复制2g以上的文件 */import java.io.IOException;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;public class Test { public static void main(String[原创 2021-05-07 12:34:07 · 417 阅读 · 0 评论 -
反射获取class的4种方式
package moth5.day5_7;/** * およそ神 * 反射获取class的4种方式 */public class Test { public static void main(String[] args) throws ClassNotFoundException { Class<?> aClass = Class.forName("moth5.day5_7.Student"); Class<Student> aCla原创 2021-05-07 11:59:47 · 118 阅读 · 0 评论 -
继承内部类静态方法加载顺序
继承内部类静态方法加载顺序 /** * およそ神 * 继承内部类静态方法加载顺序 */public class Test { public static void main(String[] args){ A ab = new B(); ab = new B(); }}class A{ static{ System.out.println("A中静态方法加载到方法区"); } public A(){原创 2021-05-01 14:38:34 · 111 阅读 · 0 评论 -
使用递归删除文件和文件夹
使用递归删除文件和文件夹 import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.util.stream.Stream;/** * およそ神 * */public class Test { public static void main(String[] args) throws IOException { File file原创 2021-05-01 13:08:37 · 283 阅读 · 0 评论 -
根据foreach,迭代器,Lambda,Streams API遍历hashmap的8种方法
import java.util.*;/** * およそ神 * 遍历hashmap的8种方法 */public class hashT4 { public static void main(String[] args) { HashMap<String, Integer[]> map = new HashMap<>(); map.put("凡", new Integer[]{1, 1, 1}); map.put("总原创 2021-04-24 20:59:24 · 220 阅读 · 0 评论