- 博客(57)
- 资源 (4)
- 收藏
- 关注
原创 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
5495
1
原创 springboot2.0.4+rabbitMQ配置
最近的业务需要用到rabbitMQ,这里记录一下配置。本地使用Docker自己启动的rabbitMQ测试,线上使用的阿里的消息队列 for AMQP,完全兼容 RabbitMQ 开源生态,不用修改代码。1.导入依赖包<dependency> <groupId>org.springframework.boot</groupId> <ar...
2019-09-19 12:01:00
701
原创 关于http调用第三方API,如果第三方API异常,http的耗时问题
最近项目出现了一个bug,同事在他的项目中使用http调用了我在其他项目中的接口,我的接口抛出异常,导致同事的项目出现了问题。赶快解决自己接口中的bug,改完后,就能正常使用了。但是感觉很不妥,我们一般尽量避免使用http或者rpc调用其他项目的接口的。在无法避免的情况下,一定要做好调用失败或者调用超时的处理工作。于是看了一下同事的代码,发现他在同步的情况下直接使用了我的接口的返回值作...
2019-09-12 12:15:19
3075
原创 使用RestTemplate进行http调用格式转换问题
之前http调用都是自己封装的HttpClients,比较麻烦。最近发现有新的API:RestTemplate可以直接调用接口,非常方便,省得自己封装请求了。开始使用:String url = targetInfoUrl +"?userId={userId}";Map<String,Object> paramMap = new HashMap(1);paramMap.pu...
2019-09-09 21:09:44
896
原创 数据库查找数据的返回值问题
码代码的过程中,经常会遇到空指针的问题。今天重构代码,发现对一个数据库查询操作的List类型的返回值进行操作时,从来没有出现空指针异常,而我知道这个查询的数据很大部分情况下在数据库中并没有记录。既然没有数据那List<Object>类型的返回值不是null就是size = 0的空List。我在使用这个List<Object>类型的返回值进行操作时(即调用它的方法)时没有报空...
2019-08-31 12:51:38
2659
原创 @AllArgsConstructor与@JsonFormat一起使用时遇到的问题及对序列化的理解
问题描述:有以下实体类:@Data@ToString@AllArgsConstructorpublic class UpdateTargetInfoBean { @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date endDate; /** * 存到数据库里的格式...
2019-08-08 18:02:46
1552
原创 代码实例理解线程池的配置属性
1.合理利用线程池能够带来三个好处:第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多的资源竞争,避免阻塞。 第三:提供定时执行、定期执行、单线程、并发数等控制。2.使用方式之一:3.参数说明1)corePoolSize(线程池的基本大小,核心线程数量):当提交一个任务到线程池时...
2019-07-24 11:07:49
1175
原创 SpringBoot异步注解@Async解析
在写一个绑定设备的接口,需要立即响应。但是有一个增加成长值的需求需要在这个绑定设备的接口中实现,该需求需要http调用其他项目的接口,比较耗时,同时这个需求不需要立即返回。因此,想到使用异步的方式实现该方法。于是开始研究@Async的使用,一开始就进了一个坑。实现异步:在启动类上添加@EnableAsync注解。 在方法或类上添加@Async注解,同时在异步方法所在的类上...
2019-07-23 18:57:04
7999
2
原创 getTime()获取时间戳方法与时区有关
1.问题来源测试的同事反馈说APP海外版本的时间与实际时间少了8个小时。于是开始排查问题,最后发现问题出在getTime()函数上。数据库里存储的数据是Date类型,我将Date类型通过getTime()方法转换为时间戳返回给APP显示。服务运行在Docker上,通过Rancher部署。在打镜像的时候,我在Dockerfile文件里指定了时区:RUN /bin/cp /usr/sha...
2019-07-03 15:50:15
13278
4
原创 使用Postman的Pre-request Script自动生成通过网关需要校验的签名
后端代码一般都在网关里设置了签名算法,访问接口时,需要传签名参数通过网关才能访问这些接口。在使用postman进行接口测试时,可以使用Pre-request Script编写js代码完成签名算法,进而完成接口的访问。下面举个算法签名的例子,请求是GET方式,需要四个参数:timestamp、sign、token、userId。这里设置了全局变量,通过{{name}}就可以取到值,可以在...
2019-06-19 15:42:09
2249
原创 @Value注解为什么不能直接为静态变量赋值
问题描述:@Value("${oss.endpoint}")private static String endpoint;说明:oss.endpoint为springboot配置文件application.properties中配置的常量。在使用endpoint这个成员变量时,取不到值,是空值。原因:静态变量(即类变量)是一个类的属性,而不是对象的属性。spring依赖注入...
2019-03-28 10:42:21
3251
2
原创 记一次异常: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
5078
原创 解决使用springboot+ jpa + @query原生sql查询,无法动态插入表名的问题
问题描述:在使用springboot2.0 + jpa+ @query原生sql查询时,无法动态插入表名public interface BalanceTargetInfoRepositoryWithNativeQuery extends JpaRepository<BalanceTargetInfoBean, Long> { /** * 不能使用,问...
2019-03-13 16:14:00
10845
原创 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
494
原创 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
3227
原创 解决异常:com.mongodb.MongoSocketReadException: Prematurely reached end of stream
异常描述:项目使用阿里云的mongo服务一段时间后出现:原因mongo没有配置空闲连接时间,而spring boot 默认的空闲连接时间为0。当连接闲置一段时间,由于防火墙或者负载均衡的原因,导致连接被关闭,而客户端并不知道,当客户端继续使用这个关闭的连接进行读写时就会出错。解决解决办法就是设置连接闲置时间,当超过这个闲置时间客户端主动关闭连接,下次使用时重新建立连接,这样...
2019-02-21 14:40:50
28379
5
原创 SpringBoot中配置RabbitMQ
RabbitMQ介绍与原理见:消息队列之 RabbitMQRabbitMQ安装见:RabbitMQ安装依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId...
2019-01-28 15:15:40
4627
1
原创 根据《高性能MySQL》整理一些数据库优化建议
根据《高性能MySQL》一书,整理一些数据库优化建议。1.为字段选择合适的数据类型概括来说,尽可能保持任何东西小而简单总是好的。MySQL喜欢简单,需要使用数据库的人应该也同样会喜欢简单的原则.尽量避免过度设计,例如会导致极其复杂查询的schema设计,或者有很多列的表设计(很多的意思是介于有点多和非常多之间). 使用小而简单的合适数据类型,除非真实数据模型中有确切的需要,否则应该...
2019-01-16 13:22:49
565
原创 在MySQL-5.7.23下验证一些sql优化建议的正确性
从网上看到一些sql查询优化的一些建议,由于使用的数据库版本不同等原因,一些建议可能描述不准确。毕竟网上的一些内容还是需要自己去验证一下的。因此作者对常见的一些sql优化建议进行了验证。验证表:其中id字段是主键,在mysql中默认创建主键索引。 会根据具体验证情况,在其他字段上创建索引。 1、应尽量避免在 where 子句中使用!=、<>、in、not in...
2019-01-15 09:36:14
392
原创 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
2986
原创 Spring Boot全局异常捕获处理
目标:通过ControllerAdvice和ExceptionHandler捕获异常和错误信息,向前端返回json格式的状态码及异常描述信息。1.创建一个全局异常捕获处理类GlobalExceptionHandlerpackage com.qiqi.exception;import com.qiqi.utils.ExceptionUtil;import org.slf4j.Logge...
2019-01-04 17:16:31
6101
2
原创 Spring Boot使用JpaRepository删除数据时的注意事项
问题:在Spring Boot中使用JpaRepository的deleteById(ID id)方法删除数据时,首先要使用existsById(ID id)方法判断数据是否存在。如果存在,再删除。否则,删除一个id不存在的数据会抛出org.springframework.dao.EmptyResultDataAccessException异常:2019-01-02 15:57:24.1...
2019-01-02 15:59:24
11186
1
原创 SpringBoot 使用logback分级别记录日志
SpringBoot 默认使用logback记录日志,相关的包为:spring-boot-starter-logging.jar被包含在start-web中。在SpringBoot中使用logback,只需要引入 <dependency> <groupId>org.springframework.boot</gro...
2019-01-02 14:59:55
1480
1
原创 Docker for Windows部署Spring Boot maven项目
1.pom.xml添加Docker依赖 <properties> <docker.image.prefix>ramer</docker.image.prefix> </properties> <plugin> <groupId>com.spotify</group...
2018-12-28 14:32:10
751
原创 改变Docker for Windows使用的虚拟硬盘地址以便节省C盘空间
在win10系统中使用Docker,一般是安装Docker for Windows,使用Hyper-V虚拟机。默认虚拟机的硬盘地址是C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx,用于存放MobyLinuxVM.vhdx这个硬盘映像文件。但是这个文件通常都很大达到几G是很正常的事情,会占据C盘很大存储空间,...
2018-12-28 13:35:15
3248
原创 MongoDB导出工具mongoexport在复杂查询条件下的使用
1.mongoexport工具mongoexport工具,即:mongoexport.exe位于mongo/bin目录下:2.使用 在cmd.exe中进入安装mongo的bin目录,比如我的:cd D:\mongoDB\mongoDB\bin在此目录下就可以使用mongoexport的命令进行数据导出操作了。例如我们可以查看mongoexport的命令使用参数,在bin目录...
2018-12-27 22:11:12
11297
原创 Win10安装Docker for Windows及部分问题的解决方式
1.安装我的系统为企业版的win10,只要不是家庭版win10均可以安装Docker for WindowsDocker for Windows下载地址进入地址后,点击docker for windows选择beta版本下载,大约129M。下载的文件如下:直接双击安装即可。安装前,需要开启Hyper-V虚拟机。开启方式如下:在控制面板找到程序和功能,点击启用或关闭Win...
2018-12-26 17:18:12
2927
原创 Spring Boot2.0整合redis
本文,主要介绍在Spring Boot2.0及以版本上整合redis。1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redi...
2018-12-25 14:03:23
439
原创 Spring MVC+Swagger2
本文主要介绍在Spring MVC上搭建Swagger,方便生成API文档及调试第一步:在maven中引入依赖<!--swagger--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifac...
2018-12-17 17:18:29
277
原创 Spring声明式事务管理中的事务回滚
一:使用本文在spring + spring mvc + mybatis中使用第一步配置xml:注意xml最前面tx名称空间一定要配置<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
2018-12-14 14:02:45
1321
原创 Spring事务之Junit单测事务回滚
在spring+spring mvc +mybatis中进行Junit单元测试时,事务的回滚情况。一:存在事务传播的情况下的事务回滚存在事务传播,即:在A类的方法中调用B类上的方法。本例是在UserServiceImpl类中的insertUser()方法调用UserServiceTestTransactionImpl类的insertUser()方法。@Transactional注解默认...
2018-12-13 09:37:24
2795
转载 Spring AOP的实现原理
AOP概念介绍所谓AOP,即Aspect orientied program,就是面向方面(切面)的编程。关注点: 重复代码就叫做关注点业务代码:核心业务的代码切面:关注点形成的类就叫切面(类)! 面向切面编程就是指对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上动态植入“切面类代码”。切入点(拦截的作用):执行目标对象方法,动态植入切面代码。 可以通过...
2018-12-05 13:47:27
274
转载 Spring容器初始化过程
一、Spring 容器高层视图Spring启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。二、内部工作机制该图描述了Spring容器从加载配置文件到创建出一个完整Bean的作业流程:1、ResourceLoader从存储介质中加...
2018-12-05 13:20:58
449
原创 阿里dubbo-admin更新后的地址及readMe使用说明
dubbo-admin跑incubator-dubbo-ops里去了:新的dubbo-admin更新后的dubbo-admin进行了前后端分离,后端是dubbo-admin-backend,是一个spring boot项目下面是阿里dubbo-admin项目ReadMe文件的中文版内容,详细给出了使用说明,贴在下面。前端部分使用Vue.js作为javascript框架,Vuetif...
2018-12-04 15:17:05
334
原创 Shiro与Spring集合时的密码加密问题
本文给出Shiro用户认证时,对密码的三种处理方式:不加密、MD5加密、MD5加盐加密。首先给出代码:shiro.xml配置如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www....
2018-11-30 10:41:27
205
1
原创 解决Shiro与Spring MVC整合时浏览器加载不到js、css、图片等静态资源问题
最近,在弄一个登录系统,使用Spring MVC 整合Shiro进行认证及访问权限管理。遇到了浏览器加载不到静态资源及在JSP页面Ctrl+鼠标左键链接不到图片及CSS样式的问题。根据网上的介绍知道是Spring MVC拦截了静态资源,于是按照网上内容更改了配置。主要有三种更改方式:一、在web.xml文件增加配置在web.xml文件中,Spring MVC的DispatcherSer...
2018-11-28 19:11:53
1288
3
原创 解决:log4j警告:WARN Please initialize the log4j system properly
问题描述:出现这个警告的原因是没有配置log4j.properties文件或者该配置文件在项目目录中的位置不对。对于非Maven项目,log4j.properties文件放在src根目录下。但是对于Maven项目,,log4j.properties文件必须放在Resource文件下。在Maven项目中,如下图:...
2018-11-28 08:39:20
50225
6
原创 spring中redis连接池版单节点使用(xml配置及非xml配置)
1.依赖 <!--引入reids--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version&am
2018-11-20 14:29:32
1051
原创 redis集群实战(单台机器Windows环境下搭建3主3从redis集群)
本文主要展示在单台win10机器上搭建三主三从redis集群。搭建过程主要参考作者: 每天都在变得更好的阿飞 的两篇博客《Redis集群主从复制(一主两从)搭建配置教程【Windows环境】》https://blog.csdn.net/u010648555/article/details/79427606《Redis创建高可用集群教程【Windows环境】》https://blo...
2018-11-16 13:49:59
567
原创 mybaits中设置的返回值类型为boolean类型,当查询的结果大于1时返回True而不是false
在Mybatis项目中,遇到一个需要返回布尔值来确定某条记录是否存在的需求。由于查询的结果可能是0、1或者>1,就想确认一下,当resultType为boolean类型时,Mybatis是怎么转换的。查询了一下博客,一些博客说:当记录数行数是1时返回true,行数为0时返回false, 如果查询到多条记录(大于1),返回的却是false。这时我就产生了疑问,自己验证了一下发现,其实当记录数大...
2018-11-11 10:40:29
16239
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人