![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
算法
御风@户外
这个作者很懒,什么都没留下…
展开
-
IEEE754标准的c语言阐述,以及几个浮点数常量
那么中间,绝大多数的浮点数数值都没有32bit的对应值,也就是说,人工随便写的一个浮点数字符串,有99%以上的概率转换为float之后,再转换为string,是无法还原的!题外话,如果是前苏联的3进制计算机,可能就存在无限循环除不尽的问题。个人觉得IEEE754标准的设计,c语言的实现,并不是看起来那么简单。任意数值的32bit,对应的float,都可以被精确地计算,转换为一个无误差对应的字符串,且与printf %.Nf一致,只要N足够大。但是,前面提过,float与u32的双射问题。原创 2024-03-02 20:21:35 · 1133 阅读 · 0 评论 -
翻译:Complete macro expansion algorithm 完整的宏展开算法
TS是“标记序列”;如果是这样,结果是以由替换标记序列为宏,宏的形式参数,实参标记序列,宏的隐藏集与右括号的隐藏集的交集并与宏本身的并集以及一个空集合调用subst返回的序列开头的标记序列的展开结果。否则,如果标记序列以对象型宏开头,则结果是以由替换标记序列为宏,两个空集合,宏的隐藏集和宏本身的并集,以及一个空集合调用subst返回的序列开头的标记序列的展开结果。否则,如果标记序列以一个其隐藏集包含该标记的标记开头,则结果是以该标记(包括其隐藏集)开头的标记序列,后跟对其余标记序列调用expand的结果。翻译 2024-02-16 01:42:32 · 48 阅读 · 0 评论 -
五个编程原则:Rob Pike‘s 5 Rules of Programming
如果你选择了正确的数据结构并组织得当,算法几乎总是不言自明的。规则3. 在n很小时,复杂算法速度很慢,而且n通常很小。Ken Thompson将Pike的第3和第4条规则重新表述为“怀疑时,使用暴力法”。在测量之前不要为了速度进行调优,即使在测量之后,也不要调优,除非代码的某一部分压倒了其他部分。,大部分事务实际都是基础算法的组合,将数据描述清楚了,问题都已经解决80%了。个人一直觉得是相辅相成的,都很重要,很难分先后。(即使n变大,也要先遵循规则2。规则5倒是没想到的,但我不是很认同。原创 2024-02-16 00:51:03 · 1542 阅读 · 0 评论 -
计算机科学中常用的数学公式(...)
图灵机 M = int api(program_data, in_data,out_data)原创 2024-01-31 01:07:41 · 955 阅读 · 0 评论 -
资源推荐:https://hpc.llnl.gov/documentation/tutorials 劳伦斯利物浦国家实验室@美国加州
翻译学习老外的资料:https://hpc.llnl.gov/documentation/tutorials原创 2024-01-25 23:16:29 · 422 阅读 · 0 评论 -
Parallel Computing 并行计算相关学习
Parallel Computing 并行计算相关学习翻译 2024-01-16 00:13:51 · 138 阅读 · 0 评论 -
一点笔记--关于P!=NP、AI、chatGPT
一点笔记--关于P!=NP、AI、chatGPT原创 2023-09-19 09:51:43 · 360 阅读 · 0 评论 -
学习笔记-正则表达式
正则表达式re(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式。语法可视化web工具:https://c.runoob.com/front-end/7625/#!个人理解,re是对字符序列进行建模,建立多对一映射,能够覆盖所有字符序列,且没有歧义,形成一种语法协议。原创 2023-09-06 09:35:56 · 838 阅读 · 0 评论 -
sgi_stl源码学习,解析set、map背后的_Rb_tree源码(未完待续)
sgi_stl源码学习,解析set、map背后的_Rb_tree源码原创 2023-04-01 11:36:14 · 261 阅读 · 1 评论 -
sgi_stl源码学习,官方文档3.2.2Associative Containers关联容器,hashtable源码解析
sgi_stl源码学习,官方文档3.2.2Associative Containers关联容器,hashtable源码解析原创 2023-04-01 09:57:16 · 405 阅读 · 1 评论 -
复习下图灵机概念
图灵机与通用UI方案的思考原创 2022-11-18 22:51:35 · 730 阅读 · 0 评论 -
从数学0到指针NULL,到std vector右边界,到空操作
从数学0到指针NULL,到std vector右边界,到空操作原创 2022-08-26 23:46:09 · 89 阅读 · 0 评论 -
std c中实现通用的集合操作函数
需求linux、标准c、32位系统。主要是做数据处理,涉及到大量的数据集合操作。实现原理标准c的算法函数主要有两个:快速排序qsort、二分查找bsearch。qsort、bsearch用到的比较函数是同一个就可以正常运行,不管比较的是对象结构体内容、或者仅仅比较对象指针。在struct中嵌套定义union,union中嵌套struct,使得编译器支持通用的变量名访问对象数据。代码通...原创 2019-12-17 17:27:28 · 221 阅读 · 0 评论 -
非递归方式遍历树
工程中实际使用的,采用cpp模板实现。TreeWalker仿函数是非递归方式遍历树,效率比递归方式快很多。/** @brief 遍历用仿函数,允许查询替代属性*/template <typename T>class ForEach{public: void operator()(T *set, T *node, const XStringList &...原创 2019-12-19 17:36:47 · 309 阅读 · 0 评论 -
排序算法的c实现示例
c库排序算法只有快速排序qsort的实现,效率较高,非递归。也没有必要采用其它排序算法。基于网上资料(都是对int数组进行排序),本版本的实现,全部改为类似qsort的实现,适合任意结构的排序。排序算法列表:冒泡选择插入希尔归并快速排序(递归版本)快速排序(glibc版本)快速排序(c语言自带版本直接调用qsort)#include <stdio.h>#inc...原创 2019-12-19 16:34:18 · 110 阅读 · 1 评论 -
CPP dll形式的通用算法插件的定义和实现
需求:不修改主程序,通过修改配置文件加载用户自定义的cpp dll插件,对数据进行各种不同算法的处理。开发环境:win7、vs2013、cpp实现:定义一个algorithm_cppdll_base动态库,代码如下:#pragma once#ifdef Algorithm_EXPORTS#define Algorithm_DLL __declspec(dllexport)#els...原创 2020-05-06 21:46:46 · 266 阅读 · 0 评论 -
一种明文加密策略(通用权限管理方案)
一种明文加密策略(通用权限管理方案)原创 2022-08-26 22:52:34 · 171 阅读 · 0 评论 -
crypto++(cryptopp)加密库aes算法的使用
crypto crypto++ cryptopp 加密解密 aes 编译问题原创 2022-05-21 20:20:37 · 3715 阅读 · 7 评论 -
boost::graph库的最短路径算法使用示例
大概是2006年的代码,仅做参考。#include <boost/config.hpp>#include <iostream>#include <fstream>#include <boost/graph/graph_traits.hpp>#include <boost/graph/adjacency_list.hpp>#i...原创 2019-12-30 13:43:33 · 862 阅读 · 0 评论 -
各种性能瓶颈汇总,持续更新
以前安装的vs无法正常运行性能分析工具,自己写代码统计时间,二分法查找耗时瓶颈。一般情况下,最大的瓶颈与数据库的操作有关,改为批量处理,就会好很多。后来改为vs旗舰版,vs自带的性能分析工具运行还算正常。今天查出一个瓶颈,只是一个函数regex_search,不太频繁的调用,耗时占比就非常高,利用缓存绕开重复执行后,降低了所在模块60%的时间。...原创 2020-07-01 17:13:14 · 208 阅读 · 0 评论 -
程序效率案例:sqlite vacuum与vector元素删除
总结:删除大数组中的部分数据,可以考虑采用标记来提高操作效率。为什么有vacuum?结合之前查到的一个效率瓶颈,对此有以下理解:1、内存数据在内存中连续分布,如果删除中间某一部分,效率会极低。例如从一个有10000条数据的vector中删除其中1000条数据,程序会卡到怀疑人生,这种内存操作的成本比较类似string操作,成本都很大,要尽量避免。2、当时,我的办法是,在每条数据头部用一个bit记录是否被删除(有预留的4字原创 2022-10-14 16:20:07 · 440 阅读 · 0 评论 -
vld(Visual Leak Detector)无法检测的一种“内存泄漏”
用vld检测不出内存泄漏,但实际运行又看着内存持续上涨降不下来,后来无意中优化了一下部分代码,内存状况好了些,突然就明白了,内存碎片是vld检测不了的一种情况。1、这种内存碎片是大量反复读取较大xml文件导致的,应该从程序逻辑、文件设计上着手减少内存频繁的申请释放。2、独立模块能用进程调用就不要用动态库,独立进程可以避免内存碎片的增长。3、需要持久运行的程序,在内存管理方面还可以考虑自己管理碎片化的内存,做到每块内存都在控制范围内。...原创 2022-03-17 11:11:24 · 754 阅读 · 0 评论 -
从Str类思考程序稳定性问题
内存大小在编译期已确定,没有堆上内存,永远不会有内存泄漏,非常稳定可靠原创 2022-10-14 16:39:30 · 209 阅读 · 0 评论 -
计算点到线段的距离、多边形切割、线段交点、矢量角度
旧代码,几何相关double CalDis(const double x1, const double y1, const double x2, const double y2) { return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); } double CalDis(const double ptx, const double pty,...原创 2019-12-30 14:01:19 · 495 阅读 · 0 评论 -
卡尔曼滤波kalman的c语言实现,输入输出为double vector
参考网页:http://bbs.elecfans.com/jishu_487667_1_2.html有所改进/*Q:过程噪声,Q增大,动态响应变快,收敛稳定性变坏R:测量噪声,R增大,动态响应变慢,收敛稳定性变好*/#define KALMAN_Q 0.02#define KALMAN_R 7.0000double KalmanFilter( const double ResrcData, double ProcessNiose_Q,//Q:过程噪声,Q增大,动态响应变快,收敛稳定性变坏原创 2020-07-24 17:01:16 · 421 阅读 · 1 评论