
java-desktop
文章平均质量分 58
曾经我是菜
平衡型,只能理解有道理的事情,可以接受没道理的事情。
展开
-
JavaFX Spinner控件箭头按钮样式配置
见Spinner中的常量定义。原创 2024-06-27 11:10:43 · 232 阅读 · 0 评论 -
流水线式并行加速
这种并行加速的方式适用于大量数据的复杂计算,而且这些计算必须是重复的。工作组中的工作员数量经计算或测试来决定,对业务中执行时间较短的部分设置少量工作员,对业务中执行时间较长的部分设置大量工作员,合理安排线程数量,可充分发挥CPU的算力。由于传送器的存在,监视线程能够检测到任务积压的情况,这就可以提前预判内存溢出和超时异常,及时止损,清理掉那些没有希望完成的请求或暂停受理请求,保障系统稳定性。由于每个工作组都只执行完整业务的某个片段,每个工作组的业务代码都相对简单,这就提高了业务代码片段的维护性。原创 2024-03-16 23:07:49 · 437 阅读 · 0 评论 -
清除Eclipse导出可执行JAR的记录
导出文件记录:".metadata\.plugins\org.eclipse.jdt.ui\dialog_setting.xml"主类记录:".metadata\.plugins\org.eclipse.debug.core\.launches\*"删除这个文件可以清除导出文件记录。清空这个文件夹可以清除主类记录。原创 2024-01-17 22:57:17 · 425 阅读 · 0 评论 -
Win32编程串口超时结构体的一般性设置
Win32串口结构体有5个成员变量:读数据拼接超时、读数据总超时常数项、读数据总超时一次项、写数据总超时常数项、写数据总超时一次项。 拼接超时即是指两个字节之间不大于这个毫秒数,底层即将这两个字节视为同一组报文。仅读数据有拼接超时。这个参数通常都是正值,不应设置为0或负数。 总超时常数项是指调用函数开始时进行计时,如果没有收到新数据,则等待这个时间。总超时一次项是每接收一个字节,则在常数项的基础上增加一份时间。 一般我们把写超时都设置为0,读数据总超时一次项也设置为0,只使用读数据拼接超时和读数据原创 2022-12-06 09:37:29 · 1285 阅读 · 0 评论 -
串口服务器通信时间试验
对TCP通信时间的一次测量试验原创 2022-11-22 15:45:43 · 1145 阅读 · 0 评论 -
是什么使我放弃了B/S
刚学Java的时候,听闻JavaEE才是Java的主战线,耐着性子一点点从基础开始,终于学到了JavaEE,然后完成了JSP的学习,后来暂停了SSH的学习,渐渐地再也没有学习JavaEE的动力了。但我当时还是觉得B/S结构是某些问题的绝佳解决方案,也试着找过有没有什么比JavaEE更简单的方法,毕竟我只想要一个画面,底层的东西根本不需要非得放WEB服务器上。 起初是想深入研究一下Java语言,才暂停了JavaEE的学习。后来开始不喜欢JavaEE了,原因是这只是单纯的职业技术,没有什么玩点,我把多原创 2021-08-09 10:28:45 · 157 阅读 · 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 评论 -
工控机JVM启动参数堆大小的设置建议
由于工控机上的内存一般都不大,多为2G或4G,为了延长寿命,通常会把虚拟内存关掉,而操作系统会用掉一半的内存,那么能够给应用程序使用的内存就很小了。其实只运行一个JVM的情况下,JVM会适应操作系统而自动调整堆大小,所以正常2GB以上的内存即使安装64位Win10也没有问题。但是如果还需要使用多个其他的辅助程序的情况下,JVM浪费内存的毛病就可能会导致系统不正常。工控机经常会安装一些辅助程序,比如SQL Server社区版、内网穿透客户端、VPN客户端,这些应用都需要消耗一些内存,JVM随机浪费内存的情原创 2020-09-16 09:45:03 · 391 阅读 · 0 评论 -
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 · 6943 阅读 · 3 评论 -
用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 评论 -
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 阅读 · 0 评论 -
二维平面覆盖算法(SolidWorks中PhotoView 360 的图块渲染顺序)
这个需求就是要在一个正方形矩阵中,写入连续的自然数,且矩阵中任意两个差为1的自然数位置要相邻。一切都是从一个[ 0 ]开始的。然后选择一个增长方向。可以向右或向下。我以向右为例,第一次增长后得到如下矩阵: 0 1 3 2 这个矩阵很简单,可以直接手工填写。但我们需要让尽可能多的自然数以连续的方式填充到正方形矩阵中。也就是达到这个效果:0 1 ...原创 2020-03-16 15:10:52 · 688 阅读 · 0 评论 -
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 阅读 · 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 评论 -
Java声音设备与二进制的转换
对网上一些代码进行整理,把多余的东西全都挖掉了,只剩下声音与二进制的转换代码。这是广大网友帮助的结果,我也不能私藏,现将代码公开如下:首先是需要一个静态工具类,它是网友们提供的代码的纯化,每一个函数代表一个独立的步骤,有多种分支,未必全都要用上:package pers.laserpen.util.multimedia;import java.awt.Toolkit;import ...原创 2019-12-25 16:33:02 · 1178 阅读 · 0 评论 -
让Octave支持中文
Octave是免费的matlab语言解释器,适合用作子程序,进行复杂的数学计算。但Octave和Matlab本身不支持Unicode字符作为标识符。如果要用Unicode字符作为Matlab程序的标识符,需要对其进行转义。Matlab程序中可用的字符还停留在早期的C语言水平,是目前支持的字符最少的编程语言。我们需要在53个标准字符中选择一个转义字符。我选择下划线作为转义字符,因为在驼峰命名法中...原创 2019-11-20 14:51:26 · 4103 阅读 · 7 评论 -
向量法计算多边形面积
计算多边形面积的方法为将多边形分解成多个三角形,然后把这些三角形的面积相加。三角形面积为两边向量叉积除以2。 这是Java代码,目前是第3版,已经尽可能优化了,相比初版有25%的性能提升。 /** * 平面多边形面积算法3,用原点为基点(不需要从图形边线上取点)<br/> * 多计算一条线段,但减少了每一步的两次减法(起于原点的向量等于节点的坐标),使误差减小...原创 2019-10-22 10:07:21 · 2914 阅读 · 0 评论 -
三菱PLC编程口通信上位机端报文和java示范代码
读操作: 发送 02 30 XX XX XX XX YY YY 03 CS CS XX是寄存器地址转16进制字符串,定长4个ASCII字符,YY是读取的字节数转16进制字符串,定长2个ASCII字符,CS是对从30(含)到03(含)的每一个字节求和(字节本身的数字0~255,而非它所代表的文字含意'0'~'F')然后除以256的余数转十六进制的字符串,定长2个ASCII字符。字符串是以...原创 2019-10-21 09:10:20 · 5034 阅读 · 0 评论 -
分享java sscanf函数
/** * 高仿的sscanf函数。%u是long型的正值部分,%d和%l都是long型,%f是double型。不可以在%s后直接跟%c或%s * * @param input * 输入字符串 * @param format * 格式字符串 * @param export * 输出 * @re...原创 2018-02-15 13:02:12 · 2463 阅读 · 0 评论 -
记录有工业价值的Windows NT版本对应的Java版本号
我是从Windows XP开始遇到版本问题的,而且早期的jdk也很难找全,所以只从Window XP开始记录。这个博客只是用于记录配套相应的有工业价值的Windows系统的最大能够运行的JDK版本号:有工业价值的版本1:Windows XP -> JDK 8U112有工业价值的版本2:Windows 7 -> 暂未过时...原创 2019-10-12 14:30:50 · 338 阅读 · 0 评论 -
JavaFX中的ChoiceBox和ComboBox的区别
ChoiceBox ComboBox 不支持键盘直接打字 可以像TextField一样打字 放入TableView中时无边框,底色透明,只能看到文字和三角形按钮 放入TableView中时有边框,底色为标准Button颜色(不可编辑时)或TextField颜色(可编辑时) 弹出下拉菜单时,本体不保留上次的选项 弹出下拉菜单时,本体保留上次的选项,并且菜单的选中位...原创 2019-09-24 10:02:41 · 3563 阅读 · 0 评论 -
JavaFX如何设置控件字体为楷体
之前使用JavaFX ScenseBuilder时,发现找不到宋体、楷体等系统字体,于是使用了加载字体文件的方法。通过文件流加载字体文件的方法使程序代码变得很不美观。今天,我突然发现了ScenseBuilder中其实是有宋体、楷体这类字体的,只不过是以拼音的方式显示。楷体就是KaiTi和STKaiTi。宋体是STSong。还有隶书是LiSu。还有很多中文字体,建议大家使用这些字体,不要再去加载字体...原创 2018-03-06 10:07:48 · 5788 阅读 · 2 评论 -
使用Scanner查找一些特殊字符串的正则表达式
利用Scanner的findInLine可以在当前行中查找符合正则表达式的子字符串。使用findInLine可以一定程度上代替C语言的sscanf。findInLine可以自动跳过无用的字符串,这与sscanf的特性相同。如果当前行没有合适的子字符串,且源字符串还有下一行,则需要调用nextLine进入下一行重新查找。这里列出一些目前常用的正则表达式:查找boolean字符串:[Tt][Rr][U...原创 2018-03-17 14:45:31 · 758 阅读 · 0 评论