杂项 - 高精度
高精度的实现模板,包括存储、运算、以及关于边界处理的分析。
搜索 - 二分和三分
二分模板
寻找左边界用第一个,寻找右边界用第二个。
1234567891011121314151617int binary1(int l, int r) { while (l < r) { int mid = l+r>>1; if (check(mid)) l = mid+1; else r = mid; ...
开发 - 为 Hexo 页脚添加实时更新的运行时间
配置文件
本文用 Dayjs 来处理日期。当然,完全可以用原生 Date,但我不想把时间浪费在处理日期上面。
我使用的是 butterfly 主题。如果读者正在使用别的主题,请查阅对应官方文档寻找如何插入自定义标签与自定义页脚信息。
在主题配置文件(即_config.butterfly.yml)中引入:
12345inject: bottom: - <script src=" ...
学习 - 推导旋转体相关公式
弧微分
这里简要给出过程,虽然不是特别严谨,但理解起来容易就好。
对于上图可以得出:
ΔsΔx=∣AB⏠∣Δx=∣AB⏠∣2∣AB∣2⋅∣AB∣2(Δx)2=∣AB⏠∣2∣AB∣2⋅(Δx)2+(Δy)2(Δx)2=∣AB⏠∣2∣AB∣2⋅[1+(ΔyΔx)2]\begin{aligned}
\frac{\Delta s}{\Delta x} &= \frac{|\overgroup{A ...
学习 - 基于 inspect 实现重载
通常情况下 Python 只能做到在函数体内部判断参数类型进行重载,但我们可以借助 inspect 来实现像一般静态语言那样的重载。为了简化代码,不考虑 positional only 和 keyword only 的参数。
开发 - 在 GitHub Pages 中使用 Vue Router
本文主要是由于这个倒计时项目以路径参数的形式接收自定义日期,出于美观的原因我不想用 hash router,而是使用 history router 。如果用 hash router 就不会有这个问题了。此文终结
GitHub Pages 只能帮你生成一个静态网站,但它支持用 404.html 作为一个 fallback(原谅我不知道怎么用中文描述比较贴切)利用这个机制,和 sessionStora ...
学习 - 自己实现 abc 模块的核心功能
简介
通过 abc 这个模块,我们可以在 Python 中使用抽象类,定义抽象方法、抽象属性。其本质是利用元类来检查是否有未实现的抽象方法,从而阻止抽象类的实例化,也就达到了目的。
所以说它只是一个辅助的检查手段,就像 Java 里的 @Overrides 类似(严格来讲 Java 的这个是编译期检查),你写不写都是可以达到你的目的,但是用了之后能防止你因为忘记实现或者写错方法名而导致的错误。
1 ...
学习 - Python 实现动态的工厂模式
本文讨论的主要是,如何把工厂模式生产的产品,即抽象类的子类信息动态地保存到一个表中,而不是直接简单粗暴地使用 if-else 来判断。可能是 Java 给我的影响比较大,我还比较喜欢用抽象类抽象方法这些东西,至于好坏应该由实际情况来决定,这里就不详细展开讨论了。
那么本文所使用的示例来自于我一个分析 QQ 聊天记录文件的项目,因为它对于群聊的聊天记录和私聊的聊天记录格式不同,需要分别处理,所以就到 ...
学习 - 使用 FastAPI+aiosqlite+databases 搭建服务端的基础用法
说明
本文是主要为从未使用过这些框架的人做一个介绍,并没有太多的技术含量。
连接池
首先先把我最焦虑的问题放在这里,到底要不要一个连接池?
我在 aiosqlite 的仓库中搜到了这样一条 issue,作者为我们介绍了为什么使用 sqlite 数据库时连接池不是那么重要。我并没有说它不重要,只是在轻量级使用中可以不在意这点。我这里把原文复制过来,并且把重要句子标粗。
Generally spea ...
开发 - 异步加载 Vue 组件以减小 chunk 体积
问题
当你的组件过于复杂时,这里指它引用了非常多的第三方库,那么当你打包的时候或许会碰到下面的警告:
1234(!) Some chunks are larger than 500 KiB after minification. Consider:- Using dynamic import() to code-split the application- Use build.rollupOpti ...