01 2020 档案

摘要:概述 数据库用来存储数据。只要不是玩具项目,每个项目都需要用到数据库。现在用的最多的还是 MySQL, "PostgreSQL" 的使用也在快速增长中。 在 Web 开发中,数据库也是必须的。本文将介绍如何在 Go 语言中操作数据库,基于 MySQL。本文假定大家已经掌握了数据库和 MySQL 的基 阅读全文
posted @ 2020-01-22 06:27 darjun 阅读(612) 评论(1) 推荐(0)
摘要:简介 上一篇文章 "Go 每日一库之 viper" 中,我们介绍了 viper 可以监听文件修改进而自动重新加载。 其内部使用的就是 这个库,它是跨平台的。今天我们就来介绍一下它。 快速使用 先安装: 后使用: golang package main import ( "log" "github.c 阅读全文
posted @ 2020-01-21 06:43 darjun 阅读(4180) 评论(0) 推荐(1)
摘要:简介 上一篇文章介绍 "cobra" 的时候提到了 "viper" ,今天我们就来介绍一下这个库。 viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件; 可以设置监听配置文件的修改,修改时 阅读全文
posted @ 2020-01-20 08:18 darjun 阅读(1659) 评论(1) 推荐(0)
摘要:简介 "cobra" 是一个命令行程序库,可以用来编写命令行程序。同时,它也提供了一个脚手架, 用于生成基于 cobra 的应用程序框架。非常多知名的开源项目使用了 cobra 库构建命令行,如 "Kubernetes" 、 "Hugo" 、 "etcd" 等等等等。 本文介绍 cobra 库的基本 阅读全文
posted @ 2020-01-18 17:29 darjun 阅读(842) 评论(0) 推荐(0)
摘要:简介 ini 是 Windows 上常用的配置文件格式。MySQL 的 Windows 版就是使用 ini 格式存储配置的。 "go ini" 是 Go 语言中用于操作 ini 文件的第三方库。 本文介绍 库的使用。 快速使用 go ini 是第三方库,使用前需要安装: 也可以使用 GitHub 上 阅读全文
posted @ 2020-01-16 07:00 darjun 阅读(3680) 评论(0) 推荐(3)
摘要:简介 今天我们来看一个很小,很实用的库 "go homedir" 。顾名思义, 用来获取用户的主目录。 实际上,使用标准库 我们也可以得到这个信息: 那么为什么还要 库? 在 Darwin 系统上,标准库 的使用需要 cgo。所以,任何使用 的代码都不能交叉编译。 但是,大多数人使用 的目的仅仅只是 阅读全文
posted @ 2020-01-15 06:43 darjun 阅读(689) 评论(0) 推荐(0)
摘要:概述 在 Web 开发中,需要处理很多静态资源文件,如 css/js 和图片文件等。本文将介绍在 Go 语言中如何处理文件请求。 接下来,我们将介绍两种处理文件请求的方式:原始方式和 方法。 原始方式 原始方式比较简单粗暴,直接读取文件,然后返回给客户端。 上面我们创建了一个文件处理器,将它挂载到路 阅读全文
posted @ 2020-01-14 07:29 darjun 阅读(2298) 评论(0) 推荐(0)
摘要:简介 在 "上一篇文章" 中,我们介绍了 库。 库是用于解析命令行选项的。但是 有几个缺点: 不显示支持短选项。当然上一篇文章中也提到过可以通过将两个选项共享同一个变量迂回实现,但写起来比较繁琐; 选项变量的定义比较繁琐,每个选项都需要根据类型调用对应的 或`TypeVar`函数; 默认只支持有限的 阅读全文
posted @ 2020-01-13 21:29 darjun 阅读(1043) 评论(0) 推荐(0)
摘要:缘起 我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态。写博客是一种方式,但不是每天都有想写的,值得写的东西。 有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏差,或者细节还没有完全掌握,要去查资料,了解了之后又继续写,如此反复。 这样会导致一篇博客的耗时过长 阅读全文
posted @ 2020-01-13 21:10 darjun 阅读(513) 评论(0) 推荐(0)
摘要:概述 在 "上一篇文章" 中,我们介绍了 Go 模板库 。 库用于生成文本输出。在 Web 开发中,涉及到很多安全方面的问题。有些数据是用户输入的,不能直接替换到模板中,否则可能导致注入攻击。 Go 提供了 库处理这些问题。 提供了与 一样的接口。 我们通常使用 生成 HTML 输出。 由于 "上一 阅读全文
posted @ 2020-01-13 14:22 darjun 阅读(319) 评论(0) 推荐(0)
摘要:概述 模板引擎 是 Web 编程中必不可少的一个组件。 模板 能分离逻辑和数据,使得逻辑简洁清晰,并且模板可复用。引用第二篇文章 "《程序结构》" 一文中的图示,我们可以看到模板引擎在 Web 程序结构中的位置: 模板引擎按照功能可以划分为两种类型: 无逻辑模板引擎 :此类模板引擎只进行字符串的替换 阅读全文
posted @ 2020-01-13 14:19 darjun 阅读(238) 评论(0) 推荐(0)
摘要:概述 上一篇文章中,我们介绍了请求的结构与处理。本文将详细介绍如何响应客户端的请求。其实在前面几篇文章中,我们已经使用过响应的功能——通过 发送字符串给客户端。 但是这种方式仅限于发送字符串。本文我们将介绍如何定制响应的参数。 接口 如果你看了我前面几篇文章,应该对处理器和处理器函数都非常熟悉了。处 阅读全文
posted @ 2020-01-13 14:18 darjun 阅读(375) 评论(0) 推荐(0)
摘要:概述 前面我们学习了处理器和处理器函数,如何编写和注册处理器。本文我们将学习如何从请求中获取信息。 请求的结构 通过前面的学习,我们知道处理器函数需要符合下面的签名: 其中, 就是请求的类型。客户端传递的数据都可以通过这个结构来获取。结构 定义在包 net/http 中: 我们来看一下几个重要的字段 阅读全文
posted @ 2020-01-13 14:17 darjun 阅读(243) 评论(0) 推荐(0)
摘要:概述 一个典型的 Go Web 程序结构如下,摘自《Go Web 编程》: 客户端发送请求; 服务器中的多路复用器收到请求; 多路复用器根据请求的 URL 找到注册的处理器,将请求交由处理器处理; 处理器执行程序逻辑,必要时与数据库进行交互,得到处理结果; 处理器调用模板引擎将指定的模板和上一步得到 阅读全文
posted @ 2020-01-13 13:18 darjun 阅读(528) 评论(0) 推荐(0)
摘要:概述 计划写一个讲 Go Web 编程的系列文章。从基于 net/http 包编写 Go Web 程序开始,讲述处理器,请求,响应等基础知识。然后到框架的使用。中间会穿插一些源码的分析。最后做一个实战项目。 目前 Go 社区已经有非常多关于 Web 开发的库或框架。大而全的有 "beego" , " 阅读全文
posted @ 2020-01-13 13:16 darjun 阅读(284) 评论(0) 推荐(0)