古老的榕树

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

发表于 2019-05-14 14:52 阅读(3445) 评论(0) 赞(0)
在主流操作系统上搭建 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 ... 阅读全文

用 Go 开发终端接口服务--前言

发表于 2019-05-14 14:33 阅读(2949) 评论(0) 赞(0)
从2006年 Go 语言诞生至今,在程序员眼里 Go 语言一直都是带着光环的,不仅仅是因为它出自于 Google 公司,更是因为发明它的人都是大神级别的人物,Rob Pike、Ken Thompson、Robert Griesemer 哪一个不是大名鼎鼎、如雷贯耳的!他们这些大牛们就是一个顶级品牌,发明了 C 语言,并使用 C 语言开发了 Unix 系统,定制了 UTF-8 编码标准 ... 阅读全文

用 Go 开发终端接口服务--小册介绍

发表于 2019-05-14 14:29 阅读(2865) 评论(2) 赞(0)
小册介绍 大家好,我是潘军杰,很高兴大家进来看我写的小册,进来了就是有缘人,我们有共同的爱好,都是喜欢 Go 语言的同学,相聚在这里,希望大家可以一起成长和进步。 Go 是近几年开始流行的工程化系统语言,特别是微服务的盛行,很多同学开始从其他语言转向 Go,既系统学习了语法层面上的东西,又观摩了不少书籍上的示例代码,但真 ... 阅读全文

Go 优雅的 SQL 语句拼接库

发表于 2018-07-03 23:51 阅读(11196) 评论(0) 赞(1)
大部分时间都在使用数据库的业务操作,对我而言,这一部分的东西很重要,当初选择了很接近于 Go 原生 database/sql 的 sqlx 库,使用习惯了,感觉已经够用了。不过有些项目,让我很怀念 mybatis 这种介于 ORM 的组件库,有时候,我们需要优雅的拼接一个 SQL 语句,而不是使用多个字符串拼接来操作,因为对面特定的 sql 语法和 sqlx 的 ... 阅读全文

Go 通过身份证号获取生日年龄性别

发表于 2018-06-22 21:02 阅读(5910) 评论(4) 赞(3)
我记得之前看到一个 Java 版本,通过身份证号获取出生日期,年龄和性别这些有用的信息,但一时记不起具体出处了,因为现在的项目都采用了 Go 开发,找了相关的库,竟然找不到, 现在想用 Go 实现一个,自己动手丰衣足食,身份证号的位数代表的含义,通过百度百科可以查到,这是关键点,不再累赘说明,代码里说吧 //中国居民身份证 工 ... 阅读全文

PostgreSQL 不依赖客户端常用的命令

发表于 2018-05-16 15:50 阅读(2825) 评论(0) 赞(1)
/** 连接到数据库控制台 **/ /opt/PostgreSQL/10/psql -U postgres -d database_name -h 192.168.1.250 -p 5432 /** 输入密码后,进入控制台如下: **/ mytest=# \h:查看SQL命令的解释,比如\h select。 \?:查看psql命令列表。 \l:列出所有数据库。 \c [database_name]:切换到其他数据库。 \d:列出当前数据库的所有表格。 \d [ta ... 阅读全文

Go 常用 AES 加密解密代码

发表于 2018-05-10 15:19 阅读(3154) 评论(0) 赞(0)
Go 中常用到 AES 对称加密解密算法,以下把关键代码分享出来: // AES 加密 AES-128。key string 长度:16, 24, 32 bytes 对应 AES-128, AES-192, AES-256 func AesEncrypt(origData, key []byte) ([]byte, error) { block, err := aes.NewCipher(key) if err != nil { return nil, err } blockSize := block.BlockSize() blockMode : ... 阅读全文

解决烦人的 E: Sub-process /usr/bin/dpkg returned an error code (1)

发表于 2018-05-04 18:34 阅读(4949) 评论(0) 赞(0)
服务器以前安装东西,不小心有些包安装失败了,造成包的依赖也被破坏了,后续再安装其他包的时候,你可能会遇到以下类似的错误: Errors were encountered while processing: openssh-server ssh exim4-base exim4-daemon-light exim4 E: Sub-process /usr/bin/dpkg returned an error code (1) 解决办法: ## 现将info文件夹更名 sud ... 阅读全文

Go bytes.Buffer 和 strings.Builder 性能比较

发表于 2018-03-18 21:36 阅读(9200) 评论(0) 赞(0)
Go 语言里字符拼接是常用到的,而且只是进行少量的字符串拼接,这次专门根据这个场景进行做基准测试,具体代码如下,如果测试方法有什么欠妥的地方,还请读者提出来。本次测试力求测试的公平性。 测试目标方法代码: /** strbyt.go package src import("bytes""fmt""strings") func AppendWithAdd() { var s string for i: =0; i < ... 阅读全文

Java 的孤岛现象

发表于 2018-03-04 22:18 阅读(3232) 评论(0) 赞(0)
Java 是会自动内存回收的,程序员可以通过 System.gc() 来发出内存回收的指令, Jvm 收到此类的指令后,会及时尽可能把用完的对象进行回收。 另外有一种不是很正式的概念,就是孤岛,多个对象相互关联起来,为成为一个“岛”对象,比如: Dog dog1= new Dog(1); Dog dog2 = new Dog(2); Dog dog3 = new Dog(3); dog1=dag2; dog2=dag3; ... 阅读全文

配置编译 Nginx 让网站用上 HTTP2

发表于 2018-02-07 23:34 阅读(2975) 评论(0) 赞(2)
HTTP2 出来有一阵子了,一直想把公司的项目用上 HTTP2,了解了一下技术要求。首先 HTTP2 似乎需要到 SSL 证书,腾讯云和阿里云都有免费试用一年的 SSL 证书,腾讯云的证书用满一年后,还可以重新免费申请续用,至少目前还是这样的。 使用 HTTP2 只要搞定 Web 服务器,比如 Apached 和 Nginx,其他的后端程序不用做任何改动。当然前提 ... 阅读全文
第 2 页,共 104 条记录,共 6 页 上一页 下一页

关于作者

About Me

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

文章数(104)

评论数(54)

访问数(430582)

最新评论