在go语言标准库中,net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket。本文向大家介绍net标准库的使用,希望对你有帮助。

一、 服务端

1. 解析地址

在TCP服务端我们需要监听一个TCP地址,因此建立服务端前我们需要生成一个正确的TCP地址,这就需要用到下面的函数了。

// ResolveTCPAddr函数会输出一个TCP连接地址和一个错误信息
func ResolveTCPAddr(network, address string) (*TCPAddr, error)
// 解析IP地址
func ResolveIPAddr(net, addr string) (*IPAddr, error)
// 解析UDP地址
func ResolveUDPAddr(net, addr string) (*UDPAddr, error)
// 解析Unix地址
func ResolveUnixAddr(net, addr string) (*UnixAddr, error)

2. 监听请求

我们可以通过 Listen方法监听我们解析后的网络地址。

// 监听net类型,地址为laddr的地址
func Listen(net, laddr string) (Listener, error)
// 监听TCP地址
func ListenTCP(network string, laddr *TCPAddr) (*TCPListener, error) 
// 监听IP地址
func ListenIP(netProto string, laddr *IPAddr) (*IPConn, error)
// 监听UDP地址
func ListenMulticastUDP(net string, ifi *Interface, gaddr *UDPAddr) (*UDPConn, error)
func ListenUDP(net string, laddr *UDPAddr) (*UDPConn, error)
// 监听Unix地址
func ListenUnixgram(net string, laddr *UnixAddr) (*UnixConn, error)
func ListenUnix(net string, laddr *UnixAddr) (*UnixListener, error)

3. 接收请求

TCPAddr 实现了两个接受请求的方法,两者代码实现其实是一样的,唯一的区别是第一种返回了一个对象,第二种返回了一个接口。

func (l *TCPListener) AcceptTCP() (*TCPConn, error)
func (l *TCPListener) Accept() (Conn, error) 

其他类型也有类似的方法,具体请参考go语言标准库文档。

4. 连接配置

  • 配置监听器超时时间

    // 超过t之后监听器自动关闭,0表示不设置超时时间
    func (l *TCPListener) SetDeadline(t time.Time) error
    
  • 关闭监听器

    // 关闭监听器
    func (l *TCPListener) Close() error
    

5. 编写一个服务端

func main() {// 解析服务端监听地址,本例以tcp为例addr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8000")if err != nil {log.Panic(err)}// 创建监听器listen, err := net.ListenTCP("tcp", addr)if err != nil {log.Panic(err)}for {// 监听客户端连接请求conn, err := listen.AcceptTCP()if err != nil {continue}// 处理客户端请求 这个函数可以自己编写go HandleConnectionForServer(conn)}
}

二、 TCP客户端

1. 解析TCP地址

在TCP服务端我们需要监听一个TCP地址,因此建立服务端前我们需要生成一个正确的TCP地址,这就需要用到下面的函数了。

// ResolveTCPAddr函数会输出一个TCP连接地址和一个错误信息
func ResolveTCPAddr(network, address string) (*TCPAddr, error)

2. 发送连接请求

net包提供了多种连接方法

// DialIP的作用类似于IP网络的拨号
func DialIP(network string, laddr, raddr *IPAddr) (*IPConn, error)
// Dial 连接到指定网络上的地址,涵盖
func Dial(network, address string) (Conn, error)
// 这个方法只是在Dial上面设置了超时时间
func DialTimeout(network, address string, timeout time.Duration) (Conn, error)
// DialTCP 专门用来进行TCP通信的
func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error)
// DialUDP 专门用来进行UDP通信的
func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error)
// DialUnix 专门用来进行 Unix 通信
func DialUnix(network string, laddr, raddr *UnixAddr) (*UnixConn, error)

3. 编写一个客户端

通过下面的例子我们看一下如何编写一个 TCP 客户端:

func main() {// 解析服务端地址RemoteAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8000")if err != nil {panic(err)}// 解析本地连接地址LocalAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1")if err != nil {panic(err)}// 连接服务端conn, err := net.DialTCP("tcp", LocalAddr, RemoteAddr)if err != nil {panic(err)}// 连接管理HandleConnectionForClient(conn)
}

三、 管理连接

这里我们来实现一个智能机器人的功能。
其实下面的例子也相当于一个socket通信程序,可以通过telnet连接服务端,并进行交互。

1. 客户端

我们通过 HandleConnectionForClient(conn) 方法来处理客户端的消息,话不多说,看代码:

package mainimport ("bufio""fmt""net""os""os/signal""strings""syscall"
)var sig = make(chan os.Signal)func main() {// 解析服务端地址RemoteAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8000")if err != nil {panic(err)}// 解析本地连接地址LocalAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8001")if err != nil {panic(err)}// 连接服务端conn, err := net.DialTCP("tcp", LocalAddr, RemoteAddr)if err != nil {panic(err)}// 连接管理HandleConnectionForClient(conn)
}// handleConnection 读取数据, 在这里我们可以编写自己的交互程序
func HandleConnectionForClient(conn net.Conn) {// 监控系统信号go signalMonitor(conn)// 初始化一个缓存区Stdin := bufio.NewReader(os.Stdin)for {// 接收服务端返回的消息getResponse(conn)// 读取用户输入的信息,遇到换行符结束。fmt.Print("[ random_w ]# ")input, err := Stdin.ReadString('\n')if err != nil {fmt.Println(err)}// 删除字符串前后的空格,主要是删除换行符。input = strings.TrimSpace(input)// 空行不做处理if len(input) == 0 {continue}// 是否接收到退出指令switch input {case "quit", "exit":sig <- syscall.SIGQUITdefault:// 发送消息给服务端sendMsgToServer(conn, input)}}
}// sendMsgToServer 发送消息给服务端
func sendMsgToServer(conn net.Conn, msg string) {for {_, err := conn.Write([]byte(msg))if err == nil {break}}
}// getResponse 接收服务端返回的消息
func getResponse(conn net.Conn) {// 初始化一个1024字节的内存,用来接收服务端的消息respByte := make([]byte, 1024)// 接收服务端返回的消息length, err := conn.Read(respByte)if err != nil {fmt.Println("[ server ]# 接收消息失败")}for line, str := range strings.Split(string(respByte[:length]), "\n") {if len(str) != 0 {if line == 1 {fmt.Print(fmt.Sprintf("[ server ]# \n%s\n", str))continue}fmt.Println(str)}}
}// signalMonitor 监听系统信号,如果程序收到退出到的信号通过 Goroutine 通知 server 端,关闭连接后退出。
func signalMonitor(conn net.Conn) {signal.Notify(sig, syscall.SIGQUIT, syscall.SIGKILL, syscall.SIGINT)// 接收到结束信号退出此程序select {case <-sig:// 通知服务端断开连接_, _ = conn.Write([]byte("exit"))fmt.Println("\nGood Bye !!!!!")os.Exit(0)}
}

2. 服务端

我们通过 HandleConnectionForServer(conn) 方法来处理服务端的连接信息。

package mainimport ("log""net"
)func main() {// 解析服务端监听地址addr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8000")if err != nil {log.Panic(err)}// 创建监听器listen, err := net.ListenTCP("tcp", addr)if err != nil {log.Panic(err)}for {// 监听客户端连接请求conn, err := listen.AcceptTCP()if err != nil {continue}// 处理客户端请求go handleConnectionForServer(conn)}
}// handleConnection 读取数据, 在这里我们可以编写自己的交互程序
func handleConnectionForServer(conn net.Conn) {for flag := false; ; {// 设置消息长度为1024比特buf := make([]byte, 1024)if !flag {// 客户端连接成功,提示可以操作的内容if _, err := conn.Write([]byte(Usage())); err != nil {log.Println("Error: ", err)}flag = truecontinue}/* 读取客户端发送的数据,数据会保存到buf这里有一个知识点:conn.Read会返回接收到的值的长度,如果不指定长度,通过string转换的时候你会活得一个1024字节的字符串但我们不需要后面的初始化的值,因此通过buf[:length]提取我们想要的值。*/if length, err := conn.Read(buf); err != nil {// 读取失败writeResponse(parseRequest(""), conn)} else {// 读取成功req := string(buf[:length])if req == "exit" {break}writeResponse(parseRequest(req), conn)}}
}
func Usage() string {return `
---------------------------------------------------------------
Hello, my name is randow_w, I'm glad to serve you.
I can provide you with the following services:
1.查工资
2.猜年龄
3.查天气
----------------------------------------------------------------`
}// writeResponse 返回信息给客户端
func writeResponse(resp string, conn net.Conn) {if _, err := conn.Write([]byte(resp)); err != nil {log.Println("Error: ", err)}
}// parseRequest 解析客户端输入的信息
func parseRequest(req string) (resp string) {switch req {case "查工资":resp = checkSalary()case "猜年龄":resp = guessAge()case "查天气":resp = chat()default:resp = "对不起,我爸爸还没有教我怎么回答你,能不能换一个问题(*^_^*)"}return
}// 查工资
func checkSalary() string {return "据权威机构推测,你未来有机会冲刺福布斯排行榜,加油哦(ง •_•)ง"
}// 猜年龄
func guessAge() string {return "永远18岁"
}// 聊天
func chat() string {return "你好,主人,今天是晴天,空气质量优,适合去爬山。"
}

注意:服务端里面你自己也可以定义一些方法用来处理客户端的请求,这里只写了几个简单的例子。

3. 测试

启动服务端:

$ go run server.go

启动客户端:

$ go run client.go
[ server ]#
---------------------------------------------------------------
Hello, my name is randow_w, I'm glad to serve you.
I can provide you with the following services:
1.查工资
2.猜年龄
3.查天气
----------------------------------------------------------------
[ random_w ]# 查工资
据权威机构推测,你未来有机会冲刺福布斯排行榜,加油哦(ง •_•)[ random_w ]# 猜年龄
永远18岁
[ random_w ]# 查天气
你好,主人,今天是晴天,空气质量优,适合去爬山。
[ random_w ]# 你好
对不起,我还在爸爸没有教我怎么回答你,能不能换一个问题(*^_^*)
[ random_w ]# quitGood Bye !!!!!

四、 UDP

通过net包我们还可以创建一个UDP连接,下面我们通过代码学习如何创建UDP通信的客户端和服务端。

1. UDP 服务端

package mainimport ("fmt""log""net"
)func main() {// 解析服务端监听地址addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8000")if err != nil {log.Panic(err)}// 创建监听器listen, err := net.ListenUDP("udp", addr)if err != nil {log.Panic(err)}for {// 设置消息长度为1024比特buf := make([]byte, 1024)// 读取消息,UDP不是面向连接的因此不需要等待连接length, udpAddr, err := listen.ReadFromUDP(buf)if err != nil {log.Println("Error: ", err)continue}fmt.Println("[ server ]# UdpAddr: ", udpAddr, "Data: ", string(buf[:length]))}
}

2. UDP 客户端

package mainimport ("bufio""fmt""net""os""os/signal""strings""syscall"
)var sig = make(chan os.Signal)func main() {// 解析服务端地址RemoteAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8000")if err != nil {panic(err)}// 解析本地连接地址LocalAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8001")if err != nil {panic(err)}// 连接服务端conn, err := net.DialUDP("udp", LocalAddr, RemoteAddr)if err != nil {panic(err)}// 连接管理HandleConnectionForClient(conn)
}// handleConnection 读取数据, 在这里我们可以编写自己的交互程序
func HandleConnectionForClient(conn net.Conn) {// 监控系统信号go signalMonitor(conn)// 初始化一个缓存区Stdin := bufio.NewReader(os.Stdin)for {// 读取用户输入的信息,遇到换行符结束。fmt.Print("[ random_w ]# ")input, err := Stdin.ReadString('\n')if err != nil {fmt.Println(err)}// 删除字符串前后的空格,主要是删除换行符。input = strings.TrimSpace(input)// 空行不做处理if len(input) == 0 {continue}// 是否接收到退出指令switch input {case "quit", "exit":sig <- syscall.SIGQUITdefault:// 发送消息给服务端sendMsgToServer(conn, input)}}
}// sendMsgToServer 发送消息给服务端
func sendMsgToServer(conn net.Conn, msg string) {for {_, err := conn.Write([]byte(msg))if err == nil {break}}
}// signalMonitor 监听系统信号,如果程序收到退出到的信号通过 Goroutine 通知 server 端,关闭连接后退出。
func signalMonitor(conn net.Conn) {signal.Notify(sig, syscall.SIGQUIT, syscall.SIGKILL, syscall.SIGINT)// 接收到结束信号退出此程序select {case <-sig:// 通知服务端断开连接_, _ = conn.Write([]byte("exit"))fmt.Println("\nGood Bye !!!!!")os.Exit(0)}
}

3. 测试

开启服务端:

$ go run udpserver.go

开启客户端并传递信息:

$ go run udpclient.go
[ random_w ]# hello world
[ random_w ]# udp test
[ random_w ]# exit
[ random_w ]#
Good Bye !!!!!

服务端接收到消息:

$ go run udpserver.go
[ server ]# UdpAddr:  127.0.0.1:8001 Data:  hello world
[ server ]# UdpAddr:  127.0.0.1:8001 Data:  udp test
[ server ]# UdpAddr:  127.0.0.1:8001 Data:  exit

五、 域名解析

1. dns 正向解析

CNAME 被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“r0WSPFSx58.”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。

  • 域名解析到cname

    func LookupCNAME(name string) (cname string, err error)
    
  • 域名解析到地址

    func LookupHost(host string) (addrs []string, err error)
    
  • 域名解析到地址[]IP结构体.可以对具体ip进行相关操作(是否回环地址,子网,网络号等)

    func LookupIP(host string) (addrs []IP, err error)
    

2. dns 反向解析

// 根据ip地址查找主机名地址(必须得是可以解析到的域名)[dig -x ipaddress]
func LookupAddr(addr string) (name []string, err error)

3. 应用

package mainimport ("fmt""net"
)func main() {// 域名改成自己要测试的dns := "www.baidu.com"// 解析cnamecname, _ := net.LookupCNAME(dns)fmt.Println("cname:", cname)// 解析ip地址ips, err := net.LookupHost(dns)if err != nil {fmt.Println("Err: ", err.Error())return}fmt.Println(ips)// 反向解析(主机必须得能解析到地址), IP地址改成你的dnsName, _ := net.LookupAddr("10.X.X.X")fmt.Println("Hostname:", dnsName)
}

Output:

$ go run main.go
cname: www.a.shifen.com.
[14.215.177.38 14.215.177.39]
Hostname: [paas.bk.com. cmdb.bk.com. job.bk.com.]
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 程序员笔试 单选题收集整理(二)

    1.不考虑推理中所涉及名词的常识性知识,仅根据推理内容判断,以下逻辑推理中正确的是() A.因为所有的巧克力棒都是甜腻事物,并且有的高脂肪食品不是甜腻食物,所以所有的巧克力棒都不是高脂肪食品 B.因为有些安眠药是非处方药,并且没有非处方药是容易上瘾的药物,所以安眠…...

    2024/4/23 13:24:02
  2. 高精度AOA定位,给你带来不一样的室内外定位技术-新导智能

    对移动终端的无线定位现已具有了广泛的运用,定位技能现已浸透到了人们日子、作业的方方面面,它不仅可以用于人员搜寻、方位查找、交通办理、车辆导航与路线规划等日子运用,还在军事范畴以及防备自然灾祸方面也发挥着重要作用。高精度AOA定位技能对用户的日常日子与作业现已带…...

    2024/4/22 1:47:06
  3. 花火hdu区块链前景

    花火无边界链上交易平台将重磅上线。花火是一个基于Ripple的RTXP协议底层技术的全球首家无边界链上交易平台,将区块链技术价值发挥到最大程度,以融合任何有可能助推花火创新的新领域、新项目。2019年上半年,巨头相继入场区块链行业,区块链热度再创高潮,交易所也处于机遇的…...

    2024/4/30 6:01:50
  4. 【学习笔记】兄弟连Linux教程摘要

    最近在看兄弟连2014年录制的Linux教学视频,沈超和李明这两个活宝讲得确实是精彩,顺着教学视频讲解的逻辑顺序做了一些笔记,教学视频链接https://www.bilibili.com/video/BV1mW411i7Qf,学的人挺多,每次看都有几十个人陪着一起在学。笔者是用markdown做的笔记,不过水平太差…...

    2024/4/24 15:39:03
  5. VTP协议与配置(理论)

    VTP的工作原理 VTP是一种消息协议,使用第2层帧,在全网的基础上**管理VLAN的添加、删除和重命名,以实现VLAN配置的一致性**。可以用VTP管理网络中VLAN1到1005。有了VTP,就可以在一台交换机上集中进行配置变更,所作的变更会被自动传播到网络中所有其他的交换机上。**(前提是…...

    2024/4/24 18:04:13
  6. 远程预付费管理系统在淮安茂业时代广场 项目上的应用

    摘要:介绍淮安茂业时代广场远程预付费管理系统,与智能预付费仪表进行远程分合控制,达到计量费控使用功能。系统采用现场就地组网的方式,组网后通过现场总线通讯并远传至后台,通过HK-BEMS远程预付费管理系统实现配电回路用电用水的计量和费控管理。 关键词:淮安茂业时代广…...

    2024/4/29 10:56:29
  7. 微信小程序,小游戏数据助手数据爬取!还敢随便授权小游戏吗?

    一、背景介绍近期产生需求,需要批量重复获取微信小程序数据助手的部分数据,减少重复工作,提高效率。二、环境准备主要逻辑:charles抓包,分析,爬取,数据存储环境配置:pc-win10/移动-iphone/软件-charles* Charles配置与使用,参考的此条链接:https://blog.csdn.net/Hey…...

    2024/4/15 18:37:55
  8. linux中的快捷键大全

    Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 Ctrl+d 删除当前字符 Ctrl+h 删除当前字符前一个字符 Ctrl+w 删除此处到左边的单词 Ctrl+y 粘贴由Ctrl+u, Ctrl+d, Ctrl+w删除的单词 Ctr…...

    2024/4/28 19:46:13
  9. linux ssh-copy-id实现ssh免密登陆详情

    说明ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上。authorized_keys 文件用来验证 client 。使用 ssh-copy-id 命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。实例机器:192.168.1.9 与192.168.1.11两台机器分别在两台机器执行下…...

    2024/4/15 18:37:55
  10. 终于搞懂Dropout了

    在深度学习中,如果模型太复杂则会产生过拟合现象。一种常用的防止过拟合的方法是正则化,通过在成本函数中添加正则项来起到惩罚参数的作用,不熟悉正则化的小伙伴可以看我之前发布的文章:一文搞定正则化(作用,方法,原理)。而另一种常用的防止过拟合的方法就是:Drop out在…...

    2024/4/25 0:21:48
  11. win svn 不识别文件名大小写问题

    默认是true,意思是自动修复大小写改为 false...

    2024/4/23 18:38:57
  12. pycharm+anaconda+tensorflow环境配置

    pycharm配置anaconda(windows)官网下载anaconda,根据提示安装。 在pycharm新建project,将project interpreter修改为anaconda的python.exetensorflow环境配置(own project) tf1+numpyconda -n creat tf pytohn=3.6 conda activate tf conda install tensorflow==1.14 (一些很…...

    2024/4/15 18:37:53
  13. 浅谈事件冒泡与事件捕获

    ...

    2024/4/25 21:48:54
  14. 2020版Go语言+区块链学习路线图(含大纲+视频+工具+资料,持更中...)

    一、2020新版Go语言+区块链学习路线图—每阶段市场价值及可解决的问题二、2020新版Go语言+区块链学习路线图—每阶段可掌握的核心能力三、2020新版Go语言+区块链学习路线图—每阶段的设计理念四、2020新版Go语言+区块链学习路线图—学习大纲及各阶段知识点五、2020新版Go语言+区…...

    2024/5/4 3:01:01
  15. 第十二章:Electron-Vue渲染进程和主进程通信、shell使用、使用node模块

    渲染进程和主进程通信1、渲染进程<div><button @click="sendMsg">给主进程广播数据</button></div>methods: {sendMsg() {this.$electron.ipcRenderer.send("tomain", "我是渲染进程");},}2、主进程 import {ipcMain} f…...

    2024/5/4 0:11:41
  16. Oracle 10g Shrink Table 详解

    Oracle 10g Shrink Table 详解[表空间收缩]转自:http://blog.csdn.net/tianlesoftware/archive/2009/11/04/4764254.aspx从10g开始,oracle开始提供Shrink的命令,假如我们的表空间中支持自动段空间管理 (ASSM),就可以使用这个特性缩小段,即降低HWM。这里需要强调一点,10g…...

    2024/4/22 14:44:29
  17. Vue编译后后发布刷新404

    在nginx添加try_files $uri $uri/ /index.html last;...

    2024/4/15 14:47:04
  18. Git简介

    Git简介 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器…...

    2024/4/19 22:58:13
  19. 使用Prometheus监控Spark任务

    BackGroud 目前spark支持Graphite打点,但是Graphite默认会为每个打点生成对应的文件,直接只有两个点数据,graphite生成的文件也有200多k,对Graphite造成很大的压力。所以考虑使用Prometheus来代替Graphite。 Prometheus的打点默认是pull模式,和Graphite不同,而Spark3.0 新…...

    2024/5/3 1:44:44
  20. Flutter Json序列化插件Dart Classes from Json 的使用

    长话短说,json序列化转model,从flutter提供的json.decode(),json_anotation,json_model,在线dart_to_json(已打不开),我全区踩了一遍,这是我目前最推荐Json转model的方式,虽然目前有些瑕疵,看实操一、在andriod Studio 里面搜索插件JSON To Dart Class 下载安装二、…...

    2024/4/23 1:10:08

最新文章

  1. 数智新重庆 | 推进信号升格 打造算力山城

    2024年&#xff0c;是实现“十四五”规划目标任务的关键一年&#xff0c;高质量的5G网络、强大的AI能力作为新质生产力的重要组成部分&#xff0c;将有效赋能包括制造业在内的千行万业数字化化、智能化、绿色化转型升级&#xff0c;推动融合应用新业态、新模式蓬勃兴起&#xf…...

    2024/5/4 4:48:03
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. nodeJs 实现视频的转换(超详细教程)

    前段时间拿到一个视频是4k的&#xff0c;没法播放&#xff0c;于是通过 node.js 和 ffmpeg 实现了视频的转换。在win10 系统下实现。 所需工具 node 16.19 直接安装 ffmpeg-5.1.1-essentials_build 解压后重名 ffmpeg 放到C盘 然后配置下环境变量 Git-2.42.0.2-64-bit 直接…...

    2024/5/3 8:55:24
  4. DNS和HTTP

    DNS应用层协议 域名解析系统 使用IP地址&#xff0c;来描述设备在网络上的位置 IP地址并不适合来进行传播网站&#xff0c;就采用了域名的方式来解决网站传播的问题。如www.baidu.com这样类似的就很容易让人记住。其域名就直接代表了这个网站。而且有一套自动的系统会将域名解…...

    2024/5/1 13:54:09
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/3 11:50:27
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/2 16:04:58
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/2 23:55:17
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/3 16:00:51
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/3 11:10:49
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/3 21:22:01
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/3 23:17:01
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/2 23:47:43
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/3 13:26:06
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/3 1:55:15
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/4 2:14:16
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/3 16:23:03
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/3 1:55:09
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/3 14:57:24
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/4 2:00:16
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/3 22:03:11
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/3 7:43:42
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/3 1:54:59
  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