IEEE Standard for SystemVerilog Chapter 22. Compiler directives
22.1 General
此子句描述以下编译器指令(按字母顺序列出):
`__FILE__ [22.13]
`__LINE__ [22.13]
`begin_keywords [22.14]
`celldefine [22.10]
`default_nettype [22.8]
`define [22.5.1]
`else [22.6]
`elsif [22.6]
`end_keywords [22.14]
`endcelldefine [22.10]
`endif [22.6]
`ifdef [22.6]
`ifndef [22.6]
`include [22.4]
`line [22.12]
`nounconnected_drive [22.9]
`pragma [22.11]
`resetall [22.3]
`timescale [22.7]
`unconnected_drive [22.9]
`undef [22.5.2]
`undefineall [22.5.3]
22.2 Overview
所有编译器指令前面都有(`)字符。此字符称为 抑音符(ASCII 0x60)。它与字符(')不同,后者是撇号字符(ASCII 0x27)。编译器指令的范围从当前编译单元中处理的所有文件的处理点扩展到另一个编译器指令取代它或编译单元的处理完成的点。编译器指令的语义在3.12.1和5.6.4中进行了定义。
22.3 `resetall
当在编译过程中遇到“`restall编译器指令”时,所有编译器指令都设置为默认值。这对于确保只有编译特定源文件所需的指令处于活动状态非常有用。
建议的用法是将“`resetall”放在每个源文本文件的开头,然后紧跟文件中所需的指令。在设计元素中指定“`restall指令”是违法的。并非所有编译器指令都有默认值(例如“define”和“include”)。
没有默认值的指令不受“`restall”的影响。
22.4 `include
文件包含(`include)编译器指令用于在编译期间将源文件的全部内容插入另一个文件中。
结果是,所包含的源文件的内容似乎代替了`include编译器指令出现。
语法22-1中给出了`include编译器指令的语法。
include_compiler_directive ::=`include " filename "| `include < filename >
Syntax 22-1—Syntax for include compiler directive (not in Annex A)
编译器指令`include可以在SystemVerilog源描述中的任何位置指定。只有空白或注释可以出现在`include编译器指令的同一行。
文件名是要包含在源文件中的文件的名称。
文件名可以是完整的或相对的路径名。
文件名可以用引号或尖括号括起来,这会影响工具搜索文件的方式,如下所示:
--当文件名用双引号(“filename”)括起来时,将搜索编译器的当前工作目录以及用户指定的位置的相对路径。
--当文件名包含在尖括号(<filename>)中时,则仅依赖于实现搜索包含由语言标准定义的文件的位置。相对路径名称是相对于该位置进行解释的。
当文件名是绝对路径时,只包括该文件名,并且只能使用`include的双引号形式。使用“`include编译器指令”包含在源中的文件可能包含其他“`include编译程序指令”。包含文件的嵌套级别的数量应是有限的。实现可能会限制包含文件可以嵌套的最大级别数,但该限制应至少为15。
“`include编译器指令”的示例如下:
`include "parts/count.v"
`include "fileB" // including fileB
`include <List.vh>
22.5 `define, `undef, and `undefineall
提供了文本宏替换功能,以便使用有意义的名称来表示常用的文本片段。例如,在整个描述中重复使用常量的情况下,如果需要更改常量的值,则只需要更改源描述中的一个位置,因此文本宏将非常有用。
文本宏功能不受编译器指令“`resetall”的影响。
22.5.1 `define
指令“define”创建了一个用于文本替换的宏。此指令既可用于设计元素内部,也可用于设计元素外部。定义文本宏后,可以在源描述中使用(`)字符,后跟宏名称。编译器应将宏的文本替换为字符串“text_macro_name”及其后面的任何实际参数。所有编译器指令都应被视为预定义的宏名称;将编译器指令重新定义为宏名称是违法的。
文本宏可以用参数定义。这允许为每次单独使用自定义宏。
语法22-2给出了文本宏定义的语法。
text_macro_definition ::=`define text_macro_name macro_text
text_macro_name ::=text_macro_identifier [ ( list_of_formal_arguments ) ]
list_of_formal_arguments ::=formal_argument { , formal_argument }
formal_argument ::=simple_identifier [ = default_text ]
text_macro_identifier ::=identifier
Syntax 22-2—Syntax for text macro definition (not in Annex A)
宏文本可以是与文本宏名称在同一行上指定的任意文本。如果指定文本需要多行,换行符前面应加一个反斜杠(\)。第一个没有反斜杠的换行符应结束宏文本。
在扩展宏中,以反斜杠开头的换行符应替换为换行符(但不包括前面的反斜杠)。当使用形式参数定义文本宏时,形式参数的范围应延伸到宏文本的末尾。
形式参数可以在宏文本中以与标识符相同的方式使用。如果使用了形式参数,则形式参数名称列表应包含在宏名称后面的括号中。形式参数名称应为simple_identifiers,用逗号和空格分隔(可选)。左括号应紧跟在文本宏名称后面,中间不得有空格。形式宏参数可能有默认值。默认值是通过在正式参数名称后附加一个=标记,后跟默认文本来指定的。如果未指定相应的实际参数,则将用默认文本替代形式参数。
默认文本可以显式指定为空,方法是在正式参数名称后添加=标记,后跟逗号(如果它是参数列表中的最后一个参数,则可以使用右括号)。如果文本中包含单行注释(即用字符//指定的注释),则该注释不应成为替换文本的一部分。宏文本可以为空,在这种情况下,文本宏被定义为空,并且在使用宏时不会替换任何文本。
语法22-3中给出了使用文本宏的语法。
text_macro_usage ::=`text_macro_identifier [ ( list_of_actual_arguments ) ]
list_of_actual_arguments ::=actual_argument { , actual_argument }
actual_argument ::=expression
Syntax 22-3—Syntax for text macro usage (not in Annex A)
对于没有参数的宏,每次出现`text_macro_identifier时,都应按原样替换文本。但是,具有一个或多个参数的文本宏应通过将每个形式参数替换为宏使用中用作实际参数的表达式来进行扩展。
要使用用参数定义的宏,文本宏的名称后面应加上一个用逗号分隔的括号中的实际参数列表。实际参数和默认值不应在匹配的左右括号()、方括号[]、大括号{}、双引号“”或转义标识符之外包含逗号或右括号字符。
在宏使用中,文本宏名称和左括号之间应留有空白。实际参数可能为空或仅为空白,在这种情况下,如果指定了参数default,则形式参数将被替换;如果未指定默认值,则不替换。如果指定的实际参数少于形式参数的数量,并且所有剩余的形式参数都有默认值,则将用默认值替换其他形式参数。如果任何剩余的形式参数没有指定默认值,则这将是一个错误。对于带参数的宏,即使所有参数都有默认值,在宏调用中也始终需要括号。指定的实际参数多于正式参数的数量是错误的。
没有默认值的宏示例:
`define D(x,y) initial $display("start", x , y, "end");
`D( "msg1" , "msg2" )
// expands to 'initial $display("start", "msg1" , "msg2", "end");'
`D( " msg1", )
// expands to 'initial $display("start", " msg1" , , "end");'
`D(, "msg2 ")
// expands to 'initial $display("start", , "msg2 ", "end");'
`D(,)
// expands to 'initial $display("start", , , "end");'
`D( , )
// expands to 'initial $display("start", , , "end");'
`D("msg1")
// illegal, only one argument
`D()
// illegal, only one empty argument
`D(,,)
// illegal, more actual than formal arguments
具有默认值的宏示例:
`define MACRO1(a=5,b="B",c) $display(a,,b,,c);
`MACRO1 ( , 2, 3 ) // argument a omitted, replaced by default// expands to '$display(5,,2,,3);'
`MACRO1 ( 1 , , 3 ) // argument b omitted, replaced by default// expands to '$display(1,,"B",,3);'
`MACRO1 ( , 2, ) // argument c omitted, replaced by nothing// expands to '$display(5,,2,,);'
`MACRO1 ( 1 ) // ILLEGAL: b and c omitted, no default for c
`define MACRO2(a=5, b, c="C") $display(a,,b,,c);
`MACRO2 (1, , 3) // argument b omitted, replaced by nothing// expands to '$display(1,,,,3);'
`MACRO2 (, 2, ) // a and c omitted, replaced by defaults// expands to '$display(5,,2,,"C");'
`MACRO2 (, 2) // a and c omitted, replaced by defaults// expands to '$display(5,,2,,"C");'
`define MACRO3(a=5, b=0, c="C") $display(a,,b,,c);
`MACRO3 ( 1 ) // b and c omitted, replaced by defaults// expands to '$display(1,,0,,"C");'
`MACRO3 ( ) // all arguments replaced by defaults// expands to '$display(5,,0,,"C");'
`MACRO3 // ILLEGAL: parentheses required
一旦定义了文本宏名称,它就可以在编译单元中定义它的任何地方使用。 一旦进入编译单元,就没有其他范围限制。实现方式还可以允许以交互方式定义和使用文本宏。
为宏文本指定的文本不得拆分为以下词法标记:
— Comments
— Numbers
— String literals
— Identifiers
— Keywords
— Operators
例如:
`define wordsize 8
logic [1:`wordsize] data;
//define a nand with variable delay
`define var_nand(dly) nand #dly
`var_nand(2) g121 (q21, n10, n11);
`var_nand(5) g122 (q22, n10, n11);
以下是非法语法,因为它被拆分为一个字符串:
`define first_half "start of string
$display(`first_half end of string");
每个实际的参数都被相应的形式参数从字面上取代。因此,当一个表达式用作实际参数时,该表达式将被整体替换。如果在宏文本中多次使用形式参数,这可能会导致表达式被多次求值。
例如:
`define max(a,b)((a) > (b) ? (a) : (b))
n = `max(p+q, r+s) ;
将被扩展为:
n = ((p+q) > (r+s) ? (p+q) : (r+s)) ;
这里,两个表达式p+q和r+s中较大的一个将被求值两次。define这个词被称为编译器指令关键字,它不是正常关键字集的一部分。因此,SystemVerilog源描述中的正常标识符可以与编译器指令关键字相同。
应考虑以下问题:
a) 文本宏名称不得与编译器指令关键字相同。
b) 文本宏名称可以重用用作普通标识符的名称。例如,signal_name和`signal_name是不同的。
c) 允许重新定义文本宏;由读取的特定文本宏的最新定义。当在源文本中遇到宏名称时,编译器占上风。
宏文本和参数默认值可能包含其他文本宏的用法。此类用法应在外部宏被替换后进行替换,而不是在定义时进行替换。
如果实际参数或参数默认值包含宏用法,则只有在替换为外部宏文本后,才能扩展宏用法。如果一个形式参数有一个非空的默认值,并且希望用一个空的实际参数替换该形式参数,则不能简单地省略实际参数,因为这样就会使用默认值。但是,可以定义一个空文本宏,比如`empty,并将其用作实际参数。它将取代形式参数,并在展开空文本宏后被空文本替换。当宏用法作为实际参数或默认参数传递给另一个宏时,参数扩展不会将形式参数的新用法引入顶级宏。
示例:
`define TOP(a,b) a + b
`TOP( `TOP(b,1), `TOP(42,a) )
扩展到: b + 1 + 42 + a
not into: 42 + a + 1 + 42 + a
nor into: b + 1 + 42 + b + 1
宏直接或间接扩展到包含其自身另一用法的文本(递归宏)是错误的。但是,宏或默认值的实际参数可能包含其自身的用法,如前面的示例所示。字符串文字中不应出现宏替换和参数替换。例如:(字符串中的宏不会替换),例如 `define LO "`HI, world" ,`HI不会替换为Hello。
module main;`define HI Hello`define LO "`HI, world"`define H(x) "Hello, x"initial begin$display("`HI, world");$display(`LO);$display(`H(world));end
endmodule
打印结果如下:
`HI, world
`HI, world
Hello, x
`define宏文本还可以包括`"、`\`" 和``。
`"覆盖了的常用词汇含义",表示扩展应包括引号、实际参数的替换和嵌入宏的扩展。
这允许从宏参数构造字符串文字。
宏文本中允许混合使用`"和",但是使用 " 总是以字符串文字开头,并且必须具有终止符 "。
嵌入此字符串文本中的任何字符,包括`",都将成为替换的宏文本中字符串的一部分。因此,如果" 后面跟有`",则 " 将启动最后一个字符为 ` 的字符串文字,并以 " of `"结尾。'\' 表示展开应该包括转义序列 \" 。
例如:
`define msg(x,y) `"x: `\`"y`\`"`"
使用`msg宏的一个示例:
$display(`msg(left side,right side));
上面的例子扩展为:
$display("left side: \"right side\"");
' '在不引入空格的情况下对词法标记进行定界,从而允许根据参数构造标识符。例如:
`define append(f) f``_master
使用`append宏的一个示例:
`append(clock)
这个示例被扩展为:
clock_master
`include指令后面可以跟一个宏,而不是字符串文字:
`define home(filename) `"/home/mydir/filename`"
`include `home(myfile)
22.5.2 `undef
如果指令`undef以前是由编译单元中的`define编译器指令定义的,则该指令`undf应取消对指定文本宏的定义。尝试使用`define编译器指令取消定义以前未定义的文本宏可能会发出警告。`undef编译器指令的语法在语法22-4中给出。
undefine_compiler_directive ::=`undef text_macro_identifier
Syntax 22-4—Syntax for undef compiler directive (not in Annex A)
未定义的文本宏没有值,就像从未定义过一样。
22.5.3 `undefineall
`undefineall指令应取消定义编译单元内`define编译器指令先前定义的所有文本宏。此指令不接受任何参数,并且可能出现在源描述中的任何位置。
相关文章:
IEEE Standard for SystemVerilog Chapter 22. Compiler directives
22.1 General 此子句描述以下编译器指令(按字母顺序列出): __FILE__ [22.13] __LINE__ [22.13] begin_keywords [22.14] celldefine [22.10] default_net…...
机器学习中的独立和同分布 (IID):假设和影响
一、介绍 在机器学习中,独立和同分布 (IID) 的概念在数据分析、模型训练和评估的各个方面都起着至关重要的作用。IID 假设是确保许多机器学习算法和统计技术的可靠性和有效性的基础。本文探讨了 IID 在机器学习中的重要性、其假设及其对模型开…...
PTP软硬件时间戳
软硬件时间戳 抄袭来源:http://www.bdtime.com.cn/pinlv/4296.html PTP 是一种网络协议,用于在计算机网络中进行时钟校准和时间同步。硬件时间戳和软件时间戳是在实现 PTP 时常见的两种方式,它们在精度、可靠性、实时性以及资源消耗等方面存…...
使用ADS进行serdes仿真时,Tx_Diff中EQ的设置对发送端波形的影响。
研究并记录一下ADS仿真中Tx_Diff的EQ设置。原理图如下: 最上面是选择均衡方法Choose equalization method:Specify FIR taps,Specify de-emphasis和none。 当选择Specify de-emphasis选项时,下方可以输入去加重具体的dB值&#x…...
数据库迁移(DBeaver版本)
最近需要做一个数据库迁移, 测试环境开发的差不多了,需要将脚本迁移到生产。 中间了试了一些工具,比如Jetbrain出品的datagrip,这个数据库工具平时还是很好用的,但是数据迁移感觉不是那么好用,所以还是用到…...
【c++STL常见排序算法sort,merge,random_shuffle,reverse】
文章目录 C STL 常见排序算法详解1. sort 算法2. merge 算法3. random_shuffle 算法4. reverse 算法 C STL 常见排序算法详解 1. sort 算法 功能:sort 用于对容器内的元素进行升序排序。示例代码:#include <iostream> #include <algorithm>…...
STM32/N32G455国民科技芯片驱动DS1302时钟---笔记
这次来分享一下DS1302时钟IC,之前听说过这个IC,但是一直没搞过,用了半天时间就明白了原理和驱动,说明还是很简单的。 注:首先来区分一下DS1302和RTC时钟有什么不同,为什么不直接用RTC呢? RTC不…...
基于PLC的污水厌氧处理控制系统(论文+源码)
1. 系统设计 污水厌氧由进水系统通过粗格栅和清污机进行初步排除大块杂质物体以及漂浮物等,到达除砂池中。在除砂池系统中细格栅进一步净化污水厌氧中的细小颗粒物体,将污水厌氧中的细小沙粒滤除后进入氧化沟反应池。在该氧化沟系统中进行生化处理&…...
Unity之NetCode多人网络游戏联机对战教程(9)--NetworkAnimator组件
文章目录 前言NetworkAnimatorAnimator的Trigger属性服务器权威模式(Server Authoritative Mode)客户端权威模式 (Owner Authoritative Mode)学习文档 前言 这个组件是NetCode常用的组件之一,NetworkAnimator跟NetworkTransform一样…...
iceoryx之Roudi
目录...
.Net(C#)常用转换byte转uint32、byte转float等
1、byte转String Encoding.ASCII.GetString(byte[]); 2、base64string转byte byte[]Base64Decoder.Decoder.GetDecoded(string); 3、byte转UInt16 方法一 (UInt16)(bytes[0] * 256 bytes[1]) 方法二 (UInt16)((bytes[0] << 8) | bytes[1]); 方法三 字节序要对…...
windows快捷方式图标变成空白
今天突然有客户说应用程序快捷方式图标变成了空白,就研究了一下,网上找了一下很多都说是什么图标缓存有问题,试过之后发现并不能解决问题。 然后发现用户的文件上都一把黄色的小锁的标志,查了一下说是文件属性里面设置加密之后就会…...
【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池
【Linux系统编程十九】:匿名管道原理/模拟实现进程池 一.进程通信理解二.通信实现原理三.系统接口四.五大特性与四种情况五.应用场景--进程池 一.进程通信理解 什么是通信? 通信其实就是一个进程想把数据给另一个进程,但因为进程具有独立性…...
【全网首发】2023年NOIP真题
目录 前言 真题 结尾 前言 NOIP题目了解一下,后续有可能会出讲解,题目全部来自于洛谷 真题 第一题:词典 第二题:三值逻辑 第三题:双序列扩展 第四题: 天天爱打卡 结尾 大家可以把你的预期分数打在评论…...
【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统
一、PXE网络批量装机的介绍 1、常见的三种系统安装方式 2、回顾系统安装的过程,了解系统安装的必要条件 3、什么是pxe 4、搭建pxe的原理 5、Linux的光盘镜像中的isolinux中的相关文件学习 二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解 5个…...
Pandas+Matplotlib 数据分析
利用可视化探索图表 一、数据可视化与探索图 数据可视化是指用图形或表格的方式来呈现数据。图表能够清楚地呈现数据性质, 以及数据间或属性间的关系,可以轻易地让人看图释义。用户通过探索图(Exploratory Graph)可以了解数据的…...
k8s ingress高级用法一
前面的文章中,我们讲述了ingress的基础应用,接下来继续讲解ingress的一些高级用法 一、ingress限流 在实际的生产环境中,有时间我们需要对服务进行限流,避免单位时间内访问次数过多,常用的一些限流的参数如下&#x…...
C语言--从键盘输入10个数字放在数组中,并输出
用scanf读取数字的时候要注意,可以输入一个数字,按一下回车,输入一个数字,按一下回车,也可以一次性输入完10个数据。(中间可以用空格隔开,系统会自动识别) 输出一:每按下一个数字&am…...
SSL加密
小王学习录 今日摘录前言HTTP + SSL = HTTPSSSL加密1. 对称加密2. 非对称加密 + 对称加密3. 证书今日摘录 但愿四海无尘沙,有人卖酒仍卖花。 前言 SSL表示安全套接层,是一个用于保护计算机网络中数据传输安全的协议。SSL通过加密来防止第三方恶意截取并篡改数据。在实际应用…...
一个美观且功能丰富的 .NET 控制台应用程序开源库
推荐一个美观且功能丰富的 .NET 控制台应用程序开源库,从此告别黑漆漆的界面。 01 项目简介 Spectre.Console 是一个开源的 .NET 库,用于创建美观、功能丰富的控制台(命令行)应用程序。它提供了一组易于使用的 API,…...
DispatcherSynchronizationContext and Dispatcher
https://www.cnblogs.com/liangouyang/archive/2008/11/20/1337907.html SynchronizationContext提供一个自由线程的同步上下文,一个常用的用法是把UI线程的同步上下文保存起来,传给另一个线程,因为UI只能再UI线程中操作,在另外一…...
java类型属性set方法无法被赋值
前言 遇到一个基础的问题 方法设置属性值 失败 问题代码 有个内部类的User对象 分别使用 方式一和 方式二 设置User的属性值 发现方式一的属性并不能被设置成功 可以自行测试下 public class Test{public static void main(String[] args) {#方式一 User user new User();u…...
【2】SM2验签工具和RSA验签工具
0X01 前言 最近看了好多验签工具,感觉不是很好用,就自己造了个。 0x02 工具功能介绍 对SM2算法进行验签和RSA算分进行验签,签名值可以是base64,也可以是十六进制。 兼容各种输入。 0x03 工具使用 RSA 验签 SM2 验签 0x04 工具…...
Python (十一) 迭代器与生成器
迭代器 迭代器是访问集合元素的一种方式,可以记住遍历的位置的对象 迭代器有两个基本的方法:iter() 和 next() 字符串,列表或元组对象都可用于创建迭代器 字符串迭代 str1 Python str_iter iter(str1) print(next(str_iter)) print(next(st…...
通过maven命令手动上传jar私服Nexus
Nexus3在界面上传组件时报: Ext.JSON.decode(): Youre trying to decode an invalid JSON String: 查找了很多资料,都没有解决。有哪位大佬知道的评论告诉一下,万分感谢。 于是换成maven命令上传: mvn deploy:deploy-file -Dgr…...
记一次用jlink调试正常,不进入调试就不能运行的情况
一、概述 我开机会闪烁所有指示灯,但是重新上电时,指示灯并没有闪烁,就像"卡死"了一样。 使用jlink的swd接口进行调试,需要多点几次运行才能跳转到main函数里面。 调试模式第一次点击运行,暂停查看函数堆栈…...
搞科研、写论文,如何正确使用GPT?AIGC技术解析、提示词工程高级技巧、AI绘图、ChatGPT/GPT4应用
目录 专题一 OpenAI开发者大会最新技术发展及最新功能应用 专题二 AIGC技术解析 专题三 提示词工程高级技巧 专题四 ChatGPT/GPT4的实用案例 专题五 让ChatGPT/GPT4成为你的论文助手 专题六 让ChatGPT/GPT4成为你的编程助手 专题七 让ChatGPT/GPT4进行数据处理 专题八 …...
Java实现的插件化策略模式
Java实现的插件化策略模式 目录结构实现BaseDealAnno.java(注解)BasePluginEnum.java(枚举)BaseDealFactory.javaContextBaseDealListener.java(核心类)BaseDealHandler.java(接口)BaseAudioService.java(可扩展多个)验证目录结构 com.demo.mytest ├── strategy │ ├──…...
【jvm】MinorGC、MajorGC和FullGC
目录 一、说明二、年轻代GC(Minor GC)触发机制三、老年代GC (Major GC/Full GC)触发机制四、Full GC触发机制 一、说明 1.jvm调优的主要目的是GC的时间少一些,用户线程执行的时间多一些 2.主要侧重于MajorGC和FullGC,这两块的GC产生的暂停时间比MinorGC产…...
Redis:java和SpringBoot中使用Redis
目录 Jedis操作Redis6SpringBoot整合Redis Jedis操作Redis6 Jedis是java开发的操作redis的工具包。 引入maven依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</ve…...
Java的XWPFTemplate word生成列表
Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可,比较复杂的列表遍历暂时还没找到方法,只能手动创建表格了 上面是模板,非常简单,以为我们是要自己创…...
基于RFID的自动化仓储设备研发项目可行性研究报告
一、项目概况 基于RFID的自动化仓储设备研发项目,是深圳市飞鸟国际供应链股份有限公司在公司有色金属供应链一站式服务的基础上,针对有色金属供应链的仓储环节进行的研发。 多年来,公司一直坚持以“科技金融”为核心的未来发展战略…...
ajax异步传值以及后端接收参数的几种方式
异步传值 第一种呢,也是最简单的一种,通过get提交方式,将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…...
千年TGS服务器日志报错如何解决
大家在修改sdb文件,建议使用sdb修改器。注意:每个文件,每个逗号都很重要;只要其中哪部分少一个逗号或多一个逗号,都很容易发生错误。 一常见 TGS1000.LOG 错误类型,因不同的错误,错误中括号“&…...
读取Json BugFix
遇到的错误如下所示: 遇到的错误如下所示:File ~/miniconda3/lib/python3.9/json/decoder.py:353, in JSONDecoder.raw_decode(self, s, idx)344 """Decode a JSON document from s (a str beginning with345 a JSON document) and retu…...
【Gradle构件工具深度学习】
Gradle构件工具深度学习 1. 课程大纲1.1 Gradle入门1.2 与Idea整合1.3 Gradle进阶 2. 常见项目构建工具3. 安装gradle 1. 课程大纲 1.1 Gradle入门 基本介绍、常用指令、项目目录、项目应用 1.2 与Idea整合 Groovy语法、整合IDEA、搭建web工程、项目部署 1.3 Gradle进阶 生命周…...
Attention Transformer
来源老师课件,方便以后复习。 课参考链接: http://jalammar.github.io/illustrated-transformer/ 之前的知识链接: 【知识链接】WGAN Transformer Vit Swin-Transformer Swin-Unet Res-Vit TransUNet MAE Bra ADDA 打分函数: 多头…...
[最新榜单] 智能手机数据恢复的 10 款最佳应用
当手机上的数据消失时,这让您感到非常难过。 由于事故而突然丢失重要的聊天记忆、照片和其他您想保留的东西的悲伤。 如果它没有被淹没,您可以使用数据恢复应用程序修复它。 在本文中,我们将解释一些有用的数据恢复应用程序。 数据恢复应用…...
修改CentOS默认mail发件名称
修改CentOS默认的邮件发件名称 要修改CentOS默认的邮件发件名称,可以按照以下步骤进行操作: 打开终端或SSH连接到CentOS服务器。使用root或具有管理员权限的用户登录。编辑postfix配置文件。在终端中输入以下命令: vi /etc/postfix/main.cf…...
Lesson 03 C/C++内存管理
C:渴望力量吗,少年? 文章目录 一、C内存管理方式1. new/delete操作内置类型2. new和delete操作自定义类型 二、operator new与operator delete函数三、new和delete的实现原理1. 内置类型2. 自定义类型 四、内存泄漏1. 什么是内存泄漏2. 内存泄…...
【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理(正在更新中......)
【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理 一、MAX96712 解串器基础配置1.1 配置链路 GMSL 协议 及 传输速率1.1.1 配置GMSL1、GMSL2协议 及 配置使能 Link A/B/C/D [0x6]:GMSL2_A、LINK_EN_A1.1.2 配置GMSL2 传输速率 3 Gbps / 6 Gbps …...
Docker与Kubernetes结合的难题与技术解决方案
文章目录 1. **版本兼容性**技术解决方案 2. **网络通信**技术解决方案 3. **存储卷的管理**技术解决方案 4. **安全性**技术解决方案 5. **监控和日志**技术解决方案 6. **扩展性与自动化**技术解决方案 7. **多集群管理**技术解决方案 结语 🎈个人主页:…...
CVE-2021-42287CVE-2021-42278 域内提权
倘见玉皇先跪奏:他生永不落红尘 本文首发于先知社区,原创作者即是本人 前言 网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不能有短板的…...
springcloud整合nacos实现服务注册
Nacos是一个开源的分布式系统服务和基础设施解决方案,用于实现动态服务发现、配置管理和服务治理。它可以帮助开发人员和运维团队更好地管理微服务架构中的服务实例、配置信息和服务调用。 Nacos提供了服务注册与发现、动态配置管理、服务路由和负载均衡等功能&…...
redis实现布隆过滤器
思路: 用于快速检查一个元素是否属于某个集合中。它可以快速判断一个元素是否在一个大型集合中,且判断速度很快且不占用太 多内存空间。原理是使用一组哈希函数,将元素【映射】成数组中的【索引位置】,就是将元素转成他在索引中的…...
山西电力市场日前价格预测【2023-11-19】
1.日前价格预测 预测说明: 如上图所示,预测明日(2023-11-19)山西电力市场全天平均日前电价为591.63元/MWh。其中,最高日前电价为1500.00元/MWh,预计出现在16:45~20:45。最低日前电价为268.57元/MWh&#x…...
深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用
OCR即光学字符识别,是通过扫描仪或工业相机等电子设备检查打印的字符,并通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。 目前,随着机器视觉和人工智能技术的进一步升级,OCR技术实…...
性能测试知多少---系统架构分析
之前有对性能需求进行过分析,那篇主要从项目业务、背景等角度如何抽丝剥茧的将项目的需求抽离出来。在我们进行需求的时候也需要对被测项目的架构有一定的认识,如果不了解被测系统的架构,那么在后期的性能分析与调优阶段将无从下手。 简单系…...
【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”
毫无疑问,数智化既是这个时代前进所趋,也是国家战略所指,更是所有企业未来发展进程中达成的高度共识。 但也要看到,由于大量新兴技术的出现,技术热点不停的轮转,加上市场环境的快速变化,让数智化…...
我的 2023 秋招总结,拿到了大厂offer
2023秋招小结 前言 & 介绍 作为2024年毕业的学生,在2023年也就是今年秋招。 现在秋招快结束了,人生可能没有几次秋招的机会(应该就一次,最多两次吧哈哈),也有一点感悟,所以小小总结一下。…...