自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(449)
  • 资源 (1)
  • 收藏
  • 关注

原创 Beta 是什么意思

Beta版是产品公开测试阶段,功能基本完成但尚未稳定发布,用于收集用户反馈。完整的版本顺序为:Alpha(内测)→Beta(测试版)→RC候选版→GA正式版。Beta版可能存在闪退、数据异常等问题,且功能可能调整,不适合核心业务使用。与开发版不同,Beta版已具备主体功能,但稳定性仍低于正式版。典型例子包括ChatGPT Beta、Windows功能测试版等。建议尝鲜用户使用,但重要工作环境应避免依赖Beta功能。

2026-07-22 09:37:01 557

原创 OpenMetadata 本地部署指南(macOS + Docker Compose)

本文详细介绍了在Mac本地使用Docker Compose快速部署OpenMetadata全栈环境的方法,包含Server、Ingestion/Airflow、MySQL和Elasticsearch组件。主要内容包括:1)架构说明和端口占用情况;2)前置环境检查(Docker版本、资源、端口);3)三种方式获取docker-compose.yml文件;4)Apple Silicon的适配处理;5)启动流程及端口冲突解决方案;6)服务验证和访问方式;7)日常运维命令和数据管理;8)常见问题排查指南;9)完整卸

2026-07-17 09:21:17 296

原创 数据库 ACID 四大特性(事务四大属性)

本文介绍了数据库事务的ACID特性:原子性(Atomicity)确保事务要么全部执行,要么全部回滚;一致性(Consistency)保证数据始终符合约束规则;隔离性(Isolation)防止并发事务相互干扰;持久性(Durability)确保已提交事务永久保存。这四大特性共同保障了数据库事务的可靠性,其中原子性、隔离性和持久性最终都是为数据一致性服务的。ACID特性是数据库系统实现可靠事务处理的基石。

2026-07-03 09:59:37 233

原创 PostgreSQL 高频常用命令整理

PostgreSQL实用命令速查指南 摘要:本文整理了PostgreSQL日常运维的常用命令,涵盖系统登录、元命令、数据库/表操作、索引/触发器管理、权限控制、外部数据包装器(FDW)使用、性能排查和数据迁移等方面。重点包括:1)psql登录方式及元命令;2)数据库和表结构的增删改查;3)索引和触发器管理;4)mysql_fdw跨库访问;5)数据导入导出方法;6)性能分析和慢SQL排查;7)备份恢复命令。特别标注了最常用的元命令如\d+查看表详情、\copy进行CSV导入导出等操作,为数据库管理员提供快速参

2026-07-02 20:10:13 287

原创 一文吃透Maven核心原理与pom.xml全方位详解

Maven作为Java项目构建与依赖管理工具,通过pom.xml文件实现标准化开发流程。文章系统介绍了Maven的核心功能、工作流程和仓库体系,重点解析了pom.xml的关键配置:GAV坐标定位资源、dependencies管理依赖、dependencyManagement统一版本、build配置构建规则,以及多模块项目开发中的继承与聚合机制。同时提供了常见问题解决方案,如依赖冲突处理、版本管控等。掌握pom.xml的编写规范,能有效提升Java项目的开发效率和可维护性,是Java开发者必备的核心技能。

2026-06-24 14:35:13 351

原创 什么是Trino?大数据统一联邦查询引擎详解

Trino是一款开源的分布式MPP SQL查询引擎,专注于跨异构数据源的联邦查询与分析。其核心特性包括:纯计算架构(存算分离)、标准SQL支持、150+数据源连接能力,可实现多源数据关联查询、湖仓统一访问、轻量ETL等功能。作为大数据生态中的计算层,Trino与OLAP引擎(StarRocks/Doris/ClickHouse)形成互补架构:前者负责多源融合与临时分析,后者专注高性能查询。典型应用场景包括数据孤岛整合、交互式分析、BI查询服务等,但不适合PB级ETL或毫秒级查询。目前已成为企业大数据平台解决

2026-06-11 23:20:37 553

原创 一文读懂模型微调:让通用AI变成你的专属“小专家”

模型微调:让通用AI变成你的专属助手 模型微调是在预训练大模型基础上,用少量专属数据进行二次训练,使其适配特定需求的技术。它通过四个简单步骤实现:选择基础模型、准备专属数据、轻量训练、获得定制化模型。典型应用场景包括:客服话术定制、公司规范代码生成、标准化文档撰写等。与预训练和RAG技术相比,微调具有成本低、速度快、输出稳定的优势。当需要固定输出格式、处理垂直领域任务或要求稳定执行时,微调是最佳选择。这项技术降低了AI使用门槛,让普通企业和个人都能获得定制化的智能助手。

2026-02-28 10:50:23 673

原创 OpenClaw 安装文档

摘要:针对阿里云ECS服务器(1.8GB内存)编译llama.cpp时内存不足的问题,本文提供了一种本地编译后上传服务器的解决方案。具体步骤包括:1)在本地Mac通过npm安装OpenClaw并打包;2)上传至阿里云服务器解压安装;3)配置环境变量和启动服务。最后通过SSH端口转发实现本地访问WebUI(http://localhost:18789),使用预设令牌(openclaw2026)进行认证。该方法有效规避了服务器内存不足导致的编译失败问题。(150字)

2026-02-03 11:06:27 2703

原创 Redis 中 USED 和 RSS

Redis内存使用解析:USED与RSS的核心区别 摘要: USED内存是Redis内部统计的实际存储数据内存(键值对、字典结构等),反映业务数据占用,通过INFO memory的used_memory字段查看。RSS是操作系统统计的Redis进程总物理内存(USED+内存碎片+系统开销),通过used_memory_rss字段查看。关键区别:USED是"有效内存",用于maxmemory配置;RSS是"总占用内存",用于排查碎片/swap问题。健康状态应为RSS略大

2026-01-23 17:09:46 532

原创 java学习--Map遍历方式

本文介绍了Java中Map遍历的6种常用方法:1)遍历keySet仅获取键;2)keySet+get(key)获取键值(性能较差);3)entrySet高效获取键值对(推荐);4)values仅获取值;5)Java8+的Lambda表达式;6)迭代器遍历(支持边遍历边删除)。总结指出:日常开发推荐entrySet或Lambda表达式,特殊场景根据需要选择其他方式,避免使用keySet+get(key)遍历大数据量Map。

2026-01-19 09:34:06 601

原创 什么是召回(Recall)

摘要:召回(Recall)是检索系统(如RAG、搜索引擎)中的初始步骤,旨在从全量数据中尽可能多地筛选出与用户查询相关的候选结果(追求全面性而非精确性)。其核心特点包括:1)高召回率优先,通过简单算法(如向量/关键词/混合召回)快速处理海量数据;2)召回率=检索到的相关结果数/全量相关结果数×100%,需在效率与覆盖率间平衡。召回后需经粗排(快速过滤)和精排(精准排序)才能生成最终结果。实践中需合理设置召回数量(通常为最终结果的20-50倍)并选择适配策略(如Milvus向量召回)。召回是排序的基础,二者协

2026-01-16 09:42:56 814

原创 什么是粗排和精排

摘要: 在RAG、推荐系统等场景中,粗排(Coarse-grained Ranking)和精排(Fine-grained Ranking)通过“先海选、再精选”的两级策略平衡效率与精度。粗排快速筛选候选集(如ANN算法),侧重召回率;精排精细化排序(如交叉编码器),提升准确性。该策略尤其适用于海量数据场景,避免全局精排的低效问题。LangChain与Milvus结合可实现:粗排召回候选文档,精排重排输出Top结果,最终提升RAG效果。两级排序兼顾速度与精度,是优化检索系统的有效方案。

2026-01-15 16:35:12 1224

原创 什么是置信度

置信度是AI技术中衡量检索结果与问题匹配度或模型决策可靠性的量化指标,范围通常为[0,1]或百分比。在RAG系统中,置信度通过向量相似度计算(如余弦相似度)实现,值越高表示相关性越强。其核心应用包括:过滤低质量检索结果、指导Agent决策流程(高置信度直接回答,低置信度补充检索或拒绝回答)以及提升系统可靠性。实际应用中需根据业务场景调整置信度阈值,不同向量数据库的计算方式也需注意差异。置信度机制有效降低了AI幻觉风险,提升了检索增强生成系统的准确性。

2026-01-15 16:06:05 1048

原创 java学习--LinkedHashSet

摘要: LinkedHashSet是Java集合框架中的有序集合,继承自HashSet,底层通过哈希表(高效查询/去重)和双向链表(维护插入顺序)实现。其核心特性包括:严格保留元素插入顺序、不可重复(基于hashCode()和equals())、允许单个null值、非线程安全,操作时间复杂度为O(1)。与HashSet(无序高效)和TreeSet(排序但较慢)相比,LinkedHashSet适用于需保留插入顺序且去重的场景。使用时,自定义类需重写hashCode()和equals()以确保去重逻辑正确。示例

2026-01-14 23:15:25 639

原创 java学习--HashSet

摘要:HashSet是Java集合框架中基于HashMap实现的Set接口实现类,具有无序、不可重复、允许单个null值和非线程安全等特点。其去重机制通过hashCode()和equals()方法实现,自定义类需重写这两个方法。HashSet查询增删效率高(O(1)),适合无需有序的去重场景。文章详细介绍了HashSet的原理、常用操作示例,并与TreeSet、LinkedHashSet进行了对比分析,指出应根据有序性需求选择不同实现类:HashSet适用于无序场景,TreeSet适合排序需求,Linked

2026-01-14 23:03:21 1162

原创 java学习--LinkedList

摘要: LinkedList是Java中基于双向链表实现的List,支持高效的头尾增删(O(1)),但随机访问效率低(O(n))。它实现了Deque接口,可作队列、栈使用,适用于频繁增删场景。与ArrayList相比,LinkedList增删快但查询慢,内存占用较高。典型应用包括实现队列、栈或需要频繁插入/删除的操作。选择时,查询多用ArrayList,增删多用LinkedList。线程不安全,需额外同步处理。

2026-01-14 22:29:16 541

原创 java学习--什么是线程安全和不安全

摘要:本文通过代码示例对比了线程安全与线程不安全的区别。当多个线程同时操作共享数据时,线程不安全(如ArrayList)会导致数据错乱或丢失,而线程安全(如Vector)通过加锁机制保证数据一致性。线程不安全的本质是非原子操作缺乏同步控制,而线程安全以性能为代价实现数据正确性。实际应用中应根据场景选择:单线程/只读场景可使用不安全类提高性能,多线程写操作必须使用线程安全类或手动加锁。核心区别在于线程安全通过同步机制保证多线程操作的正确性,而线程不安全则无法保证。

2026-01-13 23:20:09 1529

原创 java学习--Vector

摘要:Vector是Java中线程安全的动态数组(JDK1.0),所有核心方法都加了synchronized关键字,性能低于ArrayList。其扩容机制默认2倍(可指定增量),支持Iterator和Enumeration遍历。与ArrayList相比,Vector线程安全但性能差,适用于低并发场景。实际开发中更推荐使用Collections.synchronizedList或CopyOnWriteArrayList实现线程安全。Vector与ArrayList的API兼容,但创建时应合理指定初始容量和扩容

2026-01-13 23:10:17 846

原创 java学习--ArrayList

ArrayList是Java中基于动态数组的List实现,支持快速随机访问(O(1))但增删效率较低(O(n))。核心特性包括:动态扩容(默认1.5倍)、允许null值和重复元素、有序存储。常用操作包括add/get/set/remove等,遍历时需注意使用迭代器删除元素避免异常。非线程安全,初始容量默认为10,建议预估容量优化性能。相比普通数组,ArrayList长度可变且提供丰富操作方法,但只能存储对象类型。使用时需注意索引越界和并发修改异常问题。

2026-01-13 23:00:18 476

原创 java学习--Collection的迭代器

Java迭代器(Iterator)是遍历Collection集合的标准工具,提供hasNext()、next()和remove()三个核心方法。迭代器通过指针移动逐个访问元素,支持遍历过程中安全删除元素。使用时需注意:必须先调用hasNext()判断,再调用next()获取元素;遍历中必须用迭代器的remove()方法而非集合的remove();增强for循环本质是迭代器的语法糖,同样不能直接修改集合。迭代器确保集合遍历的统一性和安全性,是Java集合操作的重要工具。

2026-01-12 23:31:58 562

原创 java学习--Collection

摘要: Collection是Java集合框架的根接口,定义单列集合的通用操作(如add/remove/contains)。核心子接口包括:List(有序可重复,如ArrayList、LinkedList)、Set(无序不可重复,如HashSet、TreeSet)和Queue(FIFO队列)。实现类通过不同数据结构(数组、链表、哈希表等)实现特性差异。使用时需注意泛型、遍历方式(迭代器/增强for)及Set去重原理(hashCode+equals)。示例展示了Collection的基本操作,如添加、删除和遍

2026-01-12 23:20:54 1188

原创 什么是RAG

RAG(检索增强生成)是一种将外部知识检索与大语言模型结合的AI架构,通过"检索-增强-生成"流程解决大模型知识滞后等问题。其核心价值在于降低幻觉、实时更新知识、适配专业领域并降低成本。主流架构包括基础RAG、多模态RAG、智能体RAG和图谱RAG,适用于客服、文档问答、行业知识库等场景。RAG技术无需频繁微调模型,通过检索外部知识库即可提升回答准确性,是大模型落地应用的关键技术。

2026-01-05 19:34:37 411

原创 java学习--第三代日期时间

Java 日期时间 API 发展历经 三代,java.time 包(JDK 1.8 推出)是官方最终的最优解,也被称为 JSR 310 规范,彻底解决了前两代 API 的所有痛点:

2025-12-29 22:19:48 1230

原创 java学习--Calendar

Java的Calendar类是用于日期时间操作和计算的工具类,作为Date类的替代方案。其核心特性包括:抽象类需通过getInstance()获取实例、字段索引化操作、存在月份从0开始等设计缺陷、线程不安全等。主要使用步骤为获取实例→操作字段→结果处理。核心操作包括获取/设置/增减日期字段,需注意月份和星期的修正。Calendar与Date可互相转换,但格式化需借助SimpleDateFormat等工具类。开发中应注意其高频坑点,如月份从0开始、线程不安全等。建议新项目优先使用JDK8的java.time新

2025-12-29 20:27:54 721

原创 java学习--Date

摘要:Java的java.util.Date类是基础日期处理类,表示精确到毫秒的时间瞬间(从1970年1月1日算起)。由于线程不安全、设计缺陷等问题,JDK1.1后大部分方法被废弃,仅保留getTime()等核心方法。JDK8推出的java.time新API(如LocalDateTime)是推荐替代方案。Date需配合SimpleDateFormat(线程不安全)或DateTimeFormatter(线程安全)进行格式化/解析。与新版API互转需通过Instant桥梁。开发中应避免使用废弃方法,并注意时间戳

2025-12-28 21:18:06 1059

原创 java学习--BigInteger和BigDecimal

Java提供了java.math包中的BigInteger和BigDecimal类来处理超大数值。BigInteger用于任意长度的整数运算,突破long类型的限制;BigDecimal解决浮点数精度问题,适用于金融计算等场景。两者都是不可变类,运算需调用方法而非运算符。BigDecimal必须用字符串构造,除法需指定舍入模式,比较大小要用compareTo方法。虽然大数类功能强大,但性能低于基本类型,应合理选择使用。金融计算等需要高精度的场景必须使用BigDecimal,常规小数值仍建议使用基本数据类型。

2025-12-28 20:35:09 1481

原创 java学习--System

Java的System类是java.lang包下的核心系统类,提供静态方法和属性进行系统级操作。主要特性包括:1)标准输入输出流(in/out/err);2)系统控制方法(exit/gc);3)高效数组复制(arraycopy);4)时间获取(currentTimeMillis/nanoTime);5)环境变量和系统属性管理(getenv/getProperty)。System类为final类,无法实例化,所有功能通过静态方式调用。典型应用场景包括程序退出、内存管理、性能统计和系统信息获取等,是Java与系

2025-12-23 10:04:37 956

原创 java学习--Arrays

Java的Arrays类是java.util包中的数组操作工具类,提供多种静态方法简化数组操作。主要功能包括:排序(sort()支持基本类型和引用类型)、查找(binarySearch()需先排序)、转换字符串(toString()和deepToString())、填充(fill())、复制(copyOf()和copyOfRange())、比较(equals()和deepEquals())以及数组转集合(asList())。使用时需注意:二分查找前必须排序,多维数组要用deep方法,asList()返回的是

2025-12-23 09:31:03 736

原创 java学习--Math 类常用方法

Java Math类提供了丰富的数学运算功能,主要包括:基本算术运算(绝对值、取整、取余)、数值比较与极值(max/min/clamp)、幂运算与指数对数(pow/sqrt/log)、三角函数(sin/cos/tan)、随机数生成(random)以及常用数学常量(PI/E)。所有方法均为静态方法,可直接调用。适用于数值计算、几何运算和随机数生成等场景,是Java开发中必备的数学工具类。

2025-12-22 22:32:46 626

原创 java学习--String、StringBuilder、StringBuffer 的核心区别

摘要:Java中String、StringBuilder和StringBuffer的主要区别在于可变性、线程安全和性能。String是不可变字符序列,线程安全但性能最低;StringBuilder可变且性能最高,但非线程安全;StringBuffer可变且线程安全,性能中等。适用场景:字符串不变用String,单线程修改用StringBuilder,多线程修改用StringBuffer。特别要注意循环拼接时应使用StringBuilder而非String的"+"操作,以避免性能问题。

2025-12-22 22:13:37 951

原创 java学习--StringBuilder

摘要:Java中的StringBuilder是一个高效处理可变字符串的类,解决了String类不可变导致的拼接效率问题。其核心特性包括可变字符序列、非线程安全、高效性能和自动扩容机制。常用方法有append()拼接、reverse()反转、insert()插入、delete()删除等,支持链式调用。适用于单线程下大量字符串操作场景,但需注意线程安全问题。建议预估字符串长度指定初始容量,减少扩容损耗,完成操作后通过toString()转为String类型使用。相比StringBuffer,StringBuil

2025-12-22 20:43:06 855

原创 java学习--String和StringBuffer互转

摘要:本文介绍Java中String与StringBuffer的相互转换方法。String转StringBuffer可通过构造方法(推荐)或append()实现;StringBuffer转String建议使用toString(),也可通过String构造方法或substring()实现。关键注意事项:转换后对象相互独立,修改不影响原值;性能上推荐直接使用构造方法和toString();线程安全场景需使用StringBuffer,否则建议使用StringBuilder以提高效率。

2025-12-19 20:05:50 371

原创 java学习--String

本文全面解析Java中的String类,重点阐述其不可变性、字符串常量池机制和内存优化策略。String对象创建后不可修改,所有操作都会生成新对象;字符串常量池可复用相同字符串以减少内存占用。文章详细介绍了常用方法(如equals()、substring()等),并指出性能优化要点:避免循环中使用"+"拼接字符串,推荐使用StringBuilder/StringBuffer;合理运用intern()方法减少重复字符串内存消耗。同时提醒注意常见陷阱,包括"=="与equ

2025-12-17 09:51:47 669

原创 java学习--8个包装类

摘要:Java提供8个包装类(Byte、Short、Integer、Long、Float、Double、Character、Boolean)将基本数据类型转为对象,解决面向对象编程中的类型限制问题。核心特性包括:继承Number/Object类、不可变性、自动装箱拆箱(JDK1.5+)、部分类型的缓存机制(-128~127)。包装类支持集合操作、泛型使用和空值处理,但需注意NPE风险、equals比较和性能开销。这些类是连接基本类型与引用类型的关键桥梁。

2025-12-13 21:51:25 893

原创 java学习--异常之throws

摘要:Java中的throws关键字用于声明方法可能抛出的异常类型,将异常处理责任转移给调用者。它主要用于编译时异常(必须声明),而运行时异常可声明但不强制。语法为方法名() throws 异常类型。throws与throw不同,前者声明异常,后者抛出异常对象。子类重写方法时,throws声明的异常不能比父类更宽泛。最佳实践包括声明具体异常、避免滥用Exception、限制异常传递深度等。合理使用throws可提升代码可维护性。

2025-12-11 14:12:08 731

原创 java学习--异常

Java异常处理机制解析:体系分为Error(不可恢复)、编译时异常(强制处理)和运行时异常(建议预判)。核心语法包括try-catch捕获、throws声明和throw主动抛出。最佳实践强调:避免吞异常、保留异常链、finally资源释放、优先预判规避。自定义异常推荐继承RuntimeException,异常信息需包含业务上下文。正确处理异常可提升程序健壮性,关键要区分可恢复错误与程序缺陷。

2025-12-08 16:10:27 881

原创 java学习--注解之@SuppressWarnings

摘要: @SuppressWarnings是Java用于抑制编译警告的注解,通过指定警告类型(如unchecked、deprecation)精准关闭非关键警告,避免干扰。其核心特性包括:支持类/方法/变量等多层级作用范围(遵循就近原则),仅编译期生效,不影响运行时。常见警告类型涉及泛型转换、过时API、未使用变量等。使用时需遵循最小范围原则(优先标注方法/局部变量而非类),优先修复警告而非抑制,严禁滥用"all"。典型场景包括抑制泛型强制转换警告、过时方法调用等,建议配合注释说明原因。该

2025-12-05 09:47:21 779

原创 java学习--注解之@Deprecated

摘要: @Deprecated 是Java的标记型注解,用于标识已过时的类、方法等元素,提醒开发者存在缺陷或替代方案。其核心特性包括: 编译期警告:非强制,兼容旧代码; 文档说明:需搭配@deprecated注释说明废弃原因及替代方案; 多元素支持:可标注类、方法、字段等; JDK9+增强:新增since(废弃版本)和forRemoval(计划删除)属性。 使用原则:标记废弃→提供替代→逐步删除,避免滥用。反射可运行时检测废弃状态,适用于API迭代管理。

2025-12-04 20:31:22 1540

原创 java学习--注解之@Override

摘要:@Override是Java的标记型注解,用于显式声明方法重写,提升代码安全性和可读性。核心作用包括:1)编译期校验重写规则,避免伪重写错误;2)增强代码可读性。使用场景包括重写父类方法、实现接口方法和重写抽象类方法。常见误区包括误认为它是必要条件、用于static/final方法或签名不一致的情况。该注解仅作用于编译阶段,不会影响运行时性能,是Java编码推荐的最佳实践。

2025-12-04 20:20:18 1329

原创 java学习--枚举(Enum)

Java枚举是一种类型安全的常量集合,相比传统常量具有更高可读性和安全性。枚举默认继承Enum类,支持属性、方法、构造器(必须private),可像普通类一样定义业务逻辑。常用方法包括values()遍历、valueOf()转换等,还支持switch语句。高级用法包括实现接口、单例模式以及专用集合类EnumSet/EnumMap。枚举适用于状态、类型等有限集合场景,是Java定义常量的首选方式,兼具安全性和扩展性优势。

2025-12-04 09:59:03 835

azkaban3.9安装包

安装包

2020-12-24

空空如也

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

TA关注的人

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