diff --git "a/docs/doc/\360\237\222\271 \345\244\247\345\216\202\351\235\242\347\273\217/kxspepu7t1b7783v.md" "b/docs/doc/\360\237\222\271 \345\244\247\345\216\202\351\235\242\347\273\217/kxspepu7t1b7783v.md"
index b100d77..30c46ea 100644
--- "a/docs/doc/\360\237\222\271 \345\244\247\345\216\202\351\235\242\347\273\217/kxspepu7t1b7783v.md"
+++ "b/docs/doc/\360\237\222\271 \345\244\247\345\216\202\351\235\242\347\273\217/kxspepu7t1b7783v.md"
@@ -2,7 +2,7 @@
title: 计算机网络面试必问
urlname: kxspepu7t1b7783v
date: '2024-08-07 12:53:57'
-updated: '2024-09-24 20:58:29'
+updated: '2024-10-04 09:08:21'
cover: 'https://cdn.nlark.com/yuque/0/2024/png/22382235/1722953399419-c3811ae6-707c-48c1-8a48-d32f46d24b40.png?x-oss-process=image%2Fformat%2Cwebp'
description: HTTP常用的状态码及其含义HTTP状态码是用来表示服务器响应客户端请求的状态。常用的状态码分为以下几类:状态码含义200OK:请求成功,服务器已返回所请求的数据。201Created:请求成功并且服务器创建了新的资源。204No Content:服务器成功处理了请求,但没有返回任何内容。30...
---
@@ -667,11 +667,7 @@ if (!receivedToken.equals(sessionToken)) {
-**「参考回答」**:
-
-WebSocket和socket虽然名字相似,但它们在本质上有很大的区别:
-
-
+**「参考回答」**:WebSocket和socket虽然名字相似,但它们在本质上有很大的区别,一句话,WebSocket是HTML5新增的协议,用于解决浏览器与服务器全双工通信的问题,而Socket是一个更底层的概念,是网络编程的基础。
1. **概念层面**:
- **Socket**:是一个**底层的通信接口**,是应用层与TCP/IP协议族通信的中间软件抽象层。它是一组接口,在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket后面。
@@ -692,7 +688,7 @@ WebSocket和socket虽然名字相似,但它们在本质上有很大的区别
- **Socket**:通常**不涉及跨域**问题。
- **WebSocket**:**支持跨域**通信。
-总的来说,WebSocket是HTML5新增的协议,用于解决浏览器与服务器全双工通信的问题,而Socket是一个更底层的概念,是网络编程的基础。
+
# DoS、DDoS、DRDoS攻击的区别
**「面试官」**:请解释一下什么是DoS、DDoS、DRDoS攻击?
diff --git "a/docs/doc/\360\237\222\271 \345\244\247\345\216\202\351\235\242\347\273\217/\351\235\242\350\257\225\347\234\237\351\242\230/iuv8q8c4vg3h6tg8.md" "b/docs/doc/\360\237\222\271 \345\244\247\345\216\202\351\235\242\347\273\217/\351\235\242\350\257\225\347\234\237\351\242\230/iuv8q8c4vg3h6tg8.md"
new file mode 100644
index 0000000..c6bf2c0
--- /dev/null
+++ "b/docs/doc/\360\237\222\271 \345\244\247\345\216\202\351\235\242\347\273\217/\351\235\242\350\257\225\347\234\237\351\242\230/iuv8q8c4vg3h6tg8.md"
@@ -0,0 +1,64 @@
+---
+title: 字节三次面试面经
+urlname: iuv8q8c4vg3h6tg8
+date: '2024-10-02 23:07:25'
+updated: '2024-10-02 23:10:21'
+description: 一面MySQL相关MySQL CPU飙高如何排查?整个系统的性能瓶颈是什么?如何排查的慢SQL?MySQL的索引结构是什么?详细讲一下B +树。MySQL的数据在B +树上是如何存储的?GC垃圾回收相关讲一下GC垃圾回收。GC垃圾回收时CPU大概会提升多少?Redis相关Redis的过期删除机...
+---
+# 一面
+1. **MySQL相关**
+ - MySQL CPU飙高如何排查?
+ - 整个系统的性能瓶颈是什么?
+ - 如何排查的慢SQL?
+ - MySQL的索引结构是什么?详细讲一下B +树。MySQL的数据在B +树上是如何存储的?
+2. **GC垃圾回收相关**
+ - 讲一下GC垃圾回收。
+ - GC垃圾回收时CPU大概会提升多少?
+3. **Redis相关**
+ - Redis的过期删除机制是什么?他的定时删除会发生冲突吗?
+ - Redis内存淘汰策略
+4. **IO相关**
+ - 讲一下IO多路复用,线程的资源占用大概是多少?
+ - select、poll、epoll的区别。为什么epoll性能好?
+5. **算法题**
+ - 奇偶链表排序
+
+# 二面
+1. **EPoll相关**
+ - EPoll是什么?
+2. **IO模式相关**
+ - 同步IO和异步IO的区别在哪?如何将同步IO修改为异步IO?
+ - 常见的IO模式有哪些?这些IO模式有哪些区别?
+3. **进程和线程相关**
+ - 进程和线程的区别?
+ - GMP模型中线程是一个什么样的角色?
+ - 进程间的通信方式?
+ - 命名管道和匿名管道的区别。
+4. **磁盘访问相关**
+ - 应用访问一块磁盘上的数据需要哪些步骤?讲一下上述过程中页表发生的变化。如何理解DMA?
+5. **数据库设计相关**
+ - 设计一个数据库的表,需要遵循哪些原则?
+ - 优化MySQL插入可以从哪几个角度进行优化?
+6. **网络相关**
+ - Socket和WebSocket的区别?socket的组成
+ - TCP拥塞控制包括哪些阶段?
+7. **算法和数据结构相关**
+ - 如何判断1亿个数某一个数是否存在,数的取值范围是1到1万亿。需要精确判断。
+ - 字符串反转
+
+# 三面
+1. **MySQL锁相关**
+ - MySQL锁机制讲一下。锁相关的这个使用上面有什么需要注意的吗?
+ - MySQL读select的性能优化方案。
+ - MySQL读写分离和水平扩展的方式。
+ - 读多写少的场景,数据不经常发生变化,如何处理?
+2. **Redis相关**
+ - redis的性能受限于什么?如果需要对Redis性能进行扩展的话怎么做?
+ - Redis集群模式和主从模式有什么区别?集群模式下热key如何处理?
+ - 如何保障缓存和数据库的一致性?删除缓存后的缓存击穿如何处理?
+3. **数据结构相关**
+ - zset有了解过吗?跳表有什么好处?zrange和zrangeby的时间复杂度是多少?
+4. **场景题和算法题**
+ - 场景题:打赏排行榜
+ - 大数乘法
+
diff --git "a/docs/doc/\360\237\224\245 \347\250\213\345\272\217\345\221\230\350\207\252\346\210\221\344\277\256\345\205\273/\346\234\200\345\274\272\345\211\215\347\253\257\360\237\217\267\357\270\217/satyn7anq2cv9p7p.md" "b/docs/doc/\360\237\224\245 \347\250\213\345\272\217\345\221\230\350\207\252\346\210\221\344\277\256\345\205\273/\346\234\200\345\274\272\345\211\215\347\253\257\360\237\217\267\357\270\217/satyn7anq2cv9p7p.md"
index 652e443..ada2be8 100644
--- "a/docs/doc/\360\237\224\245 \347\250\213\345\272\217\345\221\230\350\207\252\346\210\221\344\277\256\345\205\273/\346\234\200\345\274\272\345\211\215\347\253\257\360\237\217\267\357\270\217/satyn7anq2cv9p7p.md"
+++ "b/docs/doc/\360\237\224\245 \347\250\213\345\272\217\345\221\230\350\207\252\346\210\221\344\277\256\345\205\273/\346\234\200\345\274\272\345\211\215\347\253\257\360\237\217\267\357\270\217/satyn7anq2cv9p7p.md"
@@ -1,8 +1,8 @@
---
-title: 【教程】不一样的Nextjs!
+title: 「万赞」不一样的Nextjs!
urlname: satyn7anq2cv9p7p
date: '2024-09-30 11:08:19'
-updated: '2024-09-30 11:36:11'
+updated: '2024-09-30 22:39:53'
description: '---is_nav: falsenav_path: nextjskeywords: Nextjs,Nextjs教程tags: [''Nextjs'']---在前端开发的广袤天地中,Next.js 犹如一颗璀璨的新星,吸引着无数开发者的目光。本专栏——“聊点不一样的 Next.js!”将带你踏上一场...'
is_nav: false
nav_path: nextjs
diff --git "a/docs/doc/\360\237\224\245 \347\250\213\345\272\217\345\221\230\350\207\252\346\210\221\344\277\256\345\205\273/\346\234\200\345\274\272\345\211\215\347\253\257\360\237\217\267\357\270\217/\343\200\214\344\270\207\350\265\236\343\200\215\344\270\215\344\270\200\346\240\267\347\232\204Nextjs\357\274\201/negzqyxtxszvawof.md" "b/docs/doc/\360\237\224\245 \347\250\213\345\272\217\345\221\230\350\207\252\346\210\221\344\277\256\345\205\273/\346\234\200\345\274\272\345\211\215\347\253\257\360\237\217\267\357\270\217/\343\200\214\344\270\207\350\265\236\343\200\215\344\270\215\344\270\200\346\240\267\347\232\204Nextjs\357\274\201/negzqyxtxszvawof.md"
new file mode 100644
index 0000000..c63b5cb
--- /dev/null
+++ "b/docs/doc/\360\237\224\245 \347\250\213\345\272\217\345\221\230\350\207\252\346\210\221\344\277\256\345\205\273/\346\234\200\345\274\272\345\211\215\347\253\257\360\237\217\267\357\270\217/\343\200\214\344\270\207\350\265\236\343\200\215\344\270\215\344\270\200\346\240\267\347\232\204Nextjs\357\274\201/negzqyxtxszvawof.md"
@@ -0,0 +1,376 @@
+---
+title: 「项目」开发一个导航网站
+urlname: negzqyxtxszvawof
+date: '2024-09-30 22:40:04'
+updated: '2024-10-08 08:52:01'
+cover: 'https://cdn.nlark.com/yuque/0/2024/png/22382235/1727781047419-0223592a-fe80-4c9b-b389-4e833643c4f9.png'
+description: '背景在工作学习中,发现一个问题,那就是有一个导航网站非常重要!无意之中,看到一个很棒的导航网站,打算基于此开发一个,记录一下开发的过程。Demo仓库:https://github.com/wangfengyuan/frontend-nav记录tailwindcss的scrollbarhttps...'
+---
+# 背景
+在工作学习中,发现一个问题,那就是有一个导航网站非常重要!
+
+
+
+无意之中,看到一个很棒的导航网站,打算基于此开发一个,记录一下开发的过程。
+
+
+
+Demo仓库:[https://github.com/wangfengyuan/frontend-nav](https://github.com/wangfengyuan/frontend-nav)
+
+
+
+# 记录
+## tailwindcss的scrollbar
+[https://adoxography.github.io/tailwind-scrollbar/examples](https://adoxography.github.io/tailwind-scrollbar/examples)
+
+
+
+## prisma的env没有读取到dababase_url
+参考这个帖子:
+
+[https://stackoverflow.com/questions/67796217/prisma-getting-environment-variable-not-found-error-message-when-running-graph](https://stackoverflow.com/questions/67796217/prisma-getting-environment-variable-not-found-error-message-when-running-graph)
+
+[https://www.prisma.io/docs/orm/more/development-environment/environment-variables/managing-env-files-and-setting-variables#manage-env-files-manually](https://www.prisma.io/docs/orm/more/development-environment/environment-variables/managing-env-files-and-setting-variables#manage-env-files-manually)
+
+两种解法:
+
+1、安装dotenv
+
+2、直接env.local改名为env
+
+
+
+## 登陆怎么做?
+### 测试账号
+```typescript
+test1997321@qq.com
+ test1997322@qq.com
+ test1997323@qq.com
+ test1997324@qq.com
+ test1997325@qq.com
+ test1997326@qq.com ** admin
+123456789
+
+email: '1373685219@qq.com',
+ password: 'leilei1997321me',
+```
+
+
+
+### bcrypt-ts到底怎么用?
+!!!注意!不能够把加盐的函数直接去比较,因为每次生产的都是不一样的!
+
+![](https://oss1.aistar.cool/elog-offer-now/5b3f4eb25fd2485c267fac74c6ab1b25.png)
+
+
+
+
+
+
+
++ 如果是Github模式
+
+0、参考[https://authjs.dev/getting-started/authentication/oauth](https://authjs.dev/getting-started/authentication/oauth)
+
+1、先在github申请appid和secret,填写url链接
+
+2、而后在nextjs的env中写上
+
+![](https://oss1.aistar.cool/elog-offer-now/dafedf58f2ded0e54eaa829f0e455ba8.png)
+
+
+
+
+
++ 如果是账号密码模式
+
+[https://authjs.dev/getting-started/authentication/credentials](https://authjs.dev/getting-started/authentication/credentials)
+
+![](https://oss1.aistar.cool/elog-offer-now/8bf25afc09f6f8a26eddac0ae674ff08.png)
+
+
+
+必须这样!!!官方文档是错的!!
+
+![](https://oss1.aistar.cool/elog-offer-now/225bfa5746d131c00f74d01b18afb545.png)
+
+
+
+### from的action类型错误?
+不用管···
+
+
+
+[https://www.reddit.com/r/nextjs/comments/1616bh9/form_action_not_working/](https://www.reddit.com/r/nextjs/comments/1616bh9/form_action_not_working/)
+
+[https://github.com/vercel/next.js/discussions/56581](https://github.com/vercel/next.js/discussions/56581)
+
+
+
+### client和server的调用方式不一样··
+![](https://oss1.aistar.cool/elog-offer-now/b2ccc78c2593e903422fa45202e206f7.png)
+
+
+
+![](https://oss1.aistar.cool/elog-offer-now/014c40e2908cf8a21fd4b2d44a3ab495.png)
+
+
+
+### 客户端的组件又报错了CSRF···
+![](https://oss1.aistar.cool/elog-offer-now/eacc76c02bab8c968a0d4a5c744a1d9a.png)
+
+
+
+发现是环境变量错了,直接注释掉就行:
+
+![](https://oss1.aistar.cool/elog-offer-now/fea872cb19874f9f49372edc3a78501c.png)
+
+## shadcn/ui的Button没有loading,怎么办?
+直接参考这个文章:[https://blog.typeart.cc/add-loading-spinner-in-shadcn-ui-button/](https://blog.typeart.cc/add-loading-spinner-in-shadcn-ui-button/)
+
+
+
+```typescript
++ import { Loader2 } from 'lucide-react';
+
+
+// ... 略過前面 cva 部份
+
+export interface ButtonProps
+ extends React.ButtonHTMLAttributes,
+ VariantProps {
+ asChild?: boolean;
++ loading?: boolean;
+}
+
+// 將 loading 與 children 從 props 取出來
+const Button = React.forwardRef(
++ ({ className, variant, size, asChild = false, loading, children, ...props }, ref) => {
+ const Comp = asChild ? Slot : 'button';
+ return (
+
++ {loading ? : children}
+
+ );
+ },
+);
+Button.displayName = 'Button';
+```
+
+## 怎么使用safe-server-action?
+官方文档:[https://next-safe-action.dev/](https://next-safe-action.dev/)
+
+
+
+## Zod应该怎么使用?比如声明了一个结构体,应该怎么赋值呢?
+官方文档:[https://zod.dev/?id=basic-usage](https://zod.dev/?id=basic-usage)
+
+
+
+这样:
+
+```typescript
+import { z } from "zod";
+
+const User = z.object({
+ username: z.string(),
+});
+
+User.parse({ username: "Ludwig" });
+
+// extract the inferred type
+type User = z.infer;
+// { username: string }
+```
+
+## 怎么实现选择Emoji?
+![](https://oss1.aistar.cool/elog-offer-now/aa0b3d1e7f8789bfd4e1e11e5b236816.png)
+
+
+
+如上图,我需要在这个输入框,可以选择表情或者分组地址。
+
+
+
+找到一个库,在这里:[https://ealush.com/emoji-picker-react/](https://ealush.com/emoji-picker-react/)
+
+很好用,可以选择屏蔽某些不需要的Emoji,比如Flag····
+
+
+
+当选择表情之后,会有一个callBack,输出的内容是当前的表情信息:
+
+```typescript
+{
+ "activeSkinTone": "neutral",
+ "emoji": "😆",
+ "imageUrl": "https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f606.png",
+ "isCustom": false,
+ "names": [
+ "laughing",
+ "satisfied",
+ "smiling face with open mouth and tightly-closed eyes"
+ ],
+ "unified": "1f606",
+ "unifiedWithoutSkinTone": "1f606"
+}
+```
+
+## 发现一个问题useAction的操作是异步的!
+```typescript
+// 调用Action进行更新
+ const AddCategoryAction = useAction(AddCategory)
+
+
+```
+
+由于是hook来的,在onclick函数里是异步的,造成数据不一致,怎么办啊!
+
+
+
+两种方法:
+
+1、换成使用const res = await AddCategoryAction.**executeAsync**(newCategory)
+
+
+
+2、使用useEffect来监听
+
+
+
+```typescript
+useEffect(() => {
+ if (!AddCategoryAction.isPending) {
+ if (AddCategoryAction.hasErrored) {
+ toast(
+ JSON.stringify(AddCategoryAction.result.validationErrors) ??
+ "分类添加失败,请重试"
+ )
+ } else {
+ toast("分类添加成功")
+ // 你可以在这里执行其他操作,比如关闭对话框或重置表单
+ }
+ }
+ }, [
+ AddCategoryAction.isPending,
+ AddCategoryAction.hasErrored,
+ AddCategoryAction.result,
+ ])
+```
+
+## Icon可以选择的网站~
+
+
+[https://lucide.dev/guide/packages/lucide-react](https://lucide.dev/guide/packages/lucide-react)
+
+
+
+## 如何从结构体中去除某个字段?-Omit
+在 TypeScript 中没有严格意义上的“结构体”概念,但可以通过对象类型或接口来模拟。要从一个对象中去除某个字段,可以通过类型断言和对象解构的方式来实现。
+
+假设你有一个类型如下:
+
+```typescript
+interface MyType {
+ field1: string;
+ field2: number;
+ field3: boolean;
+}
+```
+
+现在要去除 `field2` 字段,可以这样做:
+
+```typescript
+const obj: MyType = { field1: 'some string', field2: 123, field3: true };
+
+const { field2,...rest } = obj;
+
+const newObj = rest as Omit;
+console.log(newObj);
+```
+
+这里使用了对象解构和类型断言来创建一个新的对象,不包含指定的字段。
+
+或者可以使用 `Omit` 类型工具来创建一个新的类型,然后将原对象转换为新类型:
+
+```typescript
+type NewType = Omit;
+
+const newObj2: NewType = obj as NewType;
+console.log(newObj2);
+```
+
+## 遇到一个问题form的值没有更新啊!SetValue
+有一个issue已经提到了:[https://github.com/react-hook-form/react-hook-form/issues/456](https://github.com/react-hook-form/react-hook-form/issues/456)
+
+
+
+其实关键在于SetValue不会导致form的组件重新更新。
+
+
+
+如果想实现setValue之后,组件内容更新,需要useEffect进行组件re-render。
+
+
+
+## diaglog里的form数据没有被清空。
+发现新建一个分类之后,再次点开新建,里面的内容还是上一次保存的数据,因此需要做一次清空。
+
+![](https://oss1.aistar.cool/elog-offer-now/7e7a3ca698b98f5fe7d2e4c995ebee43.png)
+
+## TODO 图片尺寸不对···
+![](https://oss1.aistar.cool/elog-offer-now/f4de64e9a4eb419ac16e4bf5cacdc5ee.png)
+
+源代码如下:
+
+![](https://oss1.aistar.cool/elog-offer-now/a5313ba3b7c3cea1da0354b7dc945abc.png)
+
+
+
+到底什么原因呢?
+
+
+
+## 部署在vercel之后,一直报错Prisma is not defined
+谷歌了半天,一直没找到问题出在哪··
+
+
+
+发现是没有import····为什么编辑器没有提示啊?
+
+![](https://oss1.aistar.cool/elog-offer-now/a08087d143007e00c946bee258021f86.png)
+
+
+
+## TODO 怎么实现点击url跳转对应的页面,但是url不变?
+
+
diff --git a/elog.cache.json b/elog.cache.json
index 0020712..d32114c 100644
--- a/elog.cache.json
+++ b/elog.cache.json
@@ -12594,12 +12594,12 @@
{
"id": 181246765,
"doc_id": "kxspepu7t1b7783v",
- "updated": 1727182709000,
+ "updated": 1728004101000,
"properties": {
"title": "计算机网络面试必问",
"urlname": "kxspepu7t1b7783v",
"date": "2024-08-07 12:53:57",
- "updated": "2024-09-24 20:58:29",
+ "updated": "2024-10-04 09:08:21",
"cover": "https://cdn.nlark.com/yuque/0/2024/png/22382235/1722953399419-c3811ae6-707c-48c1-8a48-d32f46d24b40.png?x-oss-process=image%2Fformat%2Cwebp",
"description": "HTTP常用的状态码及其含义HTTP状态码是用来表示服务器响应客户端请求的状态。常用的状态码分为以下几类:状态码含义200OK:请求成功,服务器已返回所请求的数据。201Created:请求成功并且服务器创建了新的资源。204No Content:服务器成功处理了请求,但没有返回任何内容。30..."
},
@@ -13478,12 +13478,12 @@
{
"id": 188627200,
"doc_id": "satyn7anq2cv9p7p",
- "updated": 1727667371000,
+ "updated": 1727707193000,
"properties": {
- "title": "【教程】不一样的Nextjs!",
+ "title": "「万赞」不一样的Nextjs!",
"urlname": "satyn7anq2cv9p7p",
"date": "2024-09-30 11:08:19",
- "updated": "2024-09-30 11:36:11",
+ "updated": "2024-09-30 22:39:53",
"description": "---is_nav: falsenav_path: nextjskeywords: Nextjs,Nextjs教程tags: ['Nextjs']---在前端开发的广袤天地中,Next.js 犹如一颗璀璨的新星,吸引着无数开发者的目光。本专栏——“聊点不一样的 Next.js!”将带你踏上一场...",
"is_nav": false,
"nav_path": "nextjs",
@@ -13505,6 +13505,61 @@
"realName": "satyn7anq2cv9p7p",
"relativePath": "/🔥 程序员自我修养/最强前端🏷️/satyn7anq2cv9p7p.md",
"docPath": "docs/doc/🔥 程序员自我修养/最强前端🏷️"
+ },
+ {
+ "id": 188692563,
+ "doc_id": "negzqyxtxszvawof",
+ "updated": 1728348721000,
+ "properties": {
+ "title": "「项目」开发一个导航网站",
+ "urlname": "negzqyxtxszvawof",
+ "date": "2024-09-30 22:40:04",
+ "updated": "2024-10-08 08:52:01",
+ "cover": "https://cdn.nlark.com/yuque/0/2024/png/22382235/1727781047419-0223592a-fe80-4c9b-b389-4e833643c4f9.png",
+ "description": "背景在工作学习中,发现一个问题,那就是有一个导航网站非常重要!无意之中,看到一个很棒的导航网站,打算基于此开发一个,记录一下开发的过程。Demo仓库:https://github.com/wangfengyuan/frontend-nav记录tailwindcss的scrollbarhttps..."
+ },
+ "catalog": [
+ {
+ "title": "🔥 程序员自我修养",
+ "doc_id": "negzqyxtxszvawof"
+ },
+ {
+ "title": "最强前端🏷️",
+ "doc_id": "negzqyxtxszvawof"
+ },
+ {
+ "title": "「万赞」不一样的Nextjs!",
+ "doc_id": "negzqyxtxszvawof"
+ }
+ ],
+ "realName": "negzqyxtxszvawof",
+ "relativePath": "/🔥 程序员自我修养/最强前端🏷️/「万赞」不一样的Nextjs!/negzqyxtxszvawof.md",
+ "docPath": "docs/doc/🔥 程序员自我修养/最强前端🏷️/「万赞」不一样的Nextjs!"
+ },
+ {
+ "id": 188843369,
+ "doc_id": "iuv8q8c4vg3h6tg8",
+ "updated": 1727881821000,
+ "properties": {
+ "title": "字节三次面试面经",
+ "urlname": "iuv8q8c4vg3h6tg8",
+ "date": "2024-10-02 23:07:25",
+ "updated": "2024-10-02 23:10:21",
+ "description": "一面MySQL相关MySQL CPU飙高如何排查?整个系统的性能瓶颈是什么?如何排查的慢SQL?MySQL的索引结构是什么?详细讲一下B +树。MySQL的数据在B +树上是如何存储的?GC垃圾回收相关讲一下GC垃圾回收。GC垃圾回收时CPU大概会提升多少?Redis相关Redis的过期删除机..."
+ },
+ "catalog": [
+ {
+ "title": "💹 大厂面经",
+ "doc_id": "iuv8q8c4vg3h6tg8"
+ },
+ {
+ "title": "面试真题",
+ "doc_id": "iuv8q8c4vg3h6tg8"
+ }
+ ],
+ "realName": "iuv8q8c4vg3h6tg8",
+ "relativePath": "/💹 大厂面经/面试真题/iuv8q8c4vg3h6tg8.md",
+ "docPath": "docs/doc/💹 大厂面经/面试真题"
}
],
"catalog": [
@@ -13855,11 +13910,11 @@
},
{
"type": "DOC",
- "title": "【教程】不一样的Nextjs!",
+ "title": "「万赞」不一样的Nextjs!",
"uuid": "2cJ18ZvNWGR6hhHx",
"url": "satyn7anq2cv9p7p",
"prev_uuid": "Oi5FMtop6oZm1oNe",
- "sibling_uuid": "65Zy9C8l2pAx_MzP",
+ "sibling_uuid": "jnYOD86cVlBDX55q",
"child_uuid": "-AFgYDHw_54vMFRY",
"parent_uuid": "Oi5FMtop6oZm1oNe",
"doc_id": 188627200,
@@ -13874,7 +13929,7 @@
"uuid": "-AFgYDHw_54vMFRY",
"url": "le4uyv5kbaf9gy65",
"prev_uuid": "2cJ18ZvNWGR6hhHx",
- "sibling_uuid": "1Lvhxo_-uRpiTKwf",
+ "sibling_uuid": "65Zy9C8l2pAx_MzP",
"child_uuid": "",
"parent_uuid": "2cJ18ZvNWGR6hhHx",
"doc_id": 188631178,
@@ -13883,13 +13938,28 @@
"open_window": 1,
"visible": 1
},
+ {
+ "type": "DOC",
+ "title": "「推荐」三个例子解释Nextjs的ISR、SSR、SSG",
+ "uuid": "65Zy9C8l2pAx_MzP",
+ "url": "hn2yy5i3avufqfhq",
+ "prev_uuid": "-AFgYDHw_54vMFRY",
+ "sibling_uuid": "1Lvhxo_-uRpiTKwf",
+ "child_uuid": "",
+ "parent_uuid": "2cJ18ZvNWGR6hhHx",
+ "doc_id": 188432276,
+ "level": 3,
+ "id": 188432276,
+ "open_window": 1,
+ "visible": 0
+ },
{
"type": "DOC",
"title": "你真的知道Nextjs的api怎么用吗?",
"uuid": "1Lvhxo_-uRpiTKwf",
"url": "rtnwlsk5vh350o83",
- "prev_uuid": "-AFgYDHw_54vMFRY",
- "sibling_uuid": "",
+ "prev_uuid": "65Zy9C8l2pAx_MzP",
+ "sibling_uuid": "LIvU2PY4A3qPVXWp",
"child_uuid": "",
"parent_uuid": "2cJ18ZvNWGR6hhHx",
"doc_id": 188627476,
@@ -13900,25 +13970,25 @@
},
{
"type": "DOC",
- "title": "【付费】三个例子解释Nextjs的ISR、SSR、SSG",
- "uuid": "65Zy9C8l2pAx_MzP",
- "url": "hn2yy5i3avufqfhq",
- "prev_uuid": "2cJ18ZvNWGR6hhHx",
- "sibling_uuid": "jnYOD86cVlBDX55q",
+ "title": "「项目」开发一个导航网站",
+ "uuid": "LIvU2PY4A3qPVXWp",
+ "url": "negzqyxtxszvawof",
+ "prev_uuid": "1Lvhxo_-uRpiTKwf",
+ "sibling_uuid": "",
"child_uuid": "",
- "parent_uuid": "Oi5FMtop6oZm1oNe",
- "doc_id": 188432276,
- "level": 2,
- "id": 188432276,
+ "parent_uuid": "2cJ18ZvNWGR6hhHx",
+ "doc_id": 188692563,
+ "level": 3,
+ "id": 188692563,
"open_window": 1,
- "visible": 0
+ "visible": 1
},
{
"type": "DOC",
"title": "pnpm lockfile版本不一致",
"uuid": "jnYOD86cVlBDX55q",
"url": "ypqbhwx47hgka006",
- "prev_uuid": "65Zy9C8l2pAx_MzP",
+ "prev_uuid": "2cJ18ZvNWGR6hhHx",
"sibling_uuid": "bMLi3II7MP6uNKzl",
"child_uuid": "",
"parent_uuid": "Oi5FMtop6oZm1oNe",
@@ -18975,7 +19045,7 @@
"url": "vxn8883st7lhfom9",
"prev_uuid": "k38gbMVOoHwtcD2F",
"sibling_uuid": "-4qV2TE5gTaU9pS4",
- "child_uuid": "NNGpo_NW1QKe3LNz",
+ "child_uuid": "SJCHophUCpSrCSpm",
"parent_uuid": "uHCIfCp4Xzc-fCfY",
"doc_id": 171465323,
"level": 1,
@@ -18983,12 +19053,27 @@
"open_window": 1,
"visible": 1
},
+ {
+ "type": "DOC",
+ "title": "字节三次面试面经",
+ "uuid": "SJCHophUCpSrCSpm",
+ "url": "iuv8q8c4vg3h6tg8",
+ "prev_uuid": "NcVLTZK8sE8hkJmb",
+ "sibling_uuid": "NNGpo_NW1QKe3LNz",
+ "child_uuid": "",
+ "parent_uuid": "NcVLTZK8sE8hkJmb",
+ "doc_id": 188843369,
+ "level": 2,
+ "id": 188843369,
+ "open_window": 1,
+ "visible": 1
+ },
{
"type": "DOC",
"title": "收钱吧面试真题",
"uuid": "NNGpo_NW1QKe3LNz",
"url": "ubg35bic4t7bekms",
- "prev_uuid": "NcVLTZK8sE8hkJmb",
+ "prev_uuid": "SJCHophUCpSrCSpm",
"sibling_uuid": "ZHHNRSroll5OdyS0",
"child_uuid": "",
"parent_uuid": "NcVLTZK8sE8hkJmb",