自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lc

怕什么真理无穷,进一寸有一寸的欢喜。

  • 博客(69)
  • 资源 (3)
  • 收藏
  • 关注

原创 线程池动态设置线程大小踩坑

先简单介绍一下背景,我先创建了一个核心线程数和最大线程数都为1的线程池,然后通过ThreadPoolExecutor.setCorePoolSize()方法设置核心线程数为5,接着继续往线程池中丢任务,我看通过截图可以看到,这些线程在执行完一次任务后就直接销毁了,并不是想像中的执行完一个任务后持续的执行队列中的任务或者是阻塞等待新任务的到来。由于我们只调整了核心线程数,未同步修改最大线程数,这里就会走到returen null的逻辑,就会退出当前线程。比如,出现下图的情况。

2024-09-22 21:39:24 359

原创 Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

他的原理大概就是启动一个kafka客户端,获取kafka服务器的信息,然后提供一些metric接口供Prometheus使用,随意它能展示的监控信息比较有限,只有每个主题的分区数,每秒/分钟消息数,消费组的lag数。但是kafka本身的JMX有提供500+的监控信息可以进行监控,当然不是说这这么监控指标都很重要,相比。在Prometheus的prometheus.yml添加如下内容。目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的。Prometheus官方提供的。

2023-08-10 19:17:56 3446

原创 老旧Spring Cloud 2.0.0.RELEASE使用最新版本Nacos 2.2.3

本文主要将使用旧版本Spring Cloud 2.0.5.RELEASE整合新版本Nacos2.2.3遇到的问题进行了记录。过程中共遇到两个问题,一个是Nacos2.1.X引入了鉴权导致的,另外一个是Spring Cloud Alibaba代码兼容问题。

2023-07-31 14:15:58 3009

原创 ElasticSearch查询

match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。以下的两个语句的效果是一样的。上面的语句返回的结果是不含job为html的用户。所以对应了上面的should的说明,should只是增加满足条件的数据的分数,主要用于修正文档的相关性得分。should:如果满足这些语句中的任意语句,将增加 _score,否则,无任何影响。term查询被用于精确值匹配,这些精确值可能是数字,时间,布尔或者那些not_analyzed(keyword)的字符串。

2023-05-11 14:51:21 689 1

原创 安装RedisBloom插件

Redis布隆过滤器插件安装~

2023-05-05 17:16:36 1397 2

原创 深入Spring 5 事务原理与源码分析【精品分享】

Spring事务源码分析

2022-11-16 23:06:33 453

原创 常见限流算法 与 Guava RateLimiter实现

常见限流算法以及Guava RateLimiter源码分析

2022-07-23 23:29:29 1954 2

原创 JDK16你必须了解的新特性

Pattern Matching for instanceof instanceof的模式匹配instanceof的模式匹配从JDK14进入孵化,到JDK16正式转正。Recordsrecords从JDK14引入预览版到JDK16转正。Elastic Metaspace弹性的元空间,可以帮助 HotSpot 虚拟机,将元空间中未使用的 class 元数据内存更及时地返回给操作系统,以减少元空间的内存占用空间。ZGC: Concurrent Thread-Stack Processin

2022-04-21 19:05:38 1202

原创 JDK15新特性

ZGC: A Scalable Low-Latency Garbage CollectorZGC从JDK11进入孵化到JDK15正式转正。Shenandoah: A Low-Pause-Time Garbage CollectorShenandoah GC从JDK12进入孵化到JDK15正式转正。ZGC VS Shenandoah对于吞吐量,G1和Shenandoah GC是最好的收集器。 对于敏感延迟的应用程序,ZGC是最好的收集器。性能对比网址:https://tingh.dev

2022-03-29 20:09:29 1224

原创 JDK14你必须了解的新特性

JDK14你必须要了解的特性

2022-03-29 20:01:21 1235

原创 JDK13你必须了解的新特性

你必须了解的JDK13新特性

2022-03-29 19:50:56 759

原创 JDK12你必须了解的新特性

JDK12你必须了解的新特性

2022-03-29 19:42:42 623

原创 JDK11你必须了解的新特性

JDK11你必须了解的新特性

2022-03-29 19:24:48 4373

原创 JDK10你必须了解的新特性

JDK10你必须了解的新特性

2022-03-29 19:12:38 1908

原创 JDK9你必须了解的新特性

JDK9你必须了解的新特性

2022-03-29 18:58:33 1554

原创 Reactor3 从Reactor3的Flux.create与Flux.push学并发编程实战与优化

文章目录系列文章版本前言约定优于限制使用AtomicReferenceFieldUpdater来操作Volatile变量在应用层优化掉不必要的内存屏障系列文章Reactor3 SpscLinkedArrayQueue源码分析????Reactor3 MpscLinkedQueue源码分析????????Reactor3 Flux.create与Flux.push正确打开方式????????????Reactor3 Flux.create与Flux.push区别与源码分析(一)??????????

2021-12-25 17:39:52 1266

原创 Reactor3 Flux.create与Flux.push区别与源码分析(二)

系列文章Reactor3 SpscLinkedArrayQueue源码分析????Reactor3 MpscLinkedQueue源码分析????????Reactor3 Flux.create与Flux.push正确打开方式????????????Reactor3 Flux.create与Flux.push区别与源码分析(一)????????????????????版本Reactor 3.4.9写在前面为了介绍Flux的create与push的源码写了上面三篇博客做铺垫,不太容易????。

2021-12-19 18:02:18 739 1

原创 Reactor3 Flux.create与Flux.push区别与源码分析(一)

系列文章Reactor3 SpscLinkedArrayQueue源码分析????Reactor3 MpscLinkedQueue源码分析????????Reactor3 Flux.create与Flux.push正确打开方式????????????版本Reactor 3.4.9写在前面为了介绍Flux的create与push的源码写了上面三篇博客做铺垫,不太容易????。如果不懂Flux.create与push使用请阅读:Reactor3 Flux.create与Flux.push正确打开

2021-12-18 18:06:46 2100

原创 Reactor3 Flux.create与Flux.push正确打开方式

前言Reactor3的生产元素有很多种方式。比如常用的Flux.just等等。但是Flux.just是一个热数据源,它的元素在调用Flux.just的时候就已经确定了,并且无论多少个订阅者订阅多少次,它们拿到的元素都是一样的。如果有一个生产者和一个消费者,在发生订阅的时候生产者可能还不知道要下发的元素是什么,可能要等一个事件来触发消息的下发,当这个事件到来需要马上下发给消费者,这个时候Flux.just就无能为力了。这个时候就需要用到Flux.create或者Flux.push了。阅读须知虽然本篇是F

2021-12-18 15:57:10 3224

原创 Reactor3 MpscLinkedQueue源码分析

前言上一篇我们说到了SpscLinkedArrayQueue,它是一个单生产者单消费者的队列。在实际的开发过程中不可能都是单生产者,很多时候都是在高并发情况下需要引入队列来进行削峰。在Reactor3中MpscLinkedQueue就是这样一个多生产者单消费者的队列。成员变量//当前生产节点private volatile LinkedQueueNode<E> producerNode;//生产节点伴随的并发控制成员变量 private final static AtomicR

2021-12-12 22:33:28 1265

原创 Reactor3 SpscLinkedArrayQueue源码分析

前言Reactor3在BUFFER背压策略下,当Publisher发布元素后会先到一个缓存队列中,然后由生产者推送或者消费者拉取。SpscLinkedArrayQueue就是这其中的队列。在JDK9中引入了响应式的接口Flow,在JDK中有一个Flow.Publisher的实现SubmissionPublisher。SubmissionPublisher的背压就很简单,使用的队列是一个Object数组。那为什么Reactor3不使用简单的Object数组呢,要去另辟蹊径实现另外的一个队列?数组在数据到

2021-12-12 19:24:28 976

原创 Spring Cloud Alibaba Nacos服务注册与发现原理与赏析

作为阿里开源的一款Spring Cloud实现

2021-07-25 23:25:26 1672 5

原创 Nacos+Prometheus+Grafana监控Spring Cloud微服务

Nacos+Prometheus+Grafana监控Spring Cloud微服务前言踩坑Spring Boot Admin使用Prometheus官方SD配置伪装为Consul新Nacos Consul Adapter快速开始总结前言本问要讲的不是使用Prometheus+Grafana监控Nacos服务本身,而是监控注册在Nacos中的服务。Prometheus和Grafana的整合网上有很多教程也就不在详细介绍了,本篇的主要内容是注册在Nacos中的服务如何被Prometheus自动监控,不需要在

2021-06-26 17:24:37 5546 14

原创 响应式微服务Spring Cloud与Spring WebFlux(二)之 链路跟踪

上篇文章我们讲到了Reactive Feign,它在响应式微服务中替换了阻塞模型的Open Feign。今天我们要讨论的是响应式的链路跟踪。在微服务架构中,原来的单体被划分为多个细小的模块部署,一个请求可能需要横跨多个小的服务才能完成它所要实现的功能。在传统阻塞模型中有很多优秀的框架可以供我们解决这个问题,比如Zipkin,SkyWalking等等。那在Spring Webflux中他们表现如何呢?Zipkin,SkyWalking对Spring WebFlux的支持ZipkinZipki.

2021-05-04 17:14:45 4696 11

原创 Spring WebFlux(Reactor3) block()/blockFirst()/blockLast()使用陷阱

从传统阻塞模型刚过度到Spring WebFlux非阻塞模型编程会有诸多不适应的地方。比如调用一个方法都是返回Mono或者Flux,然后需要不停的map,flatMap去处理返回的结果。在Spring MVC中可以很方便快捷处理的场景,在Spring WebFlux可能会麻烦一点。这个时候我们可能会用Reactor的boock()方法来处理了。然后我们就会得到如下的错误了:error:java.lang.IllegalStateException: block()/blockFirst()/bloc.

2021-04-24 18:10:45 12208

原创 CentOS MySQL8.0安装

rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpmyum --enablerepo=mysql80-community install mysql-community-server

2021-03-22 19:32:42 118

原创 响应式微服务Spring Cloud与Spring WebFlux(一)之 Reactive Feign

先介绍open feign官网对于响应式的介绍,它引用了Playpika的github项目。接着就介绍一下这个公司,他是做什么的,背书什么的。然后介绍这个项目的现状,对于cloud2为什么使用它,还有它的一些配置。在加一些测试的代码。...

2021-03-21 22:57:32 11379 10

原创 Spring WebFlux (Reactor3)上下文Context处理

在Spring MVC中我们可以使用ThreadLocal保存一些信息,作为请求的上下文。一些公用的变量就不用写在方法中,可以通过上下文来获取(比如:用户的登录信息)。在《重构》中马丁福勒也推荐能通过其他方式获取到的变量,不要使用方法参数传递进来。但是在Spring WebFlux中会存在多次线程切换,所以ThreadLocal就不能在Spring WebFlux中使用了,除非,手动的做ThreadLocal线程间的复制。这样处理明显是不明智的行为。那在Spring WebFlux中如何处理上下文信息,

2021-03-16 21:03:16 13380 56

原创 分布式微服务权限校验方式一览

在微服务架构中相比原来的单体服务更为复杂,在整个微服务架构中可能有成百上千个服务提供给网页或APP或其他客户端调用。我们不可能为不同的客户端所调用的每一个服务实现一套安全策略,这样是不现实的。有几种解决方案:distribution sesssion sidecar proxy 共享库 API网关distribution session建立一个服务集群,然后在前面设置一个负载均衡器,通过该负载均衡器可以始终路由到同一个session管理器。比如某个服务有三个节点,用户A访问这个服务时通过

2021-03-12 09:38:15 996 1

原创 Spring WebFlux(Reactor3)重试

使用Spring的同学应该对重试并不陌生,在Spring中有一个专门用于重试的模块。使用这个模块,只需要一个注解就能优雅的实现重试了。那么我们也知道,Spring WebFlux响应式技术栈相比经典的命令式编程技术栈Spring MVC有了很大的改变,那么在Spring WebFlux中重试是否有Spring MVC那样方便呢?Spring WebFlux底层是使用Project Reactor,在Reactor中有一个专门的Retry动作。下面我们就一起学习一下Reactor的重试吧。我们先.

2021-03-01 22:37:29 2458

原创 Spring WebFlux(Reactor3)响应式编程处理异常

前言文中部分内容翻译自Reactor Guide,对Reactor Guide中举的一些例子做了一些修改和增减,更方便大家的理解。从命令式编程刚开始接触Reactor对于异常的处理可能会有些不知所措。有很多人说,刚毕业的同学和工作了几年的同学在处理异常上会有很大的区别。是因为刚毕业的同学可能对于一些异常不会做处理。同样在我们实际的项目中,异常如果处理的不恰当会引发很重大的问题。所以,本篇就向大家介绍一下命令式的异常处理对应的响应式是如果操作的呢?在开始之前,我们首先应该明确一点。在响应式序列.

2021-02-28 14:46:33 2962

原创 专栏计划

本专栏会带着大家一起学起如果使用Spring Cloud,Spring WebFlux去开发响应式微服务。介绍什么是响应式使用Spring WebFlux取代Spring MVCSpring Cloud GatewayReactive RedisR2DBCReactive Open FeignWebCllent

2021-02-25 09:45:15 156

原创 Spring Cloud Gateway整合服务发现(遇到的一点坑)

Spring Cloud Gateway作为取代zuul的新一代网关出来已经有一段时间了。一直没有尝试使用过,最近在使用Spring反应式微服务就尝试了一把,遇到了一些坑,写一些文字记录一下。主要是写一下在Spring Cloud Gateway和服务发现整合的过程中遇到的一些坑。Spring Cloud Gateway和服务发现整合在网上也有很多博客有介绍。笔者刚开始想的Spring Cloud Gateway出来这么久了,跟着网上的随便一个博客就应该可以轻松整合成功。刚开始也确实是这样,但是发现

2021-02-22 00:08:20 1407

原创 为什么使用Spring Reactor和Spring WebFlux?什么情况下需要使用?

Spring WebFlux跟随Spring 5在2017年发布,距今已经有四年时间了,但是在国内使用Spring MVC还是主流。作为Spring强推的技术栈,甚至可以说将身家性命都压在它身上了,它到底有什么好处,它到底解决了什么问题呢?什么是响应式?对于响应式编程,目前大多数开发者对于其可能是一种知道但是没有用过的状态。大多数人对于响应式都是说异步的嘛,所以性能好。其实这种说法不完全对,下面就为大家简单的阐述一下。在小马哥的《Reactive Programming 一种技术,各自表述.

2021-02-05 16:18:12 3001 4

原创 MySQL InnoDB的可重复读(REPEATABLE-READ)是否解决了幻读(PHANTOM READS)问题

关于数据库的隔离级别标准的定义是在可重复读级别下可能发生幻读,解决幻读只有使用可序列化。虽然标准是这样说但是数数据库实现的隔离级别可能会和标准有点出入。关于这方面的讨论在DDIA中有一些讨论。关于MySQL的可重复读有没有解决幻读的问题也是偶然在网上看到了。进而去在网上查阅了一些博客并没有得到准确的回答,论证描述的也各自相互矛盾,不过再搜寻的过程中也学到了一些知识。在博客中没有找到答案,重试去官网查找了一下。REPEATABLE READThe defaultisolation level..

2021-01-26 22:23:27 1401 3

翻译 为什么使用InnoDB引擎 使用InnoDB的好处

在服务器的硬件或软件发生问题时,可以不用管数据库发生了什么,不需要执行任何操作就可以直接重启。InnoDb的crash recovery机制会自动的完成在发生故障前的数据变更提交,不会恢复任何已经发生改变但是没有提交的数据。 InnoDB有它自己的buffer pool去缓存表和索引数据在主存中便于访问。频繁被访问的数据会从内存中直接获取到。缓存可以被用于很多类型的信息并且能提高处理速度。在专门用于数据库的服务器,高达80%的物理内存通常分配给buffer pool。 需要外键做一些关联,实现级联更新操

2020-12-22 22:42:26 1276

原创 ThreadPoolExecutor异常处理

前言:本文基于JDK1.8Java的J.U.C提供了几个比较使用的线程池类,比如最常用的ThreadPoolExecutor,还有用于执行计划等方面的ScheduledThreadPoolExecutor,还有分而治之的小偷ForkJoinPool。在使用这些线程池执行任务时难免会发生不可预知的异常,在这些异常发生的时候我们的程序应该如何处理?我们的处理方式是否能按我们的预期执行?这些你真的清楚吗?ThreadPoolExecutor简单处理模式在讨论ThreadPoolExecuto..

2020-12-22 19:17:01 3368 1

原创 如何优雅的在Spring Boot中使用Quartz

在网上看到关于Spring Boot整合Quartz的方式都看起来不是太好用,太复杂。一般都会定义一个实现了QuartzJobBean 的任务类(这个类不会交给Spring管理)。然后给这个Job配置相应的JobDetail和Trigger。具体操作如下:1:定义一个任务public class DateTimeJob extends QuartzJobBean { @Override protected void executeInternal(JobExecuti

2020-07-01 17:31:14 547

原创 Executor(五):ForkJoinPool详解 jdk1.8

ForkJoinPool在1.7引入,它只被用来运行ForkJoinTask的子类任务。这个线程池和其他的线程池的不同之处在于它使用分而治之和工作窃取算法去执行任务。有效的去处理大多数任务能衍生出小任务的问题。工作窃取算法看看维基百科对工作窃取算法的描述:在并行计算中,工作窃取是多线程计算机程序的调度策略。它解决了在具有固定数量的处理器(或内核)的静态多线程计算机上执行动态多线程计算的问题...

2020-02-23 17:19:02 3259 8

原创 Executor(四):ScheduledThreadPoolExecutor jdk1.8

JDK对ScheduledThreadPoolExecutor 的描述 一个ThreadPoolExecutor可以添加调度命令在一个指定的延时时间或周期性的时间执行。相比Timer类它支持多线程。延时任务到了能执行的时间马上执行但是没有任何实时的保证。到了设定的时候候,他们将会开始。任务调用正好完全相同的时间按提交的先进先出的顺序执行。和ThreadPoolExecutor相比需要注意的...

2020-02-14 23:15:49 322

Redis Bloom redis布隆过滤器redisbloom.so下载

免除自己编译,直接下载。 编译的是2.4.5版本的redis bloom

2023-05-06

深入分布式缓存 从原理到实践(高清)

深入分布式缓存,讲解了主流的缓存技术,中间件。客户端缓存,分布式系统理论,Ehcache,Memcached,缓存的典型问题,Redis,EVCache,还有几个特定的案例。 深入分布式缓存,讲解了主流的缓存技术,中间件。客户端缓存,分布式系统理论,Ehcache,Memcached,缓存的典型问题,Redis,EVCache,还有几个特定的案例。 深入分布式缓存,讲解了主流的缓存技术,中间件。客户端缓存,分布式系统理论,Ehcache,Memcached,缓存的典型问题,Redis,EVCache,还有几个特定的案例。 深入分布式缓存,讲解了主流的缓存技术,中间件。客户端缓存,分布式系统理论,Ehcache,Memcached,缓存的典型问题,Redis,EVCache,还有几个特定的案例。 深入分布式缓存,讲解了主流的缓存技术,中间件。客户端缓存,分布式系统理论,Ehcache,Memcached,缓存的典型问题,Redis,EVCache,还有几个特定的案例。 深入分布式缓存,讲解了主流的缓存技术,中间件。客户端缓存,分布式系统理论,Ehcache,Memcached,缓存的典型问题,Redis,EVCache,还有几个特定的案例。

2019-04-17

java爬虫需要的jar包

java爬虫需要的jar包。httpclient,jsoup等等。直接导入项目使用 java爬虫需要的jar包。httpclient,jsoup等等。直接导入项目使用 java爬虫需要的jar包。httpclient,jsoup等等。直接导入项目使用java爬虫需要的jar包。httpclient,jsoup等等。直接导入项目使用 java爬虫需要的jar包。httpclient,jsoup等等。直接导入项目使用 java爬虫需要的jar包。httpclient,jsoup等等。直接导入项目使用 java爬虫需要的jar包。httpclient,jsoup等等。直接导入项目使用

2018-01-29

软件设计师资料,超齐全

里面包含了从14到16年的软件设计师的真题。还有答案讲解。本人已于2017年通过这套复习资料取得证书,上下午成绩都是60+

2018-01-29

空空如也

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

TA关注的人

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