当前位置: 首页 > news >正文

网站构造下拉列表怎么做/搜索引擎平台

网站构造下拉列表怎么做,搜索引擎平台,北京中御建设公司网站,js 上传wordpresserror接口的使用 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型 type error interface {Error() string }package mainimport ("errors""fmt" )type Student struct {name stringid int }func …

error接口的使用

Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型

type error interface {Error() string
}
package mainimport ("errors""fmt"
)type Student struct {name stringid   int
}func main() {err1 := fmt.Errorf("%s", "this is normal err")fmt.Println("err1 = ", err1) //err1 =  this is normol errerr2 := errors.New("this is normal err2")err3 := err2.Error()fmt.Println("err2 = ", err2) //err2 =  this is normal err2fmt.Println(err3)            //this is normal err2
}

error接口的应用

package mainimport ("errors""fmt"
)type Student struct {name stringid   int
}func MyDiv(a, b int) (result int, err error) {err = nilif b == 0 {err = errors.New("分母不能为0")} else {result = a / b}return}
func main() {result, err := MyDiv(10, 0)if err != nil {fmt.Println("err = ", err)} else {fmt.Println("result = ", result) //5}
}

显示调用panic函数-----发生致命异常–导致程序崩溃

比如数组越界,空指针引用等等。

package mainimport "fmt"func testa() {fmt.Println("aaaaaaaaaaaaa")
}func testc() {fmt.Println("bbbbbbbbbbbb")//显示调用panic函数,导致程序中断panic("this is a panic test") //产生一个恐慌
}func testb() {fmt.Println("cccccccccccc")
}func main() {testa()testb()testc()
}

数组越界导致panic

package mainimport "fmt"func testa() {fmt.Println("aaaaaaaaaaaaa")
}func testb(x int) {var a [10]int//panic: runtime error: index out of range [20] with length 10a[x] = 111 //当x为20的时候,导致数组越界,产生一个panic,导致程序崩溃
}func testc() {fmt.Println("cccccccccccc")
}func main() {testa()testb(20)testc()
}

recover函数的使用–发生错误导致程序不会崩溃

Go语言为我们提供了专用于"拦截"运行时panic的内建函数–recover。它可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权.
func recover() interface{}
注意: recover只有在defer调用的函数中有效。
如果调用了内置函数recover,并且定义该defer语句的函数发生了panic异常,recover会使程序从panic中恢复,并返回panic value。导致panic异常的函数不会继承运行,但能正常返回。在未发生panic时调用recover,recover会返回nil。

package mainimport ("fmt"
)func testa() {fmt.Println("aaaaaaaaaaaaa")
}func testb(x int) {//设置recoverdefer func() {//recover() //可以打印panic错误信息//fmt.Println(recover()) //runtime error: index out of range [20] with length 10if err := recover(); err != nil {fmt.Println(err)}}()var a [10]int//panic: runtime error: index out of range [20] with length 10a[x] = 111 //当x为20的时候,导致数组越界,产生一个panic,导致程序崩溃fmt.Println("bbbbbbbbbbbbb")
}func testc() {fmt.Println("cccccccccccc")
}func main() {testa()testb(20)testc()
}

字符串操作常用函数介绍

Contains(s,substr string) bool
功能:字符串s中是否包含substr返回bool值
Join(a[]string,sep string) string
功能:字符串连接,把切片 a通过sep连接起来
Index(s,sep string) int
功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1
Repeat(s string,count int) string
功能:重复s字符串count次,最后返回重复的字符串
Replace(s,old,new string,n int) string
功能:在s字符串吧old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
Split(s,sep string)[]string
功能:把s字符串按照sep分隔,返回slice(切片)
Trim(s string,cutset string) string
功能:在s字符串的头部和尾部取出cutset指定的字符串
Fields(s string) [] string
功能:去除s字符串的空格符,并且按照空格分隔返回切片

字符串操作代码验证

package mainimport ("fmt""strings"
)// 字符串操作代码验证
func main() {//"hellogo"中是否包含"hello" 不包含返回falsefmt.Println(strings.Contains("hellogo", "hello")) //truefmt.Println(strings.Contains("hellogo", "abc"))   //false//Joins 组合s := []string{"abc", "hello", "mike", "go"}buf := strings.Join(s, "@")fmt.Println("buf = ", buf) //buf =  abc@hello@mike@go//Index 查找子串的位置fmt.Println(strings.Index("abcdhello", "hello")) //4fmt.Println(strings.Index("abcdhello", "go"))    //-1//重复出现多少次buf = strings.Repeat("go", 3)fmt.Println("buf = ", buf) //buf =  gogogo//Split 以指定的分隔符拆分buf = "hello@abc@go@mike"s2 := strings.Split(buf, "@")fmt.Println("s2 = ", s2) //s2 =  [hello abc go mike]//Trim去掉两头的字符buf = strings.Trim("         are u ok?     ", " ") //去掉两头空格fmt.Printf("buf = #%s#\n", buf)                    //buf = #are u ok?#//Fields 处理空格 切片 把元素放入切片中s3 := strings.Fields("         are u ok?     ")//fmt.Println(s3) //[aru u ok?]for i, data := range s3 {//0 , aru//1 , u//2 , ok?fmt.Println(i, ",", data)}
}

字符串转换
Append
在这里插入图片描述

package mainimport ("fmt""strconv"
)// 字符串操作代码验证
func main() {//转换为字符串后追加到字节数组slice := make([]byte, 0, 1024)slice = strconv.AppendBool(slice, true)//第二个数为要追加的数,第三个为指定的10进制方式追加slice = strconv.AppendInt(slice, 1234, 10)slice = strconv.AppendQuote(slice, "abcdeasda")slice = strconv.AppendQuoteRune(slice, '单')fmt.Println("slice = ", string(slice)) //slice =  true1234"abcdeasda"'单' 转换为字符串再打印/*for i, data := range slice {fmt.Println(i, ",", string(data))}*///fmt.Println("slice = ", slice) //slice =  [116 114 117 101 49 50 51 52 34 97 98 99 100 101 97 115 100 97 34 39 229 141 149 39]//其他类型转换为字符串var str stringstr = strconv.FormatBool(false)fmt.Println("str = ", str) //str =  false//‘f’指打印格式,小数方式,-1指小数点位数(紧缩模式),64以64处理str = strconv.FormatFloat(3.14, 'f', -1, 64)fmt.Println("str = ", str) //str =  3.14//整型转字符串str = strconv.Itoa(6666)fmt.Println("str = ", str) //str =  6666//字符串转其他类型var flag boolvar err errorflag, err = strconv.ParseBool("true")if err == nil {fmt.Println("flag = ", flag) //flag =  true} else {fmt.Println("err = ", err)}//把字符串转换为整型a, _ := strconv.Atoi("567")fmt.Println("a = ", a) //a =  567
}

正则表达式

Go语言通过regexp标准包为正则表达式提供了官方支持
.在这里插入图片描述
在这里插入图片描述

package mainimport ("fmt""regexp"
)// 字符串操作代码验证
func main() {buf := "abc azc a7c aac 888 a9c tac"//1解析规则 它会解析正则表达式,如果成功就会返回解析器//reg1 := regexp.MustCompile(`a.c`) //result1 =  [[abc] [azc] [a7c] [aac] [a9c]]//reg1 := regexp.MustCompile(`a[0-9]c`) //result1 =  [[a7c] [a9c]]reg1 := regexp.MustCompile(`a\dc`) //result1 =  [[a7c] [a9c]]if reg1 == nil { //解析失败,返回niufmt.Println("err")return}//2 根据规则提取关键信息 -1 解析所有的result1 := reg1.FindAllStringSubmatch(buf, -1)fmt.Println("result1 = ", result1)
}
package mainimport ("fmt""regexp"
)func main() {//提取有效地小数buf := "43.14 567 agsdg 1.23 7. 8.99 lsdljl 6.66"//1解析规则 它会解析正则表达式,如果成功就会返回解析器reg1 := regexp.MustCompile(`\d+\.\d+`) //result1 =  [[43.14] [1.23] [8.99] [6.66]]if reg1 == nil { //解析失败,返回niufmt.Println("err")return}//2 根据规则提取关键信息 -1 解析所有的result1 := reg1.FindAllStringSubmatch(buf, -1)fmt.Println("result1 = ", result1)
}

JSON介绍

JSON是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成。
Go语言内建对JSON的支持,使用Go语言内置的encoding/json标准库,开发者可以轻松使用Go程序生成的解析JSON格式的数据。

通过结构体生成json

package mainimport ("encoding/json""fmt"
)// IT 生成json格式成员变量成员首字母必须大写
type IT struct {Company  stringSubjects []stringIsok     boolPrice    float64
}func main() {//定义一个结构体变量,同时初始化s := IT{"itcast", []string{"GO", "C++", "Python", "Test"}, true, 666.666}//编码 根据内容生成json文本,空接口可以是任意类型//buf, err := json.Marshal(s) {"Company":"itcast","Subjects":["GO","C++","Python","Test"],"Isok":true,"Price":666.666}//格式化编码buf, err := json.MarshalIndent(s, "", " ") //格式化编码if err != nil {fmt.Println("err = ", err)return}fmt.Println("buf = ", string(buf))
}

struct_tag的使用

package mainimport ("encoding/json""fmt"
)// IT 生成json格式成员变量成员首字母必须大写 这样就可以改成小写
type IT struct {Company  string   `json:"-"`        //`json:"-"`此字段就不会输出到屏幕Subjects []string `json:"subjects"` //二次编码Isok     bool     `json:",string"`  //`json:",string"`转出字符串类型进行编码Price    float64  `json:",string"`
}func main() {//定义一个结构体变量,同时初始化s := IT{"itcast", []string{"GO", "C++", "Python", "Test"}, true, 666.666}//编码 根据内容生成json文本,空接口可以是任意类型//buf, err := json.Marshal(s) {"Company":"itcast","Subjects":["GO","C++","Python","Test"],"Isok":true,"Price":666.666}//格式化编码buf, err := json.MarshalIndent(s, "", " ") //格式化编码if err != nil {fmt.Println("err = ", err)return}fmt.Println("buf = ", string(buf))
}

通过map生成json

package mainimport ("encoding/json""fmt"
)// 通过map生成json
func main() {//创建一个mapm := make(map[string]interface{}, 4)m["company"] = "itcast"m["subjects"] = []string{"Go", "C++", "Python", "Test"}m["isok"] = truem["price"] = 666.666//编码成json//result, err := json.Marshal(m)result, err := json.MarshalIndent(m, "", " ")if err != nil {fmt.Println("err = ", err)return}//result =  {"company":"itcast","isok":true,"price":666.666,"subjects":["Go","C++","Python","Test"]}fmt.Println("result = ", string(result))
}

json解析到结构体

可以使用json.Unmarshal()函数将JSON格式的文本解码为Go里面预期的数据结构

func Unmarshal(data []byte, v any) error 
type any = interface{}
package mainimport ("encoding/json""fmt"
)type IT struct {Company  string   `json:"company"`  //`json:"-"`此字段就不会输出到屏幕Subjects []string `json:"subjects"` //二次编码Isok     bool     `json:",isok"`    //`json:",string"`转出字符串类型进行编码Price    float64  `json:",price"`
}// 通过map生成json
func main() {jsonBuf := ` {"company": "itcast","isok": true,"price": 666.666,"subjects": ["Go","C++","Python","Test"]}`var tmp IT //定义结构体变量err := json.Unmarshal([]byte(jsonBuf), &tmp) //改内容,取地址if err != nil {fmt.Println("err = ", err)return}fmt.Println("tmp = ", tmp)     //tmp =  {itcast [Go C++ Python Test] true 666.666}fmt.Printf("tmp = %+v\n", tmp) //tmp = {Company:itcast Subjects:[Go C++ Python Test] Isok:true Price:666.666}
}

json解析到map

package mainimport ("encoding/json""fmt"
)// 通过map生成json
func main() {jsonBuf := ` {"company": "itcast","isok": true,"price": 666.666,"subjects": ["Go","C++","Python","Test"]}`//创建一个mapm := make(map[string]interface{}, 4)err := json.Unmarshal([]byte(jsonBuf), &m) //改内容,取地址if err != nil {fmt.Println("err = ", err)return}fmt.Println("tmp = ", m)     //tmp =   map[company:itcast isok:true price:666.666 subjects:[Go C++ Python Test]]fmt.Printf("tmp = %+v\n", m) //tmp =  map[company:itcast isok:true price:666.666 subjects:[Go C++ Python Test]]var str string//类型断言 值,他是value类型for key, value := range m {//fmt.Printf("%v =========>%v\n", key, value)//if key == "company" {//	str = value//	fmt.Println("str = ", str)//}/**map[company]的值为string,内容为value = itcastmap[isok]的值为bool,内容为value = truemap[price]的值为float64,内容为value = 666.666000map[subjects]的值为[]interface{},内容为value = [Go C++ Python Test]*/switch data := value.(type) { //需要反推case string:str = datafmt.Printf("map[%s]的值为string,内容为value = %s\n", key, str)case bool:fmt.Printf("map[%s]的值为bool,内容为value = %v\n", key, data)case float64:fmt.Printf("map[%s]的值为float64,内容为value = %f\n", key, data)case []string:fmt.Printf("map[%s]的值为[]string,内容为value = %v\n", key, data)case []interface{}:fmt.Printf("map[%s]的值为[]interface{},内容为value = %v\n", key, data)}}
}

文件分类和为什么需要文件

文件分类:
设备文件:屏幕(标准输出设备),键盘(标准输入设备)
磁盘文件:放在存储设备上的文件
1:文本文件
2:二进制文件
为什么需要文件?
内存掉电丢失,程序结束,内存中的内容消失
文件放磁盘,程序结束,文件函数存在

新建文件可以通过如下两个方法
func Create(name string)(file *File,err Error)
根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666的文件,返回的文件对象时可读写的
func NewFile(fd uintptr,name string) *File
根据文件描述符创建相应的文件,返回一个文件对象通过如下两个文件来打开文件:
func Open(name string)(file *File, err Error)
该方法打开一个名称为name的文件,但是是只读方式,内部实现其实调用了OpenFile
func OpenFile(name string,flag int,perm unit32)(file File,err Error)
打开名称为name的文件,flag是打开的方式,只读,读写等,perm是权限
写文件
func(file *File) write(b []byte)(n int,err Error)
写入byte类型的信息到文件
func(file *File) writeAt(b []byte, off int64)(n int, err Error)
在指定位置开始写入byte类型的信息
func(file *File) writeString(s string)(ret int,err Error)
写入string信息到文件
读文件
func(file *File) Read(b []byte)(n int,err Error)
读取数据到b中
func(file *File)ReadAt(b []byte,off int64)(n int,err Error)
从off开始读取数据到b中
删除文件
func Remove(name string) Error
调用该函数就可以删除文件名为name的文件

标准设备文件的使用

package mainimport ("fmt""os"
)// 通过map生成json
func main() {//os.Stdout.Close() //关闭后无法输出//fmt.Println("are u ok?") //往标准输出设备(屏幕)写内容//标准设备文件(os.Stdout),默认给用户打开,用户可以直接使用//os.Stdoutos.Stdout.WriteString("are u OK?\n")//os.Stdin.Close() //关闭后无法输出var a intfmt.Println("请输入a:")fmt.Scan(&a) //从标准输入设备中读取内容,放在a中fmt.Println("a = ", a)
}

文件的读写

文件写入和写入

package mainimport ("fmt""io""os"
)func WriteFile(path string) {//打开文件,新建文件f, err := os.Create(path)if err != nil {fmt.Println("err = ", err)return}//使用完毕,需要关闭文件defer f.Close() //函数结束前关闭var buf stringfor i := 0; i < 10; i++ {// i = 1\n,这个字符串返回到在buf中buf = fmt.Sprintf("i = %d\n", i)fmt.Println("buf = ", buf) //buf =  i = 0writeString, err := f.WriteString(buf)if err != nil {fmt.Println("err = ", err)return}fmt.Println("writeString = ", writeString)}
}func ReadFile(path string) {//打开文件f, err := os.Open(path)if err != nil {fmt.Println("err = ", err)return}//关闭文件defer f.Close()buf := make([]byte, 1024*2) //2k大小//read代表文件读取内容的长度read, err1 := f.Read(buf)if err1 != nil && err1 != io.EOF { //io.EOF 文件出错同时没有到结尾fmt.Println("err = ", err1)return}fmt.Println("buf = ", string(buf[:read]))}// 通过map生成json
func main() {path := "./demo.txt"WriteFile(path) //写入ReadFile(path)  //读取
}

借助bufio实现按行读取内容

package mainimport ("bufio""fmt""io""os"
)// 每次读取一行
func ReadFileLine(path string) {//打开文件f, err := os.Open(path)if err != nil {fmt.Println("err = ", err)return}//关闭文件defer f.Close()//新建一个缓冲区,把内容先放在缓冲器r := bufio.NewReader(f)for {//遇到\n介绍读取,但是\n也读取进来buf, err1 := r.ReadBytes('\n')if err1 != nil {if err1 == io.EOF { //文件结束break}fmt.Println("err = ", err1)}fmt.Printf("buf = #%s#\n", string(buf))}}
func main() {path := "./demo.txt"//WriteFile(path) //写入//ReadFile(path)  //读取ReadFileLine(path)
}

文件案例:拷贝文件

package mainimport ("fmt""io""os"
)func main() {list := os.Args //获取命令行参数if len(list) != 3 {fmt.Println("usage: xxx srcFile dstFile")return}srcFileName := list[1]dstFileName := list[2]if srcFileName == dstFileName {fmt.Println("源文件和目的文件不能相同")return}//只读方式打开源文件sF, err1 := os.Open(srcFileName)if err1 != nil {fmt.Println("err1 = ", err1)return}//新建目的文件dF, err2 := os.Create(dstFileName)if err2 != nil {fmt.Println("err1 = ", err2)return}//操作文件,需要关闭文件defer sF.Close()defer dF.Close()//核心处理,从源文件读取内容,buf := make([]byte, 1024*4) //临时缓冲区for {read, err := sF.Read(buf)if err != nil {if err == io.EOF { //文件读取完毕break}fmt.Println("err = ", err)}//往目的文件写,读多少写多少n, err3 := dF.Write(buf[:read])if err3 != nil {fmt.Println("err3 = ", err3)return}if n == 0 {return}}
}

相关文章:

go语言基本操作---五

error接口的使用 Go语言引入了一个关于错误处理的标准模式&#xff0c;即error接口&#xff0c;它是Go语言内建的接口类型 type error interface {Error() string }package mainimport ("errors""fmt" )type Student struct {name stringid int }func …...

【sgLazyTree】自定义组件:动态懒加载el-tree树节点数据,实现增删改、懒加载及局部数据刷新。

特性 可以自定义主键、配置选项支持预定义节点图标&#xff1a;folder文件夹|normal普通样式多个提示文本可以自定义支持动态接口增删改节点可以自定义根节点Id可以设置最多允许添加的层级深度 sgLazyTree源码 <template><div :class"$options.name" v-lo…...

Rust个人学习笔记

感悟&#xff1a;感觉rust好像缝合怪&#xff0c;既有python的影子&#xff0c;又有java和cpp的影子&#xff0c;可能这就是新型编程语言趋势吧。而且他的各种规范很严格很规范&#xff0c;比java还更工程&#xff0c;各种规范不对都有warning。 命名规范&#xff1a;蛇形命名…...

Java根据身份证号码提取出省市区,JSON数据格式

package com.rdes.talents.utils;import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** Author: 更多实用源码 www.cx1314.cn* Date: 2023/9/7 …...

MySQL知识笔记——初级基础(实施工程师和DBA工作笔记)

老生长谈&#xff0c;MySQL具有开源、支持多语言、性能好、安全性高的特点&#xff0c;广受业界欢迎。 在数据爆炸式增长的年代&#xff0c;掌握一种数据库能够更好的提升自己的业务能力&#xff08;实施工程师&#xff09;。 此系列将会记录我学习和进阶SQL路上的知识&#xf…...

javaee 事务的传播行为

事务的传播行为 事务的第一个方面是传播行为&#xff08;propagation behavior&#xff09;。当事务方法被另一个事务方法调用时&#xff0c;必须指定事务应该如何传播。例如&#xff1a;方法可能继续在现有事务中运行&#xff0c;也可能开启一个新事务&#xff0c;并在自己的…...

C#-SQLite-使用教程笔记

微软官网资料链接&#xff08;可下载文档&#xff09; 教程参考链接&#xff1a;SQLite 教程 - SQLite中文手册 项目中对应的system.dat文件可以用SQLiteStudio打开查看 参考文档&#xff1a;https://d7ehk.jb51.net/202008/books/SQLite_jb51.rar 总结介绍 1、下载SQLiteS…...

Tomcat详解 一:tomcat的部署

文章目录 1. Tomcat的基本介绍1.1 Tomcat是什么1.2 Tomcat的构成组件1.2.1 Web容器1.2.2 Servlet容器1.2.3 JSP容器&#xff08;JAVA Scripts page&#xff09; 1.3 核心功能1.3.1 Container 结构分析 1.4 配置文件1.5 Tomcat常用端口号1.6 启动和关闭Tomcat 2. 部署Tomcat服务…...

算法 - 二分

~~~~ 题目 - 整数二分需要考虑边界思路code开平方 - 浮点数二分codecode core 题目 - 整数二分需要考虑边界 给定一个按照升序排列的长度为 n 的整数数组&#xff0c;以及 q 个查询。 对于每个查询&#xff0c;返回一个元素 k 的起始位置和终止位置&#xff08;位置从 0 开始…...

蠕虫病毒问题

蠕虫病毒处理过程 修改病毒定时时间&#xff0c;今天遇到的是 */30 crontab -e先修改延长时间&#xff0c;会提示无操作权限,执行下面的问题 chattr -l /filepath查看可疑进程&#xff0c;这次遇到的进程有 /tmp/***** /tmp/crontab***** ps -auxkill -9 相关进程 删除/…...

pytest笔记2: fixture

1. fixture 通常是对测试方法和测试函数&#xff0c;测试类整个测试文件进行初始化或是还原测试环境 # 功能函数 def multiply(a, b):return a * b # ------------ fixture---------------def setup_module(module):print("setup_module 在当前文件中所有测试用例之前&q…...

day55 补

392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;&quo…...

CSS变量之var()函数的应用——动态修改样式 root的使用

一、css变量 body {--foo: #7F593F;--urls: ./img/xxx.jpg; }变量的名称可以用数字、汉字等&#xff0c;不能包含**$&#xff0c;[&#xff0c;^&#xff0c;(&#xff0c;%**等字符&#xff0c;变量的值也是可以使用各种属性值&#xff1a; 如&#xff1a; // 定义css变量 :r…...

索尼 toio ™应用创意开发征文|一个理想的绘画小助手

引言 toio™机器人是索尼推出的一款创意玩具&#xff0c;它的小巧和可编程性使其成为一个理想的绘画助手。通过编程控制机器人的运动和绘画工具&#xff0c;我们可以为小朋友提供一个有趣的绘画体验。 创意描述 我们可以通过JavaScript编程来控制toio™机器人的运动和绘画工具…...

java加密,使用python解密 ,使用 pysm4 报 byte greater than 16的解决方法

1&#xff0c;业务需要&#xff0c;对方需要用java进行参数加密&#xff0c;双方约定使用的加密方法是 SM4&#xff0c;对方给的key是32位&#xff0c;并且给出了加解密的java代码。 import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.Key; i…...

django后台启动CORS跨越配置

文章目录 背景什么是跨域问题&#xff1f;跨域问题的解决方案 Django 解决跨域问题 背景 什么是跨域问题&#xff1f; 跨域问题是指浏览器的同源策略限制了来自不同域的 AJAX 请求。 具体来说: 同源策略要求源相同才能正常进行 AJAX 通信。判断是否同源需要满足三个条件: 协…...

异常的顶级理解

目录 1.异常的概念与体系结构 1.1异常的体系结构 1.2异常的举例 1.3错误的举例 2.异常的分类 2.1编译时异常 2.2运行时异常 3.异常的处理 3.1异常的抛出throw 3.2try-catch捕获并处理 3.3finally 3.4 异常声明throws 4.自定义异常类 1.异常的概念与体系结构 1.1异常的…...

LinkedHashMap实现LRU缓存cache机制,Kotlin

LinkedHashMap实现LRU缓存cache机制&#xff0c;Kotlin LinkedHashMap的accessOrdertrue后&#xff0c;访问LinkedHashMap里面存储的元素&#xff0c;LinkedHashMap就会把该元素移动到最尾部。利用这一点&#xff0c;可以设置一个缓存的上限值&#xff0c;当存入的缓存数理超过…...

Google 开源库Guava详解(集合工具类)

任何具有JDK Collections Framework经验的程序员都知道并喜欢java.util.Collections.Guava提供了更多的实用程序&#xff1a;适用于所有集合的静态方法。这些是番石榴最受欢迎和成熟的部分。 对应于特定接口的方法以相对直观的方式分组&#xff1a; nterface JDK or Guava? …...

Ansys Zemax | 如何将光线追迹结果导出为IES格式

照明系统设计者通常需要向客户提供IES格式的数据。照明工程学会 (Illuminating Engineering Society&#xff0c;IES) 文件格式便于传输辉度数据&#xff0c;该格式得到了制造商和设计师的广泛认可。本文描述了如何生成IES文件并验证结果。&#xff08;联系我们获取文章附件&am…...

JSONObject 比 Map好使的地方

需求&#xff1a;改originalJson中的json字符串的key&#xff0c;当key满足在configMapping中配置的key2情况的时候&#xff0c;把originalJson的key改成 configMapping中的value2。 上代码&#xff1a; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject;p…...

[js] 图解 event.pageX event.clientX event.offsetX getBoundingClientRect

event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X&#xff0c;Y坐标&#xff08;窗口坐标&#xff09;&#xff0c;可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性 event.pageX、event.pageY 类似于event.clientX、event.clientY&#xff0c;…...

VsCode备忘

上次简单学习了一下vscode的使用&#xff0c;结果好长时间没用&#xff0c;今天打开又全忘了。。。再记录一下吧 快捷键 CtrlShiftP 命令面板&#xff0c;查找命令&#xff0c;设置等等 Ctrl 打开集成终端&#xff0c;监视生成输出 Ctrl, 打开设置 CtrlP 转到文件,使用转到符…...

Linux命令200例:Yum强大的包管理工具使用(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…...

使用 Linux 相关知识部署博客系统

目录 ​编辑一、认识 Linux 二、如何拥有 Linux 环境 三、常见的 Linux 命令 1、目录相关命令 &#xff08;1&#xff09;ls &#xff08;2&#xff09;pwd &#xff08;3&#xff09;cd 2、文件操作相关命令 &#xff08;1&#xff09;touch &#xff08;2&#xf…...

Linux--进程--vfork与fork区别

vfork&#xff1a; 所需头文件&#xff1a;#include <sys/types.h> #include <unistd.h> pid_t vfork(void); 功能&#xff1a; vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程&#xff0c;但它们创建的子进程是有区别的。 参数&#xff…...

Ubuntu系统重装nvidia gpu驱动

1. 卸载原驱动 sudo apt remove *cuda* sudo apt remove *nvidia* sudo /usr/bin/nvidia-uninstall sudo dpkg -l | grep ^rc | cut -d -f3 | sudo xargs dpkg --purge sudo rm -rf ~/.cuda-license-* sudo apt purge nvidia-cuda-toolkit sudo apt remove nvidia-driver-* s…...

Java + Selenium + Appium自动化测试

一、启动测试机或者Android模拟器&#xff08;Genymotion俗称世界上最快的模拟器&#xff0c;可自行百度安装&#xff09; 二、启动Appium&#xff08;Appium环境安装可自行百度&#xff09; 三、安装应用到Genymotion上&#xff0c;如下图我安装一个计算机的小应用&#xff…...

【sgLazyCascader】自定义组件:基于el-cascader的懒加载级联菜单,支持异步加载子级菜单

sgLazyCascader源码 <template><div :class"$options.name"><el-cascader :props"props" v-model"model" :placeholder"placeholder || 请选择" :options"options"></el-cascader></div> &l…...

2023高教社杯数学建模E题思路模型 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c; 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…...