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

好程序员分享如何看待CSS中BEM的命名方式?

好程序员分享如何看待CSS中BEM的命名方式?BEM的意识就是块(block)、元素(element)、修饰符(modifier),是由yandex团队提出的一种CSS Class命名方法。 任何一个东西的存在都有其存在的道理,如果他毫无价值,那么肯定会被淘汰,后人可能都不了解,甚至都不会出现在后人的世界里。 关于BEM命名其最大的争议就是其命名风格,它鼓励一级一级的写的非常具体,但是会很长。如此常的命名会影响书写效率,名称过长代码量就会增多,文件体积就会变大(在gzip下这个不算是个问题),从而会影响传输速度,用户体验度就低,但是作为一个职业人我们都不能单纯把个人喜好和习惯作为借口来拒绝或否定其用途。 风格对于使用者来说并不是很重要,关键的是看其效果。正所谓人们常说的“不看疗程,看疗效”。...阅读全文

V8垃圾回收?看这篇就够了!

什么是内存管理 内存管理是控制和协调应用程序访问电脑内存的过程。这个过程是复杂的,对于我们来说,可以说相当于一个黑匣子。 当咱们的应用程序运行在某个操作系统中的时候,它访问电脑内存(RAM)来达成下列几个功能: 运行需要执行的字节码(代码) 存储程序运行时候所需的数据 加载程序运行所需的运行时环境 上面用来存储程序运行时所需的数据,就是下面要说的堆(heap)和栈(stack)。 栈(stack) 顾名思义,是一种先进后出的结构,参考一下餐盘的取和放。 image 俄罗斯套娃,我这不禁 image 栈的特点 由于先进后出性质,在数据的处理上栈有着很好的速度,因为只需从最顶部压栈和出栈就好了,简单明了。 不过,存储在栈中的数据必须是大小有限,生存期确定。 函数执行的时候会创建一个明确的栈,并压...阅读全文

博文 2020-02-04 16:32:46 小雨小雨丶

Golang程序调试工具介绍(gdb vs dlv)

通过log库输出日志,我们可以对程序进行异常分析和问题追踪。但有时候,我也希望能有更直接的程序跟踪及定位工具能够帮助我们更方便快捷的追踪、定位问题,最直观的感觉还是使用调试器。Linux平台下,原生的C/C++程序,我们往往使用gdb进行程序调试,切换到Golang,我们同样还是可以使用gdb进行调试。同时我们还可以使用golang实现的调试器dlv进行调试。以下内容是我对gdb以及dlv使用及对比总结 准备工作为展示整个调试过程,准备了一个演示项目GoDbg,整个目录结构如下所示 [lday@alex GoDbg]$ tree . ├── main.go └── mylib └── dbgTest.go 其中,main.go为主函数入口,而dbgTest.go启动多个goroutine,用...阅读全文

博文 2018-08-31 09:41:33 lday的博客

Preface

‘‘Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.’’ (From the Go web site at golang.org) Go语言是开源的程序语言,它意在使人们能够构建更容易、更可靠、更有效率的软件 Go was conceived in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson, all at Google, and was announced in November 2009. Go语言是Robert Griesemer, ...阅读全文

Golang 开发环境配置-Windwos

下载安装Go语言 下载地址:https://golang.google.cn/dl/ 下载完成后,直接双击 msi 文件进行安装,一路点击Next即可 打开wind+R 输入cmd,打开命令行工具,输入 go version 查询安装的go版本。 $ go version go version go1.14.2 windows/amd64 配置go环境变量 GOPATH是一个环境变量,用来表明你写的go项目的存放路径。使用msi安装的golang,会为你配置默认的环境变量,我们需要修改GOPATH的路径,设置为一个比较明显的路径。 创建GOPATH目录,在目录下创建三个文件夹 bin:用来存放编译后生成的可执行文件 pkg:用来存放编译后生成的归档文件 src:用来存放源码文件 配置path...阅读全文

博文 2020-05-05 18:32:43 进击的小白

【译】 Golang 中的垃圾回收:Go Traces(二)

前言 这系列的文章如下 Golang 中的垃圾回收(一) Golang 中的垃圾回收(二):Go Traces 第一部分,我花了时间去描述了golang 垃圾收集器的行为,并说明了程序运行时候收集器所产生的延迟。我分享了怎么样去产生以及去解释GC traces。并展示了堆内内存如何改变,并且解释了GC不同阶段对延迟代价的影响。 最后的结论是,如果你减少了堆的压力,你就会减少延迟代价并提高了程序性能。我也指出了,降低收集速率,推迟收集,设法增加两次收集的时间间隔并不是很好的策略。即使是收集速率很快,但是以一致的速度进行,也能保持程序以最佳性能运行。 这部分里,我会带你通过一个实际的web应用并向你展示怎么样生成GC traces和程序状态。然后我会解释这些工具的输出内容,这样你可以找到方法去提...阅读全文

博文 2019-07-18 14:35:34 lucifer_L

构建生产就绪的K8S集群的16点清单

Kubernetes是用于构建高度可扩展系统的强大工具。结果,许多公司已经开始或正在计划使用它来协调生产服务。不幸的是,像大多数强大的技术一样,Kubernetes也很复杂。我们整理了以下清单,以帮助你生产环境最佳实践Kubernetes。 容器最佳实践 Kubernetes提供了一种编排容器化服务的方法,因此,如果您没有按顺序实践你的容器,那么集群一开始就不会处于良好状态。请按照以下提示开始。 1: 使用精简基础镜像 what:容器是内置在系统镜像中的应用程序堆栈。从业务逻辑到内核的所有内容都打包在一起。最小的镜像会占用尽可能多的OS,并迫使您显式添加所需的任何组件。 why:仅在您的容器中包括要使用的软件,同时具有性能和安全性方面的好处。磁盘上的字节数更少,复制镜像的网络流量更少,并且潜...阅读全文

博文 2019-12-23 21:32:41 iyacontrol

解决go get golang.org/x 包失败

## GOPROXY 环境变量 知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。 其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。 更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,我们只需设置该环境变量即可正常下载被墙的源码包了: ``` 命令 export GOPROXY=https://goproxy.io ``` 不过,需要依赖于 go module 功能。可通过 export GO111MODULE=on 开启 M...阅读全文

Golang笔记03《Go程序设计语言》第一章入门

《Go程序设计语言》第一章入门 永痕的Hello World package main import "fmt" func main(){ fmt.Println("Hello World") } 输入命令 go run hello.go,如果您输入的程序是正确的,那么会输出 Hello World 这就是go语言的最简单的最基础的代码,但是我们需要注意的事情是: 简单的事情不代表不重要 简单的事情不代表不重要 简单的事情不代表不重要 重要的事情说三次 end.....阅读全文

博文 2019-06-14 23:32:43 我加入简书的路程

代码不debug的时候接口正常返回数据,一旦debug服务器就崩溃了.各位大佬进来看看

`//解析查询结果; func DealResultDb(this ITableVisitor, rslt []map[string]interface{}) (interface{}, int) { result, n := ParseDbResult(this, rslt) if n < 0 { return nil, 0 } list, ok := result.([]InvestSupervisorReq) if !ok { return nil, 0 } stack := make([]InvestSupervisorReq, len(list)) flag := make([]int, len(list)) index:=0 Find(stack, list, 1, 0, fla...阅读全文

博文 2019-12-24 15:35:27 blackdinosuar

go网络编程学习笔记6(安全)

简介 尽管互联网最初被设计为可以承受敌对代理攻击的系统,但它过去一直是在一个可信的实体和合作的环境中发展起来的。可惜现在已经时过境迁。垃圾邮件,拒绝服务攻击,网络钓鱼这些东西使得每一个上网者都需要自行承担风险。 应用程序应当在复杂的互联网环境中仍然可以正确工作。“正确”不光意味着程序功能的正确,同时还意味着要确保数据传输过程中的保密性和完整性,甚至只允许合法用户进行访问和其它问题。 这自然使得编程更加复杂。在构建安全应用程序的过程中,会出现很复杂和微妙的问题。如果你想自己这样做(如实现一个自有安全库),通常都会以失败而告终。相反,你需要使用安全专家设计的安全库。 ISO 安全架构 功能层次 主要的安全系统功能 认证 - 身份校验文件 数据完整性 - 数据不被篡改 保密 - 数据不能暴露给他人...阅读全文

博文 2019-06-14 16:02:51 GeminiGirl0604

简单工厂模式--Golang版本

目录结构:   | -- calculater-simpleFactory     | -- main.go     | -- Calculater     |   | -- Calculater.go main.go package main import ( "calculater-simpleFactory/Calculater" "fmt" ) func main() { numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} opreate := Calculater.NewCalculate("+") sum, _ := opreate.Opreation(numbers) fmt.Println("sum = ", sum) opreat...阅读全文

博文 2020-03-22 22:32:44 韩小禹

你应该知道的HTTP基础知识

姓名:宫松涛学号:19021210927嵌牛导读:为大家详细讲解HTTP基础知识,让大家快速掌握。嵌牛鼻子:HTTP基础知识嵌牛提问:有哪些HTTP基础知识?转载源:你应该知道的HTTP基础知识嵌牛正文:本文主要内容:HTTP请求报文格式HTTP响应报文格式Header请求体的3种形式推荐调试工具HTTP的组成图示1. HTTP请求报文格式HTTP 的请求报文分为三个部分请求行、请求头和请求体,格式如图: HTTP请求报文格式注:部分文章也将HTTP请求报文分为两部分请求头和请求体,请求头的第一行为请求行。1.1 请求行请求行(Request Line)分为三个部分:请求方法、请求地址和协议及版本,以CRLF(\r\n)结束。HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、...阅读全文

博文 2019-12-08 01:32:55 走不完的叉路口

求人不如求己,自己动手写一个CSDN博客备份小工具?

求人不如求己,自己动手写一个CSDN博客备份小工具? 前提概要 背景 cabtool 实践基础 爬虫实践 (一)分析如何爬取博客的markdown内容 (二)分析如何批量爬取博客的markdown (三)如何模拟登录,获得cookies 使用说明 方式一 方式二 前提概要 背景 因为笔者在上个月的时候,突然想扩展一下技术栈,不能仅仅局限于Java,还是得掌握一门工具语言,不然显得太low。所以也就对Python和Golang类的语言有了一些兴趣。也就在上个月简单的学习了Python3。但是呢,苦于没有时间也没有项目可以实践,所以爬虫就成为了避免忘记python的最佳实践 同时笔者发现在CSDN写的笔记好像也堆积了八九十篇啦。但是CSDN好像却没有类似简书一键导出的备份功能。于是之前没有数据备...阅读全文

博文 2019-07-20 08:32:52 SnailMann

编程高阶用法--开发者高频词汇

*有追求的开发者总会在开发时遇到变量命名困难或者命名冗长庸俗的时候。阅读代码过程中遇到一些很好的命名,也遇到一些不好的。当初并没有记录下来,之后才开始记录,有的也找不到出处了。以下高频词汇供有追求的开发者参考* 多注意使用高阶词汇表达,变成一个有追求的开发者吧。 stale 陈腐的,陈旧的 用于需要被替换、刷新的资源 transport 传输器 restricted 限制的 exclusive 专一的 of 用于Enum 反例 com.netflix.eureka.Version#toEnum org.springframework.data.domain.PageRequest#of(int, int) HystrixCommandAspect.HystrixPointcutType#of...阅读全文

博文 2019-03-20 11:34:42 seeing

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

本节完整代码:GitHub 本文是关于使用 ReactJS 和 Go 构建聊天应用程序的系列文章的第 4 部分。你可以在这里找到第 3 部分 - 前端实现 这节主要实现处理多个客户端消息的功能,并将收到的消息广播到每个连接的客户端。在本系列的这一部分结束时,我们将: 实现了一个池机制,可以有效地跟踪 WebSocket 服务中的连接数。 能够将任何收到的消息广播到连接池中的所有连接。 当另一个客户端连接或断开连接时,能够通知现有的客户端。 在本课程的这一部分结束时,我们的应用程序看起来像这样: 拆分 Websocket 代码 现在已经完成了必要的基本工作,我们可以继续改进代码库。可以将一些应用程序拆分为子包以便于开发。 现在,理想情况下,你的 main.go 文件应该只是 Go 应用程序的入...阅读全文

博文 2019-08-03 00:34:15 咔叽咔叽

06-Go语言命令行参数

GO命令行操作指令 标准go语言项目文件目录格式 项目文件夹就是GOPATH指向的文件夹 src文件夹是专门用于存放源码文件的 main文件夹是专门用于存储package main包相关源码文件的 其它文件夹是专门用于存储除package main包以外源码文件的 bin文件夹是专门用于存储编译之后的可执行程序的 pkg文件夹是专门用于存储编译之后的.a文件的 |---项目文件夹 -----------|--------src文件夹 -----------------------------|--------main文件夹 -----------------------------|--------其它文件夹 -----------|--------bin文件夹 -----------|--...阅读全文

博文 2018-10-15 19:34:39 月色下的阳光

OS Thread Model

概念 线程: 程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,线程由CPU独立调度,在多CPU下可以多线程同时运行。 进程: 进程是资源(CPU、内存等)分配的基本单位,拥有独立的地址空间,它是程序执行时的一个实例,一个进程可有多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。 操作系统线程模型 1:1核心线程模型 pthread线程库--NPTL image.png 内核线程(KLT)由操作系统内核直接支持的线程,内核通过操纵调度器对线程进行调用,程序不直接与内核线程接触而是通过轻量级进程(LWP),LWP内核线程一一对应,程序和内核线程通过轻量级进程联系起,这样的局限性就是每次线程操作都需要从用户态到内核态的转化,代价高,而且由于一一对应的...阅读全文

博文 2019-10-11 01:32:45 aside section ._1OhGeD

golang 项目实战简明指南

开发环境搭建 golang 的开发环境搭建比较简单,由于是编译型语言,写好 golang 源码后,只需要执行 go build 就能将源码编译成对应平台(本文中默认为 linux)上的可执行程序。本文不再赘述如何搭建 golang 开发环境,只说明下需要注意的地方。 从官网下载对应平台的 golang 安装包中包括 golang 的编译器、一些工具程序和标准库源码。早期的 golang 版本中,需要设置 GOROOT 和 GOPATH 两个环境变量。 从 1.8 版开始,GOPATH 不再需要显示设置。如果没有显示设置,则 GOPATH 的默认值为 $HOME/go 。GOPATH 可以设置多个目录,但推荐只设置一个或直接使用默认值,多个 GOPATH 会造成依赖管理的困难。推荐将 $GOP...阅读全文

博文 2018-12-10 14:43:13 litang.me

LINUX, GO GO GO!

计算机组成:CPU,存储设备,I/O设备,内存 linux发行版:slackware:SUSE Linux Enterprise Server (SLES)OpenSuse桌面debian: ubuntu, mintredhat: RHEL: RedHat Enterprise LinuxCentOS:兼容RHEL的格式Fedora:每6个月发行一个新版本ArchLinux:轻量简洁Gentoo:极致性能, 不提供传统意义的安装程序Linux的哲学思想:一切皆文件 在linux系统中,目录,配置文件,硬盘等等都是用文件来表示的 linux命令:pwd:显示当前工作目录echo:回显ifconfig:查看网卡信息tty:查看当前终端startx:切换图形界面export:设置或者显示系统环境变...阅读全文

Go基础学习记录 - 编写Web应用程序 - 博客编辑完善更新功能

每次我都会将自己实践的代码放到github上并且都会打一个tag,方便后面用的同学使用,这里我以下面分支的代码进行实践分享 https://github.com/durban89/typescript_demo.git tag: 1.1.1 上篇文章【Go基础学习记录 - 编写Web应用程序 - 博客编辑功能完善】我们只是将需要的文章从数据库读取出来,然后在前端展示,那么如果要修改的话,改如何操作,今天的分享继续上篇文章 第一步、添加更新Model 既然更新,就涉及到了更新的逻辑,即如何将更新写入数据库,这里我将之前的Update函数进行完善操作,将Update改为了UpdateData,主要原因是我在另外要给sqlite库中也写了一个Update的函数,go工具提示我重复了,这个不知道是不...阅读全文

博文 2018-10-16 23:34:37 DurbanZhang

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记录,...阅读全文

学习笔记-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基础学习记录 - 编写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 文振熙

[译] 添加一个新语句到Golang编译器内部-第一部分

序 这是两部分系列中的第一篇文章,该系列采用基于教程的方法来探索Go编译器。编译器很大,可能需要一本书去正确描述,本文章的想法是提供一种“深度优先"的探索思路。作者计划在将来写更多关于编译器特定领域的描述性文章。 我们将更改Go编译器添加一个新的语言特性(仅用来探索编译器的实现),并构建一个修改后的编译器来使用。 原文链接 注:一些编译器专业术语仍然沿用了英文。 任务:添加一个新语句 许多语言都有一个while语句,在Go中使用for表示: for { } 在Go中添加while语句是简单的,因为只需要简单的将while翻译为for。所以我们选择了一个更具有挑战性的任务:添加until。until与while相似,只是将判定条件改为了...阅读全文

博文 2019-07-08 02:32:40 Leonard_Wang

leetcode_459

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

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

可视化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中国

zero down-time update服务的方案

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

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

「Go学习笔记」1.初识Go

前言 由于在公司广泛使用Docker的大环境下,突然对它的编程语言(Go)了解下。并且感觉现在Go语言的应用也是越来越广泛,很多互联网大厂都在使用,目前利用业余时间来学习下,主流还是Java,学明白以后可能考虑转哦????。如果你也感兴趣不如一起来学习。 Go介绍 简史Go语言是Google于2009年正式发布的一款开源的静态编译型语言。Go语言最早于2007年Robert Griesemer(Java HotSpot虚拟机、V8引擎开发者之一)和Ken Thompson(贝尔实验室UNIX团队成员,C语言、UNIX和Plan9创始人之一)与Rob Pike三人在业余时间联合开发。(老外就是吊)时至今日Go语言已完成自举,社区生态斐然,包括大量拿的出手的杀手锏级项目(Moby、Docker、...阅读全文

博文 2019-10-16 10:02:38 码处高效

Go 每日一库之 gojsonq

简介 在日常工作中,每一名开发者,不管是前端还是后端,都经常使用 JSON。JSON 是一个很简单的数据交换格式。相比于 XML,它灵活、轻巧、使用方便。JSON 也是RESTful API推荐的格式。有时,我们只想读取 JSON 中的某一些字段。如果自己手动解析、一层一层读取,这就变得异常繁琐了。特别是在嵌套层次很深的情况下。今天我们介绍gojsonq。它可以帮助我们很方便的操作 JSON。 快速使用 先安装: $ go get github.com/thedevsaddam/gojsonq 复制代码后使用: package main import ( "fmt" "github.com/thedevsaddam/gojsonq" ) func main() { content := `{...阅读全文

博文 2020-02-25 10:34:28 darjun

[译] 使用 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 日志之旅 ...阅读全文

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

基于consul构建golang系统分布式服务发现机制

文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题。在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服务的时候,人肉配置极其麻烦且容易出错。 之前在一个C/C++项目中,采用ZooKeeper进行服务治理,可以很好的维护服务之间的关系,但是使用起来较为麻烦。现在越来越多新的项目采用consul进行服务治理,各方面的评价都优于ZooKeeper,经过几天的研究,这里做一个总结。 zookeeper和consul比较 开发语言方面,zookeeper采用java开发,安装的时候需要部署java环境;consul采用golang开发,所有依赖都编译到了可执行程序...阅读全文

博文 2018-07-26 14:30:00 williamjie

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

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

Python之上下文管理器

1.引入 我们时常会看到网上很多人写文件读写的代码的时候,常常是这么写的: with open('test.txt', 'r') as f: print(f.read()) # 其它操作 这个with有什么用呢? 我们来看看不用这种写法我们怎么写。 假如我们直接这么写: f = open('test.txt', 'r') print(f.read()) # 其它操作 f.close() 这种写法有什么问题呢? 假如在做其它操作的时候,出错了,程序终止,f.close()不会执行,则f这个句柄会一直得不到释放,要是并发操作,这个就很严重了。 所以我们通常会这么写: try: f = open('test.txt', 'r') except Exception: pass finally: f....阅读全文

博文 2019-10-11 18:32:50 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 土豆吞噬者

使用 Go 语言创建 WebSocket 服务

感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18504.html 今天介绍如何用 Go 语言创建 WebSocket 服务,文章的前两部分简要介绍了 WebSocket 协议以及用 Go 标准库如何创建 WebSocket 服务。第三部分实践环节我们使用了 gorilla/websocket 库帮助我们快速构建 WebSocket 服务,它帮封装了使用 Go 标准库实现 WebSocket 服务相关的基础逻辑,让我们能从繁琐的底层代码中解脱出来,根据业务需求快速构建 WebSocket 服务。 WebSocket介绍 WebSocket 通信协议通过单个 TCP 连接提供全双工通信通道。与 HTTP 相比, WebSocket 不需要你为了获...阅读全文

博文 2020-04-02 16:33:28 朱柿子

数人云|90%产品服务化,细说豆瓣的5年变革之路

背景 今天主要分享下微服务中的Auto Scale,豆瓣2005年3月上线,是一家历史比较悠久的互联网公司,主要覆盖文化综合领域的Web、APP等各种产品,现在有豆瓣读书、豆瓣电影、豆瓣音乐等等。 Markdown 〓 豆瓣简介 在技术方面,豆瓣主要的开发语言是Python和Golang,豆瓣拥有自研私有云平台Douban App Engine(以下简称“DAE”),上面托管豆瓣网所有应用使用配置来描述应用:应用依赖MQ、Daemon,以及Cron,这样开发者使用一个配置文件就可以描述对资源的所有需求,平台拿到描述文件后可以在上面做需要的资源管配。 Markdown 〓 Douban App Engine 在DAE上会统一调度所有资源,产品开发人员不必关心具体的机器设备,比如无需关心某个业务...阅读全文

博文 2017-09-30 04:04:59 数人云