自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Windows配置maven环境变量

Windows配置maven环境变量

2022-03-30 20:44:01 3024

原创 知道maven地址,如何在maven官网下载jar包

比如,我现在想下载 这个jar<dependency> <groupId>io.confluent</groupId> <artifactId>kafka-avro-serializer</artifactId> <version>5.3.0</version> </dependency>在maven官网搜索https://mvnrepository.com/search?q=kafka-avro-s

2021-08-23 15:18:02 5713

转载 内存溢出的几种原因和解决办法

OOM的常见情况:第一类 堆栈溢出:java.lang.OutOfMemoryError: ......java heap space.....也就是当你看到heap相关的时候就肯定是堆栈溢出了,此时如果代码没有问题的情况下,适当调整-Xmx和-Xms是可以避免的,不过一定是代码没有问题的前提,为什么会溢出呢,要么代码有问题,要么访问量太多并且每个访问的时间太长或者数据太多,导致数据释放不掉,因为垃圾回收器是要找到那些是垃圾才能回收,这里它不会认为这些东西是垃圾,自然不会去回收了;主意这个溢出之前,

2021-01-08 16:51:40 5638 1

转载 JVM参数调优

常见参数示例参数 描述 -Xms20m 堆初始值20M -Xmx20m 堆最大可用值20M -Xmn5m 新生代最大可用值5M -XX:PrintGC 触发GC时日志打印 -XX:PrintGCDetails 触发GC时日志打印更详细 -XX:UseSerialGC 串行回收 -XX:SurvivorRatio=2 eden:from:to = 2:1:1 -XX:NewRatio=2 新生代:老年代 = 1:2

2021-01-08 16:45:59 405

原创 记一次线上OutOfMemoryError: Java heap space问题的解决

不知道是不是2020年太安逸了,都没加过班,最后12.30的时候警示一下我们。。。平时运行的好好的项目,突然发生了OOM,当时慌的一批,因为作为小菜鸡的我根本就没有遇到过这种问题啊,更没解决过这种问题,还好前段时间有在网上看过有关JVM的知识,对于简单的命令还是知道的,知道要下dump,然后分析dump。但是实际的问题往往没有那么的一帆风顺,其中的坎坷只有经历过才知道。下面让我细细道来~首先讲一讲正常的OOM问题的解决思路吧。首先,OOM是OutOfMemoryError的简称,一般发生OOM的时候内存

2021-01-08 16:08:11 2143

原创 解决org.hibernate.LazyInitializationException:could not initialize proxy - no Session

JPA报错:exception occurs: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role,could not initialize proxy - no Session解决办法:1、在取数据的时候,此时session已经关闭了,而保持session的话,需要事务,在调用方法上加@Transactional...

2021-01-07 16:56:44 1115

原创 jstat命令详解

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。参考格式如下

2021-01-05 17:01:21 1705

原创 Caused by: org.postgresql.util.PSQLException: ERROR: column xxx.xxx does not exist

最近在做压力测试,需要将生产上的两个数据库数据导到测试环境上来,因为涉及到数据库的操作都是交给DBA来做的,所以就没有管,然后当DBA跟我说一切OK之后,为了保险起见我还是决定在本地试一下,项目是正常起来了,当我打一个get请求之后。。。,出现了尴尬的一幕,报错啦:relation "xxx" does not exist说我的表不存在,纳尼?数据库连接、entity一切都没有变的呀,联想起以前也出现过类似的情况,是数据库的search_path没有修改,于是向亲爱的DBA同事反映了,效率很快的改好

2020-10-14 17:31:30 11175

原创 使用@KafkaListener配置两个不同的Consumer监听不同kafka集群的消息

我们的项目中很多系统交互使用的kafka,最近遇到一个问题,原来我们的kafka需要监听消费我们自己的kafka生产的消息,但是现在需要使用kafka来消费外部系统的消息,但是我们原来的使用非常简单,直接在application.yml中进行的配置,同时监听两个kafka的话,不能实现,于是就要解决这个问题啦。下面是我们之前的配置方式:yml文件中的配置:消费者配置:...

2020-10-12 16:10:26 8797 5

原创 为什么重写equals方法,还必须要重写hashcode方法

是为了提高效率,采取重写hashcode方法,先进行hashcode比较,如果不同,那么就没必要在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用;hash类存储结构(HashSet、HashMap等等)添加元素会有重复性校验,校验的方式就是先取hashCode判断是否相等(找到对应的位置,该位置可能存在多个元素),然后再取equals方法比较(极大缩小比较范围,高效判断),最终判定该存储结构中是...

2020-10-12 15:36:46 186

原创 Java9 之后Class类newInstance过时

今天写代码的使用到了反射,因为我们使用的是JDK12,虽然可以反射出来,但是看着很难受。还好这里提供了新的方法,试了下,完全OK!调用代码如下,很简单:var targetArea = clazz.getDeclaredConstructor().newInstance();...

2020-09-24 16:59:01 1206

原创 jpa 原生SQL写法

当你的抽象类继承了JpaRepository类时,就会拥有一些基本的增删改查操作。但是,很多时候只有这些简单的功能是不够的的,jpa也支持原生SQL和实体类SQL进行自定义查询。简单例子:@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")List<Book> findByPriceRange(long price1, long price2);Li

2020-09-17 15:34:36 13512 2

原创 KafkaAvroDeserializer踩坑记

最近项目中需要对接第三方系统,数据通过kafka传递过来,需要使用到 KafkaAvroDeserializer 来反序列化消息,于是踩坑开始了。首先,我们设置反序列化工具:configs.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class);但是会发现找不到KafkaAvroDeserializer这个类,然后去pom文件中添加相关的依赖,在网上找的资料发现需要添加四个依赖:

2020-09-10 11:58:26 2572 1

原创 SpringBoot-ApplicationRunner

在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执行时机为容器启动完成的时候。这两个接口中有一个run方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中

2020-09-10 09:33:26 234

转载 @ConfigurationProperties 注解

在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值使用 @ConfigurationProperties 配置模块假设我们正在搭建一个发送邮件的模块。在本地测试,我们不想该模块真的发送邮件,所以我们需要一个参数来「开关」 disabl.

2020-09-01 16:22:26 472

原创 Kafka设置是否启动消费者监听器

目前在做一个项目,需要从第三方通过消息队列拿数据,之前使用的是kinesis,现在需要改成kafka,于是在前期的时候,希望增加一个开关控制是否开启kafka的消息监听。但是在使用kafka的时候,springboot集成 kafka就是直接使用@KafkaListener注解,启用监听就可以了,但是设置监听不监听,还真不知道从哪下手。但是之前也对kafka的消费者做过个性化配置,于是顺着这条线看看可能找到解决方案,结果皇天不负有心人,ConcurrentKafkaListenerContainer

2020-09-01 11:59:15 1906

原创 Docker安装kafka进阶方式

你在使用docker安装kafka的时候,是不是先启动zookeeper,再启动kafka,复杂的命令自己都不知道啥意思,接下来介绍一种结合docker-compose文件的简洁方式,虽然多了docker-compose文件,但是命令比之前简洁多了:具体命令如下:docker pull wurstmeister/kafka docker pull zookeeper tag wurstmeister/kafka defaultkafa tag zookeeper defaultzookeepe

2020-08-28 18:00:23 234

原创 深入理解Kafka acks与消息可靠性

1.背景在我们面试的时候,一旦简历上写了Kafka,几乎必然会被问到一个问题:说说acks参数对消息持久化的影响?这个acks参数在kafka的使用中,是非常核心以及关键的一个参数,决定了很多东西。所以无论是为了面试还是实际项目使用,大家都值得看一下这篇文章对Kafka的acks参数的分析,以及背后的原理。2.kafka高可用架构如果要想理解这个acks参数的含义,首先就得搞明白kafka的高可用架构原理。2.1如何保证宕机的时候数据不丢失比如下面的图里就是表明了对于每一个Topic

2020-08-26 20:28:40 530 1

原创 条件注解 ConditionalOnBean、ConditionalOnMissingBean、ConditionalOnClass、ConditionalOnMissingClass

SpringBoot中的自动配置类有很多ConditionalOnClass注解,@ConditionalOnClass在注解值中所有的类都存在时(通过尝试使用类加载器加载指定的类的方式判断)才会匹配,那么它们都是有哪些作用呢?@ConditionalOnBean // 当给定的在bean存在时,则实例化当前Bean@ConditionalOnMissingBean // 当给定的在bean不存在时,则实例化当前Bean@ConditionalOnClass //.

2020-08-24 18:32:14 3474

原创 springboot报ScannerException:character ‘@‘ that cannot start any token. (Do not use @ for indentation

1、springboot @@,报ScannerExceptionCaused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next tokenfound character '@' that cannot start any token. (Do not use @ for indentation) in 'reader', line 28, column 20: defaul

2020-08-24 16:06:49 20518 4

原创 Spring Boot中application.yml与bootstrap.yml的区别

大家都知道,SpringBoot默认支持properties(.properties)和YAML(.yml .yaml )两种格式的配置文件。1.加载顺序1、若application.yml 和bootStrap.yml 在同一目录下 :bootstrap.yml先加载 application.yml后加载。2、bootstrap.yml 用于应用程序上下文的引导阶段。bootstrap.yml 由父Spring ApplicationContext加载。3、父ApplicationCont

2020-08-24 16:01:49 634 1

原创 kafka producer 发送消息报错:This server is not the leader for that topic-partition.

我们的业务中使用到了kafka来实现一些功能,但是最近发现经常出现消息丢失的情况,我们用的org.springframework.kafka,配置如下:spring: kafka: producer: bootstrap-servers: xxx:9092 key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.

2020-08-21 17:10:30 4842

原创 Java中如何实现List的自定义排序

最近项目中遇到一个问题,需要对List进行自定义顺序排序,打个比方,现在我有一个SortStudent类,需要对它的年龄降序排序,再对他的省份进行自定义的排序,要求按照:"安徽", "北京", "上海", "深圳", "广州"的顺序排列,如何实现呢?直接上代码,很简单,关键地方有注释,应该是一目了然的。public class CustomSort { private static final List<String> regulationOrder = Arrays.asList

2020-08-20 11:55:38 2967

原创 maven dependence 的optional 和 exclusions 标签详解

1.简介Optional:可选依赖(Optional Dependencies) Exclusions:依赖排除(Dependency Exclusions)2.Optional举个例子,现在我有两个项目,ProjectA 和 ProjectB,ProjectA依赖于ProjectB,但是却是用到了ProjectB的很少一部分功能,此时就可以在A中配置对B的可选依赖。举例来说,一个类似hibernate的项目,它支持对mysql、oracle等各种数据库的支持,但是在引用这个项目时,我们可能只用

2020-08-18 22:17:17 713

原创 top命令详解

Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中,我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们也会探索这些命令。(译注:不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助。)1. Top 命令输出:首先,让我们了解一下输出。top命令会显示系统的很多信息。我们需要理解不同部分输出的意义:默认运行时,top命令会显示如下输出:前几行水

2020-08-17 22:08:53 6665

原创 解决:Kafka 报错 java.io.IOException: Can‘t resolve address: iZuf65paliafsmaw29vb8jZ:9092

今天在自己的服务器上装了一个Kafka,在自己电脑上使用springboot集成kafka,发送消息的时候,报了下面的错误:[customer] 2020-08-13 16:23:32.984 WARN [kafka-producer-network-thread | producer-1] [NetworkClient ] [Producer clientId=producer-1] Error connecting to node iZuf65paliafsmaw

2020-08-13 16:48:59 1964

原创 UncategorizedMongoDbException: Exception authenticating MongoCredential解决办法

今天通过springboot连接MongoDB的时候,出现了以下的报错:从报错来看,是因为认证没有通过,检查了配置,是没有问题的,那么会不会是账号本身的问题呢?于是到MongoDB的客户端看了下,原来我的账号建在了别的db下面,我连接的db下并没有我需要的账号,所以解决办法就是,在用到的db下面建立对应的账号就行了:然后再去springboot项目里面使用果然没有问题了。...

2020-08-11 16:59:34 10046

原创 深入理解synchronized锁升级过程

1.简介在Java高并发系统中,我们常常需要使用多线程技术来提高系统的运行速度,而多线程带来的数据安全问题就是我们必须要解决的问题。在Java中,可以使用synchronized关键字来实现多线程并发中的数据安全问题。这里简单介绍下synchronized的三种用法:修饰实例方法:以实例对象作为锁,进入同步代码前需要获得当前实例对象的锁 修饰类方法(static修饰的方法):以类对象为锁,进入同步代码块前需要获得当前类对象的锁 修饰代码块:需要指定一个锁对象(既可以是实例对象,也可以是)即

2020-08-02 23:34:41 10069 2

转载 偏向锁撤销导致stw

1.现象某次上线公司内部系统时候,发现系统反应很慢,停顿时间过长。2.问题排查遇到这种情况,推测是频繁GC导致,首先是查看日志(配置参数-XX:+PrintGCApplicationStoppedTime),结果如下:Total time for which application threads were stopped: 0.0050077 seconds, Stopping threads took: 0.0009924 Total time for which applica.

2020-08-02 22:35:43 2088

原创 数据库版本管理-Flyway

1.Flyway简介我们在公司做开发时,由于项目需求的变化,或者前期设计缺陷,导致在后期需要修改数据库,这应该是一个比较常见的事情,如果项目还没上线,你可能把表删除了重新创建,但是如果项目已经上线了,就不能这样简单粗暴了,我们需要通过 SQL 脚本在已有数据表的基础上进行升级。Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同版本的sql脚本,从而做到数据库同步。2.Flyway使用Flyway不限

2020-07-31 22:03:03 2005

原创 为什么重写equals方法,必须重写hashcode方法

总的来说就是两点:1.使用hashcode方法提前校验,可以避免每一次比对都调用equals方法,提高效率是为了提高效率,采取重写hashcode方法,先进行hashcode比较,如果不同,那么就没必要在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用;hash类存储结构(HashSet、HashMap等等)添加元素会有重复性校验,校验的方式就是先取hashCode判断是否相等(找到对应的位置,该位置

2020-07-08 16:59:57 263

原创 进入docker容器的四种方式

在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。进入Docker容器比较常见的几种做法如下:使用docker attach 使用SSH 使用nsenter 使用exec一、使用docker attach进入Docker容器  Docker提供了attach命令来进...

2020-06-23 21:53:39 1037

原创 Redis序列化引发的惨案

由于Redis是基于内存操作的数据库,所以速度非常的快,现在我们的项目中或多或少都会用到Redis,今天跟大家分享一个由Redis序列化问题导致的事故,希望大家引以为戒,不要犯我一样的错误。我们你项目中,使用的是springboot集成的RedisTemplate,用过的同学可能都知道,RedisTemplate在帮我们将数据存到Redis的时候,都会将我们的数据进行序列化,不管是key还是value,都会进行序列化,默认key和value使用的都是JdkSerializationRedisSer.

2020-06-23 21:51:18 448

原创 fatal: refusing to merge unrelated histories解决方法

今天远程创建了一个库,有REDAME,然后把本地的一个新项目跟远程仓库关联上,并且提交了一些init的代码,然后回来 git push ,git pull都不行,提示:fatal: refusing to merge unrelated histories原因是两个分支是两个不同的版本,具有不同的提交历史,用一下命令就可以了:git pull origin master --allow-unrelated-histories可以允许不相关历史提交,强制合并。...

2020-06-18 17:54:59 561

原创 kafka报错:java.io.IOException: Broken pipe

kafka报错:原因出现这种问题的原因主要是因为客户端异常关闭,而服务端还在发送数据所导致的!解决方案先关闭服务端!再关闭客户端~!

2020-06-11 18:32:37 1439

转载 spring.data RedisTemplate API的使用

Redis 数据结构简介Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。下面来对这5种数据结构类型作简单的介绍:结构类型 结构存储的值 结构的读写能力 String 可以是字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作;对象和浮点数执行自增(increment)或者自减(decrement) List 一个链

2020-06-05 10:24:26 569

原创 postgresql 建立索引

背景今天六一儿童节,早上一来,还没开始过节呢,就被support同事抓着解决问题,难忘。。。事情是这样的,我们的项目流量不是很大,在最初创建数据库的时候,有三张表加了物理外键,后来考虑到写入时性能的问题,就把外键个删掉了。本来用着一直没问题的,直到今天,用户报有个页面加载不出来数据。找了一圈,最后打印出了SQL,看它的执行时间发现了问题所在。我们用的JPA,加载这个页面需要连三张表去查询,hibernate因为是先查一个表的数据再去下一个表查,于是就发出了几十条的SQL,而每个SQL耗时都很长,

2020-06-01 17:42:23 2488

原创 Unable to find a single main class from the following candidates

今天在执行 mvn install的时候,报错:按提示信息的意思,是我的这些类里面都有main方法导致的。网上查找资料发现:POM 文件中添加了“org.springframework.boot:spring-boot-maven-plugin”插件。在添加了该插件之后,当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“Java-jar”命令就可以直接运行。这在很大程度上简化了应用的部署,只需要安装了 JRE 就可以运行。可以在POM中,指定..

2020-06-01 17:10:38 1172

原创 git 如何将加入了git版本管理的文件从版本管理中删除

在我自己新建的一个项目中,之前gitignore文件没有仔细写,所以有很多项目不必要的垃圾文件被加到了git的版本管理中,当我使用 git status 查看我本地文件修改情况的时候,这些文件被显示出来了,这时我再往gitignore文件中添加排除文件已经来不及了,他们依然显示出来了:没办法只能手动将它们从版本管理中删掉了,但是又不知道命令,于是猜了一个:果然不对,还是老老实实的查一下吧,执行git help命令,各种命令都出来了,原来我要找的是 rm于是一顿操作下来,达到了目的:.

2020-05-29 16:54:26 3349 1

原创 Java8 parallelStream实战

项目环境:JDK12springboot:2.1.6.RELEASEspringcloud:Greenwich.RELEASE业务场景系统需要对接RFID,扫描枪扫描商品得到的EPCCode经过前端传到后端,后端API需要先将EPC通过算法转成EANCode,再用EANcode请求一个API,得到itemcode。由于商品可能有多个,且最多有16个,如果用串行的话,由于EPC转EAN的算法很复杂,而且从EAN转itemcode还需要请求外部的API,效率会很低,所以并行是必须的。

2020-05-29 16:18:20 480

空空如也

空空如也

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

TA关注的人

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