AI全栈项目Prompt Planet:Next.js 15+Supabase+Tailwind CSS实战解析

news2026/5/5 15:44:40
1. 项目概述与核心价值Prompt Planet 这个项目我第一次看到的时候确实被它的“噱头”吸引了——一个号称100%由AI生成的全栈Web应用。作为一个在前后端领域摸爬滚打了十来年的老码农我见过太多“AI辅助编程”的案例但一个从代码、文档到设计决策都由AI一手包办的项目还是让我产生了强烈的好奇心。这不仅仅是一个技术展示更像是一次对当前AI编程能力边界的压力测试。它本质上是一个现代化的Prompt提示词分享与管理平台用户可以创建、浏览、收藏高质量的AI提示词类似于一个垂直领域的“Prompt版GitHub Gist”或“提示词社区”。这个项目的核心价值在我看来有三层。第一层是技术示范价值它完整地展示了如何用一套现代、主流的技术栈Next.js 15, Supabase, Tailwind CSS等快速构建一个生产级应用这对于想学习全栈开发的新手或寻求技术选型参考的团队来说是一个极佳的“活体”案例。第二层是AI工程化实践它证明了在合理的架构设计和精准的Prompt引导下AI已经能够产出结构清晰、可维护性高的项目代码而不仅仅是零散的脚本。第三层也是最重要的是其作为工具本身的实用性。在一个AI应用爆发的时代如何高效地组织、发现和复用高质量的Prompt正成为一个刚需。Prompt Planet试图解决的就是这个问题它提供了一个美观、易用且功能完整的载体。无论你是想学习全栈开发、研究AI辅助编程的极限还是单纯需要找一个地方管理自己的Prompt资产这个项目都值得你花时间深入了解一下。接下来我会结合我自己的开发与部署经验为你层层拆解这个项目的设计思路、技术实现细节以及那些在官方文档里不会写的“踩坑”实录。2. 技术栈深度解析与选型逻辑看到Next.js 15,Supabase,Tailwind CSS,Vercel这套组合拳老手可能一眼就能看出这是个追求“开发体验”和“部署效率”的现代项目。但为什么是它们这套选型背后有非常清晰的逻辑链条绝不是随便堆砌热门技术。2.1 前端基石Next.js 15 与 App Router项目采用 Next.js 15 并全面使用 App Router这是一个非常激进但正确的选择。App Router 引入了基于 React Server Components 的架构这与传统的 Pages Router 有本质区别。为什么是 App Router核心原因是数据获取与渲染模式的革新。在 Prompt Planet 这样的内容型应用中大量页面如 Prompt 列表页、详情页的数据相对静态变化不频繁。使用 Server Components我们可以在服务器端直接获取数据并渲染成 HTML然后将这个轻量级的 HTML 流式发送到客户端。这意味着零客户端 JavaScript 捆绑包像 Prompt 详情页的静态内容浏览器无需加载任何 React 代码来渲染首屏加载速度极快对SEO极其友好。简化的数据获取直接在 Server Component 中使用async/await调用数据库或 API无需再写getServerSideProps或getStaticProps代码更直观。自然的代码分割每个路由段Route Segment默认是独立的 Server Component天然实现了按路由的代码分割。例如项目中浏览页面的数据获取可能类似这样基于项目结构推断// app/browse/page.js import { createClient } from /utils/supabase/server; export default async function BrowsePage() { const supabase await createClient(); const { data: prompts, error } await supabase .from(prompts) .select(*) .order(created_at, { ascending: false }) .limit(20); if (error) { // 在服务器端处理错误 } // 直接渲染这部分HTML在服务端生成 return ( div h1Browse Prompts/h1 PromptGrid prompts{prompts} / /div ); }PromptGrid可以是一个 Client Component 来处理交互如点击收藏但初始的列表HTML已经在服务端就绪了。实操心得Server Component 的边界刚开始用 App Router 很容易混淆。记住一个原则仅在需要交互性useState,useEffect,onClick或浏览器API时才使用use client指令将其定义为 Client Component。像导航栏、搜索框、表单肯定是 Client Component而纯展示的列表、文章内容、布局骨架应优先考虑 Server Component。Prompt Planet 的代码组织很好地体现了这一点这也是AI能生成高质量代码的一个佐证——它遵循了最佳实践范式。2.2 后端即服务Supabase 的精准定位为什么不用传统的 Node.js Express 自建 PostgreSQLSupabase 在这里扮演了“全能后端”的角色它完美契合了快速原型和中小型生产应用的需求。Supabase 带来的核心便利即时数据库与API创建表后自动生成 RESTful 和 GraphQL API并内置了行级安全RLS。对于 Prompt Planet 的用户、Prompt、收藏等关系型数据模型用 PostgreSQL 管理再合适不过。RLS 策略可以确保用户只能操作自己的数据这部分策略很可能也是由AI基于数据表结构生成的。开箱即用的身份验证Email/Password、OAuthGitHub, Google等全部集成省去了自己实现用户系统、Session管理、JWT令牌的巨额工作量。实时订阅虽然当前项目可能未深度使用但 Supabase 的 Realtime 功能为未来实现“Prompt 被实时点赞、收藏数更新”等特性预留了可能性。边缘函数用于处理不适合在前端或直接数据库操作中进行的逻辑例如图像上传后的处理、复杂的权限校验、调用第三方AI API等。项目中的图片上传到 Cloudflare R2 后可能通过一个 Edge Function 来触发生成缩略图或更新数据库记录。与前端的无缝集成项目里会有一个/utils/supabase的客户端创建工具区分 Server Client 和 Browser Client这是标准做法。Supabase 的 JavaScript 库与 Next.js 的 SSR/SSG 配合得很好。2.3 样式方案Tailwind CSS 4 的效用最大化Tailwind CSS 是“AI友好型”样式方案的典范。它的实用性类名Utility-First让AI在生成UI时无需纠结于自定义CSS类名的语义直接组合功能类即可。Tailwind CSS 4 虽然还在发展中但其更快的引擎和可能的未来特性如官方CSS-in-JS方案是前瞻性选择。在AI生成项目中的优势AI可以像搭积木一样描述样式div classNameflex flex-col md:flex-row gap-4 p-6 bg-white dark:bg-gray-800 rounded-xl shadow-lg。这条指令生成的UI既响应式md:flex-row又支持深色模式dark:bg-gray-800还有间距、内边距、圆角和阴影。这极大地降低了AI生成视觉一致、美观UI的难度。注意事项Tailwind 的深色模式陷阱项目提到了自动和手动的深色模式。实现的关键在于tailwind.config.js中设置darkMode: class或media。如果选择class你需要手动在html标签上切换dark类。如果像本项目一样同时支持系统和手动逻辑会稍复杂优先读取localStorage中的用户选择如果没有则使用window.matchMedia((prefers-color-scheme: dark))监听系统偏好。切换时既要更新localStorage也要更新html的类名。确保这个逻辑在客户端渲染初期执行避免“闪光”现象FOUC。2.4 存储与部署Cloudflare R2 Vercel 的全球加速组合Cloudflare R2用于存储用户上传的 Prompt 示例图片。为什么不直接用 Supabase StorageR2 的核心优势是零出口费用。对于图片这种可能被频繁访问的静态资产传统的对象存储如AWS S3会产生高昂的流量费用。R2 与 Cloudflare 全球网络集成能提供快速、经济的分发。AI 生成的项目能考虑到这一点说明其训练数据包含了成本优化的最佳实践。Vercel是 Next.js 应用的“娘家”部署体验无缝。它自动处理了静态资源服务将public/目录和构建产物中的静态文件通过CDN分发。Serverless Function将 Next.js 的 API Routes 和 Server Components 的渲染逻辑部署为全球分布的边缘函数保证低延迟访问。环境变量管理安全地注入SUPABASE_URL,SUPABASE_ANON_KEY,R2_*等密钥。自动HTTPS与域名管理。这套组合Next.js Vercel Supabase R2构成了一个从开发到上线、从数据库到前端、从动态内容到静态资产的完整、高效且成本可控的现代Web应用解决方案。3. 核心功能实现细节与踩坑实录光看技术栈是纸上谈兵我们深入到几个核心功能的实现里看看AI生成的代码到底靠不靠谱以及在实际运行中可能会遇到哪些问题。3.1 多步骤Prompt创建向导这是项目的亮点功能一个5步的创建流程。AI实现这类向导通常有两种方式1) 使用状态管理库如Zustand维护全局表单状态2) 利用URL路由每一步对应一个路由段如/create/1,/create/2。从项目的技术栈看结合 Zustand 和 URL 状态的可能性较大。实现拆解状态管理很可能定义了一个useCreatePromptStore的 Zustand Store包含所有步骤的数据title,description,content(Markdown),images,category,tags等以及当前步骤currentStep。步骤导航每个步骤是一个独立的组件。父组件或布局控制着步骤头的进度指示和“上一步/下一步”按钮。点击“下一步”时验证当前步骤表单通过后更新currentStep或推入新的URL。表单验证使用react-hook-form管理每个步骤内的表单。验证规则必填、长度、格式在表单组件内定义。AI在这里需要生成清晰、具体的验证错误信息。草稿自动保存一个关键的用户体验优化。可以利用useEffect监听 Store 中表单数据的变化然后使用debounce防抖函数将数据序列化后存入localStorage或直接调用一个保存草稿的API。页面加载时再尝试从存储中恢复。踩坑实录表单状态持久化与恢复我尝试运行类似逻辑时遇到一个坑当用户直接刷新页面或中途关闭浏览器再回来时需要从localStorage恢复 Zustand Store 的状态。但是Zustand Store 的初始化是在React组件渲染时发生的。如果恢复状态的代码写在了Store定义之外可能会遇到水合Hydration不匹配的问题。解决方案在Store中增加一个hydrate动作并在顶层组件如app/layout.js的useEffect仅在客户端执行中调用它来恢复数据。或者使用像persist中间件这样的Zustand插件它能更优雅地处理这个问题。检查Prompt Planet的代码看AI是否妥善处理了这一点是评估其健壮性的一个好角度。3.2 图片上传与Cloudflare R2集成用户上传图片到R2而不是直接存到数据库这是标准的做法。流程通常是前端获取上传凭证 - 前端直传文件到R2 - 后端或Edge Function接收上传成功通知处理文件信息。推测的实现流程前端点击上传触发文件选择。前端调用一个Next.js API Route例如/api/upload/sign这个接口根据当前用户会话生成一个具有限时、限路径权限的R2预签名URLPresigned URL。这个URL允许前端直接向R2上传文件而无需暴露核心密钥。前端使用这个预签名URL通过fetch或axios将文件PUT到R2。上传成功后前端可能再调用另一个API如/api/upload/confirm将文件在R2中的最终路径Key和关联的Prompt草稿ID存入数据库。前端UI显示预览图预览图的URL直接使用R2的公开访问地址或通过Cloudflare Images/Transform进行优化。实操心得R2预签名URL的安全性与优化生成预签名URL的API必须进行严格的用户认证和权限检查。并且一定要限制预签名URL的有效期比如5分钟防止被滥用。此外对于图片可以在前端上传前进行简单的客户端压缩使用如browser-image-compression库减少上传流量和存储空间。更高级的做法是在上传成功后触发一个Cloudflare Worker或Supabase Edge Function自动生成不同尺寸的缩略图适配不同显示场景列表缩略图、详情大图。AI生成的代码是否包含这些优化细节是区分“能用”和“好用”的关键。3.3 响应式设计与深色模式实现项目强调响应式和深色模式这主要靠Tailwind CSS完成。响应式通过断点前缀sm:,md:,lg:,xl:来调整布局、字体大小、边距等。例如Prompt卡片网格可能从单列手机变为多列桌面div classNamegrid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 {/* Prompt cards */} /div深色模式如前所述需要一套组合拳。通常有一个ThemeProvider组件来管理当前主题状态light,dark,system并将其通过React Context提供给子组件。Tailwind的dark:变体会根据html标签上的class属性自动生效。常见问题SSR下的深色模式闪烁这是最常见的问题。服务器在渲染HTML时无法知道客户端的localStorage或系统偏好所以默认会渲染浅色模式。当客户端JS加载并执行后才切换到深色模式导致页面“闪亮”一下。解决方案在app/layout.js这个Server Component中我们可以通过读取请求头如next/headers的cookies来获取用户之前保存的主题偏好。然后将这个偏好作为初始值直接输出到HTML的html classdark中。这样首屏渲染就是正确的主题。Prompt Planet的AI实现如果考虑到了这一点那它的完成度就相当高了。4. 本地开发环境搭建与部署详解让我们把手弄脏实际把这个项目跑起来。官方的README给出了步骤但有些细节需要展开。4.1 环境准备与依赖安装第一步克隆与基础准备git clone https://github.com/StevenQi7/Prompt-Planet.git cd Prompt-Planet npm install这一步通常很顺利。但如果遇到node-gyp编译错误通常发生在Windows或某些Node版本下可能是某个原生依赖的问题。可以尝试使用npm install --legacy-peer-deps忽略peer依赖冲突。确保你的Node.js版本符合要求18.x推荐使用nvm管理Node版本。全局安装windows-build-toolsWindows或确保已安装Python和C编译环境。第二步环境变量配置cp .env.example .env.local复制环境变量模板。接下来是重头戏你需要去各个服务商后台获取密钥。Supabase创建一个新项目。进入Project Settings-API。找到Project URL和anon publickey分别填入NEXT_PUBLIC_SUPABASE_URL和NEXT_PUBLIC_SUPABASE_ANON_KEY。关键一步运行SQL迁移。项目应该有一个supabase/migrations文件夹或类似的SQL文件。在Supabase控制台的SQL Editor中运行这些SQL创建数据表和行级安全策略。否则应用会因为表不存在而报错。Cloudflare R2在Cloudflare仪表板创建R2存储桶Bucket。进入R2- 你的桶 -Settings。创建API令牌Manage R2权限注意保存生成的Access Key ID和Secret Access Key。将这些信息填入.env.local例如R2_ACCOUNT_IDyour_account_id R2_ACCESS_KEY_IDyour_access_key_id R2_SECRET_ACCESS_KEYyour_secret_access_key R2_BUCKET_NAMEyour_bucket_name R2_PUBLIC_URLhttps://pub-xxxx.r2.dev (你的桶的公开访问域名需在桶设置中启用)还需要在桶的Public access设置中配置好CORS规则允许你的开发域名http://localhost:3000和线上域名进行GET,PUT,POST等请求。其他变量可能还包括NEXTAUTH_SECRET用于NextAuth.js如果用了的话、NEXT_PUBLIC_APP_URL等根据.env.example的提示填写。4.2 数据库初始化与关系设计AI生成的数据库表结构是项目的核心。我们假设它至少包含以下表需通过SQL迁移文件创建profiles: 扩展Supabase Auth的用户表存储用户名、头像URL等。prompts: 核心表存储提示词的标题、描述、Markdown内容、分类、标签数组、作者ID、封面图URL等。categories: 分类表。tags: 标签表可能通过连接表prompt_tags与prompts多对多关联。favorites或collections: 用户收藏关系表。行级安全RLS策略这是Supabase安全的关键。AI应该为每张表都生成了RLS策略。例如对于prompts表SELECT策略可能允许所有人查看已发布的Prompt (WHERE published true)但只有作者能看到自己的草稿。INSERT策略只允许认证用户插入且user_id自动设置为当前登录用户ID使用auth.uid()。UPDATE/DELETE策略只允许作者更新或删除自己的Prompt。你需要确保这些策略在运行迁移后已启用。在Supabase控制台的Authentication-Policies页面可以查看和管理。4.3 开发服务器运行与问题排查运行npm run dev访问http://localhost:3000。以下是可能遇到的几个问题及解决方法问题1白屏或Module not found错误。原因依赖安装不完整或Node版本不兼容。解决删除node_modules和package-lock.json用正确的Node版本重新npm install。问题2页面显示 “Supabase错误关系不存在”。原因数据库表没有创建成功。解决检查并运行SQL迁移文件。在Supabase的Table Editor中确认表是否存在。问题3图片上传失败控制台报CORS错误。原因Cloudflare R2 存储桶的CORS配置不正确。解决登录Cloudflare进入R2桶设置添加CORS规则。一个用于开发的示例规则如下生产环境应限制域名[ { AllowedOrigins: [http://localhost:3000, https://your-production-domain.com], AllowedMethods: [GET, PUT, POST, HEAD], AllowedHeaders: [*], ExposeHeaders: [ETag] } ]问题4深色模式切换无效或闪烁。原因主题Provider逻辑可能存在问题或Tailwind配置有误。解决检查tailwind.config.js中darkMode设置。检查负责主题切换的客户端组件确保其初始状态获取逻辑正确且切换时同时更新document.documentElement.classList和状态存储。4.4 生产环境部署到Vercel本地运行无误后部署到Vercel非常简单。推送代码到GitHub。在Vercel控制台导入项目选择你的GitHub仓库。配置环境变量在Vercel项目的Settings-Environment Variables中将你.env.local里的所有变量除了那些以NEXT_PUBLIC_开头的它们会自动从构建环境注入都添加进去。注意NEXT_PUBLIC_*变量在构建时就被嵌入了所以如果它们有变化需要重新部署。部署Vercel会自动检测到是Next.js项目使用正确的构建命令next build。首次部署后它会给你分配一个*.vercel.app的域名。配置自定义域名可选在Settings-Domains中添加你自己的域名并按照指引配置DNS。部署后检查清单[ ] 确保所有环境变量特别是Supabase和R2的生产环境密钥已在Vercel中正确设置。[ ] 检查Supabase的RLS策略是否允许从你的生产域名进行连接检查Authentication-URL Configuration中的Site URL。[ ] 更新R2的CORS规则加入你的生产域名。[ ] 测试核心流程注册、登录、创建Prompt、上传图片、浏览。[ ] 检查Vercel的Functions日志查看Edge Function或API Routes是否有错误。5. AI生成项目的评估、优化与扩展思考运行和剖析完这个项目我们回到最初的问题AI生成的代码质量到底如何我们又能从中学习到什么以及如何让它变得更好5.1 代码质量与架构评估通览项目的代码结构虽然输入内容未提供具体代码文件但根据技术栈和功能可以推断一个由AI生成的良好项目应具备以下特征清晰的模块化组件、工具函数、API路由、类型定义应该分门别类放在components/,lib/,app/api/,types/等目录下。UI组件应该是可复用的逻辑与视图分离。类型安全使用TypeScript定义了清晰的数据接口如Prompt,UserProfile。这能极大减少运行时错误也是AI辅助编程的优势领域——它可以根据数据库表结构自动生成类型定义。错误处理健全在数据获取、表单提交、文件上传等操作中应有完善的try...catch和用户友好的错误提示Toast通知。性能考量使用了React Query进行服务端状态管理、缓存和后台同步。对图片使用next/image组件进行优化。在列表页可能实现了无限滚动或分页。潜在的改进点人工介入的价值代码重复AI可能会生成一些相似的组件或逻辑需要人工进行抽象和提取。例如不同的表单验证逻辑可以统一为验证工具函数。过度工程化对于一个小型应用AI有时会引入不必要的抽象层或复杂的状态管理。需要根据实际情况进行简化。特定的业务逻辑AI可能无法完美处理极其复杂或独特的业务规则需要开发者进行补充和修正。5.2 从“能运行”到“好用”的优化建议基于一个基础可用的AI生成项目我们可以手动添加一些“灵魂”让它更出色搜索与过滤功能目前的浏览可能只靠分类和标签。可以集成像Algolia或Meilisearch这样的全文搜索引擎为Prompt的标题、描述、内容建立索引实现实时、高效的搜索。AI内容审核用户生成的Prompt内容需要审核。可以在Prompt提交后调用一个 moderation API如OpenAI的Moderation端点或专门的审核服务进行异步审核标记或拦截不当内容。性能监控与可观测性接入像Sentry这样的错误监控以及Vercel Analytics或Google Analytics进行用户行为分析。监控API响应时间、前端核心交互指标。更丰富的交互增加Prompt的“点赞”、“评分”、“复制次数统计”功能。利用Supabase的Realtime功能让这些计数能够实时更新增加社区活跃度。国际化i18n深化项目已支持中英文。可以引入next-intl或react-i18next库更系统化地管理多语言文案并支持动态语言切换。5.3 关于“100% AI生成”的思考与工作流启示Prompt Planet 作为一个标志性项目它揭示了一个趋势AI正在成为强大的“初级开发者”和“代码助手”。它能快速生成结构良好、符合最佳实践的样板代码极大地提升了从想法到原型的效率。对开发者的启示角色转变开发者的核心价值从“写代码”逐渐转向“定义问题”、“设计架构”、“编写高质量的Prompt需求描述”和“审查、集成、优化AI生成的代码”。你需要清晰地告诉AI你想要什么包括技术栈、功能细节、边界情况。Prompt工程是关键为了生成像Prompt Planet这样的项目给AI如Cursor、Claude、GPT的Prompt必须极其详细。可能需要包括项目概述、技术栈要求、核心功能列表、UI/UX描述、数据库Schema设计、API端点规划、部署方式等。这本身就是一种高级的软件设计能力。审查与测试必不可少AI生成的代码并非完美。必须进行严格的人工代码审查、安全审计尤其是身份验证和权限逻辑以及全面的测试单元测试、集成测试、E2E测试。AI可能会遗漏某些边缘情况。这个项目本身就是其价值的最佳证明。它不仅仅是一个工具更是一个关于如何与AI协作构建软件的“元示例”。通过研究、部署甚至贡献代码到这样的项目我们实际上是在亲身实践和探索未来软件开发的新范式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2581220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…