本章的内容主要参考了 SECS半导体设备通讯-2 HSMS通信标准 ,外加上自己看的一些其他的文档。也加上了一些自己的理解,特此记录。若有侵权,请联系删除,谢谢。

再次特别感谢 SECS半导体设备通讯-2 HSMS通信标准 的作者。

1、HSMS通信标准概述

HSMS 定义了使用 TCP/IP 作为物理传输媒质时的通信接口。

HSMS 使用TCP/IP流支持,提供了可靠的双向同步传输,可以用来作为SECS-I通信以及其他更高级的通信环境的替代。

1.1 HSMS连接状态图

HSMS状态机如下图所示,此图中描述的行为定义了HSMS的基本要求。

状态图说明:

  • NOT CONNECTED:该实体已准备好侦听或启动TCP/IP连接,但尚未建立任何连接,或所有以前建立的TCP/IP连接都已终止;
  • CONNECTED:已建立了一个TCP/IP连接。此状态有两个子状态,NOT SELECTED 和 SELECTED;
  • NOT SELECTED:未建立HSMS会话或任何先前建立的HSMS会话已结束;
  • SELECTED:至少建立了一个HSMS会话,这是HSMS的通常操作状态:数据消息可以在此状态下进行交换。

状态的转换:

2、使用TCP/IP

TCP应用程序接口(API)的规范不在HSMS的范围之内。

HSMS可以使用任何标准 TCP/IP API 进行开发,比如 BSD Socket、TLI 等。使用标准的 TCP/IP 寻址,默认的端口号为 5000

2.1 TCP/IP网络寻址约定

IP Address:连接到局域网(LAN)的每个物理TCP/IP连接都必须具有唯一的IP地址。IP地址必须在安装时进行可分配,并且HSMS的实现不能选择一个固定的IP地址。一个典型的IP地址是192.9.200.1。

TCP Port Numbers:HSMS的实现应该允许将TCP端口配置为所使用的TCP/IP 实现的全部范围。一个典型的TCP端口号为5000。

上面这段话的意思是 HSMS 可以使用的端口号并没有什么特别的要求,TCP/IP 可以使用的都可以。

2.2 建立TCP/IP连接

HSMS将通信实体分为两种,Passive Mode(被动模式)和 Active Mode(主动模式)

  • PassiveMode:处于被动模式的本地实体侦听并接受由处于主动模式的远程实体发起的连接。
  • ActiveMode:由处于主动模式的本地实体发起连接

上面这两句话是不是有点绕,简单理解就是 Passive Mode 是服务端,Active Mode 是客户端。服务端监听端口并接受请求,客户端主动发送请i去。

被动模式建立连接过程:

  1. 获取一个连接端点,并将其绑定到指定的的端口。
  2. 从端口监听从远程实体发送的连接请求。
  3. 在收到连接请求后,确认它并表示接受该连接。

其实上面就是使用 TCP 协议,编写服务端那一套,依次执行bind(), listen(), accept()方法,然后坐等客户端的连接请求。

主动模式建立连接过程:

  1. 获取一个连接端点。
  2. 向远程实体(被动模式)所指定的端口发起连接。
  3. 等待远程实体确认收到并接受连接请求。

2.3 终止TCP/IP连接

连接终止是连接建立的逻辑反转。从本地实体的角度来看,TCP/IP连接可能随时断开。但是,HSMS只允许在连接处于连接状态的未选择子状态时终止连接。

最后一句话怎么理解?还记得上面说的HSMS连接状态图吗,这句话的意思是只有处于 NOT SELECTED 这个状态时才可以终止连接。那处于 SLECTED 的状态不可以终止连接吗,我的意思是可以,但是需要先进入到 NOT SELECTED 状态,再终止连接。

任何一个实体都可以启动终止连接。实体进入Not Connected状态,表示HSMS通信结束。

3、HSMS消息交换过程

HSMS定义了跨TCP/IP连接的实体之间的所有消息交换过程。

一旦连接建立,这两个实体间就建立起HSMS通信。然后,数据消息可以在任何时候以任意一个方向进行交换。

当实体希望结束HSMS通信时,将使用 Deselcet 或 Separate procedure 来结束HSMS通信。

3.1 发送和接收HSMS消息

所有的HSMS过程都涉及到HSMS消息的交换。这些消息以 TCP/IP 流的形式使用先前建立的TCP/IP连接进行发送和接收。

3.2 消息交换过程

消息交换过程分为:

  • Select Procedure
  • Data Procedure
  • Deselect Procedure
  • Linktest Procedure
  • Separate Procedure
  • Reject Procedure

3.3 建立 Select Procedure

Select Procedure 用于使用Select.req和Select.rsp消息在TCP/IP连接上建立HSMS通信

Select.req和Select.rsp消息

实体由 Not Selected 状态转换为 Selected 状态所使用的消息 (Active Entity 发送Select.req);

Initiator的发起过程:

1. Initiator将Select.req消息发送给Responding Entity;
2. 如果Initiator接收到一个Select Status为0的 Select.rsp,则Select Procedure过程成功完成,实体由 Not Selected 状态转化为 Selected 状态;
3. 如果Initiator接收到Select Status不为0的Select.rsp,则Select Procedure失败,实体没有状态转换。

Responding Entity的响应过程:

1. 响应实体会收到Select.req;
2. 如果响应实体能够转换为Selected ,它将发送一个Select Status为0的Select.rsp;
3. 如果响应实体不能够转换为Selected,它将发送一个Select Status不为0的Select.rsp;

同时进行的Select Procedure:

如果附加标准没有限制选择使用哪种方式,则有可能两个实体同时启动具有相同控制标识的Select Procedure。在这种情况下,每个实体将通过使用Select.rsp响应来接受其他实体的选择请求。

一次建立连接的通信交互流程:

3.4 Data Procedure

只要连接处于 Selected 状态,任何一个实体都可以发起HSMS数据消息。当不处于 Selected 状态时,接收数据消息将导致拒绝 Reject Procedure

数据消息可以进一步定义为消息事务的一部分,即Primary Message 或 Reply Message。

在消息事务中,事务的发起者向响应实体发送一条Primary Message。如果Primary Message指示需要响应,则响应实体将发送 Reply Message 响应。

下图为两种类型的消息事务:需要回复的消息事务 和 不需要回复的消息事务

这些事务的具体过程由应用层确定,并服从其他标准(例如,使用SECS-II编码消息的GEM设备的E5和E30)。

适用的上层标准由消息类型来标识。该类型由HSMS定义的特定格式确定。HSMS消息的正常类型是SECS-II文本。

3.5 Deselect Procedure

Delesect Procedure 用于在断开TCP/IP连接之前,为一个实体提供一个优雅的HSMS通信终止

HSMS要求使用该Procedure时连接处于Selected状态

Deselect.req/Deselect.rsp:

在双方协议终止通信时使用,发起通信终止的一端发送Deselect.req

Initiator的发起过程:

1. Initiator将Deselect.req消息发送给Responding Entity;
2. 如果Initiator接收到一个Deselect Status为0的Delect.rsp,则Deselect Procedure过程成功完成,实体由 Selected 状态转化为 Not Selected 状态;
3. 如果Initiator接收到Deselect Status不为0的Deselect.rsp,则Deselect Procedure失败,实体没有状态转换。
4. 如果在收到Deselect .rsp之前T6超时了,则认为发生了通信故障。

Responding Entity的响应过程:

1. 响应实体会收到Deselect.req;
2. 如果响应实体处于Selected状态且允许Deselect ,它将发送一个Deselect Status为0的Deselect.rsp,Delesect Procedure成功,发生状态更改;
3. 如果响应实体不允许Deselect,或者因为它没有处于Selected状态,或者因为本地条件不允许Deselect,它将发送一个Deselect Status不为0的Deselect.rsp进行响应。Delesect Procedure失败,不发生状态更改。

同时进行的Deselect Procedure:

如果附加标准不限制选择使用的 Deselect,则有可能两个实体同时使用相同的控制Id启动 Deselect Procedures。在这种情况下,每个实体将通过使用despelect.rsp响应来接受另一个实体的取消选择请求。

3.6 Linktest Procedure

Linktest Procedure 用于确定TCP/IP和HSMS通信的操作完整性。它的使用在CONNECTED状态下随时有效。

Linktest.req/Linktest.rsp:

用于通信状态的确认, 如果没有应答则转换为Not Connected 状态;

Initiator的发起过程:

1. Initiator将Linktest.req消息发送给Responding Entity;
2. 如果Initiator在T6超时时间内接收到一个Linktest.rsp,Linktest Procedure成功完成;
3. 如果在T6超时时间内未收到Linktest.rsp,则视为通信故障。

Responding Entity的响应过程:

1. 响应实体接收到Linktest.req;
2. 响应实体发送Linktest.rsp。

3.7 Separate Procedure

Separate Producure 用于在断开TCP/IP连接之前突然终止实体的HSMS通信。

HSMS要求在使用分离时连接处于SELECTED状态。响应实体不发送响应,无论其本地状态如何,都需要终止通信。该过程如下:

Initiator Procedure:

发起者处于 selected 状态才可以发起 Separate.req 消息请求 响应实体。当发起者发送了 Separate.req 后,就意味着发起者的 Separate Procedure 已经完成,发起者进入 NOT SELECTED 状态。

Responding Entity Procedure:

1.响应实体接收到 Separate.req。
2.如果响应实体处于 SELECTED 状态,则 Separate Procedure 可以成功的处理。
3.如果响应实体不处于 SELECTED 状态,则 Separate.req 请求被忽略。

3.8 Reject Procedure

Reject Procedure 用于响应在不适当的上下文中收到的其他有效的HSMS消息。当使用 HSMS 通行时,支持 Reject Procedure 提供了有用的诊断信息在分布式应用程序的生产环境中

Initiator (Sender of Inappropriate Message) Procedure:

发起者发送了一个不恰当的消息给到响应实体,响应实体会 回复一个 Reject.req,当发起者收到 Reject.req 后,需要采取恰当的措施

Responding Entity Procedure:

响应实体收到了一个不恰当的消息,会回复一个  Reject.req消息给 发起者。

HSMS 要求,当响应实体处于 NOT SELECTED状态或者接收到未为该实体定义的 SType or PType 类型的消息时,需要当作 reject procedure 处理。附加标准可定义需要当作 reject procedure 的其他条件。一般来说,接收拒绝消息是配置不当的系统或软件编程错误的指示。

4、 HSMS消息格式

4.1 General Message Format 一般消息格式

4.1.1 Byte Structrue:

在HSMS中一个字节包含8位。字节中的位从第7位(MSB)编号到第0位(LSB)。

4.1.2 Message Format:

HSMS消息以单个连续字节流传输。

HSMS Message Format

Number of Bytes Description
4 Bytes Message Length. MSB First. Specifies the number of bytes in the Message Header plus the Message Text.
10 Bytes Message Header.
0–n Bytes Message Text. Format is further specified by PType field of message header.
大端模式和小端模式是指在多字节数据存储时,字节的顺序不同。在大端模式中,高位字节存储在低地址,低位字节存储在高地址;而在小端模式中,低位字节存储在低地址,高位字节存储在高地址。

MSB(Most Significant Bit)是指最高位的比特位,它与大、小端模式的关系是:在大端模式中,MSB位于第一个字节的最高位;而在小端模式中,MSB位于最后一个字节的最高位。

所以 HSMS 采用的是大端模式
4.1.3 Message Length:

Message Length是一个四字节的无符号整数值,它指定Message Header加上Message Text的字节长度。消息长度首先传输最高有效位(MSB),最后传输最低有效位(LSB)。

最小可能的消息长度为10(当只有Header时)。最大可能的消息长度跟具体实现有关。

4.1.4 Message Header:

MessageHeader是一个10字节的字段。头中的字节从第0字节(传输的第一个字节)编号到第9字节(传输的最后一个字节)。

HSMS Message Header

Bytes Description
0-1 Session ID (Device ID)
2 Header Byte 2
3 Header Byte 3
4 PType
5 SType
6-9 System Bytes

其中:

  • Session ID16位无符号整数,它占据了字节0和字节1(字节0是MSB,1是LSB)。用于标识通信实体的连接;

  • Header Byte 2:对于不同的HSMS消息,有不同的取值;

  • Header Byte 3:对于不同的HSMS消息,有不同的取值;

  • PType8位无符号整型,PType旨在作为一种枚举类型,定义表示层消息类型:MessageHeader和MessageText是如何编码的。只有 PType = 0,被HSMS定义为表示SECS-II消息编码。

PType:

Value Description
0 SECS-II Encoding
1-127 Reserved for subsidiary standards
128-255 Reserved, not used
  • SType8位无符号整数,是一种枚举类型,标识此消息是HSMS数据消息(值=0)还是HSMS控制消息。

SType:

Value Description
0 Data Message
1 Select.req
2 Select.rsp
3 Deselect.req
4 Deselect.rsp
5 Linktest.req
6 Linktest.rsp
7 Reject.req
8 (not used)
9 Separate.req
10 (not used)
11–127 Reserved for subsidiary standards
  • SystemBytes:四字节无符号整数,用于在一组开放的事务中唯一地标识一个事务,即唯一地标识一次消息交互。

4.2 HSMS Message Formats by Type 按类型划分的HSMS消息格式

这是一个HSMS消息的格式。每条消息都以一个 Message Length, 开始,然后是一个 Message Header,后面是 Message Text

Message Length : 是一个四字节的值,它定义了整个HSMS消息的长度 (Message Header + Message Text).

Message Header: 描述HSMS消息或过程。

Message Text: 是HSMS消息的数据部分。它只与数据程序相关。消息文本中的数据是在SECS-II消息协议部分中描述的已编码的SECS-II。

HSMS消息中的Header的解释取决于由SType字段的值定义的特定HSMS消息类型。

下表总结了定义的完整消息集,PType = 0(SECS-II消息格式)。

4.2.1 SType=0 DataMessage

使用SType=0来标识HSMS消息以发送DataMessage。

HSMS Message Length 最少为10(Message Header的长度)。

其 Byte 2 的组成如下图,它标识消息是否需要应答。

  • Byte 2W-Bit 指示Primary Message是否需要Reply Message,期望应答则设置为1,不期望应答则设置为0Reply Message应该始终将W位设置为0。Header Byte 2的低阶7位(第6-0位)包含该消息的SECS流。流是一个7位无符号整数值,它标识消息的一个主要话题,它的使用在SEMI E5(SECS-II)中定义。

  • Byte 3: 包含该消息的SECS功能。功能是一个8位的无符号整数值,用于标识消息的一个次要话题(在流中),它的使用在SEMI E5(SECS-II)中定义。Byte3 的 bit 0 定义数据消息是“Primary”还是“Reply”;值1表示“Primary”,值0表示“Reply”。

  • PType: 为0 表示 SECS-II编码格式。

  • System Bytes:唯一地标识此消息事务,ReplyMessage 的 SystemBytes 应与其对应回复的Prymary Message的 SystemBytes 相同

4.2.2 SType=1 Select.req

Message Length为10,因为该消息仅有Header。

直接看图就知道各个字节应该怎么写。

4.2.2 SType=2 Select.rsp

Message Length为10,因为该消息仅有Header。

  • 其SessionID:必须等于相应的Select.req中的SessionID。

  • 其Byte3:表示SelectStatus。为0表示操作成功,非0表示失败。

4.2.3 SType=3 Deselect.req

Message Length为10,因为该消息仅有Header。

4.2.4 SType=4 Deselect.rsp

Message Length为10,因为该消息仅有Header。

  • 其Byte3:表示DeselectStatus。为0表示操作成功,非0表示失败。
4.2.5 SType=5 Linktest.req

Message Length为10,因为该消息仅有Header。

  • 其SessionID:为0xFFFF。
4.2.6 SType=6 Linktest.rsp

Message Length为10,因为该消息仅有Header。

  • 其SessionID:为0xFFFF。

  • 其System Bytes:与其对应回复的Linktest.req相同。

4.2.7 SType=7 Reject.req

用于响应接收到消息的接收方不支持或当时无效的任何有效的HSMS消息。

  • 其SessionID:等于被拒绝的消息中的SessionID的值。

  • 其Byte2:如果PType不受支持,它等于被拒绝的消息中的PType。否则,它将等于被拒绝的消息中的SType的值。

  • 其Bytes3:其值为reason code,表示拒绝的原因。

ReasonCode

Value Description
1 SType Not Supported. A message was received whose SType value not defined in the HSMS standard or the particular subsidiary standard(s) supported by the entity.
(不支持SType。收到一条消息,其SType值未在该实体支持的HSMS标准或特定附属标准中定义)。
2 PType Not Supported. As above, but for PType.
(不支持PType。原因同上)
3 Transaction Not Open. A Response control message was received when there was no outstanding request message which corresponded to it.
(事务未打开。当没有与之对应的未完成的请求消息时,就会收到一条响应控制消息。)
4 Entity Not Selected. A data message was received when not in the SELECTED state.
(实体 处于 Not Selected。当未处于 SELECTED state 时,接收到一条数据消息。)
5-127 Reserved for subsidiary standard-specific reasons for reject.
(保留为附属标准特定的拒绝原因。)
128-255 Reserved for local entity-specific reasons for reject.
4.2.8 SType=9 Separate.req

使用SType为9的HSMS消息用于立即终止HSMS通信。除了SType值外,它与Deselect.req消息相同。其目的是立即终止HSMS通信。

5、 特别说明

如果检测到通信故障,实体应终止TCP/IP连接。在连接终止时,可以尝试重新建立通信。

5.1 回复超时 T3

Reply Timeout:定义一个实体等待回复消息的最长时间,如果T3超时则取消这次会话事务但不断开 TCP/IP 连接。

5.2 连接间隔时间 T5

Connect Separation Time:定义两个连接请求之间的时间间隔。

频繁的向一个未准备好连接的实体发起连接请求,会加重 TCP/IP 的操作负荷。

因此,当一个主动模式实体发起的连接操作终止后(不论是成功结束还是被远端实体拒绝),该实体必须等待 T5 时间再后发起下一次连接请求。

5.3 控制事务超时 T6

Control Transactions Control Timeout:定义了一个控制事务所能保持开启的最长时间,超过该时间就认为这次通信失败。

许多控制消息是消息交换或事务过程的一部分:发送者发送<xx>.req,接收方接收<xx>.req并以<xx>.rsp作为响应。

从发送所需的请求消息到收到响应消息,事务一直被认为是打开的。

控制事务可能保持打开的时间取决于T6。

在发起控制事务时,本地实体应启动一个持续时间等于T6的计时器。如果事务在计时器到时之前被正确关闭,则应该取消计时器。

如果定时器在事务未结束之前就到时了,则该事务应被发起者视为已结束,并被视为HSMS通信失败。

5.4 未选择状态超时 T7

Not Selected Timeout :定义当建立了 TCP/IP 连接之后通信处于 Not Selected 状态的最长时间,通信必须在该时间完成 Selected Procedure,否则将会断开 TCP/IP 连接。

5.5 网络字符超时 T8

Network Intercharacter Timeout:定义成功接收到单个HSMS 消息的字符之间的最大时间间隔。

因为TCP/IP是面向流的通信,所以所有作为单个HSMS消息的一部分的字节可能在单独的TCP/IP消息中传输,一个 HSMS 通信消息可能被分为若干个 TCP/IP 消息进行传输。

若 T8 超时则认为这次传输失败。

6、 HSMS的实现要求

HSMS的实现必须提供以下参数设置。

所有参数的范围和分辨率必须至少如表中所示。所有参数必须存储方式为断电保留,如果电源故障或重新加载系统软件,应保留设置。

Parameter Name Value Range Resolution Typical Value Description
T3 Reply Timeou 1-120 seconds 1 second 45 seconds Reply timeout. Specifies maximum amount of time an entity expecting a reply message will wait for that reply.
T5 Connect Separation Timeout 1-120 seconds 1 second 10 seconds Connection Separation Timeout. Specifies the amount of time which must elapse between successive attempts to connect to a given remote entity.
T6 Control Transaction Timeout 1-120 seconds 1 second 5 seconds Control Transaction Timeout. Specifies the time which a control transaction may remain open before it is considered a communications failure.
T7 NOT SELECTED Timeout 1-120 seconds 1 second 10 seconds Time which a TCP/IP connection can remain in NOT SELECTED state (i.e., no HSMS activity) before it is considered a communications failure.
T8 Network Intercharacter Timeout 1-120 seconds 1 second 5 seconds Maximum time between successive bytes of a single HSMS message which may expire before it is considered a communications failure.
Connect Mode PASSIVE, ACTIVE ----- ----- Connect Mode. Specifies the logic this local entity will use during HSMS connection establishment.
Local Entity IP Address and Port number determined by TCP/IP conventions ----- ----- Required for any entity operating in PASSIVE mode. Determines the address on which the local entity will listen for incoming connection requests.
Remote Entity IP Address and Port Number determined by TCP/IP conventions ----- ----- Required for any entity operating in ACTIVE mode. Determines the address of the remote entity to which the local entity will attempt to connect.

注意:上面显示的参数默认值为小型网络(10个或更少节点)。可能需要针对较大的网络配置来调整设置。

06、HSMS协议介绍的更多相关文章

  1. TCP/IP 协议介绍

    转自http://blog.jobbole.com/104886/ 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应 ...

  2. 第二章 ZAB协议介绍

    ZAB ( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)是zookeeper数据一致性的核心算法. ZAB 协议并不像 Paxos 算法那样,是一种 ...

  3. JSON-RPC轻量级远程调用协议介绍及使用

    这个项目能够帮助开发人员利用Java编程语言轻松实现JSON-RPC远程调用.jsonrpc4j使用Jackson类库实现Java对象与JSON对象之间的相互转换.jsonrpc4j包含一个JSON- ...

  4. Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  5. [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

    [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) http://blog.csdn.net/tttyd/article/details/12032357 RTP       ...

  6. Python基础教程之udp和tcp协议介绍

    Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...

  7. 常用音频协议介绍&&有关音频编码的知识与技术参数

    (转载)常用音频协议介绍 会议电视常用音频协议介绍及对比白皮书 一.数字化音频原理:声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线.通常人耳可以听到的频率在20 ...

  8. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转

    转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...

  9. OSPF协议介绍及配置 (上)

    OSPF协议介绍及配置 (上) 一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加 ...

  10. VRRP协议介绍--转

    http://www.cnblogs.com/jony413/articles/2697404.html VRRP协议介绍 参考资料: RFC 3768 1. 前言 VRRP(Virtual Rout ...

随机推荐

  1. Net DB Web多级缓存的实现

    1.客户端缓存(浏览器缓存) HTTP有一套控制缓存的协议-RFC7234,其中最重要的就是cache-control这个相应报文头,服务器返回时,如果Response带上 cache-control ...

  2. Hash 表

    更多内容,前往 IT-BLOG 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快 ...

  3. 制作一个同时具有PE和Windows原版安装方式的U盘

    这个方法可能很多人已经制作成功过了,但是呢,也有些人不会的,也可能没想到过,那就是让Win PE与Windows原版安装包在一个U盘里面同时共存. 需要用到的软件有这几样:DiskGenius.Gim ...

  4. js模拟下拉菜单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. TSDB - VictoriaMetrics 技术原理浅析

    版权说明: 本文章版权归本人及博客园共同所有,转载请在文章前标明原文出处( https://www.cnblogs.com/mikevictor07/p/17258452.html ),以下内容为个人 ...

  6. 中英文拼写检测纠正开源项目使用入门 word-checker 1.1.0

    项目简介 word-checker 本项目用于单词拼写检查.支持英文单词拼写检测,和中文拼写检测. 特性说明 可以迅速判断当前单词是否拼写错误 可以返回最佳匹配结果 可以返回纠正匹配列表,支持指定返回 ...

  7. 联想拯救者Y9000P 2023版 双系统ubuntu安装nvidia显卡驱动、cuda及cudnn简明教程

    前言 对于从事机器学习.深度学习.图像处理.自然语言处理等科研与工作的小伙伴们,ubuntu系统是一个不错的选择,本人前几天入手拯救者y9000p 2023版本,配置为:RTX4060 16G 13代 ...

  8. TypeScript 学习笔记 — 自定义类型:部分属性可选,反选 key,求对象交差并补集等(十三)

    目录 将部分属性变为可选属性 根据值的类型 反选 key 写法一:基础原理写法,使用不同的内置类型,Pick 和 Omit 写法二:基础原理写法,使用 Pick 内置类型 + 传参的方式 写法三:使用 ...

  9. sync.Pool:提高Go语言程序性能的关键一步

    1. 简介 本文将介绍 Go 语言中的 sync.Pool并发原语,包括sync.Pool的基本使用方法.使用注意事项等的内容.能够更好得使用sync.Pool来减少对象的重复创建,最大限度实现对象的 ...

  10. 部署:Mysql8和Mysql5.7部署同一服务器

    问题描述:将Mysql8.0.22和Mysql5.7.32部署在同一环境下 操作系统:centos7.8 数据库:Mysql8.0.22.Mysql5.7.32 版本 占用端口 实例名 数据文件 端口 ...