古老的榕树

用 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)

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

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

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

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

Go 优雅的 SQL 语句拼接库

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

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

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

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

/** 连接到数据库控制台 **/ /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 ... 阅读全文
发表于 2018-05-16 15:50 阅读(2367) 评论(0) 赞(1)

Go 常用 AES 加密解密代码

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 : ... 阅读全文
发表于 2018-05-10 15:19 阅读(2725) 评论(0) 赞(0)

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

服务器以前安装东西,不小心有些包安装失败了,造成包的依赖也被破坏了,后续再安装其他包的时候,你可能会遇到以下类似的错误: 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 ... 阅读全文
发表于 2018-05-04 18:34 阅读(3894) 评论(0) 赞(0)

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

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

Java 的孤岛现象

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

配置编译 Nginx 让网站用上 HTTP2

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

在 Ubuntu 上搭建单机版 Redis

为什么用到 Redis? 最近开发一个类似抢拍的拍卖 App;有个环节是需要秒刷新的,而且多少个商品同时需求秒请求订单数据,这时想想长期以往 MySQL 肯定应付不了, 所以采用了内存数据库的方案,当然就先到 Redis 了;其实 memcached 也是比较好的选择,但后期的数据结构需保留一定的灵活性,所以选择了 Redis。终端请求的数据,生命周 ... 阅读全文
发表于 2018-01-14 00:33 阅读(2896) 评论(0) 赞(1)

优雅地关闭 Go HTTP 服务

Go 1.8 之后,http.Server 增加了 Shutdown 函数,类似于第三方的 graceful 插件一样,可以平滑的关闭自身 HTTP 服务了,我们看看代码: package main import ( "context" "github.com/urfave/negroni" "log" "net/http" "os" "os/signal" "time" ) func main(){ mux := http.NewServeMux() mux.HandleFunc("/", func(w http.Response ... 阅读全文
发表于 2018-01-11 11:51 阅读(4694) 评论(0) 赞(1)

Go 定时器 cron 表达式的使用

上次在《Go 定时器 cron 的使用》里说 cron 简单使用方法,如果想更灵活的使用定时,可能会涉及到更复杂的六位表达式的使用方法,如每半小时执行一次: 0 30 * * * * 六位的表达式看起来,有点费解,好比正则表达式一样,我们需要按步骤来理解; 理解六个作用域的意义 0 0 0 1 1 * 0 0 0 1 * * 0 0 0 * * 0 0 0 0 * * * 0 0 * * * * ... 阅读全文
发表于 2018-01-11 00:02 阅读(2982) 评论(0) 赞(1)
第 2 页,共 101 条记录,共 6 页 上一页 下一页

关于作者

About Me

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

文章数(101)

评论数(54)

访问数(366973)

最新评论