9 曾经我是菜

尚未进行身份认证

平衡型,只能理解有道理的事情,可以接受没道理的事情。

等级
TA的排名 11w+

弱引用的实现

所谓弱引用是指所持引用不能防止其引用的对象被释放的一种指针。实现弱引用需要额外设计一个指针包装者:struct Box { void *object=nullptr; size_t refCount=0,weakCount=0;}这个Box和object对象一样是需要new出来的。把object的指针放入Box中,再把Box指针放入一个初始的强引用容器中...

2020-01-17 14:38:53

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

Java声音设备与二进制的转换

对网上一些代码进行整理,把多余的东西全都挖掉了,只剩下声音与二进制的转换代码。这是广大网友帮助的结果,我也不能私藏,现将代码公开如下:首先是需要一个静态工具类,它是网友们提供的代码的纯化,每一个函数代表一个独立的步骤,有多种分支,未必全都要用上:package pers.laserpen.util.multimedia;import java.awt.Toolkit;import ...

2019-12-25 16:33:02

PLC结构化文本设计模式

前言.  目前PLC应用学科并没有设计模式方面的教程,导致学员解题都得从零开始设计。梯形图无法发展出PLC的真正功能,所以我们需要以结构化文本来实现设计模式。本文以普及结构化文本为目的,将教大家结构化文本的入门和PLC编程设计模式。  本文将会讲解高度抽象的设计模式,设计模式与案例无关,并不以案例讲题。反正学校按这种方式教了那么久也没人听得懂。我将主要以理论为主,避免与具体案例绑定,以防止读...

2019-12-19 23:26:04

标准C作为子进程时的刷新问题

使用C和C++的输出流向调用的进程返回字符串时,C++代码在调用std::endl后会输出,而printf则一直到子进程退出才有输出。查看std::endl后,发现起作用的是std::cout.flush();在起作用。为了使C语言输出流也能正常向调用者返回字符串,需要找到C中的flush函数。C语言的flush函数为fflush,在stdio.h下,用法为fflush(stdout)。在...

2019-12-10 22:05:51

精英教育和素质教育

精英教育和素质教育是两个标识符,并非字面的意义。精英教育是有素质的精英,素质教育教的是精英的素质。只是为了区分指代而采用不一样的文字组合,就像人的名字其实和人的身体没有任何关联。精英教育的最终目标是让学生成为某个标定的复制品,类似于查表法。素质教育的最终目标是让学生自理,类似于遗传算法。在社会发展的不同时期,两者的重要性不同。比如解放初期,我国的技术实力还非常原始,以西方发达国家为标定进行精英...

2019-12-06 09:35:30

自底向上的开发

在这个急功近利的时代,自顶向下的开发模式能够帮助我们快速完成项目,争取眼前利益,于是几乎所有懂点程序的人就把自顶向下奉为圣经。然而自顶向下给我们带来了一些麻烦。由于价值观的转变,为了保证顶层结构而牺牲底层实现,导致了大量的一次性代码。每个项目都是新的,于是就有了大量的加班。如果真的想写好代码,就不能从顶层开始设计。重写一个架构要比重写一套底层容易得多,我宁愿架构错了也不希望有底层的Bug。写过...

2019-11-30 09:18:35

IGBT反并联二极管的功能

最近看到网友们对IGBT反并联二极管存在着很大的误解,特写此文告诉大家真相。此图是三相双向逆变电路,图中我们可以看到反并联二极管的用法。当输入直流电压高于负载反向电动势时,它是一个逆变电路,将直流电变成峰值等于(或小于)直流电压的交流电(波形由驱动信号决定,常用驱动信号是SPWM正弦脉宽调制,即正弦波交流电)。当输入直流电压低于负载反向电动势时,它是一个三相整流桥,此时来自负载的反...

2019-11-29 12:04:06

让Octave支持中文

Octave是免费的matlab语言解释器,适合用作子程序,进行复杂的数学计算。但Octave和Matlab本身不支持Unicode字符作为标识符。如果要用Unicode字符作为Matlab程序的标识符,需要对其进行转义。Matlab程序中可用的字符还停留在早期的C语言水平,是目前支持的字符最少的编程语言。我们需要在53个标准字符中选择一个转义字符。我选择下划线作为转义字符,因为在驼峰命名法中...

2019-11-20 14:51:26

变频器定位控制笔记

变频器定位用于大功率电机的粗略定位控制,可用于电梯,自动货架起重机的升降控制。由于伺服电机的功率有限,只能用变频器进行定位。短行程的变频器定位可以使用变频器自带的模拟量比较功能,某些型号的变频器有提供两路模拟量信号输入,其中一路接电机位置传感器,另一路接定位信号,变频器会自动根据电压差控制电机正反转,达到粗略定位的目的。长行程变频器定位需要使用控制器和编码器。可以使用PLC作为控制器,需要...

2019-11-14 10:51:15

向量法计算平面与直线的交点

-  已知有平面上三个点(ABC)坐标,直线上两个点(DE)坐标,求平面ABC与直线DE的交点坐标。  解: /** * 平面与直线的交点 * * @param plantA * @param plantB * @param plantC * @param lineD * @param lineE * @return */ public st...

2019-11-13 16:00:37

线程交接

·  所谓“线程交接”,就是指同一个任务由于某种原因,需要安排在不同的线程中运行而产生的一种流程管理操作。  mermaid   graph LR   A(开始)--  ```mermaidgraph LRA[长方形] – 链接 --> B((圆))A --> C(圆角长方形)B --> D{菱形}C --> D...

2019-10-31 16:33:43

为什么Java的性能通常比C++好,也能做大型架构,但仍然无法取代C++

  这是因为C++对于动态库的连接更方便。现在的大型工程已经很少有完全自己开发的了,一般都是选择使用各种软件包来简化任务。很多软件包特别是商业软件包是以动态库发布的,有少数是静态库的,也有部分是开源的。软件包应该选择什么样的编程语言开发?如果使用托管的语言,那么生成的软件包将很难兼容所有的编程语言。只有C接口是兼容其他编程语言的,所以多数通用的软件包都是提供C接口。调用C接口最简单的方法就是直接在...

2019-10-28 09:09:00

向量法计算体积的思路(没有代码了)

向量法计算体积的关键是把立体分解成锥体。立体必须是由一系列有限平面多边形封闭而成的,可以使用多边形,但一定要是平面多边形。必须密封,如果不密封就会导致体积误差。可取任意点为基准点(事实上二维空间计算平面多边形的面积也可以取任意点为基准点),立体每一表面上的平面多边形可与基准点组成一个锥体。锥体的底面积可取多边形边线上一点(也可以取同平面上任意点,但取边线点比较方便),与边线上每一线段分...

2019-10-25 10:29:10

向量法计算多边形面积

  计算多边形面积的方法为将多边形分解成多个三角形,然后把这些三角形的面积相加。三角形面积为两边向量叉积除以2。  这是Java代码,目前是第3版,已经尽可能优化了,相比初版有25%的性能提升。 /** * 平面多边形面积算法3,用原点为基点(不需要从图形边线上取点)<br/> * 多计算一条线段,但减少了每一步的两次减法(起于原点的向量等于节点的坐标),使误差减小...

2019-10-22 09:59:53

Win10可能不支持重叠方式打开串口,RXTX不能用了

这个问题始于我在Win10上无法正常使用RXTX的串口读写功能,也没有给出错误码。而在Win7上它是正常的。之后我自己重写了串口程序,发现当使用重叠方式打开时,有时是正常的,不过多数不正常。主要表现为get收不到数据。最终我只能使用同步方式打开串口,重新编写Java的串口类代码。同步方式打开时它是稳定的,允许随意关闭和开启,不像重叠方式连续开关后会出错。但同步方式的延时是死的,设定多少时间就需要等...

2019-10-21 17:03:30

三菱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:02:59

三菱FX3U结构化文本编程·AB相编码器

AB相编码器原理是使用2位格雷码的变化表示编码器正转一或反转。标准的正转格雷码为{0, 1, 3, 2}不断循环,反转则是{0, 2, 3, 1}。正转时每一次从1到3计数器加1,反转时从2到3计数器减1。三菱FX3U也支持3个格雷码的检测,0可以不要,这个是非正常特性,不建议使用。命令为LD M8000OUT C251 K0用ST写就是OUT_C_32(TRUE,CC251,...

2019-10-21 08:40:51

讨论JAVA和QT之争

这是两种以跨平台为特色的开发方式。Qt更多被认为是一种框架,但是Qt中有新增一些C++所没有的语法,所以也可以认为是一种编程语言。Java被认为是一种编程语言,但是很多人并不知道JAVA的编程语言其实是Java SE,而他们所知的Java EE其实不是编程语言,反而是一种框架。Qt和Java到底怎么选?没有任何明确需求的前提下,我认为尽可能使用Java,因为Java能够解决Qt不能解决的问题,...

2019-10-19 09:51:11

记录有工业价值的Windows NT版本对应的Java版本号

我是从Windows XP开始遇到版本问题的,而且早期的jdk也很难找全,所以只从Window XP开始记录。这个博客只是用于记录配套相应的有工业价值的Windows系统的最大能够运行的JDK版本号:有工业价值的版本1:Windows XP -> JDK 8U112有工业价值的版本2:Windows 7 -> 暂未过时...

2019-10-12 14:24:40

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。