在windows系统下打包linux平台运行的go程序

一、用windows的cmd//cd到main.go目录下set GOARCH=amd64 //设置目标可执行程序操作系统构架,包括 386,amd64,armset GOOS=linux //设置可执行程序运行操作系统,支持 darwin,freebsd,linux,windowsgo build //打包 二、linux(centos7)设置chmod +x 应用 //1、这种方法仅用来调试测试,不是守护进程,关闭终端就会退出./应用//2、守护进程启动,启动的进程会在新的session中,...阅读全文

51CTO博客 2021-01-09 10:04:11 jbaowei2000

聊聊并发,进程通信方式,go协程简单应用场景

开篇提问 知道并发,并行,线程,协程概念吗?或者知道大概含义吗? 有线程为什么还要有协程?区别是什么? 『进程』通信方式知道几种?有没有超过3种? golang『协程』通信方式推荐? 使用并发的目的是为什么?是能帮我们解决什么问题吗? 概念 并发,线程,协程:概念是不可能概念的,google去吧。或者点击这里,查看上一篇文章 并行:一般是指多个CPU实例或者多台机器在『同一时刻』同时执行某个逻辑(方法) 『进程』通信方式 名称 特点 管道/匿名管道(pipe) 管道的实质是一个内核缓冲区 有名管...阅读全文

简书 2021-01-09 14:47:17 亦一银河

手摸手教你写 Kubernetes 的 golang 服务

我们前面介绍了很多关于kubernetes本身的操作,但是对于如何写一个完整的kubernetes应用还没有介绍过。在这篇文章中我们将介绍如何一步一步的写一个kubernetes的golang服务。 golang 对于 golang 的安装和配置,我们这里就不详细说明了,因为这也不是我们的重点,我相信这一步你是能够自己独立完成的。 一个令人比较兴奋的事情是现在国内用户访问golang网站可以不用***了,我们可以自由的访问https://golang.google.cn/网站了。 新建项目文件夹...阅读全文

51CTO博客 2021-01-08 12:16:21 mb5ff5930cde1cd

Go语言实现高并发日志监控系统

Golang作为21世纪的C语言,凭借其简单和高效,如今已经被越来越多的人当成主力编程语言,并发是Golang最大的优势。本项目是实现了一个可在生产环境使用的高性能的日志监控系统。 Golang是一门简单高效的编程语言,我在编写学习的过程中也被其特性所吸引,日志监控系统是生产环境中必备的功能系统,它的作用可以说仅次于核心系统 而Golang的协程实现可以很好的帮我们完成这一核心功能,通过模拟读取nginx输出的日志文件,使用log_proccess.go进行实时读取解析写入到influxdb存储...阅读全文

51CTO博客 2021-01-07 23:16:59 mb5ff40b968831d

Golang 解析json

如果json是map结构 strJson { "总就业人数": 1375.66, "第一产业": 40.83, "第二产业": 422.82, "省代码": 310000.0, "省": "上海市", "市代码": 310000.0, "市": "上海市", "类型": "直辖市" } var f interface{} json.Unmarshal([]byte(strJson), &f) if reflect.TypeOf(f).Kind() == reflect.Map { m := re...阅读全文

简书 2021-01-08 21:42:00 书生也爱羊

来!带你们初次体验一下ElasticAPM

前言 本文从最根本的可观察性出发,引出实现这种思想的APM(Application Performance Management)框架,通过对APM的核心组件和数据模型的理解,可以加深对ElasticAPM的理解。最后通过实战演练ElasticAPM,来实现应用的性能追踪。 可观察性 “可观察性”不是供应商能够在系统之外单独交付的功能,而是您在构建系统时植根于其中的一个属性,就像易用性、高可用性和稳定性一样。设计和构建“可观察”系统的目标在于,确保当它在生产中运行时,负责操作它的人员能够检测到不...阅读全文

简书 2021-01-08 20:42:13 代码小能手

go mod graph 可视化——gmchart

背景之前构建 golang 遇到个问题,就是明明指定了依赖的包版本,在构建时,又自动把版本号给升上去了,当时不知道为什么。后面知道有个 go mod graph 的命令能列出所有的依赖,试了下,一点都不直观,还得复制到文本编辑器里面来来检索信息。于是我就上网查了下相关工具。别的工具检索 Go Module 依赖关系 可视化网上还是有很多工具。大部分方案都 graphviz,echart, 或者用绘制图片,我就试了几个。graphviz 这个工具很强大,但需要通过其他渠道安装,且生成的svg可读性...阅读全文

Segmentfault 2021-01-12 12:32:34 .container .car 等

Focus 聚焦社区 v0.1.0 beta,GoFrame 开源社区项目

Focus聚焦社区v0.1.0 beta版本发布啦~!新年第一发!第一次给你!~此版本为社区的第一个发布版本,还有很多待完善的功能等待大家发现。也诚请各位小伙伴们关注GoFrame项目发展,为生态添砖加瓦,加油助力!零、关于FocusFocus聚焦社区是GoFrame社区项目,采用了简洁强大的GoFrame作为后端WEB框架, 由于前台系统需要SEO因此使用了GF自带template模板引擎,数据库用MySQL,前端使用jQuery/bootstrap框架。一、源码地址github:https:...阅读全文

Segmentfault 2021-01-12 11:49:00 .container .car 等

你的镜像安全吗?

你的镜像安全吗?与传统的服务器和虚拟机相比,Docker容器为我们工作提供了更安全的环境。容器中可以使我们的应用环境组件实现更小,更轻。每个应用的组件彼此隔离并且大大减少了攻击面。这样即使有人入侵了您的应用,也会最大程度限制被攻击的程度,而且入侵后,利用漏洞传播攻击更难。不过,我们还是需要最大程度了解Docker技术本身的存在的安全隐患,这样才能实现最大程度保护我们的容器化系统。其中大部分将类似于我们已经为基于服务器所做的工作,例如监视容器活动,限制每个容器环境的资源消耗,维持良好的应用程序设计...阅读全文

简书 2021-01-08 12:32:42 JFrog杰蛙科技

golang proto中使用time类型:cannot use (type "time".Time) as type *timestamppb

首先,引入对应timestamp包,这个是proto3的特性,类型直接是google.protobuf.Timestamp,他是一个时间戳 syntax = "proto3"; import "google/protobuf/timestamp.proto"; package demo.service.v1; option go_package = "api"; service Demo { rpc GetUser(HelloReq) returns (User) {}; }; } messag...阅读全文

简书 2021-01-08 09:33:51 哆啦在这A梦在哪

golang 正负数取反

想要知道取反计算过程,首先搞懂 “原码“,“反码”,“补码”,“取反”。取反0变1,1变0原码 原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值。原码表示法在最高位为符号:正数该位为0,负数该位为1,原码又称带符号的绝对值。看整数9及-9的原码如下:9的原码:0000 1001-9的原码: 1000 1001重点:对于源码,绝对值相等的正数和负数只有符号位不同。反码反码通常是用来由原码求补码或者由补码求原码的过渡码。正数的反码就是其原码,负数的反码就是将原码除符号位以外每位取反(0变...阅读全文

简书 2021-01-08 09:33:50 陈_55ed

载:如何优雅地重试

转载:如何优雅地重试背景在微服务架构中,一个大系统被拆分成多个小服务,小服务之间大量 RPC 调用,经常可能因为网络抖动等原因导致 RPC 调用失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定。 重试的风险重试能够提高服务稳定性,但是一般情况下大家都不会轻易去重试,或者说不敢重试,主要是因为重试有放大故障的风险。首先,重试会加大直接下游的负载。如下图,假设 A 服务调用 B 服务,重试次数设置为 r(包括首次请求),当 B 高负载时很可能调用不成功,这时 A 调用...阅读全文

简书 2021-01-08 09:33:49 meng_philip123

使用 GitHub Actions 自动化构建 Golang 应用

GitHub 前一段时间推出了自家的自动化构建工具:GitHub Actions,不过目前还没有开放注册,只能通过申请等待官方审核。我第一时间就提交了申请,现在已经审核通过了,所以第一时间体验了 GitHub Actions的功能,总体感受是 Travis CI 之类的工具应该现在在墙角 瑟瑟发抖吧? GitHub Actions允许构建一个完整的 CI/CD Pipeline,与 GitHub 生态系统深度集成,而无需使用 Travis CI 或者 Circle CI 等第三方服务,对于开源项...阅读全文

51CTO博客 2021-01-07 21:34:19 mb5ff5930cde1cd

Go Modules 的使用

Go 语言中一直被人诟病的一个问题就是没有一个比较好用的依赖管理系统,GOPATH 的设计让开发者一直有很多怨言,在 Go 语言快速发展的过程中也出现了一些比较优秀的依赖管理工具,比如 govendor、dep、glide 等,有一些差不多成了半官方的工具了,但是这些工具都还是需要依赖于 GOPATH,为了彻底解决这个“祸水”,随着 Go1.11 的发布,Golang 官方给我们带来了依赖管理的全新特性 GoModules,这是 Golang 全新的一套依赖管理系统。下面我们就来看下 Go Mo...阅读全文

51CTO博客 2021-01-07 22:14:08 mb5ff5930cde1cd

使用 Golang 自定义 Kubernetes Ingress Controller

在 Kubernetes 中通过 Ingress 来暴露服务到集群外部,这个已经是一个很普遍的方式了,而真正扮演请求转发的角色是背后的 Ingress Controller,比如我们经常使用的 traefik、ingress-nginx 等就是一个 Ingress Controller。本文我们将通过 golang 来实现一个简单的自定义的 Ingress Controller,可以加深我们对 Ingress 的理解。 概述 我们在 Kubernetes 集群上往往会运行很多无状态的 Web 应...阅读全文

51CTO博客 2021-01-07 20:40:35 mb5ff5930cde1cd

PHP & Swoole 与 Java、Go 等技术选型答疑

来自 SwooleVIP 群的问题感觉Swoole越来越复杂了,虽然特性也变得更强,可惜在项目组里面根本推不动,而且协程后需要注意事项也很多,稍不注意可能就是连接忘了回收,连接错乱的风险(当然有defer之类的可以规避)学PHP的,基本上都是半路出家,或者大部分培训机构的,不招他们进来吧,项目赶不完,招他们吧,都是得过且过的学习性格。稍微高端一点的特性,几乎推不动,他们还会反问,花时间看这个,为啥不学go呢?毕竟go是官方自带搞得我们现在新项目(国内龙头电商),基本上都用Java了,也不知道咋说...阅读全文

51CTO博客 2021-01-06 21:02:10 mb5ff59354dd96e

client-go 之 Indexer 的理解

前面我们讲到 DeltaFIFO 中的元素通过 Pop 函数弹出后,在指定的回调函数中将元素添加到了 Indexer 中。Indexer 是什么?字面意思是索引器,它就是 Informer 中的 LocalStore 部分,我们可以和数据库进行类比,数据库是建立在存储之上的,索引也是构建在存储之上,只是和数据做了一个映射,使得按照某些条件查询速度会非常快,所以说 Indexer 本身也是一个存储,只是它在存储的基础上扩展了索引功能。从 Indexer 接口的定义可以证明这一点:// k8s.io...阅读全文

51CTO博客 2021-01-07 16:15:25 mb5ff5930cde1cd