自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RequestContextHolder.getRequestAttributes()空指针

1、RequestContextHolder.getRequestAttributes()为null,是由于保存requestAttributes的对象是线程隔离的ThreadLocal对象,当http请求发送到服务端时,每个请求会开启一个线程来处理,由RequestContextListener来初始化RequestContextHolder。2、parallelStream是会开启子线程的,由于上述原因引发了异常。在代码中开启了子线程,在子线程中写了此段代码。1、由主线程获取,传递给子线程。

2023-03-16 10:39:58 8915

原创 EasyExcel导入数据校验(hibernate-validator)

最近做项目,在使用EasyExcel做数据导入的时候,没有找到什么好的数据校验方法,很多博客都是直接写代码进行校验,感觉很麻烦,因此思考能不能有什么简便的方法。大家都知道web项目,在controller层的方法上加@Validated注解,调用接口的时候会自动进行参数校验,于是思考能不能通过同样的方法对EasyExcel导入的数据进行校验。

2022-09-16 16:15:33 4517

原创 spring cloud eureka server源码分析

spring cloud eureka server源码分析

2022-08-12 19:40:58 273

原创 spring boot自动装载

spring boot自动装配常用注解和接口

2022-08-06 22:58:45 1479 1

原创 多线程与CPU核心的关系

前言做为程序员多线程大家应该不陌生,但是业务如果不能指定线程数,而且需要处理流数据时,如何才能最大程度的发挥服务器的性能呢(暂不考虑cpu以外的性能瓶颈)。线程与CPU的关系众所周知,程序的运算,是交由cpu来执行的,具体来讲,是由cpu的核心来完成的,一个核心同时只能运行一个线程。那么问题来了,既然一个核心只能同时运行一个线程,是否线程数最大设置为cpu核心数就可以了呢?并不是,虽然一个cpu核心同时只能运行一个线程,但是线程并不是时时刻刻占用着cpu核心(除非是计算密集型),当你的线程执行IO操作

2022-01-19 16:51:14 2193

原创 RestTemplate上传多文件异常解决

RestTemplate上传文件方法都知道前端往后端传文件是通过form的形式,后端web程序之间上传,也是通过form表单。使用MultiValueMap类。MultiValueMap formData = new LinkedMultiValueMap<>();ByteArrayResource fileAsResource = new ByteArrayResource(a.getBytes()){ @Override public String getFilenam

2020-11-09 15:29:16 973 3

原创 改造JedisCluster使其支持pipeline操作

Redis 管道技术Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。管道技术的优势管道技术最显著的优势是提高了 redis 服务的性能。redis本身性能是很高的,单个redis命令的执行时间很短,大量的redis操作,网络IO的耗时非常大,而redis管道技术大大的减少了程序和redis的交互 次数,性能提升非常明显。管道的使用----Jedispublic class PipelineTest { public static

2020-08-31 16:12:12 621 2

原创 storm问题总结

1、frame size larger than max lengthstorm是将bolt都序列化好,然后分发到集群节点上。如果并发度很高,同一时间序列化的对象太多,就会报这个错。解决方案:在storm.yaml中配置nimbus.thrift.max_buffer_size。调整最大长度。2、Connection reset by peer达到了linux端口连接数量。解决方案:1、提高linux端口连接数2、减少storm并发度3、增加storm集群...

2020-08-12 17:48:31 441

原创 redis集群问题总结

1、大数据量,主从无法同步问题client-output-buffer-limit slave 256mb 64mb 60调大主从同步缓存大小限制client-output-buffer-limit slave 0 0 0全部设置为0表示无限制2、节点莫名宕机,一会儿又自动恢复storm集群读取redis数据,莫名出现cluster down错误,查看redis日志,也找不到什么有用的信息,只看到节点信息变成了fail状态,过一会又state change回正常状态。猜测可能是主从同步时间过长,

2020-08-12 16:34:39 431

原创 基于zookeeper自己实现高可用 java

前言高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,成熟的架构大部分都自带高可用实现,只需配置即可,例如基于zookeeper的storm、spark,kafka,基于数据库的quartz(Terracotta不考虑)等等。很多组件都基于zookeeper,zookeeper也成为了后端人员必修功课之一。基于zookeeper的高可用方案原理:各工作节点,在zookeeper同一目录下一同创建EPHEMERAL_SEQUENTIAL节点,抢到第一个编号0的节

2020-06-19 15:17:51 2073 2

原创 redis集群主从节点自动切换

前言最近在将redis作为数据库使用(redis中存放大量数据)的项目中,偶然发现redis的主从节点发生了变化,但是没有任务报错,redis集群的各节点也没有fail状态,因此记录学习一下,redis的深层机制。为什么首先redis是单线程的,所有的命令发送的redis会进入一个队列,依次执行。当数据量很大时,执行flushall、keys、scan等耗时较长的命令时,就会照成redis节点阻塞。其次,了解一下redis的集群节点检测机制。redis集群的其他节点,每隔一断时间,就会向集群中的其他

2020-06-01 11:07:13 3217 2

原创 关于数据库查询优化的那些点

在java项目中,很多时候性能瓶颈卡在数据库交互方面。最近接手一个项目,数据库cpu经常占到100,处理效率慢,sql执行语句的执行分区次数过大。因此,学习总结一下数据库优化的各个点。数据库端优化一、表分区作用:Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任...

2020-05-11 11:16:24 326

原创 java项目配置文件分离

在虚拟机或者生产主机上部署java项目时,如果将依赖和配置文件全部打包到jar包里,一旦需要更改配置文件,或者更改依赖,就需要重新打包上传,非常麻烦。而且当项目模块很多时,许多配置文件需要重复利用,一旦发生变更,就需要全部重新打包上传。为了方便维护,就需要将配置文件、项目依赖与项目的jar包分离开来。 分离到指定的目录后,需要使用java启动命令中的-classpath参数,来指...

2020-04-23 11:32:17 1259

原创 maven打包本地文件夹中的依赖包

在项目中,在用maven管理依赖的时候,经常用到本地jar包。<dependency> <groupId>XXX.XXX</groupId> <artifactId>XXX</artifactId> <scope>system</scope> <systemPath...

2019-11-14 17:34:57 1061 1

原创 java使用BigDecimal处理精度问题

关于BigDecimal的使用什么是BigDecimal为什么要用BigDecimaldouble丢失精度样例怎么用BigDecimal构造BigDecimalBigDecimal的运算什么是BigDecimalJava在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。为什么要用BigDecimalfloat和double只能用来做科学计...

2019-08-26 11:20:33 513

原创 SpringBoot热部署

一、什么是热部署热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。二、SpringBoot热部署工具SpringBoot包含了额外的成套工具。把spring-boot-devtools用于项目可以提供很多的便利。引入maven依赖<dependencies> <dependency&gt...

2019-05-21 17:56:12 134

原创 java基于tess4j实现图片文字识别

最近突然想写一个图片文字识别的java程序,上网搜集资料,有调用百度云api的,也有用tess4j的。调用百度云api虽然识别率比较高,但是需要注册百度云api,比较麻烦。使用tess4j只需下载tess4j的jar包,调用jar包方法即可,很方便,因此本篇文章选用tess4j。一、首先进入tess4j官网,http://tess4j.sourceforge.net/ ,下载官方...

2019-04-26 16:22:48 2992 8

转载 Log4J日志整合及配置详解

一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FAT...

2019-04-23 15:28:16 134

原创 基于SpringBoot搭建SSM项目

一、Spring Boot简介随着动态语言的流行(Node.js,Ruby),Java的开发显得格外的笨重:繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。在上述环境中,SpringBoot应运而生。Spring Boot是由Pivotal团队开发提供的全新框架,其设计的目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员...

2019-04-20 15:55:14 2981 1

原创 8.X版本的mysql数据库连接驱动引起的时区问题

今天在创建spring boot项目,引入mybatis之后,运行项目报了如下错误:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server...

2019-04-19 22:52:01 1803

原创 SSM框架整合(spring+springmvc+mybatis)

前言作为一位java开发人员,框架的学习与使用至关重要。随着SSH(spring+struts+hibernate)框架的逐渐落寞,SSM作为现在的主流框架,其掌握就更加显得至关重要。基本概念1.1、SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Dev...

2019-04-19 20:43:16 174

原创 关于spring配置文件.xml的头文件

前言工作有一段时间了,每次自己创建项目写xml配置文件的时候,xml配置的头部命名空间都是从别的项目拷贝过来,或者上网拷贝的,从来也没考虑过是什么意思,有什么用。最近自己练习,直接创建Spring Leagcy Project项目的时候,自动下载的配置文件总会报错,于是借此机会,深入学习一下。关于xml命名空间XML 命名空间 是由国际化资源标识符 (IRI) 标识的 XML 元素和属性集合...

2019-04-15 16:58:11 3015

空空如也

空空如也

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

TA关注的人

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