Go语言中文网 为您找到相关结果 1637

GoLang 学习笔记 - 常量

常量   常量是在程序运行时不会被修改也不可修改的量。在GoLang 中,常量的数据类型只可以是布尔型、数值型(整数型、浮点型和复数)和字符串,通常用下划线分隔大写字母来命名常量。   GoLang 中常量的定义格式: const A string = "a" // 显式类型定义 const B = "b" // 隐式类型定义   多个相同类型的声明可以简写为: const NUM_1, NUM_2 = 3, 4   常量还可以用作枚举(枚举篇会讲): const ( Unknown = 0 Female = 1 Male = 2 ) iota   iota,特殊常量,可以认为是一个可以被编译器修改的常量,通常用作常量计数器。   iota iota 每次出现都会初始化为 0,const 中...阅读全文

博文 2019-07-21 05:32:39 凉丶心园

Rio手把手教学:如何打造容器化应用程序的一站式部署体验

11月19日,业界应用最为广泛的Kubernetes管理平台创建者Rancher Labs(以下简称Rancher)宣布Rio发布了beta版本,这是基于Kubernetes的应用程序部署引擎。它于今年5月份推出,现在最新的版本是v0.6.0。Rio结合了多种云原生技术,从而简化了将代码从测试环境发布到生产环境的流程,同时保证了强大而安全的代码体验。 什么是Rio? 下图是Rio的架构: image Rio采用了诸如Kubernetes、knative、linkerd、cert-manager、buildkit以及gloo等技术,并将它们结合起来为用户提供一个完整的应用程序部署环境。 Rio具有以下功能: 从源代码构建代码,并将其部署到Kubernetes集群 自动为应用程序创建DNS记录,...阅读全文

关于浮点数精度再各个编程语言需要注意点

浮点数保留N位 (2位),为货币类场景常用选项。比较合理的做法是使用分来存储(int),然后前端在进行转换。否则你就需要关心浮点数自动 四拾伍入。分清自己使用场景选择自己的合适的方法。已知 (mysql(douboule10,2),golang "%.2f",python "%.2f" ) package main import ( "fmt" "math" ) func main() { //四拾伍入了 fmt.Printf("%.2f\n", 1.244444) fmt.Printf("%.2f\n", 1.245444) //自己实现四拾伍入 fmt.Printf("%.2f\n", math.Trunc(1.244444*1e2+)*1e-2) fmt.Printf("%.2f\n"...阅读全文

博文 2019-02-19 16:34:46 数据小菜鸟

学习C 语言能做什么

注意:转载于https://blog.51cto.com/12483417/2431551 经常有小伙伴问我,你是做C/C++的,那学C语言可以做什么呢?尤其是还在学校的同学,感觉自己学了很久,什么也做不了,一度怀疑自己是不是不适合程序员这个方向。 开始我都是直接说可以开发嵌入式,做操作系统,开发数据库等等,说到这,其实大家就应该明白了,C语言是接近底层的,他的很多应用都是处在摸不着看不见的后台,这对于初学编程的同学确实太不友好了,大家都喜欢所见即所得的效果,要不python怎么这么火呢! 但是,作为编程排行榜经典不衰的语言,我还是想好好说下,到底学C语言可以做什么? image.png 在计算机高速发展的最近几十年中,出现了上百种编程语言,有的编程语言是针对某个领域专门设计的,例如: PH...阅读全文

博文 2020-05-02 11:33:44 小小的太阳ZH

学习笔记-go库源码文件

库源码文件 库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话)。他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中。 怎样把命令源码文件中的代码拆分到其他库源码文件? cat demo4.go package main //这里也申明了属于main包 import ( "flag" ) var name string func init() { flag.StringVar(&name, "name", "everyone", "The greeting object.") } func main() { flag.Parse() hello(name) //调用了代码包一个叫作he...阅读全文

博文 2019-11-08 15:03:13 1350368559

作为编程语言,go有什么不同?

随着Go语言自身的逐渐优化及Go语言社区的不断发展壮大,go吸引着越来越多的人们来学习,那么go是怎么样?作为编程语言,go有什么不同? 1.面向接口编程;2.使用组合的编程;3.正交性:语言设计的正交性,保证语言的稳定性和简单性;4.少即是多:有且仅有一种方法把事情做好做对;5.并发语言层面支持:并发更好利用多核,有更强的表现力来模拟真实世界;6.开放性:开源,语言的实现对程序员不是个黑盒子,任何想了解语言实现的人都可以参与进来。 Go 没有像JAVA一样,宗教式的完全面向对象设计;完全面向对象设计就是一刀切的宗教式的设计,但其并不能很好的表述这个世界,这就导致其表现力不足,最后通过设计模式和面向切面等设计技巧来弥补语言方面的缺陷;Go是面向工程的实用主义者,其糅合了面向对象的设计,函数式...阅读全文

博文 2019-11-19 15:56:16 zhouzhou2018

Go基础学习记录 - 编写Web应用程序 - 博客编辑功能之Model的重新思考

每次我都会将自己实践的代码放到github上并且都会打一个tag,方便后面用的同学使用,这里我以下面分支的代码进行实践分享 https://github.com/durban89/typescript_demo.git tag: 1.1.2 上篇文章【Go基础学习记录 - 编写Web应用程序 - 博客编辑完善更新功能】,在修改的过程中,遇到了一个问题就是Update函数与sqlite中的函数有冲突的提示,提示内容大概意思是重新定义了这个函数,这次我将更新的逻辑进行了更改,重新定义了下Model,同时将QueryOne函数也进行了更新。 第一步、重新定义Model 重新定义Model,主要是从概念上抽象了一些逻辑,比如一个查询语句最基本的where、select和更新中的update部分,我将...阅读全文

博文 2018-10-17 15:34:40 DurbanZhang

[Golang软件推荐] Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家. 附上: 喵了个咪的博客:w-blog.cn go-commons-pool-Github地址:github.com/jolestar/go-commons-pool 1.连接池 在使用之前我们需要先了解清楚连接池的概念,总结下来连接池主要解决以下几类问题: 减少连接创建时间 与数据库还是Thrift等程序建立连接都是有开销的。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。 简化的编程模式 当使用连接池时,具体的操...阅读全文

博文 2020-02-21 14:32:47 文振熙

leetcode_459

Golang: 思路:这题难道就是区别优秀程序员和一般程序员的那种智商题吗?正确思路是:将两个s字符串拼接起来,如果拼接好的字符串去头掐尾,里面还会出现s的话,就可以知道它是重复字符串了。大佬们一行就能解决了,而我。。。 我自己的代码如下(不建议看): func repeatedSubstringPattern(s string) bool { i:=0 for i阅读全文

博文 2020-01-30 21:32:39 淳属虚构

15个流行编程语言及其应用

这篇文章主要介绍了15个出现在3个编程语言排行榜的编程语言和他们的擅长的领域,他们分别是(排名不分先后):JavaScript,Python,Java,PHP,C#,C,C++,Ruby,Swift,Go/Golang,Scala,R,Objective-C,Perl。 Javascript JavaScript is most commonly used as a client side scripting language.This means that JavaScript code is written into an HTML page. When a user requests an HTML page with JavaScript in it,the script is se...阅读全文

博文 2020-01-19 23:32:50 编程圈

可视化Go内存管理

本文翻译自《Visualizing memory management in Golang》。 “内存管理”系列的一部分 在这个由多部分组成的系列文章中,我旨在揭示内存管理背后的概念,并对某些现代编程语言的内存管理机制做更深入的探究。我希望该系列文章可以使您对这些语言在内存管理方面正在发生的事情能有所了解。 在本章中,我们将研究Go编程语言(Golang)的内存管理。和C/C++、Rust等一样,Go是一种静态类型的编译型语言。因此,Go不需要VM,Go应用程序二进制文件中嵌入了一个小型运行时(Go runtime),可以处理诸如垃圾收集(GC),调度和并发之类的语言功能。 如果您还没有阅读本系列的第一部分,请先阅读它,因为在那篇文章中我解释了栈(stack)和堆(heap)内存之间的区别,...阅读全文

5.1.1Golang开发环境搭建

目录:https://www.jianshu.com/p/e406a9bc93a9 搭建go开发环境 安装go开发包 Go官方镜像站(推荐):https://golang.google.cn/dl/ 根据系统下载相应的安装包。Windows直接是msi文件,直接安装即可。 安装完成 配置GOPATH 因为go是一个编译性语言,所以他需要一个自己的工作空间来存储代码文件(src),中间文件(pkg),编译文件(bin)。 示意图 同时配置环境变量: 示意图 安装vscode 官方文档:https://code.visualstudio.com/docs/?dv=win 中文插件 go插件 第一个go语言程序 目录树 package main import "fmt" func main() {...阅读全文

Golang——安装和第一个Go语言

Go(Golang)、静态编译型语言 UTF8编码 1.官网下载安装包(Mac) 安装包完成之后,在命令后确认 $ go version go version go1.14.2 darwin/amd64 # Go语言默认安装目录 $ echo $GOROOT #查看go的相关环境变量 $ go env 2.配置GOPATH GOPATH是一个环境变量,用来表示go项目的存放路径(工作目录)。 GOPATH路径最好只设置一个,所有的项目代码放到GOPATH的src目录下。 3.Go目录结构 在GOPATH有三个目录 (1)bin:存放编译后的二进制文件 (2)pkg:存放编译后的库文件 (3)src:存放源码文件,可以放多个项目的 image.png image.png image.png 4...阅读全文

go的time

package main import ( "fmt" "time" ) func main() { fmt.Println(time.Now()) fmt.Println(time.Now().Unix()) fmt.Println(time.Now().Second()) //程序耗时可以用结束时间-开始时间 fmt.Println(time.Now().UnixNano()) //里面的时间必须按照这些数值来 fmt.Println(time.Now().Format("02/1/2006 15:04")) fmt.Println(time.Now().Format("2006-1-02 15:04")) } 输出:2019-01-22 13:44:16.0255278 +0800 C...阅读全文

博文 2019-01-22 18:35:15 梁十八

golang的几个问题

面试中有遇到几个golang的问题,记录一下 recover能处理所有的异常吗 根据目前查到的资料和实践, recover能处理程序主动触发的panic和除0以及空指针访问、异常地址访问等错误,因此可以认为是能处理所有异常了。 golang中常量是怎么实现的 这个问法还是很奇怪的, 从汇编中看是对字符串常量加了一个标号,同时设置为SRODATA,也就是只读,对数字常量直接在代码中作为立即数使用了 简单描述下golang的gc算法 golang现行的gc算法是三色标记法,三色指的是在gc过程中会把对象标记给黑,灰,白三色。 三色标记法是对标记-清除算法的优化,目的是减少stop the world的时间。 标记-清除算法: 对象只有黑白两色 stop the world,即停止所有gorout...阅读全文

博文 2019-07-01 00:32:42 王小二黑

「golang」go 交叉编译 (转)

自“http://blog.csdn.net/panshiqu/article/details/53788067” Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO...阅读全文

在 Fefora 上开启 Go 语言之旅

Go 编程语言于 2009 年首次公开发布,此后被广泛使用。特别是,Go 已经成为云基础设施领域的一种代表性语言,例如 Kubernetes、OpenShift 或 Terraform 等大型项目都使用了 Go。 Go 越来越受欢迎的原因是性能好、易于编写高并发的程序、语法简单和编译快。 让我们来看看如何在 Fedora 上开始 Go 语言编程吧。 在 Fedora 上安装 Go Fedora 可以通过官方库简单快速地安装 Go 语言。 $ sudo dnf install -y golang $ go version go version go1.12.7 linux/amd64 复制代码既然装好了 Go ,让我们来写个简单的程序,编译并运行。 第一个 Go 程序 让我们来用 Go 语言写...阅读全文

博文 2019-09-02 23:34:37 Linux中国

实际编程中变量如何定义,才能是的垃圾回收更高效?

gpl这本书中这段话应该如何理解? 2.3.4 LIFETIME OF VARIABLES
... ...
Garbage collection is a tremendous help in writing correct programs, but it does not relieve you of the burden of thinking about memory. You don’t need to explicitly allocate and free memory, but to write efficient programs you still need to be aware of the lifetime of variables. Fo...阅读全文

zero down-time update服务的方案

从问题开始 先来抛一块砖,对于静态编译的应用程序,比如用C、C++、Golang或者其它的语言编写的程序,如果我们修改一个BUG或者添加一个新的特性后,如何在服务不下线的情况下更远应用程序呢?抛出了一个问题,一个很平常的问题,有人对问题思考比较透彻,比如牛顿,被苹果砸中了之后,引起了很多的思考,最后发现了万有引力定律。 如果你被苹果砸中了怎么办? 玩笑话一句,那我们如果被苹果砸中了会不死变成智障呢? 那么我们回到刚才这个问题 :当我们修复BUG,添加新的需求后,如何如丝般顺滑地升级服务器应用程序,而不会中断服务?这个问题意味着:C / C++ / GO都是静态语言,所有的指令都编译在可执行文件,升级就意味着编译新的执行文件替换旧的执行文件,已经运行的进程如何加载新的image(可执行程序文件...阅读全文

博文 2019-07-02 21:32:44 Yt_cc

[译] 使用 Go 和 ReactJS 构建聊天系统 (三)

本节完整代码:GitHub 本文是关于使用 ReactJS 和 Go 构建聊天应用程序的系列文章的第 3 部分。你可以在这里找到第 2 部分 - 后端实现 Header 组件 我们先来创建一个非常简单的 Header 组件。我们需要在 frontend/src/ 目录下 创建一个叫 components/ 的新目录,并在其中添加一个 Header/ 目录,它将容纳 Header 组件的所有文件。 - src/ - - components/ - - - Header/ - - - - Header.jsx - - - - index.js - - - - Header.scss 复制代码 注意 - 每当我们创建一个新组件时,我们将在 components/ 目录中创建一个新目录,我们会在该目...阅读全文

博文 2019-08-02 19:34:18 咔叽咔叽

运维大神如何使用 Golang 日志监控应用程序

你是如何使用 Golang 日志监控你的应用程序的呢?Golang 没有异常,只有错误。因此你的第一印象可能就是开发 Golang 日志策略并不是一件简单的事情。不>支持异常事实上并不是什么问题,异常在很多编程语言中已经失去了其异常性:它>们过于被滥用以至于它们的作用都被忽视了。-- Nils 本文导航1、Golang 日志基础 使用 Golang “log” 库 2、为你 Golang 日志统一格式 JSON 格式的结构优势 标准化 Golang 日志 3、Golang 日志上下文的力量 4、 Golang 日志对性能的影响 不要在 Goroutine 中使用日志 使用异步库 使用严重等级管理 Golang 日志 5、集中化 Golang 日志 6、希望你享受你的 Golang 日志之旅 ...阅读全文

Go语言初识

go语言初识 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 学习go可以说是我的一时兴起,本人其实是一个android 程序员,在工作的闲暇之余比较喜欢研究一些杂七杂八的东西,自己也看过python、js、kotlin等等,一直想后面转岗后台,后面有一个前辈给我推荐了go让我可以来了解一下,然后抱着试试看的态度来了解了一下看过之后觉得语法非常的简洁,相似python引起了本人极大的兴趣,而且从语言程度上支持并发,让人使用起来非常的舒服,从此开启了自己的go学习之旅,后面就是本人的go学习笔记,记录下来一方面可以让自己巩固知识另一方面可以给像我一样初学者一点小小的帮助...阅读全文

博文 2019-03-26 19:34:41 love_a_pig

Golang的WaitGroup陷阱

sync.WaitGroup是并发环境中,一个相当常用的数据结构,用来等待所有协程的结束,在写代码的时候都是按着例子的样子写的,也没用深究过它的使用。前几日想着能不能在协程中执行Add()函数,答案是不能,这里介绍下。 陷阱在WaitGroup的3个函数的调用顺序上。先回顾下3个函数的功能: Add(delta int):给计数器增加delta,比如启动1个协程就增加1。 Done():协程退出前执行,把计数器减1。 Wait():阻塞等待计数器为0。 考一考 下面的程序是创建了协程father,然后father协程创建了10个子协程,main函数等待所有协程结束后退出,看看下面代码有没有什么问题? package main import ( "fmt" "sync" ) func fath...阅读全文

博文 2018-10-29 15:35:10 shitaibin

Go基础学习记录 - 编写Web应用程序 - 添加编辑和保存功能(二)

添加编辑和保存功能 继续上篇文章【Go基础学习记录 - 编写Web应用程序 - 添加编辑和保存功能(一)】 如果将上篇文章的逻辑进行构建并运行,试图访问一个不存在的wiki,比如/view/APageThatDoesntExist,将看到包含HTML的空页面。这是因为它忽略了loadPage的错误返回值,并继续尝试填写没有数据的模板。相反,如果请求的页面不存在,它应该将客户端重定### 处理不存在的页面修改下viewHandler来达到我们的需求,如下 func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/view/"):] p, err := loadPage(title) ...阅读全文

博文 2018-08-08 11:34:48 DurbanZhang

[译]像专家一样使用 panic

作者: Vladimir Kovpak | 发布时间:2018-08-21 (i do it cause i need to...) 预备知识 本文假定你已经熟悉 go 语言及其 panic/recorer 函数、以及任何其他具有异常(try-catch)概念的编程语言。 介绍 你可能已经在《The Little Go Book》中看到诸如这样的句子: Go 处理错误的首选方式是 return values,而不是抛出错误 也许你在 go wiki 上看到过《CodeReviewComments》,上面写着: 不要在平常的错误处理中使用 panic,而应使用 error 和多参数返回* 另外,你可能已经看过文章《Effective Go》 ,上面说: 向调用者报告错误的通常方法,是将错误作为...阅读全文

博文 2020-05-05 23:34:23 henry_chen

Go学习笔记一(实用的基础概念)

引言 自己对学习go语言的心得进行个记录,方便未来复习。也见证自己的一个学习过程 应用程序⼊⼝ 必须是 main 包:package main 必须是 main 方法:func main() ⽂件名不一定是 main.go main函数的传参和返回 main 函数不不⽀支持传⼊入参数,在程序中直接通过 os.Args 获取命令⾏行行参数。 Go 中 main 函数不不⽀支持任何返回值,通过 os.Exit 来返回状态。 func main() { if len(os.Args) > 1 { fmt.Println("Hello World", os.Args[1]) os.Exit(11) } } 在终端go run文件,在后面带上参数即可,下面是打印的结果 打印的结果 编写测试程序 源码⽂...阅读全文

博文 2019-07-10 09:02:39 Jabir2HLJ

【数据结构原理与应用(Golang描述)】① 数组

.-. .- .-,.--..-,.--. \ \ / / __ | .-. | .-. | __ \ \ / / .:--.'. | | | | | | |.:--.'. \ \ / / / | \ || | | | | | / | \ | \ \ / / `" __ | || | '-| | '-`" __ | | \ ` / .'.''| || | | | .'.''| | \ / / / | || | | | / / | |_ / / \ \._,\ '|_| |_| \ \._,\ '|`-' / `--' `" `--' `" '..' GolangOnline Go tutorial 1.1 原理 数组(Array)是一种线性表数据结构,通过在内存中申请一组连续的存储空间,用于...阅读全文

Spring 中获取 request 的几种方法,及其线程安全性分析

概述在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的属性(如cookie、授权信息)、body中的数据等。由于在Spring MVC中,处理请求的Controller、Service等对象都是单例的,因此获取request对象时最需要注意的问题,便是request对象是否是线程安全的:当有大量并发请求时,能否保证不同请求/线程中使用不同的request对象。 这里还有一个问题需要注意:前面所说的“在处理请求时”使用request对象,究竟是在哪里使用呢?考虑到获取request对象的方法有微小的不同,大体可以分为两类:(1)在Spring的Bean中使用request对象:既包括Controller...阅读全文

博文 2019-02-21 18:34:41 MyBatis

如何快速学习一门新的编程语言

此文章针对有计算机基础的同学,如果连计算机语言是什么都不知道话,看懂都比较难了。 这编文章没有具体叫你怎么学某种语言,只是一个方法论,当然也举了一小些例子。想让读者在学习一门新语言的时候用上1到2个小时就可以迅速入门这门语言。如果要精通这门语言还要在实战中多锻炼多总结。希望对大家有用。 环境搭建 这个是必须的,任何编程语言都需要一个运行环境,例如需要是什么系统的,linux、mac、windows等。还有就是编译环境,简单来说就是编译器或者叫解释器。这个区别于编译型语言和解释型语言了。有兴趣可以网上收集这方面的资料。一般语言的编译环境在官网上就能找到文档。 怎么运行一个写好的程序 首先你需要一个已经写好的程序,这时候最好不要自己去写。直接网上模仿一个就好。最出名的就是HelloWorld了,...阅读全文

博文 2019-09-29 14:33:05 aside section ._1OhGeD

Golang交叉编译

Golang从1.5版本起支持交叉编译,可以在一个平台上生成另一个平台的可执行程序,非常方便,交叉编译依赖于环境变量GOOS(操作系统),GOARCH(架构),CGO_ENABLED(是否启用cgo)。 Windows 下编译 Mac 和 Linux 64位可执行程序 SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build main.go SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build main.go Mac下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build m...阅读全文

博文 2019-08-16 00:32:44 土豆吞噬者

Golang 大杀器之性能剖析 PProf

文地址:Golang 大杀器之性能剖析 PProf 前言 写了几吨代码,实现了几百个接口。功能测试也通过了,终于成功的部署上线了 结果,性能不佳,什么鬼????? 想做性能分析 PProf 想要进行性能优化,首先瞩目在 Go 自身提供的工具链来作为分析依据,本文将带你学习、使用 Go 后花园,涉及如下: runtime/pprof:采集程序(非 Server)的运行数据进行分析 net/http/pprof:采集 HTTP Server 的运行时数据进行分析 是什么 pprof 是用于可视化和分析性能分析数据的工具 pprof 以 profile.proto 读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告) profile.proto 是一个 Protocol Bu...阅读全文

博文 2019-07-19 21:32:40 李_MAX

使用Envoy 作Sidecar Proxy的微服务模式-3.分布式追踪

本博客是深入研究Envoy Proxy和Istio.io 以及它如何实现更优雅的方式来连接和管理微服务系列文章的一部分。 这是接下来几个部分的想法(将在发布时更新链接): 断路器(第一部分) 重试/超时(第二部分) 分布式跟踪(第三部分) Prometheus的指标收集(第四部分) 服务发现(第五部分) 第三部分 - 使用envoy proxy 实现分布式追踪 第一篇博文向您介绍了Envoy Proxy的断路功能实现。在第二部分中,仔细研究了如何启用额外的弹性功能,如超时和重试。在第三部分中,我们将了解如何在服务网格中启用分布式跟踪。有意进行一些简单的演示,因此我可以单独说明模式和用法。请下载此演示的源代码并按照说明进行操作! 该演示由一个客户端和一个服务组成。客户端是一个Java http...阅读全文

博文 2019-02-23 19:34:41 iyacontrol

Golang sync.WaitGroup基础用法

package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() fmt.Println("First goroutine sleep") time.Sleep(1 * time.Second) }() wg.Add(1) go func() { defer wg.Done() fmt.Println("Second goroutine sleep") time.Sleep(2 * time.Second) }() wg.Wait() fmt.Println("All goroutines complete") } 程序输出...阅读全文

博文 2019-06-08 15:32:42 FredricZhu

Go36-12-函数

函数 在Go语言中,函数是一等(first-class)公民,函数类型也是一等的数据类型。 函数不但可以用于封装代码、分割功能、解耦逻辑,还可以化身为普通的值,在其他函数间传递、赋予变量、做类型判断和转换等等。函数值可以由此成为能够被随意传播的独立逻辑组件(或者说功能模块)。 一等公民 开头说的,函数是一等公民,函数类型是一等数据类型: package main import "fmt" type calcFunc func(int, int) int func add(x, y int) int { return x + y } func sub(x, y int) int { return x - y } func main() { var f1, f2 calcFunc f1, f2 ...阅读全文

博文 2019-01-08 20:35:14 骑士救兵

GoLang-Scheduling In Go : Part I - OS Scheduler

Scheduling In Go系列文章 本文主要针对Go语言中的调度。 目录 Part I - OS Scheduler Part II - Go Scheduler Part III - Concurrency Part I - OS Scheduler 第一部分,将提供对Go中调度器背后的机制和语义的理解。 Introduction Go调度的设计与实现提供了高效率和高性能的多线程,然而如果你的Go程序多线程设计不支持Go调度的工作,那这也将无济于事。本文主要集中于调度程序的高级机制和语义,展现出多线程工作的一些细节,从而帮助你更好的做出工程决策。 OS Scheduler 操作系统调度器是软件非常重要的部分。我们的程序在运行运行的时候只是一串需要被顺序执行的指令,为了执行这些指令,操...阅读全文

博文 2020-03-16 09:32:57 帘外五更风

一等公民 Golang

下载安装Go语言 https://golang.org/doc/install https://golang.google.cn/dl/ 安装IDE Atom:https://atom.io + package:go-plus 若没有设置环境变量使用 Unix上默认为 $HOME/go Windows上默认为 %USERPROFILE%/go Mac 上 GOPATH 通过修改~/.bash_profile来设置 package main //包 ,表明代码所在的模块(包) /* //只有25个关键字 1.必须是main 包:package main 2.必须是main 方法:func main() 3. 文件名不一定是main.go */ /* 退出返回值 与其他主要编程语言的差异 Go中...阅读全文

博文 2019-06-09 21:32:39 aicken_wang

golang进行交叉编译

golang进行交叉编译 交叉编译即编译不同操作系统平台的可执行程序 golang执行交叉编译,只需要使用两个变量 - GOOS:目标操作系统 - GOARCH:目标操作系统的架构 根据下面这个表格指定就行了。 其中386指的是32位系统 OS ARCH OS version linux 386 / amd64 / arm >= Linux 2.6 darwin 386 / amd64 OS X (Snow Leopard + Lion) freebsd 386 / amd64 >= FreeBSD 7 windows 386 / amd64 >= Windows 2000 build命令的用法如下 usage: go build [-o output] [-i] [build flags]...阅读全文

博文 2020-03-27 06:32:42 泥之天空

Learn JavaScript with p5.js中文版 第一章 导学

在我们生活的这个时代,编程是无价之宝。它具有提升就业、未来发展甚至是你的智力的超能力。计算机正在驱动人类历史最大的资本扩张之一,没有比现在学习编程的更好时机了。 为何学习编程 我与编程的第一次正面交锋是在大学时。我们要学习一门名为 C#(C Sharp)的编程语言,第一次考试我就挂科了,第二次补考也仅仅是勉强通过。带头内心的挫败感,很长时间我都和编程保持距离。我把它当成一种我不具备的天赋。后来我从工程的工作转到了视觉效果,因为我想要进入一个有更多创意表达空间的领域。通过视效的工作,我逐渐意识到整个操作都是借力于计算机运算。从使用的软件到辅助制片(production)的项目管理...,编程无处不在。通过它各工作室可以为电影带来震憾的效果,并产生数百、数千万美元的票房。 意识到在我的行业中编程...阅读全文

博文 2019-01-28 11:34:51 矢寸心

生产环境容器落地最佳实践 --JFrog 内部K8s落地旅程

引言Kubernetes已经成为市场上事实上领先的编配工具,不仅对技术公司如此,对所有公司都是如此,因为它允许您快速且可预测地部署应用程序、动态地伸缩应用程序、无缝地推出新特性,同时有效地利用硬件资源。本期我们将回顾采用Kubernetes作为容器编排工具的公司所面临的复杂性和挑战。我们希望我们提供的经验教训、最佳实践和技巧将帮助您在前往K8s旅途中起步并继续前进。本期将介绍关于在Kubernetes生产环境的最佳实践,包括::为上K8s容器云准备好应用程序在Kubernetes中获得灵活性和通用性为所有应用程序使用单一、可信和可靠的源自动部署到Kubernetes在Kubernetes中构建可靠且可伸缩的环境可见性和安全性:在Kubernetes中保护您的应用程序在Kubernetes中记...阅读全文

博文 2020-03-12 13:37:17 JFrogChina

Go教程:第一篇介绍Go

第一篇: 介绍 本文是我们《Golang系列教程》开篇文章,文章中讲介绍Go语言,并讨论Go和其他语言之间 的优劣性。 介绍 Go 也被称为Golang 是一个由Google开发的开源,编译型,静态类型的语言。关键的创始人有: Ro Pike,Ken Thompson 和Robert Griesemer。Go于2009年向公众开放。 Go 是一个通用的语言,它提供了 简单的语法,健壮的标准库。最重要是:Go能够创建高可用,可扩展的web应用。 当然了,Go也能用于开发命令行应用,桌面应用以及移动应用。 Go的优势 在众多编程语言如: Python,ruby,nodejs.... 云集的情况下,为什么要选择Go作为服务端的编程语言呢? 这里列出来一些,我在选择Go时,所带来的好处。 简单的语法...阅读全文

【转载】关于docker的15个小tip

文地址:http://www.cnblogs.com/elnino/p/3899136.html 获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): $ ID=$(docker run ubuntu echo hello world) hello world $ docker commit $ID helloworld fd08a884dc79 这种方式在编写脚本的时候很有用,比如你想在脚本中批量获取id,然后进一步操作。但是这种方式要求你必须给ID赋值,如果是直接敲命令,这样做就不太方便了。 这时,你可以换一种方式: $ alias dl=’docker ps -l -q’ $ docker run ubuntu echo hello w...阅读全文

博文 2019-01-31 12:34:43 Mr_Leung

面试都在问的微服务,一文带你彻底搞懂!

来自公众号:后端技术学堂 作者LemonCoder 单体式应用程序 与微服务相对的另一个概念是传统的「单体式应用程序」( Monolithic application ),单体式应用内部包含了所有需要的服务。而且各个服务功能模块有很强的耦合性,也就是相互依赖彼此,很难拆分和扩容。 在座的各位都写过单体程序,给大家举个栗子,刚开始写代码你写helloworld 程序就是单体程序,一个程序包含所有功能,虽然helloworld 功能很简单。 单体应用程序的优点 开发简洁,功能都在单个程序内部,便于软件设计和开发规划。 容易部署,程序单一不存在分布式集群的复杂部署环境,降低了部署难度。 容易测试,没有各种复杂的服务调用关系,都是内部调用方便测试。 单体应用程序的缺点 单体程序的缺点一开始不是特别明...阅读全文

博文 2020-05-28 06:32:45 码农小光

GO的第八天,函数多返回值

多返回值 在Go中,一个函数可以返回多个值,这和其他编程语言有很大的不同。对于我们这些有编程经验的人来说,学习这个特性不难,而是很难想到去使用这个特性。 举个简单的例子: package main import "fmt" func swap(a int, b int) (int, int){ return b, a } func main() { a := 1 b := 2 a, b = swap(a, b) fmt.Println(a, b) } 上面这个简单的交换两个数值的例子,可以简单的理解多返回值。 还有一种多返回值的写法,就是函数将所有的返回值都显示定义,那么该函数的return语句可以省略操作数。这种我们称之为 bare return。 func swap(a int, b i...阅读全文

Golang单元测试入门实践总结

背景: 之前很长一段时间再写Golang程序时,不会有意识去写单元测试,直到后来写了独立项目后,慢慢才发现给一个功能编写对应的单元测试是多么高效和方便,接下来就再一起复习下Golang中的测试. UnitTest(单元测试) 单元测试是程序开发者适用一段代码来验证另外一段代码写的是否符合预期的一种相对高效的自我测试方法。 还记得最早开始搞运维时,写的程序基本上是通过main程序去调用具体的功能函数,然后通过具体的输出来主观验证结果是否符合预期,这种方式对于搞正统的软件开发者而言会感觉很傻,但这对于运维领域来说却很实用,很有效,因为通常运维工作中需要的一些开发都不会是逻辑较为复杂的程序,所以没有必要专门去写测试程序去测试另外一个程序是否符合预期。 但是随着工作内容和运维需求的变化,不得不使用一...阅读全文

博文 2019-11-10 03:32:58 更多精彩内容【实践】Golang的单元测试入门go test笔名辉哥[译]golang基础-编写单元测试GeminiGirl0604GO语言静态代码测试---应用于区块链构建性测试老余2017golang 单元测试 UnitTest 覆盖率 基准测试木猫

最新golang开发环境搭建

本文将以mac环境为例给读者一个搭建golang开发环境的方案 golang安装 在mac 系统下,大部分用户都安装有home brew(https://brew.sh/ ),我们可以通过home brew来安装golang。 brew install go 执行完毕后 执行go version可以查看go的版本。 设置GOPROXY echo "export GOPROXY=https://goproxy.cn" >> $HOME/.zshenv source $HOME/.zshenv VSCode安装 打开https://code.visualstudio.com/。点击“Download For Mac” 下载Vscode。下载完成后解压,可以得到Visual Studio Code...阅读全文

golang 基础(28)defer

square-gopher.png 资源管理与出错处理 defer 调用 有的时候我们需要程序发生错误后需要进行后续的处理,例如关闭文件、结束网络连接等。这时候我们就会用到 def ,如果是 java 的 developer 可以理解为 finally。 确保在函数结束时发生 参数在 defer 语句时计算 defer 列表为后进先出 var wg sync.WaitGroup func say(s string){ for i:=0; i < 3; i++ { fmt.Println(s) time.Sleep(time.Millisecond * 100) } wg.Done() } func main(){ wg.Add(1) go say("Hey") wg.Add(1) go sa...阅读全文

博文 2019-04-03 08:34:39 zidea

你的Helm安全吗?

一、背景Kubernetes是目前最为流行、成为事实标准的容器集群管理平台,为容器化应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。在Kubernetes当中,用户通过使用API对象,如Pod、Service、Deployment等,来描述应用的程序规则,而这些资源对象的定义一般需要写入一系列的YAML文件中,然后通过 Kubernetes 命令行工具Kubectl进行部署。由于通常应用程序都涉及到多个Kubernetes API对象,而要描述这些API对象就可能要同时维护多个YAML文件,从而在进行 Kubernetes 软件部署时,通常会面临下述几个问题:如何管理、编辑和更新这些这些分散的 Kubernetes 应用配置文件如何把一套相关的配置文件作为一个应用进行管理如...阅读全文

没有“银弹” 之 微服务架构

没有“银弹”没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性。 什么是微服务 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。 系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。 每个微服务仅关注于完成一件任务并很好地完成该任务。 在所有情况下,每个任务代表着一个小的业务能力。 其实微服务本身不是什么新技术,只是随着业务的不断发展,对业务不断分层,不断拆分,形成的一种架构风格。 微服务与SOA 技术为业务而生,架构也为业务而出现。 随着业务的发展、用户量的增长,系统数量增多,调用依赖关系也变得复杂,为了确保系统高可用、高并发的要求,系统的架构也从单体时代慢慢迁移至服务SOA时代。 根据不同服务对系统资源的要求不同,我...阅读全文

博文 2020-03-27 16:32:46 陌若尘_c167

Go函数式编程以及在Tendermint/Cosmos-SDK中的应用

Go函数式编程以及在Tendermint/Cosmos-SDK中的应用 函数式编程(Functional Programming)实际是非常古老的概念,不过近几年大有越来越流行之势,连很多老牌语言(比如Java)也增加了对函数式编程的支持。本文结合Temdermint/Cosmos-SDK源代码,介绍函数式编程中最重要的一些概念,以及如何使用Go语言进行函数式编程。以下是本文将要讨论的主要内容: 一等函数 高阶函数 匿名函数 闭包 λ表达式 一等函数 如果在一门编程语言里,函数(或者方法、过程、子例程等,各种语言叫法不同)享有一等公民的待遇,那么我们就说这门语言里的函数是一等函数(First-class Function )。那怎样才能算是“一等公民”呢?简单来说就是和其他数据类型待遇差不多...阅读全文

博文 2019-07-12 19:34:18 CET_Talk

2019-01-17

【CSDN编者按】在 2017年 本年度计算机语言榜这篇中, 我们汇报总结了 2017 年最最火的 TOP 20 计算机语言,全部的语言中,Java、C、C++ 名列前三。Java 凭着可移植性、可扩展性及其庞大的社区性傲视群雄,那麼最原始的 C 和 C++ 为什么依然成活至今?本文的创作者亦发表了自身的观点,他觉得,硬件访问、效率高、跨平台性、持续演进、应用领域广泛等等全是他们风靡迄今不可缺少的关键因素。下列为译文:C 语言问世于 1972 年(45 年前),而 C ++ 问世于 1985 年。或许有些人会觉得在这般悠长的时间里,像 C、C++ 那样古老的语言早已日薄西山,显然你弄错: 1. 访问硬件在许多应用程序中浏览硬件是十分关键的,C 和 C ++ 能够或多或少让人完全控制硬件。直接...阅读全文

博文 2019-01-17 17:35:04 青春埋在这