自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sky

风尘仆仆 平心静气

  • 博客(156)
  • 收藏
  • 关注

原创 java 分表下分页查询方法

分表分页查询

2022-11-04 18:25:25 1441 1

原创 手机号加密成7位“随机字符串”

一、业务场景需要将手机号作为用户标识,附加在短信后面进行埋点统计:统计用户数与点击数二、核心思想将手机号作为二进制字符串,平均分成5份,每份二进制字符串长度为7,2的7-1次方,不超过127,因此可以使用ascii码表示这5段二进制字符串。因为用ascii码表示的字符串有点明显,因此将5个ascii码转Base64字符串,这样就不会太明显,让人感觉是随机字符串三、弊端1、同一个手机号生成的“随机字符串”是固定的,不太安全2、修改“随机字符串”反解密有可能得到正确格式的手机号,形成数据统计错误

2022-05-30 18:16:50 786

原创 Kafka消费者处理消息失败后,无限消费该失败消息的问题

结论:如果消费者开启了批量消费的配置,那么必须同时配置一个当批量消费出现异常的处理器。否则仅配置启动消费者批量消费是会出现问题的。@Bean("batchConsumerFactory") public KafkaListenerContainerFactory<?> consumerFactory() { ConcurrentKafkaListenerContainerFactory<String, String> factory = new Concur

2022-03-27 15:33:38 5472

原创 Docker failed to start shim: exec: “docker-containerd-shim“: executable file not found in $PATH: unk

failed to start shim: exec: "docker-containerd-shim": executable file not found in $PATH: unknown.

2022-02-19 20:55:09 1457

原创 SpringBoot No converter found for return value of type: class com.example.zhishanchanquan.util.R]

根据报错得知是R这个类找不到转换器:原因:成员属性为私有,且没有相应的getter和setter,系统无法解析该类出错代码类:解决方案有两种:1、加上lombok的@Data注解,添加getter和setter2、将成员属性修饰符改成public...

2020-11-01 11:25:31 2210

原创 WIFI更换了后,虚拟机更改IP

前言:今天由于换了个地方连接WIFI,发现无法远程连接虚拟机,于是尝试修改虚拟机IP为WIFI网段下的IP地址我的问题是:虚拟机能开启,但无法远程连接修改IP步骤非常简单:1、windows下cmd, ipconfig查看笔记本连接WIFI的IP地址2、虚拟机执行ifconfig 192.168.43.7(保证虚拟机IP在同一网段下的不同IP即可)再执行ifconfig查看是否修改成功。(临时修改,虚拟机重启后仍然使用指定文件的IP)修改成功!此时可以根据这个IP远程连接虚拟机了。.

2020-09-01 12:56:20 1559

原创 Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl 依赖版本不兼容问题

SpringBoot项目运行报错:Factory method ‘defaultValidator’ threw exception; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl查看Maven依赖,应该是jar包版本不兼容问题:将该jar报排除,重新导入低版本的jar包,运

2020-08-29 15:07:40 7529 1

原创 Socket接收http请求

服务端socket:public class HttpSocket { public static void main(String[] args) throws IOException { InetAddress localHost = InetAddress.getLocalHost(); System.out.println("localhost:" + localHost); ServerSocket serverSocket = new S

2020-08-26 23:46:36 2435

原创 SpringBoot启动报错Error processing condition on org.springframework.boot.autoconfigure XXX

这种错误一般是依赖版本问题或者依赖组件缺少依赖缺少一般在排除exclude依赖的时候注意

2020-08-17 14:31:14 27609

原创 url带有相同的参数名,后端根据接收类型处理的结果

今天无意调用了 “http://localhost:8401/testHotKey?p1=123&p1=456”,这种带有相同参数的url,后端接收类型的不同,有不一样的效果虽然不是很重大的发现,但记录一下也无妨~O(∩_∩)O一、使用String接收:发送请求:后端接收结果:两个相同的参数拼在一起,并用逗号隔开二、使用List接收:(正常情况相同的参数名都是用List来接收的)发送请求:后端接收结果:很明显两个参数组成了一个数组...

2020-08-15 10:44:03 2326

原创 服务注册到Nacos集群失败的原因——Nacos的启动IP

前言:一开始部署Nacos集群是在Linux中的,本来高高兴兴的安装好环境了,谁知启动Nacos启动内存不足,显然免费的阿里云服务器1G内存还是不够用,然后我将Nacos节点启动的配置参数调小到50M(原来2G,我都觉得自己丧心病狂了),不知道是否配置太小,虽然启动了但连都连不上。于是使用windows搭建Nacos集群了。其实和Linux搭建差不多,甚至方便点windows安装Nacos集群我是参考这篇博客的,当然这不是重点https://blog.csdn.net/jike11231

2020-08-13 23:39:52 7264 8

原创 Maven 排除依赖包冲突

有时候一个大的依赖包中的某些小的依赖包版本与我们电脑设备的软件不符时,我们可以排除这个小的依赖包,从而另外添加一个新的对应版本号的依赖包如这个 spring-cloud-starter-zookeeper-discovery 大的依赖包中的 zookeeper包是3.5.3,而我的zookeeper是3.4.11版本的,<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starte

2020-08-03 16:27:03 475

原创 真——SSM整合

导言:很久没有碰项目了,导致整合SSM都忘了,必须要记录以下,防止以后出岔子。这篇博客主要目的是让大家快速搭建SSM的基本架构,并没有实现前端页面(除了测试页面)项目具体的内容我就不一 一讲解了,相信大家其实一看都懂,但部署起来可能磕磕碰碰我将项目放到码云上https://gitee.com/huangyutingsky/ssm_setup这个项目环境非常简单,下载后可以直接运行了现在我只介绍如何创建一个SSM项目文件如何创建项目:创建的新项目空空如也,把红色下划线的包创建准备好了完

2020-07-20 21:11:06 161

原创 idea 根据数据库表生成实体类

一、首先让IDEA连接数据库1、点击Database2、点击数据库图标,再点击添加数据库的类型(MySQL,sql-server等)3、填写好连接数据的信息,然后点击OKurl参考jdbc:mysql://localhost:3306/abc?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false4、数据库连接成功二、接下来将数据库中的表生成实体类1、点击persisten

2020-07-20 14:57:58 686

原创 windowsJedis连接虚拟机Redis出现redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTime

注:考虑备份一份redis配置文件0、防火墙是否关闭了1、将redis配置文件中bind注释掉,或者将127.0.0.1 改成 0.0.0.0,表示除本机外,其它远程机器都可连接2、将redis配置文件中protected-mode的值改成no,解除保护模式,也是DENIED Redis is running in protected mode because protected mode is enabled问题的解决...

2020-07-17 09:53:46 316

原创 十大基础排序

1、冒泡排序(时间复杂度——O(n^2)—— 两个for循环)public class BubbleSort { public static void main(String[] args) { int[] array = randomArray(10, 20); System.out.println(Arrays.toString(array)); int[] sort = bubbleSort(array); System.o

2020-06-26 14:47:24 1320

原创 Maven项目使用log4j打印日志信息

序言由于自己看到别人控制台可以输出时间,还傻傻地问别人怎么输出的,甚至还以为是System.out.println();输出的时间,哎,真的傻到家了。防止自己下次犯傻和下次快速部署,记录一下。一、依赖<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version><

2020-06-10 21:58:20 941

原创 HashMap浅析

HashMap扩容机制:触发条件:1、jdk1.7:size大于阈值且put的数组位置不为空(table[index]!=null)2、jdk1.8:size大于阈值过程:1、准备新数组,新的数组是原来数组长度的2倍2、重新计算hash值(但一般不会重新计算),根据hash得到索引值分配节点位置结果:1、HashMap新的数组是原来数组长度的2倍HashMap添加数据put机制:1、jdk1.7:选用头插法原因:1、数据插入在头部,速度快(尾部需要遍历)2、可以最快访问新插入的热点

2020-06-10 13:21:42 294

原创 Socket聊天程序——多线程解决发送多条消息

参考博文https://www.cnblogs.com/unclejelly/p/4082095.html开始遇到的问题——服务端与客户端的输入流有阻塞,导致聊天只能读一条写一条原因:Socket的输入流和系统的输入流都是阻塞的,就是会一直等待你的操作,不会立即返回。比如服务端的输入流会一直等待客户端的输出流的数据,直到有数据为止输入流才会返回并结束现象:服务器必须发送消息才能读取消息,客户端必须读取消息(消息内容不能为空)才能发送消息,这样给人感觉很不适解决方法——多线程将输出流和输入流分

2020-06-05 17:29:20 1527 9

原创 SpringMVC源码浅析

SpringMVC主要运行过程图:(黄色背景的为重要方法)根据黄色背景框里的方法我们得知了SpringMVC主要运行流程:Begin1、首先DispatchServlet调用doService(),再调用doDispatch()2、根据request调用getHandler()方法获取执行链对象这里的执行链指的是什么?首先执行链你可以理解为事务,多个动作组成一个事务,是一个对象执行一次响应我们不仅仅执行处理器方法,还要执行拦截器等方法所以这个执行链对象中包含了处理器、拦截器等对象属性,想

2020-06-01 16:27:37 427

原创 后端@RequestBody异常although at least one Creator exists): no String-argument constructor/factory metho

序言:此次测试先弄清楚使用Ajax来传输不同类型的数据:文本、对象、文件本来以为是一个无敌简单的Demo测试,想不到在一个地方卡了很久以前明明使用springboot随随便便就能接收对象,难道是springboot版本更新的问题!!!???解决方案:实体类中添加将前端的json字符串手动赋值的代码参考这位老哥的微博,感谢感谢:https://blog.csdn.net/qq_30162239/article/details/86647164前端:var user = { "name"

2020-05-31 00:36:01 14332 4

原创 SpringMVC引入静态资源jquery被拦截,配置资源放行但仍未解决

1、在Spring.XML中配置资源放行<!--前端控制器,哪些静态资源不拦截--><mvc:resources mapping="/js/**" location="/js/"></mvc:resources>2、确认jquery路径在webapp(除WEB-INF文件,因为无法直接访问WEB-INF文件)路径下但仍然无法成功引入jquery最后在网上博客看到了如下解决方法:将jquery–3.3.1.min.js名字去掉min,最后名字变成jque

2020-05-29 09:45:13 511

原创 Spring AOP 多个AOP和Spring事务绑定同一个方法

背景最近学了Spring的AOP,Spring AOP是通过JDK和cglib的动态代理实现的。而Spring的事务控制是基于AOP的,而我在学习Spring事务和AOP的时候将它们混合运行的时候Spring的事务控制失效了,执行错误后不再进行回滚了,其它的AOP正常运行。在网上参考这篇博客:https://blog.csdn.net/qqxhwwqwq/article/details/51678595以下是我较为拙劣的测试过程:首先我们要准备两个自定义好的AOPAOP1@Componen

2020-05-26 23:16:46 1272 1

原创 关于使用@Value(${×××))从properties文件取值的坑

报错代码:@Value("${driver}")private String driver;@Value("${url}")private String url;@Value("${username}")private String userName;@Value("${password}")private String password;properties文件driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:

2020-05-25 12:57:34 1202

原创 Spring AOP ××× but was actually of type com.sun.proxy.Proxy

报错代码:方法一、将红色圈住的AccountServiceImpl.class实现类换成IAccountService.class接口你可能很奇怪,我明明在SpringIOC容器中注册的是实现类的Bean对象,为什么我取出来时指定的类型确实接口类型呢?其实我也不太懂。我只知道我此时采用了AOP关联了这个AccountServiceImpl实现类,Spring AOP可能自动对这个实现类做了接口的动态代理。。。。。所以取出来的就要设置为接口类型。纯属臆测!!!方法二、在这个位置加上:&lt

2020-05-24 22:19:56 169

原创 Java浅剖动态代理

一、什么是代理?中间商很多同学应该知道,就是赚差价的。比如我下面代码的例子,生产商和代理商。代理商帮生产商销售,消费者给代理商10000元购买物品,代理商则给生产商约定价格8000元,赚了2000元。以上的描述是生活中的场景,那代码中代理的作用是怎么体现的呢?1、首先整个对象流通是:消费者——>代理商——>生产商2、代理商在调用生产商的sale函数之前对money参数动了手脚,money *= 0.8,自己收缴了2000块3、所以生产商自然而然的最终得到是8000块简单一句话概

2020-05-24 11:55:22 133

原创 Java浅剖静态代码块和构造代码块的执行

静态代码块作用:初始化类的静态属性执行时间:最先加载,且只加载一次构造代码块作用:初始化对象的成员属性,可以说是构造函数的补充执行时间:比构造函数先加载,比静态代码块后加载;且每次创建对象就执行一次public class Test08 { private String name; private int age; private static String st_s; static { st_s = "只有静态变量才能在静态代码块中初始化";

2020-05-23 11:31:20 109

原创 Spring @Autowired 的注入规则

一、什么是@Autowired(自动注入)?@Autowired 自动注入,将SpringIOC容器中已经注册好的对象注入到程序员定义的类型中,使其实例化(相当于new一个对象给定义的类型)并可用, 如:@AutowiredIAccountDao abc;那么 @Autowired自动注入的规则是什么呢?@Autowired 根据先根据定义类型匹配再根据key匹配并返回二、@Autowired注入规则:1、图解2、详细流程@Autowired 首先会根据类型去SpringIOC容器中跳

2020-05-22 12:02:57 1728

原创 对SpringIOC和依赖注入的理解

IOC——控制反转将管理对象的权利由程序员手中提交到SpringIOC容器手中SpringIOC容器负责管理程序员提前注册好的类对象,当Spring启动后,程序员注册的类对象将由IOC容器提供给程序员,不需要程序员自己new只需要你提供一个类名(id),SpringIOC容器会自动帮你查找并返回给你你不需要担心该对象如何创建与生命周期,只需要获取接收就OK如果SpringIOC容器提供了错误的对象,程序员的代码自然会抛出异常DI——依赖注入首先你可以将依赖理解为“需要”,注入理解为“提供

2020-05-21 22:54:34 157

原创 使用FormData提交文件与对象信息

1、我们使用FormData有时候不仅仅要传给后端文件,还需要传给后端对象信息。使用FormData传对象是用key-value形式的,所以传对象不能传整个对象,要传属性,后端接口用对象接收即可,因为可以将传来的属性自动封装到实体类中(前端传来的属性名称和实体类的属性名称一定要一致,否则无法封装)。2、还有当我们传的对象里面还有引用对象的时候,比如User类里面还有一个Depot类,我们就应该这样formData.append(“depot.id”, this.formData.depot.id)

2020-05-19 10:05:39 6121 3

原创 使用select sum(num) from table返回null时报错解决

MySQL方法1、加个判断是否为空2、返回类型是包装类型 Integer (包装类型可以接收 null 值)@Query(value = "select ifnull(sum(num),0) from tb_outstock where citem=:citem group by citem", nativeQuery=true)public Integer countByClothes(String citem);...

2020-05-18 17:54:29 578

原创 Bean添加数据库表注解要注意的

以前实体类引用关联实体类的时候我是将多对一注解标识在属性上,可以生效@ManyToOne@JoinColumn(name="citem")private Clothes clothes;但是不知道为什么现在不能生效了,如果还是按之前那样写的话数据库的表是无视这个多对一注解的,所以更新表后最后得到的新字段类型是一个二进制类型,也是可以储存实体类,但与我要求不符。最后我将这个多对一注解移动到get方法上就解决了这个问题了,生成的表字段是关联实体类的主键,而不是关联实体类本身了@ManyToOne

2020-05-18 12:26:13 237

原创 程序解耦思想

为什么程序要解耦?1、便于代码维护2、降低模块依赖,修改一个模块不影响另一个模块3、提高代码扩展性4、提高代码重用性一、使用反射创建对象,而避免使用 new 关键字//1、使用获取类的方式来加载驱动DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());//2、使用反射方式来加载驱动Class.forName("com.mysql.cj.jdbc.Driver");1、使用获取类的方式来加载驱动的话,如果没有导入相关

2020-05-17 12:12:40 376

原创 mybatis配置环境&基本详情信息

一、什么是MyBatis?mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最...

2020-05-14 20:05:10 355

原创 设置SpringBoot接收文件大小

原因:springboot内置tomact的的文件传输默认为1MB,超过1MB将报错配置文件加上:#文件上传大小为20Mspring.servlet.multipart.max-file-size=20MB#请求大小为20Mspring.servlet.multipart.max-request-size=20MB

2020-05-11 11:37:18 1181 2

原创 后端接收图片文件 400错误

原因:实体类的字段名和接口字段名相同,导致匹配失败众所周知,前端要发送文件给后端接口,用的方法就是axios + new formData()前端:var data = new FormData(); data.append("account", this.formData.account); console.log("img type:" + typeof this.img); data.append("img", this.img); axios.post(url,

2020-05-10 19:47:59 984

原创 JPA自定义SQL Column ××× not found.

报错语句@Query(value = "select distinct(stockname) from tb_instock", nativeQuery = true)public List<Instock> getStocknames();原因是因为我从数据库中查询的数据字段只有 stockname, 没有Instock实体类中的其它字段,所以报错修改:由Instock实体类改成String@Query(value = "select distinct(stockname) fro

2020-05-10 16:41:00 809 1

原创 SpringBoot启动异常:Error creating bean with name 'defaultValid

原因是 org.hibernate.validator 版本和SpringBoot版本不匹配添加hibernate-validator依赖指定版本<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator --> <dependency> <...

2020-05-07 11:19:15 2161

原创 通过Servlet连接数据库失败解决办法

使用jdbc单独测试连接数据库连接成功但使用servlet时候失败解决办法:将jdbc添加到tomcat的lib包下

2020-05-06 11:36:51 2934 7

原创 读取配置文件的方法

运用框架很多时候要扫描 .XML 配置文件,对于该配置文件的路径方法:1、使用类加载器,它只能读取类路径的配置文件2、使用ServletContext对象的getRealPath()以下读取配置文件的方法一般不可取:1、使用绝对路径d:/xxx/xxx.xml弊端:如果部署该项目的服务器没有D盘则会扫描失败,所以不可用2、使用相对路径src/main/java/xxx.xml...

2020-05-05 21:47:22 251

空空如也

空空如也

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

TA关注的人

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