go学习-指针 标识符
指针,以及标识符
1.指针
(1).基本介绍
1)基本数据类型,变量存的值,也叫值类型
2)获取变量的地址用&,比如 var num int ,获取num的地址:&num
3)指针类型,变量存的是一个地址,这个地址指向的空间存的才是真正值,比如: var ptr *int =&num
4)获取指针类型所指的值,使用*,比如:var *ptr int,使用 *ptr获取p指向的值
5)举例说明
package mainimport("fmt"
)
//演示golang中的指针类型
func main(){//基本数据在内存的布局var i int = 10 // i的地址是多少 &ifmt.Println("i的地址=",&i) //结果为:i的地址= 0xc04205e058//1.a是一个指针变量//2. a的类型是 *int//3.a 本身就是 &ivar a *int =&ifmt.Println("i的值是",i) //10fmt.Println("a存放的值是",a)//0xc04205e058fmt.Println("a指向的值是",*a)//10fmt.Println("指针本身的地址是",&a)//0xc04207c020或者可以使用printf()进行格式化输出}
内存布局图:
关于指针的内存布局操作
练习,通过指针修改所存变量地址中存放的值
package mainimport("fmt"
)func main(){
var a int =999
fmt.Println("a的地址是",&a)
fmt.Println("指针修改之前a的值是",a)
var prt *int = &a
fmt.Println("prt的值是",*prt)
*prt = 23 //通过指针去修改a变量的值
fmt.Println("prt的值是",*prt)
fmt.Println("通过指针修改后这个a的值是",a)}
判断对错
func main(){
var a int = 300
var ptr *int =a //错误应该是 &a
}func main(){
var a int = 300
var prt *float32 = &a //错误,类型不一致,不应该是float
}func main(){
var a int =300
var b int =400var ptr *int =&a
*ptr = 100 //a=100
ptr = &b //存放b的地址
*ptr = 200 //b=200
fmt.Printf("a=%d, b=%d,*ptr=%d",a,b,*ptr)}
(2)指针的细节说明
1)值类型,都有对应的指针类型,形式为:“数据类型”,比如int 的对应的指针就是 * int,而float32对应的指针类型就是 *float32 ,以此类推
2)值类型:基本数据类型int系列,float系列,bool string \数组和结构体struct
2.值类型和引用类型
(1)说明:
1)值类型:基本数据类型int系列,float系列,bootl,string、数组和结构体struct
2)引用类型:指针,slice切片、map、管道chan,interface等都是引用类型
(2)值类型和引用类型的区别
1)值类型:变量直接存储,内存通常在栈中分配
2)引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆中分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾由GC来回收
3.标识符的命名规范
(1).标识符概念
1)golang对各种变量、方法等命名时使用的字符序列称为标识符
2)凡是自己可以起名字的地方都叫标识符
(2).标识符的命名规则(6点)
1)由26个英文字母大小写,0~9,下划线—组成
2)数字不可以开头
3)Golang中严格区分大小写
4)标识符不能包含空格
5)下划线"—"本身在go中是一个特殊字符,称为空标识符,可以代表任何其他的标识符,但是它对应的值会忽略(比如,忽略某个返回值),所以仅能被作为占位符使用不能作为标识符使用
6)不能以系统保留关键字作为标识符,比如break、if等等…
package mainimport "fmt"//演示golang中标识符的使用
func main() {//严格区分大小写var num int = 10var Num int = 20fmt.Printf("num=%v,Num=%v",num,Num) //10 20//标识符中不能含有空格
// var ab c int = 30 //会报错//_是空标识符,用于占用
// var _ int =40 // erro}
(3)go中的保留字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cm24KPYQ-1693040914579)(D:\myfile\后端\go语言学习\pic\关键字.jpg)]
标识符的案例
hello //OK
hello12 //OK
1hello //erro 不能以数字开头
h-b //erro 不能使用-
x h //erro 不能有空格
h_4 //ok
_ab //ok
int //ok 不推荐,甚至不要去用,语法通过不推荐使用
var int int =10
fmt.Println("int的值",int)//10success
float32 //ok
_ //erro
Abc //ok
(4)标识符命名注意事项
1)包名:保持package的名字和目录保持一致,尽量采取有意义的包名,简短,有意义不要和标准库冲突
2)变量名、函数名、常量名,采用驼峰法
var stuName string ="Tom"
var goodPrice int32 =124//第一个单词字母小写往后的单词采用大写的形式
3)如果使用变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用(可以简单理解成,首字母大写是公有的,首字母小写是私有的)
预定标识符
保留关键字的介绍:
(5)运算符:
运算符是一种特殊的符号,用以表示数据的运算,赋值和比较等
1)算术运算符
主要是对数值型的变量进行运算,比如加减乘除,在Go程序中使用最多
package mainimport("fmt"
)func main() {
//重点讲解 /,%
//如果参与运算的数都是整数,那么除后,去掉小数部分,保留整数部分。不会四舍五入
fmt.Println(10/4) //是2不是2.5
var n1 float32 = 10 /4 //?结果也是2
fmt.Println(n1)//如果我们需要保留小数部分,则需要有浮点数参与运算
var n2 float32 = 10.0 /4
fmt.Println(n2) //2.5
}
//演示%的用法
//演示 % 的使用
//看一个公式 a%b=a - (a/b) *b
fmt.Println("10%3=",10 % 3) //结果余数是1
fmt.Println("-10%3=",-10 % 3) //结果余数是-1 : -10 - [(-10)/3]*3 =-10 -(-9)=-1
fmt.Println("10%-3=",10 % -3) //结果余数是 1
fmt.Println("-10%-3=",-10 % -3) //结果余数是 -1
//演示 ++ --
var i int = 10
i++ //等价 i = i+1
fmt. Println("i的值是",i) //11
i-- //等价i = i -1
fmt. Println("i的值是",i) //10
(6)细节说明:
1)对于除号 ”/“,他的整数和小数除是有区别的,整数之间做除法时,只保留整数部分而舍弃小数部分,例如 x := 19/5 结果是3
2)当对一个数取模式时,可以等价 a%b =a- a/b *b,这样我们就可以看到取模的本质运算
3)Golang的自增自减只能作为一个独立语言时,不能这样使用 b :=a++或者b :=a–
4)Golang的++和–只能写在变量的后面,不能写在变量的前面,既:a++ a–没有++a 或者–a
5)Golang的设计者去掉c/java中的自增自减的容易混淆的写法让Golang的语法更加简洁统一
练习:
(1)假如还有97天放假 问 xx个星期零xx天
(2)定义一个变量保存华氏温度,华氏温度转换为摄氏温度的公式是:5/9*(华氏温度-100)求出华氏温度对应的摄氏温度
package mainimport ("fmt"
)func main(){//题1var day int =97var week int = day/7var mo int = day%7
fmt.Printf("还有%d天放假,是%d个星期%d天",day,week,mo)var huashi float32 = 134.2
var sheshi float32 = 5.0 / 9 * (huashi - 100)
fmt.Printf("%v对应的摄氏温度=%v",huashi,sheshi) 19
}
2)赋值运算符
介绍
赋值运算符就是将某个运算后的值,赋给指定的变量
赋值运算符的分类:
案例演示
(1)赋值基本案例
(2)有两个变量,a和b ,要求将其交换,最终打印结果
(3)+=的使用案例
package mainimport ("fmt")func main() {//赋值运算符的使用演示// var i int // i = 10 //基本赋值//有两个变量,a和b要求将其进行交换,最终打印结果//a =9 b=2 ==>a =2 b =9a := 9b := 2//定义一个临时变量t :=aa =bb =tfmt.Printf("交换后的情况如下 a=%v,b=%v",a,b)//复和赋值的操作a +=7 //等价 a = a+7fmt.Println("a+=7的值为",a)}
赋值运算符的特点
(1)运算顺序从右往左
(2)赋值运算符的左边只能是变量 ,右边 可以是变量、表达式、常量值
(3)复合运算符等价于下面的效果
a+=3 a=a+3
3)比较运算符/关系运算符
(1)关系运算符的结果都是bool型,也就是要么为true,要么为false
(2)关系表达式经常用字在if结构中或者循环条件中
关系运算符一览表
细节说明
- 关系运算符的结果都是bool型,也就是要么为true,要么为false
- 关系运算符组成的表达式,我们称为关系表达式 a>b
- 比较运算符”==“不能写成 “=”
面试题
package mainimport("fmt"
)
func main(){//有两个变量a和b,要求将其进行交换,但是不允许使用中间变量,最终打印效果var a int = 10var b int = 20a = a + b //30 b = a - b // 10a = a -b //30-10 =20fmt.Printf("a=%v和b=%v",a,b) //20 和 10
}
4)逻辑运算符
介绍
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个bool值
逻辑运算一览表:
案例演示
package main
import ("fmt"
)func main() {//演示如何使用逻辑运算符var age int =40if age > 30 && age < 50{fmt.Println("ok1")}if age > 30 && age < 40{fmt.Println("ok2")}//演示逻辑或的使用 ||if age > 30 || age < 50{fmt.Println("ok3")}if age > 30 || age < 40{fmt.Println("ok4")}//演示逻辑非的使用 !if !(age > 30) {fmt.Println("ok5") //不输出}
}
注意事项和使用细节
- &&也叫短路与,如果第一个条件为false,则第二个条件不会判断,最终结果为false
- ||也叫短路或,如果第一个条件为true,则第二个条件不会判断,最终结果为true
案例演示:
//声明一个测试函数(测试)
func test() bool {fmt.Println("test....")
return true
}func main() {var i int = 10//短路与的//说明:i<9 这个为false 第二条件根本不会去判断不会调用test函数if i < 9 && test(){fmt.Println("ok")}//短路或//说明:i>9 这个为true 第二条件根本不会去判断不会调用test函数if i > 9 || test(){fmt.Println("ok")}
运算符的优先级
(1)运算符有着不同的优先级,所谓优先级就是表达式运算中的运算顺序,如下表,上一行运算符总优先于下一行
(2)只有单目运算符、赋值运算符是从右往左运算的
(3)大致的顺序整理
- 括号,++.–
- 单目运算
- 算术运算符
- 移位运算
- 关系运算
- 位运算
- 逻辑运算符
- 赋值运算符
- 逗号
6)其他运算符
位运算符
课堂练习
(1)两个数的最大值
(2)求三个数的最大值
func main() {//求两个数的最大值var n1 int =10var n2 int =40var max intif n1 > n2{max =n1}else{max =n2}fmt.Println("两个数的最大值为:",max)//求出三个数的最大值//先求出两个数的最大值然后让第三个数取比较var n3 int =45if n3 > max {max =n3}fmt.Println("三个数中的最大值是=",max)
}
键盘输入语句
介绍
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取’
步骤:
1)导入fmt包
2)调用fmt包的fmt.Scanln()或者fmt.Scanf()
案例演示:
要求:可以从控制台上接受用户信息。[姓名,年龄,薪水,是否通过考试]
1)使用fmt.Scanln()获取
fmt.Println("请输入姓名")//当程序执行到fmt.Scanln(name)是,程序会停止运行,并等待用户的输入fmt.Scanln(&name)fmt.Println("请输入年龄")fmt.Scanln(&age)fmt.Println("请输入薪水")fmt.Scanln(&sal)fmt.Println("是否通过考试")fmt.Scanln(&isPass)fmt.Printf("名字是%v \n 年龄是%v \n 薪水是 %v \n 是否通过考试 %v ",name,age,sal,isPass)
2)使用fmt.Scanf()获取
/方式2.一次性输入这些信息 fmt.Scanf()可以按指定的格式输入信息
fmt.Println("姓名,年龄,薪水,是否通过考试,输入时采用空格隔开")
fmt.Scanf("%s %d %f %t ",&name,&age,&sal,&isPass)
fmt.Printf("名字是%v \n 年龄是%v \n 薪水是 %v \n 是否通过考试 %v ",name,age,sal,isPass)
4.go语言机制转换
1)进制介绍
-
二进制 : 0,1 满2进1在golang中不能直接使用二进制表示一个整数,因为他沿袭了C语言的风格要输出就%b
-
十进制:0~9满10进1
-
八进制:0~7满8进1,以数字0开头表示
-
十六进制:0~9A-F满16进1以0x或0x开头表示
此处A~F不区分大小写
如:0x21AF+1=02x21B0
2)案例使用
func main(){var i int =5;fmt.Printf("%d的二进制是%b\n",i,i) //输出的结果是:5的二进制是101//八进制:0~7,满8进1,以数字0开头进行表示var j int = 011fmt.Println("j=",j) //9//0~9及A-F以0x或0X表示var k int = 0x11fmt.Println("k=",k) //17}
进制转换的介绍
第一组(其他进制转换为十进制)
1)二进制转十进制
规则:从最低位开始(右边的),将每个位上的数提取出来,乘以2的(位数-1)次方然后求和
案例:请将二进制:1011转成十进制的数
1011=1*1+1*2+0*2*2+1*2*2*2=1+2+0+8=11
2)八进制转十进制
规则:从最低位开始(右边的),将每个位上的数提取出来,乘以8的(位数-1)次方然后求和
请将0123转成十进制的数
3+2*8+1*8*8=83
3)十六进制转十进制
规则:从最低位开始(右边的),将每个位上的数提取出来,乘以8的(位数-1)次方然后求和
请将0x34A转成十进制的数
10+4*16+3*16*16=842
第二组(十进制转其他进制)
1)十进制转二进制
规则:将该数不断除于2,直到商为0为止,然后将得到的余数倒过来就是对应的二进制
案例;请将56转成2进制
2)十进制转八进制
规则:将该数不断除于8,直到商为0为止,然后将得到的余数倒过来就是对应的二进制
3)十进制转十六进制
规则:将该数不断除于16,直到商为0为止,然后将得到的余数倒过来就是对应的二进制
第三组
1)二进制转八进制
规则:将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可
案例将二进制 11010101转成八进制
11010101=0325
2)二进制转十六进制
规则:将二进制每四位数一组(从低位开始组合),转换对应的十六进制数即可
案例:请将二进制:11010101转成16进制数为:0XD5
11100101 转化为八进制:0345
1110010110转化为十六进制:0x396
第四组
1)将八进制数每1位转成对应的一个3位的二进制数即可
案例:请将0237转成二进制
0237=10011111
2)将十六进制每1位转成1个4位的二进制数
0x3D=0x111101
原码 补码反码
golang有三个位运算
2的补码:00000010
3的补码 00000011
2&3=00000010 =2
2|3=00000011=3
2^3=00000001
-2^2=-4
-2的原码为:10000010
-2的反码为:11111101
-2的补码:11111110
2的补码 00000010
故-2^2=11111100 的原码是先求出他的反码然后进行取反操作
反码=补码-1:11111011==》原码(符号位不变其他取反):10000100=-4
-1:10000001=》反码=》11111110补码:11111111 +00000001=全是0
func main(){//位运算的知识演示fmt.Println(2&3) //2fmt.Println(2|3)//3fmt.Println(2^3)//1//下面是带有负数的二进制fmt.Println(-2^2)//-4}
golang有两个移位运算符
>> 右移、 <<左移
右移运算符 >>:低位溢出,符号位不,并用符号位补溢出的高位
左移运算符<< 符号位不变,低位补0
案例演示:
都要将原来的数变成补码进行运算
a:=1>>2//00000001=>00000000=0 右移即补码左边补0
c:=1<<2 //00000001=>00000100=4左移即补码右边补0
fmt.Println(1>>2)//0
fmt.Println(1<<2)//4
…(img-EvonRpVt-1693040914591)]
2的补码:00000010
3的补码 00000011
2&3=00000010 =2
2|3=00000011=3
2^3=00000001
-2^2=-4
-2的原码为:10000010
-2的反码为:11111101
-2的补码:11111110
2的补码 00000010
故-2^2=11111100 的原码是先求出他的反码然后进行取反操作
反码=补码-1:11111011==》原码(符号位不变其他取反):10000100=-4
-1:10000001=》反码=》11111110补码:11111111 +00000001=全是0
func main(){//位运算的知识演示fmt.Println(2&3) //2fmt.Println(2|3)//3fmt.Println(2^3)//1//下面是带有负数的二进制fmt.Println(-2^2)//-4}
相关文章:

go学习-指针 标识符
指针,以及标识符 1.指针 (1).基本介绍 1)基本数据类型,变量存的值,也叫值类型 2)获取变量的地址用&,比如 var num int ,获取num的地址:&num 3)指针类型&…...

LeetCode--HOT100题(42)
目录 题目描述:108. 将有序数组转换为二叉搜索树(简单)题目接口解题思路代码 PS: 题目描述:108. 将有序数组转换为二叉搜索树(简单) 给你一个整数数组 nums ,其中元素已经按 升序 排列…...

YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测+k折交叉验证法)
YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测k折交叉验证法) 0.引言 k折交叉验证(K-Fold Cross-Validation)是一种在机器学习中常用的模型评估技术,用于估计模型的性…...

leetcode算法题--表示数值的字符串
原题链接:https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/description/?envTypestudy-plan-v2&envIdcoding-interviews 题目类型有点新颖,有限状态机 // CharType表示当前字符的类型 // State表示当前所处的状态 type State…...

Docker安装及Docker构建简易版Hadoop生态
一、首先在VM创建一个新的虚拟机将Docker安装好 更新系统:首先打开终端,更新系统包列表。 sudo apt-get update sudo apt-get upgrade下图是更新系统包截图 安装Docker:使用以下命令在Linux上安装Docker。 sudo apt-get install -y docker.i…...

使用Burp Suite进行Web应用渗透测试
使用Burp Suite进行Web应用渗透测试是一种常见的方法,可以帮助发现Web应用程序中的安全漏洞和弱点。 步骤: 准备工作: 首先,确保已经安装了Burp Suite,并配置浏览器以使用Burp Suite作为代理。 配置代理:…...

Github的使用指南
首次创建仓库 1.官网创建仓库 打开giuhub官网,右上角点击你的头像,随后点击your repositories 点击New开始创建仓库 如下图为创建仓库的选项解释 出现如下界面就可以进行后续的git指令操作了 2.git上传项目 进入需上传项目的所在目录,打开…...

mongodb 添加加点 stateStr 停在 STARTUP
解决办法 PRIMARY 节点是的host 是否是内网IP,如果是内网IP 需要切换成外网IP 即可;...

c语言中编译过程与预处理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、c语言的编译与链接1、编译与链接概述2、编译与链接详解 二、c语言预处理1.c语言中内置的预定义符号2、#define定义标识符3、#define定义宏4、#define 替换规…...

TP-LINK 路由器设置内网穿透
TP-LINK 路由器设置内网穿透 开发中经常遇到调用第三方软件回调调试的情况,例如微信开发,支付回调等测试,用内网穿透是一种简单的方式也是偷懒的方式。 以TP-LINK路由器为例实现内网穿透 登录路由器 2.找到路由器虚拟服务器,添加…...

A 题国际旅游网络的大数据分析-详细解析与代码答案(2023 年全国高校数据统计与调查分析挑战赛
请你们进行数据统计与调查分析,使用附件中的数据,回答下列问题: ⚫ 问题 1: 请进行分类汇总统计,计算不同国家 1995 年至 2020 年累计旅游总人数,从哪个国家旅游出发的人数最多,哪个国家旅游到达的人数最多…...

《深入理解Java虚拟机》读书笔记: 类加载器
类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类加载器可以说是Java语言的一项创新&…...

宝塔计划任务读取文件失败
想挂计划任务 相关文章【已解决】计划任务读取文件失败 - Linux面板 - 宝塔面板论坛 对方反馈的是执行下面的命令 chattr -ai /var/spool/cron 后来发现直接没有这个文件夹,然后通过mkdir命令创建文件夹,成功在宝塔创建了计划任务 后面发现任务虽然添…...

Python操作sql,备份数据库
1、批量执行sql import pymysql# 执行批量的 SQL 语句 def executeBatchSql(cursor, sqlStatements):for sql in sqlStatements:try:cursor.execute(sql)print(Executed SQL statement:, sql)except Exception as e:print(Error executing SQL statement:, e)# 创建数据库连接…...

Linux线程 --- 生产者消费者模型(C语言)
在学习完线程相关的概念之后,本节来认识一下Linux多线程相关的一个重要模型----“ 生产者消费者模型” 本文参考: Linux多线程生产者与消费者_红娃子的博客-CSDN博客 Linux多线程——生产者消费者模型_linux多线程生产者与消费者_两片空白的博客-CSDN博客…...

Vue2向Vue3过度核心技术computed计算属性
目录 1 computed计算属性1.1 概念1.2 语法1.3 注意1.4.案例1.5.代码准备 2 computed计算属性 VS methods方法2.1 computed计算属性2.2 methods计算属性2.3 计算属性的优势2.4 总结 3 计算属性的完整写法 1 computed计算属性 1.1 概念 基于现有的数据,计算出来的新属…...

芯片行业震荡期,数字后端还可以入吗?
自去年开始,芯片行业仿佛进入了动荡期,经历了去年秋招和今年春招的小伙伴都知道,如今找工作有多难。 半导体行业人才缩减、各大厂裁员,在加上高校毕业生人数破千万,对于即将踏入IC这个行业的应届生来说,今…...

“精准时空”赋能制造业智能化发展
作者:邓中亮 高达动态厘米级的高精度定位服务,不仅是北斗卫星导航系统的一大独门绝技,其在产业化应用层面也已逐步向普适化、标配化演进,并延展出时空智能新兴产业。 5月17日,当长征三号乙运载火箭成功发射北斗系统的…...
Kotlin协程flow发送时间间隔debounce
Kotlin协程flow发送时间间隔debounce debounce的作用是让连续发射的数据之间间隔起来。典型的应用场景是搜索引擎里面的关键词输入,当用户输入字符时候,有时候,并不希望用户每输入任何一个单字就触发一次后台真正的查询,而是希望…...

ServiceManager接收APP的跨进程Binder通信流程分析
现在一起来分析Server端接收(来自APP端)Binder数据的整个过程,还是以ServiceManager这个Server为例进行分析,这是一个至下而上的分析过程。 在分析之前先思考ServiceManager是什么?它其实是一个独立的进程,由init解析i…...

Git问题:解决“ssh:connect to host github.com port 22: Connection timed out”
操作系统 Windows11 使用Git IDEA 连接方式:SSH 今天上传代码出现如下报错:ssh:connect to host github.com port 22: Connection timed out 再多尝试几次,依然是这样。 解决 最终发现两个解决方案:(二选一…...

在Eclipse中创建javaweb工程
新建动态web工程 点击project或other之后,如何快速找到Dynamic Web Project 填写工程名等详细信息 也许会出现下面的对话框 项目结构图...

Pycharm链接远程mysql报错
Pycharm链接远程mysql配置及相应报错如下: 解决方法: 去服务器确认Mysql版本号: 我的Mysql为5.7.43,此时Pycharm mysql驱动为8.0版本,不匹配,所以需要根据实际的版本选择对应的驱动;选择对应的版…...

【硕士论文完美复现】【价格型需求响应】基于需求侧响应的配电网供电能力综合评估(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Android Okhttp 源码浅析三
核心方法 getResponseWithInterceptorChain() internal fun getResponseWithInterceptorChain(): Response {// Build a full stack of interceptors.val interceptors mutableListOf<Interceptor>()interceptors client.interceptorsinterceptors RetryAndFollowUpI…...

一分钟学会用pygame制作棋盘背景
一分钟一个Pygame案例,这一集我们来学习一下如何生成一个视频中的棋盘背景效果,非常非常简单。 视频教程链接:https://www.bilibili.com/video/BV17G411d7Ah/ 当然我们这里是用来做页面的背景,你也可以拿来做别的效果࿰…...

Java --- 包装类
一、包装类 Java针对八种基本数据类型定义了相应的引用类型:包装类(封装类)。 二、基本数据类型与包装类的基本转换 public class WrapperTest {public static void main(String[] args) {//基本数据类型转换为包装类Boolean aBoolean new…...

[运维] wvp 28181安装部署全流程(ubuntu2204)
部署wvp 系统环境 系统版本:ubuntu2204 安装相关工具 sudo apt update ## 编译工具 sudo apt install git openjdk-11-jdk tar vim cmake gcc g libsrtp2-dev libssl-dev ## ffmepg sudo apt install ffmpeg编译zlm 编译zlm git clone https://gitee.com/xia-…...

vue实现富文本
效果图展示 一、安装依赖 npm install vue-quill-editor --save二、具体使用 html <template><!-- 富文本 --><quill-editorref"myQuillEditor"v-model"content":options"editorOption"blur"onEditorBlur($event)"…...