go字符串处理
go字符串处理1.字符串操作1234567891011121314151617181920212223242526272829303132333435363738package mainimport ( "fmt" "strings")var ( strs []string = []string{"hello", "world", "mebaron", "123654789963852741"} str string = "akhuiabjka1563afadf74a3ssf55sfa44a" sep string = "a")func main() { // 判断s中是否包含substr。 fmt.Printf("strings.Contains(str, sep): %v\n", strings.Contains(str, sep)) // 字符串连接,把slic ...
go文件操作
go文件操作1.目录操作123456789101112131415161718192021package mainimport "os"func main() { // 创建名称为name的目录,权限设置是perm。 os.Mkdir("temp1", 0666) // 创建多级子目录,权限设置是perm。 os.MkdirAll("temp2/test/conf", 0666) // 删除名称为name的目录,当目录下有文件或者其他目录会出错。 os.Remove("temp1") // 删除多级子目录。 // path = "temp2/test/conf",则只删除conf目录 // path = "temp2",删除temp2及其子目录 os.RemoveAll("temp2")}
2.文件操作2.1.新建与打开文件12345678910111213141516171819202122232425package mai ...
go正则处理
go正则处理1.正则表达式语法go的regexp正则表达式库采用RE2语法,细节可参考文档,常见的用法如下:
字符
描述
[ABC]
匹配 […] 中的所有字符。
[^ABC]
匹配除了 […] 中字符的所有字符。
[A-Z]
[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。
.
匹配除换行符(\n、\r)之外的任何单个字符。要匹配 . ,请使用 \. 。
[\s\S]
匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。
\w
匹配字母、数字、下划线。等价于 [A-Za-z0-9_]。
\d
匹配任意一个阿拉伯数字(0 到 9)。等价于 [0-9]。
^
匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 ^。
$
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。
( )
标记一个 ...
go文本处理
go文本处理1.xml处理待解析的xml文件:
1234567891011121314151617181920<bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> ...
go操作cookie和session
go操作cookie和session1.cookiecookie是由浏览器维持的,存储在客户端的一小段文本信息,伴随着用户请求和页面在web服务器和浏览器之间传递。
cookie是有时间限制的,根据生命周期的不同分成两种:会话cookie和持久cookie;如果不设置过期时间,则表示这个cookie生命周期为从创建到浏览器关闭为止,只有关闭浏览器窗口,cookie就消失了,这种生命周期为浏览会话期的cookie称为会话cookie;如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间,这类cookie被称为持久cookie。
1.1.go操作cookie123456789101112131415161718192021222324252627282930313233343536373839package mainimport ( "fmt" "log" "net/http" "time")func main() { http ...
go访问数据库
go访问数据库提前准备的数据表结构:
123456789101112131415CREATE TABLE `userinfo` ( `uid` INT(10) NOT NULL AUTO_INCREMENT, `username` VARCHAR ( 64 ) NULL DEFAULT NULL, `departname` VARCHAR ( 64 ) NULL DEFAULT NULL, `created` DATE NULL DEFAULT NULL,PRIMARY KEY ( `uid` ) )CREATE TABLE `userdetail` ( `uid` INT ( 10 ) NOT NULL DEFAULT 0, `intro` TEXT NULL, `profile` TEXT NULL,PRIMARY KEY ( `uid` ) )
1.go操作MySQL数据库案例使用的是github.com/go-sql-driver/mysql的MySQL驱动,该驱动完全支持database/sql接口,支持keepalive。
123456789101112131415161 ...
go处理表单
go处理表单1.处理表单输入前端样例:
123456789<!DOCTYPE html><body> <form action="http://127.0.0.1:8080/login" method="post"> 用户名:<input type="text" name="username"> 密码:<input type="password" name="password"> <input type="submit" value="login"> </form></body></html>
后端样例:
12345678910111213141516171819202122232425262728293031323334package mainimport ( &q ...
go实现web服务器
Web基础1.统一资源定位符URL(Uniform Resource Location)1schema://host[:port]/path/.../[?query-string][#anchor]
schema:指定使用的协议(如http、https、ftp等)。
host:服务器的IP地址或者域名。
port:服务的监听端口(http的默认端口是80,https的默认端口是443可以省略)。
path:访问资源的路径。
query-string:发送给服务器的数据。
anchor:锚
2.go实现一个简单的web服务器12345678910111213141516171819202122package mainimport ( "fmt" "log" "net/http")func main() { // 注册路由 http.HandleFunc("/", helloworld) //启动服务 err := http.ListenAndServe(":808 ...
域名系统DNS
域名系统DNSDNS服务器存储了一个有着IP地址和DNS名字映射资源记录的数据库,并将其和客户端与其他DNS服务器共享。
1.DNS数据包结构
偏移位
0-15
16-31
0
DNS ID号
QR | 操作代码| AA | TC | RD | RA | Z | 响应代码
32
问题计数
回答区段
64
域名服务器计数
额外记录计数
96
问题区段
回答区段
128
权威区段
额外信息区段
DNS ID号(DNS ID Number):用来应对DNS查询和DNS响应。
查询/响应(Query/Response):用来指明这个数据包是DNS查询还是响应。
操作代码(OpCode):用来定义消息中的请求类型。
权威应答(Authoritative Answer):如果响应数据包中设定了这个则说明这个响应是由域内权威域名服务器发出的。
截断(Truncation):用来指明这个响应由于太长,无法装入数据包而被截断。
期望递归(Recursion Desired):当请求中设定了这个值,则说明DNS客户端在目标域名服务器不含有所请求信息的情况下,要求进行递归查询 ...
动态主机配置协议DHCP
动态主机配置协议DHCP1.什么是DHCPDHCP是一个应用层协议,能够让设备自动获取IP地址(以及其他重要网络资源,比如DNS服务器和路由网关的地址)。
2.DHCP头结构
偏移位
0-15
16-31
0
操作代码|硬件类型
硬件长度|跳数
32
事务id
64
消耗时间
标记
96
客户端IP地址
128
你的IP地址
160
服务器IP地址
196
网关IP地址
228+
客户端硬件地址(16字节)
服务器主机地址(64字节)
启动文件(128字节)
选项
操作代码(OpCode):用来指出这个数据包是DHCP请求还是DHCP回复。
硬件类型(Hardware Type):硬件地址类型(10MB以太网、IEEE802等)。
硬件长度(Hardware Length):硬件地址长度。
跳数(Hops):中继代理用来帮助寻找DHCP服务器。
事务ID(Transaction ID):用来匹配请求和响应的一个随机数。
标记(Flags):DHCP客户端能够接受的流量类型(单播、广播以及其他)。
客户端IP ...