- 博客(259)
- 资源 (12)
- 收藏
- 关注
原创 Saas、Paas、Faas、Baas的概念学习与对比
PaaS:提供一个平台供开发者使用,用于开发、测试和部署应用程序。BaaS:提供后端服务,使开发者能够快速集成应用所需的后端功能。FaaS:作为一种无服务器的计算方式,提供函数作为服务。SaaS:最高层次,直接提供软件作为服务。
2025-04-23 15:21:24
847
原创 大语言模型减少幻觉的常见方案
大语言模型的幻觉(Hallucination)是指模型在生成文本时,输出与输入无关、不符合事实、逻辑错误或完全虚构的内容。这种现象主要源于模型基于概率生成文本的本质,其目标是生成语法合理、上下文连贯的文本,而非严格追求事实准确性。
2025-04-18 20:41:09
788
原创 软件开发中的YAGNI原则
YAGNI是一个原则,鼓励开发人员在功能或特性明确被需要之前避免将其添加到系统中。该原则基于这样的前提:添加不必要的功能可能导致复杂性增加、开发时间延长,以及可能产生更多的bug。相反,开发人员应该专注于提供符合当前需求的最简单解决方案。YAGNI原则在软件开发的各个方面都具有价值。它提倡简单性,减少不必要的复杂性,并帮助团队专注于交付基本功能。通过应用YAGNI,开发人员可以提升生产力、可维护性及整体项目成功。然而,重要的是要保持平衡,不要误将YAGNI作为忽视前瞻性或架构考虑的借口。
2025-03-28 00:59:27
890
原创 Gini系数的应用 - 指标波动贡献分析
波动贡献值 = (维度值的波动值 / 整体波动) × 100。通过基尼系数,可以快速判断哪个维度更可能是导致指标异常的根源。我们需要计算每个维度下各维度值对整体销售额波动的贡献值。对于每个维度值,计算其本期销售额与上期销售额的差值。,且已按从小到大排序。根据波动贡献值,可以计算每个维度的基尼系数。
2025-03-10 20:38:54
968
原创 大语言模型微调的基本概念介绍
大型语言模型(LLM)微调是指在预训练模型的基础上,进一步使用较小且特定的数据集进行训练,以提升模型在特定任务或领域的能力和性能。微调的目的在于将通用模型转变为专业化模型。它弥合了通用预训练模型与具体应用独特需求之间的差距,确保语言模型更好地符合人类的期望。以OpenAI的GPT-3为例,这是一种设计用于广泛自然语言处理(NLP)任务的先进大型语言模型。假设某家医疗机构希望使用GPT-3帮助医生从文字记录中生成病人报告。
2025-03-02 21:07:44
699
原创 基于时间序列的预测方法进行异常值检测概述
与时间相关的数据分析和预测问题指数据的变动与时间的变化密切相关。具体来说,这类问题的核心在于数据的观测值随时间推移而变化,并且这种变化可能呈现出一定的规律性或受特定时间或事件的影响。时间序列预测方法正是为了解决这类问题而设计的,帮助我们从历史数据中提取规律,并预测未来的变化。
2025-02-23 21:35:13
882
原创 大语言模型Agent
LLM Agent是一种高级人工智能系统,专为创建需要顺序推理的复杂文本而设计。它们可以进行前瞻性思考,记住过去的对话,并根据需要的情境和风格使用不同的工具来调整其回应。考虑一个在法律领域的问题,如下所示:“在加利福尼亚,某种类型的合同违约可能产生的法律后果是什么?一个带有检索增强生成(RAG)系统的基本LLM可以轻松地从法律数据库中获取所需信息。在这种情况下,当项目需要顺序推理、规划和记忆时,LLM代理就会发挥作用。对于这个问题,代理可以将其任务分解为如下子任务。
2025-02-18 01:49:20
874
原创 阅读能力提升训练指南
提升阅读能力包含三部分,阅读速度、阅读深度、总结输出能力。在当前时代下,有大量的渠道接收信息。如何快速理解、输出是一项关键的技能。
2025-02-16 20:06:44
557
原创 Apache Calcite - calcite jdbc驱动使用场景
在使用calcite时,根据合适的场景选择是否需要使用calcite jdbc驱动来,前文举例中「查询优化器」可以使用也可以直接通过Calcite的API来创建优化所需要的schema。而查询场景我们基于JDBC接口来完成,就需要前置通过Calcite驱动来获取连接对象。
2024-11-23 21:42:29
1286
原创 Apache Calcite - 查询优化之自定义优化规则
输入sqlFROM (我们生成对应的关系表达式树自定义优化规则,自定义规则的作用就是将过滤下推到投影之前。最终调用transform方法将整个匹配到的子树(即 Filter 节点及其子节点 Project)替换为新的子树(即 newProject 节点及其子节点)。// 定义子节点的匹配模式@Override// 获取匹配的 Filter 和 Project 节点// 创建一个新的 Project 节点,其子节点为原 Project 节点的输入。
2024-11-03 12:44:59
1034
原创 Apache Calcite - 基于规则的查询优化
ProjectFilterTransposeRule:ProjectFilterTransposeRule 将 Project 操作下推到 Filter 之后,从而减少不必要的数据传输和处理。FilterJoinRule:FilterJoinRule 将 Filter 操作下推到 Join 之前,或者将过滤条件分解并分别应用到连接的两侧。JoinCommuteRule:JoinCommuteRule 交换 Join 操作的左右输入,从而可能找到更优的连接顺序。
2024-10-23 01:17:20
1569
原创 Apache Calcite - 查询优化之逻辑优化简介
Calcite的逻辑查询优化的一个重要目标是通过减少关系表达式树的深度、操作数量、连接顺序。来优化查询。最终这种优化可以为后续优化提高效率。减少关系表达式树的深度谓词下推:将过滤条件尽早应用,以减少中间结果集的大小。例如,将 WHERE 子句中的条件下推到扫描操作之前。投影下推:将选择的列尽早应用,以减少中间结果集的宽度。例如,将 SELECT 子句中的列选择下推到扫描操作之前。减少操作数量子查询合并:将子查询合并到主查询中,以减少嵌套查询的数量。
2024-10-21 13:45:55
1182
原创 Apache Calcite - 将Sql转换为关系表达式
我们为了进行转换创建了自定义Schema,用过Sql解析都知道Sql解析时不需要Schema,而验证转换为关系表达式时需要schema。解析是将SQL字符串转换为抽象语法树(AST)的过程,这个过程只需要了解SQL的语法规则,不需要知道具体的表和字段。解析的结果是一个 SqlNode 对象,它表示SQL语句的结构。解析器根据SQL语法规则将SQL字符串解析成SqlNode。这个过程只涉及语法分析,不涉及具体的表和字段,因此不需要Schema信息。
2024-10-18 01:24:01
1289
1
原创 Apache Calcite查询优化 - 构建关系代数表达式
在Apache Calcite中,RelNode(关系表达式节点)是用于表示关系查询计划的基本单元。每个RelNode 都代表逻辑或物理操作符,诸如扫描表、过滤、联接等。构建RelNode 是进行SQL优化的第一步,因为它为优化和执行提供了一种结构化的表示方式。标准化SQL表示:SQL查询是以字符串形式表达的,需要转换为一种结构化的形式,以便进行分析和优化。RelNode 提供了标准化的表示,可以对其进行各种转换和优化操作。逻辑与物理优化:通过构建RelNode,你可以创建SQL查询的逻辑计划。
2024-08-31 20:47:18
889
原创 Java 线程上下文传递
在Java并发编程中,线程上下文(Thread Context)是指与执行线程相关的环境和状态信息。这包括线程的局部变量、事务上下文、安全凭证、用户会话信息等。在多线程应用程序中,每个线程可能需要处理不同的任务,这些任务可能需要访问和修改与当前线程相关的特定数据。通常有下列常见的使用场景。数据隔离:在并发编程中,数据隔离是保证线程安全的关键。使用线程上下文可以确保每个线程都有自己的数据副本,从而避免了数据共享时的并发问题。
2024-07-21 16:17:16
1155
原创 Apache Calcite Linq4j学习
Linq4j是Apache Calcite项目中的一个模块,它提供了类似于LINQ(Language-Integrated Query)的功能,用于在Java中进行数据查询和操作。Linq4j可以将逻辑查询转换为物理查询,支持对集合进行筛选、映射、分组等操作。
2024-06-28 01:36:51
1208
原创 Apache Calcite - 使用框架Sql解析器解析Sql
Calcite提供的解析器和一般的语言解析器用法类似,均是基于访问者模式进行解析,最终实现特定的功能。
2024-06-18 02:14:17
3021
原创 Apache Calcite - 使用框架Reflective schema访问Java内存数据
Apache Calcite中的ReflectiveSchema是一种机制,允许Calcite通过反射来访问Java对象作为数据库的模式。即可以将普通的Java对象集合作为数据库表来查询。ReflectiveSchema可以将Java对象的字段映射为表的列,对象的集合映射为表的行。基于ReflectiveSchema适配器可以简化我们的工作,提升效率。但该工具有一定局限性 ,要么调整使用方式,要么改写核心方法。
2024-06-17 00:56:17
1326
原创 Apache Calcite - 自定义标量函数
为了方便演示,我们实现一个无用的简单方法,对整数减1接着扩展前文中用到的schema,实现getFunctionMultimap方法,并增加添加函数的方法@Override@Override最后我们在schema中注册函数完成上述工作后,在sql中使用自定义的函数打印结果,可以看到自定义方法的计算结果95 9421 2047 46实现自定义标量函数,注册到schema最后使用,schema是核心,维护了各类元信息,并提供了扩展接口来实现自定义的能力。
2024-06-02 15:17:53
1174
原创 Apache Calcite - 使用内置函数
Apache Calcite 提供了广泛的 SQL 函数支持,包括但不限于标准的 SQL 函数(如聚合函数、数学函数、字符串函数等)以及一些 Calcite 特有的扩展函数。这些函数可以在 SQL 查询中使用,以执行复杂的数据处理和分析任务。详细的介绍可以参考[1]。下面是对参考手册中函数的分类介绍聚合函数:如 COUNT, SUM, AVG, MIN, MAX 等。数学函数:如 ABS, EXP, LOG, POWER, SQRT, SIN, COS 等。
2024-06-01 20:17:35
1662
原创 Apache Calcite - 自定义数据源适配之访问内存列表
为了适配多源数据,根据上一篇文章,我们需要扩展实现Calcite中的Schema与Table。实现多源访问,了解框架结构及核心类最终实现。
2024-06-01 17:35:03
1799
6
翻译 Apache Calcite简介
在这篇文章中,我们探讨了Apache Calcite的能力,它能快速地为数据库提供标准化的SQL解析器,验证器和优化器。这让供应商无需花费太多时间开发查询引擎,使他们能够优先考虑后端存储。此外,Calcite的适配器简化了与各种数据库的连接,有助于开发统一的集成接口。更进一步,通过利用Calcite,数据库开发者可以加快产品上市的时间,同时提供强大、多功能的SQL功能。
2024-05-19 17:11:42
574
原创 软件团队协作常见问题与应对方法
一个团队成员均有各自的任务,更多关注自己的事情,导致团队整体协作时没有形成合力效应。例如成员A做架构升级,成员B做新业务迭代,他们都希望对方能支持自己的工作,但是都没有响应。这样的分工就是简单的加法逻辑,没有发挥出乘法效应。
2024-04-13 20:25:39
464
原创 日常工作中时间管理的方法学习总结
时间管理不仅仅是关于工作的效率,它还关系到生活的质量。有效的时间管理可以让你有更多的时间去做自己喜爱的事情,提高工作和生活的满意度。
2024-03-24 15:42:42
1165
原创 hive窗口函数学习总结
Hive中的窗口函数主要用于在数据集的子集(窗口)上执行计算。窗口函数可以解决一些复杂的数据分析问题,例如计算移动平均值、累计和、排名等。例如,如果你想要计算每个用户的购买总额排名,或者计算每个月的销售额是前三个月的平均值的多少倍,这些问题都可以通过窗口函数来解决。窗口函数的主要特点是可以在不改变原始数据行数的情况下,为每一行提供一个基于窗口的计算结果。这与聚合函数不同,聚合函数会将多行数据聚合成一行。
2024-03-23 13:19:36
1179
翻译 软件架构模式概述
架构模式是我们设计应用程序的核心。虽然我们可能选择不同的模式,但通过识别和理解它们的共性,我们可以遵循一些基础原则,这些原则将为设计关键的业务应用程序提供坚实的基础。在我看来,理解这些规则帮助我创建出了可扩展、可测试的软件系统。
2024-02-21 20:39:35
182
原创 使用py-spy对python程序进行性能诊断学习
py-spy是一个强大的工具,它可以帮助Python开发者进行性能分析而不影响程序的正常运行。通过生成火焰图和提供实时的性能数据,py-spy使得性能优化变得更加直观和高效。
2024-01-28 17:10:10
1541
原创 Python异常处理TypeError: translation() got an unexpected keyword argument ‘codeset‘
学习安装好依赖后执行命令仅接着出现下列错误,主要提示是 「TypeError: translation() got an unexpected keyword argument ‘codeset’」
2024-01-01 17:08:31
1777
翻译 软件研发中技术主R的职责
在项目管理中,“项目主R"中的"R"通常是"Responsibility”(责任)的缩写,表示这个人在项目中担任主要责任。而"技术主R"一般指的是一次项目中技术侧实施负责人。技术主R并不一定要承担项目经理全部的职责,但要从项目管理的角度推进技术的落地。从技术负责人的视角看,项目管理可以被划分为四个阶段:需求阶段、设计阶段、开发阶段和上线阶段。作为负责人,就是确保项目生命周期中的每个阶段都被妥善处理。
2023-12-24 17:53:37
1415
翻译 LangChain简介
这就是我们对LangChain的简单介绍——一个允许我们基于LLMs构建更高级应用程序的库,如OpenAI的GPT-3模型或通过Hugging Face提供的模型。
2023-12-17 21:06:05
558
原创 基于大语言模型的垂直领域知识问答系统流程学习
大模型能回答多数一般性问题,但在垂直领中,模型知识深度、准确度有限。为了解决该问题,我们可以利用向量数据库结合大模型和私有知识,构建垂直领域的智能服务。
2023-12-03 22:01:50
1957
2
翻译 Java中MapDB使用简介
在这篇文章中,我们深入研究了MapDB的嵌入式数据库引擎和集合框架。我们首先研究了核心类DB和DBMaker来配置、打开和管理我们的数据库。然后,我们通过一些例子来看MapDB提供的数据结构如何处理我们的记录。最后,我们看了MapDB相比传统数据库或Java集合的优势。
2023-11-26 21:43:54
1659
原创 数据可视化diff工具jsondiffpatch使用学习
数据迁移工程中diff是重要的一环,便于我们排查问题,提高迁移的质量。基于这个工具,我们可以实现可视化比较。当有定制化比较诉求是,通过扩展函数实现定制化功能,最终可以搭建起我们的diff工具服务。
2023-08-20 03:26:13
3476
原创 Spring Boot单元测试使用MockBean注解向Service注入Mock对象
MockBean注解是Spring Boot提供的一个注解,用于模拟依赖对象。它的作用是在Spring上下文中创建一个模拟对象,并将其注入到被测试对象中,以便进行单元测试。
2023-08-13 15:03:52
7116
翻译 使用h2database对java关系数据库访问逻辑进行测试
h2database是一个用Java编写的嵌入式关系型数据库管理系统,可以在内存中运行。h2database支持标准的SQL语法和JDBC API。高性能:采用了高效的算法和数据结构,具有出色的性能。轻量:的代码量非常小,可以很容易地嵌入到应用程序中,同时也支持多种部署方式。兼容性强:支持标准的SQL语法和JDBC API,同时也支持多种数据库的兼容模式。可靠性高:采用了事务机制和数据持久化技术,可以保证数据的一致性和可靠性。使用简介:提供了丰富的文档和示例,可以很容易地上手使用。
2023-08-06 21:36:30
311
FASTJSON那些事.pptx
2019-09-22
WxWidget教程
2015-09-13
软件项目管理的九阴真经
2013-10-04
《Visual C++音频/视频技术开发与实战》前9章源码
2013-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人