自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

绅士jiejie的博客

复利是世界第八大奇迹!!!

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

原创 No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type

报如上异常的原因是因为在Integer类型的字段上使用@NotEmpty注解,但是其实这个注解支持的是String类型,所以就报错了。解决方法:换成@NotNull注解就可以解决了。PS:所以见到这个异常,要第一时间想到是不是该校验注解所支持的数据类型与其修饰的实体字段类型不对应。...

2020-12-26 21:33:05 5835

原创 使用filter还是使用query

filter:不会计算相关度分数,性能更好, 无排序,同时ES内部还会缓存比较常用的filter的数据。query:会计算相关度分数,性能较差,有排序,无缓存。所以其实总结下,需要做全文本搜索或者需要计算相关性分数时,就用query,否则就优先用filter。...

2020-12-26 21:21:50 203

原创 mysql按关键字截取字符串

参考函数:substring_index(str, keyword, count)substring_index(被截取字符串,关键字,关键字的位置)PS:如果关键字不存在,则返回整个字符串。

2020-12-23 22:37:17 872

原创 Java8实现List数据转一对多map

示例代码:List<User> users = getUserList();Map<Integer,List<User>>=users.stream().collect(Collectors.groupingBy(User::getAge));以上示例代码是按照年龄纬度生成一个年龄对多个用户对象的map数据。

2020-12-23 22:34:11 1790

原创 in查询,每个查询匹配的结果集只取前几条

select a.* from table a where 4>(select count(*) from table where id=a.id and id > a.id)age in (16,17) order by a.create_time desc以上把表名替换下,然后每个查询匹配的结果集要取几条修改下,排序规则按照自己的业务需求修改下,里面最关键的sql是id > a.id,这个用来比较的字段一定要有辨识度,我之前用的是create_time,但是表里好多数据的cre

2020-12-23 22:30:31 723 1

原创 Java8用一行代码,抽取List对象中的id到新List中

示例代码:List<User> users = getUserList();List<Integer> userIds = users.stream().map(User::getId).collect(Collectors.toList());以上就是从用户对象集合中抽取出用户对象的id到一个新的List中,参数对号入座即可,同样的,也不一定是要抽取id,其他的属性也是可以的。...

2020-12-23 22:20:52 11440

原创 InvalidDefinitionException:no Creators, like default construct, exist

出现以上错误的大体原因是因为对象需要一个无参的构造函数。解决方法:由于项目是使用了lombok,所以可以在对象上加上@AllArgsConstructor和@NoArgsConstructor注解,如果没有引入lombok,可以手动生成无参构造方法。...

2020-12-23 22:15:17 5803

原创 ES使用completion类型做自动建议时,建议多开一个子字段

ES使用completion suggest做自动建议时,建议多开一个子字段,如下示例,假设要根据title字段做自动建议,那么该字段的类型就得改为completion,不过建议不要改原字段的类型,多开一个子字段title.suggest,类型设置为completion,然后之后的suggest针对title.suggest字段做操作就好,参考mapping如下: "title": { "type": "text", "analyzer": "ik_max_word"

2020-12-22 22:44:05 2768 6

原创 ElasticSearch搜索时不算分API

有时候,使用ES做搜索,不是每个搜索场景都需要算相关性得分的,如果能够手动的减少算分这一步,搜索性能也会因此得到提升,而使用ConstantScoreQueryBuilder可以起到不算分的效果,它的构造方法如下://构建BoolQueryBuilderBoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();////。。。中间构建一连串的搜索条件//构建不算分的ConstantScoreQueryBuilde,关键就是这步Constan

2020-12-22 22:31:14 927 1

原创 npm ERR! gyp verb could not find “python“. checking python launcher

先删除node_modules 文件夹。在 Terminal 运行 npm install --global windows-build-tools --save命令再输入node-sass npm install node-sass@4.12.0 --save(或指定版本)然后再次运行看看结果,亲测是能够成功解决问题的。PS:如果遇到了Node Sass could not find a binding for your current environment这个问题,输入npm rebuil.

2020-12-17 22:21:40 14585

原创 npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查

试试使用管理员权限打开vscode。

2020-12-17 22:18:12 2280

原创 BigDecimal类型的数据如何判等

用compareTo方法判断BigDecimal类型的数据是否相等,而不要用equals。

2020-12-17 22:17:25 499

原创 2020-12-17编码感悟

打代码还是要多思考,多想想有什么情况下,哪些逻辑是可以不走,哪些数据库操作是没有意义,举个例子,业务逻辑先把数据库中USER表的分数置为0了,然后重新计算每个用户的分数,此时如果分数还是0的用户,就可以不用参与批量更新这个操作了,所以可以再做批量更新操作前,过滤掉分数为0的用户数据,这样就避免了无谓的操作,希望看到的朋友能够有启发,触类旁通,当然了大牛肯定是不会犯这种错的,所以这里只是分享一下我打代码不严谨的例子。还有在编码时,尽量依据业务发展,把数据量想的大些,看下这样sql搜出来的会不会有问题,会不会

2020-12-17 22:16:13 134

原创 BigDecimal.ZERO替代new BigDecimal(0)

这里只是想分享下,平时如果我们想要定义一些BigDecimal类型的变量,可以先看看BigDecimal有没有已经先做了定义,如new BigDecimal(0)就可以用BigDecimal.ZERO来代替,如下:BigDecimal bigDecimal = BigDecimal.ZERO;跟进BigDecimal类中,会发现BigDecimal类中已经定义了一些BigDecimal类型的常量数组,如下:所以其实在BigDecimal类加载阶段的准备阶段,这些数组就会被初始化了,那自然就可以正常

2020-12-15 22:43:40 21399 3

原创 能用inner join就用inner join

能用inner join就用inner join,因为inner join确实比left join效率要高,在开发过程中,看到大部分人都习惯用left join,但是如果能够确定两张表用来关联的字段是能够一一对应的,那么此时可以使用inner join。其实总结下,开发时先考虑如果使用inner join,是否会影响结果?不会就优先使用它。...

2020-12-15 22:20:21 384

原创 Dead store to local variable in findbugs

报这种问题,简单的来说就是多定义了一个闲置不用的对象。举例代码如下:Map<String,String> A = new HashMap();A=user1.getMap();A=user2.getMap();A=user3.getMap();以上代码明显没有用到一开始新建的HashMap,反而是不断通过User对象给A变量重新赋值,因此完全没有必要新建这个HashMap对象。代码优化成如下:Map<String,String> A;A=user1.getMa

2020-12-15 22:13:56 1109

原创 Findbugs中的BUG:May expose internal representation by returning reference to mutable object

一个简单的类A:@Datapublic class A { private Date time;}现在为类A中的time属性赋值,测试代码如下:public static void main(String[] args) { A a = new A(); Date date = new Date(); a.setTime(date); System.out.println(a.getTime()); date

2020-12-15 22:12:28 1240

原创 HTTP method names must be tokens

具体异常如下:java.lang.IllegalArgumentException Invalid character found in method name. HTTP method names must be tokens场景:原请求访问路径:https://localhost:8080/insert,出现如上异常。修改路径为:http://localhost:8080/insert,路径修改后即可成功访问。...

2020-12-15 22:09:34 5741 6

原创 Idea自定义方法注释模版

打开Preferences,点击Live Templates,先新增一个Template Group,命名为Define,结果如下:选中刚创建的Define,选择新增Live Template,之后为该Template加上如下信息,其中Abbreviation属性很关键,注释方法时需要用到这个值,所以不要写的太复杂,简单点最好,然后Template Text就是注释方法自定义的模版格式了:以上信息都填写完成后,点击第五步,选择java,如下:最后再选择下触发自定义模版的操作,一般都是用Ente.

2020-12-14 22:37:47 312

原创 用@JsonIgnore注解来忽略一些不想传递给前台的属性

有时候后端从数据库搜出些字段,有些字段是需要经过处理,然后赋值给另外一些字段上传到前端做展示,此事那些原来的字段对于前台来说就是没有意义的,是多余的回传字段,可以在这些字段上加上@JsonIgnore注解,在返回给前端数据时,这些字段将会被排除。...

2020-12-14 22:05:28 1769

原创 Got permission denied while trying to connect to the Docker daemon socket at unix

在终端执行docker version命令,出现如下报错:解决方法:执行命令sudo groupadd docker,添加docker用户组,结果如下:执行命令sudo gpasswd -a $XXX docker,这里的XXX就是你的当前用户名,检查下当前用户是否已经在docker用户组中,结果如下:执行命令sudo gpasswd -a $USER docker ,将当前用户添加至docker用户组,结果如下:执行命令newgrp docker,更新docker用户组,

2020-12-13 12:26:19 938

原创 JMM模型是规范

只要学到并发编程,那么就肯定绕不过JMM模型,很多知识点,结合这个模型,理解起来会更容易,刚好看到有这么一句描述JMM模型的话:该模型就是一套规范,对上,是JVM和开发者之间的协定,对下,是JVM和编译器以及CPU之间的协定。以上就是简单的分享一下,感觉有利于加深对JMM的理解。...

2020-12-11 20:20:58 246

原创 用全删全增代替比较更新

最近碰到一个需求,需要每天每间隔一段时间,就刷新一下报表统计订单数据,然后数据是按照天来做统计的,由于统计的是每个商家每天的订单数据,所以一天里会有很多条商家订单数据被统计进报表,所以入库逻辑应该这样设计,统计数据进报表时,先看下该商家的数据入库了没有,如果没有,就做数据初始化,如果当天商家的数据已经被初始化入库了,那么就只能做更新了。如果按照常规的做法,应该是先统计出所有商家的订单统计集合,然后遍历这个集合,搜索这个商家在当天有没有数据入库了,如果没有,则为这个商家做初始化数据操作,也就是新增操作,如果

2020-12-11 20:12:35 595

原创 Cron expression must consist of 6 fields (found 7 in “0 5 3 * * ? *“)

出现以上异常就是因为cron表达式写错了,原来的cron表达式如下:修改后:然后问题解决。PS:顺便推荐一个在线生成cron表达式的地址https://cron.qqe2.com/,避免手动编写cron表达式出现错误。

2020-12-11 19:56:23 2710

原创 了解下重排序的分类

编译器重排序:如果语句没有先后依赖关系,那么为了优化性能,编译器可以重新调整语句的执行顺序。CPU指令重排序:在指令级别,让没有依赖关系的多条指令并行执行。CPU内存重排序:CPU有自己的缓存,指令的执行顺序和写入主内存的顺序没有完全一致。...

2020-12-11 19:49:46 561

原创 轻量级阻塞和重量级阻塞

轻量级阻塞:能够被中断的阻塞被成为轻量级阻塞,对应的线程状态是waiting和timed_waiting。重量级阻塞:不能够被中断的阻塞被成为重量级阻塞,对应的线程状态是blocked。

2020-12-11 19:39:21 230

原创 Parallels Desktop虚拟的Centos系统设置静态IP并连网

输入vim /etc/sysconfig/network-scripts/ifcfg-eth0命令,编辑该文件的信息:DEVICE="eth0"#IPV6INIT="yes"#从dhcp改成staticBOOTPROTO="static" UUID="*********"#从no改成yes ONBOOT="yes"#这就是要设置的静态ip地址IPADDR=******#设置网关 GATEWAY=******#设置子网掩码 NETMASK=******# 设置DNSDNS1

2020-12-03 18:23:27 1160

原创 Spring Boot多文件上传

先简单的写个页面upload.html,用来模拟多文件上传的操作,内容如下:<!DOCTYPE html><html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"><head> <meta charset="UTF-8"> <title>多文件上传</title></head><body><form th:action="@{

2020-12-03 12:04:55 295

原创 Another app is currently holding the yum lock; waiting for it to exit...

用yum安装包有时候会提示:解决方法:sudo rm -f /var/run/yum.pid

2020-12-03 12:03:29 156

原创 parallels desktop怎么新建多个虚拟机

刚开始用parallels desktop确实会有些迷茫,因为如果已经有第一个虚拟机之后,再次点击parallel desktop的图标就会直接启动第一个虚拟机,这时候怎么添加第二个虚拟机呢?找到parallels desktop,打开窗口,找到控制中心选项,如下:之后点击打开控制中心窗口,会看到一个+号,点击+号就可以再次新增虚拟机了,如下:之后就常规操作了。...

2020-12-02 19:08:51 9939 1

原创 Spring boot自定义配置实现自动提示

平时我们在配置文件application.yml中写上我们所需的配置信息时,idea都会先给出友好的自动提示,方便我们快速操作,同时也能避免打错单词,如下:这些提示都是内置的,在我们引入的jar包中是存在有这些配置相关文件的,就先简单看看spring.application.name的自动提示是来自哪个文件,如下:可以发现spring.application.name属性被定义在了META-INF文件夹下的additional-spring-configuration-metadata.json文件

2020-12-02 19:07:47 620

原创 Spring Boot configuration annotation processor not found in classpath

场景:在Spring Boot项目的resources文件夹下新建一个META-INF文件夹,然后在META-INF文件夹下新建一个spring-configuration-metadata.json文件,用来自定义一些配置项,然后打开spring-configuration-metadata.json文件就报了如下错误:解决方法:在pom.xml中引入如下依赖: <dependency> <groupId>org.springframe

2020-12-02 11:59:15 267 1

原创 Spring Boot读取资源文件

资源文件一般都是用来定义各种提示文字信息的,同时配合上资源文件,还能够实现国际化。先在resources下新建一个i18n文件夹,用来放置资源文件,然后接着定义3个资源文件:Messages.properties:目前该文件里不维护任何信息,不过Messages.properties配置文件确是必须要存在的,否则将无法实现资源文件的读取,会报错。Messages_en_US.properties:英文版提示文字信息,维护信息如下:message=hello world!name=welcome.

2020-12-01 18:38:26 585 2

空空如也

空空如也

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

TA关注的人

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