SEO炼金术(4)| Next.js SEO 全攻略
在上一篇文章 SEO炼金术(3)| 深入解析 SEO 关键要素 中,我们深入解析了 SEO 关键要素,包括 meta
标签、robots.txt
、canonical
、sitemap.xml
和 hreflang
,并探讨了它们在搜索引擎优化(SEO)中的作用。然而,对于使用 Next.js 开发的网站,手动管理这些 SEO 相关的配置可能会非常繁琐。
幸运的是,Next.js 内置了丰富的 SEO 支持,能够自动化和简化这些优化过程。本文将全面介绍 Next.js 提供的 SEO 相关功能,并通过示例演示如何在 Next.js 项目中正确配置 metadata
、canonical
、robots.txt
、sitemap.xml
和 hreflang
,确保你的网站能够在搜索引擎中获得最佳表现。🚀
📌 1. Next.js 的 SEO 相关功能
Next.js 提供了多种 SEO 相关的工具,使开发者无需手动编写 HTML head
标签,而是通过 配置和 API 自动生成正确的 SEO 标记。
📌 Next.js SEO 主要功能概览
SEO 需求 | Next.js 提供的解决方案 | 作用 |
---|---|---|
标题 <title> 和 meta 标签 | metadata API | 设置页面标题、描述等 |
避免重复 URL(canonical ) | metadata API (canonical 字段) | 规范化 URL,防止 SEO 权重分散 |
控制爬取与索引(robots.txt 和 meta robots ) | robots.ts | 设定爬虫访问规则 |
**自动生成 sitemap.xml | `sitemap.(xml | js |
多语言 SEO(hreflang ) | metadata API (alternates ) | 多语言优化,确保用户访问正确版本 |
Open Graph / Twitter Meta | metadata API (openGraph / twitter ) | 提高社交媒体分享效果 |
📌 2. 在 Next.js 中实现 SEO
2.1 内置 metadata
API(元数据 API)
Next.js 13+ 引入了 metadata
API,替代了 next/head
,可以在 layout.tsx
或 page.tsx
中直接定义 SEO 相关的元数据。
示例
import type { Metadata } from 'next'export const metadata: Metadata = {title: 'Next.js SEO Optimization',description: 'Learn how to optimize Next.js applications for SEO.',keywords: ['Next.js', 'SEO', 'optimization'],robots: {index: true, // 允许搜索引擎索引follow: true, // 允许搜索引擎跟踪链接},alternates: {canonical: 'https://example.com/seo',},openGraph: {title: 'Next.js SEO',description: 'A comprehensive guide to SEO in Next.js',url: 'https://example.com/seo',images: [{url: 'https://example.com/og-image.jpg',width: 1200,height: 630,},],type: 'website',},twitter: {card: 'summary_large_image',title: 'Next.js SEO',description: 'A comprehensive guide to SEO in Next.js',images: ['https://example.com/twitter-card.jpg'],},
}
2.1.1详细字段解析
1️⃣ 标题相关
字段 | 作用 | 是否影响 SEO |
---|---|---|
title | 设置页面 <title> 标签 | ✅ 影响排名 |
title.default | 作为子路由的默认标题 | ✅ 影响排名 |
title.template | 用于拼接标题(如 `%s | 网站名`) |
title.absolute | 设定不受 title.template 影响的标题 | ✅ 影响排名 |
示例:
export const metadata: Metadata = {title: {template: '%s | My Website',default: 'My Website',},
}
输出
<title>My Page | My Website</title>
2️⃣页面描述
字段 | 作用 | 是否影响 SEO |
---|---|---|
description | 设置 <meta name="description"> ,用于搜索引擎结果页摘要 | ✅ 影响搜索结果 CTR |
示例:
export const metadata: Metadata = {description: 'Next.js SEO Best Practices',
}
输出
<meta name="description" content="Next.js SEO Best Practices" />
3️⃣关键词
字段 | 作用 | 是否影响 SEO |
---|---|---|
keywords | 设置 <meta name="keywords"> ,定义页面的关键词(部分搜索引擎已忽略) | ❌ 影响极小 |
示例:
export const metadata: Metadata = {keywords: ['Next.js', 'SEO', 'Optimization'],
}
输出
<meta name="keywords" content="Next.js, SEO, Optimization" />
4️⃣ 搜索引擎爬取策略
字段 | 作用 | 是否影响 SEO |
---|---|---|
robots | 控制搜索引擎的索引策略 | ✅ 影响网页是否被收录 |
示例:
export const metadata: Metadata = {robots: {index: true,follow: true,noimageindex: false,googleBot: {index: true,follow: true,'max-image-preview': 'large',},},
}
输出
<meta name="robots" content="index, follow" />
<meta name="googlebot" content="index, follow, max-image-preview:large" />
5️⃣ 规范 URL(Canonical)
字段 | 作用 | 是否影响 SEO |
---|---|---|
alternates.canonical | 设置 <link rel="canonical"> ,避免重复内容问题 | ✅ 影响页面权重 |
示例:
export const metadata: Metadata = {alternates: {canonical: 'https://example.com/seo',},
}
输出
<link rel="canonical" href="https://example.com/seo" />
6️⃣ Open Graph & Twitter 预览
字段 | 作用 | 是否影响 SEO |
---|---|---|
openGraph | 定义 Facebook、LinkedIn 等社交媒体的 Open Graph 数据 | ✅ 增强分享体验 |
twitter | 定义 Twitter/X 分享预览 | ✅ 增强分享体验 |
示例:
export const metadata: Metadata = {openGraph: {title: 'Next.js SEO',description: 'A guide to SEO in Next.js',url: 'https://example.com/seo',images: [{ url: 'https://example.com/og-image.jpg', width: 1200, height: 630 },],type: 'website',},twitter: {card: 'summary_large_image',title: 'Next.js SEO',description: 'A guide to SEO in Next.js',images: ['https://example.com/twitter-card.jpg'],},
}
输出
<meta property="og:title" content="Next.js SEO" />
<meta property="og:description" content="A guide to SEO in Next.js" />
<meta property="og:image" content="https://example.com/og-image.jpg" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Next.js SEO" />
<meta name="twitter:image" content="https://example.com/twitter-card.jpg" />
7️⃣ 其他 SEO 相关元数据
字段 | 作用 | 是否影响 SEO |
---|---|---|
metadataBase | 设定 URL 前缀,方便定义绝对路径的 metadata | ✅ 影响 URL 结构 |
icons | 网站图标(favicon、Apple Touch Icon 等) | ✅ 影响分享体验 |
manifest | 设置 Web App Manifest 文件 | ❌ 仅影响 PWA |
appleWebApp | 定义 Apple Web App 相关设置 | ❌ 仅影响 iOS 设备 |
appLinks | 定义 Android/iOS App 关联链接 | ❌ 仅影响 App 跳转 |
facebook | 设置 Facebook App ID 或管理员 ID | ❌ 仅影响 Facebook |
verification | 用于 Google、Yandex、Yahoo 站点验证 | ❌ 仅影响站点所有权认证 |
2.1.2 Metadata API 最佳实践
✅ 默认在 layout.tsx
中定义 metadata,以便所有子页面继承默认值。
✅ 子页面可以覆盖 title
和 description
,确保每个页面唯一性。
✅ 使用 metadataBase
设定 URL 前缀,简化 canonical
和 og:image
配置。
✅ **openGraph
和 twitter
提升社交媒体分享体验,增加流量入口。
✅ **如果页面是动态的,使用 generateMetadata()
以根据 params
生成动态 title
。
2.2 生成 robots.txt
文件
在 Next.js 中,你可以 **手动添加robots.txt
静态文件,或者 **动态生成robots.txt
以控制爬虫的抓取行为。Next.js 提供了一种 更智能 的方式,允许我们通过 robots.ts
文件 动态生成 规则,使 SEO 维护更加灵活。
2.2.1 使用静态 robots.txt
如果你的网站 不需要动态调整爬虫规则,可以直接在 app/
目录下创建 robots.txt
静态文件,这样 Next.js 会自动提供该文件,不需要额外的代码。
📌 创建 app/robots.txt
User-Agent: *
Allow: /
Disallow: /private/
Sitemap: https://example.com/sitemap.xml
📌 访问 https://example.com/robots.txt
,你会看到:
User-Agent: *
Allow: /
Disallow: /private/
Sitemap: https://example.com/sitemap.xml
✅ 适用场景:
- 规则固定,不会根据环境或内容变化。
- 适用于小型网站,规则简单且不会变动。
🚨 但如果你需要动态管理爬虫规则,比如针对不同环境(开发/生产),或者对特定 URL 进行调整,就需要使用动态生成的方法。
2.2.2 通过 robots.ts
动态生成 robots.txt
Next.js 支持动态生成robots.txt
,通过 app/robots.ts
让 robots.txt
自动适配不同环境。
📌步骤:在 app/robots.ts
中创建动态 robots.txt
import type { MetadataRoute } from 'next'export default function robots(): MetadataRoute.Robots {return {rules: [{ userAgent: '*', allow: '/' }, // 允许所有爬虫访问整个网站{ userAgent: 'Googlebot', disallow: '/private/' }, // Googlebot 不能访问 /private/],sitemap: 'https://example.com/sitemap.xml', // 指定 sitemap 位置}
}
📌 访问 https://example.com/robots.txt
,你会看到:
User-Agent: *
Allow: /
User-Agent: Googlebot
Disallow: /private/
Sitemap: https://example.com/sitemap.xml
✅ robots.ts
作用
- 动态生成
robots.txt
,自动适配不同环境。 - 支持不同爬虫设置不同规则(如
Googlebot
、Bingbot
)。 - 无需手动维护
robots.txt
文件,防止因修改错误导致 SEO 受损。 - 自动缓存,提高性能。
2.2.3 robots.ts
的存放位置
- 需要 **手动创建
app/robots.ts
,它不会默认存在。 robots.ts
必须放在app/
目录下的根路径**,保证https://example.com/robots.txt
能够正确访问。- ⚠️ 注意:如果
robots.txt
和robots.ts
同时存在,Next.js 只会使用robots.txt
(静态文件优先)。
2.2.4 robots.ts
高级用法
如果你需要 对不同搜索引擎设置不同规则,可以 传递数组 让多个爬虫遵循不同的规则。
📌 示例:针对不同搜索引擎设置不同的爬取规则
import type { MetadataRoute } from 'next'export default function robots(): MetadataRoute.Robots {return {rules: [{userAgent: 'Googlebot', // 仅针对 Googlebotallow: ['/'], // 允许访问所有页面disallow: ['/private/'], // 禁止访问 /private/},{userAgent: ['Applebot', 'Bingbot'], // 适用于 Applebot 和 Bingbotdisallow: ['/'], // 禁止访问所有页面},],sitemap: 'https://example.com/sitemap.xml',}
}
📌访问 https://example.com/robots.txt
,你会看到:
User-Agent: Googlebot
Allow: /
Disallow: /private/User-Agent: Applebot
Disallow: /User-Agent: Bingbot
Disallow: /Sitemap: https://example.com/sitemap.xml
✅ 适用场景
- 你希望 不同搜索引擎有不同的爬取规则。
- 你想 屏蔽某些爬虫(如 Applebot、Bingbot)。
- 你希望 Googlebot 访问全部内容,但屏蔽
/private/
目录。
2.2.5 robots.ts
的完整规则
Next.js 的 robots.ts
支持以下参数:
type Robots = {rules:| {userAgent?: string | string[]allow?: string | string[]disallow?: string | string[]crawlDelay?: number}| Array<{userAgent: string | string[]allow?: string | string[]disallow?: string | string[]crawlDelay?: number}>sitemap?: string | string[]host?: string
}
📌可选参数
参数 | 作用 |
---|---|
userAgent | 指定爬虫(如 Googlebot 、Bingbot ),* 代表所有爬虫 |
allow | 允许爬取的路径(如 / 表示所有路径) |
disallow | 禁止爬取的路径(如 /private/ ) |
sitemap | 指定站点地图的 URL |
crawlDelay | 设置爬取延迟(秒) |
host | 指定主机(如 https://example.com ) |
📌示例:完整 robots.ts
export default function robots(): MetadataRoute.Robots {return {rules: [{ userAgent: '*', allow: '/' }, // 允许所有爬虫访问整个网站{ userAgent: 'Googlebot', disallow: ['/private/'], crawlDelay: 10 }, // Googlebot 禁止访问 /private/,并设置爬取间隔 10 秒],sitemap: ['https://example.com/sitemap.xml'],host: 'https://example.com',}
}
📌 访问 https://example.com/robots.txt
,你会看到:
User-Agent: *
Allow: /User-Agent: Googlebot
Disallow: /private/
Crawl-Delay: 10Sitemap: https://example.com/sitemap.xml
Host: https://example.com
✅ 适用场景
- 你希望 Googlebot 爬取速度较慢,防止服务器压力过大。
- 你有 多个
sitemap.xml
文件,希望统一管理。 - 你希望 为网站设置主机 URL,提高 SEO 规范性。
2.3 生成 sitemap.xml
在 SEO 优化中,sitemap.xml
站点地图能够帮助搜索引擎更快地发现并索引网站上的重要页面。Next.js 允许 **手动添加sitemap.xml
文件,或者通过 sitemap.ts
自动生成 站点地图,从而大大简化维护工作。
2.3.1 使用静态 sitemap.xml
如果你的网站页面较少,并且 URL 结构比较稳定,可以 手动创建 sitemap.xml
文件,然后放置在 app/
目录下,Next.js 会直接提供该文件。
📌 **创建 app/sitemap.xml
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://example.com</loc><lastmod>2023-01-01</lastmod><changefreq>weekly</changefreq><priority>1.0</priority></url><url><loc>https://example.com/blog</loc><lastmod>2023-01-01</lastmod><changefreq>daily</changefreq><priority>0.8</priority></url>
</urlset>
📌 访问 https://example.com/sitemap.xml
,你会看到:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://example.com</loc><lastmod>2023-01-01</lastmod><changefreq>weekly</changefreq><priority>1.0</priority></url><url><loc>https://example.com/blog</loc><lastmod>2023-01-01</lastmod><changefreq>daily</changefreq><priority>0.8</priority></url>
</urlset>
✅ 适用场景
- 小型网站,页面数量少,URL 结构不会经常变化。
- 你希望**手动控制
sitemap.xml
,无需额外代码逻辑。 - 你不需要自动更新
lastmod
(页面最后更新时间)。
🚨 但如果你的网站页面较多、结构复杂,或者经常有新页面上线,建议使用动态生成 sitemap.xml
的方式。
2.3.2 通过 sitemap.ts
动态生成 sitemap.xml
Next.js 允许 自动生成 sitemap.xml
,只需创建 sitemap.ts
文件,即可根据动态路由生成站点地图。这种方法更加灵活,适用于 大型站点或频繁更新的内容。
📌步骤:在 app/sitemap.ts
中创建 sitemap.xml
import type { MetadataRoute } from 'next'export default function sitemap(): MetadataRoute.Sitemap {return [{url: 'https://example.com',lastModified: new Date(),changeFrequency: 'weekly',priority: 1.0,},{url: 'https://example.com/blog',lastModified: new Date(),changeFrequency: 'daily',priority: 0.8,},]
}
📌 访问 https://example.com/sitemap.xml
,你会看到:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://example.com</loc><lastmod>2023-01-01</lastmod><changefreq>weekly</changefreq><priority>1.0</priority></url><url><loc>https://example.com/blog</loc><lastmod>2023-01-01</lastmod><changefreq>daily</changefreq><priority>0.8</priority></url>
</urlset>
✅ sitemap.ts
作用
- 自动更新
lastmod
,确保搜索引擎知道页面最新更新时间。 - 支持动态 URL(如博客文章、商品页等)。
- 搜索引擎可以更快发现新页面,加快索引速度。
- 无需手动维护
sitemap.xml
文件,降低出错风险。
2.3.3 sitemap.ts
的存放位置
- 需要 手动创建
app/sitemap.ts
,默认不会自动生成。 sitemap.ts
必须放在app/
目录下,确保可以通过https://example.com/sitemap.xml
访问到。- ⚠️ 注意:如果
sitemap.xml
和sitemap.ts
同时存在,Next.js 只会使用sitemap.xml
(静态文件优先)。
2.3.4 生成多语言 sitemap.xml
如果你的网站有 多个语言版本,可以在 sitemap.ts
中 添加 alternates.languages
选项,告诉搜索引擎哪些 URL 代表不同语言版本。
📌示例:支持多语言的 sitemap.ts
import type { MetadataRoute } from 'next'export default function sitemap(): MetadataRoute.Sitemap {return [{url: 'https://example.com',lastModified: new Date(),alternates: {languages: {'en': 'https://example.com/en','de': 'https://example.com/de',},},},{url: 'https://example.com/about',lastModified: new Date(),alternates: {languages: {'en': 'https://example.com/en/about','de': 'https://example.com/de/about',},},},]
}
📌 访问 https://example.com/sitemap.xml
,你会看到:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://example.com</loc><xhtml:link rel="alternate" hreflang="en" href="https://example.com/en"/><xhtml:link rel="alternate" hreflang="de" href="https://example.com/de"/><lastmod>2023-01-01</lastmod></url><url><loc>https://example.com/about</loc><xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/about"/><xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/about"/><lastmod>2023-01-01</lastmod></url>
</urlset>
✅ 作用
- 帮助搜索引擎正确索引不同语言版本的 URL。
- 避免重复内容问题(
canonical
+hreflang
)。 - 自动维护多语言站点地图,无需手动管理。
2.3.5 生成大规模网站的 sitemap.xml
如果你的网站包含 大量页面(例如电商、博客、论坛等),建议 拆分 sitemap.xml
,使用 generateSitemaps
方法。
📌示例:为大规模站点生成多个 sitemap.xml
import type { MetadataRoute } from 'next'
import { BASE_URL } from '@/app/lib/constants'export async function generateSitemaps() {return [{ id: 0 }, { id: 1 }, { id: 2 }]
}export default async function sitemap({ id }: { id: number }): Promise<MetadataRoute.Sitemap> {const start = id * 50000const end = start + 50000const products = await getProducts(`SELECT id, date FROM products WHERE id BETWEEN ${start} AND ${end}`)return products.map((product) => ({url: `${BASE_URL}/product/${product.id}`,lastModified: product.date,}))
}
📌 访问 /product/sitemap/1.xml
,你会看到部分站点地图。 ✅ 适用场景
- 站点超过 50,000 个 URL(Google 单个
sitemap.xml
限制)。 - 电商、博客、新闻类站点 需要拆分站点地图。
📌 3. Next.js 内置 sitemap.ts
vs. next-sitemap
Next.js 提供了 内置 sitemap.ts
生成 sitemap.xml
的功能,但社区中也有专门的 next-sitemap
库用于生成站点地图。那么,这两者有什么区别?应该选择哪种方式呢?本文将深入对比它们的特点、适用场景和优缺点**。
3.1 Next.js 内置 sitemap.ts
📌 Next.js 13+ 提供的 sitemap.ts
是一种原生支持**的方式,可以在 app/sitemap.ts
文件中定义站点地图,并自动生成 sitemap.xml
。
✅ 特点
- 基于
app/sitemap.ts
:无需额外安装依赖,Next.js 原生支持。 - 动态生成:支持
**lastModified
自动更新时间。 - 支持多语言 (
hreflang
) 和多sitemap
结构。 - 不需要手动执行命令,访问
/sitemap.xml
即可获取站点地图。
✅ 优点
- 内置支持:不需要安装
next-sitemap
,减少外部依赖。 - 自动化:无需手动运行
npx
命令,每次访问/sitemap.xml
都是最新的。 - 支持
hreflang
:适用于多语言网站。
🚨 缺点
- 功能较基础:不支持自动解析
next
的pages
目录结构,需要手动添加 URL。 - 不适用于大型网站:
sitemap.ts
适用于小型/中型站点,但对于有 10w+ URL 的大站,性能可能有限。
3.2 next-sitemap
📌 next-sitemap
是 Next.js 官方推荐的 sitemap.xml
生成工具,适用于大型项目,可自动爬取 pages/
目录,批量生成 sitemap.xml
。
✅ 特点
- 支持 SSR/SSG:可自动抓取
next.config.js
中的pages/
目录。 - 支持
robots.txt
生成,无需手写。 - 支持
sitemap index
(多个sitemap.xml
文件)。 - 提供
next-sitemap.js
配置文件,可以批量管理 URL,无需手动维护sitemap.ts
。
📌 安装 next-sitemap
npm install next-sitemap
📌 配置 next-sitemap.config.js
module.exports = {siteUrl: 'https://example.com', // 站点根路径generateRobotsTxt: true, // 自动生成 robots.txtsitemapSize: 5000, // 拆分 sitemap.xmlchangefreq: 'daily', // 默认所有页面更新时间priority: 0.8, // 默认优先级exclude: ['/admin', '/private'], // 排除不想被索引的页面
}
📌 运行命令,生成 sitemap.xml
npx next-sitemap
📌 生成的 sitemap.xml
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://example.com/sitemap-0.xml</loc></sitemap><sitemap><loc>https://example.com/sitemap-1.xml</loc></sitemap>
</sitemapindex>
✅ 优点
- 自动解析
pages
目录,无需手动维护 URL。 - 支持
robots.txt
,可自动生成并配置。 - 适用于大规模网站,可以拆分多个
sitemap.xml
,每个最多 50,000 个 URL。 - 支持
next export
,可用于静态站点。
🚨 缺点
- 需要手动执行
npx next-sitemap
以生成sitemap.xml
,不像sitemap.ts
那样是实时的。 - 需要额外安装依赖,增加项目体积。
3.3 sitemap.ts
vs. next-sitemap
对比
特性 | **Next.js sitemap.ts | **next-sitemap |
---|---|---|
是否需要安装依赖 | ❌ 不需要 | ✅ 需要 (next-sitemap ) |
是否自动更新 | ✅ 实时生成 | ❌ 需要 npx 运行 |
是否支持 robots.txt | ❌ 需手动写 robots.ts | ✅ 自动生成 |
是否支持 hreflang | ✅ 支持 | ✅ 支持 |
是否适合大站点 | ✅ 可拆分多个 sitemap | ✅ 更适合,自动拆分 |
是否支持 next export | ❌ 仅支持 app/ 目录 | ✅ 适用于 pages/ 目录 |
是否支持 sitemap index | ✅ 通过 generateSitemaps | ✅ 自动拆分 |
✅ 推荐选择
- 如果你的网站规模较小(小于 50,000 个 URL),并且在
app/
目录下开发,建议使用sitemap.ts
。 - 如果你的网站是一个大型站点(超过 50,000 个 URL),或者使用
pages/
目录,建议使用next-sitemap
,可以自动解析目录并生成多个sitemap.xml
。 - 如果你还需要
robots.txt
自动生成,next-sitemap
是更好的选择。
📌 4. 总结
Next.js 提供了 强大的内置 SEO 工具,简化了 SEO 配置:
- ✅
metadata
API** 轻松设置<title>
、meta
、canonical
- ✅
robots.ts
自动生成robots.txt
,控制爬虫行为 - ✅
sitemap.ts
生成sitemap.xml
,加快搜索引擎索引 - ✅ 多语言
hreflang
轻松管理,提高全球搜索排名
利用 Next.js,你可以 更轻松地管理 SEO,提升网站在搜索引擎中的可见度!🚀
相关文章:
SEO炼金术(4)| Next.js SEO 全攻略
在上一篇文章 SEO炼金术(3)| 深入解析 SEO 关键要素 中,我们深入解析了 SEO 关键要素,包括 meta 标签、robots.txt、canonical、sitemap.xml 和 hreflang,并探讨了它们在搜索引擎优化(SEO)中的作…...
每日十个计算机专有名词 (7)
Metasploit 词源:Meta(超越,超出) exploit(漏洞利用) Metasploit 是一个安全测试框架,用来帮助安全专家(也叫渗透测试人员)发现和利用计算机系统中的漏洞。你可以把它想…...

StarRocks 在爱奇艺大数据场景的实践
作者:林豪,爱奇艺大数据 OLAP 服务负责人 小编导读: 本文整理自爱奇艺工程师在 StarRocks 年度峰会的分享,介绍了爱奇艺 OLAP 引擎演化及引入 StarRocks 后的效果。 在广告业务中,StarRocks 替换 ImpalaKudu 后&#x…...

蓝桥杯好题推荐----高精度乘法
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 题目链接 P1303 A*B Problem - 洛谷https://www.luogu.com.cn/problem/P1303 解题思路 这道题的思路,其实和前面差不多,我们主要说一下最为关键的部分&…...

Linux网络 数据链路层
在Linux网络中,数据链路层位于物理层之上,网络层之下,其主要职责是将网络层的IP数据包封装成帧,并通过物理链路发送到目标设备。同时,它还负责接收来自物理层的帧,并将其解封装为数据包,传递给网…...

量子计算可能改变世界的四种方式
世界各地的组织和政府正将数十亿美元投入到量子研究与开发中,谷歌、微软和英特尔等公司都在竞相实现量子霸权。 这其中的利害关系重大,有这么多重要的参与者,量子计算机的问世可能指日可待。 为做好准备,,我们必须了…...

React 组件基础介绍
基本概念:一个组件就是用户界面的一部分,可以有自己的逻辑和外观,组件之间可以互相嵌套、复用多次。每个组件就是一个首字母大写的函数,内部存放了组件的逻辑和试图UI,渲染组件只需要把组件 当成 标签 书写。App 可以视…...
ETL系列-数据抽取(Extract)
ETL的过程 1、数据抽取:确定数据源,定义数据接口,选择数据抽取方法(主动抽取或由源系统推送)。 2、数据清洗:处理不完整数据、错误数据、重复数据等,确保数据的准确性和一致性。(是…...
java八股文之框架
1.Spring框架中的Bean是否线程安全的 Spring框架中的Bean默认是单例的,不是线程安全的。因为一般在Spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的…...

【大模型】Ubuntu下 fastgpt 的部署和使用
前言 本次安装的版本为 fastgpt:v4.8.8-fix2。 最新版本fastgpt:v4.8.20-fix2 问答时报错,本着跑通先使用起来,就没有死磕下去,后面bug解了再进行记录。 github连接:https://github.com/labring/FastGPT fastgpt 安装说明&…...
小程序中头像昵称填写
官方文档 参考小程序用户头像昵称获取规则调整公告 新的小程序版本不能通过wx.getUserProfile和wx.getUserInfo获取用户信息 <van-field label"{{Avatar}}" label-class"field-label" right-icon-class"field-right-icon-class"input-class&…...

卷积神经网络(cnn,类似lenet-1,八)
我们第一层用卷积核,前面已经成功,现在我们用两层卷积核: 结构如下,是不是很想lenet-1,其实我们24年就实现了sigmoid版本的: cnn突破九(我们的五层卷积核bpnet网络就是lenet-1)-CS…...

【NLP 27、文本分类任务 —— 传统机器学习算法】
不要抓着枯叶哭泣,你要等待初春的新芽 —— 25.1.23 一、文本分类任务 定义:预先设定好一个文本类别集合,对于一篇文本,预测其所属的类别 例如: 情感分析: 这家饭店太难吃了 —> 正类 …...

Go红队开发—并发编程
文章目录 并发编程go协程chan通道无缓冲通道有缓冲通道创建⽆缓冲和缓冲通道 等协程sync.WaitGroup同步Runtime包Gosched()Goexit() 区别 同步变量sync.Mutex互斥锁atomic原子变量 SelectTicker定时器控制并发数量核心机制 并发编程阶段练习重要的细节端口扫描股票监控 并发编程…...
Oracle 导出所有表索引的创建语句
在Oracle数据库中,导出所有表的索引创建语句通常涉及到使用数据字典视图来查询索引的定义,然后生成对应的SQL语句。你可以通过查询DBA_INDEXES或USER_INDEXES视图(取决于你的权限和需求)来获取这些信息。 使用DBA_INDEXES视图 如…...
使用Docker方式一键部署MySQL和Redis数据库详解
一、前言 数据库是现代应用开发中不可或缺的一部分,MySQL和Redis作为两种广泛使用的数据库系统,分别用于关系型数据库和键值存储。本文旨在通过Docker和Docker Compose的方式,提供一个简洁明了的一键部署方案,确保数据库服务的稳…...

2020年蓝桥杯Java B组第二场题目+部分个人解析
#A:门牌制作 624 解一: public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二: public static void main(String[] args) {…...

[深度学习] 大模型学习2-提示词工程指北
在文章大语言模型基础知识里,提示词工程(Prompt Engineering)作为大语言模型(Large Language Model,LLM)应用构建的一种方式被简要提及,本文将着重对该技术进行介绍。 提示词工程就是在和LLM聊…...

FPGA之硬件设计笔记-持续更新中
目录 1、说在前面2、FPGA硬件设计总计说明3、 原理图详解 - ARITX - 7 系列3.1 顶层框图介绍3.2 FPGA 电源sheet介绍:3.2.1 bank 14 和 bank 15的供电3.2.2 bank 0的供电3.2.3 Bank34 35 的供电 3.3 核电压和RAM电压以及辅助电压 4 原理图详解-- Ultrascale ARTIX4.…...
vue cli 与 vite的区别
1、现在我们一般会用vite来构建vue3的项目。 2、之前一开始的时候,我们会用vue cli的vue create来构建项目。 3、它们之间有什么区别呢? 1. 设计理念 Vue CLI: 是 Vue.js 官方提供的命令行工具,主要用于快速搭建 Vue 项目。 提…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...