
算法
文章平均质量分 68
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
基于NET6的C#实现无人机原路寻路返回
在.NET 6中,你可以使用C#来模拟实现无人机的记忆飞行路径和原路寻路返回功能。以下是一个简化的模拟示例,展示如何使用GPS坐标记录飞行路径,并模拟无人机原路返回。原创 2025-02-22 01:49:42 · 942 阅读 · 0 评论 -
无人机原路径返回原理
无人机记忆飞行路径和原路寻路返回的核心技术在于实时的定位数据采集、路径规划与存储、以及反向路径回溯算法的实现。结合GPS、IMU、视觉传感器等多种定位技术,配合智能算法,能够有效地实现无人机的自动返航功能,确保在多种飞行场景下的安全返回。原创 2025-02-22 01:28:37 · 542 阅读 · 0 评论 -
高斯模糊知识点
权重由高斯函数确定,靠近中心的像素具有更高的权重,远离中心的像素权重较低。总结来说,高斯模糊是一种重要的图像处理技术,适用于去噪、平滑、图像特征提取等场景,广泛应用于图像处理、计算机视觉、医学影像及艺术效果制作等多个领域。高斯模糊是一种图像模糊技术,其核心思想是通过高斯函数对图像进行平滑处理。在图形设计中,高斯模糊常用于艺术效果的制作,如在图像中加入柔和的过渡效果或背景虚化,以突出前景物体。在医学影像处理中,高斯模糊用于去除噪声,提高图像的质量,便于医生分析病变区域。是图像中周围像素的值,原创 2024-11-17 22:49:45 · 1063 阅读 · 0 评论 -
C# 实现均值回归模型
我们可以使用过程来模拟价格的均值回归,首先我们需要确定一些基本的参数:长期均值(μ)、均值回归的速度(θ)、波动率(σ)以及时间步长。我们将通过生成随机数来模拟这个过程,每次迭代中,价格会朝着均值回归,加入随机扰动来模拟市场的随机波动。原创 2024-11-16 14:32:56 · 450 阅读 · 0 评论 -
回归分析是什么有哪些应用场景
回归分析是一种统计方法,用于研究自变量(解释变量)与因变量(响应变量)之间的关系。其主要目的是建立一个模型,以预测或解释因变量的变化。原创 2024-10-31 14:09:05 · 1040 阅读 · 0 评论 -
贝叶斯定理是什么有哪些应用场景
贝叶斯定理是概率论中的一个重要定理,它描述了在给定某些证据的情况下,如何更新一个事件的概率。原创 2024-10-31 14:08:36 · 743 阅读 · 0 评论 -
HOTP和TOTP算法图解
对于 HOTP,通过上图我们已经看到输入算法的主要有两个元素,一个是共享密钥,另外一个是计数。在 RFC 算法中用一下字母表示:K 共享密钥,这个密钥的要求是每个 HOTP 的生成器都必须是唯一的。一般我们都是通过一些随机生成种子的库来实现。C 计数器,RFC 中把它称为移动元素()是一个8个byte的数值,而且需要服务器和客户端同步。另外一个参数比较好理解,Digit表示产生的验证码的位数最后两个参数可能暂时不好理解,我们先放在这,等用到在解释T称为限制参数()表示当用户尝试T次OTP。转载 2024-08-02 00:11:00 · 330 阅读 · 0 评论 -
使用加密算法加密数据时,得到通常是二进制数据(字节数组),ToHex16和ToBase64的区别
当我们使用加密算法加密数据时,得到的结果通常是二进制数据(字节数组)。这种二进制数据在存储、传输或展示时,并不总是方便处理或直观可读的。为了解决这个问题,我们可以将这些二进制数据转换成其他格式,以便于处理和展示。加密结果可能包含一些无法用普通字符串表示的字符,例如控制字符或非打印字符。这些字符可能会导致在存储或传输过程中出现问题。加密结果是二进制数据,转换为普通字符串后可能会导致一些字节丢失或不可恢复的数据损失。这可能会影响解密的结果,导致无法正确还原原始数据。原创 2024-05-18 00:22:49 · 742 阅读 · 0 评论 -
Diffie-Hellman协议
Diffie-Hellman 协议是一种密钥交换协议,允许两个远程方在公开信道上协商一个共享的秘密密钥,而不需要事先共享任何秘密信息。它的基本思想是基于离散对数问题,该问题在大整数的离散对数领域是难解的。每个参与方选择一个私有密钥(通常用小写字母表示,例如,a 是 Alice 的私有密钥,b 是 Bob 的私有密钥),并计算对应的公开密钥。最重要的是,即使通过窃听者截获了公开的密钥交换过程,由于离散对数问题的难解性,攻击者也难以计算出实际的共享密钥。这些参数通常是公开的,所有通信的双方都使用相同的参数。原创 2023-11-26 22:14:56 · 888 阅读 · 0 评论 -
Hash值比较大小原理
需要注意的是,哈希值是一种不可逆的压缩形式,因此在比较大小时,通常只关注它们是否相等或不相等,而不是在数值上的大小。哈希函数的目标是尽可能均匀地将不同的输入映射到不同的哈希值,以提供一种高效的数据查找和比较方法。如果需要按大小排序或比较哈希值,通常更合适的方法是使用原始数据进行比较,而不是它们的哈希值。哈希值的大小比较是通过比较两个哈希值的字节或比特来实现的。哈希值的大小比较通常用于数据结构如哈希表、集合、映射等的操作,以确定元素是否已存在或确定元素在数据结构中的位置。原创 2023-10-01 20:47:48 · 1557 阅读 · 0 评论 -
哈夫曼编码
哈夫曼树(Huffman Tree)是一种用于数据压缩的树形数据结构,通常用于构建哈夫曼编码(Huffman Coding)。哈夫曼编码是一种变长编码方式,用较短的编码表示频率较高的字符,而用较长的编码表示频率较低的字符,以达到数据压缩的目的。哈夫曼编码的优点是能够根据字符的频率分配不同长度的编码,以达到更高的压缩效率。频率高的字符用短编码表示,频率低的字符用长编码表示,这样可以减小编码后的文本长度。哈夫曼编码被广泛用于数据压缩领域,例如在文件压缩(如ZIP文件)和图像压缩(如JPEG图片)中使用。原创 2023-10-01 15:38:03 · 136 阅读 · 0 评论 -
ECDSA 和ECC 什么关系
ECDSA(Elliptic Curve Digital Signature Algorithm)是一种使用椭圆曲线密码学(ECC,Elliptic Curve Cryptography)作为基础数学结构的数字签名算法。因此,ECDSA和ECC之间存在密切的关系,但它们是不同的概念。因此,ECDSA是一种构建在ECC之上的具体应用,它使用椭圆曲线来实现数字签名。ECC本身是更广泛的密码学领域中的一种技术,可以用于多种目的,包括加密、数字签名和密钥交换等。ECDSA是其中之一,专门用于数字签名。原创 2023-09-24 18:29:56 · 2102 阅读 · 0 评论 -
TOTP 介绍及基于C#的简单实现
TOTP 算法是基于 HOTP 的,对于 HOTP 算法来说,HOTP 的输入一致时始终输出相同的值,而 TOTP 是基于时间来算出来的一个值,可以在一段时间内(官方推荐是30s)保证这个值是固定以实现,在一段时间内始终是同一个值,以此来达到基于时间的一次性密码生成算法,使用下来整体还不错,有个小问题,如果需要实现一个密码只能验证一次需要自己在业务逻辑里实现,只能自己实现,TOTP 只负责生成和验证。TOTP 是基于时间的一次性密码生成算法,它由。和基于事件的一次性密码生成算法不同。转载 2023-09-04 21:32:43 · 878 阅读 · 0 评论 -
什么是R树?
解析:B树是一棵平衡树,它是把一维直线分为若干段线段,当我们查找满足某个要求的点的时候,只要去查找它所属的线段即可。依我看来,这种思想其实就是先找一个大的空间,再逐步缩小所要查找的空间,最终在一个自己设定的最小不可分空间内找出满足要求的解。一个典型的B树查找如下:要查找某一满足条件的点,先去找到满足条件的线段,然后遍历所在线段上的点,即可找到答案。B树是一种相对来说比较复杂的数据结构,尤其是在它的删除与插入操作过程中,因为它涉及到了叶子结点的分解与合并。转载 2023-08-16 20:51:54 · 163 阅读 · 0 评论 -
R树例子-在现实领域中查找2公里以内所有的餐厅
在你提到的情况下,R树可以用来解决查找20英里内所有餐厅的问题。以下是一个简单的C#模拟实现,用于创建和操作R树以解决查找20英里以内所有餐厅的问题。请注意,这只是一个基本的示例,实际应用中可能需要更复杂和优化的实现。例如,在一个地理信息系统(GIS)应用中,你可以使用R树来存储每个餐厅的地理位置(经纬度),然后使用R树索引进行范围查询,以找到指定半径内的所有餐厅。请注意,上述代码是一个简化的示例,实际应用中可能需要更多的优化和错误处理。在实际项目中,你可能会使用更成熟的库来处理空间数据和R树的实现。原创 2023-08-11 17:49:12 · 334 阅读 · 0 评论 -
哈夫曼压缩算法原理
在构建哈夫曼树后,可以使用不同长度的二进制码来表示每个字符。由于哈夫曼树满足前缀码的条件,所以不会出现任何编码是其他编码的前缀的情况,从而避免了解码时的歧义。需要注意的是,哈夫曼压缩算法需要事先扫描整个文件并计算字符的频率,因此对于非常大的文件,其时间和空间复杂度可能会很高。哈夫曼压缩算法是一种无损压缩算法,它利用字符出现的频率构建一棵哈夫曼树,然后将每个字符用哈夫曼树中的唯一编码表示。由于哈夫曼编码将较常见的字符编码为较短的位序列,较少使用的字符编码为较长的位序列,因此可以实现高效的压缩效果。原创 2023-06-19 23:15:53 · 1030 阅读 · 0 评论 -
算法 思维导图(二)
逆波兰算法转换为后缀表达式之后逆波兰算法转换为后缀表达式之后逆波兰算法转换为后缀表达式之后逆波兰算数将中缀表达式转换成后缀表达式的算法如下图所示:信息流产品简易推荐算法信息流产品推荐算法......转载 2022-06-08 11:42:57 · 310 阅读 · 0 评论 -
笛卡尔积
Program.cs代码:class Program { //保存笛卡尔结果集的全局变量 public static List<string> result = new List<string>(); static void Main(string[] args) { var words = new L原创 2017-04-07 17:30:13 · 1159 阅读 · 0 评论 -
仿微信红包【使用正态分布计算红包金额】
Program.cs代码:class Program { static void Main(string[] args) { //初始化要发起的红包基础数据 double total = 100; int num = 50; double min = 0.01;转载 2017-06-03 23:36:48 · 3652 阅读 · 1 评论 -
哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(H转载 2018-01-12 14:56:52 · 596 阅读 · 0 评论 -
冒泡排序
//定义数组 static int[] nums = new int[] { 100, 99, 45, 56, 67, 78, 98, 8, 7, 65, 55, 43, 32, 23, 35, 36, 38, 37, 120, 150, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 30, 32, 31, 29, 28, 26, 2转载 2018-01-04 21:31:29 · 446 阅读 · 0 评论 -
经典算法应用之七----10亿数据中取最大的100个数据
给出三种思路,仅供参考。。 1.思路一:根据快速排序划分的思想,每次分割之后只考虑比轴大的一部分,知道比轴大的一部分在比100多的时候,采用传统排序算法排序,取前100个。 step1:递归对所有数据分成[a,b),(b,d]两个区间,(b,d]区间内的数都是大于[a,b)区间内的数 step2:对(b,d]重复step1操作,直到最右边的区间个数小于100个。注意[a,b)转载 2018-01-18 14:09:56 · 1600 阅读 · 0 评论 -
哈希表针对冲突的两种方式优缺点是什么?
我觉得需要先梳理相关的概念,国内部分的教材,概念可能因为计算机理论的快速发展和更新而变得比较模糊和陈旧(有些教材因为编纂比较早,可能现在来看有些内容就不太合适了) 所以,结合相关书籍资料,以及维基百科,我个人理解如下,希望有帮助吧: [相关术语]: 1.list:列表,又称序列,表示一组可数的有序的数值。本身可以对应多种数据结构,其中最具代表性的就是数组(array)和链表(linked li转载 2018-04-03 21:38:27 · 6644 阅读 · 0 评论 -
GC的四种清理算法
标记-清除:这是垃圾收集算法中最基础的,根据名字就可以知道,它的思想就是标记哪些要被回收的对象,然后统一回收。这种方法很简单,但是会有两个主要问题:1.效率不高,标记和清除的效率都很低;2.会产生大量不连续的内存碎片,导致以后程序在分配较大的对象时,由于没有充足的连续内存而提前触发一次GC动作。复制算法:为了解决效率问题,复制算法将可用内存按容量划分为相等的两部分,然后每次只使用其中的一块,...转载 2018-06-28 22:40:33 · 2863 阅读 · 0 评论 -
NET中SharpZipLib 的使用(二)【Web中压缩与解压】
https://www.cnblogs.com/zxl/archive/2008/10/11/1308693.html在C#中实现文件的压缩和解压缩,需要使用第三方的组建完成。常用的是:SharpZipLib组件。下载地址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx1、压缩和解压缩有两种典型的算法,一种...原创 2018-07-23 22:39:40 · 1790 阅读 · 0 评论 -
NET中SharpZipLib 的使用(一)【压缩与解压】
Program.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using ICSharpCode.SharpZipLib.Zip;namespace SharpZipLibUse{ class Program ...转载 2018-07-22 18:29:37 · 5881 阅读 · 0 评论 -
哲学家就餐问题
哲学家就餐问题是在计算机科学中的一个经典问题,用来演示在并行计算中多线程同步(Synchronization)时产生的问题。在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器。稍后,这个问题被托尼·霍尔重新表述为哲学家就餐问题。这个问题可以用来解释死锁和资源耗尽。中文名哲学家就餐问题所 属计算机科学相 关并行...转载 2019-04-06 18:09:28 · 387 阅读 · 0 评论 -
二维傅立叶变换
最糟糕的是人们在生活中经常受到错误志向的阻碍而不自知,真到摆脱了那些阻碍时才能明白过来。 —— 歌德页面代码:<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <pre class="csharp" name="code"> <%--原创 2016-09-30 23:51:21 · 2108 阅读 · 0 评论