diff --git a/.github/workflows/cos.yaml b/.github/workflows/cos.yaml new file mode 100644 index 0000000..e7ed034 --- /dev/null +++ b/.github/workflows/cos.yaml @@ -0,0 +1,41 @@ +name: update to cos + +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: checkout + uses: actions/checkout@master + + - name: install dependencies + run: | + sudo pip install coscmd + sudo pip install tccli + npm i + + - name: build + run: | + npm run docs:build + + - name: confirgure coscmd and tccli + env: + SECRET_ID: ${{ secrets.TCLOUD_API_ID }} + SECRET_KEY: ${{ secrets.TCLOUD_API_KEY }} + BUCKET: hdu-cs-wiki-1307923872 + REGION: ap-shanghai + run: | + coscmd config -a $SECRET_ID -s $SECRET_KEY -b $BUCKET -r $REGION -m 30 -p 10 + tccli configure set secretId $SECRET_ID + tccli configure set secretKey $SECRET_KEY + tccli configure set region $REGION + + - name: upload and refresh cdn + run: | + coscmd upload -rfs --delete ./.vitepress/dist/ / + tccli cdn PurgePathCache --cli-unfold-argument --Paths https://wiki.xyxsw.site/ --FlushType flush \ No newline at end of file diff --git a/.vitepress/config.js b/.vitepress/config.js index 5886a16..0e21794 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -98,7 +98,7 @@ export default defineConfig({ title: "HDU-CS-WIKI", description: "HDU计算机科学讲义", lastUpdated: true, - head: [['script', { async: "async", src: 'https://umami.hdu-cs.wiki/script.js', "data-website-id": "3f11687a-faae-463a-b863-6127a8c28301" }]], + head: [['script', { async: "async", src: 'https://umami.hdu-cs.wiki/script.js', "data-website-id": "3f11687a-faae-463a-b863-6127a8c28301", "data-domains": "wiki.xyxsw.site,hdu-cs.wiki" }]], themeConfig: { // https://vitepress.dev/reference/default-theme-config nav: [ @@ -130,6 +130,7 @@ export default defineConfig({ { text: '1.10如何读论文', link: '/1.杭电生存指南/1.10如何读论文' }, { text: '1.11陷入虚无主义?进来看看吧', link: '/1.杭电生存指南/1.11陷入虚无主义?进来看看吧' }, { text: '1.12程序员如何活久一点', link: '/1.杭电生存指南/1.12程序员如何活久一点' }, + { text: '1.13选课原则与抢课技巧', link: '/1.杭电生存指南/1.13选课原则与抢课技巧' }, ] }, { @@ -580,51 +581,59 @@ export default defineConfig({ items: [ { text: '6.计算机安全', link: '/6.计算机安全/6.计算机安全' }, { - text: '6.2WEB安全', + text: '6.1Web安全', collapsed: true, items: [ - { text: '6.2WEB安全', link: '/6.计算机安全/6.2Web安全' }, - { text: '6.2.1SQL 注入', link: '/6.计算机安全/6.2.1SQL 注入' }, + { text: '6.1Web安全', link: '/6.计算机安全/6.1Web安全' }, + { text: '6.1.1SQL 注入', link: '/6.计算机安全/6.1.1SQL 注入' }, ] }, { - text: '6.3二进制安全', + text: '6.2二进制安全', collapsed: true, items: [ - { text: '6.3二进制安全', link: '/6.计算机安全/6.3二进制安全' }, - { text: '6.3.1基础工具的使用', link: '/6.计算机安全/6.3.1基础工具的使用' }, - { text: '6.3.2软件破解、软件加固', link: '/6.计算机安全/6.3.2软件破解、软件加固' }, + { text: '6.2二进制安全', link: '/6.计算机安全/6.2二进制安全' }, + { text: '6.2.1基础工具的使用', link: '/6.计算机安全/6.2.1基础工具的使用' }, + { text: '6.2.2软件破解、软件加固', link: '/6.计算机安全/6.2.2软件破解、软件加固' }, ] }, - { text: '6.4密码学', link: '/6.计算机安全/6.4密码学' }, + { text: '6.3密码学', link: '/6.计算机安全/6.3密码学' }, + { text: '6.4安全杂项', link: '/6.计算机安全/6.4安全杂项' }, ] }, { - text: '7.Web开发入门', + text: '7.网络应用开发', collapsed: true, items: [ - { text: '7.Web开发入门', link: '/7.Web开发入门/7.Web开发入门' }, + { text: '7.网络应用开发入门', link: '/7.网络应用开发/7.网络应用开发入门' }, { - text: '7.1前端部分', + text: '7.1WEB开发入门', collapsed: true, items: [ - { text: '7.1前端部分', link: '/7.Web开发入门/7.1前端部分' }, - { text: '7.1.1基础部分', link: '/7.Web开发入门/7.1.1基础部分' }, - { text: '7.1.2进阶部分', link: '/7.Web开发入门/7.1.2进阶部分' }, - { text: '7.1.3附录1:前端介绍(详细版)', link: '/7.Web开发入门/7.1.3附录1:前端介绍(详细版)' }, - { text: '7.1.4附录2:大前端开发', link: '/7.Web开发入门/7.1.4附录2:大前端开发' }, - { text: '7.1.5附录3:跨端开发', link: '/7.Web开发入门/7.1.5附录3:跨端开发' }, + { text: '7.1WEB开发入门', link: '/7.网络应用开发/7.1WEB开发入门' }, + { + text: '7.1.1前端部分', + collapsed: true, + items: [ + { text: '7.1.1前端部分', link: '/7.网络应用开发/7.1.1前端部分' }, + { text: '7.1.1.1基础部分', link: '/7.网络应用开发/7.1.1.1基础部分' }, + { text: '7.1.1.2进阶部分', link: '/7.网络应用开发/7.1.1.2进阶部分' }, + { text: '7.1.1.3附录1:前端介绍(详细版)', link: '/7.网络应用开发/7.1.1.3附录1:前端介绍(详细版)' }, + { text: '7.1.1.4附录2:大前端开发', link: '/7.网络应用开发/7.1.1.4附录2:大前端开发' }, + { text: '7.1.1.5附录3:跨端开发', link: '/7.网络应用开发/7.1.1.5附录3:跨端开发' }, + ] + }, + { + text: '7.1.2后端部分', + collapsed: true, + items: [ + { text: '7.1.2后端部分', link: '/7.网络应用开发/7.1.2后端部分' }, + { text: '7.1.2.1基础部分', link: '/7.网络应用开发/7.1.2.1基础部分' }, + { text: '7.1.2.2进阶部分', link: '/7.网络应用开发/7.1.2.2进阶部分' }, + ] + }, ] }, - { - text: '7.2后端部分', - collapsed: true, - items: [ - { text: '7.2后端部分', link: '/7.Web开发入门/7.2后端部分' }, - { text: '7.2.1基础部分', link: '/7.Web开发入门/7.2.1基础部分' }, - { text: '7.2.2进阶部分', link: '/7.Web开发入门/7.2.2进阶部分' }, - ] - } ] }, { @@ -633,7 +642,6 @@ export default defineConfig({ items: [ { text: '8.基础学科', link: '/8.基础学科/8.基础学科' }, { text: '8.1经济学科普Part1', link: '/8.基础学科/8.1经济学科普Part1' }, - { text: '8.2定积分', link: '/8.基础学科/8.2定积分' }, ] }, { @@ -668,6 +676,7 @@ export default defineConfig({ pattern: 'https://github.com/camera-2018/hdu-cs-wiki/edit/master/:path', text: '在 GitHub 上修改此页' }, + externalLinkIcon: true, }, markdown: { config: (md) => { diff --git a/.vitepress/theme/index.js b/.vitepress/theme/index.js index 9d3c570..9f551a4 100644 --- a/.vitepress/theme/index.js +++ b/.vitepress/theme/index.js @@ -2,6 +2,7 @@ import { h, watch } from 'vue' // import Theme from 'vitepress/theme' import DefaultTheme from 'vitepress/theme-without-fonts' +import Download from '../../components/Download.vue' import './style.css' import './rainbow.css' @@ -16,6 +17,7 @@ export default { }, enhanceApp(ctx) { DefaultTheme.enhanceApp(ctx) + ctx.app.component('Download', Download) if (typeof window === 'undefined') return diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css index 964d06a..a19b5e8 100644 --- a/.vitepress/theme/style.css +++ b/.vitepress/theme/style.css @@ -179,4 +179,10 @@ mjx-container { .jp-RenderedHTMLCommon :not(pre) > code { background-color: var(--vp-c-mute) !important; +} + +.VPImage { + user-drag: none !important; + -webkit-user-drag: none !important; + -moz-user-drag: none !important; } \ No newline at end of file diff --git a/1.杭电生存指南/1.13选课原则与抢课技巧.md b/1.杭电生存指南/1.13选课原则与抢课技巧.md new file mode 100644 index 0000000..969c6fb --- /dev/null +++ b/1.杭电生存指南/1.13选课原则与抢课技巧.md @@ -0,0 +1,54 @@ +# 选课原则与抢课技巧 + +> author: ek1ng +> +> 本文编写自2021.07.31,也许有些内容已经过时,请选择性参考。 + +## 选课原则 +### 要选哪些课 +在杭电,学生必须修读完培养计划上所有的课程才能够毕业,因此选课遵循的唯一纲要便是培养计划,一切以培养计划上的要求为准,体育课、通识必修课、通识选修课、专业选修课、专业必修课等等,请注意任何选课尽可能请以培养计划的课程代码为准,若课程代码不同则需要通过课程替代等方式。 +### 为什么要选课 +选课其实是选老师,而选择的选课老师的背后则是课程考核方式、给分高低、成绩占比、课堂签到情况等等。选择正确的老师能够使课堂更加符合你的预期,不论是教学质量还是教学方式亦或期末分数上。 + +在讨论之前,必须声明一些学校课程的基本要求,例如学校要求老师采取易班点名的方式,所以除了某些老师以外大多数老师都会采取不定次数的课堂点名以及点教室人头的方式作为考核考勤情况的方式。 +### 学校开什么课 +学校开展体育课(大一大二4学期分别修读不同类别的体育课程4次)、通识选修课 ~~(通常各专业需要修读人文类、国际类、科技类学分4、4、2个)~~ +:::warning +2023年更新:现在是国际类、人文类、艺术类、科技类学分4、2、2、2个(不管怎么变应该加起来都是10分) +::: +### 选什么课好 +在杭电换客群或者与认识的室友、同学、朋友等等交流开展某课程的某老师教学情况,打听情报以选择合适的老师。此处的情报通常指老师的教学方式如何,采取怎样的签到方式等等。如果曾经上过某老师开展的a课程,那么通常对于他开展的b课程,签到情况和给分情况都仍然能够适用,但是教学情况则未必。 +### 常见问题Q&A +Q1:我该如何安排我这一学期的课程? + +A1:尽可能按照培养计划给出的每学期修读建议修读,适当先在大一、大二修读通识选修、体育课以及适量的专业必修专业选修,在大三修读更多的专业课程。当然如果完全打乱培养计划在杭电也是完全允许的,你完全可以在大一、大二修读大三的课程,在大三修读大一的课程,这么做的意义也许是你希望通过修读课程顺序的改变来调整你个人的时间安排,不论如何这是符合学校规章制度的操作,只要你想你就可以这么做。 + +Q2:选课所谓第一轮选课第二轮选课到底是如何进行的? + +A2:第一轮选课可以选择的课为体育课、通识选修课(英语拓展课、大学军事、公选课都包括在内)、推荐课表上的课程。第二轮选课可以跨年级跨学院跨专业选课,只要能搜到的课都是可以上的,不过请注意,思修近代史毛概马原形策等课程并不能提前修读。第二轮选课通常进行到开学后3周,在开学前3周,可以通过签课的方式即在授课老师、学院的批准通过下选上自己没有抢到的课,理论上任何课(需要注意公选课、体育课一般无法签课,老师是否同意签课通常看老师的个人情况,学院通常会在老师批准的情况下通过批准)只要经过批准都可以签课成功后出现在课表上。请注意,学分上限为32.5(不包括暑假短学期课程),转专业后学分上限自动扩为40,若非转专业学生可以在绩点3.0以上的情况下开学前3周内提出扩学分请求。 +:::warning +2023年更新:学分上限好像变高了,但我忘了是多少🤡 +::: + +Q3:大一上如何选课? + +A3:大一上选课的安排在最后时间段,体育被默认选了太极拳,并选不到“好”的公选课专业课等等,不太建议选很多课,选一门新生研讨课或者推荐不选课。 + +## 抢课技巧 +### 选课背景 +2021年上学期的选课中,杭电更换了正方全新的选课平台http://newjw.hdu.edu.cn ,目前选课平台的特性为,在选课时间内开放至公网ip可以访问,可以并发请求,~~并不会网页卡崩~~,抢课全靠手速。 +:::tip +1. 鉴于杭电复杂的网络环境,在**内网**抢课甚至不如**公网**😅,所以建议在寝室里连上网线(公网)抢课。 + +2. **网页会卡崩**,刚开始选课0~5分钟系统会未响应甚至将你踢出登录,还会让你浏览器爆掉显示 *欧呦,崩溃啦* 之类的字样,一切听天由命。 +::: +## 具体技巧 +#### 系统开放前 +通常系统开放前可以查询开课情况,那么可以根据开课情况自己提前规划安排想上的课程。 +#### 系统开放时 + +##### 第一轮选课、第二轮选课开放系统时 +提前在粘贴板中剪切/复制第一手要抢的课程,并且在选课平台开放时间前几秒,不停点击刷新,直至选课平台显示的内容不为非选课时间而是可以搜索,粘贴课程名并且点击抢课即可第一手抢到最想抢的课程,再依次抢接下来准备上的课。若课表上已经被系统默认选的课占了想要选的课的位置,那么就需要先退课再选课。 + +##### 假期以及开学前三周 +这时候会有同学因为不想选某门课程或者通过将课卡在其他人号上想在假期“转移”到自己号上,选课系统中的课程余量就会时不时出现波动,此时可以上去系统看看说不定能捡漏哦。签课以及扩学分在开学前三周进行,请关注学校通知并且通过签课选上自己没能选上的课程。 diff --git a/1.杭电生存指南/1.2竞赛指北.md b/1.杭电生存指南/1.2竞赛指北.md index 07a0127..fdf35a6 100644 --- a/1.杭电生存指南/1.2竞赛指北.md +++ b/1.杭电生存指南/1.2竞赛指北.md @@ -92,6 +92,6 @@ 由于笔者是创意组的,对其他组别不是很了解,就来介绍一下我们组别的情况。我们组别全称是智能车百度创意组,是由百度与鲸鱼机器人赞助的一个比较新的组别(目前是第三年,不过也开始卷起来了),该组别与传统组别的一个比较大的不同是对于硬件方面的要求并不高(但也是需要了解的,像 arduino ,stm32 这些稍微都得玩的起来),侧重会偏向软件算法方向。百度创意组总体分为两个阶段,线上赛和线下赛,线上赛的任务有点像是 kaggle 打榜,不过是百度官方命题,并且在飞浆平台上进行测试的,本质考验的就是你对神经网络的理解和调参(炼丹),如下图所示 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnQe2AYHX93NUz6Sfoq3hUPd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnQe2AYHX93NUz6Sfoq3hUPd.png) diff --git a/1.杭电生存指南/1.4小心项目陷阱.md b/1.杭电生存指南/1.4小心项目陷阱.md index d624f64..3eee61b 100644 --- a/1.杭电生存指南/1.4小心项目陷阱.md +++ b/1.杭电生存指南/1.4小心项目陷阱.md @@ -1,6 +1,6 @@ # 小心项目陷阱 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPmQ725zYTxiyo2LqQkphib.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPmQ725zYTxiyo2LqQkphib.png) ## 辨别项目质量 @@ -52,7 +52,7 @@ 但是大家参与之前你一定要想你的能力是否等于这个项目的量级,一般情况下,要么你技术特别强,要么可能会存在一定的问题。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPSolGcUy1R0Dk2FUhPaLLc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPSolGcUy1R0Dk2FUhPaLLc.png) 所以说,还是那句话,小心甄别。 diff --git a/1.杭电生存指南/1.7杭电出国自救指南.md b/1.杭电生存指南/1.7杭电出国自救指南.md index 15aa6df..c4ecbcc 100644 --- a/1.杭电生存指南/1.7杭电出国自救指南.md +++ b/1.杭电生存指南/1.7杭电出国自救指南.md @@ -6,13 +6,13 @@ ## 序言:一组数据看出国 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcndFjrKQMhZJsH1vN1fEfaQb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcndFjrKQMhZJsH1vN1fEfaQb.png) 点开图片可以看到左边是西交利物浦的出国数据,中间是杭电的数据,右边是成都电子科技大学的数据,可以看出西交利物浦每年去名校的数量大概是杭电一年的 20-40 倍,成电是杭电的一年的 10 倍左右,杭电出国数据实际上只有寥寥几个名校,剩下的则是一些英国院校。 这其中原因除了杭电高性价比的就业环境,双非院校选择出国深造的人数较低,我认为比较还有一点则是信息差。优秀的大学都有他们自己的飞跃手册,其中会介绍每个国家的优劣,以及申请的一些注意事项,详见下图。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnKMzGr9LSrXWmKxa1lSM1zJ.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnKMzGr9LSrXWmKxa1lSM1zJ.png) 优越的校友资源和前人留下的数据和方案,加下信息差的叠加,就像符合幂律分布的无标度网络一样,只会让我们的差距越来越大,在感叹其他学校飞跃手册的优越性的同时也发现了一些不可参考性,因为在其中也存在着很多问题,在这些学校中,可能名校读博就是老师写个推荐信就有了面试的机会,可能去港大 / G5 就是大学四年均分 80 分的难度。有很多资料在不同的角度,我们很难参考,所以我不经会想问?那我们呢,我们考多少多少分能够去什么学校,我们想要直博应该怎么准备,所以我打算完成这份出国留学的手册,能够为学弟学妹们铺路,同样希望后面也能够有学弟学妹做完善和补充。 diff --git a/2.高效学习/2.1.2浮躁的心理状态.md b/2.高效学习/2.1.2浮躁的心理状态.md index d6a1fa6..8924d13 100644 --- a/2.高效学习/2.1.2浮躁的心理状态.md +++ b/2.高效学习/2.1.2浮躁的心理状态.md @@ -26,4 +26,4 @@ 如果实在不行,来找 ZZM 聊聊吧。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPDWiNgkgppK1XWq5cRQ71b.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPDWiNgkgppK1XWq5cRQ71b.jpg) diff --git a/2.高效学习/2.1.3错误的提问姿态.md b/2.高效学习/2.1.3错误的提问姿态.md index 028fbd2..5efd12d 100644 --- a/2.高效学习/2.1.3错误的提问姿态.md +++ b/2.高效学习/2.1.3错误的提问姿态.md @@ -28,7 +28,7 @@ 问题还是没有解决,现在我该怎么做? -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhuhE7qBLHyJKaesHGC033b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhuhE7qBLHyJKaesHGC033b.png) 欢迎大家阅读 diff --git a/2.高效学习/2.1.4书籍的盲目崇拜.md b/2.高效学习/2.1.4书籍的盲目崇拜.md index d927702..e97b01c 100644 --- a/2.高效学习/2.1.4书籍的盲目崇拜.md +++ b/2.高效学习/2.1.4书籍的盲目崇拜.md @@ -6,7 +6,7 @@ "我们要学 C 语言,我买一本大黑书看看!" -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnqsCWmUTDr5UDLYca9YkhHh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnqsCWmUTDr5UDLYca9YkhHh.png) 诚然,上面的各种书写的非常好,但是我们需要思考的是,阅读这些真的能达到我们想要的目标吗??? diff --git a/2.高效学习/2.1.5错误的学习配比.md b/2.高效学习/2.1.5错误的学习配比.md index 806812d..06ea6a0 100644 --- a/2.高效学习/2.1.5错误的学习配比.md +++ b/2.高效学习/2.1.5错误的学习配比.md @@ -18,4 +18,4 @@ 在你完成这份讲义的时候,希望你可以有选择的阅览一部分,然后带着问题去看某些课,效率也会高很多。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnSq1JzWhVrFs3MePPzp5Txg.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnSq1JzWhVrFs3MePPzp5Txg.jpg) diff --git a/2.高效学习/2.1高效的前提:摆脱高中思维.md b/2.高效学习/2.1高效的前提:摆脱高中思维.md index ad381b2..0bfa9f6 100644 --- a/2.高效学习/2.1高效的前提:摆脱高中思维.md +++ b/2.高效学习/2.1高效的前提:摆脱高中思维.md @@ -14,7 +14,7 @@ 并且,全部依赖他人给你指明方向的人生已经结束了! -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcne9EK3xz8LHOXfM8w9ih5Ig.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcne9EK3xz8LHOXfM8w9ih5Ig.png) 你无法依赖大学里的老师还是家里的父母来为你指明所谓的方向,你的人生只属于你自己,你的道路也只能由你自己来思考。 diff --git a/2.高效学习/2.2优雅的使用工具.md b/2.高效学习/2.2优雅的使用工具.md index 81278a0..a5a5146 100644 --- a/2.高效学习/2.2优雅的使用工具.md +++ b/2.高效学习/2.2优雅的使用工具.md @@ -48,7 +48,7 @@ rm coreutils-8.32 coreutils-8.32.tar.xz - [MarkText](https://github.com/marktext/marktext) 免费的 平替 Typora (?)感觉不太好用 😤 - [思源笔记](https://b3log.org/siyuan/) 一个国产开源的笔记/知识库软件,优势是 本地化、双链、Markdown 语法,与 Obsidian 定位相似,但 Geek 成分和自定义空间相对更高 - [Zotero](https://www.zotero.org/):协助文献阅读还有写笔记,支持与平板同传(同时他是开源的,所以可以添加一些插件) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnO1PEsVd4KY7reeU64spShf.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnO1PEsVd4KY7reeU64spShf.jpg) - [Notion](http://notion.so): 笔记终结者,非常强大,(设计理念被钉钉,飞书,我来非常抄袭)。在线就可以使用。唯一的缺点是可能需要科学上网。 ## 文献辅助阅读工具 diff --git a/2.高效学习/2.5以理工科的方式阅读英语.md b/2.高效学习/2.5以理工科的方式阅读英语.md index 86f943d..dc393c5 100644 --- a/2.高效学习/2.5以理工科的方式阅读英语.md +++ b/2.高效学习/2.5以理工科的方式阅读英语.md @@ -2,7 +2,7 @@ 作为一名理工科学生,也许英语并不是你的强势,但往往学习又难以避开英语。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/G6zAbGrTKoBLsfxhmvHcUBVynpc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/G6zAbGrTKoBLsfxhmvHcUBVynpc.png) 下面提供一些英语阅读的方法: diff --git a/2.高效学习/2.高效学习.md b/2.高效学习/2.高效学习.md index 0005ea1..630cd4c 100644 --- a/2.高效学习/2.高效学习.md +++ b/2.高效学习/2.高效学习.md @@ -41,7 +41,7 @@ Search the "friendly" website # 如果真的不知道怎么解决怎么办? -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnSmy1oqFO1glYIYGRZ9NhEb.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnSmy1oqFO1glYIYGRZ9NhEb.jpg) 来细看看本章节的内容吧! diff --git a/3.编程思维体系构建/3.2.2手把手教你学算法——如何使用OJ(Online Judge).md b/3.编程思维体系构建/3.2.2手把手教你学算法——如何使用OJ(Online Judge).md index 6758252..8560f2f 100644 --- a/3.编程思维体系构建/3.2.2手把手教你学算法——如何使用OJ(Online Judge).md +++ b/3.编程思维体系构建/3.2.2手把手教你学算法——如何使用OJ(Online Judge).md @@ -6,7 +6,7 @@ 进入 [https://www.luogu.com.cn/](https://www.luogu.com.cn/) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing1.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing1.png) ## 社交模块 @@ -16,11 +16,11 @@ 点开题库,我们看见以下界面 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing2.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing2.png) 在上方我们可以筛选我们想要的题目,接下来我们点开 P1000 为例 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing3.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing3.png) 右侧三个模块为折叠状态,下面介绍他们的作用 @@ -34,7 +34,7 @@ 点击提交答案 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing4.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing4.png) 左侧可以选择语言类型,C++ 用户建议选择 C++14。 @@ -44,7 +44,7 @@ O2 优化是一种优化(废话)假如您的代码复杂度正确但 TLE, 怎么知道自己代码的问题出在哪里呢?记录模块是帮助你的好工具。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing5.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing5.png) AC:通过该数据点 @@ -64,7 +64,7 @@ OLE:输出超限 放心你见不到的 点开侧栏题单 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing6.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing6.png) 建议新手从官方精选题单开始,由浅入深,由简到难。等到对算法形成概念,针对漏洞补习时可以尝试用户分享题单(到那个阶段已经有很多手段去找题了,刘教练的题单就够你做了) @@ -76,7 +76,7 @@ OLE:输出超限 放心你见不到的 进入 [https://codeforces.com/?locale=en](https://codeforces.com/?locale=en) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing7.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing7.png) 比起 Luogu,这样的 UI 设计离 CN 互联网已经很远了(然而比起更硬核的一些做题网站,CF 的 UI 真是越看越顺眼) @@ -100,7 +100,7 @@ OLE:输出超限 放心你见不到的 进入比赛页面 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing8.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing8.png) 上方为将举办比赛,显示开始时间(UTC+8 也就是我们时区的时间)和持续时间大多都开始的比较晚,例如笔者就没有这么晚学习的习惯,所以一般赛后写题。比赛分为以下几种类型(例如写在括号里的 Div.2) @@ -114,14 +114,14 @@ Div.1、Div.2、Div.3、Div.4 数字越小难度越大。 ## VP -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing9.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing9.png) 这是一场笔者之前赛后补过的 Div.2,画面右下角分别为赛后公告和题解,右侧便是开启 VP 的按钮。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing10.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing10.png) VP模拟赛时的好处就是在虚拟参赛中获得真实比赛才能积累的经验,比如这里笔者发现通过前三题后,我应该先去看看 F 题,因为做出来的人更多,我有更大的可能性做出来,ACM 中题目并不是 100% 按难度排序。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing11.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing11.png) 进入 VP 后,我们可以发现比起正常赛后补题有了明显不同。 @@ -135,25 +135,25 @@ Div.1、Div.2、Div.3、Div.4 数字越小难度越大。 让我们点开 A 题,来看看如何提交答案 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing12.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing12.png) 可以看见,右侧有一个 submit,与 luogu 不同的是,你需要上传源代码文件(如 cpp)然后选择 G++17 为语言,提交。 当然,你也可以点开上侧的 submit code -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing13.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing13.png) 选择题目、语言,填写代码后提交,就和 Luogu 的方式一样了。 同样,在上侧 MY SUBMISSIONS 处可以查看已提交的代码和状态 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing14.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing14.png) ## PROBLEMSET 同样,CF 也有题库 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wenjing15.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wenjing15.png) 如果你只想做某道题而不是某场比赛,这里也许更适合你。 diff --git a/3.编程思维体系构建/3.2.3ACM 竞赛从入门到入坟.md b/3.编程思维体系构建/3.2.3ACM 竞赛从入门到入坟.md index 8646219..6ce1658 100644 --- a/3.编程思维体系构建/3.2.3ACM 竞赛从入门到入坟.md +++ b/3.编程思维体系构建/3.2.3ACM 竞赛从入门到入坟.md @@ -58,7 +58,7 @@ 打完比赛,建议钻研一下自己没做出的前一两题,写个题解。为什么要写题解呢,一个是方便以后来回顾,一个是加深印象,一个是把自己的思维用文字表达出来,这样能发现思维的漏洞(比如证明不严谨之类的)。题解写出来发不发博客就看个人喜好吧。作者以前也是坚持写博客写了很久。 -![](static/Axiomofchoice_1.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Axiomofchoice_1.png) 为什么要打 Codeforces 比赛呢?主要原因是打比赛有计时,有压力(怕掉分的压力),能让人提升更快。不要因为怕掉分就不参加了,你要相信只要你一直打比赛,你的 rating 曲线一定是波动上升的。 diff --git a/3.编程思维体系构建/3.3如何选择编程语言.md b/3.编程思维体系构建/3.3如何选择编程语言.md index c797b5a..3e6d9e1 100644 --- a/3.编程思维体系构建/3.3如何选择编程语言.md +++ b/3.编程思维体系构建/3.3如何选择编程语言.md @@ -10,7 +10,7 @@ 首先附上一张经典老图 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnW0YQY58RXhwdtRj5k6ndlc.jpeg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnW0YQY58RXhwdtRj5k6ndlc.jpeg) ## C 语言/C++ @@ -56,6 +56,6 @@ Python 在图里是电锯,适合干比较“狂野”的任务,也是深度 频繁应用于Web 开发,安卓应用等等。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPv2FcyQxGLjYHThSaJNwRf.jpeg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPv2FcyQxGLjYHThSaJNwRf.jpeg) 当然还有各种形形色色的编程语言等着同学们去探索。 diff --git a/3.编程思维体系构建/3.4.1FAQ:常见问题.md b/3.编程思维体系构建/3.4.1FAQ:常见问题.md index 9327da4..4327261 100644 --- a/3.编程思维体系构建/3.4.1FAQ:常见问题.md +++ b/3.编程思维体系构建/3.4.1FAQ:常见问题.md @@ -8,7 +8,7 @@ 尝试借鉴他人的代码也未尝不可,但是要保证每一行都看懂哦 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnQ4rvJqVbXJaWMOwceHdrQb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnQ4rvJqVbXJaWMOwceHdrQb.png) # 我感觉讲义写的不够细 @@ -67,6 +67,6 @@ NJU-ICS-PA 南京大学计算机系统基础 # 坚持了好久还是搞不定, 我想放弃了 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnuNXrb5zOppCZAlGQ19wuDk.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnuNXrb5zOppCZAlGQ19wuDk.jpg) 也许是你坚持的姿势不对,来和 ZZM 聊聊吧 diff --git a/3.编程思维体系构建/3.4.2用什么写 C 语言.md b/3.编程思维体系构建/3.4.2用什么写 C 语言.md index 6232ff8..3783188 100644 --- a/3.编程思维体系构建/3.4.2用什么写 C 语言.md +++ b/3.编程思维体系构建/3.4.2用什么写 C 语言.md @@ -16,7 +16,7 @@ Visual Studio (以下简称 VS )是 Windows 下最完美的 C/C++ 等语言 选择社区版 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhNeAnlrbcdJciMUY9oNTuc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhNeAnlrbcdJciMUY9oNTuc.png) 社区版和专业版等的区别:社区版免费,功能上几乎无差别 @@ -24,7 +24,7 @@ Visual Studio (以下简称 VS )是 Windows 下最完美的 C/C++ 等语言 选择 C++ 桌面开发,其他不用选,有需要了再说。另外,Python 开发不好使,不要像我一样选 Python 开发。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnkjmKcCxIgRIzA5kyUZckye.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnkjmKcCxIgRIzA5kyUZckye.png) 安装完成后,一般来说 VS 不会自动创建桌面快捷方式,你需要到开始菜单中启动 VS。 @@ -38,19 +38,19 @@ VS 是项目制,你需要创建一个项目才能开始编写代码并运行 打开 VS,会打开如下界面(我使用深色主题),在此处单击“创建新项目” -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn6MgNnY2qBd1yAudeirx6Sh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn6MgNnY2qBd1yAudeirx6Sh.png) 在创建新项目页面中选择项目模板为控制台应用(空项目亦可,后续手动添加.c 源文件),并单击下一步 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnFwZpWZ3fQkdd3mCO8Mr9Wj.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnFwZpWZ3fQkdd3mCO8Mr9Wj.png) 为你的项目起一个名字,以及选择项目的位置,一般默认即可,如果你有强迫症,C 盘一定不能放个人数据,请自行修改。完成后单击“创建” -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnkxd472wIT39DbEiBsyPWzf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnkxd472wIT39DbEiBsyPWzf.png) 自此就创建了一个项目了,你将会到达如下界面: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnvOGdjKLnvXvJM7nlE8yVcb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnvOGdjKLnvXvJM7nlE8yVcb.png) 其中,左侧(如果在一开始没有选择 C++ 开发环境的话可能在右侧)为资源管理器,列出了本项目所用到的所有文件,包括代码(外部依赖项、源文件、头文件),以及将来开发图形化界面所需的资源文件;最中间占据面积最多的是代码编辑器窗口,你以后将会在这里编写你的 C 语言代码。最下面是输出窗口,源代码进行编译时,会在此处给出编译进度以及可能的代码中的错误。 @@ -66,7 +66,7 @@ C 语言是编译型语言,因此说“运行”代码其实并不是十分合 当你编写完自己的代码后,即可单击“本地 Windows 调试器”(或者使用快捷键 F5)进行“运行”。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhTxhUYMHeYHdrq0zWzLomb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhTxhUYMHeYHdrq0zWzLomb.png) 你可能会发现在“本地 Windows 调试器”右侧还有一个绿色三角形,并且单击这个也可以“运行”,这两个的区别在于“本地 Windows 调试器”是调试运行,右侧那个是不调试直接运行。 @@ -74,17 +74,17 @@ C 语言是编译型语言,因此说“运行”代码其实并不是十分合 如果你的代码被 VS 提示“This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.” -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnfrxYjk5CCjMfY0mLK1B1Ze.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnfrxYjk5CCjMfY0mLK1B1Ze.png) 需要你在项目-xxx 属性(xxx 是你的项目名)-C/C++-代码生成-安全检查里将安全检查禁用 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcniHhCIUQY0oB3ALlxqgciLd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcniHhCIUQY0oB3ALlxqgciLd.png) ## 调试 IDE 相比于代码编辑器,最强大的一点莫过于成熟的调试系统。通过调试,可以快速定位代码中没有被编译器检查出来的逻辑错误。如果需要调试,则可以在这个位置单击,打下断点,并且运行程序,程序运行时,就会在此处暂停下来,暂停时就可以查看各个变量的值了。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnydHyaNPqUEVVWmbdGofX0d.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnydHyaNPqUEVVWmbdGofX0d.png) ## 深色主题 @@ -94,15 +94,15 @@ IDE 相比于代码编辑器,最强大的一点莫过于成熟的调试系统 ### 仔细查看报错 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnC6TAAdtS0P5HzebFgFn2lc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnC6TAAdtS0P5HzebFgFn2lc.png) 如果程序代码中出现红色波浪线,则表示该处代码有“错误”,并且该处的错误会同步显示在下面的这个位置,单击即可看到错误详情。如果代码中出现绿色波浪线,则表示该处代码中有警告。警告和错误的区别是警告可以通过编译运行,但编译器认为你这里可能写错了;错误是完全不可以通过编译。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn7zL0QFakVTpYBdpOmmWOvc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn7zL0QFakVTpYBdpOmmWOvc.png) ### 善用提示 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn2ouk043lNQEUkVkIS7bSSd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn2ouk043lNQEUkVkIS7bSSd.png) 当你打一些函数名或者关键字时,VS 会给出你语法提示,如果这个提示正确,按下 Tab 键即可将这个提示补全到你的代码里;或者你也可以跟着这个提示打一遍,防止打错关键字。 @@ -136,7 +136,7 @@ vscode 的项目和 VS 不同,vscode 的项目比较松散,并没有 VS 那 编写完代码后,保存文件,并点击运行-启动调试 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnim98FJybpkGl8sfqxP9v9b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnim98FJybpkGl8sfqxP9v9b.png) 此时会弹出如下选择框,我的电脑上同时安装有 VS 和 gcc 编译器,因此有两个,大部分的电脑上应该只有一个“C++ (Windows)”,选择你电脑上的编译器并运行即可。 @@ -162,25 +162,25 @@ CLion 是 jetbrains 家族的 C 语言 IDE XCode 是 mac 官方的 IDE,能编写所有 mac 家族设备的软件。但缺点是没有中文。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn05Ca6Wu5TxFMplZCw2N8Jb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn05Ca6Wu5TxFMplZCw2N8Jb.png) 打开以后选择 Create a new Xcode project,选择 macOS-Command Line Tool -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbnrVCmNGfriHhU5pL76gsd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbnrVCmNGfriHhU5pL76gsd.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnnjaObP5JzpICUx1PMO9MQg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnnjaObP5JzpICUx1PMO9MQg.png) 两个空里第一个填项目名,第二个随便填就行 next 后选择项目保存的位置,之后即可到达以下界面: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnl06p0ZS8SSQsWJNLQLYIjc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnl06p0ZS8SSQsWJNLQLYIjc.png) 点左上方小三角即可运行 在行号上点击并运行即可调试 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnmRygjmZfwFzODP2N6bVoEh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnmRygjmZfwFzODP2N6bVoEh.png) # Linux diff --git a/3.编程思维体系构建/3.4.3解决编程问题的普适性过程.md b/3.编程思维体系构建/3.4.3解决编程问题的普适性过程.md index aa47eed..080412f 100644 --- a/3.编程思维体系构建/3.4.3解决编程问题的普适性过程.md +++ b/3.编程思维体系构建/3.4.3解决编程问题的普适性过程.md @@ -3,7 +3,7 @@ - 本篇不需要任何前置知识,推荐在学习 C 语言和学完 C 语言后各看一遍。 - 我们鼓励你在解决问题的时候进行思考,锻炼解决问题的能力,而不只是成为一个做代码翻译工作的“码农”。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/YAOvb6gquofiAYxsn3tcxcCYngf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/YAOvb6gquofiAYxsn3tcxcCYngf.png) 解决编程问题的常见误区: @@ -13,7 +13,7 @@ 如果你计划得足够好并且代码编写得正确,你的代码将在第一次工作。即便它第一次不起作用,那么你至少有一个对于代码如何调试的可靠计划。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/HMipbO4vSoM3jhxSZ7Kcuddqnxh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HMipbO4vSoM3jhxSZ7Kcuddqnxh.png) ## Work an Example Yourself diff --git a/3.编程思维体系构建/3.4.4C语言前置概念学习.md b/3.编程思维体系构建/3.4.4C语言前置概念学习.md index 54a0545..8638d01 100644 --- a/3.编程思维体系构建/3.4.4C语言前置概念学习.md +++ b/3.编程思维体系构建/3.4.4C语言前置概念学习.md @@ -34,6 +34,6 @@ 计算机思维与计算机科学与编码能力 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Hqzbbs6iYobnxWxz11Ocfa9gnHd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Hqzbbs6iYobnxWxz11Ocfa9gnHd.png) ### CS education is more than just “learning how to code”! diff --git a/3.编程思维体系构建/3.4.5.1C语言自测标准——链表.md b/3.编程思维体系构建/3.4.5.1C语言自测标准——链表.md index fa4e451..7c2ce95 100644 --- a/3.编程思维体系构建/3.4.5.1C语言自测标准——链表.md +++ b/3.编程思维体系构建/3.4.5.1C语言自测标准——链表.md @@ -6,13 +6,13 @@ 使用链表存储数据,不强制要求数据在内存中集中存储,各个元素可以分散存储在内存中。例如,使用链表存储 {1,2,3},各个元素在内存中的存储状态可能是: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnuwZzqX4dF8xKTYajwrDSxf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnuwZzqX4dF8xKTYajwrDSxf.png) 可以看到,数据不仅没有集中存放,在内存中的存储次序也是混乱的。那么,链表是如何存储数据间逻辑关系的呢? 链表存储数据间逻辑关系的实现方案是:为每一个元素配置一个指针,每个元素的指针都指向自己的直接后继元素,如下图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnAnkVAJmMT0NSNvo6crXYAd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnAnkVAJmMT0NSNvo6crXYAd.png) 显然,我们只需要记住元素 1 的存储位置,通过它的指针就可以找到元素 2,通过元素 2 的指针就可以找到元素 3,以此类推,各个元素的先后次序一目了然。像图 2 这样,数据元素随机存储在内存中,通过指针维系数据之间“一对一”的逻辑关系,这样的存储结构就是链表。 @@ -20,13 +20,13 @@ 在链表中,每个数据元素都配有一个指针,这意味着,链表上的每个“元素”都长下图这个样子: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcncRc5OKZROtxC9rpQYxrjvf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcncRc5OKZROtxC9rpQYxrjvf.png) 数据域用来存储元素的值,指针域用来存放指针。数据结构中,通常将这样的整体称为结点。 也就是说,链表中实际存放的是一个一个的结点,数据元素存放在各个结点的数据域中。举个简单的例子,图 3 中 {1,2,3} 的存储状态用链表表示,如下图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn0VMYQlez7tQTNkTPDkCsvg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn0VMYQlez7tQTNkTPDkCsvg.png) 在 C 语言中,可以用结构体表示链表中的结点,例如: @@ -66,7 +66,7 @@ typedef struct Node* Link; 例如,创建一个包含头结点的链表存储 {1,2,3},如下图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnjAoO54txAhnu7Ry8ExjGvc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnjAoO54txAhnu7Ry8ExjGvc.png) ## 链表的创建 @@ -104,7 +104,7 @@ while (Judgement) } ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn8ZxT5oMkScArZjZhgM6TYb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn8ZxT5oMkScArZjZhgM6TYb.png) ### 创建结点——尾插法 @@ -121,7 +121,7 @@ while (Judgement) //for同理 } ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnnMjc9pwgZgk1GBmBRlBS6d.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnnMjc9pwgZgk1GBmBRlBS6d.png) ## 链表的基本操作 @@ -176,7 +176,7 @@ int GetElem(Link *L, int i; int *e) 例如,在链表 `{1,2,3,4}` 的基础上分别实现在头部、中间、尾部插入新元素 5,其实现过程如图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnxjex5Q3Lt9AAx6roN3ClUg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnxjex5Q3Lt9AAx6roN3ClUg.png) 从图中可以看出,虽然新元素的插入位置不同,但实现插入操作的方法是一致的,都是先执行步骤 1 ,再执行步骤 2。实现代码如下: @@ -207,7 +207,7 @@ int ListInsert(Link *L, int i, int e) 对于没有头结点的链表,在头部插入结点比较特殊,需要单独实现。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn1hlL1Fk4kDK4CPT2hJxwnV.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn1hlL1Fk4kDK4CPT2hJxwnV.png) 和 2)、3) 种情况相比,由于链表没有头结点,在头部插入新结点,此结点之前没有任何结点,实现的步骤如下: @@ -253,7 +253,7 @@ temp->next=temp->next->next; 例如,从存有 `{1,2,3,4}` 的链表中删除存储元素 3 的结点,则此代码的执行效果如图 3 所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnn3QHja0tzEwqJl9Mk4KnCg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnn3QHja0tzEwqJl9Mk4KnCg.png) 实现代码如下: @@ -282,7 +282,7 @@ int ListDelete(Link *L, int i, int* e) 对于不带头结点的链表,需要单独考虑删除首元结点的情况,删除其它结点的方式和图 3 完全相同,如下图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXjwE0yDFvpQxLaPw7FifxV.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXjwE0yDFvpQxLaPw7FifxV.png) 实现代码如下: @@ -319,7 +319,7 @@ int ListDelete(Link *L, int i, int* e) 如图所示,假设此时圆周周围有 5 个人,要求从编号为 3 的人开始顺时针数数,数到 2 的那个人出列: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcngx7ZPA7pONbJo82LbNCO1g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcngx7ZPA7pONbJo82LbNCO1g.png) 出列顺序依次为: @@ -339,10 +339,10 @@ int ListDelete(Link *L, int i, int* e) 为了使空链表和非空链表处理一致,我们通常设一个头结点,当然,并不是说,循环链表一定要头结点,这需要注意。循环链表带有头结点的空链表如图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn3l30usevMTgv1ZbZ0mfJdh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn3l30usevMTgv1ZbZ0mfJdh.png) 对于非空的循环链表如图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcngoLTiM9wto9uCGzH7nkjkW.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcngoLTiM9wto9uCGzH7nkjkW.png) 循环链表和单链表的主要差异就在于循环的判断条件上,原来是判断 p->next 是否为空,现在则是 p->next 不等于头结点,则循环未结束。 diff --git a/3.编程思维体系构建/3.4.6阶段二:文字冒险(cool).md b/3.编程思维体系构建/3.4.6阶段二:文字冒险(cool).md index 1b45adc..e87fd8d 100644 --- a/3.编程思维体系构建/3.4.6阶段二:文字冒险(cool).md +++ b/3.编程思维体系构建/3.4.6阶段二:文字冒险(cool).md @@ -20,7 +20,7 @@ 当然,如果你选择跳过,也不会对 python 开发那里造成非常大的影响但是你会错失一个非常宝贵的学习机会。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnustZBhjMu8FPN0Kxi4Mwvf.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnustZBhjMu8FPN0Kxi4Mwvf.jpg) 在 1980 年代, [文字冒险](http://en.wikipedia.org/wiki/Text_adventure) 是一种受人尊敬的电脑游戏类型。但是时代已经变了,在 21 世纪,它们与 带有 3D 引擎的现代 [MMORPG 相比显得苍白无力。](http://en.wikipedia.org/wiki/Mmorpg)书籍在电影的兴起中幸存下来,而基于文本的游戏很快就输掉了与图形游戏的战斗。“互动小说”由一个活跃的社区保持活力,但它的商业价值早已不复存在。 diff --git a/3.编程思维体系构建/3.4.7.1.1调试理论.md b/3.编程思维体系构建/3.4.7.1.1调试理论.md index 51160b9..2a1e2f0 100644 --- a/3.编程思维体系构建/3.4.7.1.1调试理论.md +++ b/3.编程思维体系构建/3.4.7.1.1调试理论.md @@ -28,7 +28,7 @@ - 打印变量, 断点, 监视点, 函数调用栈... -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnaqLMfwqNMTcYEPuF3vFjqg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnaqLMfwqNMTcYEPuF3vFjqg.png) # 调试理论 diff --git a/3.编程思维体系构建/3.4.7.1GDB初探索(编程可阅览).md b/3.编程思维体系构建/3.4.7.1GDB初探索(编程可阅览).md index 34e2c55..ed04eaa 100644 --- a/3.编程思维体系构建/3.4.7.1GDB初探索(编程可阅览).md +++ b/3.编程思维体系构建/3.4.7.1GDB初探索(编程可阅览).md @@ -2,7 +2,7 @@ 请在开始进行 C 语言编程之后查阅使用 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnHXggg6eLy86vFmb4shOksh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnHXggg6eLy86vFmb4shOksh.png) # GDB 是什么? diff --git a/3.编程思维体系构建/3.4.7.2C的历史问题:undefined behavior.md b/3.编程思维体系构建/3.4.7.2C的历史问题:undefined behavior.md index e919267..46b7141 100644 --- a/3.编程思维体系构建/3.4.7.2C的历史问题:undefined behavior.md +++ b/3.编程思维体系构建/3.4.7.2C的历史问题:undefined behavior.md @@ -1,6 +1,6 @@ # C 的历史问题:undefined behavior -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnIdOChXQUGMvnxWcB7uTWLh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnIdOChXQUGMvnxWcB7uTWLh.png) 简写为 UB diff --git a/3.编程思维体系构建/3.4C语言.md b/3.编程思维体系构建/3.4C语言.md index 92d378b..79108cb 100644 --- a/3.编程思维体系构建/3.4C语言.md +++ b/3.编程思维体系构建/3.4C语言.md @@ -6,7 +6,7 @@ 值得一提的是,我不会在本教程讲授过于基础的概念,但是会贴出你可能需要学习的内容。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnAnXUHDqsMYVrDlBfFunoVf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnAnXUHDqsMYVrDlBfFunoVf.png) 同时我要说的是:C 语言为了适配多种多样的硬件以及各式各样的操作,他对非常多的 undefined 操作不做太多限制,也就是说你可能会出现各种各样的问题,甚至把你电脑炸了 diff --git a/3.编程思维体系构建/3.5git与github.md b/3.编程思维体系构建/3.5git与github.md index 759c57b..e30ec5e 100644 --- a/3.编程思维体系构建/3.5git与github.md +++ b/3.编程思维体系构建/3.5git与github.md @@ -206,7 +206,7 @@ git checkout -B 分支名 页面大概是这样: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnHemi9HkeAG1fgoznHbHLrc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnHemi9HkeAG1fgoznHbHLrc.png) ### Git 和 Github @@ -236,11 +236,11 @@ ssh-keygen -t rsa -C "youremail@example.com" # youremail为你注册用的电 登陆 `GitHub`,打开 `settings` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn9VFPUYHl8ghJ3C78RsXjtf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn9VFPUYHl8ghJ3C78RsXjtf.png) 然后打开左侧栏 `SSH and GPG`` keys` 页面 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn1HbQct335qvZ71tGNu7jne.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn1HbQct335qvZ71tGNu7jne.png) 然后,点 `New SSH Key`,填上任意 Title,在 Key 文本框里粘贴 `id_rsa.pub` 文件的内容即可 @@ -249,11 +249,11 @@ ssh-keygen -t rsa -C "youremail@example.com" # youremail为你注册用的电 绑定完 GitHub 然后你可以创建仓库了 首先在 GitHub 主页,找到 “New” 按钮,创建一个新的仓库 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn5sVnE76FYpVW2RDxtWDiZc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn5sVnE76FYpVW2RDxtWDiZc.png) 然后填上这个仓库的大名就可以创建了 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnsN133WrLrbxsX8JgvsQmif.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnsN133WrLrbxsX8JgvsQmif.png) 根据之前学习的方法在本地创建完 git 仓库之后 @@ -284,7 +284,7 @@ git clone [url] 首先,代码的 url 在下图所示的位置 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnTiaT2EnNfKVkretPsyajVd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnTiaT2EnNfKVkretPsyajVd.png) 然后复制完代码后切换回我们的命令行 @@ -296,7 +296,7 @@ git clone https://github.com/camera-2018/git-example.git 一阵抽搐过后就下载好了 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn8aRDQpe7uuDxFv9v1WvZ4c.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn8aRDQpe7uuDxFv9v1WvZ4c.png) 注意:用完之后别忘记给 camera-2018 点个 follow 呃呃 follow 没用 star 有用 @@ -306,7 +306,7 @@ git clone https://github.com/camera-2018/git-example.git 如图 我在仓库里新建了 `helloworld.c` 并且写了一些代码 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnZpPsp4FP78auolzHvCKP0g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnZpPsp4FP78auolzHvCKP0g.png) 接下来是提交操作 @@ -314,7 +314,7 @@ git clone https://github.com/camera-2018/git-example.git git status #看一下文件暂存区 ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnm4R1ZN0WeUBuYht6zge7pd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnm4R1ZN0WeUBuYht6zge7pd.png) 红色表示文件没有提交到暂存区 我们要提交 @@ -324,7 +324,7 @@ git status #看一下文件暂存区 git add . #将没有提交的所有文件加入暂存区 ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnYHd076RAqfDmHjbUkeNSvg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnYHd076RAqfDmHjbUkeNSvg.png) 绿色表示所有文件已加入暂存 @@ -334,7 +334,7 @@ git commit -m "feat(helloworld): add helloworld file" 将刚才加入暂区的文件发起了一个提交 注释是 `feat(helloworld): add helloworld file` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcni2dupDzNO8qTWPAxS5c67b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcni2dupDzNO8qTWPAxS5c67b.png) 1. 如果这是你自己的仓库有权限 你就可以直接使用 @@ -345,7 +345,7 @@ git push origin main # origin是第四步里remote add起的远程名字 上传本次提交 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnNBu1EJnva4EkyQZAVlwGMe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnNBu1EJnva4EkyQZAVlwGMe.png) 1. 如果你没有本仓库的主分支提交权限 可以提交 pr(pull requests) @@ -353,7 +353,7 @@ git push origin main # origin是第四步里remote add起的远程名字 首先创建一个新分支 命名为 `yourname-dev` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnaS7aOzdt31vsZZx8R1s33e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnaS7aOzdt31vsZZx8R1s33e.png) 然后按照上面的方法 `git clone` 并切换到你刚创建的分支 @@ -363,30 +363,30 @@ git switch camera-2018-dev 然后提交一个文件 这里使用 vscode 自带的 git 工具试试 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnmwlYWOzwPbNqTAuSZK9dW3.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnmwlYWOzwPbNqTAuSZK9dW3.png) 点暂存所有更改 写好 comment 之后点提交 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnfcCnAdtdX2oyLIC3NibVnf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnfcCnAdtdX2oyLIC3NibVnf.png) 最后点同步更改上传 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn9DSPlFgG2WMZhTOE9Zhzgb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn9DSPlFgG2WMZhTOE9Zhzgb.png) 如果是你提交 在 github 上会显示这个 快捷创建 pr 的按钮 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnHd7Qfi8C0Y7V2Ot5ii4vpf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnHd7Qfi8C0Y7V2Ot5ii4vpf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnyt3eeZQyN8b1xM1WjDrTGe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnyt3eeZQyN8b1xM1WjDrTGe.png) 点它创建 pr -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnJOjh1Zfp9tCd3llL9NsEzb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnJOjh1Zfp9tCd3llL9NsEzb.png) 这样管理本仓库的人看到 pr 请求就可以 merge 合并辣 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnBMq0sw6c48jvjdPJwmAGtZ.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnBMq0sw6c48jvjdPJwmAGtZ.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcngNZOSnYUtCKH6pm8UaUMNd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcngNZOSnYUtCKH6pm8UaUMNd.png) 实际合作过程中可能会出现代码冲突无法 merge 的情况 😋 遇到了自己去 STFW 吧 diff --git a/3.编程思维体系构建/3.6.2环境配置.md b/3.编程思维体系构建/3.6.2环境配置.md index abf536f..6dd9660 100644 --- a/3.编程思维体系构建/3.6.2环境配置.md +++ b/3.编程思维体系构建/3.6.2环境配置.md @@ -10,21 +10,21 @@ 装下来之后具体操作可以看[安装教程](https://blog.csdn.net/in546/article/details/117400839),如果自动配置环境变量的选项是灰色的话,请按照下面的教程把下面的几个文件路径加入环境变量。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn3PLPIvKSSvYiCnwx50FYvf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn3PLPIvKSSvYiCnwx50FYvf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnvTQPcmPpUonmDZFZXNnGWd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnvTQPcmPpUonmDZFZXNnGWd.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn6ZnAzhaj2Tj7xk9K6FxBJh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn6ZnAzhaj2Tj7xk9K6FxBJh.png) 在里面添加并写入文件路径加入就好了~ -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnnsuoHmhK4dBCLHlKhpRWIe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnnsuoHmhK4dBCLHlKhpRWIe.png) 然后打开 Pycharm,创建新项目,设置按照以下方式操作,记得挂梯子。 如果不挂梯子,请按照教程配置清华源。[我是教程](https://blog.csdn.net/jasneik/article/details/114227716) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnTfvjYweuIZFKlcH78X38Pd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnTfvjYweuIZFKlcH78X38Pd.png) 然后一个新的环境就创建好辣~ diff --git a/3.编程思维体系构建/3.6.3安装python.md b/3.编程思维体系构建/3.6.3安装python.md index ef45cc6..1245890 100644 --- a/3.编程思维体系构建/3.6.3安装python.md +++ b/3.编程思维体系构建/3.6.3安装python.md @@ -32,7 +32,7 @@ 可以输入 `python3 --version` 检验是否成功。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn95LbcwuMC2dIViOxWk8BFb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn95LbcwuMC2dIViOxWk8BFb.png) # Jupyter Notebook @@ -50,6 +50,6 @@ jupyter notebook 进行使用 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnfwk8gnFAHu5JzVUiugJjQe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnfwk8gnFAHu5JzVUiugJjQe.png) [Pycharm](https://www.jetbrains.com/zh-cn/pycharm/):可能很多同学已经用上了,我在这里不做更多解释 diff --git a/3.编程思维体系构建/3.6.4.2阶段二:递归操作.md b/3.编程思维体系构建/3.6.4.2阶段二:递归操作.md index 532bbd5..8826120 100644 --- a/3.编程思维体系构建/3.6.4.2阶段二:递归操作.md +++ b/3.编程思维体系构建/3.6.4.2阶段二:递归操作.md @@ -2,7 +2,7 @@ 什么是递归呢? -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnCNpeAE9Hy61cyvtxfioIHg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnCNpeAE9Hy61cyvtxfioIHg.png) # diff --git a/3.编程思维体系构建/3.6.4.3阶段三:数据抽象.md b/3.编程思维体系构建/3.6.4.3阶段三:数据抽象.md index cc879ca..4258b78 100644 --- a/3.编程思维体系构建/3.6.4.3阶段三:数据抽象.md +++ b/3.编程思维体系构建/3.6.4.3阶段三:数据抽象.md @@ -184,7 +184,7 @@ P7:9*9 乘法表 可能现在对你来说,构建像下图这样的 99 乘法表已经是非常容易的一件事了,可是如果我要求你使用 python 的列表推导式(list comprehension),在两行以内完成呢? -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnccDSRQj5W3lZWEUkCOHz2b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnccDSRQj5W3lZWEUkCOHz2b.png) P8:couple 情侣 diff --git a/3.编程思维体系构建/3.6.5.1lab00:让我们开始吧.md b/3.编程思维体系构建/3.6.5.1lab00:让我们开始吧.md index a6e032b..f1f21cc 100644 --- a/3.编程思维体系构建/3.6.5.1lab00:让我们开始吧.md +++ b/3.编程思维体系构建/3.6.5.1lab00:让我们开始吧.md @@ -158,7 +158,7 @@ VS Code 的另一个不错的功能是它具有“嵌入式终端”。因此, 首先,打开一个终端窗口。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/L5HvblSuYonJn4x03a4cMLKknrh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/L5HvblSuYonJn4x03a4cMLKknrh.png) #### 主目录 @@ -174,11 +174,11 @@ VS Code 的另一个不错的功能是它具有“嵌入式终端”。因此, PATH 就像一个地址:它告诉您和计算机到某个文件夹的完整路径(或路由)。请记住,您可以通过两种不同的方式访问计算机上的文件和目录(文件夹)。您可以使用终端(这是一个命令行界面或 CLI),也可以使用 Finder Finder 是图形用户界面(或 GUI)的一个 例子导航技术不同,但文件相同。例如,这是我的 CS 61A 实验室文件夹在我的 GUI 中的样子: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/CWDhbW6gzogyMFxtd6kcnPBunv2.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/CWDhbW6gzogyMFxtd6kcnPBunv2.png) 这是完全相同的文件夹在终端中的外观: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/HZNMbzGZOoQGAhxQ29gcM5V4nNd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HZNMbzGZOoQGAhxQ29gcM5V4nNd.png) 请注意,在这两种情况下,黄色框都显示了 PATH,紫色椭圆显示了“labs”文件夹的内容。 @@ -186,7 +186,7 @@ PATH 就像一个地址:它告诉您和计算机到某个文件夹的完整路 让我们停下来思考一下终端和 Python 解释器之间的区别。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/HgTfbMhCGodZbzxBNh9crH3cnCe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HgTfbMhCGodZbzxBNh9crH3cnCe.png) 1. 哪个是终端? 2. 哪个是 Python 解释器? @@ -197,7 +197,7 @@ A 和 D 都是我的终端。在这里您可以运行 bash 命令,例如 `cd` B 是 Python 解释器。你可以从 >>> 提示中看出这意味着你已经启动了一个 Python 解释器。您还可以判断,因为启动它的命令是可见的:`python3`。该 `python3` 命令启动 Python 解释器。如果您在 Python 解释器中键入 bash 命令,您可能会遇到语法错误!这是一个例子: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/GEN5b1HHdoDegPxAp8WcQDGknoc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/GEN5b1HHdoDegPxAp8WcQDGknoc.png) C 是我的代码编辑器。这是我可以编写 Python 代码以通过我的终端执行的地方。 @@ -287,7 +287,7 @@ mkdir lab 现在,如果您列出目录的内容(使用 `ls`),您将看到两个文件夹,`projects` 和 `lab`. -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Cpfzb9oK2oMyGxxgkqVceE8DnId.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Cpfzb9oK2oMyGxxgkqVceE8DnId.png) ### 更多目录更改 @@ -475,7 +475,7 @@ ______ 实验室还将包括函数编写问题。在你的文本编辑器中打开 `lab00.py`。您可以 `open .` 在 MacOS 或 `start .` Windows 上键入以在 Finder/文件资源管理器中打开当前目录。然后双击或右键单击以在文本编辑器中打开文件。你应该看到这样的东西: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/FkOybDwtnoQeRyxejlwcjhQ2nch.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/FkOybDwtnoQeRyxejlwcjhQ2nch.png) 三引号中的行 `"""` 称为文档字符串(Docstring),它描述了函数应该做什么。在 61A 中编写代码时,您应该始终阅读文档字符串! @@ -483,7 +483,7 @@ ______ 在这里,我们圈出了文档字符串和文档测试,以便于查看: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/MF4ZbUZ0qo70gRxeNGocsYvmnwe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/MF4ZbUZ0qo70gRxeNGocsYvmnwe.png) 在 `twenty_twenty_two`, diff --git a/3.编程思维体系构建/3.Y.1VMware的安装与安装Ubuntu22.04系统.md b/3.编程思维体系构建/3.Y.1VMware的安装与安装Ubuntu22.04系统.md index 60f4533..6665f59 100644 --- a/3.编程思维体系构建/3.Y.1VMware的安装与安装Ubuntu22.04系统.md +++ b/3.编程思维体系构建/3.Y.1VMware的安装与安装Ubuntu22.04系统.md @@ -14,13 +14,13 @@ 一路下一步 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcntUYJNAaOwB8L6KSEhJJojh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcntUYJNAaOwB8L6KSEhJJojh.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnQkVQ4uyYCveO6toBujoGOc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnQkVQ4uyYCveO6toBujoGOc.png) 这俩我推荐勾掉 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcndgDKfTuio3nF0QboemIPHe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcndgDKfTuio3nF0QboemIPHe.png) 安装过后点许可证 输上面的 key 激活 @@ -30,15 +30,15 @@ 下好回到 VMware -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnGHnjgZvtcBrm0XXitFl4Jg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnGHnjgZvtcBrm0XXitFl4Jg.png) 创建新的虚拟机-典型(推荐)-下一步-安装程序 iso 选中你刚下的 iso 下一步 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXilUhHNEyU4r95FxiVgCdg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXilUhHNEyU4r95FxiVgCdg.png) 这里填你一会儿要登录 linux 的个人信息 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnp33Oc3Ia2HzASTZJNOhEWb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnp33Oc3Ia2HzASTZJNOhEWb.png) 这里建议把位置改到其他盘 @@ -46,21 +46,21 @@ 启动后进入 Ubuntu 安装 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn5Uk41JyjjdTzXWQqUkexzc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn5Uk41JyjjdTzXWQqUkexzc.png) 键盘映射 直接 continue 接下来一路 continue install now -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnLxZnyFN3ohE8zrTwNaCA8e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnLxZnyFN3ohE8zrTwNaCA8e.png) 最后 restart -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnLguvbHihJ3ngqrtyGLI6zf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnLguvbHihJ3ngqrtyGLI6zf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnCX92JHjg8PU3quKs4GziZb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnCX92JHjg8PU3quKs4GziZb.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnL5Jn3g7AdzVzoBb6ZINs1f.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnL5Jn3g7AdzVzoBb6ZINs1f.png) 这个 skip @@ -68,15 +68,15 @@ 点右上角 settings -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn85Yb3JIQ3520KeaSoyPVDd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn85Yb3JIQ3520KeaSoyPVDd.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnZLHO1JGWoSqhM9zEEhSMAd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnZLHO1JGWoSqhM9zEEhSMAd.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnvLxCTKYfogPm9GNaKmusEf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnvLxCTKYfogPm9GNaKmusEf.png) 然后按指引 restart 系统 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn30VJILYpO81pq89mAmzjTf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn30VJILYpO81pq89mAmzjTf.png) 会提示你要不要重新命名这些用户下的文件夹 @@ -84,27 +84,27 @@ 如果你的语言还没有变过来的话 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnKzJjY8Dvj13A49bnMAztPg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnKzJjY8Dvj13A49bnMAztPg.png) 点击这个他会安装语言 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcndHnAuGC7TXhQgLkpLkHghf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcndHnAuGC7TXhQgLkpLkHghf.png) 把汉语拖到英文之上 点应用到整个系统 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnltCL3atXHtC3BUj5VI1Lqf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnltCL3atXHtC3BUj5VI1Lqf.png) 右上角 logout 重新登陆 就是中文辣 最后在设置-电源把息屏改成从不 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnnLCJzGoFrUbWIMAPGFkxcb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnnLCJzGoFrUbWIMAPGFkxcb.png) 至此 恭喜安装完成! 之后就可以在桌面上右键 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnG6z1VpAYUGMSkSwDBUxEvf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnG6z1VpAYUGMSkSwDBUxEvf.png) 打开命令行 diff --git a/3.编程思维体系构建/3.Y.2WSL的安装.md b/3.编程思维体系构建/3.Y.2WSL的安装.md index 307cf97..3afe3ca 100644 --- a/3.编程思维体系构建/3.Y.2WSL的安装.md +++ b/3.编程思维体系构建/3.Y.2WSL的安装.md @@ -15,10 +15,10 @@ (现在可能是只开 `适用于Linux的windows子系统`) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnYVkEecWdUs710e8h6G9GTh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnYVkEecWdUs710e8h6G9GTh.png) 如果你的 windows 版本为家庭版 那么 hyperv 选项是没有的 你需要右键以管理员权限打开以下脚本来强行开启 hyperv -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnoCF5MilDma33yviwRGdDHe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnoCF5MilDma33yviwRGdDHe.png) diff --git a/3.编程思维体系构建/3.编程思维体系构建.md b/3.编程思维体系构建/3.编程思维体系构建.md index 2b09343..3fdccb0 100644 --- a/3.编程思维体系构建/3.编程思维体系构建.md +++ b/3.编程思维体系构建/3.编程思维体系构建.md @@ -24,7 +24,7 @@ python内容完成后,基本学习到如何使用python当一门工具使用 如果你要开始,推荐你从3.0开始阅读,然后挑选你喜欢的内容 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnOrKXUsIPJAUXyGB3Txewve.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnOrKXUsIPJAUXyGB3Txewve.png) ## 本章参考内容 diff --git a/4.人工智能/4.11从 AI 到 智能系统 —— 从 LLMs 到 Agents.md b/4.人工智能/4.11从 AI 到 智能系统 —— 从 LLMs 到 Agents.md index d046dbb..8e0576c 100644 --- a/4.人工智能/4.11从 AI 到 智能系统 —— 从 LLMs 到 Agents.md +++ b/4.人工智能/4.11从 AI 到 智能系统 —— 从 LLMs 到 Agents.md @@ -219,13 +219,13 @@ ICL(In-Context Learning,上下文学习)和 COT(Chain of Thought,思 虽然学界对此没有太大的共识,但其原理无非在于给予 LLMs 更翔实的上下文,让输出与输入有着更紧密的关联与惯性。(从某种意义上来说,也可以将其认为是一种图灵机式的编程) -> ICL:
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Xjw5bXgRNolw6OxBiEecfOUTn5b.png) +> ICL:
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Xjw5bXgRNolw6OxBiEecfOUTn5b.png) ICL 为输出增加惯性 > 可以简单认为,通过 ICL Prompt,能强化人类输入到机器输出的连贯性,借以提升输出的确定性。
在经过“回答”的 finetune 之前,大模型的原始能力就是基于给定文本进行接龙,而 ICL 的引入则在“回答”这一前提条件下,降低了机器开始接龙这一步骤中的语义跨度,从而使得输出更加可控。
-COT:
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/NT04baWdNoYzRrxjJFfcXCgbnLh.png) +COT:
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/NT04baWdNoYzRrxjJFfcXCgbnLh.png) COT 为输出增加关联 @@ -240,7 +240,7 @@ COT 为输出增加关联 (需要注意的是,TaskMatrix.AI 更大程度上是一个愿景向的调研案例,尚未正式落地生态) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/GlM9be7Hvo4EepxQfEOcRvzpnKd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/GlM9be7Hvo4EepxQfEOcRvzpnKd.png) TaskMatrix 的生态愿景 @@ -275,7 +275,7 @@ TaskMatrix 的生态愿景 - Usage Example:API 的调用方法样例 - Composition Instruction:API 的使用贴士,如应该与其它什么 API 组合使用,是否需要手动释放等 -> 样例:打开文件 API
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/IFWXbgiy8oOj5axvJd8cJu6pnVb.png) +> 样例:打开文件 API
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/IFWXbgiy8oOj5axvJd8cJu6pnVb.png) 基于此类文档内容和 ICL 的能力,LLMs 能从输入中习得调用 API 的方法,依此快速拓展了其横向能力 @@ -287,11 +287,11 @@ COT for TaskMatrix 在 TaskMatirx 中,通过该模式,让 MCFM 将任务转化为待办大纲,并最终围绕大纲检索并组合 API,完成整体工作 -> 样例:写论文
构建完成工作大纲
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/GAeJbok1FoTFLixLQAlcxdAPned.png) +> 样例:写论文
构建完成工作大纲
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/GAeJbok1FoTFLixLQAlcxdAPned.png) TaskMatrix 自动围绕目标拆解任务 -> 自动调用插件和组件
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/PUHZbzk7jo5Avuxo1g6cgD9snXg.png) +> 自动调用插件和组件
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/PUHZbzk7jo5Avuxo1g6cgD9snXg.png) TaskMatrix 自动为任务创建 API 调用链 @@ -313,7 +313,7 @@ TaskMatrix 自动为任务创建 API 调用链 Decomp 的核心思想为将复杂问题通过 Prompt 技巧,将一个复杂的问题由 LLMs 自主划分为多个子任务。随后,我们通过 LLMs 完成多个任务,并将过程信息最终组合并输出理想的效果 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/X7iLbYOcpoXZy7xuhorc71LSnod.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/X7iLbYOcpoXZy7xuhorc71LSnod.png) 几种 Prompt 方法图示 @@ -321,7 +321,7 @@ Decomp 的核心思想为将复杂问题通过 Prompt 技巧,将一个复杂 而对于 Decomp 过程,则又是由一个原始的 Decomp Prompt 驱动 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/A7OubowqYo11O3xn0KbcRoscnEh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/A7OubowqYo11O3xn0KbcRoscnEh.png) Decomp 方法执行样例 @@ -347,7 +347,7 @@ Decomp 的原始功能实际上并不值得太过关注,但我们急需考虑 通过问题的分解和通过“专用函数”的执行,我们可以轻易让 LLMs 实现自身无法做到的调用 API 工作,例如主动从外部检索获取回答问题所需要的知识。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/N1z8bU7dzoD6x1xKtT3cpm9Pnpe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/N1z8bU7dzoD6x1xKtT3cpm9Pnpe.png) Decomp 方法调用外部接口样例 @@ -359,7 +359,7 @@ Decomp 方法调用外部接口样例 [HuggingGPT](https://arxiv.org/abs/2303.17580) 一文也许并未直接参考 Decomp 方法,而是用一些更规范的手法完成该任务,但其充分流水线化的 Prompt 工程无疑是 Decomp 方法在落地实践上的最佳注脚 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Uct8bXhTgocChExgmiWcQTbSnGb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Uct8bXhTgocChExgmiWcQTbSnGb.png) HuggingGPT @@ -407,7 +407,7 @@ Generative Agents 构建了一套框架,让 NPC 可以感知被模块化的世 - 一方面,其包含场景中既有对象,包括建筑和摆件等的基础层级信息 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/BKZPbpDrIo95amxDZANccwHZnpd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/BKZPbpDrIo95amxDZANccwHZnpd.png) Generative Agents 的场景信息管理 @@ -635,7 +635,7 @@ AutoGPT 主要特性如下: 其提醒我们,就连我们的意识主体性,也只是陈述自我的一个表述器而已。我们是否应当反思对语言能力的过度迷信,从而相信我们能通过训练模型构建 All in One 的智能实体? -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ED4qbjSrMoR2sQxJnGEcCtvjn8d.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ED4qbjSrMoR2sQxJnGEcCtvjn8d.png) 全局工作空间理论 @@ -905,7 +905,7 @@ AutoGPT 的核心记忆设计依赖于预包装的 Prompt 本体,这一包装 Generative Agent 通过自动化评估记忆的价值,并构建遗忘系统、关注系统等用于精准从自己繁杂的记忆中检索对于当前情景有用的信息。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/StjCbHn2BoqTrNxF64ScvrPInCe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/StjCbHn2BoqTrNxF64ScvrPInCe.png) Generative Agents :基于 Reflection 构建记忆金字塔 diff --git a/4.人工智能/4.12本章节内容的局限性.md b/4.人工智能/4.12本章节内容的局限性.md index 10adacf..ada5f72 100644 --- a/4.人工智能/4.12本章节内容的局限性.md +++ b/4.人工智能/4.12本章节内容的局限性.md @@ -60,4 +60,4 @@ ZZM 曾经尝试过投入大量时间去钻研数学以及机器学习相关的 联系 ZZM,我努力改 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnfYSoVgoERduiWP0jWNWMxf.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnfYSoVgoERduiWP0jWNWMxf.jpg) diff --git a/4.人工智能/4.1前言.md b/4.人工智能/4.1前言.md index c28f3c0..fc05421 100644 --- a/4.人工智能/4.1前言.md +++ b/4.人工智能/4.1前言.md @@ -13,7 +13,7 @@ 计算机视觉旨在用计算机模拟人类处理图片信息的能力,就比如这里有一张图片——手写数字 9 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnvQiaAx6WgPx64s8fBklVwh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnvQiaAx6WgPx64s8fBklVwh.png) 对我们人类而言,能够很轻松地知道这张图片中包含的信息(数字 9),而对计算机来说这只是一堆像素。计算机视觉的任务就是让计算机能够从这堆像素中得到‘数字 9’这个信息。 @@ -21,15 +21,15 @@ 图像分割是在图片中对物体分类,并且把它们所对应的位置标示出来。下图就是把人的五官,面部皮肤和头发分割出来,效(小)果(丑)图如下: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnxn5GlJZmsrMV5qKNwMlDPc.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnxn5GlJZmsrMV5qKNwMlDPc.jpg) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnokdWGegr2XCi1vfg0ZZiWg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnokdWGegr2XCi1vfg0ZZiWg.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn2o9ilOZg6jI6ssTYWhoeme.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn2o9ilOZg6jI6ssTYWhoeme.png) 图像生成相信大家一定不陌生,NovalAI 在 2022 年火的一塌糊涂,我觉得不需要我过多赘述,对它(Diffusion model)的改进工作也是层出不穷,这里就放一张由可控姿势网络(ControlNet)生成的图片吧: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnUjnRociXua1yKj6dmU1A3c.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnUjnRociXua1yKj6dmU1A3c.png) 三维重建也是很多研究者关注的方向,指的是传入对同一物体不同视角的照片,来生成 3D 建模的任务。这方面比图像处理更加前沿并且难度更大。具体见[4.6.5.4神经辐射场(NeRF)](4.6.5.4%E7%A5%9E%E7%BB%8F%E8%BE%90%E5%B0%84%E5%9C%BA(NeRF).md) 章节。 @@ -39,9 +39,9 @@ 这就更好理解了,让计算机能够像人类一样,理解文本中的“真正含义”。在计算机眼中,文本就是单纯的字符串,NLP 的工作就是把字符转换为计算机可理解的数据。举个例子,ChatGPT(或者 New Bing)都是 NLP 的成果。在过去,NLP 领域被细分为了多个小任务,比如文本情感分析、关键段落提取等。而 ChatGPT 的出现可以说是集几乎所有小任务于大成,接下来 NLP 方向的工作会向 ChatGPT 的方向靠近。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnyh6pakAkcxCKq6pLylSdef.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnyh6pakAkcxCKq6pLylSdef.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnwWnoEDulgWdqGkY0WeYogc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnwWnoEDulgWdqGkY0WeYogc.png) ## 多模态(跨越模态的处理) @@ -53,7 +53,7 @@ 具体的任务比如说图片问答,传入一张图片,问 AI 这张图片里面有几只猫猫,它们是什么颜色,它告诉我有一只猫猫,是橙色的: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnrMvM1THshjXXOuh8WXi2zr.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnrMvM1THshjXXOuh8WXi2zr.jpg) ## 对比学习 @@ -84,3 +84,8 @@ # And more? 我们对AI的定义如果仅仅只有这些内容,我认为还是太过于狭隘了,我们可以把知识规划,知识表征等等东西都可以将他划入AI的定义中去,当然这些还期待着你的进一步探索和思考~ + + +# 特别致谢 + +非常荣幸能在本章中得到 IIPL智能信息处理实验室 http://iipl.net.cn 的宝贵贡献,衷心感谢他们的无私支持与帮助! diff --git a/4.人工智能/4.2机器学习(AI)快速入门(quick start).md b/4.人工智能/4.2机器学习(AI)快速入门(quick start).md index 1a125bc..77eb764 100644 --- a/4.人工智能/4.2机器学习(AI)快速入门(quick start).md +++ b/4.人工智能/4.2机器学习(AI)快速入门(quick start).md @@ -26,7 +26,7 @@ 甚至深度学习,也只是机器学习的一部分,不过使用了更多技巧和方法,增大了计算能力罢了。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbtaUStj8coQiNTmZzfWqNl.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbtaUStj8coQiNTmZzfWqNl.png) # 两种机器学习算法 @@ -42,11 +42,11 @@ 近三个月来,每当你的城市里有人卖了房子,你都记录了下面的细节——卧室数量、房屋大小、地段等等。但最重要的是,你写下了最终的成交价: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnL1MNHqAyDjcxIzjFTOdYtt.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnL1MNHqAyDjcxIzjFTOdYtt.png) 然后你让新人根据着你的成交价来估计新的数量 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnwcDWIDvLnuvZ1uOb75QKPh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnwcDWIDvLnuvZ1uOb75QKPh.png) 这就是监督学习,你有一个参照物可以帮你决策。 @@ -66,7 +66,7 @@ 这其实就是一种经典的聚类算法 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnSn17EC3YvEnA6GScKNAF3e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnSn17EC3YvEnA6GScKNAF3e.png) 可以把特征不一样的数据分开,有非常多的操作,你感兴趣可以选择性的去了解一下。 @@ -139,7 +139,7 @@ def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): 第二步把每个数值都带入进行运算。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcniDICYiLh7ddcxEVrHxFODe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcniDICYiLh7ddcxEVrHxFODe.png) 比如说,如果第一套房产实际成交价为 25 万美元,你的函数估价为 17.8 万美元,这一套房产你就差了 7.2 万。 @@ -168,13 +168,13 @@ def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): 为了避免这种情况,数学家们找到了很多种[聪明的办法](https://link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/Gradient_descent)来快速找到优秀的权重值。下面是一种: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXkjzipUjgJpFYXaEhbEN8e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXkjzipUjgJpFYXaEhbEN8e.png) 这就是被称为 loss 函数的东西。 这是个专业属于,你可以选择性忽略他,我们将它改写一下 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXbd7bqnqPwF8f1Up8rHq5e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXbd7bqnqPwF8f1Up8rHq5e.png) θ 表示当前的权重值。 J(θ) 表示「当前权重的代价」。 @@ -182,7 +182,7 @@ def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): 如果我们为这个等式中所有卧室数和面积的可能权重值作图的话,我们会得到类似下图的图表: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcniBPPpszGhbOWGpvto38Alf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcniBPPpszGhbOWGpvto38Alf.png) 因此,我们需要做的只是调整我们的权重,使得我们在图上朝着最低点「走下坡路」。如果我们不断微调权重,一直向最低点移动,那么我们最终不用尝试太多权重就可以到达那里。 @@ -194,7 +194,7 @@ def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): 当你使用一个机器学习算法库来解决实际问题时,这些都已经为你准备好了。但清楚背后的原理依然是有用的。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn2xlALHL53uUMXSHjloWiOe.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn2xlALHL53uUMXSHjloWiOe.jpg) 枚举法 @@ -225,7 +225,7 @@ def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): 我们换一个好看的形式给他展示 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhbR6lGSXd6UAEpRvSIYSHg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhbR6lGSXd6UAEpRvSIYSHg.png) 箭头头表示了函数中的权重。 @@ -233,17 +233,17 @@ def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): 所以为了更加的智能化,我们可以利用不同的权重来多次运行这个算法,收集各种不同情况下的估价。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnpDPWKnB6x4fQmGpyvLQJLf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnpDPWKnB6x4fQmGpyvLQJLf.png) 然后我们把四种整合到一起,就得到一个超级答案 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnplbH8Ot0U6cuLHStDmXyze.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnplbH8Ot0U6cuLHStDmXyze.png) 这样我们相当于得到了更为准确的答案 # 神经网络是什么 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhLjMMdts91f8gcpgSVE8Ed.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhLjMMdts91f8gcpgSVE8Ed.png) 我们把四个超级网络的结合图整体画出来,其实这就是个超级简单的神经网络,虽然我们省略了很多的内容,但是他仍然有了一定的拟合能力 @@ -318,17 +318,17 @@ print('y_pred=',y_test.data) 我们试着只识别一个数字 8 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnOvoCMEuaMIpKZkfoFLDitf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnOvoCMEuaMIpKZkfoFLDitf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnZQnrltieoJ93DT79pyX45e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnZQnrltieoJ93DT79pyX45e.png) 我们把一幅 18×18 像素的图片当成一串含有 324 个数字的数组,就可以把它输入到我们的神经网络里面了: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnZ6bzfOUDQgPAJrKI7Pp3Yc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnZ6bzfOUDQgPAJrKI7Pp3Yc.png) 为了更好地操控我们的输入数据,我们把神经网络的输入节点扩大到 324 个: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnha4DXsSfAUIYbCQqAx6QKd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnha4DXsSfAUIYbCQqAx6QKd.png) 请注意,我们的神经网络现在有了两个输出(而不仅仅是一个房子的价格)。第一个输出会预测图片是「8」的概率,而第二个则输出不是「8」的概率。概括地说,我们就可以依靠多种不同的输出,利用神经网络把要识别的物品进行分组。 @@ -349,7 +349,7 @@ model.add(Activation('relu'))# 激活函数,你可以理解为加上这个东 当数字并不是正好在图片中央的时候,我们的识别器就完全不工作了。一点点的位移我们的识别器就掀桌子不干了 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnShOBEoOhsJLR6L5xyr7INb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnShOBEoOhsJLR6L5xyr7INb.png) 这是因为我们的网络只学习到了正中央的「8」。它并不知道那些偏离中心的「8」长什么样子。它仅仅知道中间是「8」的图片规律。 @@ -365,9 +365,9 @@ model.add(Activation('relu'))# 激活函数,你可以理解为加上这个东 当然,你同时也需要更强的拟合能力和更深的网络。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnLwoxR6OC3ZBxqtMcKg4v6b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnLwoxR6OC3ZBxqtMcKg4v6b.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnIcHcRF34F6jJgTRvhyAevc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnIcHcRF34F6jJgTRvhyAevc.png) 一层一层堆叠起来,这种方法很早就出现了。 @@ -377,7 +377,7 @@ model.add(Activation('relu'))# 激活函数,你可以理解为加上这个东 作为人类,你能够直观地感知到图片中存在某种层级(hierarchy)或者是概念结构(conceptual structure)。比如说,你在看 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcndjXp5ayczwemklMk9ZA3ig.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcndjXp5ayczwemklMk9ZA3ig.jpg) 你会快速的辨认出一匹马,一个人。 @@ -387,7 +387,7 @@ model.add(Activation('relu'))# 激活函数,你可以理解为加上这个东 有人对此做过研究,人的眼睛可能会逐步判断一个物体的信息,比如说你看到一张图片,你会先看颜色,然后看纹理然后再看整体,那么我们需要一种操作来模拟这个过程,我们管这种操作叫卷积操作。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnsm0cJGKqt0AU8Kv3K3rkKg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnsm0cJGKqt0AU8Kv3K3rkKg.png) ## 卷积是如何工作的 @@ -395,13 +395,13 @@ model.add(Activation('relu'))# 激活函数,你可以理解为加上这个东 当然也有最新研究说卷积不具备平移不变性,但是我这里使用这个概念是为了大伙更好的理解,举个例子:你将 8 无论放在左上角还是左下角都改变不了他是 8 的事实 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnHo4tt4wmnC7sUykRPPLKmm.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnHo4tt4wmnC7sUykRPPLKmm.png) 我们将一张图像分成这么多个小块,然后输入神经网络中的是一个小块。每次判断一张小图块。 然而,有一个非常重要的不同:对于每个小图块,我们会使用同样的神经网络权重。换一句话来说,我们平等对待每一个小图块。如果哪个小图块有任何异常出现,我们就认为这个图块是「异常」 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnCxlvaanbzweMmeCOsp1xKf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnCxlvaanbzweMmeCOsp1xKf.png) 换一句话来说,我们从一整张图片开始,最后得到一个稍小一点的数组,里面存储着我们图片中的哪一部分有异常。 @@ -413,7 +413,7 @@ model.add(Activation('relu'))# 激活函数,你可以理解为加上这个东 让我们先来看每个 2×2 的方阵数组,并且留下最大的数: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnquKepO4wJ74KfNIy3LtqVg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnquKepO4wJ74KfNIy3LtqVg.png) 每一波我们只保留一个数,这样就大大减少了图片的计算量了。 @@ -435,7 +435,7 @@ model.add(Activation('relu'))# 激活函数,你可以理解为加上这个东 你猜怎么着?数组就是一串数字而已,所以我们我们可以把这个数组输入到另外一个神经网络里面去。最后的这个神经网络会决定这个图片是否匹配。为了区分它和卷积的不同,我们把它称作「全连接」网络 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnDqrUZwXHzgmLR6yvbYSgsV.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnDqrUZwXHzgmLR6yvbYSgsV.png) 我们的图片处理管道是一系列的步骤:卷积、最大池化,还有最后的「全连接」网络。 diff --git a/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md b/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md index ad70497..d3c0838 100644 --- a/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md +++ b/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md @@ -4,6 +4,10 @@ 完成习题 ::: +::: tip 📥 +本节附件下载 +::: + /4.人工智能/code/MAZE.zip # Node @@ -172,7 +176,7 @@ class Maze: 5. 两种算法总是能找到相同长度的路径 2. 下面的问题将问你关于下面迷宫的问题。灰色单元格表示墙壁。在这个迷宫上运行了一个搜索算法,找到了从 A 点到 B 点的黄色突出显示的路径。在这样做的过程中,红色突出显示的细胞是探索的状态,但并没有达到目标。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/MKtXbfJW3ocWT3xSMK0cwVc4nWf.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/MKtXbfJW3ocWT3xSMK0cwVc4nWf.png) 在讲座中讨论的四种搜索算法中——深度优先搜索、广度优先搜索、曼哈顿距离启发式贪婪最佳优先搜索和曼哈顿距离启发式$A^*$ @@ -192,7 +196,7 @@ class Maze: 4. 深度限制的极小极大值永远不会比没有深度限制的极大极小值更可取 4. 下面的问题将询问您关于下面的 Minimax 树,其中绿色向上箭头表示 MAX 玩家,红色向下箭头表示 MIN 玩家。每个叶节点都标有其值。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/UVssbyMxCoEQSuxvjh3caWAFnOb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/UVssbyMxCoEQSuxvjh3caWAFnOb.png) 根节点的值是多少? diff --git a/4.人工智能/4.3.1.2项目:Tic-Tac-Toe井字棋.md b/4.人工智能/4.3.1.2项目:Tic-Tac-Toe井字棋.md index 97ce88f..422ad9a 100644 --- a/4.人工智能/4.3.1.2项目:Tic-Tac-Toe井字棋.md +++ b/4.人工智能/4.3.1.2项目:Tic-Tac-Toe井字棋.md @@ -4,6 +4,10 @@ 如果你卡住了,请记得回来阅读文档,或请求身边人的帮助。 +::: tip 📥 +本节附件下载 +::: + `pip3 install -r requirements.txt` # 理解 diff --git a/4.人工智能/4.3.1搜索.md b/4.人工智能/4.3.1搜索.md index 0fd712b..de60c51 100644 --- a/4.人工智能/4.3.1搜索.md +++ b/4.人工智能/4.3.1搜索.md @@ -18,13 +18,13 @@ 导航是使用搜索算法的一个典型的搜索,它接收您的当前位置和目的地作为输入,并根据搜索算法返回建议的路径。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Hesobke0ZocH48xGFyocf9Cxntd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Hesobke0ZocH48xGFyocf9Cxntd.png) 在计算机科学中,还有许多其他形式的搜索问题,比如谜题或迷宫。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/SYw4bOzqAo65PQxZQLucbZAxnHd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/SYw4bOzqAo65PQxZQLucbZAxnHd.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/LPgEbVQg2oZBSexmGWwcwfbdnVd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/LPgEbVQg2oZBSexmGWwcwfbdnVd.png) # 举个例子 @@ -42,14 +42,14 @@ - 搜索算法开始的状态。在导航应用程序中,这将是当前位置。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/HCxXbwKFyof6DFx6FZ8c5EHknBh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HCxXbwKFyof6DFx6FZ8c5EHknBh.png) - 动作(Action) - 一个状态可以做出的选择。更确切地说,动作可以定义为一个函数。当接收到状态$s$作为输入时,$Actions(s)$将返回可在状态$s$ 中执行的一组操作作为输出。 - 例如,在一个数字华容道中,给定状态的操作是您可以在当前配置中滑动方块的方式。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/MpgrbCjtDo1NlLxVyL1cMH6FnAg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/MpgrbCjtDo1NlLxVyL1cMH6FnAg.png) - 过渡模型(Transition Model) @@ -58,14 +58,14 @@ - 在接收到状态$s$和动作$a$作为输入时,$Results(s,a)$返回在状态$s$中执行动作$a$ 所产生的状态。 - 例如,给定数字华容道的特定配置(状态$s$),在任何方向上移动正方形(动作$a$)将导致谜题的新配置(新状态)。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/RKV2buJoroCV6SxiMUuct3dbnPU.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/RKV2buJoroCV6SxiMUuct3dbnPU.png) - 状态空间(State Space) - 通过一系列的操作目标从初始状态可达到的所有状态的集合。 - 例如,在一个数字华容道谜题中,状态空间由所有$\frac{16!}{2}$种配置,可以从任何初始状态达到。状态空间可以可视化为有向图,其中状态表示为节点,动作表示为节点之间的箭头。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/JdCqb2UI9ooWmdxk258cTIIznab.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/JdCqb2UI9ooWmdxk258cTIIznab.png) - 目标测试(Goal Test) @@ -112,9 +112,9 @@ - 展开节点(找到可以从该节点到达的所有新节点),并将生成的节点添加到边域。 - 将当前节点添加到探索集。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/K53FbGmswoM7JAxqJZxcQEjdnES.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/K53FbGmswoM7JAxqJZxcQEjdnES.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/THhpbemEHoxl80xHeTjc9d35nVh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/THhpbemEHoxl80xHeTjc9d35nVh.png) 边域从节点 A 初始化开始 @@ -122,9 +122,9 @@ a. 取出边域中的节点 A,展开节点 A,将节点 B 添加到边域。 b. 取出节点 B,展开,添加...... c. 到达目标节点,停止,返回解决方案 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/XmnObIGaUoF4ssxkgzUc4vTUnmf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/XmnObIGaUoF4ssxkgzUc4vTUnmf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Wsntb9rLwogdAKxpJgLchrI8nae.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Wsntb9rLwogdAKxpJgLchrI8nae.png) 会出现什么问题?节点 A-> 节点 B-> 节点 A->......-> 节点 A。我们需要一个探索集,记录已搜索的节点! @@ -143,13 +143,13 @@ c. 到达目标节点,停止,返回解决方案 - 所找到的解决方案可能不是最优的。 - 在最坏的情况下,该算法将在找到解决方案之前探索每一条可能的路径,从而在到达解决方案之前花费尽可能长的时间。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/SGVWbCcTlobQwJxSjKvcNyJAnEG.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/SGVWbCcTlobQwJxSjKvcNyJAnEG.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Vv9Sb26QfoMrkqx5apycIYPJnlf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Vv9Sb26QfoMrkqx5apycIYPJnlf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Gjd5bpdpcoIxGtxcUJ0c2OVfnOf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Gjd5bpdpcoIxGtxcUJ0c2OVfnOf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/M2vZbA5hpoT9RExuAGwcBHF1nmh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/M2vZbA5hpoT9RExuAGwcBHF1nmh.png) - 代码实现 @@ -175,13 +175,13 @@ def remove(self): - 几乎可以保证该算法的运行时间会比最短时间更长。 - 在最坏的情况下,这种算法需要尽可能长的时间才能运行。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/S6SRbMUrcoYQCYxZGgJczkdcnBP.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/S6SRbMUrcoYQCYxZGgJczkdcnBP.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Xg7Qbv59IoQB3bxPFO1ceXgRnkf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Xg7Qbv59IoQB3bxPFO1ceXgRnkf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/X34Rb5R7AonUg3xYs7DcQzSfndg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/X34Rb5R7AonUg3xYs7DcQzSfndg.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/PQeZbJv3Bom6NYxa6lccT084nFn.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/PQeZbJv3Bom6NYxa6lccT084nFn.png) - 代码实现 @@ -202,13 +202,13 @@ def remove(self): - 贪婪最佳优先搜索扩展最接近目标的节点,如启发式函数$h(n)$所确定的。顾名思义,该函数估计下一个节点离目标有多近,但可能会出错。贪婪最佳优先算法的效率取决于启发式函数的好坏。例如,在迷宫中,算法可以使用启发式函数,该函数依赖于可能节点和迷宫末端之间的曼哈顿距离。曼哈顿距离忽略了墙壁,并计算了从一个位置到目标位置需要向上、向下或向两侧走多少步。这是一个简单的估计,可以基于当前位置和目标位置的$(x,y)$坐标导出。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Pe3WbBuTjomWjfxd5Ryc3OPPnSd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Pe3WbBuTjomWjfxd5Ryc3OPPnSd.png) - 然而,重要的是要强调,与任何启发式算法一样,它可能会出错,并导致算法走上比其他情况下更慢的道路。不知情的搜索算法有可能更快地提供一个更好的解决方案,但它比知情算法更不可能这样。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/HkvdbcEdmo6RtjxOqqic31XFnSh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HkvdbcEdmo6RtjxOqqic31XFnSh.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/SU2DbQeN2oxs5ex3K3NcMaJfnch.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/SU2DbQeN2oxs5ex3K3NcMaJfnch.png) - $A^*$搜索 @@ -220,9 +220,9 @@ def remove(self): - 一致性,这意味着从新节点到目标的估计路径成本加上从先前节点转换到该新节点的成本应该大于或等于先前节点到目标的估计路径成本。用方程的形式表示,$h(n)$是一致的,如果对于每个节点n$和后续节点n'$,从n$到$n'$的步长为c$,满足$h(n)≤h(n')+c$。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/BbIiba1pwo3uI7x4k7QcwicznGc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/BbIiba1pwo3uI7x4k7QcwicznGc.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/HhG9bcJP2okKMMxY0FGclP0AnXY.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HhG9bcJP2okKMMxY0FGclP0AnXY.png) # 对抗性搜索 @@ -232,41 +232,41 @@ def remove(self): - 作为对抗性搜索中的一种算法,Minimax 将获胜条件表示为$(-1)$表示为一方,$(+1)$表示为另一方。进一步的行动将受到这些条件的驱动,最小化的一方试图获得最低分数,而最大化的一方则试图获得最高分数。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/FYu3bQwCZofBgsxKDJiciTR7nzc.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/FYu3bQwCZofBgsxKDJiciTR7nzc.png) - 井字棋 AI 为例 - $s_0$: 初始状态(在我们的情况下,是一个空的3X3棋盘) - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/WstnbmHwYoQauRxUQOCclz8Jngb.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/WstnbmHwYoQauRxUQOCclz8Jngb.png) - $Players(s)$: 一个函数,在给定状态$$s$$的情况下,返回轮到哪个玩家(X或O)。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/DKzTbJSZMoc1UkxT9KOcIHqvnob.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/DKzTbJSZMoc1UkxT9KOcIHqvnob.png) - $Actions(s)$: 一个函数,在给定状态$$s$$的情况下,返回该状态下的所有合法动作(棋盘上哪些位置是空的)。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/LuEzbLOaqox7yox5lXzcouWYnKc.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/LuEzbLOaqox7yox5lXzcouWYnKc.png) - $Result(s, a)$: 一个函数,在给定状态$$s$$和操作$$a$$的情况下,返回一个新状态。这是在状态$$s$$上执行动作$$a$$(在游戏中移动)所产生的棋盘。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/AdOVbwCGhoVcWVx21TMcdhbDnIg.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/AdOVbwCGhoVcWVx21TMcdhbDnIg.png) - $Terminal(s)$: 一个函数,在给定状态$$s$$的情况下,检查这是否是游戏的最后一步,即是否有人赢了或打成平手。如果游戏已结束,则返回True,否则返回False。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/EOfJbvoUMogVT8xsrTxcl5ugnrk.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/EOfJbvoUMogVT8xsrTxcl5ugnrk.png) - $Utility(s)$: 一个函数,在给定终端状态s的情况下,返回状态的效用值:$$-1、0或1$$。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/UcpAbpWtJoHb5Wx6ycrcG2ZZnIe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/UcpAbpWtJoHb5Wx6ycrcG2ZZnIe.png) - 算法的工作原理: - 该算法递归地模拟从当前状态开始直到达到终端状态为止可能发生的所有游戏状态。每个终端状态的值为$(-1)$、$0$或$(+1)$。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/DN3mb0lbno2AHvx2M0JcrTvtnYf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/DN3mb0lbno2AHvx2M0JcrTvtnYf.png) - 根据轮到谁的状态,算法可以知道当前玩家在最佳游戏时是否会选择导致状态值更低或更高的动作。 @@ -278,7 +278,7 @@ def remove(self): 在得到这些值之后,最大化的玩家会选择最高的一个。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/EjB9bzgZNohQtkxXwXgcVrKwnth.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/EjB9bzgZNohQtkxXwXgcVrKwnth.png) - 具体算法: @@ -310,7 +310,7 @@ def remove(self): - 这一点最容易用一个例子来说明:最大化的玩家知道,在下一步,最小化的玩家将试图获得最低分数。假设最大化玩家有三个可能的动作,第一个动作的值为4。然后玩家开始为下一个动作生成值。要做到这一点,如果当前玩家做出这个动作,玩家会生成最小化者动作的值,并且知道最小化者会选择最低的一个。然而,在完成最小化器所有可能动作的计算之前,玩家会看到其中一个选项的值为3。这意味着没有理由继续探索最小化玩家的其他可能行动。尚未赋值的动作的值无关紧要,无论是10还是(-10)。如果该值为10,则最小化器将选择最低选项3,该选项已经比预先设定的4差。如果尚未估价的行动结果是(-10),那么最小化者将选择(-10)这一选项,这对最大化者来说更加不利。因此,在这一点上为最小化者计算额外的可能动作与最大化者无关,因为最大化玩家已经有了一个明确的更好的选择,其值为4。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/LDZab4TeMoByvDxF1Onc8WQenpb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/LDZab4TeMoByvDxF1Onc8WQenpb.png) - 深度限制的极大极小算法(Depth-Limited Minimax) diff --git a/4.人工智能/4.3.2.1程序示例——命题逻辑与模型检测.md b/4.人工智能/4.3.2.1程序示例——命题逻辑与模型检测.md index 7a4513b..db1d8ef 100644 --- a/4.人工智能/4.3.2.1程序示例——命题逻辑与模型检测.md +++ b/4.人工智能/4.3.2.1程序示例——命题逻辑与模型检测.md @@ -4,6 +4,10 @@ 完成习题 ::: + +::: tip 📥 +本节附件下载 +::: # Sentence——父类 ```python @@ -311,15 +315,15 @@ check_knowledge(knowledge) 在这个游戏中,玩家一按照一定的顺序排列颜色,然后玩家二必须猜测这个顺序。每一轮,玩家二进行猜测,玩家一返回一个数字,指示玩家二正确选择了多少颜色。让我们用四种颜色模拟一个游戏。假设玩家二猜测以下顺序: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/FZCJbOzr9o4oQPx7SNGcFxTSnRd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/FZCJbOzr9o4oQPx7SNGcFxTSnRd.png) 玩家一回答“二”。因此,我们知道其中一些两种颜色位于正确的位置,而另两种颜色则位于错误的位置。根据这些信息,玩家二试图切换两种颜色的位置。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Y80wbn96sol7PUxO5fKcOA9Hnbg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Y80wbn96sol7PUxO5fKcOA9Hnbg.png) 现在玩家一回答“零”。因此,玩家二知道切换后的颜色最初位于正确的位置,这意味着未被切换的两种颜色位于错误的位置。玩家二切换它们。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/EuXObldHcoaO74xIzZocQQKTn4k.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/EuXObldHcoaO74xIzZocQQKTn4k.png) 在命题逻辑中表示这一点需要我们有(颜色的数量)$^2$个原子命题。所以,在四种颜色的情况下,我们会有命题 red0,red1,red2,red3,blue0…代表颜色和位置。下一步是用命题逻辑表示游戏规则(每个位置只有一种颜色,没有颜色重复),并将它们添加到知识库中。最后一步是将我们所拥有的所有线索添加到知识库中。在我们的案例中,我们会补充说,在第一次猜测中,两个位置是错误的,两个是正确的,而在第二次猜测中没有一个是对的。利用这些知识,模型检查算法可以为我们提供难题的解决方案。 diff --git a/4.人工智能/4.3.2.2项目:扫雷,骑士与流氓问题.md b/4.人工智能/4.3.2.2项目:扫雷,骑士与流氓问题.md index 7951b78..7b0c716 100644 --- a/4.人工智能/4.3.2.2项目:扫雷,骑士与流氓问题.md +++ b/4.人工智能/4.3.2.2项目:扫雷,骑士与流氓问题.md @@ -4,6 +4,10 @@ 如果你卡住了,请记得回来阅读文档,或请求身边人的帮助。 +::: tip 📥 +本节附件下载 +::: + `pip3 install -r requirements.txt` # 骑士与流氓问题 @@ -71,7 +75,7 @@ C 说:“A 是骑士。” 写一个 AI 来玩扫雷游戏。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/CQmGb6QTjoeyVCx9vjncYF2QnQe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/CQmGb6QTjoeyVCx9vjncYF2QnQe.png) ## 背景 @@ -80,7 +84,7 @@ C 说:“A 是骑士。” - 扫雷器是一款益智游戏,由一个单元格网格组成,其中一些单元格包含隐藏的“地雷”。点击包含地雷的单元格会引爆地雷,导致用户输掉游戏。单击“安全”单元格(即不包含地雷的单元格)会显示一个数字,指示有多少相邻单元格包含地雷,其中相邻单元格是指从给定单元格向左、向右、向上、向下或对角线一个正方形的单元格。 - 例如,在这个 3x3 扫雷游戏中,三个 1 值表示这些单元格中的每个单元格都有一个相邻的单元格,该单元格是地雷。四个 0 值表示这些单元中的每一个都没有相邻的地雷。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/BcfWbqCNKoXpTHxPQVqczsvcnBd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/BcfWbqCNKoXpTHxPQVqczsvcnBd.png) - 给定这些信息,玩家根据逻辑可以得出结论,右下角单元格中一定有地雷,左上角单元格中没有地雷,因为只有在这种情况下,其他单元格上的数字标签才会准确。 - 游戏的目标是标记(即识别)每个地雷。在游戏的许多实现中,包括本项目中的实现中,玩家可以通过右键单击单元格(或左键双击,具体取决于计算机)来标记地雷。 @@ -90,7 +94,7 @@ C 说:“A 是骑士。” - 你在这个项目中的目标是建立一个可以玩扫雷游戏的人工智能。回想一下,基于知识的智能主体通过考虑他们的知识库来做出决策,并根据这些知识做出推断。 - 我们可以表示人工智能关于扫雷游戏的知识的一种方法是,使每个单元格成为命题变量,如果单元格包含地雷,则为真,否则为假。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/IROdbJ4zAooiWNxitU9cRovbnne.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/IROdbJ4zAooiWNxitU9cRovbnne.png) - 我们现在掌握了什么信息?我们现在知道八个相邻的单元格中有一个是地雷。因此,我们可以写一个逻辑表达式,如下所示,表示其中一个相邻的单元格是地雷。 - `Or(A,B,C,D,E,F,G,H)` @@ -124,12 +128,12 @@ Or( - 这种表示法中的每个逻辑命题都有两个部分:一个是网格中与提示数字有关的一组单元格 `cell`,另一个是数字计数 `count`,表示这些单元格中有多少是地雷。上面的逻辑命题说,在单元格 A、B、C、D、E、F、G 和 H 中,正好有 1 个是地雷。 - 为什么这是一个有用的表示?在某种程度上,它很适合某些类型的推理。考虑下面的游戏。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/UiHObqm4noSOKlxcEtScuwPlnLd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/UiHObqm4noSOKlxcEtScuwPlnLd.png) - 利用左下数的知识,我们可以构造命题 `{D,E,G}=0`,意思是在 D、E 和 G 单元中,正好有 0 个是地雷。凭直觉,我们可以从这句话中推断出所有的单元格都必须是安全的。通过推理,每当我们有一个 `count` 为 0 的命题时,我们就知道该命题的所有 `cell` 都必须是安全的。 - 同样,考虑下面的游戏。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/VSbubz9JYo7H8XxgSbCcmMQHniK.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/VSbubz9JYo7H8XxgSbCcmMQHniK.png) - 我们的人工智能会构建命题 `{E,F,H}=3`。凭直觉,我们可以推断出所有的 E、F 和 H 都是地雷。更一般地说,任何时候 `cell` 的数量等于 `count`,我们都知道这个命题的所有单元格都必须是地雷。 - 一般来说,我们只希望我们的命题是关于那些还不知道是安全的还是地雷的 `cell`。这意味着,一旦我们知道一个单元格是否是地雷,我们就可以更新我们的知识库来简化它们,并可能得出新的结论。 @@ -137,7 +141,7 @@ Or( - 同样,如果我们的人工智能知道命题 `{A,B,C}=2`,并且我们被告知 C 是一颗地雷,我们可以从命题中删除 C,并减少计数的值(因为 C 是导致该计数的地雷),从而得到命题 `{A、B}=1`。这是合乎逻辑的:如果 A、B 和 C 中有两个是地雷,并且我们知道 C 是地雷,那么 A 和 B 中一定有一个是地雷。 - 如果我们更聪明,我们可以做最后一种推理。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/GsxxbeoPzoOZn4xSUaecVzKNnBc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/GsxxbeoPzoOZn4xSUaecVzKNnBc.png) - 考虑一下我们的人工智能根据中间顶部单元格和中间底部单元格会知道的两个命题。从中上角的单元格中,我们得到 `{A,B,C}=1`。从底部中间单元格中,我们得到 `{A,B,C,D,E}=2`。从逻辑上讲,我们可以推断出一个新的知识,即 `{D,E}=1`。毕竟,如果 A、B、C、D 和 E 中有两个是地雷,而 A、B 和 C 中只有一个是地雷的话,那么 D 和 E 必须是另一个地雷。 - 更一般地说,任何时候我们有两个命题满足 `set1=count1` 和 `set2=count2`,其中 `set1` 是 `set2` 的子集,那么我们可以构造新的命题 `set2-set1=count2-count1`。考虑上面的例子,以确保你理解为什么这是真的。 diff --git a/4.人工智能/4.3.2知识推理.md b/4.人工智能/4.3.2知识推理.md index 7738ade..93b3329 100644 --- a/4.人工智能/4.3.2知识推理.md +++ b/4.人工智能/4.3.2知识推理.md @@ -112,7 +112,7 @@ - $KB$: 如果今天是星期四并且不下雨,那我将出门跑步;今天是星期四;今天不下雨。$(P\land\lnot Q)\to R,P,\lnot Q$ - 查询结论(query): $R$ - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/E8YrbXnGtoNHEJxmAttcX4p0nlg.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/E8YrbXnGtoNHEJxmAttcX4p0nlg.png) - 接下来,让我们看看如何将知识和逻辑表示为代码。 @@ -175,31 +175,31 @@ def check_all(knowledge, query, symbols, model):# 如果模型对每个符号都 - 模型检查不是一种有效的算法,因为它必须在给出答案之前考虑每个可能的模型(提醒:如果在$KB$为真的所有模型(真值分配)下,查询结论$R$为真,则$R$ 也为真)。 推理规则允许我们根据现有知识生成新信息,而无需考虑所有可能的模型。 - 推理规则通常使用将顶部部分(前提)与底部部分(结论)分开的水平条表示。 前提是我们有什么知识,结论是根据这个前提可以产生什么知识。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/FjYOb3Qr5ofHdOx7REacdcyqn0c.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/FjYOb3Qr5ofHdOx7REacdcyqn0c.png) - 肯定前件(Modus Ponens) - 如果我们知道一个蕴涵及其前件为真,那么后件也为真。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/HaqObF0xAoX6O8xDX7KctF0jnpf.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HaqObF0xAoX6O8xDX7KctF0jnpf.png) - 合取消除(And Elimination) - 如果 And 命题为真,则其中的任何一个原子命题也为真。 例如,如果我们知道哈利与罗恩和赫敏是朋友,我们就可以得出结论,哈利与赫敏是朋友。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/TI5Mb781YocwpqxRsyRcPS8WnAg.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/TI5Mb781YocwpqxRsyRcPS8WnAg.png) - 双重否定消除(Double Negation Elimination) - 被两次否定的命题为真。 例如,考虑命题“哈利没有通过考试是不正确的”。 这两个否定相互抵消,将命题“哈利通过考试”标记为真。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/NuabbQqZjoBkNixz45AcDZ8Bnrg.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/NuabbQqZjoBkNixz45AcDZ8Bnrg.png) - 蕴含消除(Implication Elimination) - 蕴涵等价于被否定的前件和后件之间的 Or 关系。 例如,命题“如果正在下雨,哈利在室内”等同于命题“(没有下雨)或(哈利在室内)”。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/S31Ub9xcUo9yArxntWscU47pnwh.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/S31Ub9xcUo9yArxntWscU47pnwh.png) | $P$ | $Q$ | $P\to Q$ | $\lnot P\lor Q$ | | --- | --- | -------- | --------------- | @@ -212,25 +212,25 @@ def check_all(knowledge, query, symbols, model):# 如果模型对每个符号都 - 等值命题等价于蕴涵及其逆命题的 And 关系。 例如,“当且仅当 Harry 在室内时才下雨”等同于(“如果正在下雨,Harry 在室内”和“如果 Harry 在室内,则正在下雨”)。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/EtPMbOXWwopIZsxjUJ0cYvHXn5g.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/EtPMbOXWwopIZsxjUJ0cYvHXn5g.png) - 德摩根律(De Morgan’s Law) - 可以将 And 连接词变成 Or 连接词。考虑以下命题:“哈利和罗恩都通过了考试是不正确的。” 由此,可以得出“哈利通过考试不是真的”或者“罗恩不是真的通过考试”的结论。 也就是说,要使前面的 And 命题为真,Or 命题中至少有一个命题必须为真。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/GTagbx1jso6l8gx1rQOcPW3inIb.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/GTagbx1jso6l8gx1rQOcPW3inIb.png) - 同样,可以得出相反的结论。考虑这个命题“哈利或罗恩通过考试是不正确的”。 这可以改写为“哈利没有通过考试”和“罗恩没有通过考试”。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/XOeTbb4BooRbKBx4gHwc3A7EnYf.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/XOeTbb4BooRbKBx4gHwc3A7EnYf.png) - 分配律(Distributive Property) - 具有两个用 And 或 Or 连接词分组的命题可以分解为由 And 和 Or 组成的更小单元。 - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/KBxzbZhUCoX7FBx5ZVFczfPvnoc.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/KBxzbZhUCoX7FBx5ZVFczfPvnoc.png) - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/CvPybic63o7jSlxvuzpcFxjQnse.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/CvPybic63o7jSlxvuzpcFxjQnse.png) ## 知识和搜索问题 @@ -247,16 +247,16 @@ def check_all(knowledge, query, symbols, model):# 如果模型对每个符号都 - 归结是一个强大的推理规则,它规定如果 Or 命题中的两个原子命题之一为假,则另一个必须为真。 例如,给定命题“Ron 在礼堂”或“Hermione 在图书馆”,除了命题“Ron 不在礼堂”之外,我们还可以得出“Hermione 在图书馆”的结论。 更正式地说,我们可以通过以下方式定义归结: - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/PBF7bNpPcoTh1bxP4rqcshA5nIg.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/PBF7bNpPcoTh1bxP4rqcshA5nIg.png) - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/LTKXbs7VPoZxlqxfXfkczFh0nBh.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/LTKXbs7VPoZxlqxfXfkczFh0nBh.png) - 归结依赖于互补文字,两个相同的原子命题,其中一个被否定而另一个不被否定,例如$P$和$¬P$。 - 归结可以进一步推广。 假设除了“Rom 在礼堂”或“Hermione 在图书馆”的命题外,我们还知道“Rom 不在礼堂”或“Harry 在睡觉”。 我们可以从中推断出“Hermione 在图书馆”或“Harry 在睡觉”。 正式地说: - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/MebubVSxRonfZ2xnYj9c5TYCnIg.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/MebubVSxRonfZ2xnYj9c5TYCnIg.png) - ![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/UZn3b4V8mo1OXxxKDQ0cAjwYnyf.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/UZn3b4V8mo1OXxxKDQ0cAjwYnyf.png) - 互补文字使我们能够通过解析推理生成新句子。 因此,推理算法定位互补文字以生成新知识。 - 从句(Clause)是多个原子命题的析取式(命题符号或命题符号的否定,例如$P$, $¬P$)。 析取式由Or逻辑连接词 ($P ∨ Q ∨ R$) 相连的命题组成。 另一方面,连接词由And逻辑连接词 ($P ∧ Q ∧ R$) 相连的命题组成。 从句允许我们将任何逻辑语句转换为合取范式 (CNF),它是从句的合取,例如:$(A ∨ B ∨ C) ∧ (D ∨ ¬E) ∧ (F ∨ G)$。 diff --git a/4.人工智能/4.3.3.1程序示例.md b/4.人工智能/4.3.3.1程序示例.md index 8e5e85f..c3b1111 100644 --- a/4.人工智能/4.3.3.1程序示例.md +++ b/4.人工智能/4.3.3.1程序示例.md @@ -5,6 +5,11 @@ 完成习题 ::: + +::: tip 📥 +本节附件下载 +::: + 本节代码不做额外梳理,[不确定性问题](./4.3.3%E4%B8%8D%E7%A1%AE%E5%AE%9A%E6%80%A7%E9%97%AE%E9%A2%98.md) 中已有解释。 ## Quiz @@ -30,7 +35,7 @@ 9. 1 3. 回答关于贝叶斯网络的问题,问题如下: - ![](static/PUesbhgsFoiucAxWBKYcUUU3nMd.png) + ![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/PUesbhgsFoiucAxWBKYcUUU3nMd.png) 以下哪句话是真的? diff --git a/4.人工智能/4.3.3.2项目:遗传.md b/4.人工智能/4.3.3.2项目:遗传.md index 352424e..86fb146 100644 --- a/4.人工智能/4.3.3.2项目:遗传.md +++ b/4.人工智能/4.3.3.2项目:遗传.md @@ -5,13 +5,18 @@ 如果你卡住了,请记得回来阅读文档,或请求身边人的帮助。 ::: + +::: tip 📥 +本节附件下载 +::: + ## 背景 - GJB2 基因的突变版本是导致新生儿听力障碍的主要原因之一。每个人都携带两个版本的基因,因此每个人都有可能拥有 0、1 或 2 个听力障碍版本的 GJB2 基因。不过,除非一个人接受基因测试,否则要知道一个人拥有多少个变异的 GJB2 基因并不那么容易。这是一些 "隐藏状态":具有我们可以观察到的影响(听力损伤)的信息,但我们不一定直接知道。毕竟,有些人可能有 1 或 2 个突变的 GJB2 基因,但没有表现出听力障碍,而其他人可能没有突变的 GJB2 基因,但仍然表现出听力障碍。 - 每个孩子都会从他们的父母那里继承一个 GJB2 基因。如果父母有两个变异基因,那么他们会将变异基因传给孩子;如果父母没有变异基因,那么他们不会将变异基因传给孩子;如果父母有一个变异基因,那么该基因传给孩子的概率为 0.5。不过,在基因被传递后,它有一定的概率发生额外的突变:从导致听力障碍的基因版本转变为不导致听力障碍的版本,或者反过来。 - 我们可以尝试通过对所有相关变量形成一个贝叶斯网络来模拟所有这些关系,就像下面这个网络一样,它考虑了一个由两个父母和一个孩子组成的家庭。 -![](static/FNyab3RWQo3EA8xu8T7cyLwhnyh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/FNyab3RWQo3EA8xu8T7cyLwhnyh.png) - 家庭中的每个人都有一个 `Gene` 随机变量,代表一个人有多少个特定基因(例如,GJB2 的听力障碍版本):一个 0、1 或 2 的值。家族中的每个人也有一个 `Trait` 随机变量,它是 `yes` 或 `no`,取决于该人是否表达基于该基因的性状(例如,听力障碍)。从每个人的 `Gene` 变量到他们的 `Trait` 变量之间有一个箭头,以编码一个人的基因影响他们具有特定性状的概率的想法。同时,也有一个箭头从母亲和父亲的 `Gene` 随机变量到他们孩子的 `Gene` 随机变量:孩子的基因取决于他们父母的基因。 - 你在这个项目中的任务是使用这个模型对人群进行推断。给出人们的信息,他们的父母是谁,以及他们是否具有由特定基因引起的特定可观察特征(如听力损失),你的人工智能将推断出每个人的基因的概率分布,以及任何一个人是否会表现出有关特征的概率分布。 diff --git a/4.人工智能/4.3.3不确定性问题.md b/4.人工智能/4.3.3不确定性问题.md index d3362bc..f6ed14a 100644 --- a/4.人工智能/4.3.3不确定性问题.md +++ b/4.人工智能/4.3.3不确定性问题.md @@ -24,11 +24,11 @@ $ - 用标准骰子掷出数字 R 的概率可以表示为 $P(R)$ 。在我们的例子中,$P(R)=1/6$ ,因为有六个可能的世界(从 1 到 6 的任何数字),并且每个世界有相同的可能性发生。现在,考虑掷两个骰子的事件。现在,有 36 个可能的事件,同样有相同的可能性发生。 -![](static/GqlRbfW7Yom5a9xKCBHckMBuniF.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/GqlRbfW7Yom5a9xKCBHckMBuniF.png) - 然而,如果我们试图预测两个骰子的总和,会发生什么?在这种情况下,我们只有 11 个可能的值(总和必须在 2 到 12 之间),而且它们的出现频率并不相同。 -![](static/Y8EbbcnUsoHHlFxHCrGcIUDNn0f.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Y8EbbcnUsoHHlFxHCrGcIUDNn0f.png) - 为了得到事件发生的概率,我们将事件发生的世界数量除以可能发生的世界总数。例如,当掷两个骰子时,有 36 个可能的世界。只有在其中一个世界中,当两个骰子都得到 6 时,我们才能得到 12 的总和。因此,$P(12)=\frac{1}{36}$,或者,换句话说,掷两个骰子并得到两个和为 12 的数字的概率是$\frac{1}{36}$。$P(7)$是多少?我们数了数,发现和 7 出现在 6 个世界中。因此,$P(7)=\frac{6}{36}=\frac{1}{6}$。 @@ -49,11 +49,11 @@ $P(a\land b)=P(a)P(b|a)$ - 例如,考虑$P(总和为12|在一个骰子上掷出6)$,或者掷两个骰子假设我们已经掷了一个骰子并获得了六,得到十二的概率。为了计算这一点,我们首先将我们的世界限制在第一个骰子的值为六的世界: -![](static/MkZ6bIPFroAm3lxzLydcsn5QnNg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/MkZ6bIPFroAm3lxzLydcsn5QnNg.png) - 现在我们问,在我们将问题限制在(除以$P(6)$,或第一个骰子产生 6 的概率)的世界中,事件 a(和为 12)发生了多少次? -![](static/XZfhbR6sBorTI9x7hVVchGLUn3b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/XZfhbR6sBorTI9x7hVVchGLUn3b.png) ## 随机变量(Random Variables) @@ -135,7 +135,7 @@ $P(Flight=取消)=0.1$ - 每个节点 X 具有概率分布$P(X|Parents(X))$。 - 让我们考虑一个贝叶斯网络的例子,该网络包含影响我们是否按时赴约的随机变量。 -![](static/GKc6be6ueopUYZxxQg4cS4AVnmb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/GKc6be6ueopUYZxxQg4cS4AVnmb.png) - 让我们从上到下描述这个贝叶斯网络: @@ -279,21 +279,21 @@ for node, prediction in zip(model.states, predictions): - 如果我们从对 Rain 变量进行采样开始,则生成的值 none 的概率为 0.7,生成的值 light 的概率为 0.2,而生成的值 heavy 的概率则为 0.1。假设我们的采样值为 none。当我们得到 Maintenance 变量时,我们也会对其进行采样,但只能从 Rain 等于 none 的概率分布中进行采样,因为这是一个已经采样的结果。我们将通过所有节点继续这样做。现在我们有一个样本,多次重复这个过程会生成一个分布。现在,如果我们想回答一个问题,比如什么是$P(Train=on\ time)$,我们可以计算变量 Train 具有准时值的样本数量,并将结果除以样本总数。通过这种方式,我们刚刚生成了$P(Train=on\ {time})$的近似概率。 -![](static/CreObGAg4oXB0oxe2hMcQbYZnAc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/CreObGAg4oXB0oxe2hMcQbYZnAc.png) -![](static/Vr96bdSafoV4kBxJ3x2cAU0TnOg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Vr96bdSafoV4kBxJ3x2cAU0TnOg.png) - 我们也可以回答涉及条件概率的问题,例如$P(rain=light|train=on\ {time})$。在这种情况下,我们忽略 Train 值为 delay 的所有样本,然后照常进行。我们计算在$Train=\text{on time}$的样本中有多少样本具有变量$Rain=light$,然后除以$Train=\text{on time}$的样本总数。 -![](static/KsELbuMTCoKZkGxU9U5czQpanKg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/KsELbuMTCoKZkGxU9U5czQpanKg.png) -![](static/MrP0b2FbXofDsOxgnmncufUynAB.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/MrP0b2FbXofDsOxgnmncufUynAB.png) 去除$T= on time$的样本 -![](static/Ilj3bPKuwo0l6Dx13rZcVXfenOb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Ilj3bPKuwo0l6Dx13rZcVXfenOb.png) -![](static/AptYbb5MZoylvex7LvPcSqivnef.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/AptYbb5MZoylvex7LvPcSqivnef.png) 选择$R=light$的样本 @@ -357,11 +357,11 @@ print(Counter(data)) - 马尔科夫链是一个随机变量的序列,每个变量的分布都遵循马尔科夫假设。也就是说,链中的每个事件的发生都是基于之前事件的概率。 - 为了构建马尔可夫链,我们需要一个过渡模型,该模型将根据当前事件的可能值来指定下一个事件的概率分布。 -![](static/VBGxbrNgAovuKXxnTKYcm7UinFd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/VBGxbrNgAovuKXxnTKYcm7UinFd.png) - 在这个例子中,基于今天是晴天,明天是晴天的概率是 0.8。这是合理的,因为晴天之后更可能是晴天。然而,如果今天是雨天,明天下雨的概率是 0.7,因为雨天更有可能相继出现。使用这个过渡模型,可以对马尔可夫链进行采样。从一天是雨天或晴天开始,然后根据今天的天气,对第二天的晴天或雨天的概率进行采样。然后,根据明天的情况对后天的概率进行采样,以此类推,形成马尔科夫链: -![](static/XBghbKBaVoz0C4xa85rch804ngd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/XBghbKBaVoz0C4xa85rch804ngd.png) - 给定这个马尔可夫链,我们现在可以回答诸如“连续四个雨天的概率是多少?”这样的问题。下面是一个如何在代码中实现马尔可夫链的例子: @@ -394,7 +394,7 @@ print(model.sample(50)) - 在衡量网站的用户参与度时,隐藏的状态是用户的参与程度,而观察是网站或应用程序的分析。 - 举个例子。我们的人工智能想要推断天气(隐藏状态),但它只能接触到一个室内摄像头,记录有多少人带了雨伞。这里是我们的传感器模型(sensor model),表示了这些概率: -![](static/E0TtbfgiCoV2dtxbbPHcjPgXnQe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/E0TtbfgiCoV2dtxbbPHcjPgXnQe.png) - 在这个模型中,如果是晴天,人们很可能不会带伞到大楼。如果是雨天,那么人们就很有可能带伞到大楼来。通过对人们是否带伞的观察,我们可以合理地预测外面的天气情况。 @@ -403,7 +403,7 @@ print(model.sample(50)) - 假设证据变量只取决于相应的状态。例如,对于我们的模型,我们假设人们是否带雨伞去办公室只取决于天气。这不一定反映了完整的事实,因为,比如说,比较自觉的、不喜欢下雨的人可能即使在阳光明媚的时候也会到处带伞,如果我们知道每个人的个性,会给模型增加更多的数据。然而,传感器马尔科夫假设忽略了这些数据,假设只有隐藏状态会影响观察。 - 隐马尔科夫模型可以用一个有两层的马尔科夫链来表示。上层,变量$X$,代表隐藏状态。底层,变量$E$,代表证据,即我们所拥有的观察。 -![](static/FnyrbYSEWohimaxIYPSchotGnse.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/FnyrbYSEWohimaxIYPSchotGnse.png) - 基于隐马尔科夫模型,可以实现多种任务: diff --git a/4.人工智能/4.3人工智能导论及机器学习入门.md b/4.人工智能/4.3人工智能导论及机器学习入门.md index c02a88b..09e1ce2 100644 --- a/4.人工智能/4.3人工智能导论及机器学习入门.md +++ b/4.人工智能/4.3人工智能导论及机器学习入门.md @@ -6,7 +6,7 @@ 人工智能是一个宏大的愿景,目标是让机器像我们人类一样思考和行动,既包括增强我们人类脑力也包括增强我们体力的研究领域。而学习只是实现人工智能的手段之一,并且,只是增强我们人类脑力的方法之一。所以,人工智能包含机器学习。机器学习又包含了深度学习,他们三者之间的关系见下图。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/AMU7bSgh4o8tEIxk82icvtbDn0c.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/AMU7bSgh4o8tEIxk82icvtbDn0c.png) # 如何学习本节内容 diff --git a/4.人工智能/4.4FAQ:常见问题.md b/4.人工智能/4.4FAQ:常见问题.md index 6eee368..e0b774b 100644 --- a/4.人工智能/4.4FAQ:常见问题.md +++ b/4.人工智能/4.4FAQ:常见问题.md @@ -42,11 +42,11 @@ 机器学习包括深度学习 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnBP4QHAJnXrNfOiK8hp6LIc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnBP4QHAJnXrNfOiK8hp6LIc.png) [同时向你推荐这个 Data Analytics,Data Analysis,数据挖掘,数据科学,机器学习,大数据的区别是什么?](https://www.quora.com/What-is-the-difference-between-Data-Analytics-Data-Analysis-Data-Mining-Data-Science-Machine-Learning-and-Big-Data-1) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnxPsUwwhcCC0zBerZ2s88ld.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnxPsUwwhcCC0zBerZ2s88ld.png) ## 我没有任何相关概念 diff --git a/4.人工智能/4.6.1工欲善其事,必先利其器.md b/4.人工智能/4.6.1工欲善其事,必先利其器.md index 3e30ec4..6f86e58 100644 --- a/4.人工智能/4.6.1工欲善其事,必先利其器.md +++ b/4.人工智能/4.6.1工欲善其事,必先利其器.md @@ -6,7 +6,7 @@ ## 深度学习框架 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnWLzi1LIWLCncrXcTcjAKne.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnWLzi1LIWLCncrXcTcjAKne.png) ### 1、深度学习框架是什么 @@ -113,9 +113,9 @@ PyTorch 完全基于 Python。 官网如下 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnaF9UWNcr5pt99Zu5Wr0PTg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnaF9UWNcr5pt99Zu5Wr0PTg.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnqHCP5KiSF4Vmc6M1cjEXKg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnqHCP5KiSF4Vmc6M1cjEXKg.png) 选择 Conda 或者 Pip 安装皆可 @@ -140,7 +140,7 @@ conda config --set show_channel_urls yes ### TensorFlow -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn5u9u9M6DPRh83ufoSwfuof.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn5u9u9M6DPRh83ufoSwfuof.png) #### 教程 @@ -161,17 +161,17 @@ cuda 版本需要额外配置,我们将这个任务留给聪明的你!!! 同时按下键盘的 win+r 键,打开 cmd,键入 `dxdiag` 然后回车 系统、显卡、声卡以及其他输入设备的信息都在这里了。(给出我的界面) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXHceTuUl0XzCNJv9RqHN9c.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXHceTuUl0XzCNJv9RqHN9c.png) cuda 版本查看 桌面空白位置摁下右键 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbxhAei6H4OWjaN0Hp0YICg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbxhAei6H4OWjaN0Hp0YICg.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnp9i1SagOxXd17W9BiP3RNe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnp9i1SagOxXd17W9BiP3RNe.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcngaZNZB3XLSJia0rk0DgGbe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcngaZNZB3XLSJia0rk0DgGbe.png) #### linux @@ -187,11 +187,11 @@ nvidia-smi 通常大家所指的 cuda 是位于/usr/local 下的 cuda -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcntFGELTpdcVoigy5ldCorAb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcntFGELTpdcVoigy5ldCorAb.png) 当然可以看到 cuda 是 cuda-11.6 所指向的软链接(类似 windows 的快捷方式),所以我们如果要切换 cuda 版本只需要改变软链接的指向即可。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnTB39MtPKBr9CgufCpSIYuf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnTB39MtPKBr9CgufCpSIYuf.png) cuda driver version 是 cuda 的驱动版本。 @@ -199,9 +199,9 @@ cuda runtimer version 是我们实际很多时候我们实际调用的版本。 二者的版本是可以不一致的。如下图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnATNfI2spkNsXbqtIuwwY6c.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnATNfI2spkNsXbqtIuwwY6c.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnz03UebyZ42JNOXpdUfjMBg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnz03UebyZ42JNOXpdUfjMBg.png) 一般来讲 cuda driver 是向下兼容的。所以 cuda driver version >= cuda runtime version 就不会太大问题。 @@ -211,13 +211,13 @@ cuda runtimer version 是我们实际很多时候我们实际调用的版本。 以 pytorch 为例,可以看到在安装过程中我们选择的 cuda 版本是 10.2 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcns8yMCuacj0A2BbMU6ZB08b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcns8yMCuacj0A2BbMU6ZB08b.png) 那么这个 cudatookit10.2 和 nvidia-smi 的 11.7 以及 nvcc -V 的 11.4 三者有什么区别呢? pytorch 实际只需要 cuda 的链接文件,即.so 文件,这些链接文件就都包含的 cudatookkit 里面。并不需要 cuda 的头文件等其他东西,如下所示 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXWjMnlXjMg2lA1ApjoUhnh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXWjMnlXjMg2lA1ApjoUhnh.png) 所以我们如果想让使用 pytorch-cuda 版本,我们实际上不需要/usr/local/cuda。只需要在安装驱动的前提下,在 python 里面安装 cudatookit 即可。 @@ -227,8 +227,8 @@ pytorch 实际只需要 cuda 的链接文件,即.so 文件,这些链接文 Cudnn 是一些链接文件,你可以理解成是为了给 cuda 计算加速的东西。同样的我们也可以用以下命令查看/usr/local/cuda 的 cudnn: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPD5DbA3NPimtV0kVoDJGmh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPD5DbA3NPimtV0kVoDJGmh.png) 以及 pytorch 的 cuda 环境的 cudnn -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnZQ2Mc52Us6ku543l7WPEZd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnZQ2Mc52Us6ku543l7WPEZd.png) diff --git a/4.人工智能/4.6.2你可能会需要的术语介绍.md b/4.人工智能/4.6.2你可能会需要的术语介绍.md index 9e6ee71..5e4da52 100644 --- a/4.人工智能/4.6.2你可能会需要的术语介绍.md +++ b/4.人工智能/4.6.2你可能会需要的术语介绍.md @@ -40,8 +40,8 @@ 这是我用照片重建的独角兽稀疏点云,红色的不用管,是照相机视角(图不够多,巨糊) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnWx8hYfT6kFug4A1iA3uftg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnWx8hYfT6kFug4A1iA3uftg.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbWfXyklyZwpjwy8uz2XnLh.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbWfXyklyZwpjwy8uz2XnLh.jpg) 先这些,后续想起来了可能会补充。 diff --git a/4.人工智能/4.6.3深度学习快速入门.md b/4.人工智能/4.6.3深度学习快速入门.md index 4266aae..2869007 100644 --- a/4.人工智能/4.6.3深度学习快速入门.md +++ b/4.人工智能/4.6.3深度学习快速入门.md @@ -65,7 +65,7 @@ Crash course 的课程,可以基本了解pytorch的内容,但是当然有很 ### 损失 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnRbeabbEppeHlM39UwqJSJc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnRbeabbEppeHlM39UwqJSJc.png) 首先我们需要有一个损失函数$F(x),x=true-predict$ @@ -74,13 +74,13 @@ Crash course 的课程,可以基本了解pytorch的内容,但是当然有很 ### 梯度下降 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnMuwaG2okodvywzbxX138Re.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnMuwaG2okodvywzbxX138Re.png) 假设损失函数为$y=x^2$,梯度下降的目的是快速找到导数为 0 的位置(附近) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn83M9AW6xDm5pBIqmZEC6Kf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn83M9AW6xDm5pBIqmZEC6Kf.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcneVFa131Lb9xDMCsIMI9fcc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcneVFa131Lb9xDMCsIMI9fcc.png) 以此类推,我们最后的 w 在 0 的附近反复横跳,最后最接近目标函数的权重 w 就是 0。 @@ -94,7 +94,7 @@ Crash course 的课程,可以基本了解pytorch的内容,但是当然有很 # 关于 MINIST -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnxdyWA6Sj82kNxMlQ1b9hDg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnxdyWA6Sj82kNxMlQ1b9hDg.png) 这个数据集可以说是最最经典的数据集了,里面有 0-9 这 10 个数字的手写图片和标注,正确率最高已经到了 99.7%. diff --git a/4.人工智能/4.6.4Pytorch安装.md b/4.人工智能/4.6.4Pytorch安装.md index c874237..b4c2e36 100644 --- a/4.人工智能/4.6.4Pytorch安装.md +++ b/4.人工智能/4.6.4Pytorch安装.md @@ -4,7 +4,7 @@ 进入官网后选择 Install,在下面表格中按照你的配置进行选择: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnxltvaT52E6mu6JIYaKvM1X.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnxltvaT52E6mu6JIYaKvM1X.png) 其中 Package 部分选择安装的途径,这里主要介绍 Pip 和 Conda 两种途径。 @@ -56,8 +56,8 @@ conda config --show channels 同时按下 Win+R,运行 cmd,输入 `dxdiag` 并回车。系统、显卡、声卡以及其他设备信息都会显示。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnepK0nkI8pWAJaO89zQoRgh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnepK0nkI8pWAJaO89zQoRgh.png) cuda 版本查看 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnRoZEZsUdVduFRR9DjegeNh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnRoZEZsUdVduFRR9DjegeNh.png) diff --git a/4.人工智能/4.6.5.1CV领域任务(研究目标).md b/4.人工智能/4.6.5.1CV领域任务(研究目标).md index 5b313cb..72368c6 100644 --- a/4.人工智能/4.6.5.1CV领域任务(研究目标).md +++ b/4.人工智能/4.6.5.1CV领域任务(研究目标).md @@ -2,7 +2,7 @@ ### CV 领域的大任务 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnTUlm8EI0byGJJQ78IqGWGx.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnTUlm8EI0byGJJQ78IqGWGx.png) #### (a)Image classification 图像分类 @@ -18,7 +18,7 @@ - 这张图我们需要标注两个类别 `head(头)、helmet(头盔)` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnoyxKL4bOeYOOjrh6it0BHd.gif) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnoyxKL4bOeYOOjrh6it0BHd.gif) #### (c)Semantic segmentation 语义分割 @@ -32,13 +32,13 @@ #### (e)Key Point 人体关键点检测 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnT2udZtMmV2kLQsXoPuElNd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnT2udZtMmV2kLQsXoPuElNd.png) 通过人体关键节点的组合和追踪来识别人的运动和行为,对于描述人体姿态,预测人体行为至关重要。 #### (f)Scene Text Recognition(STR)场景文字识别 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnB8ZB4bSaHhIhPFHHrxkakb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnB8ZB4bSaHhIhPFHHrxkakb.png) 很多照片中都有一些文字信息,这对理解图像有重要的作用。 @@ -48,7 +48,7 @@ 利用两张图片或者其他信息生成一张新的图片 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnOdmG0c1kkivVdTn5RUMCIc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnOdmG0c1kkivVdTn5RUMCIc.png) 利用左边两张小图生成右边的图片 @@ -56,6 +56,6 @@ 将输入图片分辨率增加 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnDJ5aNv49ySjw96uCCF0dW8.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnDJ5aNv49ySjw96uCCF0dW8.png) 当然还有一些新兴领域我们没有写入~ diff --git a/4.人工智能/4.6.5.2.1数据读取.md b/4.人工智能/4.6.5.2.1数据读取.md index 11673aa..9e0b5c4 100644 --- a/4.人工智能/4.6.5.2.1数据读取.md +++ b/4.人工智能/4.6.5.2.1数据读取.md @@ -117,7 +117,7 @@ Torchvision 库中的 torchvision.datasets 包中提供了丰富的图像数据 下表中列出了 torchvision.datasets 包所有支持的数据集。各个数据集的说明与接口,详见链接 [https://pytorch.org/vision/stable/datasets.html](https://pytorch.org/vision/stable/datasets.html)。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnxvqC7FKt1qeCZoI2kVf9yg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnxvqC7FKt1qeCZoI2kVf9yg.png) 注意,torchvision.datasets 这个包本身并不包含数据集的文件本身,它的工作方式是先从网络上把数据集下载到用户指定目录,然后再用它的加载器把数据集加载到内存中。最后,把这个加载后的数据集作为对象返回给用户。 @@ -129,11 +129,11 @@ MNIST 数据集是一个著名的手写数字数据集,因为上手简单, MNIST 数据集是 NIST 数据集的一个子集,MNIST 数据集你可以通过[这里](http://yann.lecun.com/exdb/mnist/)下载。它包含了四个部分。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnCP2Sp932nPy8Il5Z5d4Aih.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnCP2Sp932nPy8Il5Z5d4Aih.png) MNIST 数据集是 ubyte 格式存储,我们先将“训练集图片”解析成图片格式,来直观地看一看数据集具体是什么样子的。具体怎么解析,我们在后面数据预览再展开。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnjsG31hhjqdxOnoCGFGR6sh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnjsG31hhjqdxOnoCGFGR6sh.png) 接下来,我们看一下如何使用 Torchvision 来读取 MNIST 数据集。 diff --git a/4.人工智能/4.6.5.3.1AlexNet.md b/4.人工智能/4.6.5.3.1AlexNet.md index c52e06a..46968ca 100644 --- a/4.人工智能/4.6.5.3.1AlexNet.md +++ b/4.人工智能/4.6.5.3.1AlexNet.md @@ -12,21 +12,21 @@ AlexNet 有 6 千万个参数和 650,000 个神经元。 ### 网络框架图 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcng0jB2dmDD18EwU8nAIFPIc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcng0jB2dmDD18EwU8nAIFPIc.png) ### 使用 ReLU 激活函数代替 tanh 在当时,标准的神经元激活函数是 tanh()函数,这种饱和的非线性函数在梯度下降的时候要比非饱和的非线性函数慢得多,因此,在 AlexNet 中使用 ReLU 函数作为激活函数。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnFlENdpKXUR7l4MhUXFKzfg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnFlENdpKXUR7l4MhUXFKzfg.png) ### 采用 Dropout 防止过拟合 dropout 方法会遍历网络的每一层,并设置消除神经网络中节点的概率。假设网络中的每一层,每个节点都以抛硬币的方式设置概率,每个节点得以保留和消除的概率都是 0.5,设置完节点概率,我们会消除一些节点,然后删除掉从该节点进出的连线,最后得到一个节点更少,规模更小的网络(如下图所示),然后再用反向传播方法进行训练。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnNXzBUtJWXbUtEZzxugBr6W.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnNXzBUtJWXbUtEZzxugBr6W.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn7kG0PcXNumIdTFuEdaHl0e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn7kG0PcXNumIdTFuEdaHl0e.png) ### diff --git a/4.人工智能/4.6.5.3.2FCN.md b/4.人工智能/4.6.5.3.2FCN.md index ba2c1b5..f3eec40 100644 --- a/4.人工智能/4.6.5.3.2FCN.md +++ b/4.人工智能/4.6.5.3.2FCN.md @@ -10,7 +10,7 @@ ### 框架图 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcndYCXYj7rNfhXoSaEPZxpyc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcndYCXYj7rNfhXoSaEPZxpyc.png) ### 同 CNN 的对比 @@ -26,7 +26,7 @@ FCN 对图像进行像素级的分类,从而解决了语义级别的图像分 这里图像的反卷积使用了这一种反卷积手段使得图像可以变大,FCN 作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现 end to end。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcngqgiogbvy4OYpIzIo6eSXd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcngqgiogbvy4OYpIzIo6eSXd.png) ### 视频 diff --git a/4.人工智能/4.6.5.3.3ResNet.md b/4.人工智能/4.6.5.3.3ResNet.md index 54cee95..6dc54ae 100644 --- a/4.人工智能/4.6.5.3.3ResNet.md +++ b/4.人工智能/4.6.5.3.3ResNet.md @@ -21,11 +21,11 @@ 如图所示,随着层数越来越深,预测的效果反而越来越差(error 越大) ::: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnBDfBnOPmS0btwNseKvsN6f.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnBDfBnOPmS0btwNseKvsN6f.png) ## 网络模型 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnn8a16DYyEPEVuHxvvw7eAf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnn8a16DYyEPEVuHxvvw7eAf.png) ::: warning 😺 我们可以看到,ResNet 的网络依旧非常深,这是因为研究团队不仅发现了退化现象,还采用出一个可以将网络继续加深的 trick:shortcut,亦即我们所说的 residual。 @@ -35,7 +35,7 @@ ::: ### residual 结构 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhgVaLChu3O2omGJKzFU7uB.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhgVaLChu3O2omGJKzFU7uB.png) ## 网络代码 diff --git a/4.人工智能/4.6.5.3.4UNet.md b/4.人工智能/4.6.5.3.4UNet.md index 837161e..f56f5eb 100644 --- a/4.人工智能/4.6.5.3.4UNet.md +++ b/4.人工智能/4.6.5.3.4UNet.md @@ -8,7 +8,7 @@ ## 网络框架 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnoo4bKuLo5qQdQmRP2H75Sb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnoo4bKuLo5qQdQmRP2H75Sb.png) ::: warning 😺 diff --git a/4.人工智能/4.6.5.3.7还要学更多?.md b/4.人工智能/4.6.5.3.7还要学更多?.md index ee633e0..12b9354 100644 --- a/4.人工智能/4.6.5.3.7还要学更多?.md +++ b/4.人工智能/4.6.5.3.7还要学更多?.md @@ -6,11 +6,11 @@ - 你可以先行尝试一下怎么把在 MNIST 上训练的网络真正投入应用,比如识别一张你自己用黑笔写的数字~ -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn2juA3J3ycnHoN5SmYAfEfd.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn2juA3J3ycnHoN5SmYAfEfd.jpg) - 比如你可以尝试训练一个网络来实现人体五官分割(笔者之前就玩过这个)数据集采用 [helen 数据集](https://pages.cs.wisc.edu/~lizhang/projects/face-parsing/),关于数据集的架构你可以搜一搜,自己设计一个 Dataloader 和 YourModle 来实现前言中的五官分割效果(真的很有乐子 hhh) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnJJlzanhvtE55Q7d0IR1vph.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnJJlzanhvtE55Q7d0IR1vph.png) - 当然你也可以尝试一些自己感兴趣的小任务来锻炼工程能力~ diff --git a/4.人工智能/4.6.5.4.1NeRF.md b/4.人工智能/4.6.5.4.1NeRF.md index 37291b8..15c09fa 100644 --- a/4.人工智能/4.6.5.4.1NeRF.md +++ b/4.人工智能/4.6.5.4.1NeRF.md @@ -6,11 +6,11 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位 在生成建模前,我们需要对被建模物体进行密集的采样,如下图是一个示例的训练集,它含有 100 张图片以及保存了每一张图片相机参数(表示拍摄位置,拍摄角度,焦距的矩阵)的 json 文件。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn6jg09V944MU1sBsstmdaib.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn6jg09V944MU1sBsstmdaib.png) 你可以看到,这 100 张图片是对一个乐高推土机的多角度拍摄结果。我们需要的是一个可以获取这个推土机在任意角度下拍摄的图片的模型。如图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnLEEyuUWOwiJOePhmmsAakd.gif) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnLEEyuUWOwiJOePhmmsAakd.gif) 现在来看 NeRF 网络: @@ -40,7 +40,7 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位 - 对应的小方块的 RGB 信息 - 不透明度 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcni4q9Cp8G7H9HjKMrfImcZe.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcni4q9Cp8G7H9HjKMrfImcZe.jpg) 在这里,作者选择了最简单的 MLP,因此,这是一个输入为 5 维,输出为 4 维向量($R,G,B,\sigma$)的简单网络,值得注意的是,不透明度与观察角度无关,这里在网络中进行了特殊处理,让这个值与后两维无关。 @@ -58,15 +58,15 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位 这段要仔细看和推导,第一遍不容易直接懂。顺带一提,我们的小方块学名叫体素为了显得我们更专业一点以后就叫它体素罢 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnnwHy3Hlhbu2bOsi6r2BYJe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnnwHy3Hlhbu2bOsi6r2BYJe.png) 上面所说的公式具体如下:t 是我们的$\sigma$,$t_f,t_n$分别是离发射点最远的体素和最近的体素。这个公式求得是像素的颜色。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnDWBUOJucS2YdT7MlKBAq8g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnDWBUOJucS2YdT7MlKBAq8g.png) 思路总体如上,这里放一张找来的渲染过程示意图(不知道为什么有点包浆) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnfH30VDvbSdzahs5lRuirUd.gif) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnfH30VDvbSdzahs5lRuirUd.gif) # 算法细节部分 @@ -86,10 +86,10 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位 粗网络就是上述采样方法用的普通网络,而粗网络输出的不透明度值会被作为一个概率分布函数,精细网络根据这个概率分布在光线上进行采样,不透明度越大的点,它的邻域被采样的概率越大,也就实现了我们要求的在实体上多采样,空气中少采样。最后精细网络输出作为结果,因此粗网络可以只求不透明度,无视颜色信息。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnwl72wntQgYMFvRPTWY5fPf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnwl72wntQgYMFvRPTWY5fPf.png) ## 位置编码 学过 cv 的大家想必对这个东西耳熟能详了吧~,这里的位置编码是对输入的两个位置和一个方向进行的(体素位置,相机位置和方向),使用的是类似 transformer 的三角函数类编码如下。位置编码存在的意义是放大原本的 5 维输入对网络的影响程度,把原本的 5D 输入变为 90 维向量;并且加入了与其他体素的相对位置信息。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnliAj5mb0Afz0TOMwrwytmh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnliAj5mb0Afz0TOMwrwytmh.png) diff --git a/4.人工智能/4.6.5.4.2NeRF的改进方向.md b/4.人工智能/4.6.5.4.2NeRF的改进方向.md index 2d74469..e5c93fb 100644 --- a/4.人工智能/4.6.5.4.2NeRF的改进方向.md +++ b/4.人工智能/4.6.5.4.2NeRF的改进方向.md @@ -12,19 +12,19 @@ Pixel-nerf 对输入图像使用卷积进行特征提取再执行 nerf,若有多个输入,对每个视角都执行 CNN,在计算光线时,取每一个已有视角下该坐标的特征,经过 mlp 后算平均。可以在少量视角下重建视图,需要进行预训练才能使用,有一定自动补全能力(有限) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnEiUODOd4FOBxYIZmmihyef.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnEiUODOd4FOBxYIZmmihyef.png) ### 2.IBRnet IBRnet 是 pixel-nerf 的改进版,取消了 CNN,并且在 mlp 后接入了 transformer 结构处理体密度(不透明度),对这条光线上所有的采样点进行一个 transformer。同时,在获取某个体素的颜色和密度时,作者用了本视角相邻的两个视角,获取对应体素在这两张图片中的像素,以图片像素颜色,视角,图片特征作为 mlp 的输入。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnwH75jIO9NiVwQaBqDrbe8e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnwH75jIO9NiVwQaBqDrbe8e.png) ### 3.MVSnerf MVSnerf 它用 MVS 的方法构建代价体然后在后面接了一个 nerf,MVS 是使用多视角立体匹配构建一个代价体,用 3D 卷积网络进行优化,这里对代价体进行 nerf 采样,可以得到可泛化网络。它需要 15min 的微调才能在新数据上使用。多视角立体匹配是一种传统算法,通过光线,几何等信息计算图像中小块的相似度,得出两个相机视角之间的位置关系。这个算法也被广泛使用在得到我们自己采样的数据的相机变换矩阵上(我就是这么干的) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbd2YxumunZR9LZG3ANrPrb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbd2YxumunZR9LZG3ANrPrb.png) 此处涉及较多图形学,使用了平面扫描算法,其中有单应性变换这个角度变换算法,推导与讲解如下: @@ -34,7 +34,7 @@ 平面扫描就是把 A 视角中的某一像素点(如图中红色区域)的相邻的几个像素提取出来,用单应性变换转换到 B 视角中,这时候用的深度是假设的深度,遍历所有假设的深度,计算通过每一个假设深度经过单应性变换得到的像素小块和 B 视角中对应位置的差值(loss),取最小的 loss 处的深度作为该像素的深度。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn5JmWUh1Gu283biqHq3Op0r.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn5JmWUh1Gu283biqHq3Op0r.png) 构建代价体: @@ -55,7 +55,7 @@ 展开说说:其实这也是神经网络发展的一个方向,以前的深层网络倾向于把所有东西用网络参数表示,这样推理速度就会慢,这里使用哈希表的快速查找能力存储一些数据信息,instant-ngp 就是把要表达的模型数据特征按照不同的精细度存在哈希表中,使用时通过哈希表调用或插值调用。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXSUge0BqBCecdDJLQr4cRc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXSUge0BqBCecdDJLQr4cRc.png) # 3.可编辑(指比如人体运动等做修改工作的) @@ -63,7 +63,7 @@ Human-nerf 生成可编辑的人体运动视频建模,输入是一段人随便动动的视频。输出的动作可以编辑修改,并且对衣物折叠等有一定优化。使用的模型并非全隐式的,并且对头发和衣物单独使用变换模型。使用了逆线性蒙皮模型提取人物骨骼(可学习的模型),上面那个蓝色的就是姿态矫正模块,这个模块赋予骨骼之间运动关系的权重(因为使用的是插值处理同一运动时不同骨骼的平移旋转矩阵,一块骨骼动会牵动其他骨骼)图中的 Ω 就是权重的集合,它通过 mlp 学习得到。然后得到显式表达的人物骨骼以及传入视频中得到的对应骨骼的 mesh,skeletal motion 就是做游戏人物动作用的编辑器这种,后面残差链接了一个 non-rigid-motion(非刚性动作),这个是专门处理衣物和毛发的,主要通过学习得到,然后粗暴的加起来就能得到模型,再经过传统的 nerf 渲染出图像。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnHRnNXHvwVXrRmM8wnl53p9.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnHRnNXHvwVXrRmM8wnl53p9.png) ### 2.Neural Body @@ -75,7 +75,7 @@ EasyMocap 是通过多视角视频生成骨架以及 SMPL 模型的一个工作,演示视频右下。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnYmy1MnyWSPNEWvFWj9mzCf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnYmy1MnyWSPNEWvFWj9mzCf.png) 这是 EasyMocap 的演示。 @@ -87,7 +87,7 @@ EasyMocap 是通过多视角视频生成骨架以及 SMPL 模型的一个工作 是个预训练模型,训练的模块就是这个 3D 卷积神经网络。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbclBwg3BsubGOrt8vZf0qb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbclBwg3BsubGOrt8vZf0qb.png) ### 3.wild-nerf @@ -101,11 +101,11 @@ EasyMocap 是通过多视角视频生成骨架以及 SMPL 模型的一个工作 在此网络的单个输出上貌似是不监督的,因为没办法进行人为标注。这点我不是很确定,以后如果发现了会来修改的。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnYeaiioqtFzQlztsTwiEpzg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnYeaiioqtFzQlztsTwiEpzg.png) 渲染经过形变的物体时,光线其实是在 t=0 时刻进行渲染的,因为推土机的铲子放下去了,所以光线是弯曲的。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcng7xDooDmmpbCJRyLJBucwe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcng7xDooDmmpbCJRyLJBucwe.png) # 4.用于辅助传统图像处理 @@ -123,23 +123,23 @@ EasyMocap 是通过多视角视频生成骨架以及 SMPL 模型的一个工作 GRAF 把 GAN 与 nerf 结合,增加了两个输入,分别是外观/形状编码 z2D 采样编码 v,z 用来改变渲染出来东西的特征,比如把生成的车变色或者变牌子,suv 变老爷车之类的。v(s,u)用来改变下图 2 中训练时选择光线的标准。这里训练时不是拿 G 生成的整张图扔进 D 网络,而是根据 v 的参数选择一些光线组成的 batch 扔进 D 进行辨别 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnVyFqHIoA2MGGc4JJo9tObh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnVyFqHIoA2MGGc4JJo9tObh.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnvBzqwCn9i8GGBIkMFEs3ne.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnvBzqwCn9i8GGBIkMFEs3ne.png) ### 2.GIRAFFE GIRAFFE 是 GRAF 的改进工作,可以把图片中的物品,背景一个个解耦出来单独进行改变或者移动和旋转,也可以增加新的物品或者减少物品,下图中蓝色是不可训练的模块,橙色可训练。以我的理解好像要设置你要解耦多少个(N)物品再训练,网络根据类似 k 近邻法的方法在特征空间上对物品进行分割解耦,然后分为 N 个渲染 mlp 进行训练,训练前加入外观/形状编码 z。最后还是要扔进 D 训练。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnB04hwHA1o64WBvYSyVTDod.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnB04hwHA1o64WBvYSyVTDod.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnC2bKVHOANjGOePLHk7jfZe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnC2bKVHOANjGOePLHk7jfZe.png) ### 3.OSF OSFObject-Centric Neural Scene Rendering,可以给移动的物体生成合理的阴影和光照效果。加入了新的坐标信息:光源位置,与相机坐标等一起输入。对每个小物件构建一个单独的小 nerf,计算这个小 nerf 的体素时要先经过光源照射处理(训练出来的)然后在每个小物件之间也要计算反射这样的光线影响,最后进行正常的渲染。这篇文章没人写 review,有点冷门,这些都是我自己读完感觉的,不一定对。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnV7YcKIq5y8TkOGEGzrPc5g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnV7YcKIq5y8TkOGEGzrPc5g.png) ### 4.Hyper-nerf-gan @@ -153,7 +153,7 @@ EasyMocap 是通过多视角视频生成骨架以及 SMPL 模型的一个工作 左边是常规卷积网络生成图像,右边是用 INR 生成图像。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnGCCZ8qXD1Hhc531NxfLzLd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnGCCZ8qXD1Hhc531NxfLzLd.png) 这种方法存在两个问题: @@ -165,8 +165,8 @@ EasyMocap 是通过多视角视频生成骨架以及 SMPL 模型的一个工作 FMM 主要是把要学习的矩阵转化为两个低秩矩阵,去先生成他们俩再相乘,减少网络计算量。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn0oHY54dgL2bxmryxjqxC6f.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn0oHY54dgL2bxmryxjqxC6f.png) 现在开始讲 Hyper-nerf-gan 本身,它看上去其实就是 nerf 接在 gan 上。不过有一些变化,比如输入不再包含视角信息,我很怀疑它不能很好表达反光效果。而且抛弃了粗网络细网络的设计,只使用粗网络减少计算量。这里的 generator 完全就是 INR-Gan 的形状,生成权重,然后再经过 nerf 的 mlp 层生成,没啥别的了,就这样吧。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnc9bZ1nqt3Lighlrj9zSrdd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnc9bZ1nqt3Lighlrj9zSrdd.png) diff --git a/4.人工智能/4.6.5.4.3自制数据集的工具COLMAP.md b/4.人工智能/4.6.5.4.3自制数据集的工具COLMAP.md index 0dd2147..029b38a 100644 --- a/4.人工智能/4.6.5.4.3自制数据集的工具COLMAP.md +++ b/4.人工智能/4.6.5.4.3自制数据集的工具COLMAP.md @@ -2,7 +2,7 @@ 如何使用和怎么下载就不讲了,直接搜就有,它可以把多个拍摄同一物体的图片转换为它们对应视角的相机矩阵和拍摄角度,可以实现自制数据集做 nerf。它的流程(SFM 算法)可以概括如下: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXzgaIhmUQ7HQtEn52ksWIf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXzgaIhmUQ7HQtEn52ksWIf.png) 这里主要是记录一下它的原理: 首先是一个经典关键点匹配技术:SIFT @@ -11,53 +11,53 @@ ## DOG 金字塔 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcneERqw4amGHf6f2SX7gcdny.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcneERqw4amGHf6f2SX7gcdny.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnv4dRbGDg9eemcyQFREYs0b.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnv4dRbGDg9eemcyQFREYs0b.png) 下面是原理方法: 首先是高斯金字塔,它是把原图先放大两倍,然后使用高斯滤波(高斯卷积)对图像进行模糊化数次,取出倒数第三层缩小一半继续进行这个过程,也就是说它是由一组一组的小金字塔组成的。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnKJWrCUc5cPOuZg01HqNCsc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnKJWrCUc5cPOuZg01HqNCsc.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnd25i5LQ7WjGJEe2xgU3qce.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnd25i5LQ7WjGJEe2xgU3qce.jpg) 然后是基于高斯金字塔的 DOG 金字塔,也叫差分金字塔,它是把相邻的高斯金字塔层做减法得到的,因为经过高斯模糊,物体的轮廓(或者说不变特征)被模糊化,也就是被改变。通过相减可以得到这些被改变的点。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcncKZlnG7F4oEpcrQYqth8kh.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcncKZlnG7F4oEpcrQYqth8kh.jpg) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnAEQSDhsLdDsNOQVxqcic5d.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnAEQSDhsLdDsNOQVxqcic5d.jpg) ## 空间极值点检测 为了找到变化的最大的几个点来作为特征点,我们需要找到变化的极值点,因此需要进行比较,这里是在整个金字塔中进行对比,我们提取某个点周边 3*3*3 的像素点进行比较,找到最大或最小的局部极值点。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnl48ovxbqSeTljgF3rp16ue.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnl48ovxbqSeTljgF3rp16ue.png) 同时我们也对关键点分配方向,也就是这个点在图片空间中的梯度方向 梯度为: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbQx8TntyX8iETPixOnKjef.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbQx8TntyX8iETPixOnKjef.png) 梯度方向为: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnfw5FrBxPaD4bNFT4GFyXmd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnfw5FrBxPaD4bNFT4GFyXmd.png) 我们计算以关键点为中心的邻域内所有点的梯度方向,然后把这些 360 度范围内的方向分配到 36 个每个 10 度的方向中,并构建方向直方图,这里的示例使用了 8 个方向,几个随你其实: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnyuV5HCumJMhyW7Cb3HSxcg.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnyuV5HCumJMhyW7Cb3HSxcg.jpg) 取其中最大的为主方向,若有一个方向超过主方向的 80%,那么把它作为辅方向。 操作可以优化为下图,先把关键点周围的像素分成 4 块,每块求一次上面的操作,以这个 4 个梯度直方图作为关键点的方向描述。也就是一个 2*2*8(方向数量)的矩阵作为这个点的方向特征。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnEvWRhUKcWKAoYKWbN1kAuc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnEvWRhUKcWKAoYKWbN1kAuc.png) 实验表明,使用 4*4*8=122 的描述更加可靠。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcniVb6FvrZziID1B1JFmgVzx.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcniVb6FvrZziID1B1JFmgVzx.jpg) 特征点的匹配是通过计算两组特征点的 128 维的关键点的欧式距离实现的。欧式距离越小,则相似度越高,当欧式距离小于设定的阈值时,可以判定为匹配成功。 diff --git a/4.人工智能/4.6.5.5行人重识别(ReID).md b/4.人工智能/4.6.5.5行人重识别(ReID).md index 1e252a4..c3f0e87 100644 --- a/4.人工智能/4.6.5.5行人重识别(ReID).md +++ b/4.人工智能/4.6.5.5行人重识别(ReID).md @@ -8,10 +8,10 @@ 该任务目前在学术上是检索出不同摄像头下的相同行人图片,同时数据集中只有人的全身照,如下图所示。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ReID1.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ReID1.png) 但是实际上在实际应用中的时候会和检测结合,简单来说先框出目标后分类,如下图所示。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ReID2.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ReID2.png) 这个方向做的比较的奇怪,该模块只做整体性介绍,同时希望学习该模块的你对经典网络有所了解。 diff --git a/4.人工智能/4.6.6.1NLP领域任务(研究目标).md b/4.人工智能/4.6.6.1NLP领域任务(研究目标).md index 28f933c..e729a12 100644 --- a/4.人工智能/4.6.6.1NLP领域任务(研究目标).md +++ b/4.人工智能/4.6.6.1NLP领域任务(研究目标).md @@ -4,25 +4,25 @@ 分类 (text classification): 给一句话或者一段文本,判断一个标签。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/PxE3b05ApofzZ1x8u49cirdUnye.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/PxE3b05ApofzZ1x8u49cirdUnye.png) 图 2:分类 (text classification) 蕴含 (textual entailment): 给一段话,和一个假设,看看前面这段话有没有蕴含后面的假设。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/OuhabfzABoqxQxxS1n1cPLTinKb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/OuhabfzABoqxQxxS1n1cPLTinKb.png) 图 3:蕴含 (textual entailment) 相似 (Similarity): 判断两段文字是否相似。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ByeFbxTfToxFlgxh6xmcIKeRnzd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ByeFbxTfToxFlgxh6xmcIKeRnzd.png) 图 4:相似 (Similarity) 多选题 (Multiple Choice): 给个问题,从 N 个答案中选出正确答案。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ZYgybsj5dol1Ifx96Koc6SRpnmc.jpeg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ZYgybsj5dol1Ifx96Koc6SRpnmc.jpeg) 图 5:多选题 (Multiple Choice) diff --git a/4.人工智能/4.6.6.2.2.3推荐系统实例.md b/4.人工智能/4.6.6.2.2.3推荐系统实例.md index c603636..c2fd453 100644 --- a/4.人工智能/4.6.6.2.2.3推荐系统实例.md +++ b/4.人工智能/4.6.6.2.2.3推荐系统实例.md @@ -1,6 +1,6 @@ # 推荐系统的外围架构 -![推荐系统外围架构图](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/推荐系统外围架构图.png) +![推荐系统外围架构图](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/推荐系统外围架构图.png)
推荐系统外围架构图
@@ -22,7 +22,7 @@ 若是将推荐系统的任务细分,可以结合现实实际情况:将最新加入的物品推荐给用户;商业上需要宣传的物品推荐给用户;为用户推荐不同种类的物品。 **复杂的特征和情况不同的任务**会让推荐系统变得非常复杂,所以推荐系统的架构为了方便考虑,采用多个不同的推荐引擎组成,每个推荐引擎专门负责某一类特征和一种任务,而推荐系统再将推荐引擎的结果按照一定的优先级合并,排序并返回给UI系统。 -![推荐系统的架构图](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/推荐系统的架构图.png) +![推荐系统的架构图](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/推荐系统的架构图.png)
推荐系统的架构
如上图所示。 @@ -38,7 +38,7 @@ - 推荐列表筛选、过滤、重排列部分 -![推荐引擎的架构](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/推荐引擎的架构.png) +![推荐引擎的架构](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/推荐引擎的架构.png) 以上为推荐引擎的架构图。 diff --git a/4.人工智能/4.6.6.2.2.4利用用户行为数据.md b/4.人工智能/4.6.6.2.2.4利用用户行为数据.md index b29e6b8..d49ef7d 100644 --- a/4.人工智能/4.6.6.2.2.4利用用户行为数据.md +++ b/4.人工智能/4.6.6.2.2.4利用用户行为数据.md @@ -179,7 +179,7 @@ $$Preference(u,i)=r_{ui}=p^T_uq_i=\sum^F_{f=1}{p_{u,k}q_{i,k}}$$ 在研究图模型之前,需要用已有的数据生成一个图,设二元组 $(u,i)$ 表示用u对于物品 i 产生过行为。令 $G(V,E)$ 表示用户物品二分图,其中$V=V_U\cup V_I$ 由用户顶点集合和物品顶点集合组成,$E$ 是边的集合。对于数据集中的二元组 $(u,i)$ 图中都会有对应的边 $e(v_u,v_i)\in E$ 如下图所示。 -![用户物品二分图模型](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/用户物品二分图模型.png) +![用户物品二分图模型](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/用户物品二分图模型.png) ### 基于图的推荐算法 diff --git a/4.人工智能/4.6.6.2.3序列化推荐.md b/4.人工智能/4.6.6.2.3序列化推荐.md index 312ee80..3c0065f 100644 --- a/4.人工智能/4.6.6.2.3序列化推荐.md +++ b/4.人工智能/4.6.6.2.3序列化推荐.md @@ -10,5 +10,5 @@

而SRSs则是将用户和商品的交互建模为一个动态的序列并且利用序列的依赖性来活捉当前和最近用户的喜好。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnolggxKhDZDBzIFPIaDFfhc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnolggxKhDZDBzIFPIaDFfhc.png) diff --git a/4.人工智能/4.6.6.2推荐系统.md b/4.人工智能/4.6.6.2推荐系统.md index b7d488b..6fa4dd1 100644 --- a/4.人工智能/4.6.6.2推荐系统.md +++ b/4.人工智能/4.6.6.2推荐系统.md @@ -4,7 +4,7 @@ 如下图是阿里巴巴著名的“千人千面”推荐系统 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn3bdrD08wpaYhL59ezDukuc.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn3bdrD08wpaYhL59ezDukuc.jpg) 还有短视频应用用户数量的急剧增长,这背后,视频推荐引擎发挥着不可替代的作用 diff --git a/4.人工智能/4.6.7.1VIT.md b/4.人工智能/4.6.7.1VIT.md index 7a0e16c..ca13ee2 100644 --- a/4.人工智能/4.6.7.1VIT.md +++ b/4.人工智能/4.6.7.1VIT.md @@ -18,7 +18,7 @@ ## 模型详解 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn1wqKtwBc6MCJDm7ehvhXac.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn1wqKtwBc6MCJDm7ehvhXac.png) ### 模型主题结构 @@ -51,9 +51,9 @@ 例如 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn1szLG4Y4s0UkY3kkW18Xoc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn1szLG4Y4s0UkY3kkW18Xoc.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnv2inISAGi2xOauc3pxKpCb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnv2inISAGi2xOauc3pxKpCb.png) 其中该张图片的编码为[0.5,0.6,0.3,....] diff --git a/4.人工智能/4.6.7.2BERT.md b/4.人工智能/4.6.7.2BERT.md index 09fbc71..98f40b7 100644 --- a/4.人工智能/4.6.7.2BERT.md +++ b/4.人工智能/4.6.7.2BERT.md @@ -30,13 +30,13 @@ mlp 的重点和创新并非它的模型结构,而是它的训练方式,前 BERT 模型的输入就是上面三者的和,如图所示: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcngc1a7cWapQA9rSLXYqUvkf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcngc1a7cWapQA9rSLXYqUvkf.png) ## 模型结构 简单来说,BERT 是 transformer编码器的叠加,也就是下图左边部分。这算一个 block。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPg8594YzCdnX6KZxpEYYod.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPg8594YzCdnX6KZxpEYYod.png) 说白了就是一个 多头自注意力=>layer-norm=> 接 feed forward(其实就是 mlp)=>layer-norm,没有什么创新点在这里。因为是一个 backbone 模型,它没有具体的分类头之类的东西。输出就是最后一层 block 的输出。 diff --git a/4.人工智能/4.6.7.3MAE.md b/4.人工智能/4.6.7.3MAE.md index 3f34265..90cb0d9 100644 --- a/4.人工智能/4.6.7.3MAE.md +++ b/4.人工智能/4.6.7.3MAE.md @@ -28,7 +28,7 @@ cv 领域,其实预训练模型早已推广,一般是在 imagenet 上进行 在这里,作者为了加大任务的难度,扩大了被 mask 掉的比例,避免模型只学到双线性插值去修补缺的图像。作者把 75% 的 patch 进行 mask,然后放入模型训练。从下图可以看出,被 mask 的块是不进行编码的,这样也可以降低计算量,减少成本。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnd7HTEFOiJxVQ3jtOpzK4ie.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnd7HTEFOiJxVQ3jtOpzK4ie.png) 在被保留的块通过编码器后,我们再在原先位置插入只包含位置信息的 mask 块,一起放入解码器。 @@ -38,7 +38,7 @@ cv 领域,其实预训练模型早已推广,一般是在 imagenet 上进行 下面是原论文给的训练结果,可以看到效果是很惊人的。(有些图我脑补都补不出来) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPWO0VWbPvCE537tf6MWu4e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPWO0VWbPvCE537tf6MWu4e.png) # 相关资料 diff --git a/4.人工智能/4.6.8.1前言.md b/4.人工智能/4.6.8.1前言.md index 91210d0..697999b 100644 --- a/4.人工智能/4.6.8.1前言.md +++ b/4.人工智能/4.6.8.1前言.md @@ -24,7 +24,7 @@ 直观来讲,我们把特征的向量进行一下归一化,它们就分布在一个超球面上。简单起见,我们先看 3 维向量 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnJ6HpIJqxJuxiz7Cw5GopSh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnJ6HpIJqxJuxiz7Cw5GopSh.png) 我们通过正样本(跟拿到的特征应当相近的另一个特征)与负样本(反之)的对比,使得 diff --git a/4.人工智能/4.6.8.2Inst Disc.md b/4.人工智能/4.6.8.2Inst Disc.md index 108f14f..3d6e134 100644 --- a/4.人工智能/4.6.8.2Inst Disc.md +++ b/4.人工智能/4.6.8.2Inst Disc.md @@ -8,7 +8,7 @@ 作者团队认为,让这些猎豹,雪豹的标签相互接近(指互相在判别时都排名靠前)的原因并不是它们有相似的标签,而是它们有相似的图像特征。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnrR3eFvOSKYRH8Ni0dvHYkc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnrR3eFvOSKYRH8Ni0dvHYkc.png) ## 个体判别任务 @@ -16,7 +16,7 @@ 于是他们把每一个图片当作一个类别,去跟其他的图片做对比,具体模型如下 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnPNukes2FlNwUFSKiqIJEbd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnPNukes2FlNwUFSKiqIJEbd.png) 先介绍一下模型结构: @@ -48,11 +48,11 @@ A 是起始点,B 是第一次更新后的点,C 是第二次更新后的点 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn5zfD155Joy1eD5CvbZXZnc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn5zfD155Joy1eD5CvbZXZnc.png) 而在我们刚刚提到的动量更新里,它的公式可以概括为: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnTLEK31rFmuRo2MOWGRBoYe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnTLEK31rFmuRo2MOWGRBoYe.png) m 表示动量,k 是新的特征,q 是上一个特征,只要设置小的动量就可以使改变放缓。 diff --git a/4.人工智能/4.6.8.3定义正负样本的方式.md b/4.人工智能/4.6.8.3定义正负样本的方式.md index 11e65b6..c62f67d 100644 --- a/4.人工智能/4.6.8.3定义正负样本的方式.md +++ b/4.人工智能/4.6.8.3定义正负样本的方式.md @@ -4,7 +4,7 @@ # 1.时序性定义(生成式模型) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnC10uzdj0G0BJPlUZKFIi7C.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnC10uzdj0G0BJPlUZKFIi7C.png) 这是处理音频的一个例子,给模型 t 时刻以前的信息,让它抽取特征并对后文进行预测,真正的后文作为正样本,负样本当然是随便选取就好啦。 @@ -24,4 +24,4 @@ (这篇论文我准备开个新坑放着了,因为说实话不算对比学习,算多模态) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnssaOVvp73SVIrzVvZPr1Je.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnssaOVvp73SVIrzVvZPr1Je.png) diff --git a/4.人工智能/4.6.8.4MoCo.md b/4.人工智能/4.6.8.4MoCo.md index 3288838..1d633dd 100644 --- a/4.人工智能/4.6.8.4MoCo.md +++ b/4.人工智能/4.6.8.4MoCo.md @@ -24,7 +24,7 @@ NCE 把所有负样本都视作一样的,但实际上负样 右边就是 memory bank 啦 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnKMjslIshEA5SFqc8rbmqoe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnKMjslIshEA5SFqc8rbmqoe.png) # MoCo 做出的改进 @@ -38,7 +38,7 @@ NCE 把所有负样本都视作一样的,但实际上负样 动量编码器是独立于原编码器的一个编码器,它的参数是根据原编码器动量更新的,k 和 q 就是指代全部参数了 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnFLSP9PtQRkgYgcMwM4idog.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnFLSP9PtQRkgYgcMwM4idog.png) 这样的话就是解码器在缓慢更新,比对特征使用动量更新要更有连续性。 @@ -48,7 +48,7 @@ NCE 把所有负样本都视作一样的,但实际上负样 [(什么?你看到这了还不会交叉熵?戳这里)](https://zhuanlan.zhihu.com/p/149186719) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnnWI38bkSzeCe5TtVTBCrNh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnnWI38bkSzeCe5TtVTBCrNh.png) q·k 其实就是各个特征(因为那时候用的都是 transformer 了,这里就是 trnasformer 里的 k 和 q) @@ -56,9 +56,9 @@ q·k 其实就是各个特征(因为那时候用的都是 transformer 了, T 越大,损失函数就越对所有负样本一视同仁,退化为二分类的 NCEloss;T 越小,损失函数就越关注一些难分类的特征,但有时候会出现两张其实都是猫猫的图片,你硬要让模型说猫猫跟猫猫不一样,这也不太好,这个参数要根据数据集情况适中调整。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhuabU9XzXmVQfu0ruENs83.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhuabU9XzXmVQfu0ruENs83.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnsGpqCNePn2G34GnJqPieBf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnsGpqCNePn2G34GnJqPieBf.png) 上面那张是 T 较大的情况,下面是 T 较小的情况(x 轴是各个类别,y 轴是分类得分) diff --git a/4.人工智能/4.6.8.5SimCLR.md b/4.人工智能/4.6.8.5SimCLR.md index 58696f0..07c49fa 100644 --- a/4.人工智能/4.6.8.5SimCLR.md +++ b/4.人工智能/4.6.8.5SimCLR.md @@ -6,7 +6,7 @@ x 是输入的图片,它经过两种不同的数据增强得到 xi 和 xj 两个正样本,而同一个 mini-batch 里的所有其他样本都作为负样本。说白了还是个体判别任务 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnq5TYzSltn6CsPM3Bn3xxAb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnq5TYzSltn6CsPM3Bn3xxAb.png) 左右的f 都是编码器,并且是完全一致共享权重的,可以说是同一个。 @@ -18,7 +18,7 @@ x 是输入的图片,它经过两种不同的数据增强得到 xi 和 xj 两 下面这个是更加具体的流程图 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnj3FZsRiJbWsKW07b9B8Fkb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnj3FZsRiJbWsKW07b9B8Fkb.png) # 总结 diff --git a/4.人工智能/4.6.8.6SwAV.md b/4.人工智能/4.6.8.6SwAV.md index 53db0b4..bbfd152 100644 --- a/4.人工智能/4.6.8.6SwAV.md +++ b/4.人工智能/4.6.8.6SwAV.md @@ -20,7 +20,7 @@ 下图左边是常规的对比学习(比如 SimCLR)的结构,右图是 SWAV 的结构,不难看出多了一个叫 prototypes 的东西。这个东西其实是聚类中心向量所构成的矩阵。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnGteJZelEtVqBFwwukw7c8g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnGteJZelEtVqBFwwukw7c8g.png) 下面的内容可能有些理解上的难度(反正我第一次听讲解的时候就云里雾里的),我会尽可能直白地描述这个过程。 @@ -40,7 +40,7 @@ 而我们的优化要采用 [K-means](https://zhuanlan.zhihu.com/p/78798251)(不懂可以看这里)的类似做法,先对聚类中心进行优化,再对特征进行优化。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnKe4DzDfdNbhhHowdE4BJEf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnKe4DzDfdNbhhHowdE4BJEf.png) so,why?相信你现在肯定是一脸懵,不过别急,希望我能为你讲懂。 diff --git a/4.人工智能/4.6.8.7BYOL.md b/4.人工智能/4.6.8.7BYOL.md index 1c4afd7..fd53f56 100644 --- a/4.人工智能/4.6.8.7BYOL.md +++ b/4.人工智能/4.6.8.7BYOL.md @@ -18,7 +18,7 @@ predictor的模型结构就是跟 z 一样的mlp 层。它的任务是通过紫色的特征去预测粉色的特征。也就是说它的代理任务换成了生成式。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcne7eizRhw5GKRSpF40KcMEh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcne7eizRhw5GKRSpF40KcMEh.png) 而具体的损失只有预测特征和真实特征的损失,用的是MSEloss。 @@ -32,7 +32,7 @@ ### 有篇博客在复现 BYOL 时,不小心没加这个 BN 层,导致模型直接摆烂。那么 BN 到底藏着什么呢? -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn8wfpZCjOD2lFsM03N5vatl.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn8wfpZCjOD2lFsM03N5vatl.png) 我们得先来回顾一下 BN 做了什么。 @@ -52,7 +52,7 @@ BN 根据批次的均值和方差进行归一化   这篇论文叫 BYOL works even without batch statistics,即在没有 BN 的时候 BYOL 照样能工作,详细的消融实验结果如下表所示 : -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcncmJWb99mlUUIFTPjGoCqYb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcncmJWb99mlUUIFTPjGoCqYb.png) BN 非常关键:只要是 `projector`(SimCLR 提出的 mlp)中没有 BN 的地方,SimCLR 性稍微下降;但是 BYOL 全都模型坍塌了。 diff --git a/4.人工智能/4.6.8.8SimSiam.md b/4.人工智能/4.6.8.8SimSiam.md index 88bc544..98fe5f1 100644 --- a/4.人工智能/4.6.8.8SimSiam.md +++ b/4.人工智能/4.6.8.8SimSiam.md @@ -20,7 +20,7 @@ BYOL 之后,大家都发现对比学习是靠许许多多的小 trick 和技 虽然看起来只有左边预测右边,其实右边也有一个 predictor 去预测左边的特征,两边是对称的,左右的优化有先后顺序。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnWk5QzvbsSNlyV4B7SMt5zb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnWk5QzvbsSNlyV4B7SMt5zb.png) 结构其实没什么特殊的地方,主要讲讲思想。 @@ -44,7 +44,7 @@ BYOL 之后,大家都发现对比学习是靠许许多多的小 trick 和技 这是作者总结的所有”孪生网络“的模型结构,很精炼。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn8OWwnN8ae2vUVttqlu5O8e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn8OWwnN8ae2vUVttqlu5O8e.png) 下面是这些网络训练结果的对比,也列出了它们分别有哪些 trick(用的是分类任务) @@ -52,8 +52,8 @@ BYOL 之后,大家都发现对比学习是靠许许多多的小 trick 和技 负样本 动量编码器 训练轮数 ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn3uizAKNhAxQryOwvHxFSDb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn3uizAKNhAxQryOwvHxFSDb.png) 具体结果还是图片比较直观( -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnqdfrOIxim4wBayDDBitHCd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnqdfrOIxim4wBayDDBitHCd.png) diff --git a/4.人工智能/4.6.8.9MoCo v3.md b/4.人工智能/4.6.8.9MoCo v3.md index 8613747..f849189 100644 --- a/4.人工智能/4.6.8.9MoCo v3.md +++ b/4.人工智能/4.6.8.9MoCo v3.md @@ -10,7 +10,7 @@ MoCo v3,它缝合了 MoCo 和 SimSiam,以及新的骨干网络 VIT。 可能因为和前面的工作太像了,作者就没有给模型总览图,我们借 MoCo 的总览图来讲 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnhxg4HZw2NExIbYZxQGISze.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnhxg4HZw2NExIbYZxQGISze.png) 总体架构其实没有太多变化,还是 memory bank 的结构,右边也还是动量编码器,不过加入了 SimCLR 提出的 projection head(就是额外的那层 mlp),并且在对比上用了 SimSiam 的预测头对称学习方式。具体也不展开了,都是老东西缝合在一起。 @@ -18,11 +18,11 @@ MoCo v3,它缝合了 MoCo 和 SimSiam,以及新的骨干网络 VIT。 作者在用 VIT 做骨干网络训练的时候,发现如下问题: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnMMhbVk6wc81H8BSoack7Mg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnMMhbVk6wc81H8BSoack7Mg.png) 在使用 VIT 训练的时候,batchsize 不算太大时训练很平滑,但是一旦 batchsize 变大,训练的图像就会出现如上图这样的波动。于是作者去查看了每一层的梯度,发现问题出在VIT 的第一层线性变换上。也就是下图中的粉色那个层,把图片打成 patch 后展平做的线性变换。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcniBkiypcv6IQbxr9D6JukOb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcniBkiypcv6IQbxr9D6JukOb.png) 在这一层中,梯度会出现波峰,而正确率则会突然下跌。 diff --git a/4.人工智能/4.6.9.3基本概念介绍.md b/4.人工智能/4.6.9.3基本概念介绍.md index 9daafb4..c4c7761 100644 --- a/4.人工智能/4.6.9.3基本概念介绍.md +++ b/4.人工智能/4.6.9.3基本概念介绍.md @@ -4,13 +4,13 @@ ## 强化学习的基本过程 前面已经介绍过强化学习的核心过程,在于智能体与环境进行交互,通过给出的奖励反馈作为信号学习的过程。简单地用图片表示如下: -![](static/4.6.9.3.1.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/4.6.9.3.1.png) 正是在这个与环境的交互过程中,智能体不断得到反馈,目标就是尽可能地让环境反馈的奖励足够大。 ## 强化学习过程的基本组成内容 为了便于理解,我们引入任天堂经典游戏——[新超级马里奥兄弟U](https://www.nintendoswitch.com.cn/new_super_mario_bros_u_deluxe/pc/index.html),作为辅助理解的帮手。作为一个2D横向的闯关游戏,它的状态空间和动作空间无疑是简单的。 -![](static/4.6.9.3.2.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/4.6.9.3.2.png) 1.智能体(Agent):它与环境交互,可以观察到环境并且做出决策,然后反馈给环境。在马里奥游戏中,能操控的这个马里奥本体就是智能体。 @@ -22,7 +22,7 @@ 5.策略(Policy):智能体采取动作的规则,分为**确定性策略**与**随机性策略**。确定性策略代表在相同的状态下,智能体所输出的动作是唯一的。而随机性策略哪怕是在相同的状态下,输出的动作也有可能不一样。这么说有点过于抽象了,那么请思考这个问题:在下面这张图的环境中,如果执行确定性策略会发生什么?(提示:着重关注两个灰色的格子) -![](static/4.6.9.3.3.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/4.6.9.3.3.png) 因此,在强化学习中我们一般使用随机性策略。随机性策略通过引入一定的随机性,使环境能够被更好地探索。同时,如果策略固定——你的对手很容易能预测你的下一步动作并予以反击,这在博弈中是致命的。 随机性策略$\pi$定义如下: diff --git a/4.人工智能/code/1-Lecture.zip b/4.人工智能/code/1-Lecture.zip new file mode 100644 index 0000000..e4770a3 Binary files /dev/null and b/4.人工智能/code/1-Lecture.zip differ diff --git a/4.人工智能/code/1-Projects.zip b/4.人工智能/code/1-Projects.zip new file mode 100644 index 0000000..4347e68 Binary files /dev/null and b/4.人工智能/code/1-Projects.zip differ diff --git a/4.人工智能/code/2-Lecture.zip b/4.人工智能/code/2-Lecture.zip new file mode 100644 index 0000000..3a47f0a Binary files /dev/null and b/4.人工智能/code/2-Lecture.zip differ diff --git a/4.人工智能/code/2-Projects.zip b/4.人工智能/code/2-Projects.zip new file mode 100644 index 0000000..ac2dbec Binary files /dev/null and b/4.人工智能/code/2-Projects.zip differ diff --git a/4.人工智能/code/3-Lecture.zip b/4.人工智能/code/3-Lecture.zip new file mode 100644 index 0000000..31b742a Binary files /dev/null and b/4.人工智能/code/3-Lecture.zip differ diff --git a/4.人工智能/code/3-Projects.zip b/4.人工智能/code/3-Projects.zip new file mode 100644 index 0000000..9a0ffa3 Binary files /dev/null and b/4.人工智能/code/3-Projects.zip differ diff --git a/4.人工智能/code/4-Lecture.zip b/4.人工智能/code/4-Lecture.zip new file mode 100644 index 0000000..789ad34 Binary files /dev/null and b/4.人工智能/code/4-Lecture.zip differ diff --git a/4.人工智能/code/4-Projects.zip b/4.人工智能/code/4-Projects.zip new file mode 100644 index 0000000..151b538 Binary files /dev/null and b/4.人工智能/code/4-Projects.zip differ diff --git a/4.人工智能/code/MAZE.zip b/4.人工智能/code/MAZE.zip deleted file mode 100644 index 69abbff..0000000 Binary files a/4.人工智能/code/MAZE.zip and /dev/null differ diff --git a/4.人工智能/code/Read.md b/4.人工智能/code/Read.md deleted file mode 100644 index 9bd0f06..0000000 --- a/4.人工智能/code/Read.md +++ /dev/null @@ -1 +0,0 @@ -这里存放示例代码和作业 diff --git a/5.富有生命的嵌入式/5.1嵌入式是什么?可以吃吗?.md b/5.富有生命的嵌入式/5.1嵌入式是什么?可以吃吗?.md index ed12687..1faca46 100644 --- a/5.富有生命的嵌入式/5.1嵌入式是什么?可以吃吗?.md +++ b/5.富有生命的嵌入式/5.1嵌入式是什么?可以吃吗?.md @@ -1,6 +1,6 @@ # 嵌入式是什么?可以吃吗? -> Author:肖扬 +> Author:肖扬 # 概念引入与讲解 @@ -8,7 +8,7 @@ 这不是因为那些人没有完全入门嵌入式,而是因为在嵌入式的学习过程中你会发现,它的概念会越来越大,逐渐模糊了你的认知,就拿一张某乎上的照片而言: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcny07MPlh99IIS5yxAdL4iDb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcny07MPlh99IIS5yxAdL4iDb.png) 可见嵌入式的概念之广。 @@ -20,7 +20,7 @@ 这玩意儿大家估计不陌生,比如你去酒店里,也许会有一个可以坐电梯上下楼层来完成特定任务的机器人(说实话高二在某季酒店第一次见的时候还蛮新鲜) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn99MPmacSrXPkIgQ13FLABc.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn99MPmacSrXPkIgQ13FLABc.jpg) 而它也是一个嵌入式产品(或者说它们)。 diff --git a/5.富有生命的嵌入式/5.2New meaning of C.md b/5.富有生命的嵌入式/5.2New meaning of C.md index dc20fd2..2389768 100644 --- a/5.富有生命的嵌入式/5.2New meaning of C.md +++ b/5.富有生命的嵌入式/5.2New meaning of C.md @@ -83,15 +83,15 @@ ORG 0BH 下面引入一个 STM32F1 系列的 GPIO 部分寄存器图(来源正点原子提供的 F1 参考手册): -![](static/MyDMbeCKLowC1Mx7Q6Ec9BLPn4g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/MyDMbeCKLowC1Mx7Q6Ec9BLPn4g.png) -![](static/LJ1SbFfv6oUIgtx8CstcbWTNnRg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/LJ1SbFfv6oUIgtx8CstcbWTNnRg.png) 如果我们想做一个简单的实验-驱动一个 LED 灯(假设此 LED 灯以 PB5 为输出驱动口),在对相应的 RCC 时钟等配置之外,最重要的是对相应的 GPIO 口的配置,首先我们查阅其寄存器的物理起始地址: -![](static/CZ3cbiEhsoWDgJxhwXIcpUkAnMg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/CZ3cbiEhsoWDgJxhwXIcpUkAnMg.png) -![](static/HTFUbsQCNouQVzx0QYiciQWOnZf.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/HTFUbsQCNouQVzx0QYiciQWOnZf.png) 可见 GPIO 外设通过 APB2 总线进行地址定位与传输数据的,所以我们要控制 PB5 的话首先需要定位到对应的地址: diff --git a/5.富有生命的嵌入式/5.3还玩裸机?上操作系统!.md b/5.富有生命的嵌入式/5.3还玩裸机?上操作系统!.md index fbfd3f5..c31584c 100644 --- a/5.富有生命的嵌入式/5.3还玩裸机?上操作系统!.md +++ b/5.富有生命的嵌入式/5.3还玩裸机?上操作系统!.md @@ -16,13 +16,13 @@ RTOS 中最重要的概念则是“任务”。 我们可以回想一下在 MCU 开发过程中,一般都是在 main 函数里做个 while(1)来完成大部分的处理,将一些相对来说对实时性要求高的函数(如 PID 控制器)扔到定时器中断当中,即应用程序是个无限的循环,是个单任务系统(前后台系统),while(1)作为后台,中断服务函数作为前台。这里采用了“正点原子”的一张图: -![](static/boxcnFySF1Cd02I052V0a9glH1c.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnFySF1Cd02I052V0a9glH1c.png) 而 RTOS 则是一个多任务系统,那么它这么做有什么好处呢? 2>1 嘛(乐),实际上在前后台系统中,你的每项 Task 要轮流排队等着上次 Task 执行结束后再进行自己的程序,大大影响了其系统的实时性要求;而 RTOS 中我们把整个 while(1)区分成了很多小任务,并且在表面上看起来这些任务运行起来像是同时进行,实际上是因为任务所需的时间较少导致它看起来像是并行,但这将会带来新的疑问,到底什么任务先执行呢?RTOS 就为此提供了任务的相关 API 接口,赋予任务相应的执行优先级属性,并通过任务调度器来控制任务的执行顺序。这里同样采用了“正点原子”的一张图: -![](static/boxcntQgR61yRboDpyb1bpI10Xp.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcntQgR61yRboDpyb1bpI10Xp.png) 所以,其实可以这么说:RTOS 将整个流程变成了很多个 while(1)【每个任务都是个 while(1)】。 @@ -65,7 +65,7 @@ int main(){ 由于硬件技术的飞速发展,针对于机器人软件设计的框架也面临着极大的挑战,而 ROS 的出现无异是所有机器人开发者的福音,因为如果按照以前的制作一个机器人流程来讲,也许你要经历以下步骤:硬件结构搭建、控制处理、相关算法构建等等,但是 ROS 的开源共享模式令其可以在其平台上巧妙利用别人的开源模型完成自己的机器人搭建,也就是说 Ros 的出现打破了原本各个开发者(或团队)闭门造车的开发现象,使得其可以共享优秀的机器人应用软件,换句话说就是提高了机器人研发的软件复用率。(毕竟哪个团队都不可能同时在建图、导航、视觉等机器人应用方面处于顶尖位置) -![](static/boxcnRy7E27xggqNshXX3cu4J5Q.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnRy7E27xggqNshXX3cu4J5Q.png) 由于 ROS 中完成度最高的是 Ubuntu,所以我们建议你以此展开学习,当然你也可以选择 macOS、Debian 等 OS。 diff --git a/5.富有生命的嵌入式/5.富有生命的嵌入式.md b/5.富有生命的嵌入式/5.富有生命的嵌入式.md index 0f713e6..7c88e20 100644 --- a/5.富有生命的嵌入式/5.富有生命的嵌入式.md +++ b/5.富有生命的嵌入式/5.富有生命的嵌入式.md @@ -1,7 +1,12 @@ # 5.富有生命的嵌入式 -> Author:肖扬 +Author:肖扬 +孵化器实验室 2023 招新群(QQ): 879805955 + +预热 OJ 平台:[OJ 平台(C 语言为主)](http://hdufhq.cn/) + +> 实验室不仅有嵌入式方向,还有硬件、网络 web 开发方向! 在本模块,我们将为你讲述何为嵌入式、如何学嵌入式、如何爱上嵌入式 @@ -11,6 +16,6 @@ > “点星星之火,燃燎原之势,热血芳华,理想当燃” -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn3t2GyLQqe4RpGdRtakcwBc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn3t2GyLQqe4RpGdRtakcwBc.png) ps:若对此部分讲义有相关疑问或者建议,欢迎 QQ 联系-1213047454 diff --git a/6.计算机安全/6.2.1SQL 注入.md b/6.计算机安全/6.1.1SQL 注入.md similarity index 92% rename from 6.计算机安全/6.2.1SQL 注入.md rename to 6.计算机安全/6.1.1SQL 注入.md index 149456d..d89e491 100644 --- a/6.计算机安全/6.2.1SQL 注入.md +++ b/6.计算机安全/6.1.1SQL 注入.md @@ -2,7 +2,7 @@ Author: `Liki4` from Vidar-Team -Vidar-Team 2022 招新 QQ 群: 865294458(仅向校内开放) +Vidar-Team 2023 招新 QQ 群: 861507440(仅向校内开放) Vidar-Team 官网: [https://vidar.club/](https://vidar.club/) @@ -34,7 +34,7 @@ def check_pass(username, password): 从 `users` 表中查出 `username` 对应的 `password` 的哈希值,将其与用户传入的密码哈希值进行比对,若相等则意味着用户传入的密码与数据库中储存的密码相吻合,于是返回准许登录 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnHiNBWN86AR4AvSSsUVwSWb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnHiNBWN86AR4AvSSsUVwSWb.png) 那么问题来了,在语句 @@ -144,7 +144,7 @@ mysql> select group_concat(id,username separator '_') from users; 现在我们传入 `Liki4'` 这个字符串 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn8TrpE02fnPV7dFzkmnHiAe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn8TrpE02fnPV7dFzkmnHiAe.png) 很遗憾,报错了,这个查询因为 SQL 语句存在语法错误而无法完成。 @@ -154,7 +154,7 @@ mysql> select group_concat(id,username separator '_') from users; 那如果我们传入 `Liki4';#` 这个字符串,那么在拼接后的查询又是什么结果呢 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbAKreqEeZxOYQuQMtZbd9d.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbAKreqEeZxOYQuQMtZbd9d.png) 很显然,`#` 号将原本语句的 `';` 注释掉了 @@ -166,7 +166,7 @@ mysql> select group_concat(id,username separator '_') from users; `raw_sql_danger' UNION SELECT password FROM users WHERE username = 'Liki5';#` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcniDohuM3F8FbMqz7YSC0Y5g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcniDohuM3F8FbMqz7YSC0Y5g.png) 真是惊人的壮举!我完全不认识这个叫 Liki5 的家伙,但我居然知道了他的密码对应的哈希值! @@ -273,7 +273,7 @@ if __name__ == "__main__": 接下来我们进行一次常规查询 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnpCCmEi6LIKNi0UqEkXfJ8g.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnpCCmEi6LIKNi0UqEkXfJ8g.png) 可以看到我们成功从数据库中查出了 `username` 和 `password`,并显示在返回中 @@ -293,7 +293,7 @@ def query(username): ... ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbaW15gnJc1O9Iv9WXqJxPc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbaW15gnJc1O9Iv9WXqJxPc.png) 可以看到,实际执行的语句为 @@ -307,7 +307,7 @@ SELECT * FROM users WHERE username = '123' UNION SELECT 1, 2;#' 构造语句 `123' UNION SELECT DATABASE(), @@version;#` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnDeDp5yPE7W4KX9ByBl9ovh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnDeDp5yPE7W4KX9ByBl9ovh.png) 我们就能看到返回中包含了当前数据库名与当前数据库版本 @@ -317,13 +317,13 @@ SELECT * FROM users WHERE username = '123' UNION SELECT 1, 2;#' > `information_schema` 库是一个 MySQL 内置数据库,储存了数据库中的一些基本信息,比如数据库名,表名,列名等一系列关键数据,SQL 注入中可以查询该库来获取数据库中的敏感信息。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnkwvSnhKBhlHNLOSthgul9d.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnkwvSnhKBhlHNLOSthgul9d.png) 我们可以发现,当前数据库中还存在一张叫 `secret` 的表,让我们偷看一下里面存的是什么 构造语句 `123' UNION SELECT 1, secret_string FROM secret;#` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn3kfhJ79ByNML2Z1Q1MwRye.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn3kfhJ79ByNML2Z1Q1MwRye.png) 好像得到了什么不得了的秘密 :-) @@ -363,7 +363,7 @@ if __name__ == "__main__": 这样一来我们就只能知道自己是否登录成功,并不能看到查询返回的结果了 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn2seUNESHkLC9PYvDp0vFbe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn2seUNESHkLC9PYvDp0vFbe.png) 那也就是说,我们无法直观地查看数据库中的数据了,即便查出了不该查的也看不到了 :-( @@ -396,7 +396,7 @@ else: > rlike 是 MySQL 中的一个关键字,是 regex 和 like 的结合体 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnJEeAKow3ZhUSvbL4FQXxOh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnJEeAKow3ZhUSvbL4FQXxOh.png) 这里实际执行的语句就变成了 @@ -404,13 +404,13 @@ else: SELECT password FROM users WHERE username = 'Liki4' AND if(@@version rlike '^5',1,0); ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnJ3jImTQcMUOWJclTACj74e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnJ3jImTQcMUOWJclTACj74e.png) ```sql SELECT password FROM users WHERE username = 'Liki4' AND if(@@version rlike '^8',1,0); ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnEDPFbKQ6iaM5WhHWUWmI5d.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnEDPFbKQ6iaM5WhHWUWmI5d.png) 也就是说,当 if 语句中的条件为真时,这个查询才会将 password 查询出来 @@ -480,7 +480,7 @@ if __name__ == "__main__": exp() ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnXyMaLh26lkNuAPiQVHuaNg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnXyMaLh26lkNuAPiQVHuaNg.png) #### @@ -523,7 +523,7 @@ if __name__ == "__main__": 如果想要让布尔盲注不可用,我们可以做一个假设,假设我们并不知道账户的密码,也就无法通过登陆验证,这个时候就失去了布尔盲注最大的依赖,也就无法得知 if 表达式的真或假了。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcndxf4WEQQQEXspS7GwNKI6J.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcndxf4WEQQQEXspS7GwNKI6J.png) 但,真的没办法了吗? @@ -600,7 +600,7 @@ if __name__ == "__main__": exp() ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnsStdHC5VmBylyx6S7hakEb.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnsStdHC5VmBylyx6S7hakEb.png) ### 基于报错的 SQL 注入 (TODO) @@ -640,7 +640,7 @@ if __name__ == "__main__": main() ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnl67uDDSIdh3J7y7Jxjk0dc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnl67uDDSIdh3J7y7Jxjk0dc.png) 这样一来如果 SQL 语句执行报错的话,错误信息就会被打印出来 @@ -671,9 +671,9 @@ MySQL 8.0 doc: [https://dev.mysql.com/doc/refman/8.0/en/](https://dev.mysql.com/ `Liki4';INSERT INTO users VALUES ('Liki3','01848f8e70090495a136698a41c5b37406968c648ab12133e0f256b2364b5bb5');#` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnrMIc2m6oubxC86CEtw1jMe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnrMIc2m6oubxC86CEtw1jMe.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnVRdntvakiTpt7nP8JhKKfc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnVRdntvakiTpt7nP8JhKKfc.png) INSERT 语句也被成功执行了,向数据库中插入了 Liki3 的数据 @@ -776,7 +776,7 @@ INSERT 语句也被成功执行了,向数据库中插入了 Liki3 的数据 在 GB2312、GBK、GB18030、BIG5、Shift_JIS 等编码下来吃掉 ASCII 字符的方法,可以用来绕过 `addslashes()` `id=0%df%27%20union%20select%201,2,database();` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnaRtyUGC0sX3btnFIgpDCob.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnaRtyUGC0sX3btnFIgpDCob.png) ### information_schema 被过滤 @@ -795,7 +795,7 @@ select table_name from mysql.innodb_index_stats where database_name=database select table_name from mysql.innodb_table_stats where database_name=database(); ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbMtjAq8osStjcSbFuIdDSc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbMtjAq8osStjcSbFuIdDSc.png) ##### MySQL 5.7 的新特性 @@ -812,7 +812,7 @@ select table_name from sys.schema_table_statistics_with_buffer where table_schem select table_name from sys.x$schema_table_statistics_with_buffer where table_schema=database(); ``` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnV68mdIQmovJwczDsOc53gc.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnV68mdIQmovJwczDsOc53gc.png) ### 无列名注入 @@ -820,7 +820,7 @@ select table_name from sys.x$schema_table_statistics_with_buffer where table_sch `select a,b from (select 1 as a, 2 as b union select * from users)x;` -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnI3jJNlLqq4f7WqRKGEWTeh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnI3jJNlLqq4f7WqRKGEWTeh.png) ## 超脱 MySQL 之外 (TODO) diff --git a/6.计算机安全/6.2Web安全.md b/6.计算机安全/6.1Web安全.md similarity index 97% rename from 6.计算机安全/6.2Web安全.md rename to 6.计算机安全/6.1Web安全.md index d5097dc..ab4323b 100644 --- a/6.计算机安全/6.2Web安全.md +++ b/6.计算机安全/6.1Web安全.md @@ -2,7 +2,6 @@ > 本文来自HGAME Mini 2022 Web 入门材料,目的是为了帮助新生更好的入门Web安全。 -> 欢迎对安全感兴趣的小伙伴了解[Vidar-Team](https://vidar.club) ## 0x00 前言 本文希望为对Web感兴趣的同学提供在入门方向上的指导,以便与更加平滑的入门Web方向的学习。 @@ -83,6 +82,6 @@ HTTP请求和响应的具体内容可以使用浏览器(推荐使用Chrome、F > 勿以浮沙筑高台 -欢迎对Web安全感兴趣的你,如果在学习过程中遇到困难可以随时在 Vidar-Team 2022 招新群中提问哦,祝你在Web安全的学习道路上越走越远~ +欢迎对Web安全感兴趣的你,如果在学习过程中遇到困难可以随时在 Vidar-Team 招新群中提问哦,祝你在Web安全的学习道路上越走越远~ -`VIDAR{Web_1s_3asy_t0_st4rt!!}` \ No newline at end of file +`VIDAR{Web_1s_3asy_t0_st4rt!!}` diff --git a/6.计算机安全/6.3.1基础工具的使用.md b/6.计算机安全/6.2.1基础工具的使用.md similarity index 97% rename from 6.计算机安全/6.3.1基础工具的使用.md rename to 6.计算机安全/6.2.1基础工具的使用.md index 1de7c86..0524324 100644 --- a/6.计算机安全/6.3.1基础工具的使用.md +++ b/6.计算机安全/6.2.1基础工具的使用.md @@ -9,3 +9,4 @@ IDA pro (交互式反编译器专业版)是二进制安全研究人员必备 IDA pro 是收费软件,价格极其昂贵,一般人买不起,因此可以到各大网站下载破解版,注意到一些知名网站下载,比如吾爱破解等,防止下载的软件包含病毒。在编写此文时,IDA pro 更新到了 8.0,网上能找到的最新的版本为 7.7。本文由于版权原因,不提供下载链接。 ## 简易使用方法 +待更新~ diff --git a/6.计算机安全/6.3.2软件破解、软件加固.md b/6.计算机安全/6.2.2软件破解、软件加固.md similarity index 97% rename from 6.计算机安全/6.3.2软件破解、软件加固.md rename to 6.计算机安全/6.2.2软件破解、软件加固.md index 9f6627e..7631692 100644 --- a/6.计算机安全/6.3.2软件破解、软件加固.md +++ b/6.计算机安全/6.2.2软件破解、软件加固.md @@ -45,7 +45,7 @@ ESP 定律的原理在于利用程序中堆栈平衡来快速找到 OEP. 还是上一篇的示例, 入口一句 `pushad`, 我们按下 F8 执行 `pushad` 保存寄存器状态, 我们可以在右边的寄存器窗口里发现 `ESP` 寄存器的值变为了红色, 也即值发生了改变. -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnJdWqlHmhlvB471dIGT4GEh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnJdWqlHmhlvB471dIGT4GEh.png) 我们鼠标右击 `ESP` 寄存器的值, 也就是图中的 `0019FF64`, 选择 `HW break[ESP]` 后, 按下 `F9` 运行程序, 程序会在触发断点时断下. 如图来到了 `0040D3B0` 的位置. 这里就是上一篇我们单步跟踪时到达的位置, 剩余的就不再赘述. diff --git a/6.计算机安全/6.3二进制安全.md b/6.计算机安全/6.2二进制安全.md similarity index 98% rename from 6.计算机安全/6.3二进制安全.md rename to 6.计算机安全/6.2二进制安全.md index d74de30..ca9458c 100644 --- a/6.计算机安全/6.3二进制安全.md +++ b/6.计算机安全/6.2二进制安全.md @@ -11,7 +11,7 @@ reverse 主要研究软件破解,软件加固,计算机病毒等。 现实场景下,这两种方向通常界限比较模糊,统称的二进制安全主要研究漏洞挖掘,漏洞利用,软件加固,计算机病毒,游戏安全等。 ## 入门材料 -> 来自HGAME Mini 2022 Reverse Pwn 入门材料 +> HGAME Mini 2022 Reverse Pwn 入门材料 > Reverse:https://www.notion.so/b92ca2bfaacf4e7c873882dff9dbf649 > Pwn:https://ek1ng.oss-cn-hangzhou.aliyuncs.com/HGAME%20Mini%202022%20Pwn%E5%85%A5%E9%97%A8%E6%8C%87%E5%8C%97.pdf diff --git a/6.计算机安全/6.4密码学.md b/6.计算机安全/6.3密码学.md similarity index 96% rename from 6.计算机安全/6.4密码学.md rename to 6.计算机安全/6.3密码学.md index 7f6a384..92cd764 100644 --- a/6.计算机安全/6.4密码学.md +++ b/6.计算机安全/6.3密码学.md @@ -1,9 +1,7 @@ -# 可能用的上的密码学介绍 - -> 本文来自HGAME Mini 2022 Crypto 入门材料, - ## 什么是密码学 +> 本文来自HGAME Mini 2022 Crypto 入门材料。 + 密码学分为密码编码学和密码分析学,前者寻求**提供信息机密性、完整性和非否认性等的方法**,后者研究**加密信息的破译和伪造等破坏密码技术所能提供安全性**的方法。CTF比赛中的密码学题目偏向于密码分析。 ## 如何学习密码学 diff --git a/6.计算机安全/6.4安全杂项.md b/6.计算机安全/6.4安全杂项.md new file mode 100644 index 0000000..311c511 --- /dev/null +++ b/6.计算机安全/6.4安全杂项.md @@ -0,0 +1,146 @@ +# MISC入门指南 + +> 本文来自HGAME Mini 2022 Misc 入门材料 + +## MISC简单介绍 + +Misc 是 Miscellaneous 的缩写,杂项、混合体、大杂烩的意思,它是一个庞大而又有趣的分支,几乎会涉及所有分类的基础,包括内容安全、安全运维、网络编程、AI安全等不属于传统分类的知识,作为发散思维、拓展自己的一个知识面而言也是挺不错的方向。 + +**MISC大概有这些方面内容**: + +- 信息收集 +- 编码转换 +- 隐写分析 +- 数字取证 +- ...... + +![img](https://ctf-wiki.org/misc/figure/all.png) + +## 简单分块介绍 + +### 信息收集 + +#### 基本搜集技巧 + +简单一句话:多问搜索引擎,搜就完事了! + +- 目标 Web 网页、地理位置、相关组织 +- Google 基本搜索与挖掘技巧 (Google hacking) +- 网站、域名、IP:whois 等 +- 通过搜索引擎查找特定安全漏洞或私密信息 +- 组织结构和人员、个人资料、电话、电子邮件 +- 企业等实体:YellowPage、企业信用信息网 +- 国内:百度地图、卫星地图、街景 + +### 编码转换 + +- 各种古典密码 + - 摩斯电码 + - 凯撒密码 + - 栅栏密码 + - ROT13 + - 维吉尼亚密码 + +- 计算机常用编码 + - Ascii + - Unicode + - HTML实体编码 +- 其他编码 + - 二维码 + - 条形码 + - Js加密/Jother/JSFuck + - URL编码 + - Hex编码 + - Base大家族 + - MD5、SHA1等类似加密型 + - 与佛论禅 + - 兽音译者 + - ... + +### 隐写 + +- 图片隐写 + - jpg隐写 + - Steghide + - Stegdetect + - Slienteye + - Jhps + - png隐写 + - Stepsolve + - Stepic + - gif隐写 + - 时间 + - 空间 + - bmp隐写 + - LSB +- 音频隐写 + - 频谱 + - 波形 + - LSB + - Tools + - Wav + - Steganography + - steghide + + - Mp3 + - Mp3stego + +- 视频隐写 + - MSU Stego + - TCStego + +- 文档隐写 + - Word + - PDF +- 流量包 + - 协议 + - 传输 + +- 交换数据流 + - NTFS + +- Vmdk + - dsfok-tools + + +### 取证 + +- 图片取证 + - Jpg + - stegdetect + - Png + - Pngcheck + - Tweakpng +- 音频取证 + - Audacity +- 视频取证 + - FFmpeg +- 流量包取证 + - Wireshark + - Tshark + - Pacpfix +- 内存取证 + - Vol +- 磁盘文件取证 + - Ftx +- 文档取证 + - Pdf + - Pdf-parser + - Pdf-crack + - Word +- 压缩包 + - Zip + - Fcrackzip + - Apchpr + - Pkcrack + - Rar + - Rarcrack +- 固件分析 + - binwalk + - sleuthkit + + + + + +`VIDAR{Misc_1s_e4sy_t0_st4rt!!}` diff --git a/6.计算机安全/6.计算机安全.md b/6.计算机安全/6.计算机安全.md index 9264540..c375410 100644 --- a/6.计算机安全/6.计算机安全.md +++ b/6.计算机安全/6.计算机安全.md @@ -1,5 +1,21 @@ # 6.计算机安全 -> 本模块由 Vidar-Team 信息安全协会成员倾情奉献 +> 本模块由 [Vidar-Team](https://vidar.club) 信息安全协会成员倾情奉献,Vidar-Team 成立于2008年9月,其名 Vidar 来源于北欧神话"诸神黄昏"中幸存于难、带领人类重建了家园的神 Víðarr,是由杭州电子科技大学一群热爱信息安全的小伙伴自发成立的技术型团体 ,作为高校战队活跃于各大ctf赛事。 +> +> Vidar-Team 2023 招新 QQ 群: 861507440(仅向校内开放),欢迎对安全感兴趣的小伙伴加入我们! -计算机安全,通俗的讲就是黑客,主要研究计算机领域的攻防技术,主要包括网络安全和二进制安全两大类。现有的 CTF 信息安全竞赛里面还会看到密码学和杂项,以及最近几年新兴的 IoT 安全,人工智能安全等。 + +计算机安全,通俗的讲就是黑客,主要研究计算机领域的攻防技术,主要包括网络安全(Web)和二进制安全(Bin,包含Pwn和Reverse)两大类。现有的 CTF 信息安全竞赛里面还会看到密码学(Crypto)和安全杂项(Misc),以及最近几年新兴的 IoT 安全,人工智能安全等方向。本系列文章会按照CTF的5个方向,Web、Pwn、Reverse、Crypto、Misc来进行介绍。目前引入了HGAME Mini2022我们编写给新生的入门材料,在今年的10月份和寒假,我们也会分别举办HGAME Mini和HGAME这两场CTF,来帮助新生更好的入门安全。 + +下面是一些CTF领域写的不错的入门文章和平台,也可以根据文章内容进行学习~ + +### 入门文章 +CTF-Wiki:https://ctf-wiki.org/ +CTF快速入门手册:https://github.com/ProbiusOfficial/CTF-QuickStart + + +### 刷题平台 +攻防世界: https://adworld.xctf.org.cn/challenges/list +Bugku: https://ctf.bugku.com/ +ctfhub: https://www.ctfhub.com/#/index +NSSCTF: https://www.ctfer.vip/index diff --git a/7.Web开发入门/7.1.1基础部分.md b/7.网络应用开发/7.1.1.1基础部分.md similarity index 93% rename from 7.Web开发入门/7.1.1基础部分.md rename to 7.网络应用开发/7.1.1.1基础部分.md index c5766f2..deace25 100644 --- a/7.Web开发入门/7.1.1基础部分.md +++ b/7.网络应用开发/7.1.1.1基础部分.md @@ -45,13 +45,13 @@ 设计稿如下: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnVR5z4U8YlXZbc8beDNEHXc.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnVR5z4U8YlXZbc8beDNEHXc.jpg) #### 可能需要用到的图片资源 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnbigxAK5SbxiWuDHr1Ashne.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnbigxAK5SbxiWuDHr1Ashne.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnrqddPFusKhe0vZuzXJOosg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnrqddPFusKhe0vZuzXJOosg.png) #### 基本要求 @@ -93,9 +93,9 @@ ### 🎫TodoList -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnikdFX5WNml7sgtPMOJQiGh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnikdFX5WNml7sgtPMOJQiGh.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnFZwQVTUWkfsbNxYfJkgPDg.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnFZwQVTUWkfsbNxYfJkgPDg.png)
一些参考
@@ -121,7 +121,7 @@ - 实现不同设备屏幕尺寸的自适应 - 添加任务热力图(可以参考一下 GitHub 个人主页哦 🤔) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcncVQswB7ziUoV4LvEs35DAe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcncVQswB7ziUoV4LvEs35DAe.png) #### 可能涉及的知识点 diff --git a/7.Web开发入门/7.1.2进阶部分.md b/7.网络应用开发/7.1.1.2进阶部分.md similarity index 90% rename from 7.Web开发入门/7.1.2进阶部分.md rename to 7.网络应用开发/7.1.1.2进阶部分.md index 778e4ef..e4526d3 100644 --- a/7.Web开发入门/7.1.2进阶部分.md +++ b/7.网络应用开发/7.1.1.2进阶部分.md @@ -10,11 +10,11 @@ 如果你曾经用过助手的小程序,你可能会在首页看到这样的天气卡片: -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnTNJhtqw6Km24fKgAnjZtBS.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnTNJhtqw6Km24fKgAnjZtBS.png) 当然了,平时大家也会用到各种天气 APP -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnUuqMoTjiOH9NSdYx4GCGme.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnUuqMoTjiOH9NSdYx4GCGme.png) 那么,让我们动手实现一个天气卡片吧~ @@ -63,9 +63,9 @@ ## 🎶 音乐播放器 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnRaBolh8i2FkoIJW69a5g3e.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnRaBolh8i2FkoIJW69a5g3e.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnJ13CDzxp9lwEtGivTuJ4nh.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnJ13CDzxp9lwEtGivTuJ4nh.png) 相信你平时或多或少都会听音乐,那么你是喜欢用网易云还是 QQ 音乐呢?或者是系统自带的音乐播放器?不过,其实你也可以自己做一个音乐播放器,来满足你对听音乐这件事的所有幻想,听起来是不是很酷呢 😎~那么,来试试看吧! diff --git a/7.Web开发入门/7.1.3附录1:前端介绍(详细版).md b/7.网络应用开发/7.1.1.3附录1:前端介绍(详细版).md similarity index 100% rename from 7.Web开发入门/7.1.3附录1:前端介绍(详细版).md rename to 7.网络应用开发/7.1.1.3附录1:前端介绍(详细版).md diff --git a/7.Web开发入门/7.1.4附录2:大前端开发.md b/7.网络应用开发/7.1.1.4附录2:大前端开发.md similarity index 100% rename from 7.Web开发入门/7.1.4附录2:大前端开发.md rename to 7.网络应用开发/7.1.1.4附录2:大前端开发.md diff --git a/7.Web开发入门/7.1.5附录3:跨端开发.md b/7.网络应用开发/7.1.1.5附录3:跨端开发.md similarity index 93% rename from 7.Web开发入门/7.1.5附录3:跨端开发.md rename to 7.网络应用开发/7.1.1.5附录3:跨端开发.md index f136b61..f5cd32e 100644 --- a/7.Web开发入门/7.1.5附录3:跨端开发.md +++ b/7.网络应用开发/7.1.1.5附录3:跨端开发.md @@ -69,7 +69,7 @@ 它是基于WebView渲染,通过JS Bridge 把一部分系统能力开放给JS调用。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/235436487dsfhtwuytjyfj.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/235436487dsfhtwuytjyfj.png) WebView容器的工作原理是基于Web技术来实现界面和功能,通过将原生的接口封装、暴露给JavaScript调用,JavaScript编写的页面可以运行在系统自带的WebView中。这样做的优势是,对于前端开发者比较友好,可以很快地实现页面跨端,同时保留调用**原生的能力**,通过搭建桥接层和原生能力打通。但这种设计,跨端的能力受限于桥接层,当调用之前没有的原生能力时,就需要增加桥。另外,浏览器内核的渲染独立于系统组件,无法保证原生体验,**渲染的效果会差不少**。 @@ -80,7 +80,7 @@ WebView容器的工作原理是基于Web技术来实现界面和功能,通过 浏览器提供了一个容器,屏蔽了底层差异,提供了统一的 api(dom api),这样就可以实现同一份代码跑在不同平台的统一的容器里。这个容器叫做浏览器引擎,由 js 引擎、渲染引擎等构成。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/fdegetyjyrj.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/fdegetyjyrj.png) #### PWA 尽管PWA的出现不是为了“跨端”,但他们对于“跨端”的天然支持,能够让一套代码运行在PC、移动两端,就再一次产生了跨端设计实施的可能性。 @@ -107,7 +107,7 @@ PWA 是 Google 于 2016 年提出的概念,于 2017 年正式落地,于 2018 #### Electron -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/wettrjryju.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/wettrjryju.png) Electron 是使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序的框架,可构建出兼容 Mac、Windows 和 Linux 三个平台的应用程序。 @@ -123,7 +123,7 @@ Electron 的跨端原理并不难理解:它通过集成浏览器内核,使 #### React Native React Native 是一个由 Facebook 于2015年9月发布的一款开源的 JavaScript 框架,它可以让开发者使用 JavaScript 和 React 来开发跨平台的移动应用。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/eryyjyuj.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/eryyjyuj.png) React Native 的思路是最大化地复用前端的生态和 Native 的生态,和 WebView 容器的最大区别在于 View 的渲染体系。React Native 抛弃了低效的浏览器内核渲染,转而**使用自己的 DSL 生成中间格式**,然后映射到对应的平台,**渲染成平台的组件**。相对 WebView 容器,体验会有一定的提升。不过,渲染时需要 JavaScript 和原生之间通信,在有些场景可能会导致卡顿。另外就是,渲染还是在Native层,要求开发人员对Native有一定的熟悉度。 @@ -150,7 +150,7 @@ Flutter与上述Recat Native、WebView容器本质上都是不同的,它没有 微信小程序的渲染层与逻辑层分别由两个线程管理,渲染层的界面使用 webview 进行渲染;逻辑层采用 JSCore运行JavaScript代码。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/rtjyujyu.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/rtjyujyu.png) ## 类前端开发:拿过来吧你 @@ -166,7 +166,7 @@ Flutter与上述Recat Native、WebView容器本质上都是不同的,它没有 JS UI框架采用类HTML和CSS Web编程语言作为页面布局和页面样式的开发语言,页面业务逻辑则支持ECMAScript规范的JavaScript语言。JS UI框架提供的类Web编程范式,可以让开发者避免编写UI状态切换的代码,视图配置信息更加直观。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/3465ytyjyjy.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/3465ytyjyjy.png) ## 跨端不只是跨端:爱你的全世界 @@ -174,9 +174,9 @@ JS UI框架采用类HTML和CSS Web编程语言作为页面布局和页面样式 ## 什么样的场景可以跨端? 跨端应用能够真正推进下去,除了有技术保障外,还需要合适的需求场景,使用PC端的功能型产品主要是需要大屏带来的“效率”(办公、个人管理、教育)与“沉浸”(数据、金融、游戏、影视)体验。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ertehry.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ertehry.png) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ertjyunyunm.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ertjyunyunm.png) 依赖PC、移动双端进行经营管理的电商场景,也有很多内容适合跨端。 @@ -185,25 +185,25 @@ JS UI框架采用类HTML和CSS Web编程语言作为页面布局和页面样式 1. 双端基础组件设计规则对齐(对前端来说是同类组件API、属性对齐以及组件功能形态映射) -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/ewttrhjy.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/ewttrhjy.png) Select对应Picker 1. 布局响应规则(行列变化,聚合变化等); -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/20191118PGkkRz.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/20191118PGkkRz.jpg) 卡片布局的一种聚合变化 1. 交互形态响应规则(导航、交互模式等); -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/20191118aoefIO.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/20191118aoefIO.jpg) 表单型弹窗对应新页面 1. 不同场景的跨端策略,例如Dashboard页面的跨端应保证用户在首屏快速获取关键信息,下图的Bootstrap模板是一个错误示例,移动端的布局方式浪费首屏空间,降低用户获取关键信息的效率。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/20191118BrYZzg.jpg) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/20191118BrYZzg.jpg) Mobile first 不是唯一准则。进行具体场景的跨端设计时,我们会从两端场景出发重新对比分析用户的需求差异,明确体验的增强点与折损点。特别是电商中后台场景中:有些业务中用户的主阵地并不是在移动端,而是PC端,比如用户运营策略的设置;有些是两端分别承载不同的场景需求,比如任务的处理。 @@ -217,7 +217,7 @@ Mobile first 不是唯一准则。进行具体场景的跨端设计时,我们 Serverless字面意思是无服务,但并不代表再也不需要服务器了,而是指开发者不需要过多的考虑服务器的问题,计算资源作为服务出现而不是服务器的概念出现。 那么Serverlss,是对全部底层资源和操作的封装,让开发者专注于业务逻辑。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/gfhuewgfuiwe.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/gfhuewgfuiwe.png) Serverless = Faas (Function as a service) + Baas (Backend as a service) @@ -254,7 +254,7 @@ Serverless 带来的其实是前端研发模式上的颠覆。相对以往纯前 - 无需在代码内考虑高并发高可靠性,可以专注于业务 - 通过云函数实例的高并发能力,实现业务高并发 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/fhuieufsiofhei.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/fhuieufsiofhei.png) #### 自动弹性压缩 @@ -281,7 +281,7 @@ uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编 - 在Android平台,将.uts文件编译为kotlin代码 - 在iOS平台,将.uts文件编译为swift代码 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/uni-function-diagram.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/uni-function-diagram.png) 1. 区分页面和组件的区别:页面和组件的生命周期 2. 云函数、云数据库 @@ -298,12 +298,12 @@ uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编 1. Frameless:桌面端不仅仅只有方框矩形,而是想你所想。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/df77f01037fc4ceb8d4aa8f06168fc95~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/df77f01037fc4ceb8d4aa8f06168fc95~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif) ## 参考作业 尝试使用某种跨端框架和云函数,实现一个查看课表应用,形式不限。推荐使用hdu-lis包拿到数据。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/Snipaste_2023-04-22_18-57-44.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/Snipaste_2023-04-22_18-57-44.png) diff --git a/7.Web开发入门/7.1前端部分.md b/7.网络应用开发/7.1.1前端部分.md similarity index 100% rename from 7.Web开发入门/7.1前端部分.md rename to 7.网络应用开发/7.1.1前端部分.md diff --git a/7.Web开发入门/7.2.1基础部分.md b/7.网络应用开发/7.1.2.1基础部分.md similarity index 100% rename from 7.Web开发入门/7.2.1基础部分.md rename to 7.网络应用开发/7.1.2.1基础部分.md diff --git a/7.Web开发入门/7.2.2进阶部分.md b/7.网络应用开发/7.1.2.2进阶部分.md similarity index 95% rename from 7.Web开发入门/7.2.2进阶部分.md rename to 7.网络应用开发/7.1.2.2进阶部分.md index 0af5400..009baea 100644 --- a/7.Web开发入门/7.2.2进阶部分.md +++ b/7.网络应用开发/7.1.2.2进阶部分.md @@ -2,7 +2,7 @@ 请先通读后端基础任务文档: -[基础部分](./7.2.1%E5%9F%BA%E7%A1%80%E9%83%A8%E5%88%86.md) +[基础部分](./7.1.2.1基础部分.md) 你可以清晰地感受到,基础任务并不是一个生产可用的服务,它仅可作为一个 DEMO 用于演示。尝试为它的生产部署之路添砖加瓦! diff --git a/7.Web开发入门/7.2后端部分.md b/7.网络应用开发/7.1.2后端部分.md similarity index 100% rename from 7.Web开发入门/7.2后端部分.md rename to 7.网络应用开发/7.1.2后端部分.md diff --git a/7.Web开发入门/7.Web开发入门.md b/7.网络应用开发/7.1WEB开发入门.md similarity index 94% rename from 7.Web开发入门/7.Web开发入门.md rename to 7.网络应用开发/7.1WEB开发入门.md index 7004859..e675321 100644 --- a/7.Web开发入门/7.Web开发入门.md +++ b/7.网络应用开发/7.1WEB开发入门.md @@ -1,4 +1,4 @@ -# 7.Web 开发入门 +# 7.网络应用开发入门 > 作者:aFlyBird0 @@ -70,7 +70,7 @@ 我们这里就来个极简版吧: -1. 最终形态是网站(用户访问 [http://message.srt.com](http://message.srt.com) 就能参与留言)。 +1. 最终形态是网站(用户访问 [https://message.hdu-cs.wiki](https://message.hdu-cs.wiki) 就能参与留言,这个网站是虚构的 不存在哦~)。 2. 留言的时候需要填写昵称(不需要注册)、留言内容(只支持纯文字)。 #### 2.3.2 前端 @@ -107,7 +107,7 @@ A:理论上可以。但一般不会这么做(除了一些实时的网络聊 登登登,后端登场! -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnorsQ6py7AU0LsCtn4f5LSd.png) +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnorsQ6py7AU0LsCtn4f5LSd.png) 解释一下: @@ -136,7 +136,7 @@ A:理论上可以。但一般不会这么做(除了一些实时的网络聊 1. 测试 2. 如果程序出现了 bug,调试程序 -3. 没问题之后需要把写好的后端部署到服务器上。即放到一个互联网公网能访问的地方,给出前端地址(也就是 [http://message.srt.com](http://message.srt.com))同时后端也要运行起来,处理后台逻辑。 +3. 没问题之后需要把写好的后端部署到服务器上。即放到一个互联网公网能访问的地方,给出前端地址(也就是 [https://message.hdu-cs.wiki](https://message.hdu-cs.wiki))同时后端也要运行起来,处理后台逻辑。 4. 写项目文档,防止后面接手的人看不懂你写的项目(甚至不写文档可能过几天你自己都看不懂了) 5. 持续维护项目(修复 bug,开发新功能) diff --git a/7.网络应用开发/7.网络应用开发入门.md b/7.网络应用开发/7.网络应用开发入门.md new file mode 100644 index 0000000..b4618e7 --- /dev/null +++ b/7.网络应用开发/7.网络应用开发入门.md @@ -0,0 +1,3 @@ +# 7.网络应用开发入门 + +本章节原本的名字是「WEB开发入门」,后来发现这个标题涵盖的范围还是小了点。因为网络应用开发不仅仅涉及到前端的网页设计和开发、后端数据库操作等方面,还包括云原生的应用部署和管理等等一系列相关知识。因此,我们拓展了这一章节的内容,以便读者可以全面了解网络应用开发的各个方面。 \ No newline at end of file diff --git a/7.Web开发入门/static/20191118BrYZzg.jpg b/7.网络应用开发/static/20191118BrYZzg.jpg similarity index 100% rename from 7.Web开发入门/static/20191118BrYZzg.jpg rename to 7.网络应用开发/static/20191118BrYZzg.jpg diff --git a/7.Web开发入门/static/20191118PGkkRz.jpg b/7.网络应用开发/static/20191118PGkkRz.jpg similarity index 100% rename from 7.Web开发入门/static/20191118PGkkRz.jpg rename to 7.网络应用开发/static/20191118PGkkRz.jpg diff --git a/7.Web开发入门/static/20191118aoefIO.jpg b/7.网络应用开发/static/20191118aoefIO.jpg similarity index 100% rename from 7.Web开发入门/static/20191118aoefIO.jpg rename to 7.网络应用开发/static/20191118aoefIO.jpg diff --git a/7.Web开发入门/static/235436487dsfhtwuytjyfj.png b/7.网络应用开发/static/235436487dsfhtwuytjyfj.png similarity index 100% rename from 7.Web开发入门/static/235436487dsfhtwuytjyfj.png rename to 7.网络应用开发/static/235436487dsfhtwuytjyfj.png diff --git a/7.Web开发入门/static/3465ytyjyjy.png b/7.网络应用开发/static/3465ytyjyjy.png similarity index 100% rename from 7.Web开发入门/static/3465ytyjyjy.png rename to 7.网络应用开发/static/3465ytyjyjy.png diff --git a/7.Web开发入门/static/Snipaste_2023-04-22_18-57-44.png b/7.网络应用开发/static/Snipaste_2023-04-22_18-57-44.png similarity index 100% rename from 7.Web开发入门/static/Snipaste_2023-04-22_18-57-44.png rename to 7.网络应用开发/static/Snipaste_2023-04-22_18-57-44.png diff --git a/7.Web开发入门/static/boxcnFZwQVTUWkfsbNxYfJkgPDg.png b/7.网络应用开发/static/boxcnFZwQVTUWkfsbNxYfJkgPDg.png similarity index 100% rename from 7.Web开发入门/static/boxcnFZwQVTUWkfsbNxYfJkgPDg.png rename to 7.网络应用开发/static/boxcnFZwQVTUWkfsbNxYfJkgPDg.png diff --git a/7.Web开发入门/static/boxcnJ13CDzxp9lwEtGivTuJ4nh.png b/7.网络应用开发/static/boxcnJ13CDzxp9lwEtGivTuJ4nh.png similarity index 100% rename from 7.Web开发入门/static/boxcnJ13CDzxp9lwEtGivTuJ4nh.png rename to 7.网络应用开发/static/boxcnJ13CDzxp9lwEtGivTuJ4nh.png diff --git a/7.Web开发入门/static/boxcnRaBolh8i2FkoIJW69a5g3e.png b/7.网络应用开发/static/boxcnRaBolh8i2FkoIJW69a5g3e.png similarity index 100% rename from 7.Web开发入门/static/boxcnRaBolh8i2FkoIJW69a5g3e.png rename to 7.网络应用开发/static/boxcnRaBolh8i2FkoIJW69a5g3e.png diff --git a/7.Web开发入门/static/boxcnTNJhtqw6Km24fKgAnjZtBS.png b/7.网络应用开发/static/boxcnTNJhtqw6Km24fKgAnjZtBS.png similarity index 100% rename from 7.Web开发入门/static/boxcnTNJhtqw6Km24fKgAnjZtBS.png rename to 7.网络应用开发/static/boxcnTNJhtqw6Km24fKgAnjZtBS.png diff --git a/7.Web开发入门/static/boxcnUuqMoTjiOH9NSdYx4GCGme.png b/7.网络应用开发/static/boxcnUuqMoTjiOH9NSdYx4GCGme.png similarity index 100% rename from 7.Web开发入门/static/boxcnUuqMoTjiOH9NSdYx4GCGme.png rename to 7.网络应用开发/static/boxcnUuqMoTjiOH9NSdYx4GCGme.png diff --git a/7.Web开发入门/static/boxcnVR5z4U8YlXZbc8beDNEHXc.jpg b/7.网络应用开发/static/boxcnVR5z4U8YlXZbc8beDNEHXc.jpg similarity index 100% rename from 7.Web开发入门/static/boxcnVR5z4U8YlXZbc8beDNEHXc.jpg rename to 7.网络应用开发/static/boxcnVR5z4U8YlXZbc8beDNEHXc.jpg diff --git a/7.Web开发入门/static/boxcnbigxAK5SbxiWuDHr1Ashne.png b/7.网络应用开发/static/boxcnbigxAK5SbxiWuDHr1Ashne.png similarity index 100% rename from 7.Web开发入门/static/boxcnbigxAK5SbxiWuDHr1Ashne.png rename to 7.网络应用开发/static/boxcnbigxAK5SbxiWuDHr1Ashne.png diff --git a/7.Web开发入门/static/boxcncVQswB7ziUoV4LvEs35DAe.png b/7.网络应用开发/static/boxcncVQswB7ziUoV4LvEs35DAe.png similarity index 100% rename from 7.Web开发入门/static/boxcncVQswB7ziUoV4LvEs35DAe.png rename to 7.网络应用开发/static/boxcncVQswB7ziUoV4LvEs35DAe.png diff --git a/7.Web开发入门/static/boxcnikdFX5WNml7sgtPMOJQiGh.png b/7.网络应用开发/static/boxcnikdFX5WNml7sgtPMOJQiGh.png similarity index 100% rename from 7.Web开发入门/static/boxcnikdFX5WNml7sgtPMOJQiGh.png rename to 7.网络应用开发/static/boxcnikdFX5WNml7sgtPMOJQiGh.png diff --git a/7.Web开发入门/static/boxcnorsQ6py7AU0LsCtn4f5LSd.png b/7.网络应用开发/static/boxcnorsQ6py7AU0LsCtn4f5LSd.png similarity index 100% rename from 7.Web开发入门/static/boxcnorsQ6py7AU0LsCtn4f5LSd.png rename to 7.网络应用开发/static/boxcnorsQ6py7AU0LsCtn4f5LSd.png diff --git a/7.Web开发入门/static/boxcnrqddPFusKhe0vZuzXJOosg.png b/7.网络应用开发/static/boxcnrqddPFusKhe0vZuzXJOosg.png similarity index 100% rename from 7.Web开发入门/static/boxcnrqddPFusKhe0vZuzXJOosg.png rename to 7.网络应用开发/static/boxcnrqddPFusKhe0vZuzXJOosg.png diff --git a/7.Web开发入门/static/df77f01037fc4ceb8d4aa8f06168fc95~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif b/7.网络应用开发/static/df77f01037fc4ceb8d4aa8f06168fc95~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif similarity index 100% rename from 7.Web开发入门/static/df77f01037fc4ceb8d4aa8f06168fc95~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif rename to 7.网络应用开发/static/df77f01037fc4ceb8d4aa8f06168fc95~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif diff --git a/7.Web开发入门/static/ertehry.png b/7.网络应用开发/static/ertehry.png similarity index 100% rename from 7.Web开发入门/static/ertehry.png rename to 7.网络应用开发/static/ertehry.png diff --git a/7.Web开发入门/static/ertjyunyunm.png b/7.网络应用开发/static/ertjyunyunm.png similarity index 100% rename from 7.Web开发入门/static/ertjyunyunm.png rename to 7.网络应用开发/static/ertjyunyunm.png diff --git a/7.Web开发入门/static/eryyjyuj.png b/7.网络应用开发/static/eryyjyuj.png similarity index 100% rename from 7.Web开发入门/static/eryyjyuj.png rename to 7.网络应用开发/static/eryyjyuj.png diff --git a/7.Web开发入门/static/ewttrhjy.png b/7.网络应用开发/static/ewttrhjy.png similarity index 100% rename from 7.Web开发入门/static/ewttrhjy.png rename to 7.网络应用开发/static/ewttrhjy.png diff --git a/7.Web开发入门/static/fdegetyjyrj.png b/7.网络应用开发/static/fdegetyjyrj.png similarity index 100% rename from 7.Web开发入门/static/fdegetyjyrj.png rename to 7.网络应用开发/static/fdegetyjyrj.png diff --git a/7.Web开发入门/static/fhuieufsiofhei.png b/7.网络应用开发/static/fhuieufsiofhei.png similarity index 100% rename from 7.Web开发入门/static/fhuieufsiofhei.png rename to 7.网络应用开发/static/fhuieufsiofhei.png diff --git a/7.Web开发入门/static/gfhuewgfuiwe.png b/7.网络应用开发/static/gfhuewgfuiwe.png similarity index 100% rename from 7.Web开发入门/static/gfhuewgfuiwe.png rename to 7.网络应用开发/static/gfhuewgfuiwe.png diff --git a/7.Web开发入门/static/rtjyujyu.png b/7.网络应用开发/static/rtjyujyu.png similarity index 100% rename from 7.Web开发入门/static/rtjyujyu.png rename to 7.网络应用开发/static/rtjyujyu.png diff --git a/7.Web开发入门/static/uni-function-diagram.png b/7.网络应用开发/static/uni-function-diagram.png similarity index 100% rename from 7.Web开发入门/static/uni-function-diagram.png rename to 7.网络应用开发/static/uni-function-diagram.png diff --git a/7.Web开发入门/static/wettrjryju.png b/7.网络应用开发/static/wettrjryju.png similarity index 100% rename from 7.Web开发入门/static/wettrjryju.png rename to 7.网络应用开发/static/wettrjryju.png diff --git a/8.基础学科/8.2定积分.md b/8.基础学科/8.2定积分.md deleted file mode 100644 index 55aabf3..0000000 --- a/8.基础学科/8.2定积分.md +++ /dev/null @@ -1,116 +0,0 @@ -本文主要讲解定积分在计算时运用的各种化简技巧。 -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/lake_card_mindmap.png) - -# 一:由不定积分计算定积分 - - -## 1.1原函数成立区间的问题 - -注意:由不定积分推导出的原函数在定积分的区间不一定成立!!!
对于大多数定积分题目,可直接由代入不定积分的结论。 - - -# 二:利用对称性化简定积分 - - -## 2.1奇偶对称和周期性 - -![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/picture1.png) -
-命题1:设函数f在区间$[0,a]$可积,且关于区间中点$\frac{a}{2}$为奇函数,即对于$x\in[0,a]$,有$f(x)=-f(a-x)$,则成立
$\int_0^af(x)dx=0$。
命题2:设函数f在区间$[0,a]$可积,且关于区间中点$\frac{a}{2}$为偶函数,即对于$x\in[0,a]$,有$f(x)=f(a-x)$, 则成立
$\int_0^af(x)dx=2\int_0^{\frac{a}{2}}f(x)dx$。
命题3:若函数f为定义在$-\infty$\int_a^{a+T}f(x)dx=\int_0^Tf(x)dx$
**_Proof:_**
将积分区间拆成多段,带入上文对称公式,之后换元即可,证明的本质是统一了积分区间。
_**Example:**
$\int_0^{2\pi}\frac{dx}{sin^4x+cos^4x}$ - -利用:$sin^4x+cos^4x=(sin^2x+cos^2x)^2-2sin^2xcos^2x=1-\frac{1}{2}sin^2(2x)=\frac{1}{2}(1+cos^2(2x))$,周期为$\pi/2$
两次利用命题3,将积分区间化简为$[0,\frac{\pi}{2}]$。由于被积函数关于$\pi/4$偶对称,利用命题2,可将积分区间化简为$[0,\frac{\pi}{4}]$,故原式等于:
$4\int_0^{\frac{\pi}{2}}\frac{dx}{sin^4x+cos^4x}=8\int_0^{\frac{\pi}{4}}\frac{dx}{sin^4x+cos^4x}=16\int_0^{\frac{\pi}{4}}\frac{dx}{1+cos^2(2x)}=8\int_0^{\frac{\pi}{2}}\frac{dt}{1+cos^2(t)}=8\int_0^{\frac{\pi}{2}}\frac{d(tant)}{2+tan^2t}$
$=8\int_{0}^{+\infty}\frac{du}{u^2+2}=4\sqrt{2}arctan(\frac{u}{\sqrt{2}})|_0^{+\infty}=2\sqrt{2}\pi$_ - -## 2.2积分区间的缩小 - -命题4:设f在$[0,a]$上可积,则成立$\int_0^af(x)dx=\int_0^{\frac{a}{2}}[f(x)+f(a-x)]dx$,此为命题1,2的推广形式。
可推广为:$\int_a^bf(x)dx=\int_a^{\frac{a+b}{2}}[f(x)+f(a+b-x)]dx$,该命题在$f(x)+f(a+b-x)$更好积分时使用。
**_Proof:_
反向利用命题2,$\int_0^af(x)dx=\frac{1}{2}(\int_0^af(x)dx+\int_0^af(a-x)dx)=\int_0^{\frac{a}{2}}[f(x)+f(a-x)]dx$
命题5:若f(x)在闭区间$[0,1]$上连续,则
(a)$\int_0^{\frac{\pi}{2}}f(sinx)dx=\int_0^{\frac{\pi}{2}}f(cosx)dx$
(b)$\int_0^{\pi}xf(sinx)dx=\frac{\pi}{2}\int_0^{\pi}f(sinx)dx$
(c)$\int_0^{\pi}f(sinx)dx=2\int_0^{\frac{\pi}{2}}f(sinx)dx$
**_Proof:_**
(a)$x=\pi/2-t$,(b)$x=\pi-t$,(c)$t=x-\pi/2$
也可由命题4直接推出,如对于(b)
$\int_0^{\pi}(x-\pi/2)f(sinx)dx=\int_0^{\frac{\pi}{2}}(x-\pi/2+\pi-x-\pi/2)f(sinx)dx=0$
_**Example1:**_
(a)$\int_0^{\pi/2}\frac{sinx}{sinx+cosx}dx$    (b)$\int_0^{\pi/2}ln(sinx)dx$    (c)$\int_0^{\pi/2}ln(tanx)dx$
(d)$\int_0^{\pi/2}\frac{1}{1+tan^ax}dx$       (e)$\int_0^{\pi}\frac{xsinx}{1+cos^2x}dx$    (f)$\int_0^1\frac{lnx}{\sqrt{1-x^2}}dx$
例如,对于b,利用命题4,$\int_0^{\frac{\pi}{4}}[ln(sin(x))+ln(cos(x))]dx=\int_0^{\frac{\pi}{4}}[ln(sin(2x)/2]dx$
$=\int_0^{\frac{\pi}{4}}[ln(sin(2x))-ln(2)]dx=\frac{1}{2}\int_0^{\frac{\pi}{2}}ln(sin(x))dx-\frac{\pi}{4}ln2=-\frac{\pi}{2}ln2$
_**Example2:**_
设$f(x)$在$[a,b]$上连续且单调增加,证明:$\int_a^bxf(x)dx\geq\frac{a+b}{2}\int_a^bf(x)dx$
$\int_a^b(x-\frac{a+b}{2})f(x)dx=\int_a^{\frac{a+b}{2}}[(x-\frac{a+b}{2})f(x)+(a+b-x-\frac{a+b}{2})f(a+b-x)]dx$
$=\int_a^{\frac{a+b}{2}}(x-\frac{a+b}{2})[f(x)-f(a+b-x)]dx$
因为$f(x)$单增,所以$f(x)-f(a+b-x)\leq0$,原式大于等于0,证毕。 - -# 三:利用递归表达式化简定积分 - -注意:全部利用分部积分构造递推表达式,使得分部积分脱出积分号的项为0,对积分内指数进行降阶即可。 - -## 3.1高阶三角函数 -$I_0=\int_0^{\pi/2}dx=\pi/2$,$I_1=\int_0^{\pi/2}sinxdx=1$,$I_2=\int_0^{\pi/2}sin^2xdx=\pi/4$
思考:如果$I_n$为一数列$I_n=\int_0^{\pi/2}sin^nxdx$,请问
(1)$I_n$的递推表达式为?
(2)$I_n$的通项表达式为?
(3)$I_n(n\to\infty)$的极限为?
(4)求$\lim_{k\to\infty}\frac{I_{2k+1}}{I_{2k}}$?
答案:
(1),(2)
-![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/picture2.png) - -推论:由命题4得,对cosx做上述操作得到结果相同。
(3)$I_n(n\to\infty)$的极限为0,如图为$sin^n(x)在[0,1]$的函数图像,因为$sin^n(x)![save.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564801370246-b0067524-94bb-4de3-9d1d-fde22a35d9bf.png#align=left&display=inline&height=158&name=save.png&originHeight=400&originWidth=650&size=32867&status=done&style=none&width=256)
证明:
法一:积分的有界性
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564497996832-07ba349b-e630-4e23-a0ae-781051191e00.png#align=left&display=inline&height=165&name=image.png&originHeight=295&originWidth=596&size=39253&status=done&style=none&width=333)
这里第二项趋于0是因为$sin^n(x)\to0$,从图中也可以观察出来。
法二:
$if\ n=2k$
$I_{2k}=\frac{(2k-1)!!}{(2k)!!}=\frac{(2k-1)\cdot(2k-3)\cdot\cdot\cdot5\cdot3\cdot1}{(2k)(2k-2)\cdot\cdot\cdot6\cdot4\cdot2}\cdot\frac{\pi}{2}$
$0$\therefore I_{2k}\to0$
$\therefore I_{2k+1}=\int_0^{\pi/2}sinx\cdot sin^{2k}xdx=sinx_0\cdot\int_0^{\pi/2}sin^{2k}xdx\to0$
$\therefore I_{n}\to0$
(4)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564147108664-81bb7241-200a-4d44-bc2c-d054f460cf32.png#align=left&display=inline&height=87&name=image.png&originHeight=202&originWidth=1071&size=42020&status=done&style=none&width=462)
维基百科:[沃利斯乘积](https://zh.wikipedia.org/wiki/%E6%B2%83%E5%88%A9%E6%96%AF%E4%B9%98%E7%A7%AF)
3B1B:[沃利斯乘积的几何解释](https://www.bilibili.com/video/av22808876/) - -## 3.2组合三角函数 -注意:此类题一律用分部积分画出和原被积函数相关的表达式,但不一定是相等,以实现得到递推关系降阶的目的。
_**Example:**_
求 $L_n=\int_0^{\pi/2}cos^n(x)cos(nx)dx$ 的递归表达式和通项
$=\frac{1}{n}\int_0^{\pi/2}cos^n(x)dsin(nx)=\frac{1}{n}(cos^n(x)sin(nx)|_0^{\pi/2}-\frac{1}{n}\int_0^{\pi/2}nsin(nx)cos^{n-1}(x)(-sin(x))dx$
$=\int_0^{\pi/2}cos^{n-1}(x)sin(nx)sin(x)dx$
$2L_n=\int_0^{\pi/2}[cos^{n-1}(x)sin(nx)sin(x)+cos^n(x)cos(nx)]dx=\int_0^{\pi/2}cos^{n-1}(x)(cos(nx)cos(x)+sin(nx)sin(x))dx$$=\int_0^{\pi/2}cos^{n-1}(x)cos((n-1)x)dx=L_{n-1}$
所以   $L_n=\frac{1}{2}L_{n-1}$   而$L_1=\int_0^{\pi/2}cos(x)cos(x)dx=\pi/4$
所以数列的通项表达式为:$L_n=\frac{\pi}{2^{n+1}}$ - -## 3.3其他函数 -_**Example:**_
求 $I_n=\int_0^1x^m(ln(x))^ndx$ 的递推表达式和通项。 - -![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564241319233-796ecfee-2ddd-4667-80f4-b73cd125e934.png#align=left&display=inline&height=169&name=image.png&originHeight=295&originWidth=513&size=22668&status=done&style=none&width=294)
_**Exercise:**_
_**![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564241435483-8be6a610-4c85-4cf1-9462-2098bcfa62f3.png#align=left&display=inline&height=130&name=image.png&originHeight=228&originWidth=807&size=41698&status=done&style=none&width=461.14285714285717)**(3)求$a_n$的极限
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564744389393-b8440935-0e4b-4929-9051-0fdd2f777195.png#align=left&display=inline&height=202&name=image.png&originHeight=404&originWidth=715&size=151214&status=done&style=none&width=357.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564744402464-00a0d4fb-b389-4698-8ff3-10d3636ec0d9.png#align=left&display=inline&height=85&name=image.png&originHeight=169&originWidth=761&size=67350&status=done&style=none&width=380.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564744431484-9a434d95-daa6-41ae-a1e1-d0e6195c320f.png#align=left&display=inline&height=183&name=image.png&originHeight=366&originWidth=771&size=159135&status=done&style=none&width=385.5)
(3)结果为0,证法和高阶三角函数一样。 - -# 四:利用级数对定积分进行估值 - - -## 4.1常用的几种级数 -基本的思路是:把函数做泰勒展开,交换积分和求和符号,对每一项幂函数进行积分,最后合并即可。
下面给出三个重要常数: - -(a)$\sum_{n=1}^{\infty}\frac{1}{n^2}=\frac{\pi^2}{6}$    (b)$\sum_{n=1}^{\infty}\frac{(-1)^{n-1}}{n}=ln2$   (c)$\sum_{n=1}^{\infty}\frac{(-1)^{n-1}}{(2m-1)^2}\approx0.92$ - -此类级数可由初等函数泰勒展开后将x=1或x=-1代入得到。 - -这里给出简单的证明:
(a)$\sum_{n=1}^{\infty}\frac{1}{n^2}=\frac{\pi^2}{6}$
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564242905610-5bf4dd0a-0a52-4b38-8e7d-485eed0eb53d.png#align=left&display=inline&height=647&name=image.png&originHeight=1132&originWidth=1839&size=226683&status=done&style=none&width=1050.857142857143)
(b)$\sum_{n=1}^{\infty}\frac{(-1)^{n-1}}{n}=ln2$ 
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564243200904-46e01aa2-ff5f-4e91-96c6-24ffac42527b.png#align=left&display=inline&height=120&name=image.png&originHeight=254&originWidth=712&size=47782&status=done&style=none&width=337)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564243217478-d04ddecb-e9a1-4b7d-965a-e574fc3ac5d6.png#align=left&display=inline&height=155&name=image.png&originHeight=387&originWidth=658&size=51785&status=done&style=none&width=264) - -![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564243252320-7f8fe6d6-ee10-491f-903c-e88ec528e339.png#align=left&display=inline&height=58&name=image.png&originHeight=101&originWidth=821&size=16857&status=done&style=none&width=469.14285714285717)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564243274256-af7edc4a-1c6b-4dbe-ac11-9d21eeec71df.png#align=left&display=inline&height=76&name=image.png&originHeight=133&originWidth=645&size=27056&status=done&style=none&width=368.57142857142856)
(c)$\sum_{n=1}^{\infty}\frac{(-1)^{n-1}}{(2m-1)^2}\approx0.92$
$\int_0^1\frac{arctan(x)}{x}dx=\int_0^1\frac{1}{x}\sum_{n=0}^{\infty}(-1)^n\frac{1}{2n+1}x^{2n+1}dx=\int_0^1\sum_{n=0}^{\infty}(-1)^n\frac{1}{2n+1}x^{2n}dx=\sum_{n=0}^{\infty}(-1)^n\frac{1}{2n+1}\int_0^1x^{2n}dx$$\sum_{n=0}^{\infty}(-1)^n\frac{1}{(2n+1)^2}x^{2n+1}|_0^1=\sum_{n=0}^{\infty}(-1)^n\frac{1}{(2n+1)^2}=G\approx0.92$ (这可以利用计算机对此积分估值得到) - -在计算积分时,通常通过上述思路把积分化为上述重要常数,进而直接得出结果。 - - -## 4.2将定积分转换为级数 -_**Example1:重要常数(a)**_
$\int_0^1ln(x)ln(1-x)dx$
答案:
[视频链接](https://www.youtube.com/watch?v=q9jbmEGClSk&list=PLj7p5OoL6vGzJxJU1seMmj-5CBNhMYStQ&index=8)
_**Example2:重要常数(c)**_
(a) $\int_0^{\pi/4}ln(tan(x))dx$       (b)  $\int_0^{\pi/4}ln(cot(x))dx$
对于(a),令$t=tan(x)$ ,换元后可得:
$\int_0^1ln(t)d arctan(t)=[ln(t)arctan(t)]|_0^1-\int_0^1arctant\frac{dt}{t}=-\int_0^1arctant\frac{dt}{t}=-G\approx-0.92$ - - -# 五:特殊积分 - - -## 5.1伽马函数 -![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564245497241-6c16b905-d759-4bd8-af5d-db0cabfc0046.png#align=left&display=inline&height=190&name=image.png&originHeight=333&originWidth=1344&size=87735&status=done&style=none&width=768)
维基百科点击下方链接:
[WIKI百科](https://zh.wikipedia.org/wiki/%CE%93%E5%87%BD%E6%95%B0)
下面为详细的视频教程
1:定义伽马函数
[视频链接](https://www.youtube.com/watch?v=L4Trz6pFut4&t=21s)
2:$(\frac{1}{2})!$
[视频链接](https://www.youtube.com/watch?v=dBmApl6gkII&t=5s)
3:$(-1)!$
[视频链接](https://www.youtube.com/watch?v=MfP2FQPBdHI&t=294s)
4:$n!!$
[视频链接](https://www.youtube.com/watch?v=imcooZyo4vE) - -## 5.2分段函数积分 -此类题目的关键是原函数的连续性要求,通过待定系数求解,具体见不定积分中的[特殊积分部分](https://www.yuque.com/uhhida/tcgb6r/dg7du1)。 - -## 5.3变限积分 -形如$I(x)=\int_a^xf(t)dt$ 的积分叫做变限积分,他的本质是一个自变量在积分限的函数。
变限积分的求导法则尤其重要。此类题目需要扎实的数学分析思想,极其易错,具体内容见[积分证明框架](https://www.yuque.com/uhhida/tcgb6r/pcc7t2)。 - -## 5.4反常积分 -具体内容见[积分证明框架](https://www.yuque.com/uhhida/tcgb6r/pcc7t2) - -# 六:定积分的应用 -![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564724099303-6e2cfef5-7f4f-46e6-9a00-3632de75a170.png#align=left&display=inline&height=40&name=image.png&originHeight=80&originWidth=420&size=14148&status=done&style=none&width=210)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564724119486-04a2024a-c37c-4301-864a-3d9c834a9a9e.png#align=left&display=inline&height=183&name=image.png&originHeight=482&originWidth=1078&size=80537&status=done&style=none&width=410)
我们可以看到定积分的本质就是微元法取极限,所以一些几何和物理问题都可以用微元法的思想解决。
_**Example1:**_
已知一段半圆弧电荷密度为+1,计算圆心处的电场强度。
![fullsizerender.jpg](https://cdn.nlark.com/yuque/0/2019/jpeg/422826/1564726073432-5b1cdc3e-832e-4bba-a49d-9393ac0851d9.jpeg#align=left&display=inline&height=188&name=fullsizerender.jpg&originHeight=661&originWidth=668&size=149950&status=done&style=none&width=190)
注意,这类题目直接用几何解法更快,由库仑定律得,两段对称的微弧对圆心的电场作用为:
$\Delta E=2\Delta E'cos\theta=\frac{2k\Delta lcos\theta}{R^2}=\frac{2k\Delta r}{R^2}$
$\Delta r$代表上图小三角形垂直部分,$\sum \Delta r=R$ ,所以:
$E=\sum\Delta E=\frac{2k}{R^2}\sum\Delta r=\frac{2k}{R}$
_**Example2:**_
我们可以利用微元法找到极坐标的面积公式
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564728031738-6389fbcd-0f0d-4d82-b000-d792baa913a4.png#align=left&display=inline&height=492&name=image.png&originHeight=984&originWidth=1287&size=352109&status=done&style=none&width=643.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564728172614-53554ec7-2afc-4641-80f7-dfb743a52cbf.png#align=left&display=inline&height=168&name=image.png&originHeight=335&originWidth=1248&size=112129&status=done&style=none&width=624) - -## 6.1几何问题 - -#### 6.1.1向量簇 -请下载:[New horizons in geometry(几何新视野).pdf](https://www.yuque.com/attachments/yuque/0/2019/pdf/422826/1564708063142-a6a603c9-ef19-42c5-bbac-3a746583ac46.pdf?_lake_card=%7B%22uid%22%3A%22rc-upload-1564707962520-4%22%2C%22src%22%3A%22https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2019%2Fpdf%2F422826%2F1564708063142-a6a603c9-ef19-42c5-bbac-3a746583ac46.pdf%22%2C%22name%22%3A%22New%20horizons%20in%20geometry(%E5%87%A0%E4%BD%95%E6%96%B0%E8%A7%86%E9%87%8E).pdf%22%2C%22size%22%3A9849775%2C%22type%22%3A%22application%2Fpdf%22%2C%22ext%22%3A%22pdf%22%2C%22progress%22%3A%7B%22percent%22%3A0%7D%2C%22status%22%3A%22done%22%2C%22percent%22%3A0%2C%22id%22%3A%227fZdG%22%2C%22card%22%3A%22file%22%7D)阅读第一章。
这里只讲一个拓扑定理:切线向量扫过的面积等于将这些向量在不改变方向和长度的情况下,将所有的向量尾部接到一起时所组成的图形的面积相等。即切线扫过的面积等于切线簇的面积,如图所示。
![1.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564563618443-10927c87-f8b6-4721-a937-1cad65a45ffc.png#align=left&display=inline&height=270&name=1.png&originHeight=440&originWidth=591&size=68793&status=done&style=none&width=363)
想象一辆自行车,其尾部车轮始终与某一闭合轨迹相切,也就是骑了一圈,那么无论骑行轨迹如何,自行车车身划过的面积始终不变。如上图所示,将一簇切线在不改变方向和长度的情况下尾部连接在一起,他们所组成的形状面积和原来扫过的面积相同,且原来图形的形状可以任意。
和开普勒第二定律及椭圆面积的关系:[视频链接](https://www.bilibili.com/video/av28012188)
_**Example3:**_
利用该定理证明$\int_{-\infty}^{x}e^{t/b}dt=be^{x/b}$
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564723539303-473f82f6-ae9d-4349-9888-bee69fe5358e.png#align=left&display=inline&height=161&name=image.png&originHeight=322&originWidth=574&size=32121&status=done&style=none&width=287)
显然,所有切线构成的三角形底边长度都是1,把所有的切线全部放到黄色三角形内,尾部连接在一起,就得到积分的面积是两倍三角形的面积,即$be^{x/b}$。
_**Example4:**_
利用该定理求摆线下方的面积。
![](https://cdn.nlark.com/yuque/0/2019/gif/422826/1564564061025-8772fb4c-acf7-4304-941f-7978e4dc58a8.gif#align=left&display=inline&height=200&originHeight=200&originWidth=400&size=0&status=done&style=none&width=400)
摆线相关知识点击:[维基百科](https://zh.wikipedia.org/wiki/%E6%91%86%E7%BA%BF)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564746231254-8815eda2-4876-44ed-a2b6-12118a04393d.png#align=left&display=inline&height=188&name=image.png&originHeight=467&originWidth=1498&size=106153&status=done&style=none&width=604)
由于PT垂直于PC(在圆内),又因为点P在每个瞬时相对于点C做圆周运动,所以PT必然是点P的切向运动方向,所以PT也是摆线的切线,DOT的面积(及切线扫过的面积)等于右图中切线簇的面积(将所有切线平移到点T)。更具体的说,圆在运动时,点P划过了一段圆弧,在每一个中间点,都可以做线段PT,线段PT既扫过了DOT,也同时覆盖了T'P'C',故两者面积相等。
当圆旋转一周时,切线划过了整个摆线上方的面积,这面积等于切线簇的面积$\pi R^2$,而整个矩形的面积是$2\pi R\cdot 2R=4\pi R^2$,所以摆线下方的面积为$4\pi R^2-\pi R^2=3\pi R^2$。
利用参数方程的证明方法见下文。 - -#### 6.1.2体积 -这里依然是微元法,我们讲两种求旋转体体积的方法:切片法和圆柱法
**切片法:**
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564728579605-5d9263e3-5038-4290-9ba4-65a8ba5a3206.png#align=left&display=inline&height=99&name=image.png&originHeight=197&originWidth=853&size=57428&status=done&style=none&width=426.5)
A(x)就是x处物体的面积,$\Delta x$就是高度,两者相乘就是和x有关的一个体积微元,求和或积分后就得到了整个体积。
_**Example5:**_
求$y=x$和$y=x^2$中间的部分绕$y=2$旋转一周所得到的图像的体积。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564729612450-344d6106-b0c7-4671-b4f1-22c31bbc27f8.png#align=left&display=inline&height=217&name=image.png&originHeight=483&originWidth=814&size=84256&status=done&style=none&width=366)
本题的关键是千万不要把正负号弄错,x和y的正负号永远是对原始图像而言的!!!
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564729702866-652e5e74-4121-49b8-abc6-e58760549d36.png#align=left&display=inline&height=269&name=image.png&originHeight=559&originWidth=648&size=49651&status=done&style=none&width=312)
_**Example6:**_
求$y=x$和$y=x^2$中间的部分绕$x=-1$旋转一周所得到的图像的体积。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564729792065-60d72c36-c2b7-4981-8287-fb72455edf31.png#align=left&display=inline&height=396&name=image.png&originHeight=791&originWidth=865&size=110080&status=done&style=none&width=432.5) - -**圆柱法:**
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564730174773-06dc758f-1634-4e55-8972-258d1ce94fd0.png#align=left&display=inline&height=139&name=image.png&originHeight=278&originWidth=369&size=15043&status=done&style=none&width=184.5)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564730326087-04297e8d-415b-4e64-ae20-88fae0efe92a.png#align=left&display=inline&height=117&name=image.png&originHeight=321&originWidth=399&size=29497&status=done&style=none&width=145)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564730342813-d175f51d-29ff-46fb-b80c-5b9a48265fd9.png#align=left&display=inline&height=117&name=image.png&originHeight=271&originWidth=845&size=46573&status=done&style=none&width=366)
如图所示,$x_L和x_R$比较难求,当边界无法被解析式表达时,我们对垂直于旋转轴的底面做圆柱分解。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564730833273-10b089cf-73ea-4788-af98-2c99c64e4f5c.png#align=left&display=inline&height=272&name=image.png&originHeight=543&originWidth=874&size=72820&status=done&style=none&width=437)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564730917008-e54cf47b-11c7-4e53-b672-4e72a8805496.png#align=left&display=inline&height=170&name=image.png&originHeight=340&originWidth=1268&size=111792&status=done&style=none&width=634)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564730960541-957e4d6c-8c67-4679-86a4-dbb26f0ef222.png#align=left&display=inline&height=493&name=image.png&originHeight=985&originWidth=888&size=200136&status=done&style=none&width=444)
一小段圆柱的体积=底面积:$2\pi xdx$ 乘以 高:$f(x)$,之后对自变量求积分。
_**Example7:**_
_**![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564731192372-d2fe0b5f-9062-4f02-87fc-189e778c2160.png#align=left&display=inline&height=276&name=image.png&originHeight=552&originWidth=1570&size=174486&status=done&style=none&width=785)**_
_**![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564731227052-5645e468-39ff-4f4a-9605-4934891d61b3.png#align=left&display=inline&height=325&name=image.png&originHeight=650&originWidth=1130&size=201985&status=done&style=none&width=565)**_
注意:在本题中,圆柱法比切片法简单的多,由于不用求边界,对于具体的题目,根据情况选择两种方法即可。_ - -#### 6.1.3弧长和表面积 -求弧长的方法十分显然,该方法也适用于极坐标,只需用微元法得到公式。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735049026-006e6495-5137-4ced-8248-3146fff0e267.png#align=left&display=inline&height=167&name=image.png&originHeight=333&originWidth=627&size=32754&status=done&style=none&width=313.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735072848-50861c06-992b-4cbb-8e9b-1ff3015a559d.png#align=left&display=inline&height=65&name=image.png&originHeight=129&originWidth=905&size=23014&status=done&style=none&width=452.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735102285-44526d90-8906-4a4a-953a-f298ddaf8819.png#align=left&display=inline&height=552&name=image.png&originHeight=1103&originWidth=1087&size=232574&status=done&style=none&width=543.5)
求表面积的方法也是微元法,如下图所示:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735238189-80848767-e286-4b19-be8e-815ae9cf33cb.png#align=left&display=inline&height=207&name=image.png&originHeight=358&originWidth=409&size=27579&status=done&style=none&width=237)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735284859-b59fbc1c-5a32-4e8a-ab05-5fca9eb2655d.png#align=left&display=inline&height=195&name=image.png&originHeight=390&originWidth=404&size=24795&status=done&style=none&width=202)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735245227-4cfcfb5d-3690-4166-adaf-3226a848ab02.png#align=left&display=inline&height=225&name=image.png&originHeight=450&originWidth=444&size=32892&status=done&style=none&width=222)
已知圆锥表面积是$\pi rl$,现在试图求解一段圆台的表面积,它等于两个圆锥相减。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735348579-cfe256d6-bfc5-4a0d-8ae1-f813cf19f562.png#align=left&display=inline&height=168&name=image.png&originHeight=335&originWidth=862&size=39570&status=done&style=none&width=431)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735368083-a876b283-20a4-428e-9eba-594325196a95.png#align=left&display=inline&height=186&name=image.png&originHeight=372&originWidth=791&size=42136&status=done&style=none&width=395.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735424706-ad6adca0-3e29-4104-a107-7c158b1e97d1.png#align=left&display=inline&height=158&name=image.png&originHeight=315&originWidth=455&size=34365&status=done&style=none&width=227.5)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735432291-3887db4d-0c54-472e-a851-03ec6b8b60c6.png#align=left&display=inline&height=164&name=image.png&originHeight=327&originWidth=477&size=44272&status=done&style=none&width=238.5)
如上图所示,将任意旋转体分成无数小圆台,进行求和即可(这里为什么不能用圆柱做微元法?)。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735492704-501318e3-dc45-480c-848c-cf9aa58d8821.png#align=left&display=inline&height=470&name=image.png&originHeight=940&originWidth=832&size=179318&status=done&style=none&width=416)
最后我们得到了表面积的表达式:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735531566-c052e449-b816-47af-b0fb-ef7d515ece96.png#align=left&display=inline&height=543&name=image.png&originHeight=1085&originWidth=824&size=164515&status=done&style=none&width=412)
_**Example8:**_
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735620477-50414564-495c-4c2b-b224-793c8d9bb15d.png#align=left&display=inline&height=318&name=image.png&originHeight=636&originWidth=1197&size=142634&status=done&style=none&width=598.5) - -#### 6.1.4极坐标和参数方程 -**参数方程:**
参数方程本质就是把x和y想成某个变量t的函数,利用链式法则可以把微积分的计算用参数方程实现。
微分:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736398380-6429c462-a4fd-4026-82fe-5e232fe16a68.png#align=left&display=inline&height=94&name=image.png&originHeight=188&originWidth=632&size=12125&status=done&style=none&width=316)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736410417-709321c3-f481-4259-8789-427eaf274d66.png#align=left&display=inline&height=75&name=image.png&originHeight=149&originWidth=408&size=12720&status=done&style=none&width=204)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736419104-a0a2821f-8dc7-4e91-80bf-d48bfe4b8e92.png#align=left&display=inline&height=61&name=image.png&originHeight=121&originWidth=260&size=7967&status=done&style=none&width=130)
求面积:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736476918-0590bf2a-c680-4c20-8b1d-a353c97f20e3.png#align=left&display=inline&height=82&name=image.png&originHeight=186&originWidth=1048&size=31724&status=done&style=none&width=460)
求长度:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736526039-2ebd1e65-a2dd-489d-9a64-71528f31163f.png#align=left&display=inline&height=131&name=image.png&originHeight=380&originWidth=1516&size=130868&status=done&style=none&width=522)
_**Example9:**_
我们以摆线为例,将摆线方程建模为关于转动角度的函数,如下图所示。
![](https://cdn.nlark.com/yuque/0/2019/gif/422826/1564564061025-8772fb4c-acf7-4304-941f-7978e4dc58a8.gif#align=left&display=inline&height=152&originHeight=200&originWidth=400&size=0&status=done&style=none&width=303)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564735810521-60b56f59-1282-4d91-a789-39b4dd04a294.png#align=left&display=inline&height=178&name=image.png&originHeight=356&originWidth=336&size=25573&status=done&style=none&width=168)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736092449-9ca73029-a1f7-4596-8e8a-561821aa44c6.png#align=left&display=inline&height=281&name=image.png&originHeight=498&originWidth=824&size=108912&status=done&style=none&width=465)
摆线的面积:方法只是简单的换元。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736174058-a5323d28-5dae-4876-8d23-91f700c0892a.png#align=left&display=inline&height=252&name=image.png&originHeight=504&originWidth=1136&size=164383&status=done&style=none&width=568)
摆线的周长:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736242267-186b3d0e-3341-4b79-b349-18bd1a5f5855.png#align=left&display=inline&height=106&name=image.png&originHeight=211&originWidth=811&size=50267&status=done&style=none&width=405.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564736259329-b43d099d-580d-45d3-a1cc-5c13753f3636.png#align=left&display=inline&height=298&name=image.png&originHeight=596&originWidth=1189&size=167924&status=done&style=none&width=594.5)
摆线相关知识点击:[维基百科](https://zh.wikipedia.org/wiki/%E6%91%86%E7%BA%BF)
摆线的本质是最速降线,请看3B1B的视频:[视频链接](https://www.bilibili.com/video/av6385842)
另一个相关视频:[费马小定理](https://www.bilibili.com/video/av4283063)
**极坐标:**
极坐标求面积公式前面已给出:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564739380608-f0e0eb6d-9b48-40ef-a65d-a148d2c37c25.png#align=left&display=inline&height=40&name=image.png&originHeight=80&originWidth=397&size=8505&status=done&style=none&width=198.5)
求弧长的公式推导依然是微元法:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564739460366-b122fcba-a853-41d1-a20f-b7a96605226e.png#align=left&display=inline&height=194&name=image.png&originHeight=388&originWidth=1179&size=96692&status=done&style=none&width=589.5)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564739475794-c4ced533-af66-4cca-817a-ce84ce59c500.png#align=left&display=inline&height=468&name=image.png&originHeight=936&originWidth=1162&size=165419&status=done&style=none&width=581)
更直观的方法是:弧长显然等于径向速度与法向速度之和。$\Delta l=\sqrt{(dr)^2+(rd\theta)^2}$
_**Example10:**_
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564739512792-d8161131-1dea-47fd-af31-5fb8888bc10d.png#align=left&display=inline&height=238&name=image.png&originHeight=475&originWidth=1740&size=183958&status=done&style=none&width=870) - -_**Example11:**_
本题请务必自己手算一遍。
_**![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564739703550-2719ccb5-7c3a-4587-b76f-6d642c16f520.png#align=left&display=inline&height=139&name=image.png&originHeight=278&originWidth=1402&size=558840&status=done&style=none&width=701)**_
_**![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564739743058-7ede1aae-d19a-4a12-a962-768434331a7d.png#align=left&display=inline&height=566&name=image.png&originHeight=1155&originWidth=1431&size=2451173&status=done&style=none&width=701)**_ - -## 6.2物理问题 - -#### 6.2.1质心 -![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564742115000-018bb313-2aa7-416e-af90-a537fd32df00.png#align=left&display=inline&height=163&name=image.png&originHeight=325&originWidth=490&size=18641&status=done&style=none&width=245)![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564742126521-978d71c8-5b50-40bf-8ac2-3e2b28bfd52f.png#align=left&display=inline&height=175&name=image.png&originHeight=405&originWidth=485&size=36089&status=done&style=none&width=209)
质心和势相关,是力学中研究旋转的概念,质心和势一般来说是对于某个转轴的定义。
质心是一个点,在这点上施加外力不会引起系统的旋转。
势是物体旋转的惯性,表示在施加外力后系统旋转的能力。
如上图所示,区域R具有恒定密度,它相对于y轴和x轴的势计算方法如下:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564742398345-dc83039e-653b-478d-8087-447a48eaf146.png#align=left&display=inline&height=60&name=image.png&originHeight=119&originWidth=630&size=18290&status=done&style=none&width=315)(相当于每个矩形到y轴距离x乘以每个矩形面积f(x)dx)
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564742417600-503bf00a-7b59-4a3d-9610-062310bead42.png#align=left&display=inline&height=57&name=image.png&originHeight=113&originWidth=707&size=19660&status=done&style=none&width=353.5)(相当于每个矩形中点到x轴距离f(x)/2乘每个矩形面积f(x)dx)
上式除以总质量就得到了质心:
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564742797455-a0968736-8f97-4112-8a08-a97d7034cc22.png#align=left&display=inline&height=186&name=image.png&originHeight=371&originWidth=678&size=59151&status=done&style=none&width=339)
_**Example12:**_
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564742837779-73275432-9494-42b4-b7bf-cb03b9e2952f.png#align=left&display=inline&height=478&name=image.png&originHeight=956&originWidth=1738&size=218957&status=done&style=none&width=869) - -#### 6.2.2电磁场 -_**Example13:**_
一根电荷密度为+1的,长度为L的直导体棒,求距离其中点a的一点的电场强度。
![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564743182639-68335172-a503-4a04-86d2-9462f3c93629.png#align=left&display=inline&height=175&name=image.png&originHeight=533&originWidth=628&size=45223&status=done&style=none&width=206)
提示:第一种做法是通过微元法转换成积分,第二种做法是找出与其等价的圆弧。
答案:[点击链接](https://www.bilibili.com/video/av55298726) - -## 6.3一题十解 -_**Example14:**_
求$Ax^2+2Bxy+Cy^2=1(A>0,AC-B^2>0)$所围图形的面积。
解1: - -![image.png](https://cdn.nlark.com/yuque/0/2019/png/422826/1564743549317-883a26fe-c7e1-4688-9d64-f8c39451f335.png#align=left&display=inline&height=305&name=image.png&originHeight=609&originWidth=543&size=58299&status=done&style=none&width=271.5)
另外十种解法为:参数方程,极坐标,微分,二重积分,条件极值,线性代数等,具体参见吉米多维奇。 - - - diff --git a/README.md b/README.md index d7e20f9..e1a5afc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ -

HDU计算机科学讲义

+
+ logo +
+

HDU计算机科学讲义

license @@ -20,10 +23,11 @@

-
喜欢本项目可以点点右上角 star 🎇
+
喜欢本项目可以点击右上角 star 收藏哦🎇

- 📚在线阅读 + 📚在线阅读(美国、AWS节点) + 🎉【推荐】📚在线阅读(中国腾讯云CDN节点)

## 序言 @@ -32,7 +36,7 @@ **我们会面临着各种各样的问题**:编程从哪里学起?如何高效利用大学时间?如何平衡绩点与项目经验?如何正确安排学习配比?有没有人带带弟弟?如何问大佬问题得到回复的概率更高? -**我们会被信息洪流所淹没**:C语言、Go、Java、Python;人工智能、机器学习、pytorch、tensorflow;数据库、操作系统、计算机网络;Linux、Git。哪个应该马上学,哪个应该多学,哪个只要会用就行? +**我们会被信息洪流所淹没**:C语言、Go、Java、Python ;人工智能、机器学习、PyTorch、TensorFlow ;数据库、操作系统、计算机网络;Linux、Git。哪个应该马上学,哪个应该多学,哪个只要会用就行? **我们面临各种各样的抉择**:搞开发还是搞科研,毕业直接工作还是考研?搞开发的话去做前端还是后端,哪里去找项目?搞研究的话怎么去联系实验室,又如何入门人工智能?要不要去参加竞赛,有哪些竞赛,如何挑选队友? @@ -40,12 +44,14 @@ **出一份计算机科学领域的讲义,一起做大家的领路人。** -这份讲义由**zzm**发起,**孵化器**,**SRT,杭电助手**与 **vidar team** 协办。参与讲义制作的有 hdu 的同学,老师,相关领域的大佬,覆盖了人工智能入门、软件开发入门,计算机学习之道与路线等内容。 -zzm花费了一年的时间动员了大伙对讲义进行修缮和完备,不得不说这确实不是一个小的工作,不过在2023年3月,在计院领导的支持下,计算机学院科协成立了。我们将在学院的支持下继续完善这个内容,同时也欢迎大伙加入我们,共同参与到讲义的学习与撰写中来! +这份讲义由**zzm**发起,**孵化器**,**SRT**, **杭电助手**与 **Vidar-Team** 协办。参与讲义制作的有 hdu 的同学,老师,相关领域的大佬,覆盖了人工智能入门、软件开发入门,计算机学习之道与路线等内容。 + + +zzm 花费了一年的时间动员了大伙对讲义进行修缮和完备,不得不说这确实不是一个小的工作,不过在2023年3月,在计院领导的支持下,计算机学院科协成立了。我们将在学院的支持下继续完善这个内容,同时也欢迎大伙加入我们,共同参与到讲义的学习与撰写中来!
- +

欢迎加群669895692

@@ -56,9 +62,9 @@ zzm花费了一年的时间动员了大伙对讲义进行修缮和完备,不 2. 切记勿要过度深度遍历知识,知识无尽的,如果深度钻研下去,可能没有尽头,最重要的是框架,以及高频次用的知识。更为准确地说,是你要建立一个自己的知识体系,尝试抓住时代发展的脉络或者某一个知识点的延伸。如果你一个知识点无限迭代下去,可能长时间没有正反馈,一瞬间就放弃了。 3. 对于学到的知识 一定要注重实践 不能只学习理论知识 -例如学习Pytorch,应该尽快理解Pytorch编程的框架,dataloder,model,train,test文件 +例如学习 Pytorch ,应该尽快理解 Pytorch 编程的框架,dataloder,model,train,test 文件 -例如学习学习过程中学习到Linux命令,不是需要把整本Liunx书籍全部看完后才可使用 +例如看书过程中学习到 Linux 命令,不需要把整本 Liunx 书籍全部看完后才可使用。(边学边试,边用边学) 4. 敢于否定,如果对于给出的学习资料看不懂,要尝试自己寻找学习资料,找到适合自己的那份学习资料。并且中文的社区包括我们,都可能会犯各种各样的错误。就连论文也不一定是对的。有写论文就是专门驳斥前人哪怕是巨佬的观点。我非常欢迎你提出异议。 @@ -74,6 +80,7 @@ zzm花费了一年的时间动员了大伙对讲义进行修缮和完备,不 ## **许可协议** -本作品采用 `知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆` 许可协议进行许可. 要查看该许可协议, 可访问 [这里](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) , 或者写信到 Creative Commons, PO Box 1866, Mountain View, CA 94042, USA +本作品采用 `知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆` 许可协议进行许可。 要查看该许可协议, 可访问[这里](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/), 或者写信到 Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + +© 2022. 此文章采用 [**CC BY-NC-SA 3.0 CN**](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 许可授权。 -© 2022. 此文章采用 **CC BY-NC-SA 3.0 CN** 许可授权。 diff --git a/components/Download.vue b/components/Download.vue new file mode 100644 index 0000000..2e163be --- /dev/null +++ b/components/Download.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/hdu-cs-qq.jpg b/hdu-cs-qq.jpg new file mode 100644 index 0000000..342ddfd Binary files /dev/null and b/hdu-cs-qq.jpg differ diff --git a/hdu-cs-qq.png b/hdu-cs-qq.png deleted file mode 100644 index a30b54e..0000000 Binary files a/hdu-cs-qq.png and /dev/null differ diff --git a/index.md b/index.md index d60ac07..51628de 100644 --- a/index.md +++ b/index.md @@ -5,7 +5,7 @@ layout: home hero: name: HDU-CS-WIKI text: HDU计算机科学讲义 - tagline: 正在完善中!如果你有任何建议或者想要完善本 WIKI ,请点击下方的 GitHub 按钮提交 issue 或者 PR ! + tagline: 如果你有一些建议或者想要完善此 WIKI ,请点击下方的 GitHub 按钮查看我们的仓库提交 issue 或者 PR ! image: src: hdu-cs-wiki.svg alt: HDU-CS-WIKI diff --git a/members.ts b/members.ts index cc9644c..bc02058 100644 --- a/members.ts +++ b/members.ts @@ -46,11 +46,11 @@ export const members: Member = [ ] }, { - avatar: 'https://avatars.hdu-cs.wiki/creammmmmmmmmmmmmmmm', + avatar: 'https://avatars.hdu-cs.wiki/creamm-kk', name: '可可', title: 'Contributer', links: [ - { icon: 'github', link: 'https://github.com/creammmmmmmmmmmmmmmm' }, + { icon: 'github', link: 'https://github.com/creamm-kk' }, ] }, { @@ -85,4 +85,44 @@ export const members: Member = [ { icon: 'github', link: 'https://github.com/buwyi' }, ] }, + { + avatar: 'https://avatars.hdu-cs.wiki/E1PsyCongroo', + name: 'E1PsyCongroo', + title: 'Contributer', + links: [ + { icon: 'github', link: 'https://github.com/E1PsyCongroo' }, + ] + }, + { + avatar: 'https://avatars.hdu-cs.wiki/w31r4', + name: 'w31r4', + title: 'Contributer', + links: [ + { icon: 'github', link: 'https://github.com/w31r4' }, + ] + }, + { + avatar: 'https://avatars.hdu-cs.wiki/axiomofchoice-hjt', + name: 'Axiomofchoice', + title: 'Contributer', + links: [ + { icon: 'github', link: 'https://github.com/axiomofchoice-hjt' }, + ] + }, + { + avatar: 'https://avatars.hdu-cs.wiki/ek1ng', + name: 'ek1ng', + title: 'Contributer', + links: [ + { icon: 'github', link: 'https://github.com/ek1ng' }, + ] + }, + { + avatar: 'https://avatars.hdu-cs.wiki/Plumbiu', + name: 'Guo Xingjun', + title: 'Contributer', + links: [ + { icon: 'github', link: 'https://github.com/Plumbiu' }, + ] + }, ] diff --git a/package-lock.json b/package-lock.json index 163d0fb..4588f36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,46 +6,47 @@ "": { "dependencies": { "@codemirror/lang-python": "^6.1.3", - "@codemirror/lang-sql": "^6.5.0", - "@jupyterlab/mathjax2": "^3.6.4", - "@jupyterlab/theme-light-extension": "^4.0.2", + "@codemirror/lang-sql": "^6.5.2", + "@jupyterlab/mathjax2": "^3.6.5", + "@jupyterlab/theme-light-extension": "^4.0.3", + "@vueuse/core": "^10.2.1", "markdown-it": "^13.0.1" }, "devDependencies": { "cross-env": "^7.0.3", "markdown-it-mathjax3": "^4.3.2", - "vitepress": "^1.0.0-beta.2" + "vitepress": "^1.0.0-beta.5" } }, "node_modules/@algolia/autocomplete-core": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.2.tgz", - "integrity": "sha512-hkG80c9kx9ClVAEcUJbTd2ziVC713x9Bji9Ty4XJfKXlxlsx3iXsoNhAwfeR4ulzIUg7OE5gez0UU1zVDdG7kg==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", "dev": true, "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.2", - "@algolia/autocomplete-shared": "1.9.2" + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.2.tgz", - "integrity": "sha512-2LVsf4W66hVHQ3Ua/8k15oPlxjELCztbAkQm/hP42Sw+GLkHAdY1vaVRYziaWq64+Oljfg6FKkZHCdgXH+CGIA==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", "dev": true, "dependencies": { - "@algolia/autocomplete-shared": "1.9.2" + "@algolia/autocomplete-shared": "1.9.3" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.2.tgz", - "integrity": "sha512-pqgIm2GNqtCT59Y1ICctIPrYTi34+wNPiNWEclD/yDzp5uDUUsyGe5XrUjCNyQRTKonAlmYxoaEHOn8FWgmBHA==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", "dev": true, "dependencies": { - "@algolia/autocomplete-shared": "1.9.2" + "@algolia/autocomplete-shared": "1.9.3" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -53,9 +54,9 @@ } }, "node_modules/@algolia/autocomplete-shared": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.2.tgz", - "integrity": "sha512-XxX6YDn+7LG+SmdpXEOnj7fc3TjiVpQ0CbGhjLwrd2tYr6LVY2D4Iiu/iuYJ4shvVDWWnpwArSk0uIWC/8OPUA==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", "dev": true, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -63,139 +64,138 @@ } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.17.2.tgz", - "integrity": "sha512-ZkVN7K/JE+qMQbpR6h3gQOGR6yCJpmucSBCmH5YDxnrYbp2CbrVCu0Nr+FGVoWzMJNznj1waShkfQ9awERulLw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.18.0.tgz", + "integrity": "sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.17.2" + "@algolia/cache-common": "4.18.0" } }, "node_modules/@algolia/cache-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/cache-common/-/cache-common-4.17.2.tgz", - "integrity": "sha512-fojbhYIS8ovfYs6hwZpy1O4mBfVRxNgAaZRqsdVQd54hU4MxYDYFCxagYX28lOBz7btcDHld6BMoWXvjzkx6iQ==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-common/-/cache-common-4.18.0.tgz", + "integrity": "sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==", "dev": true }, "node_modules/@algolia/cache-in-memory": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/cache-in-memory/-/cache-in-memory-4.17.2.tgz", - "integrity": "sha512-UYQcMzPurNi+cPYkuPemTZkjKAjdgAS1hagC5irujKbrYnN4yscK4TkOI5tX+O8/KegtJt3kOK07OIrJ2QDAAw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-in-memory/-/cache-in-memory-4.18.0.tgz", + "integrity": "sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.17.2" + "@algolia/cache-common": "4.18.0" } }, "node_modules/@algolia/client-account": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-account/-/client-account-4.17.2.tgz", - "integrity": "sha512-doSk89pBPDpDyKJSHFADIGa2XSGrBCj3QwPvqtRJXDADpN+OjW+eTR8r4hEs/7X4GGfjfAOAES8JgDx+fZntYw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-account/-/client-account-4.18.0.tgz", + "integrity": "sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==", "dev": true, "dependencies": { - "@algolia/client-common": "4.17.2", - "@algolia/client-search": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "node_modules/@algolia/client-analytics": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-4.17.2.tgz", - "integrity": "sha512-V+DcXbOtD/hKwAR3qGQrtlrJ3q2f9OKfx843q744o4m3xHv5ueCAvGXB1znPsdaUrVDNAImcgEgqwI9x7EJbDw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-4.18.0.tgz", + "integrity": "sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==", "dev": true, "dependencies": { - "@algolia/client-common": "4.17.2", - "@algolia/client-search": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "node_modules/@algolia/client-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-common/-/client-common-4.17.2.tgz", - "integrity": "sha512-gKBUnjxi0ukJYIJxVREYGt1Dmj1B3RBYbfGWi0dIPp1BC1VvQm+BOuNwsIwmq/x3MPO+sGuK978eKiP3tZDvag==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-common/-/client-common-4.18.0.tgz", + "integrity": "sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "node_modules/@algolia/client-personalization": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-4.17.2.tgz", - "integrity": "sha512-wc4UgOWxSYWz5wpuelNmlt895jA9twjZWM2ms17Ws8qCvBHF7OVGdMGgbysPB8790YnfvvDnSsWOv3CEj26Eow==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-4.18.0.tgz", + "integrity": "sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==", "dev": true, "dependencies": { - "@algolia/client-common": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "node_modules/@algolia/client-search": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-search/-/client-search-4.17.2.tgz", - "integrity": "sha512-FUjIs+gRe0upJC++uVs4sdxMw15JxfkT86Gr/kqVwi9kcqaZhXntSbW/Fw959bIYXczjmeVQsilYvBWW4YvSZA==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-search/-/client-search-4.18.0.tgz", + "integrity": "sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==", "dev": true, "dependencies": { - "@algolia/client-common": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "node_modules/@algolia/logger-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/logger-common/-/logger-common-4.17.2.tgz", - "integrity": "sha512-EfXuweUE+1HiSMsQidaDWA5Lv4NnStYIlh7PO5pLkI+sdhbMX0e5AO5nUAMIFM1VkEANes70RA8fzhP6OqCqQQ==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/logger-common/-/logger-common-4.18.0.tgz", + "integrity": "sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==", "dev": true }, "node_modules/@algolia/logger-console": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/logger-console/-/logger-console-4.17.2.tgz", - "integrity": "sha512-JuG8HGVlJ+l/UEDK4h2Y8q/IEmRjQz1J0aS9tf6GPNbGYiSvMr1DDdZ+hqV3bb1XE6wU8Ypex56HisWMSpnG0A==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/logger-console/-/logger-console-4.18.0.tgz", + "integrity": "sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==", "dev": true, "dependencies": { - "@algolia/logger-common": "4.17.2" + "@algolia/logger-common": "4.18.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.17.2.tgz", - "integrity": "sha512-FKI2lYWwksALfRt2OETFmGb5+P7WVc4py2Ai3H7k8FSfTLwVvs9WVVmtlx6oANQ8RFEK4B85h8DQJTJ29TDfmA==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.18.0.tgz", + "integrity": "sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.17.2" + "@algolia/requester-common": "4.18.0" } }, "node_modules/@algolia/requester-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/requester-common/-/requester-common-4.17.2.tgz", - "integrity": "sha512-Rfim23ztAhYpE9qm+KCfCRo+YLJCjiiTG+IpDdzUjMpYPhUtirQT0A35YEd/gKn86YNyydxS9w8iRSjwKh+L0A==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-common/-/requester-common-4.18.0.tgz", + "integrity": "sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==", "dev": true }, "node_modules/@algolia/requester-node-http": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-4.17.2.tgz", - "integrity": "sha512-E0b0kyCDMvUIhQmDNd/mH4fsKJdEEX6PkMKrYJjzm6moo+rP22tqpq4Rfe7DZD8OB6/LsDD3zs3Kvd+L+M5wwQ==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-4.18.0.tgz", + "integrity": "sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.17.2" + "@algolia/requester-common": "4.18.0" } }, "node_modules/@algolia/transporter": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/transporter/-/transporter-4.17.2.tgz", - "integrity": "sha512-m8pXlz5OnNzjD1rcw+duCN4jG4yEzkJBsvKYMoN22Oq6rQwy1AY5muZ+IQUs4dL+A364CYkRMLRWhvXpCZ1x+g==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/transporter/-/transporter-4.18.0.tgz", + "integrity": "sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.17.2", - "@algolia/logger-common": "4.17.2", - "@algolia/requester-common": "4.17.2" + "@algolia/cache-common": "4.18.0", + "@algolia/logger-common": "4.18.0", + "@algolia/requester-common": "4.18.0" } }, "node_modules/@babel/parser": { "version": "7.22.3", "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.22.3.tgz", "integrity": "sha512-vrukxyW/ep8UD1UDzOYpTKQ6abgjFoeG6L+4ar9+c5TN9QnlqiOi6QK7LSR5ewm/ERyGkT/Ai6VboNrxhbr9Uw==", - "dev": true, "license": "MIT", "bin": { "parser": "bin/babel-parser.js" @@ -232,9 +232,9 @@ } }, "node_modules/@codemirror/lang-sql": { - "version": "6.5.0", - "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.5.0.tgz", - "integrity": "sha512-ztJ+5lk0yWf4E7sQQqsidPYJa0a/511Ln/IaI3A+fGv6z0SrGDG0Lu6SAehczcehrhgNwMhPlerJMeXw7vZs2g==", + "version": "6.5.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.5.2.tgz", + "integrity": "sha512-VYiCbApDDRUVx3k0jtZ+b5h2hMkMKZpPR9tx+VgVA3Euuf2MVjVsjx/S2+4AlJjKjS5J6z9+4bEvtponK96e4A==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -272,30 +272,30 @@ } }, "node_modules/@docsearch/css": { - "version": "3.5.0", - "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-3.5.0.tgz", - "integrity": "sha512-Ob5FQLubplcBNihAVtriR59FRBeP8u69F6mu4L4yIr60KfsPc10bOV0DoPErJw0zF9IBN2cNLW9qdmt8zWPxyg==", + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-3.5.1.tgz", + "integrity": "sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==", "dev": true }, "node_modules/@docsearch/js": { - "version": "3.5.0", - "resolved": "https://registry.npmmirror.com/@docsearch/js/-/js-3.5.0.tgz", - "integrity": "sha512-WqB+z+zVKSXDkGq028nClT9RvMzfFlemZuIulX5ZwWkdUtl4k7M9cmZA/c6kuZf7FG24XQsMHWuBjeUo9hLRyA==", + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/@docsearch/js/-/js-3.5.1.tgz", + "integrity": "sha512-EXi8de5njxgP6TV3N9ytnGRLG9zmBNTEZjR4VzwPcpPLbZxxTLG2gaFyJyKiFVQxHW/DPlMrDJA3qoRRGEkgZw==", "dev": true, "dependencies": { - "@docsearch/react": "3.5.0", + "@docsearch/react": "3.5.1", "preact": "^10.0.0" } }, "node_modules/@docsearch/react": { - "version": "3.5.0", - "resolved": "https://registry.npmmirror.com/@docsearch/react/-/react-3.5.0.tgz", - "integrity": "sha512-3IG8mmSMzSHNGy2S1VuPyYU9tFCxFpj5Ov8SYwsSHM4yMvFsaO9oFxXocA5lSenliIELhuOuS5+BdxHa/Qlf2A==", + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/@docsearch/react/-/react-3.5.1.tgz", + "integrity": "sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==", "dev": true, "dependencies": { - "@algolia/autocomplete-core": "1.9.2", - "@algolia/autocomplete-preset-algolia": "1.9.2", - "@docsearch/css": "3.5.0", + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.5.1", "algoliasearch": "^4.0.0" }, "peerDependencies": { @@ -328,6 +328,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -345,6 +346,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -362,6 +364,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -379,6 +382,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -396,6 +400,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -413,6 +418,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -430,6 +436,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -447,6 +454,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -464,6 +472,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -481,6 +490,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -498,6 +508,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -515,6 +526,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -532,6 +544,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -549,6 +562,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -566,6 +580,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -583,6 +598,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -600,6 +616,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -617,6 +634,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -634,6 +652,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=12" } @@ -651,6 +670,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -668,6 +688,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -685,6 +706,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -702,7 +724,6 @@ "version": "1.4.15", "resolved": "https://repo.huaweicloud.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, "license": "MIT" }, "node_modules/@jupyter/ydoc": { @@ -719,20 +740,20 @@ } }, "node_modules/@jupyterlab/application": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/application/-/application-4.0.2.tgz", - "integrity": "sha512-sFF2YJBRiJGu6Jx2PE/JRwmwuLTs9eHEoqaZGCD6H4loj8iDlCuwb26JVmbCz94QzgB00KFMYCBV6K7UWhid9g==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/application/-/application-4.0.3.tgz", + "integrity": "sha512-fnZe+j3ZJg0zVZuDxHOkafqhB9SFiIWestFqfJ+2bvnPxVfBd5kAJdGi8U56TV4KxKdNbhnRV4POIQAedtCoRA==", "dependencies": { "@fortawesome/fontawesome-free": "^5.12.0", - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/docregistry": "^4.0.2", - "@jupyterlab/rendermime": "^4.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/statedb": "^4.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/docregistry": "^4.0.3", + "@jupyterlab/rendermime": "^4.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/statedb": "^4.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/application": "^2.1.1", "@lumino/commands": "^2.1.1", @@ -751,19 +772,19 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/apputils": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/apputils/-/apputils-4.1.2.tgz", - "integrity": "sha512-Gj4xd4i+y7j6W1n+cJVA+LBC20fcFUanxDxZfaYwfSFA9b/7ijx3dfw9zRY9taqzBdun17HCjynvLbOJfMwYEg==", + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/apputils/-/apputils-4.1.3.tgz", + "integrity": "sha512-63k/fYrHkIePxT9ATMw76oSBqqTYDS3uBLNRxCB/B6MLYJeSN1Zo6Wsky+LdanuUAqtvXYMady0WTiSo1P1mzQ==", "dependencies": { - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/settingregistry": "^4.0.2", - "@jupyterlab/statedb": "^4.0.2", - "@jupyterlab/statusbar": "^4.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/settingregistry": "^4.0.3", + "@jupyterlab/statedb": "^4.0.3", + "@jupyterlab/statusbar": "^4.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", @@ -784,18 +805,18 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/codeeditor": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/codeeditor/-/codeeditor-4.0.2.tgz", - "integrity": "sha512-7YmKs8litDFfB1oGUcA6SKylx8VnBYDW5fqbLapzhhvBQD5lPK/Gk3vaDF5U8BwsjQqHVeK2+5ZJPYKJYKGzGg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/codeeditor/-/codeeditor-4.0.3.tgz", + "integrity": "sha512-dBgAbHj04ff6lTf31HTPKs2P1iK1G/Y3ah2AGLHhK6p1JEDwH09/3fMrOQhfKa8Ehy/cXe8mNdTydeguxzdOwQ==", "dependencies": { "@codemirror/state": "^6.2.0", "@jupyter/ydoc": "^1.0.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/statusbar": "^4.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/statusbar": "^4.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", "@lumino/dragdrop": "^2.1.1", @@ -811,9 +832,9 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/coreutils": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/coreutils/-/coreutils-6.0.2.tgz", - "integrity": "sha512-jSGATyE11MuX1gbH/QYJZkYh8ddbV8SdRQ36U5Exy/oAL0ukF6vqfpIpDpo/EAW+p9aDBlSnvi3WtgyVQcltqg==", + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/coreutils/-/coreutils-6.0.3.tgz", + "integrity": "sha512-4OUzPBw9TXUIiqj0+cujD1d6u0wuIc00P9BNLLZrH6O1SVt2boQaD5TpDtBx1z6hLgg0URXvM497ZtjBntwknA==", "dependencies": { "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -829,20 +850,20 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/docregistry": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/docregistry/-/docregistry-4.0.2.tgz", - "integrity": "sha512-juWWfov9RK0fuvhj7ckVgmYqiwQPFSoKs040Wv9nppnYDfNJDQQmQMPFlSJA0irZ9AxfTyf1+TjRe+WVQcHvvg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/docregistry/-/docregistry-4.0.3.tgz", + "integrity": "sha512-Gt8U6c2aaezMzyRzHUa3SBRPTALX8nvlx/x6Q6EtY31ng6BU2/EulS9e3PCzrFhxg+gxeyyQsm4CqLfzV2Pvdw==", "dependencies": { "@jupyter/ydoc": "^1.0.2", - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/codeeditor": "^4.0.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime": "^4.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/codeeditor": "^4.0.3", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime": "^4.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -858,18 +879,18 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/mathjax2": { - "version": "3.6.4", - "resolved": "https://registry.npmmirror.com/@jupyterlab/mathjax2/-/mathjax2-3.6.4.tgz", - "integrity": "sha512-NQKt/u51svG719aIBLipcEopaZNBNuxzzR+J9NNiLTLHT+3Z6iq1N+vs3h9aN2jYyOwtboZesZ2AtGK7KQ/OrA==", + "version": "3.6.5", + "resolved": "https://registry.npmmirror.com/@jupyterlab/mathjax2/-/mathjax2-3.6.5.tgz", + "integrity": "sha512-TBVhwxzKyCy+Qg4J8Vtryctay4zhd0NfBOWMfpDW2gEIRk+uHdLEZNovsuY3XivH2Rv+Y873aBPR8vGsylYV+Q==", "dependencies": { - "@jupyterlab/rendermime-interfaces": "^3.6.4", + "@jupyterlab/rendermime-interfaces": "^3.6.5", "@lumino/coreutils": "^1.11.0" } }, "node_modules/@jupyterlab/nbformat": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/nbformat/-/nbformat-4.0.2.tgz", - "integrity": "sha512-K83wDb1iUViTk4mj228SR4E0GPASiykXcD/tVYAOvxWv8TsaZ2UK/dcX4ZtBEZpVqI5enRrq8Z7xISMR+3CRBg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/nbformat/-/nbformat-4.0.3.tgz", + "integrity": "sha512-wpOktEi5XLPrAvTH+xkimeDghOz+oj1lPUHLeRTzcYBZfMybHQxV9XKfroXllcypkyqSBI5Ppfv6/GYeQQzmHQ==", "dependencies": { "@lumino/coreutils": "^2.1.1" } @@ -880,9 +901,9 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/observables": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/observables/-/observables-5.0.2.tgz", - "integrity": "sha512-mZowpnUrfKqjc2OjwBjI4je2idMaoM3OURCcPMlcCVCZUUiFEB2SOCx8/1jWrotw/er5Cjp7vROZ7Iz8BiIW1g==", + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/observables/-/observables-5.0.3.tgz", + "integrity": "sha512-g71z04PIl7i7PrJDEXFirTwCjotXgVl/9WCYDXdXGIN5QDUkY4P8b1J7aRNaZxW0dTa3FA+W5zOD4EdfFDNeNg==", "dependencies": { "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", @@ -897,17 +918,17 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/rendermime": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime/-/rendermime-4.0.2.tgz", - "integrity": "sha512-x5nPqwGnJCkbS6+jEmhN/fKNSM22DCbO+vwZYAa8dbcL+xURRE7iockxX6cpdHhMNeQ/JlZ5m4HQyTmIzd4N/Q==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime/-/rendermime-4.0.3.tgz", + "integrity": "sha512-Bb9OMtyVN4hBPvnnPMS0q1CStmXK7Owlf3PWokGmyNFBBwheoEgPu3+gIuUpolDpQdDsq/AFOCQj1eLVHekPTQ==", "dependencies": { - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/translation": "^4.0.2", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/translation": "^4.0.3", "@lumino/coreutils": "^2.1.1", "@lumino/messaging": "^2.0.0", "@lumino/signaling": "^2.1.1", @@ -916,9 +937,9 @@ } }, "node_modules/@jupyterlab/rendermime-interfaces": { - "version": "3.8.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.8.2.tgz", - "integrity": "sha512-IOnzA/ccfwXGO/RaWysYn74ojJ7PaH5igTnS0sjo4qIprFZ6tCORTrKF594BA7Qz6PpW2+GpdUVMUnnYdU5R9Q==", + "version": "3.8.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.8.3.tgz", + "integrity": "sha512-XG0Wp/WMXcWdAILej766VpeXUAN31XYSAW9mMTw5Y+SQFfBAmHBekLMp+/+aG8n3ngqXcALeYIwBR3eF4QsKcA==", "dependencies": { "@lumino/coreutils": "^1.11.0 || ^2.1.1", "@lumino/widgets": "^1.37.2 || ^2.1.1" @@ -935,15 +956,15 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/services": { - "version": "7.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/services/-/services-7.0.2.tgz", - "integrity": "sha512-luhc5wVdojQ0kVM1EMv7HkI6eiEU36Sj69a0vNRFj2U+VcgN9Dicb+vlOZnS1cOOGNhSRjKuaREkXRfEETsq3A==", + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/services/-/services-7.0.3.tgz", + "integrity": "sha512-JeOsylwfSIjDMUktB3qRXYJ7hJkrHHdwo2PDGgtT4Uevdw1SB7eBCfYA2B9IIDUKJBfV6BWqbqMWz/DNOgDPwg==", "dependencies": { "@jupyter/ydoc": "^1.0.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/settingregistry": "^4.0.2", - "@jupyterlab/statedb": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/settingregistry": "^4.0.3", + "@jupyterlab/statedb": "^4.0.3", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", "@lumino/polling": "^2.1.1", @@ -958,12 +979,12 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/settingregistry": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/settingregistry/-/settingregistry-4.0.2.tgz", - "integrity": "sha512-c0HrgJescIoEz+DWm1wt7pNYGaMK1kq+7Ask8BRJBWJwwg9RuIrgPUd58Kc14YGNvIvDTPvgltUunhQIBZJQzg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/settingregistry/-/settingregistry-4.0.3.tgz", + "integrity": "sha512-hwOJkp9xW0K68in+Mi11SzqAcVU95hBTOPKRDvpjHjvURA6BUHeYYCSlpre1kzBn6FrySP9DCmOnK9wb/82KoA==", "dependencies": { - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/statedb": "^4.0.2", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/statedb": "^4.0.3", "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -982,9 +1003,9 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/statedb": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/statedb/-/statedb-4.0.2.tgz", - "integrity": "sha512-erVHlzJkd8xPsOHyAlImJgOAS9ohq4zRloX2+VMpCJHeYrK5z/KO9mVQlAFFC1JNlm3C3JjnvZBbTAZshzsMHA==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statedb/-/statedb-4.0.3.tgz", + "integrity": "sha512-/RDoOKYOR2+fIa9gVoNXjwXRQCZqcF0ilwJlyVz6um8hWqDDUlG/lJpUV6A2LZ0nnX6o7+RPQlKkW+6ns7WX8A==", "dependencies": { "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", @@ -999,11 +1020,11 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/statusbar": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/statusbar/-/statusbar-4.0.2.tgz", - "integrity": "sha512-5p3tSG/VM8TQ1SDIPRYBK0P2Bh+2VK1eCiCna/Zane3OHZww99JM+7yySiGYffbJuhD5ZHp+a8IYXAbAE5xVOg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statusbar/-/statusbar-4.0.3.tgz", + "integrity": "sha512-oGCrkD1xBfNP84xD0EJ7kuzRnxLrH2HqoB9x+EksrqglrFWreUnx/cq2KImBctsOr3w2zyoqIXF9W23gy0xk5A==", "dependencies": { - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -1019,24 +1040,24 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/theme-light-extension": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/theme-light-extension/-/theme-light-extension-4.0.2.tgz", - "integrity": "sha512-HFwCXbe/3u3Feo/XQEN3zd15Hsa2TGgBAVuViZ935BZ0sipATpiNYWAmLx2HBqUisuI/zN6Lrkh8Uw1S73WBOQ==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/theme-light-extension/-/theme-light-extension-4.0.3.tgz", + "integrity": "sha512-Wp2mIW0W47x2vU0JnTBS/8iuvFJQ44QRjdhWYMPaRmVpqScP8nqgUV36gx1VqYNkuZL2qlreF8PBj4TRxgZmYA==", "dependencies": { - "@jupyterlab/application": "^4.0.2", - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/translation": "^4.0.2" + "@jupyterlab/application": "^4.0.3", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/translation": "^4.0.3" } }, "node_modules/@jupyterlab/translation": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/translation/-/translation-4.0.2.tgz", - "integrity": "sha512-EiYk/dt4hBAnrHKw7YXfeKmqvug6bWadQVthY0lRE18FuSKVAOgWv2qRAxOSZEWiFyUjEKutUg5OOms6KCHZFA==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/translation/-/translation-4.0.3.tgz", + "integrity": "sha512-II6xupfMXkzvLVrQb60gm/sLkPf2LsHgvk1jCeOdH+4N+lbzpMsL9mxkNj7egH9FbLbW7OWqrzBb8h3MksYrPg==", "dependencies": { - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/statedb": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/statedb": "^4.0.3", "@lumino/coreutils": "^2.1.1" } }, @@ -1046,14 +1067,14 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@jupyterlab/ui-components": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/ui-components/-/ui-components-4.0.2.tgz", - "integrity": "sha512-TdLgTmHzi4NuRXUCls0Nh2+C2x66tQzimQRt6hRklpB9RCI2uNcr23HXe70Dc+nNXNHwXePbnT+MAsLbWHjfDw==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/ui-components/-/ui-components-4.0.3.tgz", + "integrity": "sha512-6rbqufHggkI501Pbe1hYCKsnXHje2OCUuc25SVSEgXybyDESTfyZqR4ahv0/0g4PXECWflIQakNFEaqQiAT0yg==", "dependencies": { - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/translation": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/translation": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", @@ -1115,13 +1136,13 @@ "integrity": "sha512-SwM/8U1zlMWMJj00wTCThdTUit9zap2Xghuo4uUxvZ+mfog5b1UIk2j1dP8TPpzEXHCDPEb85s2/ERo1tee3Dw==" }, "node_modules/@lumino/application": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/application/-/application-2.1.1.tgz", - "integrity": "sha512-TjkM3Iwt6pxv6pksEXSCXRxp1DLCsyHgTiURYETeRZBnRXTDJzhjPQr4K1VOZRH1ToLeeVNoyHmI+b9rWQSewQ==", + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@lumino/application/-/application-2.2.0.tgz", + "integrity": "sha512-hivdDH2/YiOLtvsfY60GSUc+d6Rxh07dz6wp8ZnoalFmzdqqI8mcW4H30PchVdmqxXK0qxZIjLlP9A3fOu/xIw==", "dependencies": { - "@lumino/commands": "^2.1.1", + "@lumino/commands": "^2.1.2", "@lumino/coreutils": "^2.1.1", - "@lumino/widgets": "^2.1.1" + "@lumino/widgets": "^2.2.0" } }, "node_modules/@lumino/application/node_modules/@lumino/coreutils": { @@ -1138,9 +1159,9 @@ } }, "node_modules/@lumino/commands": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/commands/-/commands-2.1.1.tgz", - "integrity": "sha512-KaEkRCemZ7BZM4wCvsLx+oSdPxdggdg0p+1+FXm8d9adsVV8xwxrEAAgEP4/YPytexgyf7OnKT9aOpuss/VGjA==", + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@lumino/commands/-/commands-2.1.2.tgz", + "integrity": "sha512-wdA7kx2z0oygD44yQo5Tlk+yViKqmjTqwQSg2jfKfGyVOrwM3i1NXdZ8ntIV8WQIHmg24D2WqElwjUq5G7bGlw==", "dependencies": { "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", @@ -1178,9 +1199,9 @@ "integrity": "sha512-GYsz6CS6Gd+7r9IBe/0m+3/xAuOKrjfiXwWt7OLsOM1icRv93yS+gxleCLp2+LSwoqU90sqfav+uYABtPkA4QA==" }, "node_modules/@lumino/dragdrop": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/dragdrop/-/dragdrop-2.1.1.tgz", - "integrity": "sha512-TRrKo8sWx0cnZ1X8U8Rqijd0lQ82Fgu+BseVy3zDYiANwt9jMMOPjp1qzVY2/lDCmuZptYbUKXOznS0khzCUTg==", + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@lumino/dragdrop/-/dragdrop-2.1.2.tgz", + "integrity": "sha512-89Sc2HpGHQnzQx4/A/oVmS1uOfy4YjRJtNvdr/7zoUeJTib9vxKvlzrsRopLqvmyQPzJMnulEkiWuWsgzNnLeA==", "dependencies": { "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1" @@ -1248,16 +1269,16 @@ } }, "node_modules/@lumino/widgets": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/widgets/-/widgets-2.1.1.tgz", - "integrity": "sha512-SpZ9ekxrc1KSdP8DqAUyTyCfAbBl0swyzzYI9bXNnmi6DzUGSsgE2c985pl+tY8DXHIIOVHQey267psZ35Hp1w==", + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@lumino/widgets/-/widgets-2.2.0.tgz", + "integrity": "sha512-nQ5UXjcl+Tvddeev0We5aoW2erm5KffKCJZEo6/1i4t2cj90v2ndqtXtbiCjeQOBDojIH6u1BVPtUExTh00cbA==", "dependencies": { "@lumino/algorithm": "^2.0.0", - "@lumino/commands": "^2.1.1", + "@lumino/commands": "^2.1.2", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", "@lumino/domutils": "^2.0.0", - "@lumino/dragdrop": "^2.1.1", + "@lumino/dragdrop": "^2.1.2", "@lumino/keyboard": "^2.0.0", "@lumino/messaging": "^2.0.0", "@lumino/properties": "^2.0.0", @@ -1271,9 +1292,9 @@ "integrity": "sha512-OmEzvphZC/EVpFfwBkmcuzNwKXvkij6gJo1mbf4/tZMC1/8NO3aVnjK1FsgC0TlaGwMD1BLIFgGay2mC/I/cyQ==" }, "node_modules/@rjsf/core": { - "version": "5.8.1", - "resolved": "https://registry.npmmirror.com/@rjsf/core/-/core-5.8.1.tgz", - "integrity": "sha512-+lJKK/fdVO+DqKhSzSY8bjyAv5weoLw44d/DnCn2U8/l9qY0nqfNSvG6gyZIC9kCNnzLS/76XFAltWXgtjjzFQ==", + "version": "5.9.0", + "resolved": "https://registry.npmmirror.com/@rjsf/core/-/core-5.9.0.tgz", + "integrity": "sha512-HYgnWKTGVfbj6bs1O9SYyw4VgBfoISZeQti259aiKK08XDVH+tgThxBMX4CyMjC/K9I4ralRV9KRlGO1un0DzQ==", "dependencies": { "lodash": "^4.17.21", "lodash-es": "^4.17.21", @@ -1290,9 +1311,9 @@ } }, "node_modules/@rjsf/utils": { - "version": "5.8.1", - "resolved": "https://registry.npmmirror.com/@rjsf/utils/-/utils-5.8.1.tgz", - "integrity": "sha512-kzWVNAW417ADG0nSEPxpqYzLrtzi9tKCCn5rOuwt6FIvSrtkatISBekyKNeycGPUfQR9VkROGrcG8cz10xUs6g==", + "version": "5.9.0", + "resolved": "https://registry.npmmirror.com/@rjsf/utils/-/utils-5.9.0.tgz", + "integrity": "sha512-+UBRrbHgbG/y6Lj32O0U5oiNpbpKZqsFxPKuOCmOqpsfwmb072AyGoHqskc2e05Ur/iURcbBu3xt72aF1azLmQ==", "dependencies": { "json-schema-merge-allof": "^0.8.1", "jsonpointer": "^5.0.1", @@ -1313,9 +1334,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "18.2.6", - "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.6.tgz", - "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", + "version": "18.2.15", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.15.tgz", + "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1329,10 +1350,8 @@ }, "node_modules/@types/web-bluetooth": { "version": "0.0.17", - "resolved": "https://repo.huaweicloud.com/repository/npm/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", + "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==" }, "node_modules/@vitejs/plugin-vue": { "version": "4.2.3", @@ -1352,7 +1371,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.3.4.tgz", "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.21.3", @@ -1365,7 +1383,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-core": "3.3.4", @@ -1376,7 +1393,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.15", @@ -1395,7 +1411,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.3.4", @@ -1412,7 +1427,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity/-/reactivity-3.3.4.tgz", "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", - "dev": true, "license": "MIT", "dependencies": { "@vue/shared": "3.3.4" @@ -1422,7 +1436,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.15", @@ -1436,7 +1449,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-core/-/runtime-core-3.3.4.tgz", "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", - "dev": true, "license": "MIT", "dependencies": { "@vue/reactivity": "3.3.4", @@ -1447,7 +1459,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", - "dev": true, "license": "MIT", "dependencies": { "@vue/runtime-core": "3.3.4", @@ -1459,7 +1470,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/server-renderer/-/server-renderer-3.3.4.tgz", "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-ssr": "3.3.4", @@ -1473,32 +1483,24 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.3.4.tgz", "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==", - "dev": true, "license": "MIT" }, "node_modules/@vueuse/core": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/core/-/core-10.1.2.tgz", - "integrity": "sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==", - "dev": true, - "license": "MIT", + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz", + "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==", "dependencies": { "@types/web-bluetooth": "^0.0.17", - "@vueuse/metadata": "10.1.2", - "@vueuse/shared": "10.1.2", - "vue-demi": ">=0.14.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "@vueuse/metadata": "10.2.1", + "@vueuse/shared": "10.2.1", + "vue-demi": ">=0.14.5" } }, "node_modules/@vueuse/core/node_modules/vue-demi": { "version": "0.14.5", - "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.5.tgz", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -1506,9 +1508,6 @@ "engines": { "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, "peerDependencies": { "@vue/composition-api": "^1.0.0-rc.1", "vue": "^3.0.0-0 || ^2.6.0" @@ -1520,18 +1519,14 @@ } }, "node_modules/@vueuse/integrations": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/integrations/-/integrations-10.1.2.tgz", - "integrity": "sha512-wUpG3Wv6LiWerOwCzOAM0iGhNQ4vfFUTkhj/xQy7TLXduh2M3D8N08aS0KqlxsejY6R8NLxydDIM+68QfHZZ8Q==", + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-10.2.1.tgz", + "integrity": "sha512-FDP5lni+z9FjHE9H3xuvwSjoRV9U8jmDvJpmHPCBjUgPGYRynwb60eHWXCFJXLUtb4gSIHy0e+iaEbrKdalCkQ==", "dev": true, - "license": "MIT", "dependencies": { - "@vueuse/core": "10.1.2", - "@vueuse/shared": "10.1.2", - "vue-demi": ">=0.14.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "@vueuse/core": "10.2.1", + "@vueuse/shared": "10.2.1", + "vue-demi": ">=0.14.5" }, "peerDependencies": { "async-validator": "*", @@ -1588,11 +1583,10 @@ }, "node_modules/@vueuse/integrations/node_modules/vue-demi": { "version": "0.14.5", - "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.5.tgz", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -1600,9 +1594,6 @@ "engines": { "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, "peerDependencies": { "@vue/composition-api": "^1.0.0-rc.1", "vue": "^3.0.0-0 || ^2.6.0" @@ -1614,35 +1605,23 @@ } }, "node_modules/@vueuse/metadata": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/metadata/-/metadata-10.1.2.tgz", - "integrity": "sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.2.1.tgz", + "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ==" }, "node_modules/@vueuse/shared": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/shared/-/shared-10.1.2.tgz", - "integrity": "sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==", - "dev": true, - "license": "MIT", + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.2.1.tgz", + "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==", "dependencies": { - "vue-demi": ">=0.14.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "vue-demi": ">=0.14.5" } }, "node_modules/@vueuse/shared/node_modules/vue-demi": { "version": "0.14.5", - "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.5.tgz", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -1650,9 +1629,6 @@ "engines": { "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, "peerDependencies": { "@vue/composition-api": "^1.0.0-rc.1", "vue": "^3.0.0-0 || ^2.6.0" @@ -1675,25 +1651,25 @@ } }, "node_modules/algoliasearch": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.17.2.tgz", - "integrity": "sha512-VFu43JJNYIW74awp7oeQcQsPcxOhd8psqBDTfyNO2Zt6L1NqnNMTVnaIdQ+8dtKqUDBqQZp0szPxECvX8CK2Fg==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.18.0.tgz", + "integrity": "sha512-pCuVxC1SVcpc08ENH32T4sLKSyzoU7TkRIDBMwSLfIiW+fq4znOmWDkAygHZ6pRcO9I1UJdqlfgnV7TRj+MXrA==", "dev": true, "dependencies": { - "@algolia/cache-browser-local-storage": "4.17.2", - "@algolia/cache-common": "4.17.2", - "@algolia/cache-in-memory": "4.17.2", - "@algolia/client-account": "4.17.2", - "@algolia/client-analytics": "4.17.2", - "@algolia/client-common": "4.17.2", - "@algolia/client-personalization": "4.17.2", - "@algolia/client-search": "4.17.2", - "@algolia/logger-common": "4.17.2", - "@algolia/logger-console": "4.17.2", - "@algolia/requester-browser-xhr": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/requester-node-http": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/cache-browser-local-storage": "4.18.0", + "@algolia/cache-common": "4.18.0", + "@algolia/cache-in-memory": "4.18.0", + "@algolia/client-account": "4.18.0", + "@algolia/client-analytics": "4.18.0", + "@algolia/client-common": "4.18.0", + "@algolia/client-personalization": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/logger-common": "4.18.0", + "@algolia/logger-console": "4.18.0", + "@algolia/requester-browser-xhr": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/requester-node-http": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "node_modules/ansi-colors": { @@ -1912,6 +1888,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -1973,7 +1950,6 @@ "version": "2.0.2", "resolved": "https://repo.huaweicloud.com/repository/npm/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, "license": "MIT" }, "node_modules/fast-deep-equal": { @@ -1982,13 +1958,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/focus-trap": { - "version": "7.4.3", - "resolved": "https://repo.huaweicloud.com/repository/npm/focus-trap/-/focus-trap-7.4.3.tgz", - "integrity": "sha512-BgSSbK4GPnS2VbtZ50VtOv1Sti6DIkj3+LkVjiWMNjLeAp1SH1UlLx3ULu/DCu4vq5R4/uvTm+zrvsMsuYmGLg==", + "version": "7.5.2", + "resolved": "https://registry.npmmirror.com/focus-trap/-/focus-trap-7.5.2.tgz", + "integrity": "sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==", "dev": true, - "license": "MIT", "dependencies": { - "tabbable": "^6.1.2" + "tabbable": "^6.2.0" } }, "node_modules/free-style": { @@ -2169,7 +2144,6 @@ "version": "0.30.0", "resolved": "https://repo.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.30.0.tgz", "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.13" @@ -2375,9 +2349,9 @@ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.4.25", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.25.tgz", + "integrity": "sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==", "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -2388,9 +2362,9 @@ } }, "node_modules/preact": { - "version": "10.15.1", - "resolved": "https://registry.npmmirror.com/preact/-/preact-10.15.1.tgz", - "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==", + "version": "10.16.0", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.16.0.tgz", + "integrity": "sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==", "dev": true }, "node_modules/prop-types": { @@ -2463,11 +2437,10 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/rollup": { - "version": "3.23.0", - "resolved": "https://repo.huaweicloud.com/repository/npm/rollup/-/rollup-3.23.0.tgz", - "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==", + "version": "3.26.2", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.26.2.tgz", + "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", "dev": true, - "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -2501,9 +2474,9 @@ } }, "node_modules/search-insights": { - "version": "2.6.0", - "resolved": "https://registry.npmmirror.com/search-insights/-/search-insights-2.6.0.tgz", - "integrity": "sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==", + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/search-insights/-/search-insights-2.7.0.tgz", + "integrity": "sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==", "dev": true, "peer": true, "engines": { @@ -2532,9 +2505,9 @@ } }, "node_modules/shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmmirror.com/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "version": "0.14.3", + "resolved": "https://registry.npmmirror.com/shiki/-/shiki-0.14.3.tgz", + "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", "dev": true, "dependencies": { "ansi-sequence-parser": "^1.1.0", @@ -2589,11 +2562,10 @@ "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" }, "node_modules/tabbable": { - "version": "6.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/tabbable/-/tabbable-6.1.2.tgz", - "integrity": "sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ==", - "dev": true, - "license": "MIT" + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true }, "node_modules/tr46": { "version": "0.0.3", @@ -2690,6 +2662,7 @@ "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.17.5", "postcss": "^8.4.23", @@ -2734,29 +2707,470 @@ } }, "node_modules/vitepress": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmmirror.com/vitepress/-/vitepress-1.0.0-beta.2.tgz", - "integrity": "sha512-DBXYjtYbm3W1IPPJ2TiCaK/XK+o/2XmL2+jslOGKm+txcbmG0kbeB+vadC5tCUZA9NdA+9Ywj3M4548c7t/SDg==", + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmmirror.com/vitepress/-/vitepress-1.0.0-beta.5.tgz", + "integrity": "sha512-/RjqqRsSEKkzF6HhK5e5Ij+bZ7ETb9jNCRRgIMm10gJ+ZLC3D1OqkE465lEqCeJUgt2HZ6jmWjDqIBfrJSpv7w==", "dev": true, "dependencies": { - "@docsearch/css": "^3.5.0", - "@docsearch/js": "^3.5.0", + "@docsearch/css": "^3.5.1", + "@docsearch/js": "^3.5.1", "@vitejs/plugin-vue": "^4.2.3", "@vue/devtools-api": "^6.5.0", - "@vueuse/core": "^10.1.2", - "@vueuse/integrations": "^10.1.2", + "@vueuse/core": "^10.2.1", + "@vueuse/integrations": "^10.2.1", "body-scroll-lock": "4.0.0-beta.0", "focus-trap": "^7.4.3", "mark.js": "8.11.1", "minisearch": "^6.1.0", - "shiki": "^0.14.2", - "vite": "^4.3.9", + "shiki": "^0.14.3", + "vite": "4.4.0-beta.3", "vue": "^3.3.4" }, "bin": { "vitepress": "bin/vitepress.js" } }, + "node_modules/vitepress/node_modules/@esbuild/android-arm": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.12.tgz", + "integrity": "sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/android-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.12.tgz", + "integrity": "sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/android-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.12.tgz", + "integrity": "sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.12.tgz", + "integrity": "sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/darwin-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.12.tgz", + "integrity": "sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.12.tgz", + "integrity": "sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.12.tgz", + "integrity": "sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-arm": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.12.tgz", + "integrity": "sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.12.tgz", + "integrity": "sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-ia32": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.12.tgz", + "integrity": "sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-loong64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.12.tgz", + "integrity": "sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.12.tgz", + "integrity": "sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.12.tgz", + "integrity": "sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.12.tgz", + "integrity": "sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-s390x": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.12.tgz", + "integrity": "sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/linux-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.12.tgz", + "integrity": "sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.12.tgz", + "integrity": "sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.12.tgz", + "integrity": "sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/sunos-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.12.tgz", + "integrity": "sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/win32-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.12.tgz", + "integrity": "sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/win32-ia32": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.12.tgz", + "integrity": "sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/@esbuild/win32-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.12.tgz", + "integrity": "sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitepress/node_modules/esbuild": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.12.tgz", + "integrity": "sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.12", + "@esbuild/android-arm64": "0.18.12", + "@esbuild/android-x64": "0.18.12", + "@esbuild/darwin-arm64": "0.18.12", + "@esbuild/darwin-x64": "0.18.12", + "@esbuild/freebsd-arm64": "0.18.12", + "@esbuild/freebsd-x64": "0.18.12", + "@esbuild/linux-arm": "0.18.12", + "@esbuild/linux-arm64": "0.18.12", + "@esbuild/linux-ia32": "0.18.12", + "@esbuild/linux-loong64": "0.18.12", + "@esbuild/linux-mips64el": "0.18.12", + "@esbuild/linux-ppc64": "0.18.12", + "@esbuild/linux-riscv64": "0.18.12", + "@esbuild/linux-s390x": "0.18.12", + "@esbuild/linux-x64": "0.18.12", + "@esbuild/netbsd-x64": "0.18.12", + "@esbuild/openbsd-x64": "0.18.12", + "@esbuild/sunos-x64": "0.18.12", + "@esbuild/win32-arm64": "0.18.12", + "@esbuild/win32-ia32": "0.18.12", + "@esbuild/win32-x64": "0.18.12" + } + }, + "node_modules/vitepress/node_modules/vite": { + "version": "4.4.0-beta.3", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.4.0-beta.3.tgz", + "integrity": "sha512-IC/thYTvArOFRJ4qvvudnu4KKZOVc+gduS3I9OfC5SbP/Rf4kkP7z6Of2QpKeOSVqwIK24khW6VOUmVD/0yzSQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.6", + "postcss": "^8.4.24", + "rollup": "^3.25.2" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, "node_modules/vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmmirror.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -2773,7 +3187,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/vue/-/vue-3.3.4.tgz", "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.3.4", @@ -2904,9 +3317,9 @@ } }, "node_modules/yjs": { - "version": "13.6.2", - "resolved": "https://registry.npmmirror.com/yjs/-/yjs-13.6.2.tgz", - "integrity": "sha512-shFc4JI8Hr3NqKYlS09xX6lyQwU3LvQlOXEkHK2aBa1T/luNLf0qHtoujgb9pRPxhIK0uevobHhDw0+AET1Vkw==", + "version": "13.6.6", + "resolved": "https://registry.npmmirror.com/yjs/-/yjs-13.6.6.tgz", + "integrity": "sha512-VTvezMeMuOra9jKG1Ym5XuQ2H4xXOubIIIupv/B5oygasa9IqDE7Ufv93QTSe9uz69J5VZGMQb2WTEmJv4kJFQ==", "dependencies": { "lib0": "^0.2.74" }, @@ -2918,174 +3331,173 @@ }, "dependencies": { "@algolia/autocomplete-core": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.2.tgz", - "integrity": "sha512-hkG80c9kx9ClVAEcUJbTd2ziVC713x9Bji9Ty4XJfKXlxlsx3iXsoNhAwfeR4ulzIUg7OE5gez0UU1zVDdG7kg==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", "dev": true, "requires": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.2", - "@algolia/autocomplete-shared": "1.9.2" + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" } }, "@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.2.tgz", - "integrity": "sha512-2LVsf4W66hVHQ3Ua/8k15oPlxjELCztbAkQm/hP42Sw+GLkHAdY1vaVRYziaWq64+Oljfg6FKkZHCdgXH+CGIA==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", "dev": true, "requires": { - "@algolia/autocomplete-shared": "1.9.2" + "@algolia/autocomplete-shared": "1.9.3" } }, "@algolia/autocomplete-preset-algolia": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.2.tgz", - "integrity": "sha512-pqgIm2GNqtCT59Y1ICctIPrYTi34+wNPiNWEclD/yDzp5uDUUsyGe5XrUjCNyQRTKonAlmYxoaEHOn8FWgmBHA==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", "dev": true, "requires": { - "@algolia/autocomplete-shared": "1.9.2" + "@algolia/autocomplete-shared": "1.9.3" } }, "@algolia/autocomplete-shared": { - "version": "1.9.2", - "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.2.tgz", - "integrity": "sha512-XxX6YDn+7LG+SmdpXEOnj7fc3TjiVpQ0CbGhjLwrd2tYr6LVY2D4Iiu/iuYJ4shvVDWWnpwArSk0uIWC/8OPUA==", + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", "dev": true, "requires": {} }, "@algolia/cache-browser-local-storage": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.17.2.tgz", - "integrity": "sha512-ZkVN7K/JE+qMQbpR6h3gQOGR6yCJpmucSBCmH5YDxnrYbp2CbrVCu0Nr+FGVoWzMJNznj1waShkfQ9awERulLw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.18.0.tgz", + "integrity": "sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==", "dev": true, "requires": { - "@algolia/cache-common": "4.17.2" + "@algolia/cache-common": "4.18.0" } }, "@algolia/cache-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/cache-common/-/cache-common-4.17.2.tgz", - "integrity": "sha512-fojbhYIS8ovfYs6hwZpy1O4mBfVRxNgAaZRqsdVQd54hU4MxYDYFCxagYX28lOBz7btcDHld6BMoWXvjzkx6iQ==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-common/-/cache-common-4.18.0.tgz", + "integrity": "sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==", "dev": true }, "@algolia/cache-in-memory": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/cache-in-memory/-/cache-in-memory-4.17.2.tgz", - "integrity": "sha512-UYQcMzPurNi+cPYkuPemTZkjKAjdgAS1hagC5irujKbrYnN4yscK4TkOI5tX+O8/KegtJt3kOK07OIrJ2QDAAw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-in-memory/-/cache-in-memory-4.18.0.tgz", + "integrity": "sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==", "dev": true, "requires": { - "@algolia/cache-common": "4.17.2" + "@algolia/cache-common": "4.18.0" } }, "@algolia/client-account": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-account/-/client-account-4.17.2.tgz", - "integrity": "sha512-doSk89pBPDpDyKJSHFADIGa2XSGrBCj3QwPvqtRJXDADpN+OjW+eTR8r4hEs/7X4GGfjfAOAES8JgDx+fZntYw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-account/-/client-account-4.18.0.tgz", + "integrity": "sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==", "dev": true, "requires": { - "@algolia/client-common": "4.17.2", - "@algolia/client-search": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "@algolia/client-analytics": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-4.17.2.tgz", - "integrity": "sha512-V+DcXbOtD/hKwAR3qGQrtlrJ3q2f9OKfx843q744o4m3xHv5ueCAvGXB1znPsdaUrVDNAImcgEgqwI9x7EJbDw==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-4.18.0.tgz", + "integrity": "sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==", "dev": true, "requires": { - "@algolia/client-common": "4.17.2", - "@algolia/client-search": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "@algolia/client-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-common/-/client-common-4.17.2.tgz", - "integrity": "sha512-gKBUnjxi0ukJYIJxVREYGt1Dmj1B3RBYbfGWi0dIPp1BC1VvQm+BOuNwsIwmq/x3MPO+sGuK978eKiP3tZDvag==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-common/-/client-common-4.18.0.tgz", + "integrity": "sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==", "dev": true, "requires": { - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "@algolia/client-personalization": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-4.17.2.tgz", - "integrity": "sha512-wc4UgOWxSYWz5wpuelNmlt895jA9twjZWM2ms17Ws8qCvBHF7OVGdMGgbysPB8790YnfvvDnSsWOv3CEj26Eow==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-4.18.0.tgz", + "integrity": "sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==", "dev": true, "requires": { - "@algolia/client-common": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "@algolia/client-search": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/client-search/-/client-search-4.17.2.tgz", - "integrity": "sha512-FUjIs+gRe0upJC++uVs4sdxMw15JxfkT86Gr/kqVwi9kcqaZhXntSbW/Fw959bIYXczjmeVQsilYvBWW4YvSZA==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-search/-/client-search-4.18.0.tgz", + "integrity": "sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==", "dev": true, "requires": { - "@algolia/client-common": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/client-common": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "@algolia/logger-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/logger-common/-/logger-common-4.17.2.tgz", - "integrity": "sha512-EfXuweUE+1HiSMsQidaDWA5Lv4NnStYIlh7PO5pLkI+sdhbMX0e5AO5nUAMIFM1VkEANes70RA8fzhP6OqCqQQ==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/logger-common/-/logger-common-4.18.0.tgz", + "integrity": "sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==", "dev": true }, "@algolia/logger-console": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/logger-console/-/logger-console-4.17.2.tgz", - "integrity": "sha512-JuG8HGVlJ+l/UEDK4h2Y8q/IEmRjQz1J0aS9tf6GPNbGYiSvMr1DDdZ+hqV3bb1XE6wU8Ypex56HisWMSpnG0A==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/logger-console/-/logger-console-4.18.0.tgz", + "integrity": "sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==", "dev": true, "requires": { - "@algolia/logger-common": "4.17.2" + "@algolia/logger-common": "4.18.0" } }, "@algolia/requester-browser-xhr": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.17.2.tgz", - "integrity": "sha512-FKI2lYWwksALfRt2OETFmGb5+P7WVc4py2Ai3H7k8FSfTLwVvs9WVVmtlx6oANQ8RFEK4B85h8DQJTJ29TDfmA==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.18.0.tgz", + "integrity": "sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==", "dev": true, "requires": { - "@algolia/requester-common": "4.17.2" + "@algolia/requester-common": "4.18.0" } }, "@algolia/requester-common": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/requester-common/-/requester-common-4.17.2.tgz", - "integrity": "sha512-Rfim23ztAhYpE9qm+KCfCRo+YLJCjiiTG+IpDdzUjMpYPhUtirQT0A35YEd/gKn86YNyydxS9w8iRSjwKh+L0A==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-common/-/requester-common-4.18.0.tgz", + "integrity": "sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==", "dev": true }, "@algolia/requester-node-http": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-4.17.2.tgz", - "integrity": "sha512-E0b0kyCDMvUIhQmDNd/mH4fsKJdEEX6PkMKrYJjzm6moo+rP22tqpq4Rfe7DZD8OB6/LsDD3zs3Kvd+L+M5wwQ==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-4.18.0.tgz", + "integrity": "sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==", "dev": true, "requires": { - "@algolia/requester-common": "4.17.2" + "@algolia/requester-common": "4.18.0" } }, "@algolia/transporter": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/@algolia/transporter/-/transporter-4.17.2.tgz", - "integrity": "sha512-m8pXlz5OnNzjD1rcw+duCN4jG4yEzkJBsvKYMoN22Oq6rQwy1AY5muZ+IQUs4dL+A364CYkRMLRWhvXpCZ1x+g==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/@algolia/transporter/-/transporter-4.18.0.tgz", + "integrity": "sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==", "dev": true, "requires": { - "@algolia/cache-common": "4.17.2", - "@algolia/logger-common": "4.17.2", - "@algolia/requester-common": "4.17.2" + "@algolia/cache-common": "4.18.0", + "@algolia/logger-common": "4.18.0", + "@algolia/requester-common": "4.18.0" } }, "@babel/parser": { "version": "7.22.3", "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.22.3.tgz", - "integrity": "sha512-vrukxyW/ep8UD1UDzOYpTKQ6abgjFoeG6L+4ar9+c5TN9QnlqiOi6QK7LSR5ewm/ERyGkT/Ai6VboNrxhbr9Uw==", - "dev": true + "integrity": "sha512-vrukxyW/ep8UD1UDzOYpTKQ6abgjFoeG6L+4ar9+c5TN9QnlqiOi6QK7LSR5ewm/ERyGkT/Ai6VboNrxhbr9Uw==" }, "@codemirror/autocomplete": { "version": "6.5.1", @@ -3109,9 +3521,9 @@ } }, "@codemirror/lang-sql": { - "version": "6.5.0", - "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.5.0.tgz", - "integrity": "sha512-ztJ+5lk0yWf4E7sQQqsidPYJa0a/511Ln/IaI3A+fGv6z0SrGDG0Lu6SAehczcehrhgNwMhPlerJMeXw7vZs2g==", + "version": "6.5.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.5.2.tgz", + "integrity": "sha512-VYiCbApDDRUVx3k0jtZ+b5h2hMkMKZpPR9tx+VgVA3Euuf2MVjVsjx/S2+4AlJjKjS5J6z9+4bEvtponK96e4A==", "requires": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -3149,30 +3561,30 @@ } }, "@docsearch/css": { - "version": "3.5.0", - "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-3.5.0.tgz", - "integrity": "sha512-Ob5FQLubplcBNihAVtriR59FRBeP8u69F6mu4L4yIr60KfsPc10bOV0DoPErJw0zF9IBN2cNLW9qdmt8zWPxyg==", + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-3.5.1.tgz", + "integrity": "sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==", "dev": true }, "@docsearch/js": { - "version": "3.5.0", - "resolved": "https://registry.npmmirror.com/@docsearch/js/-/js-3.5.0.tgz", - "integrity": "sha512-WqB+z+zVKSXDkGq028nClT9RvMzfFlemZuIulX5ZwWkdUtl4k7M9cmZA/c6kuZf7FG24XQsMHWuBjeUo9hLRyA==", + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/@docsearch/js/-/js-3.5.1.tgz", + "integrity": "sha512-EXi8de5njxgP6TV3N9ytnGRLG9zmBNTEZjR4VzwPcpPLbZxxTLG2gaFyJyKiFVQxHW/DPlMrDJA3qoRRGEkgZw==", "dev": true, "requires": { - "@docsearch/react": "3.5.0", + "@docsearch/react": "3.5.1", "preact": "^10.0.0" } }, "@docsearch/react": { - "version": "3.5.0", - "resolved": "https://registry.npmmirror.com/@docsearch/react/-/react-3.5.0.tgz", - "integrity": "sha512-3IG8mmSMzSHNGy2S1VuPyYU9tFCxFpj5Ov8SYwsSHM4yMvFsaO9oFxXocA5lSenliIELhuOuS5+BdxHa/Qlf2A==", + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/@docsearch/react/-/react-3.5.1.tgz", + "integrity": "sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==", "dev": true, "requires": { - "@algolia/autocomplete-core": "1.9.2", - "@algolia/autocomplete-preset-algolia": "1.9.2", - "@docsearch/css": "3.5.0", + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.5.1", "algoliasearch": "^4.0.0" } }, @@ -3181,154 +3593,176 @@ "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/android-arm/-/android-arm-0.17.19.tgz", "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/android-arm64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/android-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/android-x64/-/android-x64-0.17.19.tgz", "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/darwin-arm64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/darwin-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/freebsd-arm64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/freebsd-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-arm": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-arm64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-ia32": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-loong64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-mips64el": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-ppc64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-riscv64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-s390x": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/netbsd-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/openbsd-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/sunos-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/win32-arm64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/win32-ia32": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/win32-x64": { "version": "0.17.19", "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@fortawesome/fontawesome-free": { "version": "5.15.4", @@ -3338,8 +3772,7 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://repo.huaweicloud.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "@jupyter/ydoc": { "version": "1.0.2", @@ -3355,20 +3788,20 @@ } }, "@jupyterlab/application": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/application/-/application-4.0.2.tgz", - "integrity": "sha512-sFF2YJBRiJGu6Jx2PE/JRwmwuLTs9eHEoqaZGCD6H4loj8iDlCuwb26JVmbCz94QzgB00KFMYCBV6K7UWhid9g==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/application/-/application-4.0.3.tgz", + "integrity": "sha512-fnZe+j3ZJg0zVZuDxHOkafqhB9SFiIWestFqfJ+2bvnPxVfBd5kAJdGi8U56TV4KxKdNbhnRV4POIQAedtCoRA==", "requires": { "@fortawesome/fontawesome-free": "^5.12.0", - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/docregistry": "^4.0.2", - "@jupyterlab/rendermime": "^4.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/statedb": "^4.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/docregistry": "^4.0.3", + "@jupyterlab/rendermime": "^4.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/statedb": "^4.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/application": "^2.1.1", "@lumino/commands": "^2.1.1", @@ -3389,19 +3822,19 @@ } }, "@jupyterlab/apputils": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/apputils/-/apputils-4.1.2.tgz", - "integrity": "sha512-Gj4xd4i+y7j6W1n+cJVA+LBC20fcFUanxDxZfaYwfSFA9b/7ijx3dfw9zRY9taqzBdun17HCjynvLbOJfMwYEg==", + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/apputils/-/apputils-4.1.3.tgz", + "integrity": "sha512-63k/fYrHkIePxT9ATMw76oSBqqTYDS3uBLNRxCB/B6MLYJeSN1Zo6Wsky+LdanuUAqtvXYMady0WTiSo1P1mzQ==", "requires": { - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/settingregistry": "^4.0.2", - "@jupyterlab/statedb": "^4.0.2", - "@jupyterlab/statusbar": "^4.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/settingregistry": "^4.0.3", + "@jupyterlab/statedb": "^4.0.3", + "@jupyterlab/statusbar": "^4.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", @@ -3424,18 +3857,18 @@ } }, "@jupyterlab/codeeditor": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/codeeditor/-/codeeditor-4.0.2.tgz", - "integrity": "sha512-7YmKs8litDFfB1oGUcA6SKylx8VnBYDW5fqbLapzhhvBQD5lPK/Gk3vaDF5U8BwsjQqHVeK2+5ZJPYKJYKGzGg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/codeeditor/-/codeeditor-4.0.3.tgz", + "integrity": "sha512-dBgAbHj04ff6lTf31HTPKs2P1iK1G/Y3ah2AGLHhK6p1JEDwH09/3fMrOQhfKa8Ehy/cXe8mNdTydeguxzdOwQ==", "requires": { "@codemirror/state": "^6.2.0", "@jupyter/ydoc": "^1.0.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/statusbar": "^4.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/statusbar": "^4.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", "@lumino/dragdrop": "^2.1.1", @@ -3453,9 +3886,9 @@ } }, "@jupyterlab/coreutils": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/coreutils/-/coreutils-6.0.2.tgz", - "integrity": "sha512-jSGATyE11MuX1gbH/QYJZkYh8ddbV8SdRQ36U5Exy/oAL0ukF6vqfpIpDpo/EAW+p9aDBlSnvi3WtgyVQcltqg==", + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/coreutils/-/coreutils-6.0.3.tgz", + "integrity": "sha512-4OUzPBw9TXUIiqj0+cujD1d6u0wuIc00P9BNLLZrH6O1SVt2boQaD5TpDtBx1z6hLgg0URXvM497ZtjBntwknA==", "requires": { "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -3473,20 +3906,20 @@ } }, "@jupyterlab/docregistry": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/docregistry/-/docregistry-4.0.2.tgz", - "integrity": "sha512-juWWfov9RK0fuvhj7ckVgmYqiwQPFSoKs040Wv9nppnYDfNJDQQmQMPFlSJA0irZ9AxfTyf1+TjRe+WVQcHvvg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/docregistry/-/docregistry-4.0.3.tgz", + "integrity": "sha512-Gt8U6c2aaezMzyRzHUa3SBRPTALX8nvlx/x6Q6EtY31ng6BU2/EulS9e3PCzrFhxg+gxeyyQsm4CqLfzV2Pvdw==", "requires": { "@jupyter/ydoc": "^1.0.2", - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/codeeditor": "^4.0.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime": "^4.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/translation": "^4.0.2", - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/codeeditor": "^4.0.3", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime": "^4.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/translation": "^4.0.3", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -3504,18 +3937,18 @@ } }, "@jupyterlab/mathjax2": { - "version": "3.6.4", - "resolved": "https://registry.npmmirror.com/@jupyterlab/mathjax2/-/mathjax2-3.6.4.tgz", - "integrity": "sha512-NQKt/u51svG719aIBLipcEopaZNBNuxzzR+J9NNiLTLHT+3Z6iq1N+vs3h9aN2jYyOwtboZesZ2AtGK7KQ/OrA==", + "version": "3.6.5", + "resolved": "https://registry.npmmirror.com/@jupyterlab/mathjax2/-/mathjax2-3.6.5.tgz", + "integrity": "sha512-TBVhwxzKyCy+Qg4J8Vtryctay4zhd0NfBOWMfpDW2gEIRk+uHdLEZNovsuY3XivH2Rv+Y873aBPR8vGsylYV+Q==", "requires": { - "@jupyterlab/rendermime-interfaces": "^3.6.4", + "@jupyterlab/rendermime-interfaces": "^3.6.5", "@lumino/coreutils": "^1.11.0" } }, "@jupyterlab/nbformat": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/nbformat/-/nbformat-4.0.2.tgz", - "integrity": "sha512-K83wDb1iUViTk4mj228SR4E0GPASiykXcD/tVYAOvxWv8TsaZ2UK/dcX4ZtBEZpVqI5enRrq8Z7xISMR+3CRBg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/nbformat/-/nbformat-4.0.3.tgz", + "integrity": "sha512-wpOktEi5XLPrAvTH+xkimeDghOz+oj1lPUHLeRTzcYBZfMybHQxV9XKfroXllcypkyqSBI5Ppfv6/GYeQQzmHQ==", "requires": { "@lumino/coreutils": "^2.1.1" }, @@ -3528,9 +3961,9 @@ } }, "@jupyterlab/observables": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/observables/-/observables-5.0.2.tgz", - "integrity": "sha512-mZowpnUrfKqjc2OjwBjI4je2idMaoM3OURCcPMlcCVCZUUiFEB2SOCx8/1jWrotw/er5Cjp7vROZ7Iz8BiIW1g==", + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/observables/-/observables-5.0.3.tgz", + "integrity": "sha512-g71z04PIl7i7PrJDEXFirTwCjotXgVl/9WCYDXdXGIN5QDUkY4P8b1J7aRNaZxW0dTa3FA+W5zOD4EdfFDNeNg==", "requires": { "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", @@ -3547,17 +3980,17 @@ } }, "@jupyterlab/rendermime": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime/-/rendermime-4.0.2.tgz", - "integrity": "sha512-x5nPqwGnJCkbS6+jEmhN/fKNSM22DCbO+vwZYAa8dbcL+xURRE7iockxX6cpdHhMNeQ/JlZ5m4HQyTmIzd4N/Q==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime/-/rendermime-4.0.3.tgz", + "integrity": "sha512-Bb9OMtyVN4hBPvnnPMS0q1CStmXK7Owlf3PWokGmyNFBBwheoEgPu3+gIuUpolDpQdDsq/AFOCQj1eLVHekPTQ==", "requires": { - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/translation": "^4.0.2", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/translation": "^4.0.3", "@lumino/coreutils": "^2.1.1", "@lumino/messaging": "^2.0.0", "@lumino/signaling": "^2.1.1", @@ -3573,9 +4006,9 @@ } }, "@jupyterlab/rendermime-interfaces": { - "version": "3.8.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.8.2.tgz", - "integrity": "sha512-IOnzA/ccfwXGO/RaWysYn74ojJ7PaH5igTnS0sjo4qIprFZ6tCORTrKF594BA7Qz6PpW2+GpdUVMUnnYdU5R9Q==", + "version": "3.8.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.8.3.tgz", + "integrity": "sha512-XG0Wp/WMXcWdAILej766VpeXUAN31XYSAW9mMTw5Y+SQFfBAmHBekLMp+/+aG8n3ngqXcALeYIwBR3eF4QsKcA==", "requires": { "@lumino/coreutils": "^1.11.0 || ^2.1.1", "@lumino/widgets": "^1.37.2 || ^2.1.1" @@ -3589,15 +4022,15 @@ } }, "@jupyterlab/services": { - "version": "7.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/services/-/services-7.0.2.tgz", - "integrity": "sha512-luhc5wVdojQ0kVM1EMv7HkI6eiEU36Sj69a0vNRFj2U+VcgN9Dicb+vlOZnS1cOOGNhSRjKuaREkXRfEETsq3A==", + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/services/-/services-7.0.3.tgz", + "integrity": "sha512-JeOsylwfSIjDMUktB3qRXYJ7hJkrHHdwo2PDGgtT4Uevdw1SB7eBCfYA2B9IIDUKJBfV6BWqbqMWz/DNOgDPwg==", "requires": { "@jupyter/ydoc": "^1.0.2", - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/settingregistry": "^4.0.2", - "@jupyterlab/statedb": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/settingregistry": "^4.0.3", + "@jupyterlab/statedb": "^4.0.3", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", "@lumino/polling": "^2.1.1", @@ -3614,12 +4047,12 @@ } }, "@jupyterlab/settingregistry": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/settingregistry/-/settingregistry-4.0.2.tgz", - "integrity": "sha512-c0HrgJescIoEz+DWm1wt7pNYGaMK1kq+7Ask8BRJBWJwwg9RuIrgPUd58Kc14YGNvIvDTPvgltUunhQIBZJQzg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/settingregistry/-/settingregistry-4.0.3.tgz", + "integrity": "sha512-hwOJkp9xW0K68in+Mi11SzqAcVU95hBTOPKRDvpjHjvURA6BUHeYYCSlpre1kzBn6FrySP9DCmOnK9wb/82KoA==", "requires": { - "@jupyterlab/nbformat": "^4.0.2", - "@jupyterlab/statedb": "^4.0.2", + "@jupyterlab/nbformat": "^4.0.3", + "@jupyterlab/statedb": "^4.0.3", "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -3637,9 +4070,9 @@ } }, "@jupyterlab/statedb": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/statedb/-/statedb-4.0.2.tgz", - "integrity": "sha512-erVHlzJkd8xPsOHyAlImJgOAS9ohq4zRloX2+VMpCJHeYrK5z/KO9mVQlAFFC1JNlm3C3JjnvZBbTAZshzsMHA==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statedb/-/statedb-4.0.3.tgz", + "integrity": "sha512-/RDoOKYOR2+fIa9gVoNXjwXRQCZqcF0ilwJlyVz6um8hWqDDUlG/lJpUV6A2LZ0nnX6o7+RPQlKkW+6ns7WX8A==", "requires": { "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", @@ -3656,11 +4089,11 @@ } }, "@jupyterlab/statusbar": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/statusbar/-/statusbar-4.0.2.tgz", - "integrity": "sha512-5p3tSG/VM8TQ1SDIPRYBK0P2Bh+2VK1eCiCna/Zane3OHZww99JM+7yySiGYffbJuhD5ZHp+a8IYXAbAE5xVOg==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statusbar/-/statusbar-4.0.3.tgz", + "integrity": "sha512-oGCrkD1xBfNP84xD0EJ7kuzRnxLrH2HqoB9x+EksrqglrFWreUnx/cq2KImBctsOr3w2zyoqIXF9W23gy0xk5A==", "requires": { - "@jupyterlab/ui-components": "^4.0.2", + "@jupyterlab/ui-components": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", @@ -3678,24 +4111,24 @@ } }, "@jupyterlab/theme-light-extension": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/theme-light-extension/-/theme-light-extension-4.0.2.tgz", - "integrity": "sha512-HFwCXbe/3u3Feo/XQEN3zd15Hsa2TGgBAVuViZ935BZ0sipATpiNYWAmLx2HBqUisuI/zN6Lrkh8Uw1S73WBOQ==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/theme-light-extension/-/theme-light-extension-4.0.3.tgz", + "integrity": "sha512-Wp2mIW0W47x2vU0JnTBS/8iuvFJQ44QRjdhWYMPaRmVpqScP8nqgUV36gx1VqYNkuZL2qlreF8PBj4TRxgZmYA==", "requires": { - "@jupyterlab/application": "^4.0.2", - "@jupyterlab/apputils": "^4.1.2", - "@jupyterlab/translation": "^4.0.2" + "@jupyterlab/application": "^4.0.3", + "@jupyterlab/apputils": "^4.1.3", + "@jupyterlab/translation": "^4.0.3" } }, "@jupyterlab/translation": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/translation/-/translation-4.0.2.tgz", - "integrity": "sha512-EiYk/dt4hBAnrHKw7YXfeKmqvug6bWadQVthY0lRE18FuSKVAOgWv2qRAxOSZEWiFyUjEKutUg5OOms6KCHZFA==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/translation/-/translation-4.0.3.tgz", + "integrity": "sha512-II6xupfMXkzvLVrQb60gm/sLkPf2LsHgvk1jCeOdH+4N+lbzpMsL9mxkNj7egH9FbLbW7OWqrzBb8h3MksYrPg==", "requires": { - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/services": "^7.0.2", - "@jupyterlab/statedb": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/services": "^7.0.3", + "@jupyterlab/statedb": "^4.0.3", "@lumino/coreutils": "^2.1.1" }, "dependencies": { @@ -3707,14 +4140,14 @@ } }, "@jupyterlab/ui-components": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@jupyterlab/ui-components/-/ui-components-4.0.2.tgz", - "integrity": "sha512-TdLgTmHzi4NuRXUCls0Nh2+C2x66tQzimQRt6hRklpB9RCI2uNcr23HXe70Dc+nNXNHwXePbnT+MAsLbWHjfDw==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/ui-components/-/ui-components-4.0.3.tgz", + "integrity": "sha512-6rbqufHggkI501Pbe1hYCKsnXHje2OCUuc25SVSEgXybyDESTfyZqR4ahv0/0g4PXECWflIQakNFEaqQiAT0yg==", "requires": { - "@jupyterlab/coreutils": "^6.0.2", - "@jupyterlab/observables": "^5.0.2", - "@jupyterlab/rendermime-interfaces": "^3.8.2", - "@jupyterlab/translation": "^4.0.2", + "@jupyterlab/coreutils": "^6.0.3", + "@jupyterlab/observables": "^5.0.3", + "@jupyterlab/rendermime-interfaces": "^3.8.3", + "@jupyterlab/translation": "^4.0.3", "@lumino/algorithm": "^2.0.0", "@lumino/commands": "^2.1.1", "@lumino/coreutils": "^2.1.1", @@ -3775,13 +4208,13 @@ "integrity": "sha512-SwM/8U1zlMWMJj00wTCThdTUit9zap2Xghuo4uUxvZ+mfog5b1UIk2j1dP8TPpzEXHCDPEb85s2/ERo1tee3Dw==" }, "@lumino/application": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/application/-/application-2.1.1.tgz", - "integrity": "sha512-TjkM3Iwt6pxv6pksEXSCXRxp1DLCsyHgTiURYETeRZBnRXTDJzhjPQr4K1VOZRH1ToLeeVNoyHmI+b9rWQSewQ==", + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@lumino/application/-/application-2.2.0.tgz", + "integrity": "sha512-hivdDH2/YiOLtvsfY60GSUc+d6Rxh07dz6wp8ZnoalFmzdqqI8mcW4H30PchVdmqxXK0qxZIjLlP9A3fOu/xIw==", "requires": { - "@lumino/commands": "^2.1.1", + "@lumino/commands": "^2.1.2", "@lumino/coreutils": "^2.1.1", - "@lumino/widgets": "^2.1.1" + "@lumino/widgets": "^2.2.0" }, "dependencies": { "@lumino/coreutils": { @@ -3800,9 +4233,9 @@ } }, "@lumino/commands": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/commands/-/commands-2.1.1.tgz", - "integrity": "sha512-KaEkRCemZ7BZM4wCvsLx+oSdPxdggdg0p+1+FXm8d9adsVV8xwxrEAAgEP4/YPytexgyf7OnKT9aOpuss/VGjA==", + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@lumino/commands/-/commands-2.1.2.tgz", + "integrity": "sha512-wdA7kx2z0oygD44yQo5Tlk+yViKqmjTqwQSg2jfKfGyVOrwM3i1NXdZ8ntIV8WQIHmg24D2WqElwjUq5G7bGlw==", "requires": { "@lumino/algorithm": "^2.0.0", "@lumino/coreutils": "^2.1.1", @@ -3840,9 +4273,9 @@ "integrity": "sha512-GYsz6CS6Gd+7r9IBe/0m+3/xAuOKrjfiXwWt7OLsOM1icRv93yS+gxleCLp2+LSwoqU90sqfav+uYABtPkA4QA==" }, "@lumino/dragdrop": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/dragdrop/-/dragdrop-2.1.1.tgz", - "integrity": "sha512-TRrKo8sWx0cnZ1X8U8Rqijd0lQ82Fgu+BseVy3zDYiANwt9jMMOPjp1qzVY2/lDCmuZptYbUKXOznS0khzCUTg==", + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@lumino/dragdrop/-/dragdrop-2.1.2.tgz", + "integrity": "sha512-89Sc2HpGHQnzQx4/A/oVmS1uOfy4YjRJtNvdr/7zoUeJTib9vxKvlzrsRopLqvmyQPzJMnulEkiWuWsgzNnLeA==", "requires": { "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1" @@ -3916,16 +4349,16 @@ } }, "@lumino/widgets": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/@lumino/widgets/-/widgets-2.1.1.tgz", - "integrity": "sha512-SpZ9ekxrc1KSdP8DqAUyTyCfAbBl0swyzzYI9bXNnmi6DzUGSsgE2c985pl+tY8DXHIIOVHQey267psZ35Hp1w==", + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@lumino/widgets/-/widgets-2.2.0.tgz", + "integrity": "sha512-nQ5UXjcl+Tvddeev0We5aoW2erm5KffKCJZEo6/1i4t2cj90v2ndqtXtbiCjeQOBDojIH6u1BVPtUExTh00cbA==", "requires": { "@lumino/algorithm": "^2.0.0", - "@lumino/commands": "^2.1.1", + "@lumino/commands": "^2.1.2", "@lumino/coreutils": "^2.1.1", "@lumino/disposable": "^2.1.1", "@lumino/domutils": "^2.0.0", - "@lumino/dragdrop": "^2.1.1", + "@lumino/dragdrop": "^2.1.2", "@lumino/keyboard": "^2.0.0", "@lumino/messaging": "^2.0.0", "@lumino/properties": "^2.0.0", @@ -3941,9 +4374,9 @@ } }, "@rjsf/core": { - "version": "5.8.1", - "resolved": "https://registry.npmmirror.com/@rjsf/core/-/core-5.8.1.tgz", - "integrity": "sha512-+lJKK/fdVO+DqKhSzSY8bjyAv5weoLw44d/DnCn2U8/l9qY0nqfNSvG6gyZIC9kCNnzLS/76XFAltWXgtjjzFQ==", + "version": "5.9.0", + "resolved": "https://registry.npmmirror.com/@rjsf/core/-/core-5.9.0.tgz", + "integrity": "sha512-HYgnWKTGVfbj6bs1O9SYyw4VgBfoISZeQti259aiKK08XDVH+tgThxBMX4CyMjC/K9I4ralRV9KRlGO1un0DzQ==", "requires": { "lodash": "^4.17.21", "lodash-es": "^4.17.21", @@ -3953,9 +4386,9 @@ } }, "@rjsf/utils": { - "version": "5.8.1", - "resolved": "https://registry.npmmirror.com/@rjsf/utils/-/utils-5.8.1.tgz", - "integrity": "sha512-kzWVNAW417ADG0nSEPxpqYzLrtzi9tKCCn5rOuwt6FIvSrtkatISBekyKNeycGPUfQR9VkROGrcG8cz10xUs6g==", + "version": "5.9.0", + "resolved": "https://registry.npmmirror.com/@rjsf/utils/-/utils-5.9.0.tgz", + "integrity": "sha512-+UBRrbHgbG/y6Lj32O0U5oiNpbpKZqsFxPKuOCmOqpsfwmb072AyGoHqskc2e05Ur/iURcbBu3xt72aF1azLmQ==", "requires": { "json-schema-merge-allof": "^0.8.1", "jsonpointer": "^5.0.1", @@ -3970,9 +4403,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "@types/react": { - "version": "18.2.6", - "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.6.tgz", - "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", + "version": "18.2.15", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.15.tgz", + "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -3986,9 +4419,8 @@ }, "@types/web-bluetooth": { "version": "0.0.17", - "resolved": "https://repo.huaweicloud.com/repository/npm/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", + "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==" }, "@vitejs/plugin-vue": { "version": "4.2.3", @@ -4001,7 +4433,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.3.4.tgz", "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", - "dev": true, "requires": { "@babel/parser": "^7.21.3", "@vue/shared": "3.3.4", @@ -4013,7 +4444,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", - "dev": true, "requires": { "@vue/compiler-core": "3.3.4", "@vue/shared": "3.3.4" @@ -4023,7 +4453,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", - "dev": true, "requires": { "@babel/parser": "^7.20.15", "@vue/compiler-core": "3.3.4", @@ -4041,7 +4470,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", - "dev": true, "requires": { "@vue/compiler-dom": "3.3.4", "@vue/shared": "3.3.4" @@ -4057,7 +4485,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity/-/reactivity-3.3.4.tgz", "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", - "dev": true, "requires": { "@vue/shared": "3.3.4" } @@ -4066,7 +4493,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", - "dev": true, "requires": { "@babel/parser": "^7.20.15", "@vue/compiler-core": "3.3.4", @@ -4079,7 +4505,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-core/-/runtime-core-3.3.4.tgz", "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", - "dev": true, "requires": { "@vue/reactivity": "3.3.4", "@vue/shared": "3.3.4" @@ -4089,7 +4514,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", - "dev": true, "requires": { "@vue/runtime-core": "3.3.4", "@vue/shared": "3.3.4", @@ -4100,7 +4524,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/server-renderer/-/server-renderer-3.3.4.tgz", "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", - "dev": true, "requires": { "@vue/compiler-ssr": "3.3.4", "@vue/shared": "3.3.4" @@ -4109,44 +4532,41 @@ "@vue/shared": { "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==", - "dev": true + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, "@vueuse/core": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/core/-/core-10.1.2.tgz", - "integrity": "sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==", - "dev": true, + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz", + "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==", "requires": { "@types/web-bluetooth": "^0.0.17", - "@vueuse/metadata": "10.1.2", - "@vueuse/shared": "10.1.2", - "vue-demi": ">=0.14.0" + "@vueuse/metadata": "10.2.1", + "@vueuse/shared": "10.2.1", + "vue-demi": ">=0.14.5" }, "dependencies": { "vue-demi": { "version": "0.14.5", - "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.5.tgz", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, "requires": {} } } }, "@vueuse/integrations": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/integrations/-/integrations-10.1.2.tgz", - "integrity": "sha512-wUpG3Wv6LiWerOwCzOAM0iGhNQ4vfFUTkhj/xQy7TLXduh2M3D8N08aS0KqlxsejY6R8NLxydDIM+68QfHZZ8Q==", + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-10.2.1.tgz", + "integrity": "sha512-FDP5lni+z9FjHE9H3xuvwSjoRV9U8jmDvJpmHPCBjUgPGYRynwb60eHWXCFJXLUtb4gSIHy0e+iaEbrKdalCkQ==", "dev": true, "requires": { - "@vueuse/core": "10.1.2", - "@vueuse/shared": "10.1.2", - "vue-demi": ">=0.14.0" + "@vueuse/core": "10.2.1", + "@vueuse/shared": "10.2.1", + "vue-demi": ">=0.14.5" }, "dependencies": { "vue-demi": { "version": "0.14.5", - "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.5.tgz", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", "dev": true, "requires": {} @@ -4154,25 +4574,22 @@ } }, "@vueuse/metadata": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/metadata/-/metadata-10.1.2.tgz", - "integrity": "sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==", - "dev": true + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.2.1.tgz", + "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ==" }, "@vueuse/shared": { - "version": "10.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/shared/-/shared-10.1.2.tgz", - "integrity": "sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==", - "dev": true, + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.2.1.tgz", + "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==", "requires": { - "vue-demi": ">=0.14.0" + "vue-demi": ">=0.14.5" }, "dependencies": { "vue-demi": { "version": "0.14.5", - "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.5.tgz", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, "requires": {} } } @@ -4189,25 +4606,25 @@ } }, "algoliasearch": { - "version": "4.17.2", - "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.17.2.tgz", - "integrity": "sha512-VFu43JJNYIW74awp7oeQcQsPcxOhd8psqBDTfyNO2Zt6L1NqnNMTVnaIdQ+8dtKqUDBqQZp0szPxECvX8CK2Fg==", + "version": "4.18.0", + "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.18.0.tgz", + "integrity": "sha512-pCuVxC1SVcpc08ENH32T4sLKSyzoU7TkRIDBMwSLfIiW+fq4znOmWDkAygHZ6pRcO9I1UJdqlfgnV7TRj+MXrA==", "dev": true, "requires": { - "@algolia/cache-browser-local-storage": "4.17.2", - "@algolia/cache-common": "4.17.2", - "@algolia/cache-in-memory": "4.17.2", - "@algolia/client-account": "4.17.2", - "@algolia/client-analytics": "4.17.2", - "@algolia/client-common": "4.17.2", - "@algolia/client-personalization": "4.17.2", - "@algolia/client-search": "4.17.2", - "@algolia/logger-common": "4.17.2", - "@algolia/logger-console": "4.17.2", - "@algolia/requester-browser-xhr": "4.17.2", - "@algolia/requester-common": "4.17.2", - "@algolia/requester-node-http": "4.17.2", - "@algolia/transporter": "4.17.2" + "@algolia/cache-browser-local-storage": "4.18.0", + "@algolia/cache-common": "4.18.0", + "@algolia/cache-in-memory": "4.18.0", + "@algolia/client-account": "4.18.0", + "@algolia/client-analytics": "4.18.0", + "@algolia/client-common": "4.18.0", + "@algolia/client-personalization": "4.18.0", + "@algolia/client-search": "4.18.0", + "@algolia/logger-common": "4.18.0", + "@algolia/logger-console": "4.18.0", + "@algolia/requester-browser-xhr": "4.18.0", + "@algolia/requester-common": "4.18.0", + "@algolia/requester-node-http": "4.18.0", + "@algolia/transporter": "4.18.0" } }, "ansi-colors": { @@ -4392,6 +4809,7 @@ "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild/-/esbuild-0.17.19.tgz", "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, + "peer": true, "requires": { "@esbuild/android-arm": "0.17.19", "@esbuild/android-arm64": "0.17.19", @@ -4437,8 +4855,7 @@ "estree-walker": { "version": "2.0.2", "resolved": "https://repo.huaweicloud.com/repository/npm/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "fast-deep-equal": { "version": "3.1.3", @@ -4446,12 +4863,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "focus-trap": { - "version": "7.4.3", - "resolved": "https://repo.huaweicloud.com/repository/npm/focus-trap/-/focus-trap-7.4.3.tgz", - "integrity": "sha512-BgSSbK4GPnS2VbtZ50VtOv1Sti6DIkj3+LkVjiWMNjLeAp1SH1UlLx3ULu/DCu4vq5R4/uvTm+zrvsMsuYmGLg==", + "version": "7.5.2", + "resolved": "https://registry.npmmirror.com/focus-trap/-/focus-trap-7.5.2.tgz", + "integrity": "sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==", "dev": true, "requires": { - "tabbable": "^6.1.2" + "tabbable": "^6.2.0" } }, "free-style": { @@ -4593,7 +5010,6 @@ "version": "0.30.0", "resolved": "https://repo.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.30.0.tgz", "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, "requires": { "@jridgewell/sourcemap-codec": "^1.4.13" } @@ -4756,9 +5172,9 @@ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.4.25", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.25.tgz", + "integrity": "sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==", "requires": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -4766,9 +5182,9 @@ } }, "preact": { - "version": "10.15.1", - "resolved": "https://registry.npmmirror.com/preact/-/preact-10.15.1.tgz", - "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==", + "version": "10.16.0", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.16.0.tgz", + "integrity": "sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==", "dev": true }, "prop-types": { @@ -4831,9 +5247,9 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "rollup": { - "version": "3.23.0", - "resolved": "https://repo.huaweicloud.com/repository/npm/rollup/-/rollup-3.23.0.tgz", - "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==", + "version": "3.26.2", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.26.2.tgz", + "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -4861,9 +5277,9 @@ } }, "search-insights": { - "version": "2.6.0", - "resolved": "https://registry.npmmirror.com/search-insights/-/search-insights-2.6.0.tgz", - "integrity": "sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==", + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/search-insights/-/search-insights-2.7.0.tgz", + "integrity": "sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==", "dev": true, "peer": true }, @@ -4883,9 +5299,9 @@ "dev": true }, "shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmmirror.com/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "version": "0.14.3", + "resolved": "https://registry.npmmirror.com/shiki/-/shiki-0.14.3.tgz", + "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", "dev": true, "requires": { "ansi-sequence-parser": "^1.1.0", @@ -4930,9 +5346,9 @@ "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" }, "tabbable": { - "version": "6.1.2", - "resolved": "https://repo.huaweicloud.com/repository/npm/tabbable/-/tabbable-6.1.2.tgz", - "integrity": "sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ==", + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", "dev": true }, "tr46": { @@ -5028,6 +5444,7 @@ "resolved": "https://repo.huaweicloud.com/repository/npm/vite/-/vite-4.3.9.tgz", "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", "dev": true, + "peer": true, "requires": { "esbuild": "^0.17.5", "fsevents": "~2.3.2", @@ -5036,24 +5453,222 @@ } }, "vitepress": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmmirror.com/vitepress/-/vitepress-1.0.0-beta.2.tgz", - "integrity": "sha512-DBXYjtYbm3W1IPPJ2TiCaK/XK+o/2XmL2+jslOGKm+txcbmG0kbeB+vadC5tCUZA9NdA+9Ywj3M4548c7t/SDg==", + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmmirror.com/vitepress/-/vitepress-1.0.0-beta.5.tgz", + "integrity": "sha512-/RjqqRsSEKkzF6HhK5e5Ij+bZ7ETb9jNCRRgIMm10gJ+ZLC3D1OqkE465lEqCeJUgt2HZ6jmWjDqIBfrJSpv7w==", "dev": true, "requires": { - "@docsearch/css": "^3.5.0", - "@docsearch/js": "^3.5.0", + "@docsearch/css": "^3.5.1", + "@docsearch/js": "^3.5.1", "@vitejs/plugin-vue": "^4.2.3", "@vue/devtools-api": "^6.5.0", - "@vueuse/core": "^10.1.2", - "@vueuse/integrations": "^10.1.2", + "@vueuse/core": "^10.2.1", + "@vueuse/integrations": "^10.2.1", "body-scroll-lock": "4.0.0-beta.0", "focus-trap": "^7.4.3", "mark.js": "8.11.1", "minisearch": "^6.1.0", - "shiki": "^0.14.2", - "vite": "^4.3.9", + "shiki": "^0.14.3", + "vite": "4.4.0-beta.3", "vue": "^3.3.4" + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.12.tgz", + "integrity": "sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.12.tgz", + "integrity": "sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.12.tgz", + "integrity": "sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.12.tgz", + "integrity": "sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.12.tgz", + "integrity": "sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.12.tgz", + "integrity": "sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.12.tgz", + "integrity": "sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.12.tgz", + "integrity": "sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.12.tgz", + "integrity": "sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.12.tgz", + "integrity": "sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.12.tgz", + "integrity": "sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.12.tgz", + "integrity": "sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.12.tgz", + "integrity": "sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.12.tgz", + "integrity": "sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.12.tgz", + "integrity": "sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.12.tgz", + "integrity": "sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.12.tgz", + "integrity": "sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.12.tgz", + "integrity": "sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.12.tgz", + "integrity": "sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.12.tgz", + "integrity": "sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.12.tgz", + "integrity": "sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.12.tgz", + "integrity": "sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.18.12", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.12.tgz", + "integrity": "sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.12", + "@esbuild/android-arm64": "0.18.12", + "@esbuild/android-x64": "0.18.12", + "@esbuild/darwin-arm64": "0.18.12", + "@esbuild/darwin-x64": "0.18.12", + "@esbuild/freebsd-arm64": "0.18.12", + "@esbuild/freebsd-x64": "0.18.12", + "@esbuild/linux-arm": "0.18.12", + "@esbuild/linux-arm64": "0.18.12", + "@esbuild/linux-ia32": "0.18.12", + "@esbuild/linux-loong64": "0.18.12", + "@esbuild/linux-mips64el": "0.18.12", + "@esbuild/linux-ppc64": "0.18.12", + "@esbuild/linux-riscv64": "0.18.12", + "@esbuild/linux-s390x": "0.18.12", + "@esbuild/linux-x64": "0.18.12", + "@esbuild/netbsd-x64": "0.18.12", + "@esbuild/openbsd-x64": "0.18.12", + "@esbuild/sunos-x64": "0.18.12", + "@esbuild/win32-arm64": "0.18.12", + "@esbuild/win32-ia32": "0.18.12", + "@esbuild/win32-x64": "0.18.12" + } + }, + "vite": { + "version": "4.4.0-beta.3", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.4.0-beta.3.tgz", + "integrity": "sha512-IC/thYTvArOFRJ4qvvudnu4KKZOVc+gduS3I9OfC5SbP/Rf4kkP7z6Of2QpKeOSVqwIK24khW6VOUmVD/0yzSQ==", + "dev": true, + "requires": { + "esbuild": "^0.18.6", + "fsevents": "~2.3.2", + "postcss": "^8.4.24", + "rollup": "^3.25.2" + } + } } }, "vscode-oniguruma": { @@ -5072,7 +5687,6 @@ "version": "3.3.4", "resolved": "https://repo.huaweicloud.com/repository/npm/vue/-/vue-3.3.4.tgz", "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", - "dev": true, "requires": { "@vue/compiler-dom": "3.3.4", "@vue/compiler-sfc": "3.3.4", @@ -5175,9 +5789,9 @@ } }, "yjs": { - "version": "13.6.2", - "resolved": "https://registry.npmmirror.com/yjs/-/yjs-13.6.2.tgz", - "integrity": "sha512-shFc4JI8Hr3NqKYlS09xX6lyQwU3LvQlOXEkHK2aBa1T/luNLf0qHtoujgb9pRPxhIK0uevobHhDw0+AET1Vkw==", + "version": "13.6.6", + "resolved": "https://registry.npmmirror.com/yjs/-/yjs-13.6.6.tgz", + "integrity": "sha512-VTvezMeMuOra9jKG1Ym5XuQ2H4xXOubIIIupv/B5oygasa9IqDE7Ufv93QTSe9uz69J5VZGMQb2WTEmJv4kJFQ==", "requires": { "lib0": "^0.2.74" } diff --git a/package.json b/package.json index 200be1e..3e3b3b7 100644 --- a/package.json +++ b/package.json @@ -6,14 +6,15 @@ }, "dependencies": { "@codemirror/lang-python": "^6.1.3", - "@codemirror/lang-sql": "^6.5.0", - "@jupyterlab/mathjax2": "^3.6.4", - "@jupyterlab/theme-light-extension": "^4.0.2", + "@codemirror/lang-sql": "^6.5.2", + "@jupyterlab/mathjax2": "^3.6.5", + "@jupyterlab/theme-light-extension": "^4.0.3", + "@vueuse/core": "^10.2.1", "markdown-it": "^13.0.1" }, "devDependencies": { "cross-env": "^7.0.3", "markdown-it-mathjax3": "^4.3.2", - "vitepress": "^1.0.0-beta.2" + "vitepress": "^1.0.0-beta.5" } -} \ No newline at end of file +} diff --git a/使用指南.md b/使用指南.md index a0c8abd..197adb7 100644 --- a/使用指南.md +++ b/使用指南.md @@ -1,4 +1,32 @@ # 使用指南 + + +- 推荐使用 Chromium 内核的浏览器访问(例如Chrome、Edge)不同浏览器可能表现不一致,您当前的浏览器是:{{ browserType }} + - 推荐使用 `暗色模式` ,以获得更好的阅读体验。点击右上角切换按钮即可切换。 - 电脑端推荐按 `Ctrl + 加号` 将页面放大到 150% 以便于阅读。 diff --git a/简介.md b/简介.md index f0bc208..3e944fa 100644 --- a/简介.md +++ b/简介.md @@ -1,7 +1,9 @@ # HDU计算机科学讲义 ## 序言 -初入大学,大家都会十分迷茫,尤其是计算机相关的同学们。 +相信看到这个wiki的同学都对计算机专业有着或多或少的期待,或许有人因小时候某次电视上的黑客操作所振奋,或许有人是被全民编程的时代浪潮席卷而来,渴望着高薪的工作,或者又有人因为渴望着用编程改变世界。 + +**然而理想很丰满,现实很骨感!** **我们会面临着各种各样的问题**:编程从哪里学起?如何高效利用大学时间?如何平衡绩点与项目经验?如何正确安排学习配比?有没有人带带弟弟?如何问大佬问题得到回复的概率更高? @@ -13,12 +15,24 @@ **出一份计算机科学领域的讲义,一起做大家的领路人。** -这份讲义由 **zzm** 发起,杭电多个学院社团的同学参与协办。参与讲义制作的有 HDU 的同学,老师,相关领域的大佬,覆盖了人工智能入门、软件开发入门,计算机学习之道与路线等内容。 +## 救赎之路? -zzm 花费了一年的时间动员了大伙对讲义进行修缮和完备,不得不说这确实不是一个小的工作,不过在 2023 年 3 月,在计院领导的支持下,计算机学院科协成立了。我们将在学院的支持下继续完善这个内容,同时也欢迎大伙加入我们,共同参与到讲义的学习与撰写中来! +大家学的第一门编程语言将是C语言,发明于1969年至1973年间;互联网目前最流行的后端语言是Java,发明于1995年;甚至互联网,也始于1969年;著名的 TCP/IP 协议,诞生于1983年,这些都会是我们计算机教授的重点内容。我们在《计算机组成原理》中学的是比自己爷爷奶奶年龄还大的冯·诺伊曼体系结构,我们课本中的知识乍一看都是硬核的、甚至有些过时的内容。 -![](hdu-cs-qq.png) -欢迎加群 669895692 +而近些年的发展,大家有目共睹。2008年,申奥成功,我清晰地记得,大家都还在用诺基亚和2G网络。短短15年,智能机、5G甚至5.5G的出现都彰显互联网的发展超出了大家的想象。 + +前面说到互联网使用最广泛的语言之一是 Java,这也是学校会教的。但,基于这些之上建立起的一个个框架,迭代了一层又一层。常常会闹出这样的笑话,有的学生为了就业,在网上看几年前的编程视频,然后被身边的同学发现,这已经是两个时代前互联网所流行的技术了。 + +2023年是计算机的新纪元。人工智能已经发展到了大家或多或少都有耳闻的GPT。现在的AI远远超过了大伙现在的想象。 + +学校能教给大家经典,夯实计算机内功。而面临计算机日新月异的变化,我们又该何去何从?Linux、Git、机器学习、前后端、计算机组成原理、计算机网络,我们该如何学起?如何快速建立系统而正确的编程思维? + +想必在这里,你或多或少都能得到自己的答案! + +![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/hdu-cs-qq.jpg) +欢迎加群与学长交流!我们也可以针对你的喜好为你定制一个方案! + +**群号:669895692** ::: tip 🤔 #### **为什么我要花大量的时间与折磨受这样的训练?** @@ -40,7 +54,7 @@ zzm 花费了一年的时间动员了大伙对讲义进行修缮和完备,不 例如学习 Pytorch,应该尽快理解 Pytorch 编程的框架,dataloder,model,train,test 文件。 - 例如学习学习过程中学习到 Linux 命令,不是需要把整本 Liunx 书籍全部看完后才可使用。 + 例如看书过程中学习到 Linux 命令,不需要把整本 Liunx 书籍全部看完后才可使用。(边学边试,边用边学) 4. 敢于否定,如果对于给出的学习资料看不懂,要尝试自己寻找学习资料,找到适合自己的那份学习资料。并且中文的社区包括我们,都可能会犯各种各样的错误。就连论文也不一定是对的。有写论文就是专门驳斥前人哪怕是巨佬的观点。我非常欢迎你提出异议。