以后台进程方式运行 Go 程序

从 1999 年那时开始我就为 windows 写过服务,一开始用 C/C++,后来用 C#。现在我在 Linux 上用 Go 编写服务端软件。然而我没辙了。更令人沮丧的是,我一开始编写软件所用的操作系统并不是我即将部署所用的操作系统。当然,那是后话了。 我想要在我的 Mac 上以后台进程(守护进程)的方式运行代码。而我的问题也是,我无从下手。 我很幸运在 Bitbucket 上找到了由 Daniel Theophanes 编写的名为 [service](https://bitbuc...阅读全文

2018-04-01 20:39:22 snowInPluto
阅读:16041 评论:2

golang程序版本管理

概述 版本管理主要用于对运行程序的版本追踪,从而可以管理线上服务的运行版本,避免各个版本的服务程序混淆.这里通常的做法为在程序中埋入版本标志,同时该版本号会对应到git上的tag或release版本.从而对线上服务更改有一个更全面的信息说明.这里将介绍基于GNU风格一种版本命名方式. 1 版本号命名格式 主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]] Major_Version_Number.Minor_Version_Number[.Revision_Number[.Buil...阅读全文

阅读:1768 评论:0

golang 字符转换

package main import ( "bytes" "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text/transform" "io/ioutil" "fmt" ) func GbkToUtf8(s []byte) ([]byte, error) { reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewDecod...阅读全文

2018-04-09 12:33:04 知止software
阅读:2069 评论:2

golang进阶(七)——go语言的几种测试方法

前言 用了go的测试框架,再想下junit的,虽然已经Junit5,那丑陋程度还是依然。 java出来的时候,还没有很多软件工程的概念,语言先出来了,因此需要通过不同的插件慢慢补。 go就很幸运,出来的时候很多软件工程的概念已经基本定了下来,可以加到语言特性之中,go的测试就简便很多,不愧是为工程而生的语言 需要测试的程序 我们需要测试的程序文件叫做utils.go,里面有个字符串反转的方法Reverse,代码相对简单,这里就不赘述了 func Reverse(s string) string ...阅读全文

2017年11月07日 16:41:40 lastsweetop
阅读:893 评论:0

用Golang处理每分钟100万份请求

我在几家不同的公司从事反垃圾邮件,防病毒和反恶意软件行业工作超过15年,现在我知道这些系统最终会因为我们每天处理的大量数据而变得复杂。 目前,我是smsjunk.com的CEO和KnowBe4的首席架构师,他们都是网络安全行业的公司。 有趣的是,在过去的10年左右,作为一名软件工程师,我参与过的所有Web后端开发大部分都是在Ruby on Rails中完成的。不要误会我的意思,我喜欢Ruby on Rails,我相信这是一个了不起的环境,但是过了一段时间,你开始用ruby的方式思考和设计系统,而...阅读全文

2018-04-13 10:33:39 我是钟钟
阅读:1912 评论:0

实现一个 Golang 调试器(第二部分)

在[第一部分](https://studygolang.com/articles/12553)里,我们首先介绍了开发环境并且实现了一个简单的调试器(tracer),它可以使子进程(tracee)在最开始处停止运行,然后继续执行,并显示它的标准输出。现在是扩展这个程序的时候了。 通常,调试器允许单步执行被调试的代码,这个可以通过 [ptrace](http://man7.org/linux/man-pages/man2/ptrace.2.html) 的 PTRACE_SINGLESTEP 命...阅读全文

2018-04-14 10:19:15 jettyhan
阅读:2097 评论:1

Golang 下的微服务 - 第 6 部分 - Web Clients

在之前的文章中,我们看了一些使用 go-micro 和 go 语言的生成的各种事件驱动的方法。 在本篇文章,我们将深入到客户端,探究一下如何创建一个能够与我们之前创建的平台交互的 Web 客户端。 这篇文章会介绍如何使用 [micro](https://github.com/micro/micro) 工具包生成 web 客户端从外部代理内部 rpc 方法。 我们会创建一个 user 接口用于生成平台的登录界面、还会创建一个接口用于使用我们的 consignments。该界面包含了创建...阅读全文

2018-04-14 16:52:06 zhangyang9
阅读:3043 评论:0

Golang上传文件到七牛云

### 获取 首先要获取的是七牛云官方的SDK ``` go get -u github.com/qiniu/api.v7 ``` ### 七牛云 - [七牛云](https://www.qiniu.com/)没有帐号的去注册一个帐号。 - [个人中心](https://portal.qiniu.com/user/key)有账号的直接进个人中心,去查看秘钥 AccessKey/SecretKey ### 代码 一些常变量 ``` const ( //本地保存的文...阅读全文

阅读:3878 评论:0

使用Go封装一个便捷的ORM

# 使用Go封装一个便捷的ORM 最近在用Go写一个Web开发框架,看了一些ORM,大部分都需要自己拼接SQL,对我这种用惯了 `Laravel`的人来说,确实有点别扭,所以想自己写一个ORM,可以方便的对数据库进行连贯操作 由于代码太多,不贴了,只讲思路,具体代码在这里[silsuer/bingo](https://github.com/silsuer/bingo) ## 思路 1. 确定最后要做出的效果 我想要做成类似`Laravel`那种,操作数...阅读全文

2018-04-18 10:28:36 silsuer
阅读:1839 评论:2

一种 golang 实现 多协程任务处理的套路

# 一种 golang 实现 多协程任务处理的套路 ## 那么是什么样的任务呢,一般是在生产者-消费者模式的消费者进程 ,举几个例子 1. 消费kafka 数据 2. 消费redis 数据 3. 轮询处理数据库数据 4. ... ## 下面来分析一下 1. 业务逻辑处理协程 到底多少个呢 ?处理一个数据 就 go 一个吗,也可以不过有点粗暴,协程也不是越多越好,调度也是要好性能的 所以还是控制一下,一般吧 弄个cpu * 2 就差不多了 (runtime.NumC...阅读全文

2018-04-29 14:48:46 Bulesxz
阅读:5677 评论:1

gRPC 使用 protobuf 构建微服务

原文链接,转载注明来源即可。本文代码:GitHub本文目录: 微服务架构 单一的代码库 以前使用 Laravel 做 web 项目时,是根据 MVC 去划分目录结构的,即 Controller 层处理业务逻辑,Model 层处理数据库的 CURD,View 层处理数据渲染与页面交互。以及 MVP、MVVM 都是将整个项目的代码是集中在一个代码库中,进行业务处理。这种单一聚合代码的方式在前期实现业务的速度很快,但在后期会暴露很多问题: 开发与维护困难:随着业务复杂度的增加,代码的耦合度往往会变高,...阅读全文

2018-05-04 11:34:37 wuYin
阅读:1257 评论:3

Go语言中的TCP/IP网络编程

Go语言TCP/IP网络编程 乍一看,通过TCP/IP层连接两个进程会感觉可怕, 但是在Go语言中可能比你想象的要简单的多。 TCP/IP层发送数据的应用场景 当然很多情况下,不是大多数情况下,使用更高级别的网络协议毫无疑问会更好,因为可以使用华丽的API, 它们隐藏了很多技术细节。现在根据不同的需求,有很多选择,比如消息队列协议, gRPC, protobuf, FlatBuffers, RESTful网站API, websocket等等。 然而在一些特殊的场景下,特别是小型项目,选择任何其他...阅读全文

2018-05-05 04:34:37 WalkerQiao
阅读:2061 评论:0

在 Golang 中尝试简洁架构

>(独立性,可测试性的和简洁性) 在阅读了 Bob 叔叔的 Clean Architecture Concept 之后,我尝试在 Golang 中实现它。我们公司也有使用相似的架构,[Kurio - App Berita Indonesia](https://kurio.co.id/), 但是结构有点不同。并不是太不同, 相同的概念,但是文件目录结构不同。 你可以在这里找到一个示例项目[https://github.com/bxcodec/go-clean-arch](https://git...阅读全文

2018-05-07 22:23:03 fredvence
阅读:9889 评论:3

docker+jenkins+golang持续集成实践[转载自我的博客]

博客地址:yeqown.github.com 起因 因为生产需要最近又重新折腾了一下Jenkins和docker。主要目的是想自动编译,打包,部署一些Golang的HttpServer。于是决定使用Jenkins来做这个持续集成的载体,选择Jenkins出于两点原因: 1. 以前就使用过,上手会更快2. 社区比较成熟,插件和文档丰富 安装Docker和Pull Jenkins镜像 这一步,作为前置条件且不是本文主要要描述的步骤,因此略去。网上也有很多参考资料~ Jenkins & docker-...阅读全文

阅读:965 评论:0

如何写 go 中间件

编写 go 中间件看起来挺简单的,但是有些情况下我们可能会遇到一些麻烦。 让我们来看一些例子。 ## 读取请求 我们例子中的所有中间件都会接收一个 `http.Handler` 作为参数,并返回一个 `http.Handler` 。 这样便于将中间件链接起来。我们所有的中间件将会遵循如下基本模式: ```go func X(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.Resp...阅读全文

2018-05-10 21:36:47 SergeyChang
阅读:3758 评论:5

k8s之CRD--为自定义资源生成代码

CRD简介和使用姿势 CustomResourceDefinition(CRD)是 v1.7 + 新增的无需改变代码就可以扩展 Kubernetes API 的机制,用来管理自定义对象。它实际上是 ThirdPartyResources(TPR) 的升级版本,而 TPR 已经在 v1.8 中删除。 一些使用场景: 提供/管理外部数据存储/数据库(例如 CloudSQL/RDS 实例) 对k8s基础资源进行更高层次的抽象(比如定义一个etcd集群) 其实crd在很多k8s周边开源项目中有使用,比如...阅读全文

2018-05-12 23:34:38 iyacontrol
阅读:6719 评论:0

Go语言微服务系列文章

微服务、Go语言、Docker技术也算目前比较热门的技术话题,本人也是抱着学习的思想,整理一些学习心得,和志同道合的朋友一起探讨学习一下。 接下来是一系列关于Go语言微服务的系列文章。 简介 为什么是Go语言的微服务, 原因很简单,最近对Go语言花了些时间对它进行了深入学习, 还谈不上很厉害,但热度挺高。 加上最近项目开发中使用到微服务, 所以就特意留意了Go语言微服务相关的话题。 这个系列文章从微服务开始,涉及到Docker、容器编排、Go RESTful API、涉及到微服务架构的基础理念和...阅读全文

2018-05-17 02:34:37 WalkerQiao
阅读:844 评论:0

Golang的socket编程(一):常用数据结构和函数介绍

工作的原因接触到socket,要使用socket实现一个长连接。之前只在C/C++上用过socket,而且在学校的时候也只是简单的做聊天室小程序,并没有涉及到长连接。突然用到工作项目上,心里还是有点悬的,毕竟网上的资料也不是很多。这里就一步一步记录下学习的过程、遇到的问题以及最重要的——解决问题的方法。 一、说明golang中的socket需要用到net包,里面封装好了很多常用的函数方法以及元素类型。而且无需像C一样要经历socket,bind,listen,accept等等流程,只需要简单的几...阅读全文

2017-09-12 00:00 马谦的博客
阅读:2629 评论:0

深入解析 Go 中 Slice 底层实现

切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和减少。但是切片本身并不是动态数据或者数组指针。切片常见的操作有 reslice、append、copy。与此同时,切片还具有可索引,可迭代的优秀特性。 一. 切片和数组 关于切片和数组怎么选择?接下来好好讨论讨论这个问题。 在 Go 中,与 C 数组变量隐式作为指针使用不同,Go 数组是值类型,赋值和函数传参操作都会复制整个数组数据。 f...阅读全文

2019-08-27 21:20 halfrost.com
阅读:1784 评论:3