5 石头成说

尚未进行身份认证

我要认证

每天进步一点

等级
TA的排名 6w+

java8 lambda表达式去重

java8 lambda表达式去重在使用java8的stream流对List集合操作时,遇到了去重问题。原有的distinct()方法需要重写对象的equals()和hashCode()方法,比较麻烦,而且写在实体里比较难看。于是查阅资料,写了如下代码:List<User> users = Lists.newArrayList(new User("aa",11),new User(...

2019-09-20 13:46:34

springboot2.0.4+rabbitMQ配置

最近的业务需要用到rabbitMQ,这里记录一下配置。本地使用Docker自己启动的rabbitMQ测试,线上使用的阿里的消息队列 for AMQP,完全兼容 RabbitMQ 开源生态,不用修改代码。1.导入依赖包<dependency> <groupId>org.springframework.boot</groupId> <ar...

2019-09-19 11:49:22

关于http调用第三方API,如果第三方API异常,http的耗时问题

最近项目出现了一个bug,同事在他的项目中使用http调用了我在其他项目中的接口,我的接口抛出异常,导致同事的项目出现了问题。赶快解决自己接口中的bug,改完后,就能正常使用了。但是感觉很不妥,我们一般尽量避免使用http或者rpc调用其他项目的接口的。在无法避免的情况下,一定要做好调用失败或者调用超时的处理工作。于是看了一下同事的代码,发现他在同步的情况下直接使用了我的接口的返回值作...

2019-09-12 10:58:27

使用RestTemplate进行http调用格式转换问题

之前http调用都是自己封装的HttpClients,比较麻烦。最近发现有新的API:RestTemplate可以直接调用接口,非常方便,省得自己封装请求了。开始使用:String url = targetInfoUrl +"?userId={userId}";Map<String,Object> paramMap = new HashMap(1);paramMap.pu...

2019-09-09 20:44:53

数据库查找数据的返回值问题

码代码的过程中,经常会遇到空指针的问题。今天重构代码,发现对一个数据库查询操作的List类型的返回值进行操作时,从来没有出现空指针异常,而我知道这个查询的数据很大部分情况下在数据库中并没有记录。既然没有数据那List<Object>类型的返回值不是null就是size = 0的空List。我在使用这个List<Object>类型的返回值进行操作时(即调用它的方法)时没有报空...

2019-08-31 12:51:38

@AllArgsConstructor与@JsonFormat一起使用时遇到的问题及对序列化的理解

问题描述:有以下实体类:@Data@ToString@AllArgsConstructorpublic class UpdateTargetInfoBean { @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date endDate; /** * 存到数据库里的格式...

2019-08-08 18:02:46

代码实例理解线程池的配置属性

1.合理利用线程池能够带来三个好处:第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多的资源竞争,避免阻塞。 第三:提供定时执行、定期执行、单线程、并发数等控制。2.使用方式之一:3.参数说明1)corePoolSize(线程池的基本大小,核心线程数量):当提交一个任务到线程池时...

2019-07-24 11:07:49

SpringBoot异步注解@Async解析

在写一个绑定设备的接口,需要立即响应。但是有一个增加成长值的需求需要在这个绑定设备的接口中实现,该需求需要http调用其他项目的接口,比较耗时,同时这个需求不需要立即返回。因此,想到使用异步的方式实现该方法。于是开始研究@Async的使用,一开始就进了一个坑。实现异步:在启动类上添加@EnableAsync注解。 在方法或类上添加@Async注解,同时在异步方法所在的类上...

2019-07-23 18:57:04

getTime()获取时间戳方法与时区有关

1.问题来源测试的同事反馈说APP海外版本的时间与实际时间少了8个小时。于是开始排查问题,最后发现问题出在getTime()函数上。数据库里存储的数据是Date类型,我将Date类型通过getTime()方法转换为时间戳返回给APP显示。服务运行在Docker上,通过Rancher部署。在打镜像的时候,我在Dockerfile文件里指定了时区:RUN /bin/cp /usr/sha...

2019-07-03 15:50:15

使用Postman的Pre-request Script自动生成通过网关需要校验的签名

后端代码一般都在网关里设置了签名算法,访问接口时,需要传签名参数通过网关才能访问这些接口。在使用postman进行接口测试时,可以使用Pre-request Script编写js代码完成签名算法,进而完成接口的访问。下面举个算法签名的例子,请求是GET方式,需要四个参数:timestamp、sign、token、userId。这里设置了全局变量,通过{{name}}就可以取到值,可以在...

2019-06-19 15:42:09

@Value注解为什么不能直接为静态变量赋值

问题描述:@Value("${oss.endpoint}")private static String endpoint;说明:oss.endpoint为springboot配置文件application.properties中配置的常量。在使用endpoint这个成员变量时,取不到值,是空值。原因:静态变量(即类变量)是一个类的属性,而不是对象的属性。spring依赖注入...

2019-03-28 10:42:21

记一次异常:Null value was assigned to a property of primitive type setter

异常:org.springframework.orm.jpa.JpaSystemException: Null value was assigned to a property异常描述:前端同事传递对象的json数据来调用接口时,报异常org.springframework.orm.jpa.JpaSystemException: Null value was assigned to a...

2019-03-28 10:33:18

解决使用springboot+ jpa + @query原生sql查询,无法动态插入表名的问题

问题描述:在使用springboot2.0+jpa+@query原生sql查询时,无法动态插入表名publicinterfaceBalanceTargetInfoRepositoryWithNativeQueryextendsJpaRepository<BalanceTargetInfoBean,Long>{/***不能使用,问...

2019-03-13 16:14:00

win10写Python脚本删除数据库数据

1.安装python地址:python安装2.安装PyMySQL在dos下进入python的Scripts目录:执行:pip install PyMySQL3.编写py文件我的内容如下:#!/usr/bin/env python3# -*- coding: utf-8 -*-import pymysqldb=pymysql.connect("rm-uf6i...

2019-03-12 15:00:15

SpringBoot2.0.4+Jpa+ShardingSphere3.0.0.M2进行数据库分表

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。分表执行的5个步骤:1.Sql解析分表的表达式:o...

2019-03-08 14:12:39

解决异常:com.mongodb.MongoSocketReadException: Prematurely reached end of stream

异常描述:项目使用阿里云的mongo服务一段时间后出现:原因mongo没有配置空闲连接时间,而spring boot 默认的空闲连接时间为0。当连接闲置一段时间,由于防火墙或者负载均衡的原因,导致连接被关闭,而客户端并不知道,当客户端继续使用这个关闭的连接进行读写时就会出错。解决解决办法就是设置连接闲置时间,当超过这个闲置时间客户端主动关闭连接,下次使用时重新建立连接,这样...

2019-02-21 14:40:50

SpringBoot中配置RabbitMQ

RabbitMQ介绍与原理见:消息队列之 RabbitMQRabbitMQ安装见:RabbitMQ安装依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId...

2019-01-28 15:15:40

根据《高性能MySQL》整理一些数据库优化建议

根据《高性能MySQL》一书,整理一些数据库优化建议。1.为字段选择合适的数据类型概括来说,尽可能保持任何东西小而简单总是好的。MySQL喜欢简单,需要使用数据库的人应该也同样会喜欢简单的原则.尽量避免过度设计,例如会导致极其复杂查询的schema设计,或者有很多列的表设计(很多的意思是介于有点多和非常多之间). 使用小而简单的合适数据类型,除非真实数据模型中有确切的需要,否则应该...

2019-01-16 13:22:49

在MySQL-5.7.23下验证一些sql优化建议的正确性

从网上看到一些sql查询优化的一些建议,由于使用的数据库版本不同等原因,一些建议可能描述不准确。毕竟网上的一些内容还是需要自己去验证一下的。因此作者对常见的一些sql优化建议进行了验证。验证表:其中id字段是主键,在mysql中默认创建主键索引。  会根据具体验证情况,在其他字段上创建索引。   1、应尽量避免在 where 子句中使用!=、<>、in、not in...

2019-01-15 09:36:14

IDEA中tomcat控制台日志输出乱码

在安装tomcat9时,使用IDEA出现控制台tomcat日志乱码问题。问题出现的原因:一:IDEA 以 GBK编码运行,导致控制台输出是乱码。二:tomcat原因解决方法:IDEA原因:进入 IDEA 安装目录 如 D:\Idea\IntelliJ IDEA 2018.1.2\bin修改 idea.exe.vmoptions或者是 idea64.exe.vmoption...

2019-01-07 16:51:32

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。