前言 springboot整合ES有两种方案,ES官方提供的ElasticsearchJavaAPIClient和spring提供的[SpringDataElasticsearch](SpringDataElasticsearch) 两种方案各有优劣 Spring:高度封装,用着舒服。缺点是更新不及时,有可能无法使用ES的新API ES官方:更新及时,灵活,缺点是太灵活了,基本是一比一复制RESTAPIs,项目中使用需要二次封装。 ElasticsearchJavaAPIClient 目前最新版本ES8.12,要求jdk8以上,API里面使用了大量的builder和lambda 官方也提供了测...

  Q4Yo7KkRB4VW   2024年03月25日   116   0   0 Java

前言 本文记录ES的一些基本操作,就是对官方文档的一些整理,按自己的习惯重新排版,凑合着看。官方的更详细,建议看官方的。 下文以books为索引名举例。 新增 添加单个文档(没有索引会自动创建) POSTbooks/_doc {"name":"SnowCrash","author":"NealStephenson","release_date":"1992-06-01","age":18} 不指定id,会随机生成,如果需要指定id,使用POSTbooks/_doc/id 还可以使用put的方式新增,例入POSTbooks/_doc/id,这种方式必须带id,否则会报错 以上两种方式,如果带上...

  Q4Yo7KkRB4VW   2024年03月20日   91   0   0 大数据

前言 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-MemoryDataGrid)。Redisson有一样功能是可重入的分布式锁。本文来讨论一下这个功能的特点以及源码分析。 前置知识 在讲Redisson,咱们先来聊聊分布式锁的特点以及Redis的发布/订阅机制,磨刀不误砍柴工。 分布式锁的思考 首先思考下,如果我们自己去实现一个分布式锁,这个锁需要具备哪些功能? 互斥(这是一个锁最基本的功能) 锁失效机制(也就是可以设置锁定时长,防止死锁) 高性能、高可用 阻塞、非阻塞 可重入、公平锁 。。。 可见,实现一个分布式锁,需要考虑的东西有很多。那么,如果用Re...

  Q4Yo7KkRB4VW   2023年11月01日   36   0   0 Java

前言 我在上一篇文章聊了Redisson的可重入锁,这次继续来聊聊Redisson的公平锁。下面是官方原话: 它保证了当多个Redisson客户端线程同时请求加锁时,优先分配给先发出请求的线程。所有请求线程会在一个队列中排队,当某个线程出现宕机时,Redisson会等待5秒后继续下一个线程,也就是说如果前面有5个线程都处于等待状态,那么后面的线程会等待至少25秒。 源码版本:3.17.7 这是我fork的分支,添加了自己理解的中文注释:https://github.com/xiaoguyu/redisson 公平锁 先上官方例子: RLockfairLock=redisson.getFai...

  Q4Yo7KkRB4VW   2023年11月01日   96   0   0 Java

前言 MQ(MessageQueue)就是消息队列,其有点有很多:解耦、异步、削峰等等,本文来聊一下RabbitMQ的一些概念以及使用。 RabbitMq 案例 Springboot整合RabbitMQ简单案例 基本概念 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 Queue:消息队列载体,每个消息都会被投入到一个或多个队列。 Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。 RoutingKey:路由关键字,exchange根据这个关键字进行消息投递。 Producer:消息生产者,就是投递消息的程序。 Consumer:消...

  Q4Yo7KkRB4VW   2023年11月01日   58   0   0 Java

前言 之前想对图片素材进行分类管理,除了打标签,还有一样是通过主题色进行分类。于是开始寻找能提取主主题色的工具,最后找到了大名鼎鼎的Leptonica库,其中就有中位切割算法的实现。下面附上中位切割算法的其它语言版本的实现。 JavaScript版:quantize(此库有提取颜色数量不对的问题,见issues/9) Java版:theme-color(我自己基于quantize实现的Java版) 中位切割算法(Mediancut) theme-color项目的效果如下: 讲中位切分法之前,我们先聊聊颜色该如何描述。 颜色模型 常见的颜色模型有RGB,HSV等,中位切分法基于RGB模型。...

  Q4Yo7KkRB4VW   2023年11月01日   52   0   0 Java

前言 Disruptor是一个高性能的无锁并发框架,其主要应用场景是在高并发、低延迟的系统中,如金融领域的交易系统,游戏服务器等。其优点就是非常快,号称能支撑每秒600万订单。需要注意的是,Disruptor是单机框架,对标JDK中的Queue,而非可用于分布式系统的MQ 本文基于Disruptorv3.4.版本 Demo 既然是简单使用,这阶段只需要关注: 生产者 消费者:EventHandler 消息的传递:消息的载体Event 简单例子 首先,我们定义消息的载体Event,生产者向消费者传递的消息通过Event承载 classLongEvent{ privatelongvalue; ...

  Q4Yo7KkRB4VW   2023年11月01日   65   0   0 Java

前言 Disruptor的高性能,是多种技术结合以及本身架构的结果。本文主要讲源码,涉及到的相关知识点需要读者自行去了解,以下列出: 锁和CAS 伪共享和缓存行 volatile和内存屏障 原理 此节结合demo来看更容易理解:传送门 添加了中文注释的源码:Disruptor 下图来自官方文档 官方原图有点乱,我翻译一下 在讲原理前,先了解Disruptor定义的术语 Event存放数据的单位,对应demo中的LongEvent RingBuffer环形数据缓冲区:这是一个首尾相接的环,用于存放Event,用于生产者往其存入数据和消费者从其拉取数据 Sequence序列:用于跟踪进度...

  Q4Yo7KkRB4VW   2023年11月01日   36   0   0 Java

前言 先说几句废话,本人是一名web后端开发,主语言是java,在学Electron之前,只会一点点HTML和JavaScript。本文讲的也是我学习Electron的过程,而非教程,请酌情参考。 Electron是什么 Electron是一个使用JavaScript、HTML和CSS构建桌面应用程序的框架。嵌入 Chromiu和 Node.js到二进制的Electron允许您保持一个JavaScript代码代码库并创建在Windows上运行的跨平台应用macOS和Linux——不需要本地开发经验。 前置准备 下面列举一下学electron之前需要掌握哪些技能: 独立开发...

  Q4Yo7KkRB4VW   2023年11月01日   81   0   0 JavaScript

Electron-builder打包和自动更新 前言 文本主要讲述如何为electron打包出来软件配置安装引导和结合github的release配置自动更新。 electron-builder是将Electron工程打包成相应平台的软件的工具,我的工程是使用electron-vite构建的,其默认集成了electron-builder,下文也是基于electron-vite生成的工程进行讲解。 下文是基于Window平台讲解,所以安装包我也会说成exe文件 配置 electron-builder有两种配置方式 在package.json配置 使用electron-builder.yml配置...

  Q4Yo7KkRB4VW   2023年11月01日   102   0   0 JavaScript
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~