Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

segmentfault.com

SegmentFault 最新的文章

Get the latest updates from SegmentFault 最新的文章 directly as they happen.

Follow now 64 followers

Latest posts

Last updated 5 days ago

EwVueComponent与Vue内置组件(Suspense + AsyncComponent+component)的对比

7 days ago

EwVueComponent vs Vue 内置组件:全面对比分析概述在 Vue 3 的生态系统中,我们有多种处理动态组件的方案。本文将深入对比 EwVueComponent 与 Vue 的内置解决方案:<Suspense> +...

为什么我要开发一个ew-vue-component?

7 days ago

前言在Vue.js生态系统中,动态组件渲染是一个常见且重要的需求。Vue提供了内置的<component>元素来实现这一功能,但在实际项目开发中,我们发现这个内置组件存在一些局限性,无法完全满足复杂应用场景的需求。本文将深入分析Vue内置<component>组件的设计理念、功能特性以及其存在的不足,并详细介绍我们开发的EwVueComponent如何在继承原有功能的基础上,提供更强大、更灵活的动态组件渲染解决方案。Vue内置Component组件分析基本功能与设计理念Vue的内置<component>组件采用了简约而优雅的设计理念,其核心功能是通过is属性来动态渲染不同的组件。这种设计体现了Vue框架"渐进式增强"的哲学,为开发者提供了一个轻量级的动态组件渲染方案。<!-- Vue内置component的基本用法 --&gt <component :is="currentComponent" v-bind="componentProps" />内置component组件的设计目标是提供最基础的动态组件切换能力,它专注于核心功能的实现,避免了过度设计。这种极简主义的方法有其优势:学习成本低、使用简单、性能开销小。核心机制分析内置component组件的实现机制相对简单直接:组件解析:通过is属性接收组件标识符(字符串、组件对象或组件构造函数)渲染切换:当is属性发生变化时,销毁当前组件实例并创建新的组件实例属性透传:将所有props和attrs透传给目标组件插槽传递:支持插槽内容的透传这种实现方式在大多数基础场景下工作良好,但也正是这种简单性导致了一些功能上的局限。Vue内置Component组件的局限性1. 缺乏错误处理机制Vue内置的<component>组件在错误处理方面表现不佳,这在生产环境中可能导致严重问题:问题表现:当目标组件渲染失败时,整个应用可能崩溃没有提供错误边界或回退机制异步组件加载失败时缺乏优雅的降级方案开发者无法捕获和处理组件级别的错误实际场景:<!-- 内置component在错误场景下的脆弱性 --> <component :is="errorProneComponent"...

Go 语言单例模式全解析:从青铜到王者段位的实现方案

10 days ago

什么是单例模式?单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类(或结构体,在 Go 语言中)只有一个实例,并提供一个全局访问点来访问这个实例。这个模式在需要协调系统中动作的场景下非常有用,例如日志记录、配置管理或数据库连接池。为什么在 Go 中需要单例模式?Go 语言以其简洁和高效的并发能力而闻名,支持 goroutine 和通道(channel)来实现并发编程。在并发环境中,确保资源的唯一性和访问的安全性至关重要。从设计模式的角度看,单例模式的主要目标是避免资源浪费和数据不一致。单例模式在这里可以帮助我们管理共享资源(比如数据库连接或配置文件),避免因为多个实例而导致的混乱。例如,假设一个应用程序需要与数据库交互。如果每个 goroutine 都创建一个新的数据库连接,可能会导致资源浪费甚至系统崩溃。而单例模式可以确保整个系统中只有一个数据库连接池,所有 goroutine...

css文字大小自适应

12 days ago

在页面???写中经常会碰到页面自适应的问题,也就是页面内部的元素会随着窗口的放大缩小而放大缩小,box可以通过calc + 百分比的形式做到页面自适应,但是box内的字体却无法做到这点,往往box自适应大小了,内部的字体还是原来的大小,看起来会非常别扭,下面就来css实现一下页面文字的自适应大小。clamp()函数这里主要用到clamp()函数,clamp() 函数的作用是把一个值限制在一个上限和下限之间,当这个值超过最小值和最大值的范围时,在最小值和最大值之间选择一个值使用。它接收三个参数:最小值、首选值、最大值。当首选值比最小值要小时,则使用最小值。当首选值介于最小值和最大值之间时,用首选值。当首选值比最大值要大时,则使用最大值。clamp()的文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/clamp我们可以通过在clamp()内设置表达式,来动态的设置文字的大小,比如这里有一个视口,最小320px,最大1200px,当视口小于320px的时候字体大小为0.7rem,当视口大小大于1200px的时候,字体大小为1.2rem,否则就使用区间的首选值。.clampSize{ width: 100%; /* 可以动态设置大小 */ height: 40px margin:...

开放创新,昇腾 CANN 再向深处

27 days ago

AI 领域有自己的速度。4 月 29 日凌晨 4 点,Qwen3 正式发布,并开源全部 8 款混合推理模型。发布仅 2 小时,Qwen3...

分享一些实用的PHP函数(对比js/ts实现)(1)

about 1 month ago

检查数组所有元素是否满足给定条件如果提供的函数对数组的所有元素返回 true,则返回 true,否则返回 false。思路实现思路如下:使用数组的filter方法对数组执行给定的函数,然后使用count方法获取执行后的结果,再和count方法获取未执行filter方法的结果进行比较。代码实现下面我们来看php和js以及ts代码的实现:php代码实现function all($arr,$fn){ return count(array_filter($arr,$fn)) === count($arr) }使用示例all([2, 3, 4,...

AI Agent爆火后,MCP协议为什么如此重要!

about 1 month ago

什么是MCP?模型上下文协议(Model Context Protocol, MCP)是一种专为 机器学习模型服务设计的通信协议,旨在高效管理模型推理过程中的上下文信息(如会话状态、环境变量、动态配置等),解决传统协议在复杂AI场景下的局限性。MCP本身并不处理复杂的逻辑;它只是协调AI模型与工具之间的数据和指令流动,MCP简化了AI模型与你的数据、工具和服务的交互方式。MCP 具体可以干啥用上下文感知推理支持动态传递和持久化会话相关的上下文数据(例如用户历史行为、对话状态),使模型能够基于连续交互生成连贯结果。例如,在聊天机器人场景中,MCP会传递对话历史以确保回答的上下文相关性。大白话: 比如客服机器人知道你之前退过货,不用每次都问你订单号给每次对话分配一个“会话ID”,存下聊天记录、用户偏好等多模态数据兼容统一处理文本、图像、传感器数据等多模态输入,通过类型化数据通道**<font (Typed Data Channel)自动适配不同模型输入格式(如Tensor、JSON、Protobuf)。比如你突然说:“用简单点的话解释”,MCP会立刻告诉AI:“用户是小白,别用专业术语”处理复杂任务 [辅助]辅助自动化开发项目,自动化建模,自动化购物,自动化买票等等场景。比如让AI帮你订机票,需要记住出发地、时间、航空公司偏好,一步步完成。为什么需要MCP随着 LLM的发展日益普及...

不负热爱,继续前行|SegmentFault 思否 13 周年送福利啦!

about 1 month ago

转眼间,SegmentFault 思否已经走过了 13 个春秋。13 年来,是社区开发者的每一次提问、每一个回答、每一篇文章分享,一点一滴,让思否从一个技术交流小站,成长为百万开发者的精神家园,铸就了思否的今天。时光荏苒,代码未歇。正是大家对技术的热爱、分享与坚持,让我们跨越了一个又一个技术周期,从 "Hello World" 走向了星辰大海。感谢社区所有开发者的一路相伴,是你们让思否走得更远。在未来的日子里,愿我们依然不负热爱,继续前行!在思否成立 13 周年之际,我们怀着最诚挚的感恩之心,为大家准备了两个小活动和小小的福利,庆祝这段共同成长的岁月。小伙伴们来和我们一起过生日吧~📅 活动时间2025.05.30 10:00...

【万字长文】大模型开源开发全景与趋势解读

about 1 month ago

“当我们看到这些数据趋势的时候,一个词浮现在我的眼前——黑客松(Hackathon),AI 领域的项目,快速地出现、快速地停更,他们似乎在做一场真实市场里的黑客松,那么,什么领域涌现了最多项目,哪些方面是停更的重灾区,哪些项目幸存了,激烈竞争的项目们如今怎么样了,我们都尝试着在这份趋势报告里叙述一二。”--王旭,蚂蚁开源技术委员会副主席「根据 OpenDigger 的数据显示,人工智能已经于 2023 年超越云原生,成为协作影响力最大的技术领域」从近十年来 AI、云原生、数据库、前端、操作系统这五大技术领域的发展曲线来看,AI 类项目在近些年得到了快速发展,尤其在 2022 年后发展迅猛。AI 项目影响力总值在 2017...

从传统搜索到智能问答:葡萄城自研 RAG 系统的技术实践与工程落地

about 1 month ago

一、引言在数字化转型浪潮下,企业知识服务体系正经历着深刻变革。如何让用户高效获取所需信息,成为提升产品竞争力和用户满意度的关键。本文将系统介绍葡萄城自研 RAG(Retrieval-Augmented Generation,检索增强生成)智能问答系统的技术创新、架构设计与工程实践,分享葡萄城在智能搜索与问答领域的探索与思考。二、项目缘起:从搜索到智能问答的需求升级1. 现状与挑战葡萄城已建立了完善的知识服务体系,包括标准化文档、技术社区、搜索平台等。现有“葡萄城搜索中心”支持跨平台内容检索,覆盖官网、博客、社区、视频等多种内容源。然而,随着知识库规模的扩大和用户需求的提升,传统基于关键词的搜索方式暴露出诸多不足:用户难以精准定位帮助文档中的功能说明;技术支持人员难以快速查重和定位历史解决方案;方案搜寻效率低,用户体验不佳。2. 技术探索与自研动因随着大语言模型(LLM)技术的快速发展,基于 RAG 的智能问答成为提升知识服务能力的理想路径。我们调研了多种开源与商业化 RAG 方案,发现它们难以直接适配葡萄城多源异构的数据结构和业务需求。为此,我们决定自研 RAG 系统,目标包括:适配多样化内容结构(如帮助文档、论坛帖子等);支持高频动态更新,保障知识库时效性;灵活扩展,满足未来产品演进需求;性能与维护可控,便于长期运维。三、创新点:QA 预生成与“问题对问题”匹配1...

基于预生成 QA 对的 RAG 知识库解决方案

about 2 months ago

核心价值QA 预生成技术采用创新的问答对生成方法,相比传统文本切片技术,能够更精准的构建知识库,显著提升检索与问答效果。企业级场景验证已在真实业务场景中落地应用,实现从传统搜索到智能搜索的无缝升级,用户接受度与满意度明显提升。开源实践支持提供完整技术教程,并开放源代码,助力开发者快速搭建易于落地的高质量企业级 AI 知识库系统。概述GC-QA-RAG 是一款面向葡萄城产品生态(包括 活字格、WYN、SpreadJS 和 GCExcel 等)的检索增强生成(RAG)系统。该系统通过智能文档处理、高效知识检索、精准问答等功能,有效提升了知识管理效率和用户支持体验。本系统创新性地采用了 QA 预生成技术,克服了传统文本切片方法在知识库构建中的若干局限性。经过实践验证,该技术方案能够显著提升检索效果,可为 RAG...

涛思数据与浪潮KaiwuDB商标被侵权引发开源商业化合规思考

about 2 months ago

作者:MF,SegmentFault思否社区技术编辑近日,国内数据库领域爆发了一起引人关注的知识产权纠纷。涛思数据与浪潮KaiwuDB先后发布严正声明,指责北京开物数智科技有限公司(www.kaiwu.cloud)存在商标侵权和不正当竞争行为。这一事件不仅揭示了开源软件商业化过程中可能面临的法律风险,也为整个行业敲响了合规警钟。事件始末5月20日,涛思数据在其官方微信公众号发布声明,指控北京开物数智科技有限公司在其官网上存在对TDengine时序数据库产品的严重侵权行为,包括擅自盗用并篡改TDengine技术生态架构图,在技术文档中混淆TDengine与KaiwuDB的技术边界,以及通过诱导性技术关联暗示形成错误认知。同日,上海沄熹科技有限公司(浪潮KaiwuDB数据库合法运营主体)也发布声明,指出开物数智与其不存在任何形式的股权关联、技术授权或商业合作关系,开物数智擅自使用KaiwuDB商标标识已构成商标侵权行为。两家企业均要求开物数智在48小时内撤除相关内容并公开道歉,否则将采取法律行动。开源项目商业化的合规挑战这一事件引发了业内对开源项目商业化合规问题的广泛关注。作为技术媒体,我们有必要探讨开源项目在商业化过程中可能面临的合规挑战:1. 商标权保护与使用边界开源软件的代码可能是自由的,但其商标权却受到严格保护。如本次事件中,KaiwuDB商标由上海沄熹科技有限公司持有,未经授权使用构成侵权。企业在使用开源项目名称、标识时,需明确区分开源许可与商标使用权的界限。2. 技术架构与知识产权边界涛思数据指控开物数智混淆TDengine与KaiwuDB的技术边界,这反映了在技术架构描述中需???明确各组件的归属和关系。特别是在"基于"某开源项目进行二次开发时,不应模糊原创与衍生的界限,更不能暗示不存在的技术从属关系。3. 开源协议的正确理解与遵守不同的开源协议对商业化有不同的限制条件。例如,GPL协议要求衍生作品必须以相同协议开源;而Apache、MIT等协议则相对宽松。企业在商业化开源项目时,必须充分理解并严格遵守相关协议条款。4. 避免不正当竞争行为在开源生态中,利用他人商誉、混淆产品来源、虚假宣传等行为不仅违反商业道德,也可能触犯法律。开源商业化的合规建议针对上述挑战,我们提出以下合规建议:明确授权范围:在商业化过程中,应明确区分开源代码使用权与商标使用权,必要时寻求正式授权。准确描述技术关系:在产品宣传、技术文档中,应准确描述与其他开源项目的技术关系,避免误导性表述。尊重知识产权:即使是开源项目,其架构图、文档等仍受著作权保护,未经许可不得随意使用或修改。建立合规审查机制:企业应建立开源合规审查机制,确保产品开发、营销过程中不侵犯他人知识产权。积极参与社区共建:通过正当途径参与开源社区建设,以合作而非侵权方式实现商业价值。结语开源精神的核心是共享与协作,而非无序与侵权。在开源项目商业化的浪潮中,企业既要把握创新机遇,也要恪守法律底线。只有在尊重知识产权、遵循商业道德的前提下,中国的开源生态才能健康发展,我们的基础软件产业才能赢得国际尊重。本次涛思数据与浪潮KaiwuDB的联合发声,不仅是对单一侵权事件的回应,更是对整个行业的警示。我们期待各方能够通过此事件反思,共同维护一个公平、有序、创新的开源商业环境。