- 博客(103)
- 收藏
- 关注
原创 【橘子大模型】关于PromptTemplate
在大模型应用中有一个概念叫做Prompt,我们来看一下百度百科对Prompt的定义。prompt中文为“提示词”。在AI大模型中,Prompt的作用主要是给AI模型提示输入信息的上下文和输入模型的参数信息。所以我们可以知道Prompt其实就是你问大模型的输入语言,也就是我们作为用户和大模型交互的输入。
2025-04-01 14:27:32
514
原创 【橘子大模型】使用langsmith来监控你的大模型
我们在上一篇文章中提到了我们可以使用langsmith来监控我们自己的模型。那么我们本文就来操作一把。
2025-03-31 19:06:21
249
原创 【橘子大模型】使用LangChain和LLM交互
上文中我们完成了ollama的安装和启动,并且测试了几个模型的效果,不管好坏来说。总算是跑起来了,接下来我们要使用langchian来进行一些开发。在开发之前我们需要做一个环境的准备,这个环境指的是python环境。
2025-03-31 10:42:56
803
原创 【橘子大模型】ollama启动
我们来搭建一个基于langchain的本地LLM,并且实现一个rag的检索增强器。原谅我就是这么单刀直入,没有废话。至于那些工具我就不多介绍了,网上说了很多了,我们直接进入操作。
2025-03-30 23:48:40
661
原创 【橘子网络】关于网络分层以及协议的全局讲解
主机的定义比较广泛,所有的接收流量或者发送流量的设备都可以被称之为主机。可以是电脑,手机,服务器。在当今云服务大行其道的局面下,各种云设备也可以被称之为主机。基于这个概念定义,我们可以进一步把主机的概念扩大,只要接送流量,你的家用电器,你的智能电视,你的智能手表,你的冰箱,你的智能电灯,都可以在这个定义之下被称之为主机。这些设备都在接收和发送网络流量,基于此我们可以看到这个概念的全面。并且很重要的一点就是你的网络流量的发送和接收,在如何于互联网通信的时候都遵循着相同的规则。这个规则我们会在后面详细解释。客户
2025-03-23 23:17:40
732
原创 【橘子websocket】如何基于vertx来构建websocket聊天室(上)
websocket的概念我们就不说了,网上已经说烂了,具体更加权威的内容可以去看。我们这里只来操作一下如何在实际开发中构建websocket服务。如果是springboot技术栈的话,其实很简单,就是几个注解的问题。不得不说springboot真的很方便。可以参考springboot的官方文档。我们这里不用springboot,我们来使用vertx来构建。至于什么是vertx可以参考vertx的官网。简单来说就是他是基于netty构建的一个响应式的包,并且在这个基础上开发出了一套相对完整的生态。
2025-03-18 10:39:11
448
原创 【橘子golang】从golang来谈闭包
捕获变量:闭包捕获了其创建时的变量(如 count),即使这些变量在其原始作用域中已经不可访问,就像我们初始化count的函数addCounter已经结束了,但是他还是被闭包捕获到了。独立状态:每个闭包实例都有自己的独立状态。add1 和 add2 是两个独立的闭包,它们各自维护自己的 count 变量。延迟求值:闭包在被调用时才计算其捕获的变量的值,而不是在创建时。函数式编程的特点大多如此。我们在java中使用lambda作为参数的时候也是如此。
2025-03-06 17:12:55
650
原创 【橘子python】在vscode中配置py3
这个故事来源于一个奸商,我在某购物平台买了一个pyCharm的那啥码,承诺永不过期,我刚用了不到两个月就拉了。然后再去找商家,发现已经注销跑路了。属实是可恶。那没办法了,那就用vscode吧,该说不说vscode是真神啊。万能就完事了。现在我写go也用vscode,因为goland也废了。
2025-03-05 13:40:40
552
原创 【橘子大模型】使用text2vec向量化文本(上)
这是对于学习ai的一次尝试,使用来把数据向量化之后接入向量数据库(我用的是ElasticSearch)。进而形成向量库实现向量搜索。从来来使用rag功能。当然本文侧重于如何使用该库进行向量化。
2025-02-28 14:09:28
806
原创 【橘子ES】Metric aggregations指标聚合
上文我们说到了聚合的三类聚合,其中包括指标聚合。Metric aggregations:指标聚合是根据字段值计算量度(如总和或平均值)的量度聚合。此系列中的聚合基于以某种方式从正在聚合的文档中提取的值来计算度量。这些值通常从文档的字段中提取(使用字段数据),但也可以使用脚本生成。数值指标聚合是一种特殊类型的指标聚合,用于输出数值。一些聚合输出单个数值指标(例如 avg),称为单值数值指标聚合,其他聚合生成多个指标(例如统计数据),称为多值数值指标聚合。
2025-02-11 13:38:25
947
原创 【橘子ES】Aggregations 聚合准备
基本上我们可以看出来,他是一种聚合分析,类似于做报表那样的一个功能。既然是报表分析的话那就离不开一些常见的概念,什么平均值,最大值,什么按照什么分组之后统计每个组里面的数据量这样的功能。在es中支持了三种聚合来实现这些功能。聚合区别于检索,检索是使用一系列条件把文档从es中搜索回来。但是聚合则是在搜索回来的文档的基础上进一步进行处理。简单来说聚合就是将数据汇总为指标、统计数据或其他分析。此时我们就构建好我们的数据了,后面我们再根据需要做修改等等操作。好了,此时我们就准备好了,下面我们来进行操作。
2025-02-11 12:33:40
394
原创 【橘子Kibana】Kibana的分析能力Analytics之Canvas画布
实际上这个其实不常用,因为当我们已经完成了视图的学习之后,这个画布的操作其实可以在视图那里完成,这个功能有点冗余。而且它需要你有es sql的基础知识。但是我们还是来看一下。首先我们来到kibana的界面来查看画布模块。我们看到在我们内置的三类数据之后,kibana为我们创建了三个默认的画布。我们来查看电商数据的那个画布,你能看到他其实还是一个统计展示的功能,我们完全可以以图表的方式使用视图来展示,只不过这个可能更直观,给那些不懂统计图的人看更有吸引力。
2025-01-26 20:38:58
368
原创 【橘子Kibana】Kibana的分析能力Analytics之Map地图
Maps:这里指的就是地图,你可以通过导入es对应的地理信息来支持geo方面的业务,而且基于这些数据我们可以在kibana上绘制关于地图,地理等信息的图。那你可能会问,有啥用。1、分析热点,我们可以用于分析哪些位置的数据分布比较集中进而采取对应的行为。2、事后恢复,当你的哪个位置的机房,服务器被摧毁(雷电),此时事后你可以分析这个区域的人群分布,进而针对性用户去做补偿。3、地图业务,你可以做一些地图业务,比如送外卖等等吧。
2025-01-25 21:02:58
422
原创 【橘子Kibana】Kibana的分析能力Analytics可视化分析
我不多逼逼,就说一句,可视化就是图表,kibana可以帮你绘制不同的图表,折线图,饼状图,柱状图等等来帮助你分析你的数据,这些图表非常的漂亮。我们可以来看看。之所以支持多种图表就是因为不同类型的数据可能不同的展示方式会更加直观。我们的可视化分析都是建立在kibana的面板功能(dashboards)上的,所以我们可以先进去面板。我们可以在这里创建各种各样的面板来展示我们的数据,下面我们先来创建第一个面板。
2025-01-24 13:47:53
816
原创 【橘子Kibana】Kibana的分析能力Analytics简易分析
我们经常会用es来实现一些关于检索,关于分析的业务。但是es本身并没有UI,我们只能通过调用api来完成一些能力。而kibana就是他的一个外置UI,你完全可以这么理解。当我们进入kibana的主页的时候你可以看到这样的布局。他展示了四大模块,分别是:1、Enterprise Search 企业级搜索,这个不难理解,他本身就是和es密切配合的,当然可以做搜索。2、Observability 可观测性,kibana可以用来监控应用的性能指标等一系列能力,因为他可以和APM整合使用。
2025-01-23 14:05:41
1173
原创 【橘子ES】使用docker搭建ELK环境
我们在搭建ELK环境的时候,一般有三种选择。1、本地安装,你可以到官网把安装包下载下来然后解压,修改配置文件,然后启动,这样比较麻烦,比较考验操作。那有的玩家就要问了,这种操作太吃手感了,有没有比较容易上手的玩法。有的有的,这样的玩法还有两种。2、容器启动,这就很简单了,拉取镜像,启动容器,都是一键操作的。3、Elastic cloud,es的官网提供了云服务,你可以注册账号上去直接用,但是免费时间只有14天,后面就得花钱了。当然你可以再找个新账号。这种是最方便的,但是有时间限制。
2025-01-23 10:52:56
1940
原创 【橘子微服务】spring cloud function的编程模型
虽然前面的示例展示了如何以编程方式在 FunctionCatalog 中查找函数,但在 Spring Cloud Function 被另一个框架(例如 Spring Cloud Stream)用作编程模型的典型集成情况下,您可以通过 spring.cloud.function.definition 属性声明要使用的函数,后面我们整合SCS会看到。了解在 FunctionCatalog 中发现函数时,了解一些默认行为非常重要。
2024-12-20 17:02:16
1031
翻译 【橘子微服务】是时候丢掉2PC模式了
2PC 有很多变体,但基本协议的工作原理如下:背景假设:事务所需的工作已经被划分到存储该事务访问的数据的所有分片/分区中。我们将在每个分片上执行的工作称为由该分片的 “worker” 执行。每个 worker 都能够彼此独立地开始处理其对给定事务的职责。2PC 协议在事务处理结束时开始,此时事务已准备好“提交”。它由单个协调器机器(可能是该事务中涉及的 worker 之一)启动(译者注:他的意思是这个协调者可以是独立于各个服务之外的,也可以是其中的某个服务)。2PC 协议的基本流程如下图所示。
2024-12-17 15:07:27
40
翻译 【橘子微服务】分布式事务saga模式初探
一个耗时较长的长事务会在相对较长的时间内占用数据库资源,这种行为明显的阻碍了其他客户端短事务的执行(译者:因为数据库的资源锁之类的机制)。为了缓解这些问题, 我们提出一个叫做saga的概念。它是由多个有序的事务组成、并且与其他事务可以交错的一个长时间事务(LLT)。(译者:把一个大事务拆分成为多个独立的小事务,每个小事务拥有提交和回滚的能力,并且这个大事务的这些小事务执行期间数据库还能执行其他的大事务的小事务或者其他事务,提高了并发执行能力以及划分了粒度。
2024-12-17 11:06:13
133
原创 【橘子容器】如何构建一个docker镜像
至此我们就介绍了常用的几种构建模式,我们看到其实各有利弊吧。看你喜欢哪一种了,只是后面两种不需要你掌握太多docker知识,更加专注于业务开发。
2024-12-13 18:50:00
991
原创 【橘子ES】熔断器Circuit breaker
而父熔断器没有被放到这个map中,他是被保存在了这个变量中,之所以加volatile是因为可能多个并发用api在修改他的动态配置。好了,我们继续往下走。我们现在得到一点就是。
2024-12-11 11:46:36
1469
原创 【橘子ES】分词器的概念
我们已经知道了分词器的三个组成,其实es中是支持你自己组合这三个部分,进而形成一个自定义的分词器。我们来编一个需求,我们从源端过来的数据,可能长这样,I' am sohappy!我很开心,并且你给了我一个礼物,所以你能说一句去你的java吗。这就是本句话的意思,1、我们看到有很多html标签,我们要去掉。(char_filter用html_strip)2、但是html标签我们要保留p标签,因为后面要分段落。
2024-12-09 15:57:31
1040
原创 Switch表达式的发展(一)
我们前面对于模式匹配做了一些描述。现有 switch 语句的几个不规则性 (长期以来一直让用户感到恼火) 成为障碍。其中包括 switch 块的默认控制流行为 (落入) 、switch 块的默认范围 (块被视为一个单一范围) 以及该 switch 仅作为语句工作,即使将多路条件表示为表达式通常更自然。听起来概念还是很晦涩的。Java 的 switch 语句的当前设计紧跟 C 和 C++ 等语言,并默认支持直通语义。
2024-12-03 00:48:15
896
原创 Loom篇之java虚拟线程那些事儿
将虚拟线程引入 Java 平台。虚拟线程是轻量级线程,可显著减少编写、维护和观察高吞吐量并发应用程序的工作量。这是一个预览版 API。虚拟线程现在始终支持线程局部变量ThreadLocal,用户以前如何使用ThreadLocal,,那么在虚拟线程中依然保持原来的使用ThreadLocal。现在不再可能像在预览版中那样创建不能具有线程局部变量的虚拟线程。保证对线程局部变量的支持可确保更多现有库可以原封不动地与虚拟线程一起使用,并有助于将面向任务的代码迁移到使用虚拟线程。
2024-11-24 21:32:33
926
1
翻译 Loom开篇:Java 虚拟机的协程和延续
Project Loom 的使命是更轻松地编写、调试、分析和维护满足当今要求的并发应用程序。线程从 Java 的第一天开始就是一种自然而方便的并发结构(抛开线程之间通信的单独问题),因为它们当前作为操作系统内核线程的实现不足以满足现代需求,所以它正在被一些你不太容易理解的抽象模型所取代,并且浪费了在云中特别有价值的计算资源。(译者:指的是现有的线程模型是和操作系统线程一对一绑定的,会阻塞运行,你需要自己去构建响应式的程序来获取高的性能,比如webflux他就很难理解。
2024-11-15 18:55:33
1003
原创 instanceof 的模式匹配(二)
在经过了JEP305(jdk14)和JEP375(jdk15)的两轮预览之后,模式匹配终于迎来了他的交付日期,在2022年发布的JDK16中,伴随着JEP 394的发布,预览结束了,我们来看一下这个特性的结束点到底说了什么。在这次预览之中,我们看到几个例子,教你如何合理的使用模式匹配。
2024-11-15 12:38:09
831
原创 instanceof 的模式匹配(一)
以上这种惯用语的代码基本每个人都写过。基于以上的问题,java在jdk14中提出了模式匹配的语法机制来解决这个问题。该语法在JEP305中发布,作为第一次预览(preview)。
2024-11-11 14:49:30
993
原创 【橘子ES】如何定义我们自己的管道类型
我们最后编了一个需求,需求中有一个内容是去除一个tags数组中的一个词汇,我们用了script processor的操作来移除的。但是我们这次换个操作,那种用的还是ES自己内置的管道,感觉没逼格,我们作为开发,要弄就弄自己的管道。于是这篇文章,我就会教你如何自己制作一个管道。我们这次来制作一个管道名字就叫levi_filter_word。他的功能也简单,就是实现对于我们指定的字段,然后移除其中的值,直接替换为空。你可能已经有个轮廓了,如果按照官方那些例子应该最后是这么个玩意。
2024-09-03 14:48:03
1217
原创 【橘子ES】实战操作之管道类型Ingest pipelines的基本使用
我们先来看官方文档的一些信息。本文使用的ES版本为7.17.7。官方文档的位置位于Ingest pipelines官方文档# 英文:# 中文:采集管道可让您在索引之前对数据执行常见的转换。例如,您可以使用管道删除字段、从文本中提取值以及丰富数据。管道由一系列可配置的任务(称为处理器)组成。每个处理器按顺序运行,对传入的文档进行特定更改。处理器运行后,Elasticsearch 会将转换后的文档添加到您的数据流或索引中。
2024-09-03 12:19:59
961
原创 关于springboot的Rest请求映射处理的源码分析(二)
前面我们知道了他怎么处理表单映射,这里我们来研究一下,他是如何处理具体请求的。也就是说我有那么多/user你是怎么定位到我在哪个cotroller,并且你是怎么定位到我具体是哪个接口。这里我们就来逐步定位一下这个问题。
2024-08-30 18:22:28
1112
原创 关于springboot的Rest请求映射处理的源码分析(一)
我们看到在put和delete请求的时候,出现了我们预想之外的结果。这个不对,难道是我们有没考虑到的问题吗。
2024-08-30 17:10:29
1147
原创 关于springboot对接chatglm3-6b大模型的尝试
我们这只是其中一种模型的对接,其实别的也都差不多,都是基于流可以用http来操作,你可以在你的项目中建立一个AI中台,来对接各种模型,给别的服务提供调用。只是需要看明白每种模型的参数。
2024-08-29 14:09:55
965
原创 HikariCP源码分析之源码环境搭建
为了方便记录以及查看一些历史的提交信息,我先在github上fork了这个源码库。他的原始源码库位置为在fork到我的源码库之后,我就可以用git clone拉取下来,然后在我本地打开,做一些修改和笔记。然后提交到我自己的源码库上面了。这样比起你直接下载源码zip包的好处就是,你可以看到每一行代码的提交信息,得以知道他们提交的时候修改了什么以及提交的注释等等。
2024-08-26 13:51:57
470
原创 关于springboot对接通义千问大模型的尝试
今天正在路上刷手机,突然看到群里有人发了一个链接,内容是Spring Cloud Alibaba AI 的使用,,于是就想着玩一玩试试,难度不大,就是有些文档的坑,这里做一个记录,后续会继续更新这个系列的,毕竟AI时代,我们springer也得搭一下顺风车。
2024-08-26 11:20:32
1488
2
原创 关于springboot的异常处理以及源码分析(二)
我们上一篇文章通过自己去配置4xx 5xx的页面来实现了自定义异常页面的跳转。但是我们看到文档中还提供了一些其他的自定义异常处理的逻辑,我们这里就来一一解析。定义一个异常// 通过在异常上标注注解,来定义异常的状态码和返回信息// 省略构造定义接口,抛出这个异常信息// 测试 StatusException,抛出我们自己的异常你去看看上面那几个异常处理器,他们都有一个特点就是实现了HandlerExceptionResolver接口,其实我们也可以自己写一个,把他放到容器里面就完了。
2024-08-25 21:04:21
835
3
原创 关于springboot的异常处理以及源码分析(一)
首先我们先来看springboot官方对于异常处理的定义。我们看到这里描述的是,当我们发生错误的时候,他默认提供了一个/error的映射(其实就是一个controller方法),他会给你转到这个映射上面,然后返回不同的视图。其中对于机器客户端请求(比如postman这种)就会返回一个json的响应,自然是包含了你的异常信息的。如果对于浏览器客户端的请求,就会返回一个空白的异常页面,在浏览器端渲染出来。而且你也可以替换默认行为,自己实现ErrorController。
2024-08-22 20:18:05
937
2
原创 【橘子场景问题】你的S3文件存储需要加密吗
最近遇到一个需求,需要给我们的minio集群上传的文件进行加密,领导给了我一周调研+开发,哥一想这也要五天?看来又能有三天时间摸鱼了,于是上去就是一顿百度,找到了一篇文章,上去就是一顿"借鉴"。
2024-04-16 10:32:53
807
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人