
算法
文章平均质量分 77
春夜喜雨
好雨知时节.当春乃发生.
展开
-
海明码的认识理解与延伸
海明码是一个不错的监测纠正算法,能够检测出纠正一位传输错误,提高数据传输的可靠性。关于海明码算法,它的检测特点类似于:数据范围与位数的关系。原创 2025-02-11 20:45:00 · 1485 阅读 · 0 评论 -
浮点数二进制制科学计数法理解
对于浮点类型,我们知道其采用科学计数法,准确来说应该是二进制科学计数法。为什么准确说是是二进制科学计数法,而不是称为科学计数法?原创 2024-10-17 22:32:36 · 786 阅读 · 0 评论 -
leveldb前缀匹配查找Seek
最近偶然发现了,leveldb前缀匹配查找的功能。之前没有从这个角度去想过Seek方法,尝试使用之后,效率还是很好的。时不我待,下面也谈一谈该技术点,以及这个技术点的背后支持,leveldb为此做的实现。原创 2024-09-24 21:30:28 · 699 阅读 · 0 评论 -
实现一个自定义STL类模版DataStorage
尝试自己来实现一个模版类,来满足一些常用语法、常用接口的使用。综合std::vector与std::array特点,提供一个由这两个类对象组合出来的内存结构类模版,该模版类有一个固定内存块和一个动态内存块,对外提供stl的相关访问方法。原创 2024-08-19 22:01:02 · 838 阅读 · 0 评论 -
惊艳的KMP字符串匹配算法
KMP字符串匹配算法是早有耳闻的,但之前并未去了解它的字符串匹配思路;昨天晚上偶然翻书看到,发现算法设计思路非常棒,在自己看来,可以用惊艳来形容。原创 2024-02-20 10:20:42 · 1056 阅读 · 0 评论 -
使用Excel计算--任务完成总工作日时长
计算任务完成时间周期,和计算金钱一样,是一个比较细致严谨的工作。通常,我们可能以为,完成周期形如:任务完成周期 = 任务结束时间 - 任务开始时间。但是一般情况下,对于正常社会企业,通常都是要把排除掉休息日,来计算的任务完成周期。原创 2024-01-26 18:14:21 · 2346 阅读 · 0 评论 -
堆排序与大顶堆
有一天,别人问到你,你了解 堆排序吗?或者 你对大顶堆了解吗?之前问我的话,我是不太了解的,不过现在了解多了。也期望通过下文,你也能对它了解起来。原创 2023-05-17 22:53:44 · 587 阅读 · 0 评论 -
解读CRC校验计算
CRC校验的思路是,把一个串作为一个长的数值,附加某段校验码后,形成一个更长的数值串,对该数值串求余运算时能够整除;从而来校验内容未被篡改;原创 2023-02-27 21:36:13 · 1701 阅读 · 0 评论 -
读写锁RWLock简单实现研究
读写锁在服务端程序开发时,用的还是比较广泛的一种锁,比较适合用于多读少写的场景。多读少写场景,可以减少加锁时间;因为能够对大多数的读场景减少加锁时间,也一定程度减少多线程程序的编写难度。原创 2023-01-15 21:19:19 · 552 阅读 · 0 评论 -
漫谈有序读取与关系库索引
从有序读取对速度的影响,到关系库索引建立的方法用途,写写自己的了解。原创 2022-08-28 08:57:21 · 334 阅读 · 0 评论 -
std::vector内存申请增长率
vector中的数组长度是如何增长的,倍增方式吗?初始vector内部带有空间吗,还是初始空间大小为0呢?从vector模板库实现中找一找,可以找到相关的线索。原创 2022-05-09 21:08:51 · 750 阅读 · 0 评论 -
生产数据与消费数据实现思考
假设有两个线程:一个线程不断的写数据,一个线程不断的读取数据、处理数据。原创 2022-01-03 19:03:39 · 648 阅读 · 0 评论 -
qsort代码解析
最近看The C Programming language 这本书,看到里面qsort的代码;这次感受又不太一样,觉得里面qsort实现的很优雅。原创 2022-01-03 18:40:06 · 471 阅读 · 0 评论 -
rc4加密算法探讨
关于加密算法,通常我们期望得到的效果有:1. 速度快:加解密速度快,这样加密后对整体时间影响不大;2. 加密尽量不容易被轻易破解;这两个要求rc4都可以轻易满足;原创 2021-12-06 21:30:30 · 392 阅读 · 0 评论 -
snappy格式解析
snappy是google开源的一种压缩方法,用途和lz4比较接近,主要用于高速的压缩与解压。原创 2021-10-17 23:14:46 · 1698 阅读 · 0 评论 -
float浮点数理解深入
在c/c++中,32位float的存储:float是以二进制的科学计数法来存储数据的原创 2021-10-01 16:43:31 · 1898 阅读 · 0 评论 -
也来分析BloomFilter
BloomFilter是在1970由Burton Howard Bloom发表。也因此,方法名上带了Burton Bloom先生的名字Bloom,通常我们称为这个方法布隆过滤器。原创 2021-08-15 15:46:55 · 244 阅读 · 0 评论 -
SkipList中最“神经”的算法--随机层高度
看SkipList实现,里面最神秘的部分就是推算存储层的实现了,以统计规律来实现元素的向上抽样,基于随机概率来确定元素所处于SkipList的层高度。很有点类似蒙特卡洛方法,基于抽样随机来求解问题,也或者这个思路就是来源于蒙特卡洛法的理论。原创 2021-08-07 07:32:23 · 323 阅读 · 0 评论 -
单片机位指针与计算机指针使用的一点差异
最近因为回答一个他人的问题,看到sbit类型,就又去翻看单片机的程序,查了一下,有一些理解,记录分享下来原创 2021-07-25 20:00:50 · 369 阅读 · 1 评论 -
std::memory_order研究
关于memory_order,作用和名字挺匹配的,描述了编译器对内存读写指令次序的约束项原创 2021-07-03 10:39:29 · 565 阅读 · 0 评论 -
运行时间统计与chrono库使用
对于时间的统计,基本上是我们写程序的必要的测试统计项;大多数时候精确到秒即可,有些时候需要精确到毫秒;也有比较少的时候有更高的精度要求。time.h中提供了time函数做最基本的秒统计途径,另外也提供了形如clock方法做毫秒统计,更精确的使用chrono库也是不错的选择。原创 2021-06-03 22:46:02 · 608 阅读 · 0 评论 -
leveldb认识与Manifest解析
Leveldb是一个设计很好的文件KV数据库;KV数据的需求简单,支持put/get/delete即可,所以使用基本文件结构管理就可以支持。原创 2021-05-29 19:30:10 · 840 阅读 · 0 评论 -
二阶魔方复原算法推算-Part1
对于魔方来说,二阶魔方算是比较简单的,共有8个顶角块,上面四个块,下面四个块:可以分为前面四个角块:左前上,左前下,右前上,右前下后面四个角块:左后上,左后下,右后上,右后下魔方的面有六个,可以分为前后左右上下,一般来说可以用几个简写字母代替原创 2021-02-27 10:31:25 · 1640 阅读 · 1 评论 -
认识红黑树RBTree
红黑树RBTree—早有耳闻。之前大学学数据结构的时候,学了平衡二叉树,红黑树不太有印象,工作中没有需要自己开发,也就没有细去了解,本来想等有需要自己写的时候再看,今天忍不住,还是去查了些资料了解了解,也挺有趣的。原创 2020-12-24 23:23:00 · 225 阅读 · 0 评论 -
TCP消息端口转发研究
端口转发需求某些时间,我们期望把一个端口的消息转发给另外一个端口去:或是想实现内网的穿透,或是为了实现端口的动态绑定,也或是一些其它的需求。此时我们就需要端口转发的功能了。原创 2020-10-14 22:49:53 · 861 阅读 · 0 评论 -
论LOD可见距离与可见像素数
对于海量的三维物体的查看而言,必不可少的是LOD(Levels of Detail)控制,通过LOD控制,来减少视角下察看的总渲染数据量,从而让海量数据的察看成为可能。原创 2020-09-14 00:29:54 · 2231 阅读 · 0 评论 -
关于粒子的认识
粒子Atoms通常作为微小的物体大量出现,在渲染时模拟一些特殊效果,例如烟雾、火花、爆炸、喷泉、雨雪雾天气等。粒子发射指标通常粒子的发射的指标有:初始位置position粒子位置单位变化量vec生命周期life过程中管理粒子的:当前位置位置单位变化量更新剩余生命周期这样每个粒子随着时间的变化,基于参数调整单位变化量,不断的更新自身的位置,并根据生命周期情况在生命周期结束后结束自身。原创 2020-08-26 23:51:46 · 362 阅读 · 0 评论 -
树结构的合并分析
常见的目录结构,就可以算是多叉树结构:平常我们做windows文件夹目录覆盖时,合并的方式:同一目录中的不同名称,合并到一块来。同一目录中的相同名称,选择使用其中一个。windows下目录的合并是遵从类似并集的策略,合并键值检测通过文件名。那对于两个未知关联的树,如何进行合并呢?需要先建立两个树的联系,这两颗树是两个平行的树;还是一个树和另一个树的某个子节点是对应的,和子节点平行原创 2020-07-06 22:13:59 · 2233 阅读 · 0 评论 -
数据存储优化思路扩展
从数据存储优化思路来分析1. 交换两个数字,不使用新增变量和函数2. 返回两个中的最大的,不使用条件分支与函数3. 7位有效值存储4. zigzag存储5. 基于数据自身取值范围的优化存储原创 2020-07-05 22:58:24 · 392 阅读 · 0 评论 -
JS资源时序问题思考
最近碰到一个问题,涉及JS的时序,借总结梳理梳理思路,事件的处理如下:资源初始化加载网络资源:从网络fetch资源,完成后会触发Promise独立事件-修改资源其中,修改资源时,资源已初始化,但网络资源加载未完成,导致了异常。原创 2020-05-27 21:26:33 · 424 阅读 · 0 评论 -
3D程序性能优化思路浅析
3D程序的性能消耗发生在:顶点相关数据和纹理数据加载入内存把大量的模型数据顶点相关数据和纹理数据从磁盘或网络加载到内存中,3D程序中,这块的数据量是相当大的,可能会有上GBytes的数据需要加载到内存中。显示数据从内存传输到显卡中显卡提供了接口,传输framebuffer, 传输texture, 传输shader, 把加载到的内存中数据传递给显卡。显卡渲染pipeline执行,执行相关原创 2020-05-17 12:42:38 · 619 阅读 · 0 评论 -
纹理压缩格式DXT/PVR/ETC编码
DXT格式常位于的.DDS文件中,常见的格式有DXT1, DXT3, DXT5:也即BC1/BC2/BC3。DXT1表达RGB色,不带mipmap情况,平均4Bit/像素-4BPP;DXT3/DXT5表达RGBA色,8BPP。原创 2020-05-07 21:31:54 · 3767 阅读 · 0 评论 -
utf8格式设计分析
如果你来设计一个多字节的格式,你将如何设计呢?首先:要求兼容asc的可见字符0x00-0x7F那么:二进制的范围里0b0xxxxxx被占用了,作为开头的标示符号,首个二进制码流是0单字节剩余的二进制范围是:0b1xxxxxx (0x80-0xFF)经过这一步后,字节的开头拆分为两种:0b0xx...原创 2020-03-14 00:10:23 · 398 阅读 · 0 评论 -
地图影像图数量&存储大小&精度推算
不知道大家是否会有这个疑问,全球的影像数据会有多大?是在那种数量级上?如果我下载11级地图:会占用多少空间?会有多少个影像图片?精度能达到多少米?原创 2020-01-10 00:26:58 · 5373 阅读 · 0 评论 -
DPI/PPI与屏幕尺寸
DPI:dots per inch 每英寸点数/像素数PPI:pixels per inch 每英寸像素数DPI/PPI描述了像素在单位长度上的分布;屏幕尺寸也是我们经常可以关注到的电子产品的信息,例如手机5.5寸屏,...原创 2020-01-01 23:45:08 · 2301 阅读 · 0 评论 -
再议旋转四元数
(Owed by: 春夜喜雨 http://blog.youkuaiyun.com/chunyexiyu)之前写过一篇四元数的,当理解的还不深,经过一段时间,再次回顾,认识有了一些新的变化,记录如下四元数四元数本身是复数的一种,下面是多元数的表达一元数:f = m二元数:f = ai + m;三元数:f = ai + bj + m;四元数:f = ai + bj + ck + m;旋转四元数...原创 2019-12-05 21:55:23 · 802 阅读 · 1 评论 -
gzip文件格式解析
gzip文件格式可以分为四个部分:- 文件头必选部分[10个字节] - 文件头可选部分[0-N字节] - 数据部分 - 文件尾部分[8个字节]原创 2019-11-27 23:11:41 · 6610 阅读 · 0 评论 -
TRS复合矩阵的拆解
按照Translate, Rotate, Scale顺序复合的矩阵,我们可以对它进行拆解,拆解出原始的Translate, Rotate, Scale矩阵。原创 2019-11-24 18:12:16 · 2858 阅读 · 4 评论 -
计算球形表面方向与北方向夹角
(Owed by: 春夜喜雨 http://blog.youkuaiyun.com/chunyexiyu)位于球形表面上,我们会人为的规定,上北下南左西右东,而这个方位对于球面上的不同位置,其指向也是不一样的。例如:右东方向—在球形的表面上,东方向在不同的位置,指向的三维的方位是不同的,在球面的另一面还截然相反。西方向也是一样。上北方向—北方向偏差感觉没有那么大,主要是北方定义是超向极点,方向变更逐渐...原创 2019-11-18 23:54:51 · 1049 阅读 · 0 评论 -
Normal法向的变换矩阵求解
当我们已知了顶点的变换矩阵ModelMatrix, 对Normal法向进行求解: 首先我们考虑下,哪些基本操作能够带来normal的变化: translate平移不会带来normal的变化,normal的指向不随平移调整原创 2019-11-02 00:30:40 · 897 阅读 · 0 评论