9.17—9.30
主要的学习关注点:
CKKS-OPENMINED 9.17
唐师兄推荐的论文阅读 9.18/19
Dpad-HE论文以及代码阅读 9.20——23
PPT制作
准备博士英语免修
if otherwise
- 观看NVIDIA讲座,知乎文章,官方文档,github实现等。
- 公众号,X等。
我最近需要学习CKKS,我之前看过openmined的教程,当时看懂了,但过去了一个月,我就几乎忘得差不多了,我认为必须要自己手动进行代码实现才能加深理解,同时,师兄也推荐我去阅读CKKS的原论文
学习 CKKS 不必一次吃透。结合“框架 → 实践 → 理论”三步走,能有效打通从理解到实现的闭环。
在读论文前,先掌握整体脉络,避免迷失细节:
编码 → 加密 → 同态运算 → 解密 → 解码
📌 推荐材料:OpenMined 教程、简明综述或课程笔记,快速唤醒记忆。
用现成库上手,让抽象概念落地:
encode → encrypt → eval → decrypt → decode
💡 好处:再看论文时,公式=代码中的某一步,理解更直观。
论文:Cheon et al., Homomorphic Encryption for Arithmetic of Approximate Numbers (2017)
分模块阅读,优先关注与代码对应的机制:
模块 | 学习重点 |
---|---|
Introduction | 对比 BGV/BFV,理解 CKKS 为何适合近似计算 |
Encoding/Decoding | 复数向量如何编码实数向量?精度损失来源? |
Homomorphic Ops | 加法、乘法的数学形式,对应代码中的 add 和 mul |
Rescaling & Modulus Switching | 核心创新!为何要除 q_i ?如何维持规模? |
Security & Params | 安全基于 RLWE;参数选择影响安全与性能 |
📘 阅读技巧:
周数 | 目标 |
---|---|
第1周 | 熟悉 TenSEAL/SEAL,跑通编码、加/乘、rescaling 示例 |
第2周 | 对照论文,精读 Encoding、HomOp、Rescaling 部分,标注代码对应点 |
第3周 | 实现一个“极简版 CKKS”原型(仅支持编码+加密+加法)或写详细流程图解 |
这样三周下来,你不仅能读懂论文,还能讲清楚、写出来。
📌 结语:
CKKS 的难点不在单一知识点,而在数学、安全、工程的交叉理解。
坚持“先会用,再懂原理”,你会越学越通透。
好👌 我给你设计一个 3 周 CKKS 学习计划,目标是:
目标:重新建立 CKKS 的整体理解,用代码跑通基本流程。
Day 1-2
回顾 openmined 的 CKKS 教程,写总结:
输出 1 页笔记(可以画流程图)。
Day 3-4
用 TenSEAL 或 SEAL 跑几个 demo:
给每段代码加注释,写出你“理解”的解释。
Day 5-6
Day 7
目标:啃原论文的核心部分,把公式和代码对照起来。
Day 1-2
Day 3-4
Day 5-6
Day 7
目标:动手写简化实现,把 CKKS 的机制讲出来。
Day 1-2
尝试实现“玩具版 CKKS”:
Day 3-4
Day 5
Day 6
写一篇“CKKS 学习笔记”:
Day 7
✨ 最终成果:
3 周后你会有:
要不要我顺便帮你整理一些 论文 + 教程 + 库文档 的推荐阅读清单?这样你就不用自己到处找资料了。
综合调查后,对于next主题,gitalk是最简易部署且免费的评论系统。
大致流程如下:
1 | 1.安装: |
发现使用https代理上传博客老出现网络TLS问题,咨询GPT后改用SSH进行上传。
步骤如下:
1 | eval "$(ssh-agent -s)" |
今天中午睡到了1点,吃完早饭就去工位了,大约是2点半到工位。
现在时间是晚上9点,中途没休息或者吃饭,做了些什么呢?
我发觉用在写代码的时间(时间3)上绝对没有超过两小时,那么剩下的5小时去哪里了呢?
我不理解,总是在做一些低效且不知所云的事情。
明天计划:
彻底回顾Montgomery约简,修正keygen中的算法流程,分析MMV中为什么会有:
1 | int16_t tmp = Mont_Rdc_Dev(tmp_sum[ind]); |
测试调研一下约简和普通实现的性能差距?
尽量早起,下午晚饭后下工
2025-08-16 01:48:10 ,经过QWen的帮助,我现在可以继续使用此博客了。
但如何更好的管理还在探索中。
一下是保存的一些tips:
我记得我以前使用了hexo,可以通过写markdown进行编辑提交,但现在我找不到任何的.md文件
完全理解您的情况。您记得使用了 Hexo,并且是通过编辑 Markdown (.md
) 文件来发布内容,但现在克隆下来的仓库里找不到这些文件,这确实会让人困惑。
这其实是一个非常常见且合理的现象,根本原因在于 GitHub Pages 的发布机制。
让我为您详细解释,并告诉您如何解决。
.md
文件?在使用 Hexo 这类静态网站生成器(Static Site Generator, SSG)时,您的项目通常包含两个部分:
source/_posts/
目录下的 .md
文件(您的博客文章)。_config.yml
)。hexo generate
命令时,Hexo 会读取 .md
文件,应用主题模板,将它们转换成纯 HTML、CSS 和 JavaScript 文件。关键点在于,您部署到 GitHub Pages 的,是“生成的静态文件”,而不是“源代码”。
main
/ master
分支: 这个分支通常只包含生成后的 index.html
, css/
, js/
, images/
等文件。GitHub Pages 会直接从这个分支发布网站。您现在克隆下来的就是这个分支,所以里面没有 .md
文件。source
分支 (或 dev
分支): 这是一个非常常见的最佳实践。开发者会创建一个单独的分支来存放 Hexo 的源代码(包括所有 .md
文件)。当需要更新网站时,他们会:source
分支上写 .md
文件。hexo generate
生成新的静态文件。main
分支(或使用 hexo deploy
命令自动完成)。结论:您的 .md
文件很可能在一个名为 source
、dev
或 hexo-source
的独立分支上,而不在您现在看到的 main
分支里。
.md
文件?请按照以下步骤操作:
source
分支https://github.com/你的用户名/你的用户名.github.io
)。main
或 master
)。source
。source
、dev
或类似名称的分支,请点击它。source/_posts/
目录,您的所有 .md
文件就在这里!source
分支在新电脑上克隆 source
分支:
source
分支的页面上,点击绿色的 Code
按钮。main
分支仓库(或者换一个文件夹)。source
分支:1 | git clone -b source https://github.com/你的用户名/你的用户名.github.io.git |
.md
文件的源代码仓库了。安装 Hexo 环境:
source
仓库目录:1 | cd 你的用户名.github.io |
1 | npm install |
1 | npm install -g hexo-cli |
开始维护:
source/_posts/
目录下创建和编辑 .md
文件。hexo server
,然后在浏览器访问 http://localhost:4000
。1 | hexo clean # 清理缓存 |
source
分支这说明您可能没有使用分支分离的策略,而是直接在 main
分支上进行操作,但这非常不推荐,因为会把源代码和生成文件混在一起。
检查本地是否有旧文件:
hexo init
创建了项目?如果那个旧电脑还能用,去那个文件夹里找找看。重新开始:
.md
文件已经丢失,您需要重新开始。main
分支仓库作为您的“发布目录”。1 | hexo init my-blog |
main
分支里的 CNAME
文件(如果有的话)复制到新项目的根目录。_config.yml
中的 deploy
部分,确保它指向您的 your-username.github.io
仓库。您找不到 .md
文件,几乎可以肯定是它们在一个独立的 source
分支上。请立即去 GitHub 仓库页面检查分支列表。一旦找到并克隆了 source
分支,您就可以在新电脑上恢复完整的 Hexo 工作流,继续通过写 Markdown 来维护您的网站了。
只有main分支
好的,收到您的反馈。如果您的 GitHub 仓库中只有 main
分支,并且里面只有生成的 HTML、CSS、JS 等静态文件,而没有 Hexo 的源代码(如 _config.yml
, source/_posts/
目录和 .md
文件),那么您的原始源代码确实已经丢失了。
不过,别担心,您仍然可以在新电脑上恢复对网站的维护。我们无法找回旧的 .md
文件,但可以重建一个全新的 Hexo 工作环境,并将其连接到您现有的 GitHub 仓库。这样,您就可以重新开始用 Markdown 写文章了。
以下是详细的恢复步骤:
安装 Git
git --version
,确认安装成功。安装 Node.js
node --version
和 npm --version
,如果能显示版本号,说明安装成功。安装 Hexo CLI
1 | npm install -g hexo-cli |
这个仓库(your-username.github.io
)将专门用于存放生成的静态文件,由 GitHub Pages 直接发布。
在终端中,导航到您希望存放代码的文件夹,例如:
1 | cd ~/Documents/MyProjects |
克隆您的 GitHub Pages 仓库:
1 | git clone https://github.com/你的用户名/你的用户名.github.io.git |
现在,您需要创建一个新的 Hexo 项目,这个项目将包含您的所有 .md
文件和配置。
在一个与“发布目录”不同的位置创建一个新的文件夹,例如:
1 | mkdir hexo-source |
初始化一个新的 Hexo 项目:
1 | hexo init |
source/_posts/
目录。(重要)配置 _config.yml
hexo-source
文件夹里的 _config.yml
文件。deploy
部分,将其配置为指向您第一步中克隆的“发布目录”。配置如下:1 | deploy: |
repo
地址必须是您 your-username.github.io
仓库的 HTTPS 地址。为了让 Hexo 知道应该把生成的文件部署到哪个文件夹,我们需要进行一个巧妙的设置。
进入“发布目录”:
1 | cd ../your-username.github.io |
初始化一个临时的 Git 仓库(如果还没有的话):
1 | git init |
将“发布目录”设置为“源代码目录”的“部署仓库”:
1 | cd ../hexo-source |
deploy
:1 | git remote add deploy ../your-username.github.io |
git push deploy
时,实际上是把文件推送到 ../your-username.github.io
这个本地文件夹。现在,一切都设置好了。让我们来测试一下流程。
写一篇新文章:
在 hexo-source
文件夹中运行:
1 | hexo new "我的第一篇新文章" |
这会在 source/_posts/
目录下创建一个名为 我的第一篇新文章.md
的文件。
编辑文章:
用编辑器打开这个 .md
文件,写一些内容。
生成并部署:
运行以下命令:
1 | hexo clean |
hexo generate
会将您的 .md
文件生成 HTML、CSS 等静态文件。hexo deploy
会将这些生成的文件推送到 deploy
远程仓库,也就是我们设置的 ../your-username.github.io
文件夹。推送更新到 GitHub:
1 | cd ../your-username.github.io |
1 | git status |
1 | git add . |
查看结果:
几分钟后,访问 https://你的用户名.github.io
,您应该就能看到新发布的内容了。
通过以上步骤,您已经成功地在新电脑上重建了一个完整的、可维护的 Hexo 工作流。虽然您丢失了旧的 .md
文件,但您获得了一个更清晰的项目结构:
hexo-source
文件夹:存放您的所有源代码和 .md
文件(这是您日常工作的目录)。your-username.github.io
文件夹:存放生成的静态文件,专门用于 GitHub Pages 发布。从现在起,您只需要在 hexo-source
目录下写 Markdown,然后运行 hexo deploy
和 git push
,就可以轻松地维护您的网站了。
总之,我以后我只需要在hexo new 文件后使用
hexo clean
hexo generate
hexo deploy就行了
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment