原文链接:http://nim-lang.org/docs/tut1.html

Nim是一种静态类型、命令式的系统级编程语言,其作者是Andreas Rumpf,最新版本是0.11.0。Nim的语法受到了Python和Pascal的启发,其主要特性包括编译到C的原生代码生成,不依赖于虚拟机;非跟踪垃圾收集器;跨模块内联;编译器和标准库都用Nim实现;强大的元编程能力,等等。


版本:0.11.2作者:AndreasRumpf

介绍

"Der Mensch ist doch ein Augentier -- schöne Dinge wünsch ich mir."

 “人是视觉动物--我渴望美好事物。”   

这个文档是关于编程语言Nim的教程,这个教程假设你已经熟悉基本的编程语言概念,比如:基本变量,基本类型或者非常基本的语句。nim手册(nim:manual)中包含更多具有高级语言特性的例子。nim手册链接:http://nim-lang.org/docs/manual.html

第一个程序

我们从一个改进的“hello world”程序开始我们的旅程  

# This is a comment
echo("What's your name? ")
var name: string = readLine(stdin)
echo("Hi, ", name, "!")


把这个代码保存为“greetings.nim”文件,现在编译,运行它:

nim compile --run greetings.nim

带有--run开关选项,Nim会在编译之后自动执行源文件。你可以在文件名后面附加程序命令行参数:

nim compile --run greetings.nim arg1 arg2


常用的命令和开关有缩写,所以你也可以使用下面的缩写形式:


nim c -r greetings.nim


编译一个发行版本使用:

nim c -d:release greetings.nim


默认情况下,nim编译器针对你的调试喜好生成大量运行时检查。使用-d:release这些检查被关闭,优化会被打开。

虽然程序是干什么的应该是很明显的,我将解释这个语法:当程序启动的时候执行没有缩进的程序。缩进是nim分组声明的方法。缩进只能使用空格,制表符是不允许的。

字符串字面值使用双引号括起。var语句声明一个新变量,命名字符串类型的名称带有一个通过readLine过程返回的值。由于编译器知道readLine返回一个字符串,你可以省略类型声明(这叫做本地类型推理)

var name = readLine(stdin)


这基本上是nim中存在的类型推断的唯一形式:它在简洁和可读性之间是一个很好的妥协。

“hello world”程序中包含的几个标识符已经被编译器熟知:echo,readLine等。这些在系统模块中内置的声明暗含的被导入到其他的模块。

词法元素

让我们更详细的看看nim的词法元素:像其他编程语言一样,Nim包含(字符串)字面值,标识符,关键字,注释,运算符,和其他标点符号

字符串和字符字面值

字符串字面值用双引号,字符字面值用单引号。特殊转移字符用\:\n代表换行,\t制表符,跳格键等。这也有原始字符串字面值:

r"C:\program files\nim"


在原始字符串字面值中反斜杠符号不是一个转移字符

长字符串用三引号"""...""";它们可以跨越多行,并且\也不是转义字符。他们是非常有用的,例如嵌入HTML代码模板。

注释

注释可以在一个字符串或字符外的任何地方开始,以字符#开始。文档注释以##开始: 

# A comment.var myVariable: int ## a documentation comment


文档注释是标记;文档注释只允许在输入文件的某些地方,因为它们属于语法树。这个特征可以用于简单文档生成。

你也可以用discard语句和长字符串来创建注释块:

discard """ You can have any Nim code text commented
out inside this with no indentation restrictions.yes("May I ask a pointless question?") """

数值

数值常量在很多语言中都存在;作为一个特殊的扭曲,强调允许更好的可读性,1_000_000 (一百万)。一个数带有点(或者e或E)的是一个float常数。十六进制常量以0x开始,二进制以0b开始,八进制以0o开始。一个单独的前导0不是八进制数。

var语句

var语句声明一个局部或全局变量

var x, y: int # declares x and y to have the type ``int``


缩进可以用在var关键字之后列出一整段变量:

varx, y: int# a comment can occur here tooa, b, c: string

赋值语句

复制语句将一个新值赋值给一个变量或者一个更普遍的存储空间

var x = "abc" # introduces a new variable `x` and assigns a value to it
x = "xyz"     # assigns a new value to `x`


=是赋值操作符。赋值操作不能被重载,重写,或隐藏,但这可能会在nim的未来版本中发生变化。你可以用一个赋值语句来声明多个变量,所有的变量都将具有相同的值。

var x, y = 3  # assigns 3 to the variables `x` and `y`
echo "x ", x  # outputs "x 3"
echo "y ", y  # outputs "y 3"
x = 42        # changes `x` to 42 without changing `y`
echo "x ", x  # outputs "x 42"
echo "y ", y  # outputs "y 3"


注意:用一个赋值语句声明多个变量,调用一个过程会有出乎意料的结果:编译器将展开赋值语句,以调用这个程序多次结束。如果这个过程的结果取决于副作用,你的变量可能以不同的值结束。为了安全,仅仅使用常量。

常量

常量是绑定一个值的符号。这个常量值不能改变。编译器必须能够在编译时在一个常量的声明里评估表达式。

const x = "abc" # the constant x contains the string "abc"

缩进可以用在const关键字之后列出一整段常数:

constx = 1# a comment can occur here tooy = 2z = y + 5 # computations are possible

let语句

let语句的作用与var语句相同,但是这个声明的符号只能单变量赋值:在初始化之后值不能改变:

let x = "abc" # introduces a new variable `x` and binds a value to it
x = "xyz"     # Illegal: assignment to `x`


let语句和const语句的不同在于:let声明一个变量不能重新分配值,const意味着执行编译时评估和把它变成一个数据段

const input = readLine(stdin) # Error: constant expression expected
let input = readLine(stdin)   # works

控制流语句

第一个greeting.nim程序包含3个语句,它们顺序执行。只有最原始的程序可以逃脱:分支和循环同样需要

if语句

if语句是控制流的一个分支:

let name = readLine(stdin)
if name == "":echo("Poor soul, you lost your name?")
elif name == "name":echo("Very funny, your name is name.")
else:echo("Hi, ", name, "!")


这可以有0个或多个elif部分,else部分也是可以选择的。elif关键字比else if短和有效避免过多的缩进

case语句

case语句提供另一种分支方式,一个case语句是一个多分支

let name = readLine(stdin)
case name
of "":echo("Poor soul, you lost your name?")
of "name":echo("Very funny, your name is name.")
of "Dave", "Frank":echo("Cool name!")
else:echo("Hi, ", name, "!")


正如上面所见,对于一个分支以逗号分割的值列表是允许的

case语句可以处理整数,字符串和其他序列类型。(什么是一个序数类型将稍后解释)对于整数或者其他序数类型值的范围也是可能的:

# this statement will be explained later:
from strutils import parseIntecho("A number please: ")
let n = parseInt(readLine(stdin))
case n
of 0..2, 4..7: echo("The number is in the set: {0, 1, 2, 4, 5, 6, 7}")
of 3, 8: echo("The number is 3 or 8")


然而,上面的代码不能编译:原因是你必须覆盖n可能包含的每一个值,但是这个代码仅处理了值0...8。因为它列出所有可能的值是很不实际的(尽管这个可能的由于范围符号),我们解决这个通过告诉编译器对于其他的每个值什么都不应该做:


...
case n
of 0..2, 4..7: echo("The number is in the set: {0, 1, 2, 4, 5, 6, 7}")
of 3, 8: echo("The number is 3 or 8")
else: discard


这个空废弃语句是什么也不做的声明。编译器知道一个case语句带有一个else部分不会失败,因此错误消失了。注意,要涵盖所有可能的字符串值是不可能的,这就是为什么字符串case总是需要一个else分支

在一般情况下case语句用于子界类型或枚举是非常有用的,编译器将检查所有可能的值。

while语句

while语句是一个简单的循环构造:

echo("What's your name? ")
var name = readLine(stdin)
while name == "":echo("Please tell me your name: ")name = readLine(stdin)# no ``var``, because we do not declare a new variable here

这个例子用一个while循环一直询问用户的姓名,只要他什么都没有输入(只按RETURN)

for语句

for语句是一个结构去遍历一个构造器提供的所有值。该示例使用内置countup迭代器:

echo("Counting to ten: ")
for i in countup(1, 10):echo($i)
# --> Outputs 1 2 3 4 5 6 7 8 9 10 on different lines


内置的$操作符将一个整形(int)和许多其他的类型转化为一个字符串类型。变量i通过循环隐式的声明为int,因为那是迭代器countup返回的结果。i的值是1-10,每个值都被echo-ed上面的代码也可以这样写:

echo("Counting to 10: ")
var i = 1
while i <= 10:echo($i)inc(i) # increment i by 1
# --> Outputs 1 2 3 4 5 6 7 8 9 10 on different lines

countdown可以很容易的被实现(但是它很少使用)

echo("Counting down from 10 to 1: ")
for i in countdown(10, 1):echo($i)
# --> Outputs 10 9 8 7 6 5 4 3 2 1 on different lines

由于countup在程序中经常出现。nim也有一个迭代器功能相同:

for i in 1..10:...


作用域和块语句

控制流语句有一个特性没有包括:他们打开一个新的范围。这意味着,在下面的例子中,x在循环外是不可访问的:

while false:var x = "hi"
echo(x) # does not work

一个while或者for语句声明了一个隐含的块。标识符只在声明它的块中可以访问。一个块语句可以用来打开一个新的块语句。

block myblock:var x = "hi"
echo(x) # does not work either

块标签(例子中的myblock)是可选择的。

break语句

break语句可以提前跳出一个块。break可以跳出while,for循环以及块语句。break是跳出最深处的结构,除非给出了一个块的标签。

block myblock:echo("entering block")while true:echo("looping")break # leaves the loop, but not the block  跳出循环,但不跳出块echo("still in block")block myblock2:echo("entering block")while true:echo("looping")break myblock2 # leaves the block (and the loop)  跳出块(和循环)echo("still in block")

continue语句

就像在其他很多编程语言中,continue语句直接进入下一次迭代:

while true:let x = readLine(stdin)if x == "": continueecho(x)

when语句

例如:

when system.hostOS == "windows":echo("running on Windows!")
elif system.hostOS == "linux":echo("running on Linux!")
elif system.hostOS == "macosx":echo("running on Mac OS X!")
else:echo("unknown operating system")

when语句与if语句是大致相同的,以下是一些不同的地方:

  • 每一个条件都必须是一个常量表达式,因为它要通过编译器评估
  • 在一个分支语句中不打开一个新的范围
  • 只有第一条件评估为true时编译器才会检查语句的语义和生成代码。

when语句对于写特定平台的代码很有用,类似于c编程语言中的#ifdef构造。

注意:要注释一大块代码,通常使用when false:statement比用真正的注释要好。这种方式的嵌套是可能的。

语句和缩进

现在我们学习了基本的控制流语句,让我们重新回到nim的缩进规则

在nim中,简单语句与复杂语句是有区别的。简单语句不能包含其他语句,赋值,过程调用,return语句都属于简单语句。if,when,for,while都属于复杂语句,复杂语句可以包含其他语句。为了避免歧义,复杂语句必须有缩进,单一的简单语句没有缩进。

# no indentation needed for single assignment statement:  单个的赋值语句不需要缩进
if x: x = false# indentation needed for nested if statement:             对于嵌套的if语句需要缩进
if x:if y:y = falseelse:y = true# indentation needed, because two statements follow the condition:  需要缩进,因为条件后面有两个语句
if x:x = falsey = false

表达式是一个语句的一部分,它通常返回一个值。例如if语句的条件就是表达式的一个例子。为了更好的可读性表达式可以在特定的地方包含缩进。

if thisIsaLongCondition() andthisIsAnotherLongCondition(1,2, 3, 4):x = true

作为一个经典法则。在表达式中操作符,开括号,逗号之后的缩进是允许的。

用圆括号和分号(;),你可以用只有一个表达式的语句是允许的。

# computes fac(4) at compile time:
const fac4 = (var x = 1; for i in 1..4: x *= i; x)

过程

为了在例子中定义新的命令如echo和readLine,需要过程的概念。(有些语言中叫做方法或者函数)。在nim中新过程用proc关键字定义:

proc yes(question: string): bool =echo(question, " (y/n)")while true:case readLine(stdin)of "y", "Y", "yes", "Yes": return trueof "n", "N", "no", "No": return falseelse: echo("Please be clear: yes or no")if yes("Should I delete all your important files?"):echo("I'm sorry Dave, I'm afraid I can't do that.")
else:echo("I think you know what the problem is just as well as I do.")


这个程序展示了一个名字是yes的过程,它问了用户一个问题,如果他回答“yes”(或者其他相似的答案)返回true,如果他回答“no”(或者其他相似的答案)返回false。一个return语句直接离开过程(和while循环)。这个(question: string): bool语法描述的是这个过程有一个名字为question的参数,参数类型为字符串类型,返回一个bool类型的值。bool类型是一个内置类型:bool类型唯一有效的值是true和false。if或者while语句中的条件语句就应该为bool类型。

一些专业术语:在例子中question叫做(正式)参数,"Should I..."叫做实参传递给这个形式参数

结果变量

一个过程返回一个值有一个隐式的结果变量声明,它代表返回值。一个没有表达式的返回语句是一个返回结果的简称。结果值总是自动返回在一个过程的末尾如果在出口没有返回语句。

proc sumTillNegative(x: varargs[int]): int =for i in x:if i < 0:returnresult = result + iecho sumTillNegative() # echos 0
echo sumTillNegative(3, 4, 5) # echos 12
echo sumTillNegative(3, 4 , -1 , 6) # echos 7

result变量已经隐式的声明在函数开始处,所以再次声明,例如:'var result',将会存在一个与result相同名字的正常变量。result变量也已经初始化为类型默认值。注意:引用数据类型将会是零在过程开始处,因此可能需要手动初始化。

参数

在过程中参数是恒定的。默认情况下,它们的值不能改变因为这允许编译器以一种更有效的方式实现参数传递。如果在过程中需要一个易变的变量,它必须在过程中用var声明。与参数相同的名字是可以的,事实上这是一个惯用语法。

proc printSeq(s: seq, nprinted: int = -1) =var nprinted = if nprinted == -1: s.len else: min(nprinted, s.len)for i in 0 .. <nprinted:echo s[i]

如果对于调用者需要修改过程参数,需要用到一个var参数:(就像其他语言,值调用是不会改变实参的值,要想改变实参的值要通过引用调用,nim中是在过程中将参数用var声明就可以实现调用参数的改变)

proc divmod(a, b: int; res, remainder: var int) =res = a div b        # integer divisionremainder = a mod b  # integer modulo operationvarx, y: int
divmod(8, 5, x, y) # modifies x and y
echo(x)
echo(y)

在例子中,res和remainder是var参数。var参数可以通过过程修改,这个改变对于调用者是可见的。注意:上面的例子使用元组作为返回值而不是使用var参数作为返回值将会更好。

discard语句

调用一个带有返回值的过程仅仅是为了它的其他的作用,忽视它的返回值,一个discard语句必须使用。nim不允许默默地丢掉一个返回值:

discard yes("May I ask a pointless question?")

返回值会隐式的忽略如果调用的过程或者迭代器已经声明discardable编译指示:

proc p(x, y: int): int {.discardable.} =return x + yp(3, 4) # now valid

discard语句也可以在注释部分创建作为块注释的描述。

参数命名

一个过程通常有多个参数,而且参数出现的顺序并不是明确的。为一个过程构造了一个复杂的数据类型是非常正确的。因此一个过程的参数可以是命名的,以至于哪个实参属于哪个形参是明确的。

proc createWindow(x, y, width, height: int; title: string;show: bool): Window =...var w = createWindow(show = true, title = "My Application",x = 0, y = 0, height = 600, width = 800)

现在我们使用命名参数去调用createWindow过程的顺序参数已经没有问题了。命名参数和顺序参数的混合也是可以的,但是没有可读性:

var w = createWindow(0, 0, title = "My Application",height = 600, width = 800, true)

编译器检查每个形参确切地接收一个实参。

默认值

为了使createWindow过程易于使用它应该提供默认值,这些值将作为实参值如果调用者没有明确的指定它们:

proc createWindow(x = 0, y = 0, width = 500, height = 700,title = "unknown",show = true): Window =...var w = createWindow(title = "My Application", height = 600, width = 800)

现在调用createWindow仅仅需要不同于默认值的值。

注意:类型推断作用于参数有默认值;例如:这里没有必要写title: string = "unknown"。

过程重载

nim提供了与c++相似的重载过程的功能:

proc toString(x: int): string = ...
proc toString(x: bool): string =if x: result = "true"else: result = "false"echo(toString(13))   # calls the toString(x: int) proc    调用toString(x: int)过程
echo(toString(true)) # calls the toString(x: bool) proc   调用toString(x: bool)过程


(注意在nim中toString通常是$操作符)对于toString的调用编译器会选择最合适的过程。这个重载解析算法具体是怎样工作的不在这里讨论(它将在手册中详述)。然而,它不会引起糟糕的意外,它是基于一个非常简单的统一算法。模糊不清的调用将会报错。

操作符

nim库大量使用重载--对于这中情况一个原因是每一个操作符比如+只是一个重载的过程。解析器允许你以中缀表示法或者前缀表示法使用操作符。一个中缀操作符总是接收两个参数,一个前缀操作符只有一个参数。后缀操作符是不可能的,因为那是模棱两可的。例如:a @ @ b 意味着 (a) @ (@b) 还是 (a@) @ (b)?它总是意味着(a) @ (@b),因为在nim中没有后缀操作符。

除了一些内置的关键字操作符例如:and,or,not,操作符通常包含这些字符: + - * \ / < > = @ $ ~ & % ! ? ^ . |

用户定义的操作符是允许的。没什么阻止你定义你自己@!?+~操作符,但是可读性会遭到破坏。

操作符的优先级是由它的第一个字符决定的。相关细节可以在手册中找到。

为了定义一个新的操作符,用反单引号括起操作符:

proc `$` (x: myDataType): string = ...
# now the $ operator also works with myDataType, overloading resolution
# ensures that $ works for built-in types just like before 现在$操作符也作用于myDataType,重载决议使得$操作符为内置类型工作。


"``"标记可以用来调用一个操作符就像调用其他过程。

if `==`( `+`(3, 4), 7): echo("True")

提前声明

每个变量,过程等,在它可以使用之前需要声明。(这是编译效率的原因)。然而,对于相互递归过程不需要提前声明。

# forward declaration:
proc even(n: int): boolproc odd(n: int): bool =n == 1 or even(n-1)proc even(n: int): bool =n == 0 or odd(n-1)


这里odd依赖于even,反之亦然。因此even需要在它完全定义之前介绍给编译器。对于这样一个提前声明的语法是简单的,仅仅省略=和过程的主题

以后的语言版本可能会移除提前声明的需要。

这个例子也展示了一个过程的主体可以包含一个单一的表达式,它的值隐式的返回。



更多内容请参看Nim教程翻译(二)

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 主流ETL工具选型

    ETL(extract, transform and load)产品乍看起来似乎并不起眼,单就此项技术本身而言,几乎也没什么特别深奥之处,但是在实际项目中,却常常在这个环节耗费太多的人力,而在后续的维护工作中,更是往往让人伤透脑筋。之所以出现这种状况,恰恰与项目初期没有正确估计ETL工作、…...

    2024/4/24 23:33:18
  2. 【LeetCode】【Python题解】Pascal's Triangle

    Given numRows, generate the first numRows of Pascals triangle.For example, given numRows = 5, Return [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]要求输入一个整数,返回一个表示杨辉三角的数组。我的方法是计算通项公式,首先是编写阶乘函数,然后计算C00,C10,C11即可…...

    2024/4/27 21:23:21
  3. MVC3 使用动态生成的DropDownList,更新partial view

    Demo简述:使用动态生成的DropDownlist,动态更新partial viewControl 动态生成 DropdownList 的方法 public ActionResult Index(){var products = (from product in context.GetTable<Product>()select product).ToList();var categorys = (from category in context…...

    2024/4/14 21:07:17
  4. 用django搭建简易博客系统

    一、准备工作 安装Python和Django,我这里使用的是Python 2.7.11 和Django 1.9.8。安装完之后就可以开始啦!开启新的项目 $ django-admin startproject blogsite(网站工程名称) 成功以后生成项目文件夹,结构如下 blogsite /manage.pyblogsite /__init__.pysettings.pyurls.py…...

    2024/4/14 21:07:16
  5. STM32串口下载

    1、参考资料 《STM32F1开发指南-库函数版本》-3.4.2 STM32串口程序下载 2、PA9(T) PA10(R) 串口下载引脚 3、USB/串口转换电路 CH340 FLYMCU 4、下载硬件连接:PA9 和 PA10跳线帽 B0和B1和GND跳线帽 5、STM32的ISP下载,只能使用串口1,其他串口只能用作串口通信,不…...

    2024/4/23 6:00:33
  6. ARM学习之GPIO实现流水灯

    今天在学习MMU时的时候,写了一个流水灯程序。虽然很简单,但是不怕大家笑话,由于学C语言的时候没学位运算操作,再加上硬件实验做的少,所以实现这个也费了不少力气呢。/** leds.c: 循环点亮4个LED* 属于第二部分程序,此时MMU已开启,使用虚拟地址*/ #define GPFCON (*…...

    2024/4/18 7:04:03
  7. sublime下载安装教程

    1.进到官网:http://www.sublimetext.com/2.下载下载 sublime text 3。根据自己的选择合适的版本。 portable version”下载下来为sublime编辑器的包,解压后无需安装就能运行,直接创建桌面快捷键就好3.安装:选择把Sublime Text 3添加到资源管理器的右键菜单,推荐勾选...

    2024/4/14 21:07:13
  8. 目标检测bounding box图像标注教程(使用LabelImg标注工具)

    正在用深度学习做车牌识别,既没有现成数据,也拿不到交通摄像头和小区、停车场等门禁数据,所以只能是网上找一部分、上街拍一部份、爬虫爬一部分!!!总之,多多少少是有一些可以用的数据了。 当然,筛选出可以用的数据后还需要人工给数据样本进行标注,也就是手动标出图片中…...

    2024/4/14 21:07:12
  9. 学习ARM开发(6)

    学习ARM开发(6)上一次,说到要学习ARM汇编,好,现在就开始。目前我的引导程序是在UBOOT1.1.2上修改过来的,大家可以下载UBOOT的源程序,也许你们会问在那里有下呢?这个问题不用我回答了,用GOOGLE,直接找u-boot,就可以找到了。由于这个引导程序是从u-boot1.1.2修改过来的,…...

    2024/4/14 21:07:11
  10. Android 10分区存储介绍及百度APP适配实践

    背景 1. 分区存储背景介绍 Google于 2019年9月3日发布了Android10 release版本,为了更好的保护用户数据并限制设备冗余文件增加,Android 10版本变更了设备外部存储访问方式,外部存储新特性称为分区存储(Scoped Storage), 分区存储遵循以下三个原则对外部存储文件访问方式重…...

    2024/4/27 22:23:23
  11. 图片标注工具 LabelImg 使用教程

    转自:http://blog.csdn.net/jesse_mx/article/details/53606897 作者:Jesse_Mx ------------------------------------------------------------------------------------- 项目地址:LabelImg 前言 我们知道,图片标注主要是用来创建自己的数据集,方便进行深度学习训练。本…...

    2024/4/24 23:33:15
  12. MVC DropDownList 利用Ajax联动

    页面代码:<td style="text-align: right; width: 100px;"> 城市/区域: </td> <td style="width: 170px; text-align: left"> <%= Html.DropDownListFor(m => m.City, new SelectList(Test.TestPersistence.TestDao.GetCod…...

    2024/4/24 23:33:14
  13. Java 博客系统 Tale

    Tale 详细介绍TaleTale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的;中文你叫它 塌了 也无所谓 。Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu,如果觉得这个项目不错,请为它点赞支持。演示站点:https://tale.biezhi.me特性设计简洁,界…...

    2024/4/24 23:33:16
  14. PowerDesigner建模工具介绍与使用教程

    PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一。Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesigner则与其正好相反,它是以数据库建模起家,后来才发展为一款综合全面的Case工具。 PowerDesigner主…...

    2024/4/24 23:33:13
  15. Keil RL-ARM学习笔记

    RL-ARM是Keil MDK自带的Real-Time Library,其中包括RTX 内核(Real-Time eXecutive,实时操作系统)、RL-FlashFS(文件系统)、RL-TCPnet(TCP/IP协议栈)、RL-CAN(CAN总线函数库)和RL-USB(USB总线函数库)。不过目前好像用的人不多。 1. (2011.12.26 11:17) 移植注意事项除了按帮助…...

    2024/4/24 23:33:11
  16. CSDN扩展插件——个人签名档

    CSDN 不愧是个程序员密集的地方,到处弥散着技术气息,连发帖的编辑器都提供了插件扩展机制,利用它可以实现各种扩展的编辑功能。简单研究了一下,感觉的确是个不错的东西,使用简单,而且功能强大。着实佩服了一把!既然有这好东西,不用可惜了。想当初 SMTH BBS 都有“签名档…...

    2024/4/24 23:33:10
  17. Vue+PHP实现个人博客系统

    前言: 自从萌发了要做一个博客文章管理系统后,便在工作空闲时间不短的码代码,上网搜索一些疑问,可喜可贺,经过快两个月的努力,终于赶在了4月的第一天将这个系统上传到了虚拟主机中,当然还有很多的问题没完成,这个只能当成一个测试版本。项目简介: 名称:边泉博客管理平…...

    2024/4/24 23:33:09
  18. CSDN开博一周年--总结、感想和未来规划

    2012年9月22日,我在CSDN发表了第1篇博文-为了忘却的纪念,我的天龙游戏生涯。本文讲述了我大学期间玩网络游戏-天龙八部的故事。在大学期间,实际上我也有自己的帐号-huoyingfans,主要用来下载资料,偶尔发个帖子,这个旧帐号只发表了1篇文章,我最出色的文学作品-汉语四级考试…...

    2024/4/24 23:33:09
  19. ARM学习笔记001之arm-linux-gcc 4.3.2下载与安装

    下载arm-linux-gcc-4.3.2.tgz(84MB)安装交叉编译工具链: 1、首先以root用户登入 2、复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里3、解压命令[root@localhost ~]tar xvzf arm-linux-gcc-4.3.2.tgz -C /注意tgz和-C之间有空格,-C是大写,-C和/之间有空格注意:在进行解…...

    2024/4/24 23:33:10
  20. AnalyseReport--从实践中走出的报表工具

    注:本文图片所演示的数据均为随机数产生。 不求华丽的开篇语,只求平平淡淡认认真真如同流水般的记录一点东西。毕业到现在工作5年,一直都是在商业智能平台分析项目(以下简称BI)。因此多多少少对这类项目有些积累,从后台sql干到前台web,从开发干到设计,各类相关职位都有或多…...

    2024/4/24 23:33:07

最新文章

  1. 每日OJ题_DFS回溯剪枝⑧_力扣494. 目标和

    目录 力扣494. 目标和 解析代码&#xff08;path设置成全局&#xff09; 解析代码&#xff08;path设置全局&#xff09; 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联…...

    2024/4/28 6:30:02
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 第十二届蓝桥杯省赛真题(C/C++大学B组)

    目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…...

    2024/4/28 0:30:06
  4. 游戏引擎架构01__引擎架构图

    根据游戏引擎架构预设的引擎架构来构建运行时引擎架构 ​...

    2024/4/23 6:16:08
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57