文章列表

8k7 分钟

# 前言 经典的二分查找写法,相信许多人都动手写过,但是在编写代码的过程中,经常遇到类似这样的问题: 如何确定起始端点下标 LLL 和 RRR 的位置?是写成闭区间还是开区间? 如何确定循环结束条件?是 L<RL < RL<R 还是 L≤RL\le RL≤R ? 如果确定下标的变化方式?是直接赋值 MMM 给 LLL 或者 RRR,还是需要 +1+1+1 或者 −1-1−1 ? 最后返回 LLL 还是 RRR ?还是其他形式? 二分查找代码虽然只有短短数行,但是这些问题让编写正确的代码显得非常棘手。在之前的文章《二分搜索探究》中我曾经编写过当时的心得体会。最近在复习的时候
28k25 分钟

# 前言 本篇博客记录了最近学习的 CUDA 单精度 GEMM 算法的优化过程。 GEMM 算法是指 General Matrix Multiplication 算法,可以说是大多数线性代数算法的基础,也是目前热门的深度学习中最常用的基础计算,因此优化 GEMM 算法对于许多的应用有着重大意义。本篇博客关注的是 NVIDIA 的 GPU 设备上的 GEMM 算法实现,以 cuBLAS 库的算法性能作为比较基线,不断优化算法以逼近该基线。 # 基础知识 本节将简要介绍 GPU 的计算模型和内存模型的基础知识。因为算法优化部分的内容较长,本节尽量精简。如果之后有时间,后续可能会详细介绍该部分的内
13k12 分钟

Python 以其动态特性而受到许多开发者的欢迎。但是当工程项目变得越来越复杂的时候,这一特性又往往会使得开发者头疼不已。想一想,当看着一段代码,却无法确定其中变量的特定类型,无法下手编写代码。即便强行编写完成也只能在运行时检查是否出错,这无疑会对开发效率产生很大影响。 # 类型系统 按照一般的分类形式, Python 属于动态的强类型系统的编程语言。此外, Python 还支持 Duck Typing 这一特性。 所谓的 Duck Typing,即: If it walks like a duck and it quacks like a duck, then it must be
3.5k3 分钟

# 前言 虽然目前 Windows 对 WSL 已经支持很多常规的操作,但是有时候仍然不得不在 Windows 环境下执行某些命令。尤其 WSL 的文件 IO 速率相比于原生 Windows 系统存在一定差距,尤其是 Git 仓库稍微大一点便能明显感受到延迟。此外, WSL 的网络代理有时候也会出现故障, Git 操作很不方便。因此,基于 Powershell 配置一些支持常用操作,能够更方便自己的开发。 # 升级 由于需要使用到一些模块,因此需要首先升级系统的 Powershell , Windows 官方提供了多种可选方式升级或安装最新的 Pow
11k10 分钟

# 前言 在许多工程项目中,经常需要配置一些选项供用户或者员工自己使用。以人工智能领域为例, Paddlepaddle 、 mmdetection 等深度学习框架都需要根据需求在配置文件中配置数据、网络等相关参数。 Paddlepaddle 使用 YAML 格式存储配置信息, mmdetection 则直接使用 Python 文件来设定配置。此外, JSON 格式也是常用的数据存储格式。无论何种格式,当配置信息不断增加膨胀之后,如何组织配置的结构就成为了一件迫切需要考虑的事情。 这三种配置格式孰优孰劣,我无法评价。由于我目前接手的工作中使用的是 YAML 格式的配置文件,因
6.5k6 分钟

# 二分搜索简介 二分法是计算机领域的经典算法,它主要用于在有序数据中搜索目标数据。由于其具有优秀的时间复杂度和相对简单的实现,因此成为了考察计算机专业学子的经典问题。 虽然二分法相比于其他算法的实现而言非常简单,但是在具体的实现过程中却又经常碰到这些让人头疼的问题:如何确定初始的下标边界范围?如何确定循环的终止条件?搜索过程中如何更新下标? 不用怀疑自己,即使是编程的大佬们也会对这个问题犯难。按照高德纳的说法[1],尽管最早的二分算法论文在 1946 年即已发表,但是第一个没有错误的二分搜索程序却直到 1962 年才出现。《编程珠玑》第 4 章中作者也提到[2],他给专业程序员布置过这个题目
3.9k4 分钟

# 前言 之前在自己的笔记本上安装过 Windows 的 Linux 子系统。最近新配置了一台台式机,又需要重新配置,在过程中也稍稍遇到了一些问题,在这里记录下来以备后续的使用。 # 安装 WSL2 这里的安装过程全程参照了这个链接的内容👉:戳此链接。 这里以其教程作为主要参考,并补充安装过程中遇到的问题的解决方式。 # 开启 Hyper-V 和 Linux 子系统服务 要安装子系统,首先需要开启相应的 Windows 系统的功能: Hyper-V 服务 Linux 子系统服务 在管理员权限的 Powershell 中执行以下两条命令进行开启: dism.exe
1.4k1 分钟

# 前言 TiddlyWiki 是一款非常好的用于制作个人 Wiki 的软件。除此以外,结合其他各种插件,还能够实现许多丰富的功能。例如, Fishing 插件是用于 TiddlyWiki 的一款类 Anki 的软件,用于帮助复习各种知识。 # 在 TiddlyWiki xp 中集成 Fishing 插件 # 下载 Fishing 插件 由于作者提供的 TiddlyWiki 是其封装的版本,而我个人使用的是 TiddlyWiki xp 这一版本,因此需要找到其中插件相关的内容再进行导入。 以下提供两种方法,这里推荐方法一,因为它能够较为及时地更新,方法二则需要自己手动更
22k20 分钟

# 中國歷史紀年表 中國歷史紀年表,聊記於此,便於讀書時查找。 # 秦(公元前 221 —— 前 207) 秦(公元前 221 —— 前 207) 秦(公元前 221 —— 前 207) 皇帝 公 曆 年 嬴政(始皇帝) 前 246 —— 前 210 嬴胡亥(二世) 前 209 —— 前 207 嬴子嬰 前 207 # 西漢、新(公元前 206 —— 公元 25) 西漢、新(公元前 206 —— 公元 25) 西漢(公元前 206 —— 公元 8) 皇帝 年號(使用年數) 公 曆 年 備 註 劉邦(高祖) —— (12) 前 206 —— 前 195
1.4k1 分钟

# 简介 TiddlyWiki 是一款受欢迎的个人 Wiki 制作交互式工具。 TiddlyWiki 通过最小的有意义的语义块 —— tiddlers (条目)来构建自己的知识库。通过标题唯一标记 tiddlers ,以便可以使用链接、标签、列表和宏进行结构化。条目( Tiddlers )使用维基文本( WikiText )符号,能够简明扼要地表示了各种文本格式和超文本功能。具体可以参考官方网站。 虽然 TiddlyWiki 本身是个非常有用的工具,可配置程度很高,但是上手难度也较大。这里比较推荐使用 TiddlyWiki xp 上手,可以戳此链接。 TiddlyWiki x