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

go语言基础---8

Http请求报文格式分析

package mainimport ("fmt""net"
)func main() {//监听listener, err := net.Listen("tcp", ":8000")if err != nil {fmt.Println("listener err", err)return}defer listener.Close()//阻塞等待用户的连接conn, err := listener.Accept()if err != nil {fmt.Println("Accept err = ", err)return}defer conn.Close()//接收客户端的数据buf := make([]byte, 1024*4)readSize, err := conn.Read(buf)if readSize == 0 { //对方断开,出问题了fmt.Println("Read err = ", err)return}fmt.Printf("#%v#", string(buf[:readSize]))}
#GET / HTTP/1.1 //请求行
Host: 127.0.0.1:8000
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="116", "Not)A;Brand";v="24", "Microsoft Edge";v="116"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6#

在这里插入图片描述

HTTP编程

go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。

func ListenAndServe(addr string, handler Handler) error

ListenAndServe监听TCP地址addr,并且会使用handler参数调用Serve函数处理接收到的连接。handler参数一般会设为nil,此时会使用DefaultServeMux。
在这里插入图片描述

package mainimport "net/http"// HandleConn 第一个参数,给客户端回复数据,req 读取客户端发送的数据
func HandleConn(w http.ResponseWriter, req *http.Request) {_, err := w.Write([]byte("hello go")) //给客户端回复数据if err != nil {return}
}func main() {//HandleFunc注册一个处理器函数handler和对应的模式pattern(注册到DefaultServeMux)。//ServeMux的文档解释了模式的匹配机制。//注册处理函数,用户连接,自动调用指定的处理函数//func HandleFunc(pattern string, handler func(ResponseWriter, *Request))http.HandleFunc("/", HandleConn)//监听绑定//ListenAndServe监听TCP地址addr,//并且会使用handler参数调用Serve函数处理接收到的连接。handler参数一般会设为nil,此时会使用DefaultServeMux。http.ListenAndServe(":8000", nil)
}

http服务器获取客户端的一些信息

type Request struct {// Method指定HTTP方法(GET、POST、PUT等)。对客户端,""代表GET。Method string// URL在服务端表示被请求的URI,在客户端表示要访问的URL。//// 在服务端,URL字段是解析请求行的URI(保存在RequestURI字段)得到的,// 对大多数请求来说,除了Path和RawQuery之外的字段都是空字符串。// (参见RFC 2616, Section 5.1.2)//// 在客户端,URL的Host字段指定了要连接的服务器,// 而Request的Host字段(可选地)指定要发送的HTTP请求的Host头的值。URL *url.URL// 接收到的请求的协议版本。本包生产的Request总是使用HTTP/1.1Proto      string // "HTTP/1.0"ProtoMajor int    // 1ProtoMinor int    // 0// Header字段用来表示HTTP请求的头域。如果头域(多行键值对格式)为://	accept-encoding: gzip, deflate//	Accept-Language: en-us//	Connection: keep-alive// 则://	Header = map[string][]string{//		"Accept-Encoding": {"gzip, deflate"},//		"Accept-Language": {"en-us"},//		"Connection": {"keep-alive"},//	}// HTTP规定头域的键名(头名)是大小写敏感的,请求的解析器通过规范化头域的键名来实现这点。// 在客户端的请求,可能会被自动添加或重写Header中的特定的头,参见Request.Write方法。Header Header// Body是请求的主体。//// 在客户端,如果Body是nil表示该请求没有主体买入GET请求。// Client的Transport字段会负责调用Body的Close方法。//// 在服务端,Body字段总是非nil的;但在没有主体时,读取Body会立刻返回EOF。// Server会关闭请求的主体,ServeHTTP处理器不需要关闭Body字段。Body io.ReadCloser// ContentLength记录相关内容的长度。// 如果为-1,表示长度未知,如果>=0,表示可以从Body字段读取ContentLength字节数据。// 在客户端,如果Body非nil而该字段为0,表示不知道Body的长度。ContentLength int64// TransferEncoding按从最外到最里的顺序列出传输编码,空切片表示"identity"编码。// 本字段一般会被忽略。当发送或接受请求时,会自动添加或移除"chunked"传输编码。TransferEncoding []string// Close在服务端指定是否在回复请求后关闭连接,在客户端指定是否在发送请求后关闭连接。Close bool// 在服务端,Host指定URL会在其上寻找资源的主机。// 根据RFC 2616,该值可以是Host头的值,或者URL自身提供的主机名。// Host的格式可以是"host:port"。//// 在客户端,请求的Host字段(可选地)用来重写请求的Host头。// 如过该字段为"",Request.Write方法会使用URL字段的Host。Host string// Form是解析好的表单数据,包括URL字段的query参数和POST或PUT的表单数据。// 本字段只有在调用ParseForm后才有效。在客户端,会忽略请求中的本字段而使用Body替代。Form url.Values// PostForm是解析好的POST或PUT的表单数据。// 本字段只有在调用ParseForm后才有效。在客户端,会忽略请求中的本字段而使用Body替代。PostForm url.Values// MultipartForm是解析好的多部件表单,包括上传的文件。// 本字段只有在调用ParseMultipartForm后才有效。// 在客户端,会忽略请求中的本字段而使用Body替代。MultipartForm *multipart.Form// Trailer指定了会在请求主体之后发送的额外的头域。//// 在服务端,Trailer字段必须初始化为只有trailer键,所有键都对应nil值。// (客户端会声明哪些trailer会发送)// 在处理器从Body读取时,不能使用本字段。// 在从Body的读取返回EOF后,Trailer字段会被更新完毕并包含非nil的值。// (如果客户端发送了这些键值对),此时才可以访问本字段。//// 在客户端,Trail必须初始化为一个包含将要发送的键值对的映射。(值可以是nil或其终值)// ContentLength字段必须是0或-1,以启用"chunked"传输编码发送请求。// 在开始发送请求后,Trailer可以在读取请求主体期间被修改,// 一旦请求主体返回EOF,调用者就不可再修改Trailer。//// 很少有HTTP客户端、服务端或代理支持HTTP trailer。Trailer Header// RemoteAddr允许HTTP服务器和其他软件记录该请求的来源地址,一般用于日志。// 本字段不是ReadRequest函数填写的,也没有定义格式。// 本包的HTTP服务器会在调用处理器之前设置RemoteAddr为"IP:port"格式的地址。// 客户端会忽略请求中的RemoteAddr字段。RemoteAddr string// RequestURI是被客户端发送到服务端的请求的请求行中未修改的请求URI// (参见RFC 2616, Section 5.1)// 一般应使用URI字段,在客户端设置请求的本字段会导致错误。RequestURI string// TLS字段允许HTTP服务器和其他软件记录接收到该请求的TLS连接的信息// 本字段不是ReadRequest函数填写的。// 对启用了TLS的连接,本包的HTTP服务器会在调用处理器之前设置TLS字段,否则将设TLS为nil。// 客户端会忽略请求中的TLS字段。TLS *tls.ConnectionState
}
package mainimport ("fmt""net/http"
)// HandleConn 第一个参数,给客户端回复数据,req 读取客户端发送的数据
func HandleConn(w http.ResponseWriter, req *http.Request) {fmt.Println("r.Method = ", req.Method) //r.Method =  GETfmt.Println("r.URL = ", req.URL)       // /fmt.Println("Header = ", req.Header)fmt.Println("Body = ", req.Body)_, err := w.Write([]byte("hello go")) //给客户端回复数据if err != nil {return}
}func main() {//HandleFunc注册一个处理器函数handler和对应的模式pattern(注册到DefaultServeMux)。//ServeMux的文档解释了模式的匹配机制。//注册处理函数,用户连接,自动调用指定的处理函数//func HandleFunc(pattern string, handler func(ResponseWriter, *Request))http.HandleFunc("/", HandleConn)//监听绑定//ListenAndServe监听TCP地址addr,//并且会使用handler参数调用Serve函数处理接收到的连接。handler参数一般会设为nil,此时会使用DefaultServeMux。http.ListenAndServe(":8000", nil)
}

http客户端编程

type Response struct {Status     string // 例如"200 OK"StatusCode int    // 例如200Proto      string // 例如"HTTP/1.0"ProtoMajor int    // 例如1ProtoMinor int    // 例如0// Header保管头域的键值对。// 如果回复中有多个头的键相同,Header中保存为该键对应用逗号分隔串联起来的这些头的值// (参见RFC 2616 Section 4.2)// 被本结构体中的其他字段复制保管的头(如ContentLength)会从Header中删掉。//// Header中的键都是规范化的,参见CanonicalHeaderKey函数Header Header// Body代表回复的主体。// Client类型和Transport类型会保证Body字段总是非nil的,即使回复没有主体或主体长度为0。// 关闭主体是调用者的责任。// 如果服务端采用"chunked"传输编码发送的回复,Body字段会自动进行解码。Body io.ReadCloser// ContentLength记录相关内容的长度。// 其值为-1表示长度未知(采用chunked传输编码)// 除非对应的Request.Method是"HEAD",其值>=0表示可以从Body读取的字节数ContentLength int64// TransferEncoding按从最外到最里的顺序列出传输编码,空切片表示"identity"编码。TransferEncoding []string// Close记录头域是否指定应在读取完主体后关闭连接。(即Connection头)// 该值是给客户端的建议,Response.Write方法的ReadResponse函数都不会关闭连接。Close bool// Trailer字段保存和头域相同格式的trailer键值对,和Header字段相同类型Trailer Header// Request是用来获取此回复的请求// Request的Body字段是nil(因为已经被用掉了)// 这个字段是被Client类型发出请求并获得回复后填充的Request *Request// TLS包含接收到该回复的TLS连接的信息。 对未加密的回复,本字段为nil。// 返回的指针是被(同一TLS连接接收到的)回复共享的,不应被修改。TLS *tls.ConnectionState
}
package mainimport ("fmt""net/http"
)func main() {response, err := http.Get("http://www.baidu.com")if err != nil {fmt.Println("Get response err = ", err)return}defer response.Body.Close() //内容在body里面fmt.Println("response.status = ", response.Status)         //response.status =  200 OKfmt.Println("response.StatusCode = ", response.StatusCode) //200fmt.Println("response.Header = ", response.Header)//fmt.Println("response.Body = ", response.Body) //response.Body =  &{[] 0xc000226080 <nil> <nil>}buf := make([]byte, 4*1024)var tmp stringfor true {BodySize, err := response.Body.Read(buf)if BodySize == 0 {fmt.Println("read err = ", err)break}tmp += string(buf[:BodySize])}fmt.Println("tmp = ", tmp)
}

单任务百度贴吧小爬虫

package mainimport ("fmt""net/http""os""strconv"
)// https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn=150// HttpGet 爬取网页内容
func HttpGet(url string) (result string, err error) {response, err1 := http.Get(url)if err1 != nil {err = err1return}defer response.Body.Close()//读取网页bodybuf := make([]byte, 1024*4)for true {readSize, err := response.Body.Read(buf)if readSize == 0 { //读取结束,或者出问题fmt.Println("response body read err = ", err)break}result += string(buf[:readSize])}return
}func DoWork(start, end int) {fmt.Printf("正在爬取%d到%d的页面\n", start, end)//明确目标(要知道你准备在那个范围或者网站去搜索)for i := start; i <= end; i++ {//strconv.Itoa((i-1)*50)//整型转stringurl := "https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn=" + strconv.Itoa((i-1)*50)fmt.Println("url =", url)//爬(将所有的网站的内容全部爬下来)result, err := HttpGet(url)if err != nil {fmt.Println("HttpGet err = ", err)continue}//把内容写入到文件fileName := strconv.Itoa(1) + ".html"file, err := os.Create(fileName)if err != nil {fmt.Println("create err = ", err)continue}_, err1 := file.WriteString(result)if err1 != nil {fmt.Println("write string err = ", err)continue} //写内容err2 := file.Close()if err2 != nil {fmt.Println("close err = ", err2)continue} //关闭文件}
}
func main() {var start, end intfmt.Println("请输入起始页(>=1):")fmt.Scan(&start)fmt.Println("请输入终止页(>=起始页):")fmt.Scan(&end)DoWork(start, end)
}

并发版网络爬虫

package mainimport ("fmt""net/http""os""strconv"
)// https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn=150// HttpGet 爬取网页内容
func httpGet1(url string) (result string, err error) {response, err1 := http.Get(url)if err1 != nil {err = err1return}defer response.Body.Close()//读取网页bodybuf := make([]byte, 1024*4)for true {readSize, err := response.Body.Read(buf)if readSize == 0 { //读取结束,或者出问题fmt.Println("response body read err = ", err)break}result += string(buf[:readSize])}return
}// 爬取一个网页
func SpiderPage(i int, page chan int) {//strconv.Itoa((i-1)*50)//整型转stringurl := "https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn=" + strconv.Itoa((i-1)*50)fmt.Printf("真正爬%d页的网页:%s\n", i, url)//爬(将所有的网站的内容全部爬下来)result, err := httpGet1(url)if err != nil {fmt.Println("HttpGet err = ", err)return}//把内容写入到文件fileName := strconv.Itoa(i) + ".html"file, err := os.Create(fileName)if err != nil {fmt.Println("create err = ", err)return}_, err1 := file.WriteString(result)if err1 != nil {fmt.Println("write string err = ", err)return} //写内容err2 := file.Close()if err2 != nil {fmt.Println("close err = ", err2)return} //关闭文件page <- i //写i
}
func doWork1(start, end int) {fmt.Printf("正在爬取%d到%d的页面\n", start, end)page := make(chan int)//明确目标(要知道你准备在那个范围或者网站去搜索)for i := start; i <= end; i++ {go SpiderPage(i, page)}for i := start; i <= end; i++ {fmt.Printf("第%d个页面爬取完成\n", <-page)}
}
func main() {var start, end intfmt.Println("请输入起始页(>=1):")fmt.Scan(&start)fmt.Println("请输入终止页(>=起始页):")fmt.Scan(&end)doWork1(start, end)
}

相关文章:

go语言基础---8

Http请求报文格式分析 package mainimport ("fmt""net" )func main() {//监听listener, err : net.Listen("tcp", ":8000")if err ! nil {fmt.Println("listener err", err)return}defer listener.Close()//阻塞等待用户的…...

Oracle的 dblink 学习笔记

文章目录 一、基础环境二、适用场景三、过程和方法四、参考资料 版权声明&#xff1a;本文为CSDN博主「杨群」的原创文章&#xff0c;遵循 CC 4.0 BY-SA版权协议&#xff0c;于2023年9月10日首发于CSDN&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;http…...

任意文件上传

1.任意文件上传概述 1.1 漏洞成因 服务器配置不当&#xff0c;开启了PUT 方法。 Web 应用开放了文件上传功能&#xff0c;没有对上传的文件做足够的限制和过滤。在程序开发部署时&#xff0c;没有考虑以下因素&#xff0c;导致限制被绕过&#xff1a; 代码特性 组件漏洞&am…...

【Unity3D】UI Toolkit自定义元素

1 前言 UI Toolkit 支持通过继承 VisualElement 实现自定义元素&#xff0c;便于通过脚本控制元素。另外&#xff0c;UI Toolkit 也支持将一个容器及其所有子元素作为一个模板&#xff0c;便于通过脚本复制模板。 如果读者对 UI Toolkit 不是太了解&#xff0c;可以参考以下内容…...

layui手机端使用laydate时间选择器被输入法遮挡的解决方案

在HTML中&#xff0c;你可以使用input元素的readonly属性来禁止用户输入&#xff0c;但是这将完全禁用输入&#xff0c;而不仅仅是禁止弹出输入法。如果你想允许用户在特定条件下输入&#xff0c;你可以使用JavaScript来动态地切换readonly属性。 readonly属性 增加readonly属…...

MVSNet CVPR-2018 学习总结笔记 译文 深度学习三维重建

文章目录 2 MVSNet CVPR-20182.0 主要特点2.1 过程2.2 MVSNet主要贡献2.3 论文简介2.3.1 深度特征提取2.3.2 构造匹配代价2.3.3 代价累计2.3.4 深度估计2.3.5 深度图优化2.4 MVSNet(pytorch版本)2 MVSNet CVPR-2018 MVSNet (pytorch版) 代码注释版 下载 (注释非常详细,代码…...

Kafka/Spark-01消费topic到写出到topic

1 Kafka的工具类 1.1 从kafka消费数据的方法 消费者代码 def getKafkaDStream(ssc : StreamingContext , topic: String , groupId:String ) {consumerConfigs.put(ConsumerConfig.GROUP_ID_CONFIG , groupId)val kafkaDStream: InputDStream[ConsumerRecord[String, Strin…...

【算法与数据结构】98、LeetCode验证二叉搜索树

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;注意不要落入下面你的陷阱&#xff0c;笔者本来想左节点键值<中间节点键值<右节点键值即可&…...

关于GitHub Desktop中的“Open in Git Bash”无法使用的问题

问题描述 在GitHub Desktop中选择Repository--Open in Git Bash&#xff08;如图1&#xff09;&#xff0c;出现如图2所示结果。 图1 图2 解决办法&#xff08;Windows10&#xff09; 这个问题是由于Git的环境变量没有得到正确配置所导致的&#xff0c;所以需要正确设置环境变量…...

使用DeepSpeed加速大型模型训练(二)

使用DeepSpeed加速大型模型训练 在这篇文章中&#xff0c;我们将了解如何利用Accelerate库来训练大型模型&#xff0c;从而使用户能够利用DeeSpeed的 ZeRO 功能。 简介 尝试训练大型模型时是否厌倦了内存不足 (OOM) 错误&#xff1f;我们已经为您提供了保障。大型模型性能非…...

ASP.net web应用 GridView控件常用方法

GridView 控件是 ASP.NET Web Forms 中常用的数据展示控件之一。它提供了一个网格形式的表格&#xff0c;用于显示和编辑数据。GridView 控件对于包含大量数据、需要进行分页、排序和筛选的情况非常有用。 GridView 控件的主要特性包括&#xff1a; 数据绑定&#xff1a;GridV…...

MATLAB入门一基础知识

MATLAB入门一基础知识 此篇为课程学习笔记 链接: link 什么是MATLAB 平时所说的MATLAB既是一款软件又是一种编程语言&#xff0c;只是这种高级解释性语言是在配套的软件下进行开发的 MATLAB的一个特性 MATLAB的一个特性&#xff0c;如果一条语句以英文分号‘;’结尾&…...

SpringMVC实现文件上传和下载功能

文件下载 ResponseEntity用于控制器方法的返回值类型&#xff0c;该控制器方法的返回值就是响应到浏览器的响应报文。具体步骤如下&#xff1a; 获取下载文件的位置&#xff1b;创建流&#xff0c;读取文件&#xff1b;设置响应信息&#xff0c;包括响应头&#xff0c;响应体以…...

CHS零壹视频恢复程序OCR使用方法

目前CHS零壹视频恢复程序监控版、专业版、高级版已经支持了OCR&#xff0c;OCR是一种光学识别系统&#xff0c;通俗说就和扫描仪带的OCR软件一样的原理&#xff1a; 分析照片->OCR获取字符串->整理字符串->输出 使用方法如下&#xff08;以CHS零壹视频恢复程序监控版…...

云备份——服务端客户端联合测试

一&#xff0c;准备工作 服务端清空备份文件信息、备份文件夹、压缩文件夹 客户端清空备份文件夹 二&#xff0c;开始测试 服务端配置文件 先启动服务端和客户端 向客户端指定文件夹放入稍微大点的文件&#xff0c;方便后续测试断点重传 2.1 上传功能测试 客户端自动上传成功…...

L2 数据仓库和Hive环境配置

1.数据仓库架构 数据仓库DW主要是一个用于存储&#xff0c;分析&#xff0c;报告的数据系统。数据仓库的目的是面向分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持。-DW不产生和消耗数据 结构数据&#xff1a;数据库中数据&#xff0c;CSV文件 直接导入DW非结构…...

【iOS】MVC

文章目录 前言一、MVC各层职责1.1、controller层1.2、model层1.3、view层 二、总结三、优缺点3.1、优点3.2、缺点 四、代码示例 前言 MVC模式的目的是实现一种动态的程序设计&#xff0c;使后续对程序的修改和扩展简化&#xff0c;并且使程序某一部分的重复利用成为可能。除此…...

JavaScript-----jQuery

目录 前言&#xff1a; 1. jQuery介绍 2. 工厂函数 - $() jQuery通过选择器获取元素&#xff0c;$("选择器") 过滤选择器&#xff0c;需要结合其他选择器使用。 3.操作元素内容 4. 操作标签属性 5. 操作标签样式 6. 元素的创建,添加,删除 7.数据与对象遍历…...

Stream流

Stream操作流 在Java 8中&#xff0c;得益于Lambda所带来的函数式编程&#xff0c;引入了一个全新的Stream概念&#xff0c;用于解决已有集合类库既有的弊端。 1.1 集合的迭代 几乎所有的集合&#xff08;如 Collection 接口或 Map 接口等&#xff09;都支持直接或间接的迭代…...

javaee spring 声明式事务管理方式2 注解方式

spring配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframewo…...

基于SpringBoot+微信小程序的智慧医疗线上预约问诊小程序

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 近年来&#xff0c;随…...

注意力机制讲解与代码解析

一、SEBlock(通道注意力机制) 先在H*W维度进行压缩&#xff0c;全局平均池化将每个通道平均为一个值。 &#xff08;B, C, H, W&#xff09;---- (B, C, 1, 1) 利用各channel维度的相关性计算权重 (B, C, 1, 1) --- (B, C//K, 1, 1) --- (B, C, 1, 1) --- sigmoid 与原特征相…...

微调 TrOCR – 训练 TrOCR 识别弯曲文本

TrOCR(基于 Transformer 的光学字符识别)模型是性能最佳的 OCR 模型之一。在我们之前的文章中,我们分析了它们在单行打印和手写文本上的表现。然而,与任何其他深度学习模型一样,它们也有其局限性。TrOCR 在处理开箱即用的弯曲文本时表现不佳。本文将通过在弯曲文本数据集上…...

Jetsonnano B01 笔记7:Mediapipe与人脸手势识别

今日继续我的Jetsonnano学习之路&#xff0c;今日学习安装使用的是&#xff1a;MediaPipe 一款开源的多媒体机器学习模型应用框架。可在移动设备、工作站和服务 器上跨平台运行&#xff0c;并支持移动 GPU 加速。 介绍与程序搬运官方&#xff0c;只是自己的学习记录笔记&am…...

vue学习之v-if/v-else/v-else-if

v-else/v-else-if 创建 demo7.html,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Docum…...

ansible的安装和简单的块使用

目录 一、概述 二、安装 1、选择源 2、安装ansible 3、模块查看 三、实验 1、拓扑​编辑 2、设置组、ping模块 3、hostname模块 4、file模块 ​编辑 5、stat模块 6、copy模块&#xff08;本地拷贝到远程&#xff09; 7、fetch模块与copy模块类似&#xff0c;但作用…...

Android 状态栏显示运营商名称

Android 原生设计中在锁屏界面会显示运营商名称&#xff0c;用户界面中&#xff0c;大概是基于 icon 数量长度显示考虑&#xff0c;对运营商名称不作显示。但是国内基本都加上运营商名称。对图标显示长度优化基本都是&#xff1a;缩小运营商字体、限制字数长度、信号图标压缩上…...

10.Xaml ListBox控件

1.运行界面 2.运行源码 a.Xaml 源码 <Grid Name="Grid1"><!--IsSelected="True" 表示选中--><ListBox x:Name="listBo...

基于vue3和element-plus的省市区级联组件

git地址&#xff1a;https://github.com/ht-sauce/elui-china-area-dht 使用:npm i elui-china-area-dht 默认使用 使用方法 <template><div class"app"><!--默认使用--><elui-china-area-dht change"onChange"></elui-china…...

Paper: 利用RNN来提取恶意软件家族的API调用模式

论文 摘要 恶意软件家族分类是预测恶意软件特征的好方法&#xff0c;因为属于同一家族的恶意软件往往有相似的行为特征恶意软件检测或分类方法分静态分析和动态分析两种&#xff1a; 静态分析基于恶意软件中包含的特定签名进行分析&#xff0c;优点是分析的范围覆盖了整个代码…...

哪些网站专门做细胞的/微信营销的10种方法技巧

第十章&#xff1a;特殊类奇点拉勾网高级Java讲师目录1. 内部类2. 枚举3. 注解4. 总结和答疑第一节&#xff1a;内部类( 熟悉)内部类的基本概念• 当一个类的定义出现在另外一个类的类体中时&#xff0c;那么这个类叫做内部类( Inner)&#xff0c; 而这个内部类所在的类叫做外部…...

台州网站推广/自媒体培训

性能优化有三个层次&#xff1a;  系统层次  算法层次  代码层次 系统层次关注系统的控制流程和数据流程&#xff0c;优化主要考虑如何减少消息传递的个数&#xff1b;如何使系统的负载更加均衡&#xff1b;如何充分利用硬件的性能和设施&#xff1b;如何减少系统额外开销…...

网上做图赚钱的网站/品牌策划公司排行榜

SUID: 只对二进制程序有效执行者对于程序需要有x权限在程序运行过程中&#xff0c;执行者拥有程序拥有者的权限例如&#xff1a;普通用户执行passwd命令。首先查看passwd命令的绝对路径&#xff1a;查看passwd命令权限&#xff1a;passwd的拥有者是root&#xff0c;且拥有者权限…...

成都模板网站建设/站长之家官网登录入口

写在前面 项目开发中&#xff0c;记录错误日志有以下好处&#xff1a; 方便调试 便于发现系统运行过程中的错误 存储业务数据&#xff0c;便于后期分析 在java中&#xff0c;记录日志有很多种方式&#xff1a; 自己实现&#xff1a;自己写类&#xff0c;将日志数据&#xf…...

wordpress 导入导出/怎样设计一个网页

Hadoop生态圈-Kafka的旧API实现生产者-消费者 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 一.旧API实现生产者-消费者 1>.开启kafka集群 [yinzhengjies101 ~]$ more which xkafka.sh #!/bin/bash #author :…...

石家庄学做网站建设培训班/成都百度推广电话号码是多少

nuc977移植使用MQTT前言一、libuuid库的编译二、openssl库的编译三、mosquitto库的编译四、文件拷贝到开发板五、程序的编写运行最后前言 **   相关简介&#xff1a;   MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff0c;…...