![](https://img-blog.csdnimg.cn/20210222230803398.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Golang
Go (sometimes called Golang) is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Alphathur
码路漫漫修远兮,吾将原创而求索。
展开
-
Golang-写文件
和读取文件类似,Go通过os或者ioutil包可以实现写文件操作。采用os写文件一般是通过Open或者Create函数返回结构体File,再通过File自带的函数进行写入操作。而采用ioutil本质也是利用os写文件,只不过做了一层封装。通过os.Open函数打开文件,如果文件不存在则返回错误。通过os.Create函数创建文件,如果文件已经存在则清空文件内容。写文件都是基于[]byte进行的操作,如果你需要提前了解string和[]byte相互转换的操作。b := []byte("ABC€")f原创 2021-03-14 21:06:10 · 915 阅读 · 7 评论 -
Golang-读取文件
Go读取文件一般有两种方式,一种方式是采用os包下的os.open函数进行流式读取,另一种方式是采用ioutil包的ioutil.ReadFile函数进行读取,二者的区别在于后者会一次性将文件内容加载到内存中。本文通过具体的实例来演示具体读取文件的方式。原创 2021-03-14 19:14:02 · 1224 阅读 · 1 评论 -
Golang-Bcrypt加密
从安全上讲,用户密码一般都是要经过加密(而且不能被解密)后才存储于数据库中,相信现在已经没有什么公司蠢到直接以明文存储密码了吧。通常有很多方式可以实现密码加密,譬如MD5签名,虽然MD5算法不可逆,然而每次使用MD5生成的字符串都是固定的,这就给暴力破解留下了余地。如果使用Bcrypt算法加密,那么每次生成的字符串都是不同的,这样产生的密文基本无法破解。Java语言的spring-security 框架内置了BCryptPasswordEncoder来实现Bcrypt加密。当然Go也提供了类似的包实现加密原创 2021-03-10 23:59:26 · 1630 阅读 · 0 评论 -
Golang-websocket编程
Go实现websocket编程,需要引入外部包gorilla/websocket。我们启动一个http服务器,指定根路径路由到一个html页面,该页面用来模拟websocket通信的客户端,页面会提供一个按钮触发一段执行websocket通信的js。服务端接收到websocket请求,然后将请求的内容完整地响应给浏览器。原创 2021-03-10 23:21:46 · 418 阅读 · 0 评论 -
Golang-json解析
Go内置了 encoding/json 包可以很方便的将json字符串解析成结构体,或者将结构体解析成json字符串使用json.NewDecoder(r.Body).Decode(&user)结构体转json字符串使用json.NewEncoder(w).Encode(peter)通过在结构体字段后面添加`json:“xxx” `以实现将该字段转换为特定的json字段,否则按原始字段输出。原创 2021-03-10 22:46:40 · 645 阅读 · 0 评论 -
Golang-session管理
本文将演示如何通过包 gorilla/sessions 做session管理,session是服务端存储用户数据的形式,浏览器的每次请求,都会将存储用户信息的cookie发送给服务端。由于http协议是无状态的,所以通过cookie session 记录用户的登录状态是一种再常见不过的方式。本文将通过一个实例演示三个页面来模拟 登录认证,授权访问,注销登录的三个过程。用户首先会访问/login,服务端通过session记录用户登录状态,并将cookie信息返回给用户原创 2021-03-10 22:02:22 · 1143 阅读 · 1 评论 -
Golang-日志中间件
restful服务中,通常需要将请求信息记录到日志中。以下例子中展示了go如何实现一个简单的日志中间件。它的基本原理是将业务函数(本例 foo/bar)作为参数传递个日志函数(本例 logging)中,然后将日志函数作为参数交给http.HandleFunc即可。package mainimport ( "fmt" "log" "net/http")func logging(f http.HandlerFunc) http.HandlerFunc { retur原创 2021-02-28 23:58:03 · 835 阅读 · 0 评论 -
Golang-Form表单提交
go提供html/template用于解析html模板文件,将模板文件提交的输入转换成结构体并用于渲染。package mainimport ( "html/template" "net/http")type ContactDetails struct { Email string Subject string Message string}func main() { tmpl := template.Must(template.ParseFiles("H:\\go\\ma原创 2021-02-28 23:16:16 · 2157 阅读 · 0 评论 -
Golang-访问MySQL数据库
go自身提供了database/sql这个包来做数据库访问层的抽象,相当于接口层。但是要访问具体的数据库,需要安装该数据库对应的驱动,对于MySQL来说,执行以下命令安装驱动:go get -u github.com/go-sql-driver/mysql有了驱动,后面访问数据库就很简单了。连接MySQL通过sql.open设置连接参数。db, err := sql.Open("mysql", "username:password@(127.0.0.1:3306)/dbname?parseTim原创 2021-02-25 00:00:13 · 418 阅读 · 0 评论 -
Golang-HTTP动态路由
在Restful服务中,我们可能期望实现这样的需求。接口路径相同,但是根据不同的请求方式,进行不同的处理请求将某个路径的请求转发到另一条主机将 https 和 http 请求交给不同的handler处理根据路径前缀匹配不同的子路由,转发给不同handler处理强大的gorilla/mux即可实现这些需求原创 2021-02-24 22:34:51 · 2367 阅读 · 0 评论 -
Golang-HTTP参数路由
动态路由,即请求路径并不是固定的,请求路径中的部分参数是请求参数,这在restful服务中非常常见,例如Java从Spring 3.0开始就提供了`@PathVariable`这个注解实现这样一个动态路由的效果。在Go中如果要实现这样的动态路由,需要安装外部包[gorilla/mux]('https://github.com/gorilla/mux')原创 2021-02-23 22:36:45 · 1562 阅读 · 0 评论 -
Golang-搭建一个简单的HTTP服务器
在本例中,我们将通过Go语言创建一个基本的HTTP服务器。首先,试想一个基本的HTTP服务器应该具备基本功能大概有哪些。处理动态请求:处理来自浏览网站、登录帐户或发布图像的用户的传入请求。静态资源服务:为浏览器提供JavaScript、CSS和图像等静态资源服务。接受连接:HTTP服务器必须监听特定端口以接受来自internet的连接。原创 2021-02-23 00:34:30 · 3132 阅读 · 1 评论