Go:常量运算符流程控制

目录

一、常量

1.1 常量基本定义

1.2 常量组的定义

1.3 常量枚举

二、运算符

2.1 算数运算符

2.2 关系运算符

2.3 逻辑运算符

2.4 位运算符

2.5 赋值运算符

2.6 指针运算符

2.7 运算符优先级

三、流程控制

3.1 if-else 条件语句

3.2 switch-case语句

3.3 for 循环

3.3 break & continue

break

continue

break & continue 的区别

3.4 goto跳转

四、练习

4.1 九九乘法表

4.2 数字金字塔

4.3 斐波那契数列


        在学习编程的过程中,掌握常量、运算符和流程控制是理解和使用任何编程语言的基础。对于Go语言,这些概念同样至关重要。通过本笔记,我们将详细介绍Go语言中的常量、运算符以及流程控制的相关知识,帮助读者在实际编程中灵活运用这些基本概念。

一、常量

1.1 常量基本定义

        常量是在程序编译时就确定下来的固定值。它们可以是数值、布尔值或字符串。Go语言的常量具有以下特点

  1. 使用 const 关键字声明
  2. 在编译时被创建
  3. 只能是基本数据类型(数值、字符串或布尔值)
  4. 不可在运行时修改

注意

  • 一个常量被声明后可以不使用,但是变量一旦声明则必须使用。
  • 显式定义:常量的声明以关键字const开头,后接变量类型并进行赋值,行尾没有其他标点符号。const 常量名 常量类型 = value
  • 隐式定义:由于Go是编译型语言,定义常量时可以省略常量类型,因为编译器可以根据变量的值来推断其类型。const 常量名 = value
package mainimport "fmt"// 单个常量声明
const PI = 3.14159// 多个常量声明
const (StatusOK          = 200StatusNotFound    = 404StatusServerError = 500
)func main() {fmt.Println("PI:", PI)// 常量的数学运算fmt.Println("圆的面积 (半径为5):", PI*5*5)// 尝试修改常量会导致编译错误fmt.Println("HTTP状态码 - OK:", StatusOK)fmt.Println("HTTP状态码 - Not Found:", StatusNotFound)fmt.Println("HTTP状态码 - Server Error:", StatusServerError)
}
//result
PI: 3.14159
圆的面积 (半径为5): 78.53975
HTTP状态码 - OK: 200
HTTP状态码 - Not Found: 404
HTTP状态码 - Server Error: 500

1.2 常量组的定义

        如果程序需要用到大量值相同的常量,我们可以直接定义常量组。 在定义常量组时,若不提供初始值,则表示将使用上行的表达式。

package mainimport "fmt"const (a = 3.14bcd = 100
)func main() {fmt.Println("a:", a)fmt.Println("b:", b)fmt.Println("c:", c)fmt.Println("d:", d)
}
//result
a: 3.14
b: 3.14
c: 3.14
d: 100

1.3 常量枚举

        枚举通常针对一个有穷序列集而言,一个集的枚举就是列出有穷序列集的所有成员。Go语言现阶段还没有枚举,但是我们可以使用一种特殊常量“iota”来模拟枚举。

  iota 是Go语言的一个预定义标识符,它表示从0开始的连续整数。在每个const关键字出现时,iota都会重置为0。

package mainimport "fmt"func main() {const (a = iota    // 0b           // 1, 沿用上一行的 iotac = "Hello" // "Hello", iota = 2 但未使用d           // "Hello", 沿用上一行的表达式e = iota    // 4, iota 继续计数f           // 5g = iota * 2 // 12, iota = 6h            // 14, 沿用 iota * 2 表达式i = 1 << iota // 512, iota = 9,这是位运算j             // 1024, 沿用 1 << iota 表达式)fmt.Println("a:", a)fmt.Println("b:", b)fmt.Println("c:", c)fmt.Println("d:", d)fmt.Println("e:", e)fmt.Println("f:", f)fmt.Println("g:", g)fmt.Println("h:", h)fmt.Println("i:", i)fmt.Println("j:", j)// 在新的 const 块中 iota 重新从 0 开始const (k = iota // 0l        // 1_        // 2, 使用下划线跳过这个值m        // 3)fmt.Println("k:", k)fmt.Println("l:", l)fmt.Println("m:", m)// 在一行中使用多个 iotaconst (a1, a2 = iota + 1, iota + 2 // 1, 2b1, b2                      // 2, 3c1, c2                      // 3, 4)fmt.Printf("a1: %d, a2: %d\n", a1, a2)fmt.Printf("b1: %d, b2: %d\n", b1, b2)fmt.Printf("c1: %d, c2: %d\n", c1, c2)
}
//result
a: 0
b: 1
c: Hello
d: Hello
e: 4
f: 5
g: 12
h: 14
i: 256
j: 512
k: 0
l: 1
m: 3
a1: 1, a2: 2
b1: 2, b2: 3
c1: 3, c2: 4

二、运算符

        Go数据是通过使用操作运算符来进行操作的,与数学运算符类似。操作运算符接受一个或多 个参数,并生成一个新的值

2.1 算数运算符

算术运算符用于Go语言的数学表达式中,它们的作用和在数学中的作用一样。

运算符说明示例
+加法:相加运算符两侧的值a + b
-减法:左操作数减去右操作数a - b
*乘法:操作符两侧的值相乘a * b
/除法:左操作数除以右操作数a / b
%取模:左操作数除以右操作数的余数a % b
++自增:操作数加1a++
--自减:操作数减1a--
package mainimport "fmt"func main() {// 算术运算符a, b := 10, 3fmt.Printf("a = %d, b = %d\n", a, b)fmt.Printf("a + b = %d\n", a+b)fmt.Printf("a - b = %d\n", a-b)fmt.Printf("a * b = %d\n", a*b)fmt.Printf("a / b = %d\n", a/b)fmt.Printf("a %% b = %d\n", a%b)  //注意:要使用两个百分号,转意a++fmt.Printf("a = %d\n", a)b--fmt.Printf("b = %d\n", b)
}
a = 10, b = 3
a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1
a = 11
b = 2

2.2 关系运算符

        比较运算符,对符号两边的变量进行比较,包括大小、相等等。如果比较结果是正确,返回 真(true),否则返回假(false)

运算符说明示例
==等于:比较对象是否相等a == b
!=不等于:比较两个对象是否不相等a != b
大于:返回a是否大于ba > b
小于:返回a是否小于ba < b
>=大于等于:返回x是否大于等于yx >= y
<=小于等于:返回x是否小于等于yx <= y
package mainimport "fmt"func main() {// 关系运算符a, b := 10, 3fmt.Printf("a == b: %t\n", a == b)fmt.Printf("a != b: %t\n", a != b)fmt.Printf("a > b: %t\n", a > b)fmt.Printf("a < b: %t\n", a < b)fmt.Printf("a >= b: %t\n", a >= b)fmt.Printf("a <= b: %t\n", a <= b)
}
//result
a == b: false
a != b: true
a > b: true
a < b: false
a >= b: true
a <= b: false

2.3 逻辑运算符

运算符说明示例
&&逻辑与,当且仅当两个操作数都为真,条件才为真a && b
||逻辑或,两个操作数中任意一个为真,条件为真a || b
!逻辑非,用来反转操作数的逻辑状态。如果条件为true,则逻辑非运 算符将得到false! a
package mainimport "fmt"func main() {// 逻辑运算符x, y := true, falsefmt.Printf("x && y: %t\n", x && y)fmt.Printf("x || y: %t\n", x || y)fmt.Printf("!x: %t\n", !x)
}
//result
x && y: false
x || y: true
!x: false

2.4 位运算符

运算符名称描述示例
&按位与两个位都为1时,结果为11100 & 1010 = 1000
|按位或至少一个位为1时,结果为11100 | 1010 = 1110
^按位异或两个位不同时,结果为11100 ^ 1010 = 0110
^按位非(一元)翻转所有位^1100 = 0011
<<左移将位向左移动指定数量1100 << 2 = 110000
>>右移将位向右移动指定数量1100 >> 2 = 0011
&^位清空(AND NOT)清除指定的位1100 &^ 1010 = 0100
package mainimport ("fmt"
)func main() {a := 60 // 二进制: 0011 1100b := 13 // 二进制: 0000 1101fmt.Printf("a = %d, binary: %08b\n", a, a)fmt.Printf("b = %d, binary: %08b\n", b, b)// 1. 按位与 (&)result := a & bfmt.Printf("a & b  = %d, binary: %08b\n", result, result)// 2. 按位或 (|)result = a | bfmt.Printf("a | b  = %d, binary: %08b\n", result, result)// 3. 按位异或 (^)result = a ^ bfmt.Printf("a ^ b  = %d, binary: %08b\n", result, result)// 4. 按位非 (^)result = ^afmt.Printf("^a     = %d, binary: %08b\n", result, uint8(result))// 5. 左移 (<<)result = a << 2fmt.Printf("a << 2 = %d, binary: %08b\n", result, result)// 6. 右移 (>>)result = a >> 2fmt.Printf("a >> 2 = %d, binary: %08b\n", result, result)// 7. 位清空 (&^)result = a &^ bfmt.Printf("a &^ b = %d, binary: %08b\n", result, result)
}
//result
a = 60, binary: 00111100
b = 13, binary: 00001101
a & b  = 12, binary: 00001100
a | b  = 61, binary: 00111101
a ^ b  = 49, binary: 00110001
^a     = -61, binary: 11000011
a << 2 = 240, binary: 11110000
a >> 2 = 15, binary: 00001111
a &^ b = 48, binary: 00110000

2.5 赋值运算符

        最常用的赋值运算符是等号“=”,表示把右边的结果值赋值给左边的变量。其他的赋值运算 符大多都是算术运算符和赋值运算符的简写。

运算符说明示例展开形式
=将右边值赋给左边a=100a=100
+=将左边值加上右边值a+=10a=a+10
-=将左边值减去右边值a-=10a=a-10
*=将左边值乘以右边值a*=10a=a*10
/=将左边值除以右边值a/=10a=a/10
%=将左边值对右边值做取模a%=10a=a%10
**=将左边值的右边值次方赋给左边a**=2a=a**2
//=将左边值除以右边值(取整除)a//=3a=a//3
&=按位与运算后赋值a&=5a=a&5
|=按位或运算后赋值a|=5a=a|5
^=按位异或运算后赋值a^=5a=a^5
>>=右移运算后赋值a>>=2a=a>>2
<<=左移运算后赋值a<<=2a=a<<2
package mainimport "fmt"func main() {var a int = 100fmt.Println("Initial value of a:", a)a += 10fmt.Println("After a += 10:", a)a -= 5fmt.Println("After a -= 5:", a)a *= 2fmt.Println("After a *= 2:", a)a /= 4fmt.Println("After a /= 4:", a)a %= 7fmt.Println("After a %= 7:", a)// Go doesn't have **= operator, so we'll use regular multiplicationa *= afmt.Println("After a *= a (simulating a **= 2):", a)// Go uses / for both float and integer divisiona /= 3fmt.Println("After a /= 3:", a)a &= 5fmt.Println("After a &= 5:", a)a |= 8fmt.Println("After a |= 8:", a)a ^= 3fmt.Println("After a ^= 3:", a)a >>= 1fmt.Println("After a >>= 1:", a)a <<= 2fmt.Println("After a <<= 2:", a)
}
//result
Initial value of a: 100
After a += 10: 110
After a -= 5: 105
After a *= 2: 210
After a /= 4: 52
After a %= 7: 3
After a *= a (simulating a **= 2): 9
After a /= 3: 3
After a &= 5: 1
After a |= 8: 9
After a ^= 3: 10
After a >>= 1: 5
After a <<= 2: 20

2.6 指针运算符

运算符描述示例
&返回变量的内存地址

&a

// 将给出变量a的实际地址

*指向变量。用于声明指针类型或访问指针指向的值

*p

// 是一个指针变量

^

一元运算符时:对整数按位取反(NOT)

二元运算符时:按位异或(XOR)

^a   // 对a的所有位取反

a ^ b  // a和b按位异或

package mainimport "fmt"func main() {a := 10var p *intp = &afmt.Println("a =", a)fmt.Printf("变量a的地址: %p\n", p)fmt.Println("指针p指向的值:", *p)
}
//result
a = 10
变量a的地址: 0xc00000a0b8
指针p指向的值: 10

2.7 运算符优先级

优先级运算符
5* / % << >> & &^
4+ - | ^
3== != < <= > >=
2&&
1||
  • 最高优先级(5级):
    • */%:乘、除、取模
    • <<>>:左移、右移
    • &:按位与
    • &^:按位清零(AND NOT)
  • 次高优先级(4级):
    • +-:加、减
    • |:按位或
    • ^:按位异或
  • 比较运算符(3级):
    • ==!=:等于、不等于
    • <<=>>=:小于、小于等于、大于、大于等于
  • 逻辑与(2级):
    • &&
  • 逻辑或(1级):
    • ||

三、流程控制

        与其他编程语言一样,使用Go语言的编程者需要通过流程控制语句来控制程序的逻辑走向和 执行次序。 Go语言基本上继承了C/C++语言所有流程控制语句,如果有C/C++的编程经验,那么理解本章内容将较为轻松。

        流程控制语句主要包括:条件判断语句(if、switch和select)、循环控制语句(for、break和continue) 和跳转语句(goto)。selects是用于处理多个通道操作,以后结合通道在学

3.1 if-else 条件语句

用于根据条件执行不同的代码块。

if condition {// 条件为真时执行
} else if anotherCondition {// 另一个条件为真时执行
} else {// 所有条件都为假时执行
}

特点:

  • 条件表达式不需要括号
  • 支持在 if 语句中声明局部变量

条件表达式使用例子

以下程序引入了runtime包,使用NumCPU()函数获取了程序使用的CPU核数并传递给num变量。

package mainimport ("fmt""runtime"
)func main() {if num := runtime.NumCPU(); num >= 1 {fmt.Println("程序使用的CPU核数为:", num)}
}
//result
程序使用的CPU核数为: 16

3.2 switch-case语句

switch语句常用于基于大量不同条件来执行不同动作,每一个条件对应一个case分支。  

switch语句的执行过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。

 每一个switch语句只能包含一个可选的default分支,若没有找到匹配项,会默认执行default分支 中的代码块

switch variable {
case value1:// 代码块
case value2,value3:// 代码块
default:// 默认代码块
}

        变量varible可以是任何类型,但value1和value2必须是相同的类型或最终结果为相同类型的表达式。每个case分支后可跟多个可能符合条件的值,使用逗号分隔它们,例如:case value2, value3

特点:

  • 默认情况下,case 语句后不需要 break
  • 支持多个条件在同一个 case 中
  • 支持 fallthrough 关键字实现穿透到下一个 case

使用fallthrough的例子

package mainimport "fmt"func main() {switch {//false,肯定不会执行case false:fmt.Println("case1 为false")fallthrough//true,肯定执行case true:fmt.Println("case2 为 true")fallthrough//由于上一个case中有fallthrough,即使是false,也强制执行case false:fmt.Println("case3 为 false")fallthroughdefault:fmt.Println("默认 case")}
}
//result
case2 为 true
case3 为 false
默认 case

3.3 for 循环

Go 只有一种循环结构:for 循环。不同于其他编程语言,Go语言没有while关键字,不存在while循环

// 标准 for 循环
for i := 0; i < 10; i++ {// 循环体
}// 类似 while 循环
for condition {// 循环体
}// 无限循环
for {// 循环体
}// 遍历数组、切片或 map
for index, value := range collection {// 使用 index 和 value
}

3.3 break & continue

  breakcontinue 是Go语言中用于控制循环执行的关键字。它们可以改变循环的正常执行流程,但有着不同的作用。

Go 没有 do-while 循环,所以 breakcontinue 主要用在 for 循环中。

break

在 for 循环中:

for i := 0; i < 10; i++ {if i == 5 {break}fmt.Println(i)
}
// 输出: 0 1 2 3 4

在 switch 语句中:

switch n {
case 1:fmt.Println("一")
case 2:fmt.Println("二")breakfmt.Println("这行不会执行")
default:fmt.Println("其他")
}

Go 支持带标签的 break,可以跳出多层嵌套循环:

package mainimport "fmt"func main() {
outerLoop:for i := 0; i < 3; i++ {for j := 0; j < 3; j++ {if i == 1 && j == 1 {break outerLoop}fmt.Printf("%d %d\n", i, j)}}
}
//result
0 0
0 1
0 2
1 0

continue

continue 语句用于跳过当前循环的剩余部分,直接进入下一次迭代。

基本用法

for i := 0; i < 5; i++ {if i == 2 {continue}fmt.Println(i)
}
// 输出: 0 1 3 4

标签用法,类似于break

package mainimport "fmt"func main() {
outerLoop:for i := 0; i < 3; i++ {for j := 0; j < 3; j++ {if i == 1 && j == 1 {continue outerLoop}fmt.Printf("%d %d\n", i, j)}}
}
// result
// 0 0
// 0 1
// 0 2
// 1 0
// 2 0
// 2 1
// 2 2

break & continue 的区别

  1. break 终止整个循环,而 continue 只跳过当前迭代。
  2. break 可以用在 for 循环和 switch 语句中,而 continue 只用在循环中。
  3. 带标签的 break 可以跳出多层循环,而带标签的 continue 会跳到外层循环的下一次迭代。

3.4 goto跳转

goto语句用于代码间的无条件跳转,格式如下:

goto label
// ... 其他代码 ...
label:// 跳转到这里

一般情况下,在程序中不建议使用goto语句,过多的goto语句会破坏程序结构,使程序的可读 性变差。

package mainimport "fmt"func main() {fmt.Println("Hello")goto signfmt.Println("无效代码")
sign:fmt.Println("world")
}
//result
Hello
World

四、练习

4.1 九九乘法表

实现的效果

1 * 1 =  1  
1 * 2 =  2  2 * 2 =  4  
1 * 3 =  3  2 * 3 =  6  3 * 3 =  9  
1 * 4 =  4  2 * 4 =  8  3 * 4 = 12  4 * 4 = 16  
1 * 5 =  5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25  
1 * 6 =  6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  
1 * 7 =  7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49  
1 * 8 =  8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64  
1 * 9 =  9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81  
package mainimport "fmt"func main() {// 遍历1到9的乘法表for i := 1; i <= 9; i++ {for j := 1; j <= i; j++ {fmt.Printf("%d * %d = %2d  ", j, i, i*j)}fmt.Println()}
}

4.2 数字金字塔

实现的效果

        ****************************************************************
*****************
package mainimport "fmt"func Pyramid(n int) {// n 表示总层数for i := 1; i <= n; i++ {// 打印空格for j := 1; j <= n-i; j++ {fmt.Print(" ")}// 打印星号for k := 1; k <= 2*i-1; k++ {fmt.Print("*")}fmt.Println()}
}func main() {n := 9Pyramid(n)
}

4.3 斐波那契数列

斐波那契数列,又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)

以兔子繁殖为例子而引入,故又称为兔子数列,指的是这样一个数列:1、1、2、3、5、8、13、 21、34……这个数列从第三项开始,每一项都等于前两项之和。斐波那契数列在现代物理、准晶 体结构、化学等领域都有直接的应用。 那么,我们是否可以编写一个斐波那契数列的程序,输入第n项,程序输出对应第n项的值? 答案是肯定的,最常见的实现方式就是循环和递归。

前20个例子:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 

使用for循环实现斐波那契数列的程序如下:

package mainimport "fmt"func Fibonacci(n int) (res int) {a := 1b := 1for i := 2; i < n; i++ {c := bb = a + ba = c}return b
}func main() {n := 9fmt.Printf("Fibonacci(%d) = %d\n", n, Fibonacci(n))
}
//result
Fibonacci(9) = 34

使用递归实现斐波那契数列的程序如下:

package mainimport "fmt"func Fibonacci(n int) (res int) {if n == 1 || n == 2 {return 1} else {return Fibonacci(n-2) + Fibonacci(n-1)}
}func main() {n := 10fmt.Printf("Fibonacci(%d) = %d\n", n, Fibonacci(n))
}
//result
Fibonacci(10) = 55

使用switch分支来进行代替:

package mainimport "fmt"func Fibonacci(n int) (res int) {switch n {case 1:return 1case 2:return 1default:return Fibonacci(n-1) + Fibonacci(n-2)}
}func main() {n := 6fmt.Printf("Fibonacci(%d) = %d\n", n, Fibonacci(n))
}
//result
Fibonacci(6) = 8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44876.shtml

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

相关文章

5、 测试

这里写目录标题 1、自动化测试简介&#xff08;1&#xff09;自动化测试是什么&#xff08;2&#xff09;为什么要写测试测试节约你的时间发现错误&#xff0c;预防错误测试使得代码更有吸引力 2、基础测试策略3、开始写第一个测试&#xff08;1&#xff09;首先得有个bug&…

Not Invented Here 不是在这里发明的 / Proudly found elsewhere 自豪地在其他地方找到

注&#xff1a; 机翻&#xff0c;未校对。 两篇关于创新管理的小文章 Not Invented Here 不是在这里发明的 In the history of organizational success, the enterprises that dominate tend to flawlessly execute on ideas that were created elsewhere. Examine just abo…

智慧水利解决方案:从理论到实践的全面跨越,展示其在水资源管理、水灾害预警、水生态保护等方面的创新应用

目录 一、引言&#xff1a;智慧水利的时代背景与意义 二、智慧水利的理论框架与技术体系 1、理论框架 2、技术体系 三、智慧水利在水资源管理中的应用 1、水资源优化配置 2、水量水质协同管理 四、智慧水利在水灾害预警中的应用 1、洪水预警与应急响应 2、干旱监测与评…

git 创建分支--命令行

在Git中创建分支是一个相对简单且重要的操作&#xff0c;它允许开发者在不影响主代码库的情况下进行开发或修复工作。以下是创建Git分支的步骤&#xff1a; 一、基本步骤 打开命令行终端&#xff1a; 首先&#xff0c;需要打开命令行终端&#xff08;在Windows上可以是CMD、Po…

Mediapipe-姿态估计实例

Mediapipe简介 Mediapipe 是由 Google Research 开发的一款开源框架&#xff0c;旨在帮助开发者轻松地构建、测试和部署复杂的多模态、多任务的机器学习模型。它特别擅长于实时处理和分析音频、视频等多媒体数据。以下是 Mediapipe 的一些关键特点和组件&#xff1a; 关键特点…

基于微信小程序的音乐播放平台

基于微信小程序的音乐播放平台 音乐播放小程序项目简介技术栈功能模块项目流程系统E-R图项目页面 音乐播放小程序 项目简介 微信音乐小程序旨在提供一个简洁高效的音乐播放平台&#xff0c;用户可以方便地搜索、播放和收藏自己喜欢的音乐。整个项目采用前后端分离的架构&…

WIN10开机突然,过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL

环境&#xff1a; Win10 专业版 DELL7080 问题描述&#xff1a; WIN10开机突然&#xff0c;过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL 事件日志 解决方案&#xff1a; 1.找到MEMORY.DMP文件内容&#xff0c;分析一下 Microsoft (R) Windows Debugger Version 10…

主机安全-开源HIDS字节跳动Elkeid安装使用

目录 概述什么是HIDSHIDS与NIDS的区别EDR、XDR是啥&#xff1f; Elkeid架构Elkeid Agent && Agent centerElkeid DriverElkeid RASPElkeid HUBService DiscoveryManager安装数据采集规则&告警 参考 概述 什么是HIDS HIDS&#xff08; host-based intrusion detec…

使用Gitee仓库镜像管理功能实现Gitee与Github 双向同步

进入你所需要同步的仓库&#xff0c;点击「管理」->「镜像仓库管理」&#xff0c;点击「添加镜像」选项&#xff1b; 如果你的Gitee账号还没有绑定过 GitHub 帐号&#xff0c;先根据弹窗的提示绑定 GitHub 帐号&#xff1b; 添加镜像时候&#xff0c;在「镜像方向」中选择…

二次开发源码 借贷系统uniapp/借贷认证系统/小额信贷系统/工薪贷APP/资金贷系统h5

前端&#xff1a;UNIAPP 后端&#xff1a;ThinkPHP 数据库&#xff1a; Mysql 前端使用的uniapp 可以打包APP H5 小程序 系统提供了完善的网络借贷体系&#xff0c;为金融中介平台提供从获客到贷后管理全流程服务&#xff0c;解决了借贷手续繁琐、流程缓慢等问题 此源码为运营…

ES6操作符使用总结

最近做新项目时候用到了ES6 添加的一些运算符&#xff0c;使用起来很方便&#xff0c;简化了代码&#xff0c;增强了代码容错性。使用感不错&#xff0c;下面做了总结&#xff0c;本文也会持续维护。 1. !!props.useDefaultColor 这个技巧的作用是将任何 JavaScript 值转换为…

管理Linux本地用户和组

什么是用户 用户账户在可以运行命令的不同人员和程序之间提供安全界限。 在Linux系统中&#xff0c;系统通过分配唯一的标识号&#xff08;用户ID或UID&#xff09;来区分不同的用户帐户。 在Linux系统中&#xff0c;用户帐户有以下三种主要类型&#xff1a; 超级用户 负责…

分布式一致性算法:Raft学习

分布式一致性算法&#xff1a;Raft学习 1 什么是分布式系统&#xff1f; 分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。这些节点可能位于不同的物理位置&#xff0c;但它们协同工作以提供一个统一的计算平台或服务。分布式系统…

对于复杂的数学模型,怎样利用 MATLAB 的优化工具箱进行准确的参数估计和模型拟合?

要利用MATLAB的优化工具箱进行准确的参数估计和模型拟合&#xff0c;可以按照以下步骤进行&#xff1a; 定义模型&#xff1a;根据问题的需求和数学模型的形式&#xff0c;定义好模型的数学表达式。 收集数据&#xff1a;收集实际观测数据&#xff0c;这些数据将用于拟合模型和…

Ubuntu linux安装新版本go

加速网站&#xff1a;GOPROXY.IO - A Global Proxy for Go Modules 下载地址&#xff1a;All releases - The Go Programming Language Ubuntu jammy版本里面自带的go版本较低&#xff0c;build ollama的时候报错&#xff0c;于是升级go 升级操作 从上面下载地址找到自己需…

25秋招面试算法题 (Go版本)

文章目录 科大讯飞 0713找01不能出现太多 科大讯飞 0713 找01 牛牛拥有一个长度为 n 的01 串&#xff0c;现在他想知道&#xff0c;对于每个字符&#xff0c;在它前面的最近的不同字符的下标是多少&#xff1f; 输入描述 本题为多组测试数据&#xff0c;第一行输入一个正整…

代码随想录第五十五天打卡

42. 接雨水 接雨水这道题目是 面试中特别高频的一道题&#xff0c;也是单调栈 应用的题目&#xff0c;大家好好做做。 建议是掌握 双指针 和单调栈&#xff0c;因为在面试中 写出单调栈可能 有点难度&#xff0c;但双指针思路更直接一些。 在时间紧张的情况有&#xff0c;能写出…

Unity中一键生成具有身体感知的虚拟人物动作

在虚拟现实(VR)和增强现实(AR)的浪潮中&#xff0c;如何让虚拟人物的动作更加自然、真实&#xff0c;已经成为一个重要课题。AI4Animation项目&#xff0c;一个由 Sebastian Starke 主导的开源框架&#xff0c;为Unity开发者提供了强大的工具集&#xff0c;以实现这一目标。本文…

OrangePi AIpro在安防领域的深思和实战(旷视科技CNN模型ShuffleNetV1开发案例测试)

一、前言 公司最近有个项目是安防领域的&#xff0c;主要用在边缘结点&#xff0c;虽然已做成形&#xff0c;但是还是存在一些缺陷&#xff0c;例如&#xff1a;算力问题&#xff0c;开发板的成熟问题&#xff0c;已经各种技术的解决方案落地问题。目前我们集成了很多功能&…

Facebook 开源计算机视觉 (CV) 和 增强现实 (AR) 框架 Ocean

Ocean 是一个独立于平台的框架&#xff0c;支持所有主要操作系统&#xff0c;包括 iOS、Android、Quest、macOS、Windows 和 Linux。它旨在彻底改变计算机视觉和混合现实应用程序的开发。 Ocean 主要使用 C 编写&#xff0c;包括计算机视觉、几何、媒体处理、网络和渲染&#x…