
算法
文章平均质量分 59
曾经我是菜
平衡型,只能理解有道理的事情,可以接受没道理的事情。
展开
-
流水线式并行加速
这种并行加速的方式适用于大量数据的复杂计算,而且这些计算必须是重复的。工作组中的工作员数量经计算或测试来决定,对业务中执行时间较短的部分设置少量工作员,对业务中执行时间较长的部分设置大量工作员,合理安排线程数量,可充分发挥CPU的算力。由于传送器的存在,监视线程能够检测到任务积压的情况,这就可以提前预判内存溢出和超时异常,及时止损,清理掉那些没有希望完成的请求或暂停受理请求,保障系统稳定性。由于每个工作组都只执行完整业务的某个片段,每个工作组的业务代码都相对简单,这就提高了业务代码片段的维护性。原创 2024-03-16 23:07:49 · 437 阅读 · 0 评论 -
仿射变换原理的简单化理解
仿射变换用初级的知识去理解原创 2022-12-14 17:06:53 · 831 阅读 · 0 评论 -
工控软件控制系统设计
概述 工控软件一般指的是工业自动化软件、数据采集软件。工控软件更接近于游戏软件,与办公软件有着根本区别。 工控软件的特点是:环境不可靠、无法简单地按MCV划分、总是需要根据硬件进行调整、不更新、不维护。 工控软件与游戏软件的相同点为:原始命令简单但存在同时处理多个命令的情况、软件按设定的帧率循环运行(除定时器外几乎没有什么操作系统意义上的中断事件)、需要内置人工智能、几乎没有什么框架可选(甚至更少)、世界观是直观形象的。 工控软件与办公软件的相同点为:简约的表现方式、重大的责任、几乎原创 2021-07-23 11:45:04 · 3428 阅读 · 1 评论 -
Modbus ASCII LRC生成
Modbus ASCII的报文生成顺序为:1、生成PDU2、生成LRC校验码,将LRC附加到PDU后面3、将2中的数组转换成HEX格式的文本4、在HEX格式文本的0位置插入冒号,在HEX格式文本的后面附加Windows换行符生成LRC的公式为:LRC= - sum(PDU)以下为LRC校验码生成算法的通用性示范:/**将HEX格式的数据流包装成字符串对象*/ public static final int getLRC8FromAscIIBytes(byte[] hex, .原创 2021-07-12 15:45:32 · 902 阅读 · 0 评论 -
跳跃线性链表容器
此容器用于将ArrayList与LinkedList进行结合,利于容纳大量数据之后对容器的中间段进行增删。一般而言,ArrayList的性能总是优于LinkedList,原创 2021-05-31 11:18:06 · 118 阅读 · 0 评论 -
四位均衡磨损格雷码
什么是均衡磨损格雷码?均衡磨损格雷码是一种与标准格雷码具有相同的迭代后只变化一个位的特性,但每一个数位变化的次数相近的编码。为什么要均衡磨损?由于继电器输出PLC比晶体管输出PLC具有更好的可靠性,如果用继电器输出的PLC代替晶体管输出PLC操作变频器的16档调速可以提高系统的可靠性。但是继电器的寿命是有限的,为了延长继电器输出型PLC的使用寿命,需要对继电器的动作次数进行均衡化,使每一个继电器动作次数尽量相近或相同,这样才能使整机的寿命最大化。均衡磨损编码采用遍历法筛选得到以下两种均衡原创 2021-04-22 21:16:54 · 277 阅读 · 0 评论 -
带有点的IPv4输入框和带冒号的时:分:秒输入框的制作方法
固定格式文本框在Windows控制面板中的网络配置和系统时间设置中有出现过。但是MFC、JavaFX、SWT、HTML中都没有这种控件。假设这是一个系统控件,为什么又不让应用层使用呢?显然假设不合理,那么也就是说这种固定格式文本框并不是一个系统API提供的功能。固定格式文本框的本质是一个不可编辑的可见文本框和若干个透明背景的小文本框。文本框的背景颜色可以设置成透明,再把透明背景的文本框放到一个普通背景的但不可编辑的大文本框上,看起来就好像直接操作的是那个大文本框一样。当小文本框中输入了某个分隔符或字原创 2020-08-10 10:24:26 · 324 阅读 · 0 评论 -
生产过程的几种模型
所谓生产过程,就是指一个产品从无到有的过程。产品是一个企业用以盈利的价值载体,产品的生产,目的在于产生额外的交换价值,而不在于产生新的使用价值。对于零件加工工厂,产品是指通过对原料进行切削和变形得到的零件;对于电子加工厂,产品是指利用电子元件和PCB板料、焊料制作而成的电路板;对于装配工厂,产品是指用零件、元件、电路板、耗材等组装而成的机构或机械;对于系统软件工厂,产品是用各种低级指令和固件库程序制作的操作系统软件;对于SDK工厂,产品是用操作系统API组装而成的基本模式和算法;对于平台工厂,产品是用S原创 2020-07-30 14:44:44 · 4686 阅读 · 0 评论 -
用Java实现简单的上位机三菱PLC
上位机已经有丰富的编程语言,所以不再需要完整的PLC功能。提供梯形图的指令是用于快速配置的。package pers.laserpen.util.automation.plcEmulator;import java.util.*;import java.util.Map.Entry;import java.util.concurrent.ConcurrentHashMap;impo...原创 2020-04-20 15:38:08 · 3755 阅读 · 2 评论 -
数据拼接三要素
什么是数据拼接~ 任何在机器间传递多组相互独立报文且不能保证每一组报文各自同时传达的通信方式都需要数据拼接。 所谓“一组报文”是指具有独立含义(或空含义)的命令、文件、数据、信号等二进制数字。一组报文可以看作是一个二进制数字,数值大小相同的报文具有相同的含义,但具有相同含义的报文不一定有相等的数值大小。 不能保证每一组报文各自同时传达的通信方式,是指无法从物理层保证所传输的数字相互独...原创 2020-04-06 10:44:58 · 1780 阅读 · 0 评论 -
二维平面覆盖算法(SolidWorks中PhotoView 360 的图块渲染顺序)
这个需求就是要在一个正方形矩阵中,写入连续的自然数,且矩阵中任意两个差为1的自然数位置要相邻。一切都是从一个[ 0 ]开始的。然后选择一个增长方向。可以向右或向下。我以向右为例,第一次增长后得到如下矩阵: 0 1 3 2 这个矩阵很简单,可以直接手工填写。但我们需要让尽可能多的自然数以连续的方式填充到正方形矩阵中。也就是达到这个效果:0 1 ...原创 2020-03-16 15:10:52 · 688 阅读 · 0 评论 -
弱引用的实现
所谓弱引用是指所持引用不能防止其引用的对象被释放的一种指针。实现弱引用需要额外设计一个指针包装者:struct Box { void *object=nullptr; size_t refCount=0,weakCount=0;}这个Box和object对象一样是需要new出来的。把object的指针放入Box中,再把Box指针放入一个初始的强引用容器中...原创 2020-01-17 14:38:53 · 661 阅读 · 0 评论 -
Java Object intern算法
Java中内置有一个String.intern方法,对于重复使用的内容相同而内存地址不同的String对象,调用intern方法可以节省内存空间。如果将String作为HashMap的键来使用,intern可以提高性能。那么今天我来向大家介绍一个针对Object的intern。Java没有提供这个方法,所以我实现了它。package pers.laserpen.util.java;i...原创 2020-01-16 20:53:56 · 247 阅读 · 0 评论 -
PLC结构化文本设计模式和算法
前言. 目前PLC应用学科并没有设计模式方面的教程,导致学员解题都得从零开始设计。梯形图无法发展出PLC的真正功能,所以我们需要以结构化文本来实现设计模式。本文以普及结构化文本为目的,将教大家结构化文本的入门和PLC编程设计模式。 本文将会讲解高度抽象的设计模式,设计模式与案例无关,并不以案例讲题。反正学校按这种方式教了那么久也没人听得懂。我将主要以理论为主,避免与具体案例绑定,以防止读.........原创 2019-12-19 23:26:04 · 12154 阅读 · 13 评论 -
让Octave支持中文
Octave是免费的matlab语言解释器,适合用作子程序,进行复杂的数学计算。但Octave和Matlab本身不支持Unicode字符作为标识符。如果要用Unicode字符作为Matlab程序的标识符,需要对其进行转义。Matlab程序中可用的字符还停留在早期的C语言水平,是目前支持的字符最少的编程语言。我们需要在53个标准字符中选择一个转义字符。我选择下划线作为转义字符,因为在驼峰命名法中...原创 2019-11-20 14:51:26 · 4103 阅读 · 7 评论 -
变频器定位控制笔记
变频器定位用于大功率电机的粗略定位控制,可用于电梯,自动货架起重机的升降控制。由于伺服电机的功率有限,只能用变频器进行定位。短行程的变频器定位可以使用变频器自带的模拟量比较功能,某些型号的变频器有提供两路模拟量信号输入,其中一路接电机位置传感器,另一路接定位信号,变频器会自动根据电压差控制电机正反转,达到粗略定位的目的。长行程变频器定位需要使用控制器和编码器。可以使用PLC作为控制器,需要...原创 2019-11-14 11:12:35 · 7407 阅读 · 4 评论 -
向量法计算平面与直线的交点
- 已知有平面上三个点(ABC)坐标,直线上两个点(DE)坐标,求平面ABC与直线DE的交点坐标。 解: /** * 平面与直线的交点 * * @param plantA * @param plantB * @param plantC * @param lineD * @param lineE * @return */ public st...原创 2019-11-13 16:24:03 · 4867 阅读 · 6 评论 -
线程交接
· 所谓“线程交接”,就是指同一个任务由于某种原因,需要安排在不同的线程中运行而产生的一种流程管理操作。 mermaid graph LR A(开始)-- ```mermaidgraph LRA[长方形] – 链接 --> B((圆))A --> C(圆角长方形)B --> D{菱形}C --> D...原创 2019-10-31 17:26:16 · 223 阅读 · 0 评论 -
向量法计算体积的思路(没有代码了)
向量法计算体积的关键是把立体分解成锥体。立体必须是由一系列有限平面多边形封闭而成的,可以使用多边形,但一定要是平面多边形。必须密封,如果不密封就会导致体积误差。可取任意点为基准点(事实上二维空间计算平面多边形的面积也可以取任意点为基准点),立体每一表面上的平面多边形可与基准点组成一个锥体。锥体的底面积可取多边形边线上一点(也可以取同平面上任意点,但取边线点比较方便),与边线上每一线段分...原创 2019-10-25 11:26:04 · 3503 阅读 · 3 评论 -
向量法计算多边形面积
计算多边形面积的方法为将多边形分解成多个三角形,然后把这些三角形的面积相加。三角形面积为两边向量叉积除以2。 这是Java代码,目前是第3版,已经尽可能优化了,相比初版有25%的性能提升。 /** * 平面多边形面积算法3,用原点为基点(不需要从图形边线上取点)<br/> * 多计算一条线段,但减少了每一步的两次减法(起于原点的向量等于节点的坐标),使误差减小...原创 2019-10-22 10:07:21 · 2914 阅读 · 0 评论 -
PWM算法
PWM用于直流斩波,可以用于直流电升压或降压,常见的PWM用于降压。PWM利用占空比来调节单位时间内能量输出的密度,在宏观上体现为输出电压与输入电压不同。 狭义上的PWM只有一种算法,通过线性函数与常量的比较来判定这个位是输出高电平还是低电平。输出的比特流类似于“1110000000”这是一个占空比为3/10的PWM比特流,它以10个位为一个PWM周期,其中高电平占3个位,所以占空比...原创 2018-05-17 10:13:45 · 8670 阅读 · 0 评论 -
JAVA的二进制高精度自然数算法
在8位机和16位机上实现32位计算,在32位机上实现64位和128位计算需要使用一个进位标志寄存器,这个寄存器可以将任意多个内存地址连接成一个整数。但是JAVA上没有办法操作这个寄存器,只能用内存中的一个定义好的变量来作进位。利用这个进位变量,将任意个 int连接,就是所谓的高精度算法了。 现有的十进制算法效率低,一次只以算一个十进制位,而且浪费内存。我将汇编语言的算法用于JAVA,写的这...原创 2015-07-10 09:32:38 · 698 阅读 · 0 评论 -
格雷码算法和逆运算算法
我发现网络上很多格雷码的算法介绍废话连篇,写一大堆理论的东西,给的代码要么不完整,没有逆向算法,要么逆向算法太low,实在有点看不下去。我这篇格雷码的文章将直入主题,面向那些知道格雷码是什么,但不知道怎样编写高效程序的程序员。先给一个正向算法,整数变格雷码:java版:/** * 整数变格雷码。<br/> * 设有效位bits,若2<sup...原创 2018-04-01 22:30:32 · 2487 阅读 · 0 评论