- 博客(18)
- 收藏
- 关注
原创 如何根据乱码字符推理出其原本的字符是什么
本文讨论的是,当含有中文字符的文本出现乱码时,如何知道是什么原因造成的,并且推理出其原本的正确字符是什么。
2024-06-01 10:04:18
1499
原创 如何用 Burnside 引理解决项链问题
对每个珠子进行标号,虽然可以选择两种颜色,但某些排列组合的项链经过旋转种类是一样的,比如如下两种:接下来我们看看项链可以经过哪些变换,以及如果不考虑变换,静态的项链有多少种不同的染色方案。项链的变换其实就是刚性变换:旋转和反射。容易知道六颗珠子的项链有 6 种旋转(顺时逆时取其一)和 6 种反射(6 条对称轴),一共 12 种变换,如下图:C6320C6320种不难想象,经过旋转和反射后,最终只有三种形态的项链,也就是:这里像不像有机物?
2023-12-20 17:34:52
2349
原创 五个顶点的不同构图有多少种
个,也就是有 120 种变换,所以这个问题本质上就是 120 阶变换群。5 个顶点,任意两个顶点可以画一条边,因此不考虑变换的情况下,有。种图(其中有同构的),另一方面,5 个点的变换共有。,因此要做的计算就是针对每个。作用于 1024 阶集合。
2023-12-08 10:03:15
1567
原创 为什么 UTF-8 比 GB 18030 编码有更好的容错性
UTF-8 和 GB 18030 是两种字符集编码,UTF-8 是一种针对 Unicode 的编码方式,GB 18030 是国标编码,最新版的 GB 18030-2022 已经将所有的有意义字符都映射到 Unicode 码位上,所以两者支持的字符数量可以认为没有差别。此外,由于是国标,GB 18030 在生僻汉字的收录上更有效率(映射到 Unicode 的第十平面是一个有争议的话题,本文暂不展开)。
2023-09-06 13:36:17
2122
1
原创 Db2 中计算 OR 关系组合列选择率的原理
问题非常简单,Db2 是如何估算如下语句所带谓词条件的选择率的:or c2=?or c3=?or c4=?;可以看到,表中一共有 12 条数据,收集了统计信息后,Db2 优化器知道了 c1, c2, c3, c4 的 NDV(Number of Distinct Value)分别是 12, 6, 4, 3。我们考虑如下语句:SELECT * FROM testset WHERE c1=?or c2=?or c3=?or c4=?;
2023-08-24 14:01:54
199
原创 Db2 把 not in 转换成 anti-join 的规则
基于上述原因,大部分数据库都可以将 not exist 转成 anti-join,来获取更好地性能,而 not in 则是在一定条件下,才能转换成 anti-join。首先,我们都知道在 SQL 语义中,not in 和 not exist 是不等价的,尤其是在有 NULL 参与关联判断的时候,关于这方面的说明文档网上有很多,不赘述了。可以看到,不仅没有 not in 转换成 anti-join,而且还有一段 warning,说明了优化器放弃 NOTIN2AJ 是因为语义条件不满足。
2023-06-22 10:22:19
233
原创 关于 Db2 Expression-based Indexes statistical view
从 Db2 10.5 开始,可以创建 Expression-based Indexes,每当创建了 Expression-based Indexes,系统会自动为其生成一个 statistical view,以索引名字加“_v”的后缀来命名。主要目的是因为索引字段上含有表达式,普通的方法无法收集其值的统计信息,借助 statistical view 就可以为其收集更加准确的统计信息。...
2022-09-01 13:38:08
152
原创 关于 Db2 character set collation
本文总结了 Db2 在不同字符集(character set)和校对(collation)设置情况下的排序和比较行为。
2022-06-26 09:12:16
2307
原创 用随机梯度下降法实现 SVM 线性分类器的实例
本文使用自己编写的例子来帮助理解用随机次梯度下降法(Stochastic Sub-Gradient Descent)实现 SVM 线性分类器,不会过多涉及理论和原理的分析,只是为了更形象的理解。例子中使用的是二维平面。问题:给定一组训练数据 (xi,yi)\ (x_i,y_i) (xi,yi),对于其中一部分 xi\ x_i xi, yi=1\ y_i = 1 yi=1,另一部分 xi\ x_i xi,&nb
2021-12-14 11:45:25
3163
3
原创 Mac上使用DTrace检测MySQL的初步实验
Mac上使用DTrace检测MySQL的初步实验背景知识步骤关闭Mac SIP编写DTrace脚本执行DTrace脚本工作原理解释更多探索参考背景知识BPF是Linux上新兴的性能跟踪工具,其中一项重要的技术是“动态插桩”。关于BPF和动态插桩可以参考BPF相关书籍,比如参考1。在Mac上可以使用DTrace来实现类似的动态插桩功能,这里通过一个小实验向大家介绍这一工具的使用方法,给大家提供一些入门级的感性认识。步骤关闭Mac SIP重启Mac,开机时立刻按住Command + r 不放,进入恢复
2021-10-17 19:50:42
518
原创 PostgreSQL源码自学笔记3
PostgreSQL源码自学笔记3今天是cost_index,也就是PG计算index scan的cost。记录几个重点:首先是如果禁用了indexscan,照例cost加100亿,如下: if (!enable_indexscan) startup_cost += disable_cost;其次是对index顺序是否良好的一个考虑,类似于Db2中的index cluster ratio,如果index字段的排序和table行的排序用如下指标来衡量:csquared = indexCorre
2021-07-16 09:31:26
184
原创 PostgreSQL源码自学笔记2
PostgreSQL源码自学笔记2今天学习下cost_samplescan,重点在于两种采样方式,伯努利采样用seq page cost,系统采样用random page cost,如下所示:spc_page_cost = (tsm->NextSampleBlock != NULL) ? spc_random_page_cost : spc_seq_page_cost;这是因为伯努利采样是按row采样,因此基本每一page都会被读取到;而系统采样是按page采样,所以并不是每个page
2021-07-15 19:57:36
126
原创 PostgreSQL源码自学笔记1
PostgreSQL源码自学笔记1就从costsize.c开始,学习下PG中各种cost是如何计算出来的,costsize.c在src/backend/optimizer/path目录下。第一个重要的函数cost_seqscan,用来计算seq scan的cost。PostgreSQL的seq scan类似于Db2中的table scan,重点代码如下:if (!enable_seqscan) startup_cost += disable_cost;表示如果参数中禁用了seq scan,
2021-07-13 20:32:52
355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人