- 博客(132)
- 资源 (4)
- 收藏
- 关注
原创 Langchain4j框架-Java程序员的大模型框架(二)
简单来说,RAG 是一种在将数据发送给 LLM 之前从数据中找出相关信息并将其注入提示的方法。这样,LLM 将获得(希望)相关信息,并能够使用这些信息进行回复,这应该会降低出现幻觉的可能性。其实核心分为两个阶段索引和检索在索引阶段,对文档进行预处理,以便在检索阶段进行有效搜索。此过程可能因所使用的信息检索方法而异。对于向量搜索,这通常涉及清理文档、用其他数据和元数据丰富文档、将其拆分为较小的片段(也称为分块)、嵌入这些片段,最后将其存储在嵌入存储(也称为向量数据库)中。
2025-02-21 16:35:42
1515
原创 Langchain4j框架-Java程序员的大模型框架
LangChain4j 可以理解是Java版本的LangChain,是一个旨在简化将大型语言模型(LLM)集成到 Java 应用程序中的框架。它帮我们封装了不同LLM 提供商(如 OpenAI、Google Vertex AI)的专有API方便在不同 LLM 或嵌入式存储之间切换,而无需重写代码。该项目于 2023 年初启动,旨在填补 Java 生态系统中缺乏 LLM 库和框架的空白。
2025-02-19 19:18:20
1351
原创 Jedis订阅断线重连
背景:公司项目用的阿里云redis实例,最近遇到了好几次由于网络抖动,导致redis订阅消息断连,业务产生影响,由于发布订阅没有重试机制,这里需要考虑断连重连。大致思路就是异步订阅,循环重试,以下是相关代码。
2024-07-26 10:14:07
404
原创 SmartEngine流程引擎之Custom模式
BPMN全称Business Process Model And Notation,是一套符合国际标准的业务流程建模符号。基本上,BPMN规范定义流程该怎么做,哪些结构可以与其他进行连接等等。不符合BPMN的流程引擎使用效果将大打折扣。也就是说所有流程引擎都要遵循BPMN这一标准,好比所有浏览器都要遵循HTTP协议BPMN片段实例process,表示一个流程。,分别表示流程定义的id和版本。这两个字段唯一区分一个流程定义。startEvent,表示流程开始节点。
2023-04-30 23:44:05
5145
原创 分布式解决框架之Seata
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。因为Seata主推的是AT(Automatic (Branch) Transaction)模式,同时也是最常用的,所以这里主要对AT模式做一下讲解
2022-10-25 18:44:24
3089
2
原创 分布式事务理论以及解决方案
文章涵盖2PC,3PC刚性事务;TCC,本地消息表,可靠性消息,最大努力通知。本文将对其一一讲解,尽最大努力写的通俗易懂。
2022-08-06 16:20:46
401
原创 G1垃圾收集器
一、前言学习G1垃圾收集器之前需要对JVM有大概了结:JVM基础知识。二、G1简介G1是一个并行回收器,它把整个堆划分为2048个区域,这些区域物理上不连续,被称为reigon,每一个region的大小是1 - 32M不等,必须是2的整数次幂。使用不同的region可以来表示Eden区、survivor区、old区等虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分region (不需要连续)的集合,通过region的动态分配方式实现逻辑上的连续。G1垃圾收集器还增加了一种
2022-07-11 14:16:33
593
原创 Kafka核心概念详解
1.生产者分区策略 2.消费者消费策略3.消息队列的两种模式4.生产者发送流程5.kafka高吞吐详解6.kafka如何解决数据重复性问题7.kafka消息有序性
2022-07-05 11:43:56
629
原创 广告业务Bug复盘总结
因为公司业务调整,最近接手了公司的广告系统的业务,其中遇到这样的一个Bug,它的表象是这样:广告主账户里面没钱了,但是广告依然给他投放了出来。一、基本业务逻辑首先广告的计费方式有几种,CPA,CPT,CPC,CPM等,而CPM这种计费方式是按每1000次曝光收费x元,也就说如果单价为10元,那么单次曝光就是0.01元,每次曝光我们首先都会从广告系统的缓存余额里面扣对应的钱,扣完钱,会给账户系统发送一条事物消息,然后执行本地事物,将扣款订单落库,事物提交,然后账户系统那边也会在缓存里面记录扣款金额,如
2022-05-27 17:43:48
877
原创 Docker网络篇(二)
上篇Docker网络篇_dotaer-df的博客-优快云博客讲到了Docker0的作用,它其实有局限性,因为容器会经常重启,重启后ip地址会变化,那么再用原来的ip进行通信,肯定是行不通了,有没有一种方法通过名字来进行通信了。有两种方案一种是容器启动时候制定--link,一种是自定义网络,下面详细的介绍一下这两种方案。一、--link--link list Add link to another container(1) 容器run...
2022-05-19 16:36:59
1260
原创 Docker网络篇
在学Docker网络之前,我们先来看一下一个安装了Docker的linux服务器中的网卡有哪些[root@iZbp1csuqi4s80m3g73awpZ ~]# ip addr这个命令显示了这台机器上所有的网卡。大部分的网卡都会有一个 IP 地址,当然也会遇到没有 IP 地址的情况。一、什么是Docker0Docker启动的时候会在主机上自动创建一个docker0网桥,实际上是一个Linux网桥,所有容器的启动如果在docker run的时候没有指定网络模式(-net这个参数)的情况
2022-05-18 19:11:39
689
原创 Docker之dockerfile
一、什么是DockerFileDockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,有了Dockerfile,就可以很轻松通过docker bulid构建出自己的一个镜像。二、DockerFile基础知识每个保留关键字(指令)都是必须大写字母 执行从上到下顺序执行 #表示注释 每个指令都会创建提交一个新的镜像层,并提交!常用命令FROM # 基础镜像,一切从这里开始构建MAINTAINER # 镜像是谁...
2022-05-17 18:27:32
1495
原创 Docker容器卷挂载
数据都在容器中,那么我们容器删除,数据就会丢失,所以容器与宿主机之间需要有一个数据共享技术!Docker容器中产生的数据,同步到本地!通过docker的卷挂载,将我们容器内的目录挂载到linux目录上面,这就是券挂载技术。docker run -v 宿主机目录:容器目录docker run -it -v /home/test:/home centos /bin/bash通过这样的方式宿主机的/home/test就与容器/home目录建立了联系,这样不管当宿主机还是容器做了修改,互相都可见。并
2022-05-13 16:27:19
1539
原创 Docker 基础命令篇
docker官方命令文档帮助命令docker version # docker版本信息docker info # 系统级别的信息,包括镜像和容器的数量docker 命令 --help镜像命令 1、docker images (查看所有本地主机上的镜像)# 解释REPOSITORY # 镜像的仓库TAG # 镜像的标签IMAGE ID # 镜像的IDCREATED # 镜像的创建时间SIZE ...
2022-05-12 11:05:21
633
原创 Docker安装与卸载
1、安装之前要检查机器是否已经安装过docker(如何卸载干净Docker)2、安装必须软件包sudoyum install-yyum-utils \ device-mapper-persistent-data \ lvm23、使用以下命令来设置阿里云的仓库(默认采取国外的镜像)sudoyum-config-manager \ --add-repo\http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep...
2022-05-10 11:28:57
260
原创 @RefreshScope刷新配置文件原理(2)
接着上文@RefreshScope刷新配置文件原理前文提到:当配置中心更改配置之后,有两种方式可以动态刷新Bean的配置变量值向上下文发布一个RefreshEvent事件 Endpoint方式,Http访问/actuator/refresh(springboot2.0之前为/refresh,springboot2.0之后默认没有开启refresh端点,需配置)不管是什么方式,最终都会调用ContextRefresher这个类的refresh方法。现在我们通过第二种Endpoint方式来感
2022-04-14 22:47:23
1307
1
转载 聊聊同步,异步,阻塞与非阻塞
近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解,在此写下此文,欢迎拍砖,希望多多交流。一、同步与异步首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来说的
2022-02-25 18:55:55
205
原创 ribbon.EnableZoneAffinity配置失效问题
我们都知道ribbon.EnableZoneAffinity属性用来过滤出和zone相关的服务器,即:只留下指定zone下的Server们,但是当我设置ribbon.EnableZoneAffinity=false,经过测试发现此配置并不生效。只有指定单个 serviceId.ribbon.EnableZoneAffinity属性时才生效,无法做到全局的一个默认配置,那为什么失效呢?本文接下来会对其进行探讨。因为本文中整合了eureka,在eureka中发现对EnableZoneAffinity进行了初
2022-02-08 18:53:44
742
原创 自定义ILoadBalancer
一、需求背景业务中遇到这样一个场景,网关需要将不同项目环境的域名路由到对应的项目环境中,做到隔离。环境共有五种环境:生产环境(real) 预发环境(pre) 公共环境(stable) 项目环境(dev) 本地环境(local)项目环境域名类似这样的格式http://alter-xxx.com,而我就是获取url上的alter-xxx标识,进行路由,而Ribbon当中也有一个Zone的概念,也就是区域,不同的项目环境就是不同的分区。本文采用于Spring cloud Ribbon和Eur
2022-02-03 19:09:43
1653
原创 OAuth协议入门之授权码模式
最近在业务中接触到了OAuth协议,之前没有遇见过,记录一下一、什么是OAuth协议OAuth(开放授权)是一个开放授权标准,即用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要用户提供自己的账号密码,只需提供一个令牌。...
2022-01-22 20:48:52
3543
原创 Redis各个版本重要更新说明
Redis 2.6(1)键的过期时间支持毫秒级(2)从节点支持只读功能Redis 2.8(1)可以用bind命令绑定多个ip地址(bing命令类似黑白名单功能,谁可以访问这个Redis服务)(2)发布订阅增加了pub/sub模式(3)Redis Sentinel 性能优化,相比于2.6的Sentinel,此版本生产可用Redis 3.0(1)最大的改动添加了Redis的分布式实现Redis ClusterRedis 3.2(1)添加GEO相关功能(2)新的List
2022-01-15 13:56:17
1275
原创 Kafka之Partition
先来看看Kafka中的一些相关术语Producer 消息生产者,就是向 kafka broker 发消息的客户端 Consumer 消息消费者,向 kafka broker 取消息的客户端 Consumer Group (CG) 消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者 Broker 一台 kafka 服务
2021-12-14 20:19:28
6368
原创 RocketMq存储结构(CommitLog、ConsumeQueue、IndexFile)
RocketMq存储结构(CommitLog、ConsumeQueue、IndexFile)
2021-12-07 17:31:01
4377
1
原创 WebFlux粗体验
一、概念(1)Spring WebFlux和Spring MVC区别Spring WebFlux 是一个异步非阻塞式 IO 模型,通过少量的容器线程就可以支撑大量的并发访问,所以 Spring WebFlux 可以有效提升系统的吞吐量和伸缩性,底层是采用的Netty容器。相反Spring MVC就是我们传统同步阻塞IO模型,底层是采用的是Servlet。(2)使用Spring WebFlux 能提高接口响应时间吗Spring WebFlux不能提高接口响应时间,而是提高了系统的吞吐量,为什么提高了吞
2021-09-24 14:38:23
1274
2
转载 redission分布式对象
公共讲解RedissonClient(同步异步)、RedissonReactiveClient(反射式Reactive)和RedissonRxClient(RxJava2)实例本身和Redisson提供的所有分布式对象都是线程安全的1.首先先进行一步简单的配置redis的步骤Config config = new Config();SingleServerConfig singleServerConfig = config.useSingleServer() .setA
2021-09-10 10:25:49
1492
原创 业务中遇到的时间窗口
系统中在需要统计一段时间窗口内的曝光量,并绘制成x轴为时间,y轴为曝光量的图表,但是查询条件需要针对不同纬度(分钟,小时,天)如按1天纬度查询2021-09-05 00:00 至 2021-09-08 00:00,那么图表x轴就应该显示为 09-05 00:00,09-06 00:00,09-07 00:00。如按1分种纬度查询2021-09-05 00:00 至 2021-09-0500:15,那么x轴应该显示为09-05 00:01,09-05 00:02 等等。那么如何做呢?计算公式:...
2021-09-09 15:05:35
167
原创 规则引擎easyRule详解
规则引擎有许多种:Drools,Aviator,Mvel,EasyRule,这里主要讲解一下EasyRule。easyRule集成了Mvel,而Mvel表达式非常强大,我们可以自己写一些表达式,交给mvel进行解析计算,得到这个表达式计算的值。...
2021-08-26 16:16:32
12800
2
原创 redission分布式锁种类
基于Redis的Redisson分布式可重入锁实现了java.util.concurrent.locks.Lock接口锁的种类有以下几种:可重入锁,公平锁,联锁,红锁,读写锁,接下来我们详细介绍一下每一种锁。可重入锁 一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法,而无需重新获得锁。 public void method1() { RLock lock = redissonClient.getLock("...
2021-08-20 18:50:54
2160
原创 SpringCloud-gateway之RoutePredicateFactory
SpringCloud早期整合了Netflix 公司的开源项目Zuul 1.0作为网关,但后期Zuul 推出了2.0,但 Spring Cloud 貌似没有整合计划,看了下spring-cloud-netflix-zuul引用的还是1.0的Zuul,Spring Cloud 后面推出了自己的服务网关:Spring Cloud Gateway,使用起来比 Zuul 更简单,配置更方便。而作为一个网关,应当具备以下功能:性能:API高可用,负载均衡,容错机制。安全:权限身份认证、脱敏,流量清洗,.
2021-08-18 18:56:20
513
原创 redission看门狗实现机制一看就懂
某次偶然听到redission看门狗,感觉比较有趣,于是就想看看它长啥样。。。。废话不多说,直入正题。什么是看门狗?用官方文档的话来说就是:大家都知道,如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。默认情况下,看门狗的检查锁的超时时间是30秒钟,也可以通过修改Config.lockWatchdogT.
2021-08-06 11:34:12
19667
9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人