go语言中open函数 go语言 opengl( 二 )


为go语言中open函数了防止文件忘记关闭,go语言中open函数我们通常使用defer注册文件关闭语句 。
Read方法定义如下:
它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF。举个例子:
使用for循环读取文件中的所有数据 。
bufio是在file的基础上封装了一层API,支持更多的功能 。
io/ioutil 包的 ReadFile 方法能够读取完整的文件 , 只需要将文件名作为参数传入 。
os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能 。
其中:
name :要打开的文件名flag :打开文件的模式 。模式有以下几种:
perm :文件权限,一个八进制数 。r(读)04 , w(写)02,x(执行)01 。
golangsqlx事务是用的一个连接?在使用sqlx库go语言中open函数的事务功能时go语言中open函数,会使用一个数据库连接来执行事务中的所有操作 。具体来说go语言中open函数 , 在Golang中使用sqlx库时,事务由内部事务结构来表示,该结构可以包含一个或多个命令 , 每个命令都可以使用相同的数据库连接来执行 。
在使用事务时,需要首先使用Open()或必要的db连接函数打开一个数据库连接 。接下来 , 可以通过db.Begin()函数开始一个事务 。此时,会创建一个内部事务对象并使用一个已经打开的数据库连接来驱动它 。如果已经存在一个正在进行的事务,则Begin()函数将开始一个子事务,这个子事务共享父事务中的同一个数据库连接 。
在事务中执行的所有操作都必须使用事务对象来执行,例如go语言中open函数:tx.Exec()、tx.Query()、tx.QueryRow()等 。执行完所有的事务操作,需要将事务提交到数据库,并使用tx.Commit()进行提交 。如果遇到错误需要回滚事务时,则可以调用tx.Rollback()来撤销整个事务 。
总而言之,Golang中的sqlx库事务使用一个数据库连接来驱动 , 事务中所有的操作都使用同一个内部事务对象执行,并最终通过tx.Commit()或tx.Rollback()来提交或回滚事务 。
Go 语言自我提升 (三次握手 - 四次挥手 - TCP状态图 - udp - 网络文件传输)三次握手:
1. 主动发起连接请求端(客户端),发送 SYN 标志位,携带数据包、包号
2. 被动接收连接请求端(服务器),接收 SYN,回复 ACK,携带应答序列号 。同时,发送SYN标志位 , 携带数据包、包号
3. 主动发起连接请求端(客户端),接收SYN 标志位,回复 ACK 。
被动端(服务器)接收 ACK —— 标志着 三次握手建立完成( Accept()/Dial() 返回 )
四次挥手:
1. 主动请求断开连接端(客户端),发送 FIN标志,携带数据包
2. 被动接受断开连接端(服务器),发送 ACK标志,携带应答序列号 。—— 半关闭完成 。
3. 被动接受断开连接端(服务器) ,  发送 FIN标志,携带数据包
4. 主动请求断开连接端(客户端),发送 最后一个 ACK标志,携带应答序列号 。—— 发送完成 , 客户端不会直接退出 , 等 2MSL时长 。
等 2MSL待目的:确保服务器 收到最后一个ACK
滑动窗口:
通知对端本地存储数据的 缓冲区容量 。—— write 函数在对端 缓冲区满时,有可能阻塞 。
TCP状态转换:
1. 主动发起连接请求端:
CLOSED —— 发送SYN —— SYN_SENT(了解) —— 接收ACK、SYN,回发 ACK —— ESTABLISHED (数据通信)
2. 主动关闭连接请求端:
ESTABLISHED —— 发送FIN —— FIN_WAIT_1 —— 接收ACK —— FIN_WAIT_2 (半关闭、主动端)
—— 接收FIN、回复ACK —— TIME_WAIT (主动端) —— 等 2MSL 时长 —— CLOSED

推荐阅读