- 博客(70)
- 资源 (26)
- 收藏
- 关注
原创 多项式回归各项参数计算
需要注意的是,多元一次多项式中没有常数项的设定,在编程的时候需要设置某个维度的坐标为常量1,这样才能计算出常数项。鉴于一般仿射变换都是让最后一个坐标为1,使x_n恒为1时可以得到通用的仿射变换矩阵。根据公式列出方程组后利用三角矩阵程序可计算出多项式回归的各系数。
2024-12-22 12:02:44
136
原创 流水线式并行加速
这种并行加速的方式适用于大量数据的复杂计算,而且这些计算必须是重复的。工作组中的工作员数量经计算或测试来决定,对业务中执行时间较短的部分设置少量工作员,对业务中执行时间较长的部分设置大量工作员,合理安排线程数量,可充分发挥CPU的算力。由于传送器的存在,监视线程能够检测到任务积压的情况,这就可以提前预判内存溢出和超时异常,及时止损,清理掉那些没有希望完成的请求或暂停受理请求,保障系统稳定性。由于每个工作组都只执行完整业务的某个片段,每个工作组的业务代码都相对简单,这就提高了业务代码片段的维护性。
2024-03-16 23:07:49
436
原创 清除Eclipse导出可执行JAR的记录
导出文件记录:".metadata\.plugins\org.eclipse.jdt.ui\dialog_setting.xml"主类记录:".metadata\.plugins\org.eclipse.debug.core\.launches\*"删除这个文件可以清除导出文件记录。清空这个文件夹可以清除主类记录。
2024-01-17 22:57:17
424
1
原创 韩信点兵的算法
秦朝末年,楚汉相争,韩信率兵打仗。某次,他急需点兵迎战,就命士兵布阵三次(命3人一排,多出2名;命5人一排,多出3名;命7人一排,多出2名)后,直言有1073名勇士可击垮敌兵,其神机妙算鼓舞士气,旌旗摇动,大败楚军。
2023-01-15 11:24:47
2376
原创 Win32编程串口超时结构体的一般性设置
Win32串口结构体有5个成员变量:读数据拼接超时、读数据总超时常数项、读数据总超时一次项、写数据总超时常数项、写数据总超时一次项。 拼接超时即是指两个字节之间不大于这个毫秒数,底层即将这两个字节视为同一组报文。仅读数据有拼接超时。这个参数通常都是正值,不应设置为0或负数。 总超时常数项是指调用函数开始时进行计时,如果没有收到新数据,则等待这个时间。总超时一次项是每接收一个字节,则在常数项的基础上增加一份时间。 一般我们把写超时都设置为0,读数据总超时一次项也设置为0,只使用读数据拼接超时和读数据
2022-12-06 09:37:29
1283
原创 Linux系统下使用socat将串口映射到TCP服务器端口
socat TCP-LISTEN:8899,fork,reuseaddr FILE:/dev/ttyS1,b110,cs8,parenb,parodd,cstopb,raw,echo=0
2022-02-08 22:18:24
7292
4
原创 树莓派开机启动终端运行方法
在路径"/home/pi/.config/autostart"下建立一个文本文本,并以后缀名".desktop"结尾。根据是否需要显示终端,写入下面两段内容之一:
2021-10-30 15:28:25
4353
原创 是什么使我放弃了B/S
刚学Java的时候,听闻JavaEE才是Java的主战线,耐着性子一点点从基础开始,终于学到了JavaEE,然后完成了JSP的学习,后来暂停了SSH的学习,渐渐地再也没有学习JavaEE的动力了。但我当时还是觉得B/S结构是某些问题的绝佳解决方案,也试着找过有没有什么比JavaEE更简单的方法,毕竟我只想要一个画面,底层的东西根本不需要非得放WEB服务器上。 起初是想深入研究一下Java语言,才暂停了JavaEE的学习。后来开始不喜欢JavaEE了,原因是这只是单纯的职业技术,没有什么玩点,我把多
2021-08-09 10:28:45
157
原创 工控软件控制系统设计
概述 工控软件一般指的是工业自动化软件、数据采集软件。工控软件更接近于游戏软件,与办公软件有着根本区别。 工控软件的特点是:环境不可靠、无法简单地按MCV划分、总是需要根据硬件进行调整、不更新、不维护。 工控软件与游戏软件的相同点为:原始命令简单但存在同时处理多个命令的情况、软件按设定的帧率循环运行(除定时器外几乎没有什么操作系统意义上的中断事件)、需要内置人工智能、几乎没有什么框架可选(甚至更少)、世界观是直观形象的。 工控软件与办公软件的相同点为:简约的表现方式、重大的责任、几乎
2021-07-23 11:45:04
3416
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
900
原创 跳跃线性链表容器
此容器用于将ArrayList与LinkedList进行结合,利于容纳大量数据之后对容器的中间段进行增删。一般而言,ArrayList的性能总是优于LinkedList,
2021-05-31 11:18:06
117
原创 四位均衡磨损格雷码
什么是均衡磨损格雷码?均衡磨损格雷码是一种与标准格雷码具有相同的迭代后只变化一个位的特性,但每一个数位变化的次数相近的编码。为什么要均衡磨损?由于继电器输出PLC比晶体管输出PLC具有更好的可靠性,如果用继电器输出的PLC代替晶体管输出PLC操作变频器的16档调速可以提高系统的可靠性。但是继电器的寿命是有限的,为了延长继电器输出型PLC的使用寿命,需要对继电器的动作次数进行均衡化,使每一个继电器动作次数尽量相近或相同,这样才能使整机的寿命最大化。均衡磨损编码采用遍历法筛选得到以下两种均衡
2021-04-22 21:16:54
276
原创 文件创建时间、修改时间、访问时间的定义
创建时间:文件在这个虚拟分区首次被编录的时间,文件被创建或复制到另一个分区的时候会改变这个时间;修改时间:文件的尺寸发生变化的时间,采用输出流写必然会有文件尺寸清零再重写的过程,所以输出流保存文件必然修改文件的修改时间,而文件内存映射则不一定会改变文件的尺寸。这个时间应该是记录文件系统中被文件占用的簇被分配或回收的时间中的最大值;访问时间:文件被复制的时间,不论复制到同一个虚拟分区还是另一个虚拟分区,都会改变访问时间,但剪切操作则不会改变访问时间;输入流、不改变文件尺寸的文件内存映射读写操作都不
2021-04-13 14:20:11
12563
原创 冗余系统设计前提
并非所有设备都可以设置冗余,冗余系统的设计相比非冗余系统具有更严格的限制。符合以下条件的设备才是可行的:1、没有随机出现的未知数量的变量实例2、数据存储结构是固定的如果一台设备运行过程中会随机出现未知数量的某种变量的实例,或数据存储结构是自由的,就意味着无法对这些数据进行有效的同步,此时的冗余设备是不稳定的。且冗余设备的恢复无法实现。具体可以实现冗余的设备有:1、不保存变量的设备:RTU、单稳态继电器等都属于此类;2、组合逻辑模块:使用传统梯形图编程的PLC、按照组合逻辑方式开发
2020-11-16 09:16:52
774
原创 工业通信网络结构
工业通信网络结构工业通信网络包含所谓的工业现场总线、局域网、公网等概念。这些概念在物理环境下并不是界线分明的,是一种主观上的分类。在物理环境下,目前工业网络结构都是设备与双绞线之间的通信。可以互相通信的设备与双绞线的集合称为网络。当网络中含有工业生产、加工、安防设备时,此网络可以称为工业通信网络。工业通信网络与其它网络命名不是互斥关系,同一个网络可以有多种定义。网络结构是对设备通信逻辑的设计理念,目前已有的网络结构有多主结构(如:CANOpen)、一主多从结构(如:Modbus)、一从多主结构(如:
2020-11-10 12:04:23
1512
原创 互联网发展终端和桌面的未来
对于像我们这一代的年经人而言,大数据、云技术貌似是未来科技发展的主流方向。然而,了解过计算机发展的历史后,这些所谓的“高科技”其实是计算机行业中最为古老的东西。事实上目前人类掌握的所有技术都是古老的技术,现代与过去的区别在于外观、名词、规模,共同点在于原理、结构、建设方式。分布式和集中式如何定义的?其实分布式和集中式是同一事物的两个方面。一般用于区分依赖互联网的网络应用和自由的单机应用。当我们看到一个应用的用户群的形态时,我们发现网络应用的用户分布于世界各地,单机应用的用户只能在一个位置。于是,基于此种
2020-10-18 11:43:40
726
原创 对一些关于编码格式方面的老生长谈做一个重新的思考
一个函数中源代码不超过30行这个建议的原始意义在于使一个函数能够在显示器上完全显示。而多数的显示器大约就只能显示30行源码。遵循这一建议后,我们将会发现一个问题,虽然单个函数的可读性提高了,但是代价是为了分散源码而不得不产生大量的一次性的函数。这些一次性的函数不光使程序整体变得凌乱,在IDE中还会占用掉大纲空间。总体上看,提高单个函数的可读性而使工程更混乱并不可取。最初提出此建议的人,在当时的历史背景下,他所看到的工程是结构简单、功能单一的程序,甚至于一个进程只是为了进行一个数学运算。然而软件技术发
2020-10-14 10:32:57
184
原创 工控机JVM启动参数堆大小的设置建议
由于工控机上的内存一般都不大,多为2G或4G,为了延长寿命,通常会把虚拟内存关掉,而操作系统会用掉一半的内存,那么能够给应用程序使用的内存就很小了。其实只运行一个JVM的情况下,JVM会适应操作系统而自动调整堆大小,所以正常2GB以上的内存即使安装64位Win10也没有问题。但是如果还需要使用多个其他的辅助程序的情况下,JVM浪费内存的毛病就可能会导致系统不正常。工控机经常会安装一些辅助程序,比如SQL Server社区版、内网穿透客户端、VPN客户端,这些应用都需要消耗一些内存,JVM随机浪费内存的情
2020-09-16 09:45:03
389
原创 浅谈公共框架、定制框架和无框架
正规的软件工程总是遵循某些框架,以便于防止员工更换导致项目无人接手。几乎所有的框架都无法从根本上解决代码变乱的问题。其原因在于自顶向下的设计模式无法适应无限变更的工程。但总是一种让它越来越乱的方法能让代码继续维护下去。当软件遵循公共框架的时候,反编译的代码就具有一定的技术价值,就产生了技术风险。一些小工程和不正规的团队的工程或特殊工程没有按公共框架来做,这些代码即便开源也不会有人问津。因为即使看得懂,也无法简单地利用。此外,还有无框架工程。为了各种目的,公司不允许工程师深入了解一个订单的需求,工
2020-08-19 10:29:26
583
原创 Python与JAVA仿三菱PLC的性能比较
测试背景是一款自动化软件平台上的逻辑模块性能对比。能够实现复杂逻辑的目前有结构化文本(指令表)和Python(Jython)两个。三菱指令的解释器是原创的,因为没有相关的Java支持。Python程序的解释器是Jython2.7.2。由于功能等级不同,三菱指令的编译时间较快,对程序的修改是无缝接入的。Jython的compile函数调用时间约5秒,但可以使用Python的高级功能。实际运行时不再编译,所以这个时间没有测。编译完成后运行几分钟后,对逻辑区的运行时间进行测量,排除内部IO区的干扰(例
2020-08-18 16:29:52
781
原创 带有点的IPv4输入框和带冒号的时:分:秒输入框的制作方法
固定格式文本框在Windows控制面板中的网络配置和系统时间设置中有出现过。但是MFC、JavaFX、SWT、HTML中都没有这种控件。假设这是一个系统控件,为什么又不让应用层使用呢?显然假设不合理,那么也就是说这种固定格式文本框并不是一个系统API提供的功能。固定格式文本框的本质是一个不可编辑的可见文本框和若干个透明背景的小文本框。文本框的背景颜色可以设置成透明,再把透明背景的文本框放到一个普通背景的但不可编辑的大文本框上,看起来就好像直接操作的是那个大文本框一样。当小文本框中输入了某个分隔符或字
2020-08-10 10:24:26
322
原创 延时函数名称sleep和delay的区别
延时函数的两种常用名称是sleep和delay。一般在上位机多见sleep,单片机常用delay。那么sleep和delay的意义有何区别?sleep意为睡眠,即线程挂起,由定时器重新唤醒线程。sleep作用期间,该线程不占用CPU资源。delay意为延迟,即线程等待,由线程自身进行循环查询,在设定时间之后退出循环。delay作用期间,该线程占用CPU资源。在上位机,delay常可以和sleep组合使用,即循环查询中调用sleep,降低CPU占用率。sleep是由系统内核、固件库或特殊功能寄存器
2020-08-03 10:41:01
9820
原创 生产过程的几种模型
所谓生产过程,就是指一个产品从无到有的过程。产品是一个企业用以盈利的价值载体,产品的生产,目的在于产生额外的交换价值,而不在于产生新的使用价值。对于零件加工工厂,产品是指通过对原料进行切削和变形得到的零件;对于电子加工厂,产品是指利用电子元件和PCB板料、焊料制作而成的电路板;对于装配工厂,产品是指用零件、元件、电路板、耗材等组装而成的机构或机械;对于系统软件工厂,产品是用各种低级指令和固件库程序制作的操作系统软件;对于SDK工厂,产品是用操作系统API组装而成的基本模式和算法;对于平台工厂,产品是用S
2020-07-30 14:44:44
4680
原创 Java11及更高版本的JavaFX配置
自Java 9开始,JDK增加了模块系统,把JavaFX分离了出来。不过即使分离出来,JavaFX也还是属于JDK的一个插件。这种插件有两种用法,一是在JDK外部安装,通过java命令导入,二是嵌入JDK中,把JDK扩展成自带JavaFX的版本。外部安装的方法需要使用以下格式启动JARjava -Dfile.encoding="UTF-8" --module-path "D:\lab\java\Library\lib\jar\openjfx-13.0.1_windows-x64_bin-sdk\j
2020-06-11 11:00:21
6933
3
原创 尽量不要更改运行中的py文件
Python有一个特点,就是程序文件是文本文件。它又和bat不同,bat的更改会实时影响脚本的运行,而py文件更改不会影响已经运行的Python进程。如果要刷新py文件的更改,就必须要重新加载这个py文件。作为子进程使用时,python可以方便地更改程序,而不需要编译,只需要在上级进程重启一下就行了。Python比较适合实现需要快速修改又有复杂逻辑的业务代码。使用Python时需要注意,如果修...
2020-05-06 11:26:06
2846
原创 不要使用命令行新建explorer进程的方式打开文件夹或文件
打开windows后,系统默认启动一个explorer进程。然后还可以使用命令行启动新的explorer。命令行启动explorer一般用于打开网页或文件夹,也用于以默认程序打开文件。但是新建explorer打开文件夹或文件时,这个进程不会自动退出,也不能在父进程强制关闭。多次操作后,一些低配的电脑就会卡死。explorer用于打开网页时,测试用的浏览器为360浏览器时,退出浏览器后半分钟,e...
2020-04-27 11:29:29
1376
原创 用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
3750
2
原创 数据拼接三要素
什么是数据拼接~ 任何在机器间传递多组相互独立报文且不能保证每一组报文各自同时传达的通信方式都需要数据拼接。 所谓“一组报文”是指具有独立含义(或空含义)的命令、文件、数据、信号等二进制数字。一组报文可以看作是一个二进制数字,数值大小相同的报文具有相同的含义,但具有相同含义的报文不一定有相等的数值大小。 不能保证每一组报文各自同时传达的通信方式,是指无法从物理层保证所传输的数字相互独...
2020-04-06 10:44:58
1776
原创 WIN32串口通信重叠方式打开的JNI代码
/* DO NOT EDIT THIS FILE - it is machine generated */#include "JNIInclude/jni.h"/* Header for class pers_laserpen_util_communication_serialPort_NativeSerialPortUtils_JNI */#ifndef _Included_pers_...
2020-04-05 16:17:37
167
原创 二维平面覆盖算法(SolidWorks中PhotoView 360 的图块渲染顺序)
这个需求就是要在一个正方形矩阵中,写入连续的自然数,且矩阵中任意两个差为1的自然数位置要相邻。一切都是从一个[ 0 ]开始的。然后选择一个增长方向。可以向右或向下。我以向右为例,第一次增长后得到如下矩阵: 0 1 3 2 这个矩阵很简单,可以直接手工填写。但我们需要让尽可能多的自然数以连续的方式填充到正方形矩阵中。也就是达到这个效果:0 1 ...
2020-03-16 15:10:52
687
原创 Java修饰符的顺序
Java修饰符分为几个层次:1、外权限:public、protected、【空】、private2、外表现:synchronized、【空】3、内实现:abstract、native、【空】4、静态:static、【空】5、访问约束:final、volatile、【空】6、数值约束:strictfp、【空】但是按eclipse的图标显示情况,似乎并没有按层次来排序。以下...
2020-03-05 15:04:05
942
原创 西门子V20变频器Modbus通信的配置和报文
这几天找了很久西门子V20的Modbus通讯资料,基本都说不清楚。所以发此文以可操作的形式介绍一下西门子V20变频器的MODBUS通讯。假设我们现在有一台不知道什么状态的V20,首先应该进行恢复出厂设置。恢复出厂设置短按M键,进入参数设置。找到P0003,设置成0;这一步不是必须的,只是为了更快的找到需要的参数。 找到P0010,设置成30; 找到P0970,设置成21;此...
2020-02-21 11:15:34
34055
原创 弱引用的实现
所谓弱引用是指所持引用不能防止其引用的对象被释放的一种指针。实现弱引用需要额外设计一个指针包装者:struct Box { void *object=nullptr; size_t refCount=0,weakCount=0;}这个Box和object对象一样是需要new出来的。把object的指针放入Box中,再把Box指针放入一个初始的强引用容器中...
2020-01-17 14:38:53
661
原创 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
原创 Java声音设备与二进制的转换
对网上一些代码进行整理,把多余的东西全都挖掉了,只剩下声音与二进制的转换代码。这是广大网友帮助的结果,我也不能私藏,现将代码公开如下:首先是需要一个静态工具类,它是网友们提供的代码的纯化,每一个函数代表一个独立的步骤,有多种分支,未必全都要用上:package pers.laserpen.util.multimedia;import java.awt.Toolkit;import ...
2019-12-25 16:33:02
1176
获取质数表.zip
2019-11-06
OPCUA2018年10月开发包3.1.6
2018-10-28
JAVA单、双行科学计算器和高精度计算器源码
2016-05-10
JNI指令代打2.0
2015-12-03
编译JNI的gcc指令代打和测试例程
2015-12-03
JAVA精确定时器
2015-10-14
Java文件操作类
2015-09-02
封闭式Java Socket代码
2015-03-21
开目鼠标滚轮操作脚本
2015-01-23
VS2010用Win32开发新手模板
2013-03-31
Unicode和ANSI对照表
2012-05-18
文字加密套装(简单的文字加密)
2012-02-28
Unicode快速查
2012-02-28
快速的傻瓜型UNICODE查询
2012-01-02
最小的UNICODE文件
2011-12-31
Altium Designer Summer 09破解器
2010-11-12
精密坐标纸(doc,docx,pdf,edd四个文件,内容相同)
2010-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人