- 博客(16)
- 资源 (45)
- 收藏
- 关注
原创 C#表达式求值算法(干货)
在讲述算法之前,我们需要先学习几个概念。中缀表示法中缀表示法就是我们人书写表达式的方法,如8/4+3*(6-2)。后缀表示法后缀表示法是从中缀表示法转化过来的,它满足以下条件:(1)操作数的顺序与中缀表达式一致。(2)没有括号。(3)操作符没有优先级之分。例如上面的表达式,其后缀形式是:84/362-*+后缀表达式的特点对计算机计算非常有利。二元运算符需...
2019-06-27 15:07:43 4001 3
原创 工控软件装机常规设置
一般在工控机上安装软件之后,我们需要对工控机进行一些设置,例如是开机启动、禁用睡眠等。如果我们每台工控机都重复这些动作,难免会比较繁琐,有时也会忘记。最好,我们把这些设置动作,放在软件初次启动的代码里,或是在安装的过程中。设置开机启动设置开机启动需要修改注册表,代码如下:RegistryKey root = Registry.CurrentUser;RegistryKey run ...
2019-06-27 08:45:57 1559
原创 坐标轴刻度取值算法
我们在用代码绘制图表的时候,需要绘制坐标轴,而坐标轴上是有刻度的。假如数据最小值是0.32,最大值是0.65,我们想坐标轴上有11个刻度左右,那是不是每个刻度的间隔就是(0.65-0.32)/10=0.033呢?这样做出来的刻度是这样的:0.32 0.353 0.386 0.419 0.452 0.485 0.518 0.551 0.584 0.617 0.65Oh my god! 这样的...
2019-06-13 16:35:33 6988 2
原创 绘制等高线图的算法
假设我们在一个矩形范围内,有一些离散的高度数据,形如(x,y,height)这样的数据集,然后我们要得到一张这样的等高线图:我们描述一下生成等高线图的算法。一、图形概述实际地图上实用的单位是米,但我们显示时使用的单位是像素,这里面有一个转换的关系。而且,显示的图形有可能需要缩放。所以我们收集的数据,x和y统一使用相对值。我们把总长和总宽都定为1,实际的坐标相对于单位1来定。例如地图...
2019-06-12 11:14:52 17628 17
原创 创建同时基于.NET Framework、.NET Core、.NET Standard项目的方法
如果我们开发Windows用户程序(WPF、Winform),我们会用到.NET Framework。如果我们要做跨平台的应用,我们会用到.NET Core。既然是跨平台,是不是.NET Core的项目可以用在WPF上呢?并不可以,.NET Core没有Windows的特性,不能直接用在WPF上。但实际上,我们开发的一些类库,并不涉及到Windows特性,例如我们只是实现某些算法,纯数学的...
2019-06-06 10:34:08 5383
原创 机器码、序列号、认证码、注册码的生成算法(五)
生成注册码(对称加密)非对称加密自然是要更安全的,因为软件里没有私钥。但该方法最大的缺点就是密钥太长,注册码太长,无法手抄。鉴于我们假设破解者是无法对软件反编译的,使用对称加密也未尝不可。流程跟上一节提到的基本一致。加密方法可以使用DES,密钥最短是64位,也就是16个字符。明文信息最长是7个字节,我们用4个字节存放机器码(相当于一个int),然后剩下的三个字节存放过期信息。下面是实现...
2019-06-06 08:56:43 8704
原创 机器码、序列号、认证码、注册码的生成算法(四)
生成注册码(非对称加解密)我们再列出几种生成注册码的情况:(1)软件生成一个机器码,交给开发者,开发者提供一个注册码。(2)把用户名交给开发者,开发者提供一个注册码。(3)直接向开发者索取一个注册码。在算法上,这几种情况并无太大区别。如果我们有一个原始的码(机器码或用户名),我们把它设为x,那么注册码就是x的一个函数y=f(x)。如果是第三种情况,那么x可能是一个随机数(也可能...
2019-06-06 08:44:32 11242
转载 C#多线程编程:使用并发集合
原文链接:https://www.cnblogs.com/wyt007/p/9486752.html编程需要对基本的数据结构和算法有所了解。程序员为并发情况选择最合适的数据结构,那就需要知道很多事情,例如算法运行时间、空间复杂度,以及大写0标记法等。在不同的广为人知的场景中,我们总知道哪种数据结构更高效。对于并行计算,我们需要使用适当的数据结构。这些数据结构具备可伸缩性,尽可能地避免锁,同时...
2019-06-05 19:37:39 4318
转载 C#多线程编程:使用C#5.0
原文链接:https://www.cnblogs.com/wyt007/p/9486752.html到现在为止,我们学习了任务并行库,这是微软提供的最新的异步编程基础设施。它允许我们以模块化的方式设计程序,来组合不同的异步操作。遗憾的是,当阅读此类程序时仍然非常难理解程序的实际执行顺序。在大型程序中将会有许多相互依赖的任务和后续操作,用于运行其他后续操作的后续操作,处理异常的后续操作,并且它...
2019-06-05 19:27:19 450
转载 C#多线程编程:使用任务并行库
原文链接:https://www.cnblogs.com/wyt007/p/9486752.html我们在之前的章节中学习了什么是线程,如何使用线程,以及为什么需要线程池。使用线程池可以使我们在减少并行度花销时节省操作系统资源。我们可以认为线程池是一个抽象层,其向程序员隐藏了使用线程的细节,使我们专心处理程序逻辑,而不是各种线程,问题。然而使用线程池也相当复杂。从线程池的工作线程中获取结果并...
2019-06-05 19:09:05 640
转载 C#多线程编程:使用线程池
原文链接:https://www.cnblogs.com/wyt007/p/9486752.html在之前的章节中我们讨论了创建线程和线程协作的几种方式。现在考虑另一种情况,即只花费极少的时间来完成创建很多异步操作。创建线程是昂贵的操作,所以为每个短暂的异步操作创建线程会产生显著的开销。为了解决该问题,有一个常用的方式叫做池( pooling),线程池可以成功地适应于任何需要大量短暂的开销大...
2019-06-05 18:51:24 664
转载 C#多线程编程:线程同步
原文链接:https://www.cnblogs.com/wyt007/p/9486752.html正如前面所看到的一样,多个线程同时使用共享对象会造成很多问题。同步这些线程使得对共享对象的操作能够以正确的顺序执行是非常重要的。在使用C#中的lock关键字,我们遇到了一个叫作竞争条件的问题。导致这问题的原因是多线程的执行并没有正确同步。当一个线程执行递增和递减操作时,其他线程需要依次等待。这种...
2019-06-05 18:35:58 4070 1
转载 C#多线程编程:线程基础
原文链接:https://www.cnblogs.com/wyt007/p/9486752.html创建线程static void Main(string[] args){ Thread t = new Thread(PrintNumbers); t.Start();//线程开始执行 PrintNumbers(); Console.ReadKey();...
2019-06-05 17:38:48 968
原创 机器码、序列号、认证码、注册码的生成算法(三)
机器码生成如果我们希望注册码只能在一台电脑上使用,那就需要生成一个机器码。把机器码交给开发者,开发者经过一系列的运算之后,返回一个注册码。这个注册码已经包含了机器信息,只能用在一台电脑上。机器码可以从很多硬件信息上得到,例如是MAC地址、磁盘ID、CUP序列号等。但这些信息有几个问题:(1)不一定唯一,很多同个型号的电脑,硬件信息都是一样的。(2)不一定存在。例如没有网卡,MAC地...
2019-06-05 15:44:32 14131
原创 机器码、序列号、认证码、注册码的生成算法(二)
设备动态密码设计我们再把需求列出来:(1)密码只能是阿拉伯数字,而且不能太长,一般要求10位以下,否则记不住,或让人感觉厌烦。(2)密码包含用户信息,系统能知道是谁对设备进行了操作。(3)密码是动态的,每次都不一样。(4)密码能够防止恶意篡改。说白了,就是密码里包含用户信息、时间信息,校验信息,但只能有8个阿拉伯数字。这是可以做到的,为什么?因为我最后做出来了。好,我们...
2019-06-05 15:26:22 7343
原创 机器码、序列号、认证码、注册码的生成算法(一)
虽然标题列出了很多种“码”,但其实有些是一个意思,只是叫法不一样而已。我所介绍的算法也不是说绝对严谨、不能破解的,它们只是适用于某些场合而已。举个例子,我现在想设计一个长度是24个字符的注册码,但如果你用比较安全的RSA算法来做的话,可能你要用到1024个字节,转成Base64也有170个字符。又比如,认证码的用户都是体力劳动者,但你非要做得顶级黑客都无法攻破,感觉就没有意义了。以下所说的几种认证...
2019-06-05 15:05:32 23216
WPF MVVM完整示例(登录窗口)
2019-03-29
C#实现4种经典迷宫生成算法和迷宫寻路算法
2018-12-05
方程求解源代码,一元二次方程,一元三次方程,一元四次方程
2022-08-09
格式化html文本转svg文本源代码
2022-07-28
C#实现的树形图控件源码
2022-06-02
虚拟Modbus协议设备软件
2022-06-02
BP神经网络基本架构实现(源代码)
2022-06-02
OpenCvSharp测试程序DEMO
2020-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人