自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 850

原创 springboot2.0.4+rabbitMQ配置

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

2019-09-19 12:01:00 197

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

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

2019-09-12 12:15:19 711

原创 使用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 293

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

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

2019-08-31 12:51:38 480

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

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

2019-08-08 18:02:46 772

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

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

2019-07-24 11:07:49 159

原创 SpringBoot异步注解@Async解析

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

2019-07-23 18:57:04 1981

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

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

2019-07-03 15:50:15 3256

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

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

2019-06-19 15:42:09 977

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

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

2019-03-28 10:42:21 1669 1

原创 记一次异常: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 1824

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

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

2019-03-13 16:14:00 5236

原创 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 246

原创 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 2025

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

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

2019-02-21 14:40:50 8183 2

原创 SpringBoot中配置RabbitMQ

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

2019-01-28 15:15:40 1232 1

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

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

2019-01-16 13:22:49 349

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

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

2019-01-15 09:36:14 197

原创 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 2256

原创 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 3622 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 5895 1

原创 SpringBoot 使用logback分级别记录日志

SpringBoot 默认使用logback记录日志,相关的包为:spring-boot-starter-logging.jar被包含在start-web中。在SpringBoot中使用logback,只需要引入  &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/gro...

2019-01-02 14:59:55 395 1

原创 Docker for Windows部署Spring Boot maven项目

1.pom.xml添加Docker依赖 &lt;properties&gt; &lt;docker.image.prefix&gt;ramer&lt;/docker.image.prefix&gt; &lt;/properties&gt; &lt;plugin&gt; &lt;groupId&gt;com.spotify&lt;/group...

2018-12-28 14:32:10 353

原创 改变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 1652

原创 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 7149

原创 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 1069

原创 Spring Boot2.0整合redis

本文,主要介绍在Spring Boot2.0及以版本上整合redis。1.引入依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-redi...

2018-12-25 14:03:23 276

原创 Spring MVC+Swagger2

本文主要介绍在Spring MVC上搭建Swagger,方便生成API文档及调试第一步:在maven中引入依赖&lt;!--swagger--&gt;&lt;dependency&gt; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &lt;artifactId&gt;springfox-swagger-ui&lt;/artifac...

2018-12-17 17:18:29 86

原创 Spring声明式事务管理中的事务回滚

一:使用本文在spring + spring mvc + mybatis中使用第一步配置xml:注意xml最前面tx名称空间一定要配置&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

2018-12-14 14:02:45 396

原创 Spring事务之Junit单测事务回滚

在spring+spring mvc +mybatis中进行Junit单元测试时,事务的回滚情况。一:存在事务传播的情况下的事务回滚存在事务传播,即:在A类的方法中调用B类上的方法。本例是在UserServiceImpl类中的insertUser()方法调用UserServiceTestTransactionImpl类的insertUser()方法。@Transactional注解默认...

2018-12-13 09:37:24 345

转载 Spring AOP的实现原理

AOP概念介绍所谓AOP,即Aspect orientied program,就是面向方面(切面)的编程。关注点:   重复代码就叫做关注点业务代码:核心业务的代码切面:关注点形成的类就叫切面(类)! 面向切面编程就是指对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上动态植入“切面类代码”。切入点(拦截的作用):执行目标对象方法,动态植入切面代码。 可以通过...

2018-12-05 13:47:27 53

转载 Spring容器初始化过程

一、Spring 容器高层视图Spring启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。二、内部工作机制该图描述了Spring容器从加载配置文件到创建出一个完整Bean的作业流程:1、ResourceLoader从存储介质中加...

2018-12-05 13:20:58 153

原创 阿里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 156

原创 Shiro与Spring集合时的密码加密问题

本文给出Shiro用户认证时,对密码的三种处理方式:不加密、MD5加密、MD5加盐加密。首先给出代码:shiro.xml配置如下:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www....

2018-11-30 10:41:27 85 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 820 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 11753 2

原创 spring中redis连接池版单节点使用(xml配置及非xml配置)

1.依赖 &lt;!--引入reids--&gt; &lt;dependency&gt; &lt;groupId&gt;redis.clients&lt;/groupId&gt; &lt;artifactId&gt;jedis&lt;/artifactId&gt; &lt;version&gt;2.9.0&lt;/version&am

2018-11-20 14:29:32 401

原创 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 321

原创 mybaits中设置的返回值类型为boolean类型,当查询的结果大于1时返回True而不是false

在Mybatis项目中,遇到一个需要返回布尔值来确定某条记录是否存在的需求。由于查询的结果可能是0、1或者&gt;1,就想确认一下,当resultType为boolean类型时,Mybatis是怎么转换的。查询了一下博客,一些博客说:当记录数行数是1时返回true,行数为0时返回false, 如果查询到多条记录(大于1),返回的却是false。这时我就产生了疑问,自己验证了一下发现,其实当记录数大...

2018-11-11 10:40:29 4951 1

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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