在网站上进行的每一次交互,其实其内部所经历的过程可以简化为3步: 1.发送请求 2.服务器端进行处理 3.请求响应 为什么要提到上面的交互过程呢?因为最近有读者建议讲一下网站交互,所以现在我们结合网站交互过程进行我们今天的Go web旅程之源码解析。 我们都知道网站是采用http协议进行数据传送的。http请求是由三部分组成,分别是:请求行、请求头、请求主体。下面是访问google时的请求
据说Go语言设计出来就是为了解决web软件的并发等诸多问题的,所以Go语言又被称为互联网中的c语言。一般的web应用采用的是"请求-响应"模式。在Go web中数据请求与数据返回相当于是基于"请求-响应"模式的web程序的输入输出。而其中数据在不同地方或者叫层次上有不同的表现形式,在客户端上数据一般采用字符串形式体现,而在后台数据一般体现为结构体或对象,这中间的转换需要相应的工具。 用ser
Go web之旅此篇开始将开启Go web之旅,我将这趟旅途分为三个子旅程:源码解析框架解读中间件使用所以在这趟旅途中我们将领略源码之雄伟,框架之奇艳,中间件之灵秀。在接下来的时间里我会按照上面的目录依次讲解。 现在开始踏上Go web的旅程。func firstHandler(w http.ResponseWriter, r *http.Request) { io.WriteS
Go 读取文本文件工作中时不时需要读取文本,文本文件是最常见的文件类型。本文将从逐行、逐个单词和逐个字符三个方法读取文件:byLine.gobyWord.gobyCharacter.go逐行读取文本文件逐行读取文件是最为常见的文本文件,也是最为简单的方式。首先我们需要导入几个常见的包:bufio:缓存区读写文件flag:命令行参数解析package mainimport (
使用 Go语言开发过程中,我们不免会定义结构体,但是我们定义的结构体都是有字段的,基本不会定义不包含字段的 空结构体。你可能会反过来问,没有字段的空结构体有什么用呢?那么我们这篇文章就来研究下空结构体吧!
15.1、http协议15.1.1、简介HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于万维网(WWW:WorldWideWeb)服务器与本地浏览器之间传输超文本的传送协议。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议工作于客
有人把Go语言比作21世纪的C语言,第一是因为Go语言设计简单,第二则是因为21世纪最重要的就是并发程序设计,而Go从语言层面就支持并发。同时实现了自动垃圾回收机制。Go语言的并发机制运用起来非常简便,在启动并发的方式上直接添加了语言级的关键字就可以实现,和其他编程语言相比更加轻量。14.1、并发技术14.1.1、操作系统的进程、线程发展!image.png(https://s2.51cto.co
Go语言的反射反射是语言里面是非常重要的一个特性,我们经常会看见这个词,但是对于反射没有一个很好的理解,主要是因为对于反射的使用场景不太熟悉。一、理解变量的内在机制1.类型信息,元信息,是预先定义好的,静态的。2.值信息,程序进行过程中,动态变化的。二、反射和空接口1.空接口相当于一个容器,能接受任何东西。2.那怎么判断空接口变量存储的是什么类型呢?之前有使用过类型断言,这只是一个比较基础的方法3
网络编程:使用编程语言实现多台计算机的通信。13.1、网络三要素网络编程三要素:(1)IP地址:网络中每一台计算机的唯一标识,通过IP地址找到指定的计算机。(2)端口:用于标识进程的逻辑地址,通过端口找到指定进程。(3)协议:定义通信规则,符合协议则可以通信,不符合不能通信。一般有TCP协议和UDP协议。(1)IP地址计算机分布在世界各地,要想和它们通信,必须要知道确切的位置。确定计算机位置的方式
Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go语言中为我们提供了很多内置包,如 fmt、os、io 等。任何源代码文件必须属于某个包,同时源码文件的第一行有效代码必须是package pacakgeName 语句,通过该语句声明自己所在的包。
十、接口(interface)10.1、楔子10.1.1、多态的含义在java里,多态是同一个行为具有不同表现形式或形态的能力,即对象多种表现形式的体现,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。如下图所
Go语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由int、char、float等基本类型组成的。你可以认为结构体是一种聚合类型。在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。typeStudentstr
8.1、编码8.1.1、编码历史!image.png(https://s2.51cto.com/images/20220120/1642654438866116.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3po
公司证书过期时间扫描(golang)//将公司所有A记录域名解析导出//将域名拼接为https://+域名//设置超时时间,并发扫描域名//无响应,不正确域名直接抛弃//打印所有有结果域名过期信息packagemainimport("bufio""context""fmt""io""log""net/http""os""strings""sync""time")typeCertstruct{Nam
Go 入门很简单:数据 I/O 对象及操作使用通用 I/O 的接口Go 的标准库提供了大量的 I/O 接口。最佳实践就是尽可能使用这些接口而不是传结构体或者其他类型。
最常用的接口就是 io.Reader 和 io.Writer:type Reader interface { Read(p []byte) (n int, err error)}type Writer inter
设计一个程序:/打印两个六层菱形期待结果:/如果没有函数,我们的实现方式://打印菱形//层数varnint=6fori:=1;i<=n;i{fork:=1;k<=ni;k{fmt.Print("")}forj:=1;j<=2i1;j{fmt.Print("")}fmt.Println()}fori:=n1;i=1;i{fork:=1;k<=ni;k{fmt.Print("")}forj:=1;j
六、容器数据类型6.1、数组我们之前学习过变量,当存储一个学生名字时可以name="yuan",但是如果班级有三十人,每个人的名字都想存储到内存中怎么办呢?总不能用三十个变量分别存储吧,这时数组就可以发挥作用了。数组其实是和字符串一样的序列类型,不同于字符串在内存中连续存储字符,数组用的语法将同一类型的多个值存储在一块连续内存中。6.1.1、数组的声明语法var数组名元素数量元素类型varname
程序是由语句构成,而流程控制语句是用来控制程序中每条语句执行顺序的语句。可以通过控制语句实现更丰富的逻辑以及更强大的功能。几乎所有编程语言都有流程控制语句,功能也都基本相似。其流程控制方式有1.顺序结构2.分支结构3.循环结构这里最简单最常用的就是顺序结构,即语句从上至下一一执行。!image.png(https://s2.51cto.com/images/20220116/16423318903
Go语言的 io 包定义了io相关的接口规范,不同的数据类型可以根据规范去实现相应的方法,提供更加丰富的功能。Go 语言提倡小接口 + 接口组合的方式,io包就是典范,一起来学习下吧!!!
本篇文章对Go语言 io包的源码进行了详细解读,学习了各个方法的实现逻辑,进一步巩固了io包中相关接口的定义。了解了源码底层实现逻辑后,用起来才能更加得心应手。
Go语言的 io 包定义了io相关的接口规范,不同的数据类型可以根据规范去实现相应的方法,提供更加丰富的功能。Go 语言提倡小接口 + 接口组合的方式,io包就是典范,一起来学习下吧!!!
在网络中传递参数时,我们经常会对参数进行Base64编码,那么Go 语言中如何进行Base64编码呢?Base64编码的原理是怎样的呢?通过这篇文章一起来了解下吧!
介绍项目开发过程中,一个不可避免的问题就是密码安全问题。实际上,我们经常能看到很多新闻的密码泄露事件,很多传统的企业密码采用明文存储,一旦发生安全事件,损失极大。如何保证用户的密码安全,让用户放心,就是一个开发者最该考虑的事情。目前常用的加解密的方式无非三种:对称加密,加解密都使用的是同一个密钥, 其中的代表就是 AES、DES;非对加解密,加解密使用不同的密钥, 其中的代表就是 RSA、椭圆曲线
4.1、注释注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是开发人员一个非常重要的习惯,也是专业的一种表现。单行注释是最常见的注释形式,你可以在任何地方使用以//开头的单行注释。多行注释也叫块注释,均已以/开头,并以/结尾。注释只是为了提高可读性,不会被计算机编译。!image.png(https://s2.51cto.com/images/20220115/1642242
基础部分:一、GO语言入门计算机介绍二、Go语言开篇介绍三、Go环境安装四、GO基础语法五、GO流程控制语句六、GO编程容器数据类型七、GO函数八、GO编程文件操作九、GO编程结构体十、GO编程接口(interface)十一、GO编程包管理(gomodule)十二、GO编程网络编程十三、GO语言并发编程十四:Go编程基础测试题GO框架部分文章十五、GO语言web开发十六:GO编程Gin框架Gin软
二、编程语言介绍2.1、什么是编程语言编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样)。就像我们中国人之间沟通需要汉语,英国人沟通需要英语一样,人与计算机之间进行沟通需要一门语言作为介质,即编程语言。编程语言的发展经历了机器语言(指令系统)=汇编语言=高级语言(C、java、Go等)。计算机在设计中规定了一组指令(二级制代码),
百度网盘获取课程一. 基本结构,基本数据类型1. 文件名、关键字与标识符Go 的源文件以 .go 为后缀名存储在计算机中,这些文件名均由小写字母组成,如 scanner.go 。如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 scanner_test.go 。文件名不包含空格或其他特殊字符一个源文件可以包含任意多行的代码,Go 本身没有对源文件的大小进行限制。go语
在日常工作中,除了需要从 JSON 转化为 Go 的数据结构。但往往相反的情况是:我们需要将数据以 JSON 字符串的形式发送到 Web服务器。今天我们将学会如何从一个结构化数据编码为 JSON 。结构体转为 JSON 格式比如,我们有如下的结构体:type Student struct { Name string Age int Address Address}type Add