avatar
文章
491
标签
109
分类
29
首页
归档
分类
标签
关于
xhj的博客12_网络 返回首页
首页
归档
分类
标签
关于

12_网络

发表于2024-11-03|更新于2026-06-10|Golang
|浏览量:

网络

TCP 服务器

服务端代码

客户端代码

HTTP 服务器

服务端代码

访问并读取页面数据(网络请求)

客户端代码

文章作者: xhj
文章链接: https://hzhzxfs.github.io/2024/11/03/12_%E7%BD%91%E7%BB%9C/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xhj的博客!
Golang
上一篇
1_基础知识
基础知识本部分内容会囊括原书的 前言、Go 语言的起源发展和普及、安装与运行环境、编辑器、集成开发与其它工具 等内容,且会省略很多介绍性的内容。 Go RuntimeGo 编译器直接产生本地可执行的代码,但这些代码仍运行在 Go 的 runtime 当中。这个 runtime 类似于 JAVA 中用到的 JVM,负责管理包括内存分配、垃圾回收、栈处理、goroutine、channel、切片等。 类似的,Go 拥有类似与 JAVA 的垃圾回收机制(标记-清除回收器)用于自动的垃圾回收操作。但同样的,自动的垃圾回收机制并不能规避所有因为内存带来的问题,分配和回收内容都是消耗 CPU 资源的行为。 Go 的可执行文件大小要比对应的源码文件要大很多,说明 Go 的 runtime 嵌入到了每一个可执行文件中,相对于较大的文件大小,Go 编译出来的程序的部署要更加的方便,因为它只需要一个静态文件即可,而避免了像 Python 那样需要为不同版本的依赖甚至是软件额外处理的麻烦。 调试器fmt.Printf() 中的占位符说明 %+v 打印包括字段在内的实例完整信息 %#v 打印包括字段和限...
下一篇
11_协程与通道
协程与通道并发、并行和协程协程定义 并发:一个并发程序能在一个处理器或内核使用多个线程执行 并行:一个并行程序在某个时间点能使用多个处理器资源 goroutine 是根据一个或以上的线程的可用性,映射在它们之上;协程调度器在 Go 运行的时候就能完成对协程的调度。 goroutine 和 coroutine 的区别: goroutine 意味着并行,协程一般来说并不能这样 goroutine 通过信道来相互通信;coroutine 通过让出和恢复操作来通信 协程间的信道channel 的创建123456// var identifier chan datatypevar a chan stringa = make(chan string)// ORa := make(chan string) 通信操作符 <- 发送ch <- int1 用通道 ch 发送变量 int1 接收int2 = <- ch 12345678910111213141516171819202122232425262728293031package mainimport ( ...
相关推荐
2024-11-01
10_错误处理及测试
错误处理及测试
2024-11-08
5_数组与切片
数组与切片新建一个数组的方法1234aList [5]intbList = []int{1, 2}cList = []int{1: 1, 4: 2}dList = new([]int) 新建一个切片的方法12345slice := make([]int, 10)var slice []int = make([]int, 10)// 以下两种方式的效果是一样的slice := new([100]int)[0:50]slice := make([]int, 50, 100) make 函数的定义如下: 12func make([]type, len, cap)// len 为初始化时占用长度, cap 为可选参数容量 new 函数和 make 函数的区别: 主要功能都是在堆上面分配内存给需要的结构体。 new 函数为每个新的类型 T 分配一片内存,初始化为 0 并且返回 *T 的内存地址,这种申请方式会返回一个 T 类型初始值为 0 的指针。 make 函数返回一个类型为 T 的初始值,它只适用于创建 slice, map 和 chan...
2024-11-07
4_函数
函数函数介绍Go 中的函数重载是被禁止的,即不能通过不同的参数传递执行同名函数的不同功能。 Go 中没有泛型的概念,因此它不支持那种支持多种类型的函数,不过大部分情况可以使用 interface 跟反射来实现相似的功能。 传递变长参数如果某个函数的最后一个参数采用 …type 的形式,那么这个函数就可以用来处理一个变长的参数,这个长度可以是 0,这样的函数称为变参函数。 12345func SampleFunc(prefix string, who ...string)SampleFunc("Hello", "world1", "world2", "world3") defer 和追踪关键字 defer 允许在 函数执行完之前或 return 执行完之后 推迟执行某一段代码,类似于其它语言中的 finally 关键字。 当有多个 defer 行为被注册时,它们会逆序执行(类似于栈) Go 的内置函数 名称 说明 close 用于关闭管道通信 len 返回某个类型的长度或者数量(...
2024-11-04
1_基础知识
基础知识本部分内容会囊括原书的 前言、Go 语言的起源发展和普及、安装与运行环境、编辑器、集成开发与其它工具 等内容,且会省略很多介绍性的内容。 Go RuntimeGo 编译器直接产生本地可执行的代码,但这些代码仍运行在 Go 的 runtime 当中。这个 runtime 类似于 JAVA 中用到的 JVM,负责管理包括内存分配、垃圾回收、栈处理、goroutine、channel、切片等。 类似的,Go 拥有类似与 JAVA 的垃圾回收机制(标记-清除回收器)用于自动的垃圾回收操作。但同样的,自动的垃圾回收机制并不能规避所有因为内存带来的问题,分配和回收内容都是消耗 CPU 资源的行为。 Go 的可执行文件大小要比对应的源码文件要大很多,说明 Go 的 runtime 嵌入到了每一个可执行文件中,相对于较大的文件大小,Go 编译出来的程序的部署要更加的方便,因为它只需要一个静态文件即可,而避免了像 Python 那样需要为不同版本的依赖甚至是软件额外处理的麻烦。 调试器fmt.Printf() 中的占位符说明 %+v 打印包括字段在内的实例完整信息 %#v 打印包括字段和限...
2024-11-06
3_控制结构
控制结构switch 结构Go 中的 switch-case 结构和 C++ 中的选择结构并不相同。 12345678i := 1switch i { case 0: func1() case 1: func2() // ... default: funcd()} 而 C++ 代码停止 switch 操作需要手动 break。 1234567i = 1switch(i) { case 1: func1(); break; case 2: func2(); break; //... default:funcd();} Go 中将这种特性去除,如果确实需要在执行完 case 的情况下还要继续执行,可以在后面添加关键字 fallthrough。如 Go代码: 1234567891011121314151617181920k := 6switch k {case 4: fmt.Println("was <= 4") fallthroughcase 5...
2024-11-12
9_读写数据
读写数据读取用户输入 类似于 C 中的 scanf() 函数, Go 中也有对应的针对标准输入输出函数。 12345678910111213141516171819202122232425package mainimport "fmt"var ( str string input = "11.22 / 12 / Python" format = "%f / %d / %s" f_num float32 i_num int s string)func main(){ // 从标准输出框中读取 fmt.Println("This is a test for a scanf function...") fmt.Scanln(&str) // Scanln 扫描来自标准输入的文本,空格分割 // fmt.Scanf("%s", str) // Scanf ...
avatar
xhj
相关学习笔记
文章
491
标签
109
分类
29
Follow Me
公告
欢迎来到我的博客
目录
  1. 1. 网络
    1. 1.1. TCP 服务器
    2. 1.2. HTTP 服务器
    3. 1.3. 访问并读取页面数据(网络请求)
最新文章
Multi-Agent2026-06-03
Multi-Agent vs Single-Agent2026-06-02
Harness Engineering2026-06-01
25-架构模式总结2026-05-25
24-Skill-Plugin开发实战2026-05-24
© 2025 - 2026 By xhj框架 Hexo 8.1.2|主题 Butterfly 5.5.4