自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SunnyRivers

别以为自己到了极限,那可能只是别人的起点!

  • 博客(535)
  • 资源 (9)
  • 收藏
  • 关注

原创 大白话实战Seata

每个微服务连的都是自己的数据库,如果我们做一个购买业务,我要做的就是创建一个订单,并且把这个商品的库存扣了,然后去账户扣减余额,所以这个购买业务会调用三个微服务。上面是一段jdbc完成事务的代码,第一步是从数据源里获取连接,这个连接就是连向了某个数据库,第二步给这个连接设置非自动提交,也就是进入手动提交模式,接下来写我们的业务逻辑,写完后调用提交方法,如果业务执行期间出现异常,可以统一回滚,通过这段代码发现,我们以前的事务是在一条连接里面做的所有事情,它才可以一起提交和一起回滚,这个是我们本地事务的根源。

2025-02-22 16:36:06 735

原创 大白话实战Gateway

虽然SpringCloud里面内置了非常多的断言规则,但是它也不能囊括我们业务的所有规则,这个时候我们可以自己写一个断言工厂,通过配置的方式使用起来。假设我们有个需求,只有vip的用户才能转到必应去搜索,那怎么判断vip呢,我希望它自己从请求参数中拿到user并且user=aaa,它才是vip。q=haha?} };} };import org。

2025-02-20 23:29:55 1508

原创 大白话实战Sentinel

Sentinel是SpringCloudAlibaba提供的用来做服务保护的框架,而服务保护的常见手段就是限流和熔断降级。

2025-02-18 21:05:42 1096

原创 大白话实战OpenFeign

避免这种问题的最简单的处理方式就是加入限时等待,比如只等待商品服务10s,如果没有超过,自然就返回正确结果,否则就中断调用。可以看出默认是从不进行重试。响应拦截器用的不多,我们就用请求拦截器为例进行测试,我们希望订单服务给商品服务发送请求之前,用请求拦截器给这次请求里面放一个业务扩展字段,比如X-Token,在业务上代表一个一次性令牌,后边的值可以是一个uuid,把这组k-v放到本次请求的请求头上,最后商品服务收到这个请求,就可以从请求头上拿到X-Token的数据,接下来我们来实现这个需求。

2025-02-15 21:48:06 1058

原创 大白话实战Nacos(保姆级教程)

上一篇博客我们创建好了微服务项目,本篇博客来体验一下Nacos作为注册中心和配置中心的功能。

2025-02-10 22:01:46 1873

原创 大白话演绎SpringCloud架构进化过程

同理,数据库服务器也可以复制多台副本。以前的架构我们在每一台服务器上部署了商城的完整应用,这样每一处代码的更新都得需要把应用重新打包部署,现在可以把整个应用,按照功能模块进行拆分,把一个大的应用,拆分成一个个小应用,比如商品、订单、支付等等,拆分出的每一个小应用,我们把它称为微服务,每个微服务都可以独立部署,不仅应用可以拆分,数据库也可以,以前商城所有的数据都在一个库里面,并发高的情况,所有增删改查都要经过这个库,可能同样扛不住,进一步拆分,把商品的数据放到商品数据库、订单数据放到订单数据库里,依次类推。

2025-02-07 22:12:08 1253

原创 Spark操作Hive表幂等性探索

旁边的实习生一边敲着键盘一边很不开心的说:做数据开发真麻烦,数据bug排查太繁琐了,我今天数据跑的有问题,等我处理完问题重新跑了代码,发现报表的数据很多重复,准备全部删了重新跑。我:你的数据操作具备幂等性吗?实习生:啥事幂等性?数仓中的表还要考虑幂等性吗?

2023-08-11 15:49:32 1306

原创 SparkSQL性能优化终极篇

随着Spark版本的不断迭代,SparkSQL底层使用了各种优化技术,无论方便性、性能都已经超越了RDD。因此SparkSQL已经是最常用的Spark开发方式,因此,这里把常用的SparkSQL性能优化技术进行汇总。

2023-06-12 13:46:10 2423 2

原创 Spark数据倾斜解决方案六:随机前缀和扩容Join(包含完整案例代码)

该想法的原因:Shuffle的时候把Key的数据可以分到不同的Task里。但是,现在的倾斜的Key非常多,成千上万,所以如果说采样找出倾斜的Key的话,并不是一个非常好的想法。需要考虑当前程序能够使用的Core的数目,扩容的问题是来解决从程序运行不了的问题,从无法运行到能运行的结果。该方案更多的是缓解数据倾斜,而不是彻底避免数据倾斜,而且需要对整个RDD进行扩容,对内存资源要求很高。同时对另外一个正常的RDD进行扩容,将每条数据都扩容成n条数据,扩容出来的每条数据都依次打上一个0~n的前缀。

2023-06-10 13:12:36 1519

原创 Spark数据倾斜解决方案五:对倾斜key采样后单独Join(包含完整案例代码)

对倾斜的Keys采样进行单独的Join操作步骤有点复杂:首先对RDD1进行采样,例如RDD1进行Sample抽样(15%)可以计算出一个结果,其是一个RDD,采样之后进行Map操作,通过reduceBykey操作计数,然后对Key和Value进行置换,通过SortByKey进行排序,再进行Map置换操作,从而找出哪一个Key值倾斜比较严重,对其进行过滤,提取到RDD11中,剩下的提取到RDD12中。避免了占用过多内存。如果倾斜的Key特别多,如50多个倾斜的Key,我们可以一个一个地对Key进行过滤处理。

2023-06-10 12:32:11 1234

原创 带你彻底理解Spark的分区

我:什么是RDD?面试者:RDD是被分区的,由一系列分区组成…我:你怎么理解分区?面试者:…我:Spark中有哪些可以实现分区的方法?分别使用的场景是什么?面试者…我:Spark默认分区数是多少?如何保证一个分区对应一个文件?面试者…Spark分区是将大型数据集划分为较小的数据块,每个数据块称为分区,分区是一个逻辑数据块,对应相应的物理块Block。每个分区都可以在集群中的不同节点上并行处理,这样可以提高Spark的并行性和性能。

2023-05-05 10:53:06 1353

原创 通俗易懂理解RDD看这一篇就够了

今天面试一个大数据开发工程师,spark相关的知识感觉都能懂一点,但是连基础的RDD稍微一问深一点就不知所云,这种情况基本上是无法通过面试的,今天想用通俗的话把RDD说明白。弹性分布式数据集)是Spark中最基本的数据抽象,代表不可变、可分区、可并行计算的集合。RDD允许将计算结构缓存到内存中,这样当后续计算需要这些数据时,就能快速从内存中加载它们,这样不但提高数据的复用性,还提高了数据的计算效率。RDD主要特点包括并行计算自动容错数据本地性调用等。

2023-05-04 18:26:37 3017

原创 repartition和partitionBy的区别

旁边的实习生一脸困惑:我把一个dataset的数据往某个文件夹或hive表中写的时候可以用partitionBy对数据进行分区,可是repartition顾名思义也好像与分区有关,这两个究竟有啥区别?我该如何使用?

2023-05-04 15:26:38 1023

原创 Spark需要的资源调优(Yarn Cluster模式)

Spark应用程序是粗粒度的,也就是说在提交的时候就得规划好需要多少资源,设定了不合适的资源也会影响整体性能。yarn.nodemanager.resource.memory-mb 每个nodemanager分配的内存,也就是该节点上YARN可使用的物理内存总量。官方。

2023-04-01 23:43:46 699

原创 Dataset关联性能优化

如果一大一小两个Dataset进行join,每个woker的内存足够存放小的Dataset,此时最好的处理方式就是将小的Dataset进行广播,有关广播的知识可以参考这篇文章。

2023-03-31 23:45:01 438

原创 广播变量对Spark性能产生的影响

先说一下为什么Spark会引入广播变量?我们在driver端定义了一个变量,如果要在executor端使用,spark会为把这个变量以task的形式给每个executor发送,也就是有多少个task,每个executor中就会有多少个变量,如果该变量是个集合,而且比较大,甚至会导致内存溢出。因此,引入了广播变量来解决这种问题。下面会用实际案例进行详细描述。

2023-03-31 17:25:50 478

原创 collect大RDD性能优化

众所周知,collect算子会把所有数据拉到driver端,如果数据量太大,直接会造成内存溢出。但是该算子在很多实际场景中会经常用到,这个时候就需要采取一定地方优化措施了。

2023-03-31 15:14:18 656 2

原创 Scala中如何优雅的处理Null

前言如果在scala代码还在使用ids!=null,可能会被有的人嘲笑,都什么年代了,竟然还有这样的写法,NullPointerException见少了吧?不过,据统计:Spark 源代码使用了 821 次 Option 关键字,但它也直接在像if (ids != null)。Spark 采用混合方式,大部分情况下使用 Option,但个别时候出于性能(这里主要是为了给使用这返回提示信息)原因才使用了null。一个很好的习惯是当有方法返回值可能为null的时候,使用Option来代替。什么是Op

2021-08-28 20:44:08 4100 1

原创 Python 连续数据离散化最通俗的理解与操作

前言一些数据挖掘算法,特别是某些分类算法,如ID3算法、Apriori算法等,要求数据是分类属性形式。这样,常常需要将连续属性变换成分类属性,即连续属性离散化。离散化是干啥连续属性离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这些分类值。常用的离散化方法常用的离散化方法有等宽法、等频法和(一维)聚类。(1)等宽法将属性的值域分成具有相同宽

2021-01-05 18:26:40 11357 1

原创 python 下采样和上采样

前言由于工作数据量较大,训练模型很少直接单机python,一般都采用SparkML,最近把SparkML的工作使用python简单的写了一下,先写个上下采样,最终目的是为了让正负样本达到均衡(有人问:正负样本必须是1:1吗?1:1效果就一定最好吗?答:不一定)数据准备共20条数据,正样本1共有5条,负样本0共有15条。基础知识准备如何获取dataframe的行数pandas.DataFrame.shape 返回数据帧的形状df.shape[0] 返回行数de.shape[1] 返

2020-10-28 16:23:27 10115 2

原创 Hadoop面向行和面向列格式详解

前言说到HDFS上面存储数据的格式,一般会想到面向行存储的Avro、SequenceFile(现在较少用);面向列存储的Parquet、ORC等,那么在存储的时候如何选择呢?面向行存储格式(以Avro和SequenceFile为例)Avro基本概念Avro是一个独立于编程语言的数据序列化系统。引入的原因:解决Writable类型缺乏语言的可移植性。Avro数据文件主要是面向跨语言使...

2020-01-17 11:10:54 1523

原创 Hive压缩存储(以Parquet为例)

前言前面说了,HDFS上的数据在生产环境中一定是以压缩格式存储的,那么在Hive中如何使勇Parquet格式存储数据呢?测试数据在本地服务器上面vim test.txt1,zs2,ls3,ww4,zl由于我们一般接到的数据都是gzip压缩的文件,这里就将文件压缩为gzipgzip -c test.txt > .test.gz错误的方式创建parquet的hive表...

2020-01-09 10:22:46 2214 2

原创 HDFS文件的压缩

前言新搭建的集群,需要进行各种测试,于是让一个同事导入一些测试数据,大约1.4T左右。我进行了一个简单的hive测试//故意增加shuffleSELECT DISTINCT(COUNT id) FROM test_table;谁知道…就这么一个简单的SQL,半个小时过去后,仍然没有出结果追查原因原来同事从ftp拉取过来的数据是gzip格式的,他直接如到Hive表中…,而gzip格式的...

2020-01-04 18:06:11 8252 1

原创 Pearson相关系数和Spearman相关系数的区别

前言相关系数是用以反映变量之间的相关关系程度的统计指标。其取值范围是[-1,1],当取值为0时表示不相关,取值为[-1,0)表示负相关,取值为(0,-1],表示负相关。目前常用的两种相关性系数为皮尔森相关系数(Pearson)和斯皮尔曼等级相关系数(Spearman)简介皮尔森相关系数评估两个连续变量之间的线性关系。其中:-1 ≤ p ≤ 1p接近0代表无相关性p接近1或-1......

2019-08-29 14:31:55 71836 10

原创 MapReduce过程详解

MapReduce是一种云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式并行编程模式,主要用于大规模并行程序并行问题。MapReduce的主要思想:自动将一个大的计算(程序)拆分成Map(映射)和Reduce(化简)的方式。流程图如下:数据被分割后通过Map函数将数据映射成不同的区块,分配给计算集群进行处理,以达到分布运算的效果,再通过Reduce函数将结果进行汇...

2018-05-16 11:54:47 3401

原创 轻量级沙箱运行时工具-Anthropic Sandbox Runtime (srt)

一个轻量级的沙箱工具,可在操作系统层面为任意进程强制实施文件系统和网络访问限制,无需依赖容器。srt 利用操作系统的原生沙箱机制(在 macOS 上使用 sandbox-exec,在 Linux 上使用 bubblewrap),并结合基于代理的网络过滤技术。它可以用于对智能体(agents)、本地 MCP 服务器、bash 命令以及任意进程的行为进行沙箱隔离。Beta 研究预览版。

2026-01-08 14:52:20 546

原创 LangChain核心组件之Structured output

"""从会议记录中提取的待办事项"""task: str = Field(description="具体任务")assignee: str = Field(description="负责人")priority: Literal["low", "medium", "high"] = Field(description="优先级")tools=[],tool_message_content="待办事项已捕获并添加至会议纪要!

2026-01-07 16:46:53 464

原创 LangChain核心组件之Streaming

若要在工具执行过程中流式输出自定义信息,可以使用 get_stream_writer。"""获取指定城市的天气。"""# 可流式输出任意数据writer(f"正在查询城市from langchain . agents import create_agent from langgraph . config import get_stream_writer def get_weather(city : str) - > str : """获取指定城市的天气。

2026-01-07 13:01:11 526

原创 LangChain核心组件之Short-term memory

记忆是一种用于记录先前交互信息的系统。对于 AI Agent(智能体)而言,记忆至关重要——它使智能体能够记住过往对话、从用户反馈中学习,并适应用户的偏好。随着智能体处理的任务越来越复杂、交互轮次越来越多,这种能力对提升效率和用户体验变得不可或缺。短期记忆允许你的应用在单个线程(thread)或一次会话(conversation)中记住之前的交互内容。注:一个 线程(thread) 用于组织一次会话中的多次交互,类似于电子邮件中将多条消息归为同一对话的方式。最常见的短期记忆形式就是对话历史。

2026-01-06 17:47:27 512

原创 LangChain核心组件之Tools

创建工具最简单的方式是使用 @tool 装饰器。@tool"""在客户数据库中搜索匹配指定查询条件的记录。Args:query: 要搜索的关键词limit: 返回结果的最大数量"""return f"找到from langchain . tools import tool @tool def search_database(query : str , limit : int = 10) - > str : """在客户数据库中搜索匹配指定查询条件的记录。

2026-01-06 16:35:06 961

原创 LangChain核心组件之Messages

在 LangChain 中,消息(Messages) 是模型上下文的基本单元。它们代表了模型的输入与输出,既包含实际内容,也携带元数据,用于在与大语言模型(LLM)交互时完整表达对话状态。LangChain 提供了一套标准化的消息类型,可在所有模型提供商之间通用,确保无论调用哪个模型,行为都保持一致。

2026-01-06 15:11:47 677

原创 LangChain核心组件之Models

多数聊天模型集成支持配置 API 请求的 Base URL,便于使用兼容 OpenAI API 的模型服务或通过代理服务器调用。许多厂商提供 OpenAI 兼容 API(如vLLM使用 init_chat_model时只需指定base_url若直接使用聊天模型类实例化,参数名可能因厂商而异。请查阅对应参考文档。代理支持因集成而异,请查阅具体厂商的参考文档。

2026-01-06 13:32:20 972

原创 LangChain核心组件之Agents

将工具列表传递给智能体即可。工具可以是普通的 Python 函数,也可以是 协程(coroutines)。你可以使用。

2026-01-05 17:05:46 1060

原创 LangChain的哲学理念

在设计 LangGraph 时,我们汲取了 LangChain 的经验教训,内置了流式响应(Streaming)、持久化执行(Durable Execution)、短期记忆(Short-term Memory)、人在回路(Human-in-the-loop)等关键能力。原始 LangChain 聚焦于 LLM 抽象和高层接口,但缺乏一个底层编排层,让开发者精确控制 Agent 的执行流程。LangChain 的使命是:成为使用大语言模型(LLM)构建应用最简单、最灵活且可直接投入生产的起点。

2026-01-05 14:45:47 858

原创 10分钟入门LangChain

恭喜!理解上下文并记住对话智能地使用多个工具以一致的格式提供结构化响应通过上下文处理用户特定信息在交互之间保持对话状态的 AI 智能体!

2026-01-05 13:30:18 1048

原创 MCP+Agent代码实战

我们上一篇介绍了MCP客户端各种传输方式,本篇将MCP和Agent融合起来,写一个基础的代码示例。

2025-12-20 18:44:05 348

原创 fastmcp客户端传输方式代码实战

FastMCP Client 通过处理底层连接机制的传输对象与 MCP 服务器通信。虽然客户端可以根据您传递给它的内容自动选择传输方式,但显式实例化传输可以让您完全控制配置——环境变量、身份验证、会话管理等等。将传输视为您的客户端代码和 MCP 服务器之间的可配置适配器。每种传输类型处理不同的通信模式:带管道的子进程、HTTP 连接或直接内存调用。本博客为了完整性,把官网的很多内容都写进来了,如果我们仅仅是想要直接运行几种不同传输方式的代码,请直接参考本文后记的部分。

2025-12-20 14:32:22 968

原创 HTTP状态码大全

对于不是经常开发前后端的人,每次遇到一些http状态码,除了几个常见的,都得查找相关资料,看看该状态码的含义,以及出现的原因,这里会持续完善不同状态码的相关问题。

2025-12-15 13:58:54 776

原创 为什么 MCP 弃用 SSE,转而采用Streamable HTTP?

SSE 是“广播喇叭”,只能听;Streamable HTTP 是“智能电话”,能说能听能暂停能重拨——所以 MCP 毫不犹豫地升级了。如果你正在开发 MCP 服务或客户端,现在就该拥抱 Streamable HTTP,但别忘了给老用户留个“后门”(SSE 兼容),平稳过渡。需要我帮你写一个简单的 Streamable HTTP 示例代码吗?或者对比两种协议的抓包差异?欢迎继续问!

2025-12-10 13:13:54 738

原创 Python打包指南:编写你的pyproject.toml

我们经常会需要把自己写的sdk给公司其他同事统一使用,那么这个流程是怎么样的呢?本篇博客就一次性说清楚。pyproject.toml 是一个由打包工具(如 setuptools、Hatch、Flit 等)以及其它开发工具(如 linters、类型检查器等)使用的配置文件。[build-system] 表:强烈建议使用。它用于声明你使用的构建后端(build backend)以及构建项目所需的依赖。[project] 表:这是大多数构建后端用来指定项目基本元数据(如依赖项、作者信息等)的标准格式。

2025-12-01 12:58:54 728

CDH-5.13.1安装文档

亲测CDH-5.13.1,希望能够帮助想要使用CDH的同学,文档中有不懂的可以留言

2018-09-03

搜题功能,图片文字识别技术

模仿作业帮、猿题库等含有搜题功能的app,自定义相机,图片识别技术的实现,超级简单

2018-01-03

Dialog的正确使用方式

学会如何正确使用Dialog,以及更规范的Dialog模板,和创建的方式。

2017-12-27

java最经典的笔记

这是我见过java总结的很屌的培训机构的老师,感谢阳哥笔记,让人对java基础的知识有了更加深刻的理解

2018-02-08

高等数学(同济大学出版)上下册(高清,带目录)

学习人工智能、大数据高数是必备的专业技能,同济大学出版的高等数学一直是很多高校指定的专用教材

2018-04-18

Spark快速大数据分析和深入解析Spark内核架构设计与实现原理

有这两本书,的确可以把spark技术研究透彻,真心感谢这两位作者

2018-03-28

SparkMLlib机器学习(黄美玲和王晓华版两本)

SparkMLlib机器学习黄美玲版和SparkMLlib机器学习实战王晓华版,都带目录,很方便阅读,希望能帮助到大家

2018-10-17

空空如也

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

TA关注的人

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