古老的榕树

Go 世界里的失落园和园丁

Go 语言从2006年到2022年,已经历了15个年头,创始人 Ken Thompson 肯·汤普逊 到项目 Leader 领导 Russ Cox 拉斯·考克斯,尽管人和事变迁,甚至有些已经物是人非,但 Go 语言将一直高效持续发展下去,直至从一门新语言变成成熟语言,往顶级主流语言推进,成为一门顶级语言过程中肯定会出现一些影响行业的项目,如 Docker, K ubernet ... 阅读全文
发表于 2022-02-27 17:01 阅读(156) 评论(0) 赞(28)

Go 1.18 即将发布

看 Go 官网博客介绍,Go 1.18 Bata2 已经发布,正式版将会在 2022年3月份发布出来,这个版本绝对是一个里程碑的版本,不亚于 1.0 的发布。这次主要是语言加入了泛型,影响是很深远的,基本之前的底层包的类型和函数都被翻了一遍,并且以后使用带泛型的 Go 语言,在使用上也是有很大的区别的,2022年,注定很多第三方类库会因此做出相 ... 阅读全文
发表于 2022-02-19 15:02 阅读(162) 评论(1) 赞(3)

Go 交叉编译部署

Go 服务部署在 Linux 服务器上,比如我常用 Debian 部署 Go 写的微服务,都懒得在服务器上安装设置 Go 语言环境了,直接在本地 PC 机编译为 Go 二进制文件,放在任意文件夹下,启动即可。 但是自己开发的环境不是 Linux 系统,可能是 Windows 或 MacOS ,这是就用到交叉编译了,什么交叉编译? 交叉编译,就是打包的系统和执行的系统 ... 阅读全文
发表于 2022-01-02 22:09 阅读(312) 评论(6) 赞(24)

到2021年了,现在究竟谁是 Go 项目的老大?

最近 Go 项目开发小组讨论最多的,应该是泛型相关的东西,泛型的引入,会使 Go 语言发生极大的改变,以前底层 API 函数,都需要做调整,工作可谓是大工程,开发的进程中,也遇到了不少的问题,需要讨论和定稿,github 最近出来了 Discussions 功能,就是专门用于讨论项目问题而生的。 现在 Go 语言的三大创始人 Ken Thompson 肯·汤普 ... 阅读全文
发表于 2021-09-17 14:27 阅读(411) 评论(2) 赞(38)

Go 1.17 尝鲜

Go 1.17 在 2021年08月17日发布,官方称 Go 1.17 性能提升了 5% 左右,编译包体积缩小 2%,自己亲自重新编译了 myblog,体积真的变小了,从原来的 10.73 变成了 8.87 M,性能也得到相应的提升,另外更让人意外的是,内存使用率从原来的 30-40M 降低到现在的 12-16 M 之间。网友特意试用一下泛型是否开启,结果可以用: package main i ... 阅读全文
发表于 2021-08-19 09:23 阅读(411) 评论(0) 赞(24)

用 Go 开发终端接口服务--写在最后

本系列教程,所讲到的内容,源码不能一一列举,以下是 chapter01 源码,读者可以自行下载和学习。下载地址: https://github.com/panjunjie/course/blob/master/chapter01.zip 源码要正常运行,除了配置 Go 环境之外,还需要注意以下事项: 本教程项目数据库为 MySQL 5.6 ,数据库生成脚本位于根目录下的 database.sql 文件里,读者可 ... 阅读全文
发表于 2019-05-14 18:57 阅读(2715) 评论(0) 赞(0)

用 Go 开发终端接口服务--保证高性能项目的法宝

我们在《 准备项目所需的 Go 类包 》章节里,选择所需的类包,其实是为保证项目的高性能做好了准备。整个项目自上而下,我们都尽量避免产生性能损耗发生的情况。 最顶层路由器部分,是终端每次请求服务必经的模块,我们直接放弃了第三方的路由器,采用 Go 原生内置的 ServeMux 路由器, 并全面禁止在 URL 上携带任何参数,每个 URL 在 ... 阅读全文
发表于 2019-05-14 18:54 阅读(2933) 评论(1) 赞(0)

用 Go 开发终端接口服务--把项目部署到服务器

本章节主要讲解三部分内容:打包项目源码,通过 supervisord 启动和守护服务进程,最后用 nginx 代理服务和绑定域名。 Go 编译代码生成二进制包的时候,只处理 go 类型文件,静态文件、配置文件、 HTML 等那些非 go 类型文件都原样保留。进入项目根目录下,执行打包指令如: go build -ldflags "-w -s" Go 在不同的操作系统上编译出来 ... 阅读全文
发表于 2019-05-14 18:47 阅读(3698) 评论(0) 赞(0)

用 Go 开发终端接口服务--测试已写好的接口

项目的测试工作相当重要,它直接影响到项目的质量。通常一个项目,虽然外围测试团队会进行高强度、多维度的测试,但作为开发者的我们,在测试团队正式测试之前,自己编写一些测试案例,输入一些常规的数据,测试接口是否返回正确的数据,这种工作是非常有必要的,开发者不能没有经过测试,就直接扔给测试团队。 编写测试案例,总体思 ... 阅读全文
发表于 2019-05-14 18:30 阅读(3870) 评论(1) 赞(0)

用 Go 开发终端接口服务--暴露 controller 控制层接口

控制层主要负责接收外部的请求参数,然后把参数传递给 service 服务层,等服务层处理返回数据,再把数据序列化输出给外部。所以实际上 controller 控制层,是负责把终端提交的 JSON 数据转成对象,传递给 service 服务层函数,然后再把服务层函数返回的对象转成 JSON 返回给终端,这些流程都是可以封装在一些通用的函数里,可以节省很 ... 阅读全文
发表于 2019-05-14 17:04 阅读(3196) 评论(0) 赞(0)

用 Go 开发终端接口服务--按需写 service 服务层逻辑

service 服务层是整个项目的枢纽部分,它调用下面 dao 数据层的函数,给上面 controller 控制层输送数据,此外,项目的业务逻辑、数据事务都在服务层完成的,结合以上特征,我们对服务层做法做了一些约定:服务层每个对外函数和 controller 控制层的接口是一一对应的,每个函数只为一个接口服务,保证所有业务逻辑都在服务层函数里实 ... 阅读全文
发表于 2019-05-14 16:54 阅读(4238) 评论(0) 赞(0)

用 Go 开发终端接口服务--灵活写 Dao 数据层函数

上一章节把实体层的结构体都准备就绪了,dao 数据层主要是进行数据操作,以实体层结构体为载体返回给上层使用。数据层的函数,我们尽量提高它们的可复用性和扩展性。数据层的函数根据功能性一般可以抽象几个分类出来,读和写相关的两种类型函数,读函数再细分读取一条记录、读取多条记录、读取聚合统计单列数据;而写函数可以细分 插 ... 阅读全文
发表于 2019-05-14 16:43 阅读(4150) 评论(0) 赞(0)

用 Go 开发终端接口服务--定义 model 实体层结构体

本教程主要讲解项目的构建方法,并不会涉及错综复杂的业务,错综复杂的业务是由多个业务实体和多个实体关系组成的,我们进阶教程会讲解到,所以我们项目的实体也是简单的,现在我们主要挑选典型的 Product 产品和 Product Photo 产品图片业务进行讲解,把构建的方法和流程说明清楚,其他业务模块因项目不同而异,但再复杂的项目,万变 ... 阅读全文
发表于 2019-05-14 16:37 阅读(3456) 评论(0) 赞(0)

用 Go 开发终端接口服务--公共类关键函数

我们所说的公共类包,包括 dbutil、util、common 这三个包,下面展开一一说明它们里面关键的函数。 **dbutil** 顾名思义就是数据库工具类,我们采用了第三方 sqlx 类包来操作数据库, sqlx 的 DB 对象在 dbutil 里完成初始化工作,我们把这个简单的功能独立到一个包里,是为了以后遇到新的需求,易于扩展。比如 sqlx 有更换成 gorp、g ... 阅读全文
发表于 2019-05-14 16:28 阅读(2647) 评论(0) 赞(0)

用 Go 开发终端接口服务--准备项目所需的 Go 类包

我们选择第三方类包,主要是为了方便快速开发,把主要精力放在业务流程上,为了避免走弯路,我们坚持选择稳定、符合 Go 语言哲学、开发团队活跃的类包作为优先选包原则。下面将罗列我们项目用到的第三方类包,并简单说明用途和特征。 github.com/codegangsta/gin **gin 用途**: 开发环境自动热编译部署工具,方便开发使用,只需启动 ... 阅读全文
发表于 2019-05-14 16:13 阅读(2698) 评论(0) 赞(0)

用 Go 开发终端接口服务--项目整体结构介绍

通常一个项目我们建议分 dao service controller 三层 ,这样可以重用一些关键的部件,模块尽量趋于松耦合,分工明确便于维护。数据的传输方式,我们采用 JSON 格式数据发起 POST 请求,再返回 JSON 格式数据给终端,这样终端和服务端的数据格式都统一了,便于协调沟通,还可以提高数据传输过程中的安全性。但凡事不能绝对,主要还是 ... 阅读全文
发表于 2019-05-14 16:06 阅读(3069) 评论(0) 赞(0)

用 Go 开发终端接口服务--快速编写一个 Web 服务器

上一章节我们搭建好了 Go 环境,本节准备在 Windows 下用 Go 写一个简单的 Web 服务器,Go 本身对 Web 开发支持的相当完善,不依赖任何第三方的类库,也不需要依赖容器来运行我们的 Web 服务,编写一个基本 Web 服务器也只要几行代码。 首先我们新建项目,打开 cmder 命令控制台工具,进入 E:\GOPATH\src 路径,新建一个 chapter01 文 ... 阅读全文
发表于 2019-05-14 16:03 阅读(3598) 评论(0) 赞(0)

用 Go 开发终端接口服务--Go 语言编码规范

初学者使用 Go 语言开发项目的时候,首先需要熟悉一下该语言的编码规范,逐渐养成良好的编码习惯,提高自己的编码质量,对自己,对项目团队都受益匪浅。 **【强制】程序内部命名方式** ,一律采用驼峰命名方式。常量、变量、函数名都统一采用驼峰命名,公用对象首字母需大写,私有对象首字母可小写。有些特定名词或缩写名词,建议全部 ... 阅读全文
发表于 2019-05-14 15:25 阅读(2670) 评论(1) 赞(0)

用 Go 开发终端接口服务--Go 语言基本语法

Go 语言本身是一门极简的语言,它是 “大道至简” ,“少即是多” 理念的典范语言,而我们的接口服务用到东西又只是一小部分,所以学员需要掌握的基本语法是极少的。 Go 语言一共25个 关键字 ,对于新手很容易记 关键字 关键字 关键字 关键字 关键字 break default func interface select case defer go map struct chan else goto pa ... 阅读全文
发表于 2019-05-14 15:03 阅读(2313) 评论(0) 赞(0)

用 Go 开发终端接口服务--环境搭建和开发工具选择

在主流操作系统上搭建 Go 环境,其实都很简单,一般分两个步骤。以下只对最常用的 Windows 系统和 Linux 系统搭建方法做介绍。 在 Go 官网上 https://golang.google.cn/dl/ 选择最新版的安装文件(截止目前最新版本是 go1.12.5)下载: windows 版本 :https://dl.google.com/go/go1.12.5.windows-amd64.msi linux 版本 :https://d ... 阅读全文
发表于 2019-05-14 14:52 阅读(2839) 评论(0) 赞(0)
第 1 页 共 3 页 下一页

关于作者

About Me

忘却理想,只为洒脱地活着!

文章数(101)

评论数(54)

访问数(366973)

最新评论