自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql 优化慢复杂sql (多个left join 数量过大 order by 巨慢)

多个left join 数量过大 order by 巨慢

2022-12-08 17:24:54 7401 4

原创 一次使用BeanPostProcessor疏漏引起的重大bug

定时任务不调度问题

2022-01-18 14:27:25 392

原创 代码习惯反思

1、返回空容器而不是null2、不要因为懒直接用DO返回给前端3、不要因为懒将DO的字段写成非驼峰4、多人开发尽量采用开接口给他人使用的方式而不直接引mapper5、方法里不应该传入布尔值,如果说true是一种实现方式,false是一种实现方式,那么就应该写两个方法。6、入参越少越好懂7、函数要么做什么事,要么回答什么事。8、try/catch 的主体应该抽象一个方法。9、好的注释是你想办法不去写的注释。10、方法不应该调用由任何函数返回的对象的方法。不要本末倒置,以上反思都是打磨,写

2021-12-28 13:57:17 323

原创 springboot+elasticsearch+bboss框架集成遇到的坑

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、为什么要用bboss?二、遇到的坑1.kibana、head页面查询结果不一致2.head查询结果与bboss框架查询结果不一致,bboss es查询结果为空3.遇事不决先查官方文档,不要去瞎百度总结前言如果只是很简单的普通查询建议还是用springboot自带的es工具template什么的,也许更好,但其实这应该是个悖论,就是因为要实现更好更简单的复杂搜索才会上es,像我这次的功能主要是为了实现拼音搜索,用es会比

2021-12-24 16:48:45 1716

原创 java使用mysql的escape遇到的坑

1、escape只能对指定符号后的第一位进行不转义处理当你的语句是like ‘%%’ escape ‘\\’ 的话第二个%还是会被当成多字符匹配的特殊字符,只有当like ‘%%’ escape ‘\\’ 时才能达到查询用两个%号的数据。2、基于1条件,我们在代码里就需要对所有特殊字符进行一个replace的操作,给所有特殊字符前加\\,be like:string1.replace("%","\\%").replace("/","\\/").replace("\\","\\\\")看起来好像没问题

2021-11-30 16:37:38 1338

原创 基金投资卖出笔记

基金止盈的三种方式1、按目标收益率进行止盈:当收益率到达自己设定的点,就进行卖出的动作(通常20到30)赎回方式有三种a:一次性赎回b:分批赎回:比如,先卖出一半,剩下一半观望,一直涨就不卖,回撤到达想好的点,再进行一个卖出,分批或者一次性。(首选这个方法)c:最大回撤止盈:当上涨超过了我们设想的点不进行立刻卖出的动作,一直上涨就一直不卖出,当他开始回撤并且回撤达到百分之5(或者你自己想好的值),就进行一个卖出,分批或者一次性。2、根据资产再平衡止盈打个比方,我将自己的投资按照50:50的

2021-11-30 11:13:33 92

原创 《设计模式之美》课程笔记之DDD开发实战

1、分析需求,拆分模块2、再各个模块里将需求拆分成足够细的每一个小点3、把有共同点的小点归为一个类,这里找出来的类就是核心类4、面向接口编程,考虑一下开出来的接口有哪些,实现类的方法有什么5、把核心类组装进去。...

2021-11-25 14:30:24 84

原创 《设计模式之美》之接口、抽象类笔记

1、抽象类是解决代码复用的,接口类则是解决抽象而不是代码复用:抽象类是一种自下而上的设计思路,先有子类的重复,再抽象成父类。而接口正好相反,是先定义接口(类似一个协议),是自上而下的。抽象类和接口的语法特点:抽象类不能被实例化,能被继承,它可以包含属性和方法,方法可以包含实现,没有实现的方法称为抽象方法,继承抽象类的类要实现它的所有抽象方法。而接口类则只能包含抽象方法,不能有属性和方法实现,实现接口的类必须实现接口所有抽象方法。原则:基于接口而非实现编程也叫基于抽象而非实现编程越抽象、越顶层、越脱离

2021-11-11 17:04:20 257

原创 课程《设计模式之美》笔记之关于面向对象与面向过程

1、滥用getter、setter方法会导致看似是面向对象的代码,实际是面向过程的。面向对象封装的定义是:通过访问权限控制,隐藏内部数据,外部仅能通过类提供的有限的接口访问,修改内部数据。ps:当类里有list属性,即使没有setter方法此list还是有被修改得可能,例如List<Item> items = cart.getItems();Item item = items.get(0);item.setPraice(19.0);在设计实现类的时候,除非真的需要,否则,尽量不要

2021-11-11 14:39:35 68

原创 过滤器做权限校验以及遇到的坑

1、写一个实现HandlerInterceptor的类,按需重写preHandle(此方法的代码在进入controller方法之前执行)、postHandle(调用完controller之后,视图渲染之前)、afterCompletion(整个完成之后,通常用于资源清理),权限校验的代码写在preHandle方法里,校验无问题则返回true即可,为方便系统方法调用,可在此把用户信息存入一个本地线程(private static ThreadLocal userThreadLocal = new Thread

2021-10-15 16:19:17 381

原创 方法同时使用微服务调用文件上传方法以及调用另一微服务的方法时报错failed to parse multipart servlet Request

项目场景:由于文件服务是独立出来的服务,而文件具体信息的存储又是在另一独立系统里,故要在一个方法里调用两个微服务的方法,一个作文件上传,另一个只是对关键信息的存储。问题描述:先调用数据插入的微服务(仅作数据留痕,无其他用处,故没有考虑调用顺序),再调用上传文件的微服务。在调用第一个方法时就报错failed to parse multipart servlet Request,但是第一个方法其实是没有文件的参数的。解决方案:虽然是一个没有文件参数的方法,调用的那个方法定义的mapping里加 con

2021-10-13 15:02:32 542

原创 阅读分布式锁文章总结

原文链接文章通过提出几个问题并解答来诠释分布式锁。1、为什么需要分布式锁当一个应用部署在多个进程,不同进程要对同一个数据做修改时,需要分布式锁。具体场景类似于定时任务对数据库或者对redis里的数据进行修改,同一时间只能有一个进程的定时任务执行。2、redis分布式锁如何实现互斥是redis分布式锁的关键,使用SETNX命令可以实现,set if not exists ,当redis里没有这个key时执行成功,如果存在这个key则赋值不成功,变相的达到一个锁的概念,程序执行完再把锁del。3、如

2021-08-03 15:47:39 86

原创 java mybatis sql server未返回响应。连接已关闭

问题描述:多次执行同一sql,频繁出现 sql server未返回响应。连接已关闭原因分析:在控制台返回的内容是在插入参数 error occur setting parameter由于性能要求,我这是一条大sql,插入参数多达一千多个。解决方案:在Hirika参数配置中加入参数connection-timeout: 100000conection-test-query: select 1添加了此参数后,未返回响应的报错频率大幅度下降,但偶尔还是会有,其实这个方案是我猜的,由于我的报错发生

2021-07-24 16:21:50 1866

原创 优化思路笔记

1、提升sql语句查询的速度:索引。2、如果查询数据是固定的,可将接口数据缓存到redis提高查询效率。3、代码优化4、最后才考虑多线程处理。

2021-07-24 14:10:28 75

原创 课程《设计模式之美》笔记之关于java四大特性

课程《设计模式之美》笔记写在前面:一句话总结封装隐藏属性(private、public、protected)抽象隐藏方法(implements)继承支持复用(extends)多态支持扩展(继承/抽象+override)1、封装特性的意义只暴露必要操作,调用者不需要了解背后的逻辑细节,减少错用的概率,提高类的易用性。(隐藏信息:只public 必要的操作、保护数据:private属性)2、抽象特性的意义隐藏了接口类的具体实现。implements抽象其实是一种设计思想,即只暴露关键功能、隐

2021-07-22 17:22:25 114

原创 java内存常识。

java内存需要划分为5个部分1、栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。局部变量:方法的参数,或是方法内部的变量作用域:一旦超出作用域。立刻从栈内存中消失2、堆(Heap):凡是new出来的东西,都在堆当中。堆内存里面的东西都有一个地址值:16进制堆内存里面的数据,都有默认值。规则:如果是整数 默认为0如果是浮点数 默认为0.0如果是字符 默认为’\u0000’如果是布尔值 默认为false如果为引用类型 默认为null3、方法区(Method

2021-05-26 18:09:09 83

原创 测试类报错:空指针异常

原因是缺少了几个注释:@SpringBootTest(classes = DemoApplication.class)@RunWith(SpringRunner.class)

2021-04-16 09:06:14 618

原创 启动报错:Unsatisfied dependency expressed through field ‘baseMapper‘

原因是数据库的配置文件写错了,没有给bean工厂写入参数。org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'passwordServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.

2021-04-16 09:04:41 1427

原创 启动报错:Error creating bean with name ‘XXX’ defined in...

一般出现这种类型的报错都跟依赖冲突有关,仔细检查一下pom.xml是否有相同的包但是版本不同的情况。org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/valida

2021-04-16 08:58:41 10338

原创 学习随笔1

学习随笔1、同源策略2、跨域3、webSocket4、长连接、短连接5、定时任务注解6、懒加载7、业务代码尽量不要写在控制层,因为控制层是多线程的,如果同时有很多人调用这个方法会因为控制层的代码过于复杂而导致宕机。8、spring cache:cache是通过传入参数定义一个redis对象,取用的方式似乎只有通过相同参数在同一方法进行查询,会自动去redis找数据,如没有才去查数据库,而redisUtils则是自己定义一个名字放数据,取的时候自己按名字取。9、builder():Build

2021-04-07 10:55:09 115 2

原创 MYSQL当前时间与数据库里数据时间做比较

unix_timestamp(T.start_time) &lt;= unix_timestamp(NOW())//开始时间小于当前时间and unix_timestamp(T.end_time) &gt; unix_timestamp(NOW())//结束时间大于当前时间

2021-04-07 10:53:58 2600

原创 接口参数使用RequestBody和RequestParam注解的场景

此乃我对接的前端提供的信息,通常来说,post请求用RequestBody,get请求使用RequestParam。

2021-04-07 10:50:25 220

原创 MyBatis-Plus 代码生成器报错

问题描述:在使用MyBatis-Plus 代码生成器报错:java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MYSQL server version for the right syntax to use near ‘varchar(500))’ as TABLE_NAME, cast(sep.value as varchar(

2021-04-07 10:46:41 973 2

原创 Localdatetime的坑

localdatetime自带了toString方法,能将时间转成我们常用的yyyy-mm-ddTHH:mm:ss.SSSSSSSSS但是要慎重对这个字符串使用subString方法,因为当时间为整分钟的时候,这个toString出来的字符串是uuuu-MM-dd’T’HH:mm,如果要截取秒,会出现越界异常,最好用getSecond方法。...

2021-04-07 10:26:10 1526

原创 swagger测试上传图片报错

问题描述:在用swagger进行调试文件图片上传的接口时,总是报错Field erroe in object ‘xxx’ on field ‘xxx’:rejected value [文件路径];…… no matching editors or conversion strategy found原因分析:老实说我不知道为什么,但是我猜是因为我的swagger少了什么东西,没法解析上传文件这个动作。解决方案:用postman测试上传接口,记得传入参数用form-datapostman使用教程链接

2021-04-07 09:35:43 510

原创 枚举类笔记

枚举类可以写一个getEnum方法,对传入参数做校验,检查是否为本枚举类的参数。@Getter@AllArgsConstructorpublic enum WeekEnum { /** * 周一 */ MON(0,"周一"); private final int num; private final String week; public static WeekEnum getEnum(Integer code){ r

2021-01-14 18:52:48 792

原创 新学到的Url形成方法

使用@PathVariable注释将参数写入Url映射地址,则可一个方法,对应很多个Url。例如@PostMapping("/demo/{param1}/{param2}") public String demo1(@PathVariable String param1,@PathVariable String param2){ return "1:"+param1+" 2:"+param2; }...

2021-01-12 16:15:49 134

原创 linux关于查找字符串

1、Linux查找字符串用grep命令,可以查找文件,也可以在命令的结果中查找。如果是在文件中查找字符串,用法是:grep 用英文单引号括起来的字符串 文件名如果是在命令的显示结果中查找,需要用管道符将命令与grep连接起来,像这样:last | grep ‘root’(在last命令的显示结果中查找字符串root)2、在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。Vim查找支持正则表达式,例如/vim$

2021-01-12 16:05:23 28683

原创 2021-01-11

每当因为工作感到不公、压抑、烦恼、疲惫、愤怒、自卑、难过、伤心,都要告诉自己,工作只是活着的手段,不干这一份工作,还有别的,没必要为了眼下的工作影响心情、影响身体的健康,要知道活着其实只需要很少的钱,而快乐和健康却是再多钱都买不来的。...

2021-01-11 11:28:49 230

原创 全局bigdecimal反序列化转String返回数据

问题描述:VO类有关数据的属性都是Bigdecimal,如果返回给前端的数位过多,会被自动转成科学计数法,为了避免这种情况的发生,返给前端的数据最好是String,Bigdecimal有toPlainString方法,能将数值正确转成字符串,但当调用toPlainString的数为null时为报空指针异常,方法、属性过多,不能每一个都做判断。解决方案:增加一个Json全局配置,反序列化时,将所有的Bigdecimal用toPlainString方法变成String。配置文件@JsonCompone

2021-01-11 11:12:44 2980 1

原创 JSON转Map的坑

项目场景:调用另一个服务的数据接口,用json格式传回数据。问题描述:使用map类型接收查回来的数据,使用时报错:org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Null key for a Map not allowed in JSON public static <T> Map<String,T> parseResponseR

2021-01-08 16:17:01 1015

原创 mybatis报错解决

项目场景:搭建了一个普通的springboot+mybatisplus项目,调方法时报了错。问题描述:报错的主要信息org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)大概就是找不到xml文件之类的,百度看了解决方法,基本上就是说映射路径写错了之类的,但是我写的仔细看了很多次都没有问题,但是就是无法执行sql方法。 原因分析:既然报错是这么报错,那一定是某个路径写错了。解决方案:最后

2020-12-28 15:26:03 427

原创 docker学习

docker学习基本概念docker不是容器,他是容器的创建工具轻量级“虚拟机”docker的核心 docker deamon基本命令1、 docker run :执行镜像2、docker images:查看本地所有镜像3、-p 端口映射 -d允许程序直接返回4、docker ps 查看当前运行的容器5、docker cp 文件 容器id://路径 :拷贝本地文件进入容器6、docker stop 容器id7、docker commit -m ‘备注’ 容器id 容器名字8、d

2020-12-03 13:52:02 96

原创 Centos 7 mini安装

Centos 7 mini安装1、安装VMware Workstation Player2、下载Centos 7 mini镜像3、按照教程安装4、报错:开机时出错: 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。

2020-12-01 09:02:53 413

原创 nacos-demo feign调用

nacos-demo feign调用思路:照着上一篇文章再写一个demo1,把这个demo1也注册上nacos,在通过feign从demo1调用demo的方法。实操:教程 关键点其实就是引一个openfeign的包,还用到一个RestTemplate类RestTemplate 用法详解用postman调用接口的时候报错了,提示缺少一个类,百度那个类是哪个包的,再把包引上,就行了。feign调用over...

2020-11-24 16:08:44 315

原创 nacos注册中心demo

nacos注册中心demonacos demo吐槽nacos安装demonacos demo吐槽今天开始整微服务,老实说我真是不知道怎么开始,无从下手,甚至想从spring开始,经过同事的指导,明白了他想让我学的是怎么用,搭框架,好像不是现在的事,努力嘤嘤嘤。nacos安装从nacos安装开始,本地起一个nacos服务,报错:Unable to start web server以及Unable to start embedded Tomcat,发现自己没装tomcat,然后装了一个最新的tomca

2020-11-23 17:32:45 1439 2

原创 Java0314

异常略过LambdaLambda表达式是Java SE 8中一个重要的新特性。Lambda表达式允许你通过表达式来代替功能接口。一个Lambda表达式具有下面这样的语法特征。它由单个部分组成:第一部分为一个括号内用逗号分隔的参数列表,参数即函数式接口里面方法的参数;第二部分为一个箭头符号:-&gt;;第三部分为方法体,可以是表达式和代码块。例子:test9Lambda表达式优先用于定...

2019-03-14 22:10:09 79

原创 Java基础0311

笔记泛型泛型即参数化类型,也就是说数据类型变成了一个可变的参数,在不适应泛型的情况下,参数的数据类型都是写死了的,使用泛型之后,可以根据程序的需要进行改变。规则:只能是类类型,不能是简单数据类型泛型参数可以有多个可以用使用extends语句或者super语句...

2019-03-11 21:05:47 76

原创 Java基础0309

笔记ArraysArrays类包含用于操作数组的各种方法。还包含一个静态工厂,允许将数组转为List方法描述List asList(T。。。a)返回由指定数组构造的Listvoid sort(Object[] a对数组进行排序void fill(object[] a,object val)为数组的所有元素都赋上相同的值boolean equals...

2019-03-09 14:55:10 101

原创 Java基础0308

笔记类与对象类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。类的定义如下:类是相同或相似对象的一种抽象,是对象的一个模板,它描述一类对象的行为和状态。类是具有相同属性和方法的对象的集合。类是对象的抽象,对象是类的具体一个类可以包含以下类型变量:局部变量:在方法、构造方法或语句块中定义的变量叫局部变量,方法结束后变量就会自动销毁。成员变量:成员变...

2019-03-08 21:39:56 172

空空如也

空空如也

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

TA关注的人

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