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

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

elasticsearch学习笔记-常用方法使用

go中elasticsearch sdk 常用基础操作1、创建客户端func getCli() *es.Client{cli :=es.SetURL("http://127.0.0.1:9200")client, err :=es.NewClient(es.SetSniff(enabled), cli)if err !=nil {panic(err)}}2、定义数据结构type ParamModel struct {Id int64 `json:"id"`Content string `son:"content"`.....}3、数据解析器func ParserFlOrder(res *es.SearchResult) (out interface{}) {temp :=ParamModel...阅读全文

博文 2019-11-08 10:27:26 545305939

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

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 随笔 - iota 的特性与用法

依靠编译器完成自增 const ( a = iota // a = 0 b // b = 1 c // c = 2 ) 利用只写变量 _ 跳过自增 const ( a = iota // a = 0 b // b = 1 _ _ c // c = 4 ) 可以插入其他常量,且不影响iota自增 const ( a = iota // a = 0 b = "b" // b = "b" c = iota //c = 2 d // d = 3 ) 如果定义在同一行 const ( a, b = iota , iota + 1 c, d e, f ) // a = 0, b = 1, c = 2, d = 3, e = 4, f = 5 定义位掩码表达式 const ( a = 1 << iota ...阅读全文

博文 2019-07-21 06:32:37 凉丶心园

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 泥之天空

Go基础学习记录之阻止Session劫持(Preventing session hijacking)

阻止Session劫持(Preventing session hijacking) Session劫持是一种常见且严重的安全威胁。在与服务器通信时,客户端使用Session ID进行验证和其他目的。不幸的是,恶意第三方有时可以跟踪这些通信并找出客户端Session ID。本次分享,将向您展示如何为教育目的劫持Session。 Session劫持过程 以下代码是count变量的计数器: // WelcomeLogin 欢迎登录页 func WelcomeLogin(w http.ResponseWriter, r *http.Request) { session, err := appSession.SessionStart(w, r) if err != nil { fmt.Fprintf(...阅读全文

博文 2018-11-06 14:34:44 DurbanZhang

RabbitMQ系列笔记主题订阅模式

导语 昨天的内容主要讲了RabbitMQ的发布订阅模式和路由模式,都很好的满足了我们的日志打印,但是如果说,我对日志的打印,希望可以过滤掉一些内容呢,比如说,在打印错误日志的时候,只打印login时的错误?这个时候,就需要我们使用主题订阅的模式,可以说,主题订阅模式可以完全代替路由模式,因为在主题订阅模式中,如果没有响应的关键词,便和路由模式完全一样。 主题交换器介绍 在使用主题交换器时需要注意以下几点 在使用routing_key,必须是有点分隔符进行分隔 * 可以代表代替一个单词 # 可以代替0个或多个单词 案例 我们对我们之前的例子做修改,这次修改希望生产者可以在运行的时候指定路由需要增加下面这个函数 func severityFrom(args []string) string { ...阅读全文

博文 2019-08-10 16:32:46 陌无崖

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

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

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

理解Kubernetes网络:ingress篇

在本系列的第一篇文章中,我讲了Pod跨Kubernetes集群中的节点相互连接的网络。第二篇重点讲了服务网络如何为Pod提供负载平衡,以便群集内的客户端可以与它们可靠地通信。对于这第三篇也是最后一篇文章,我想以这些概念为基础来展示集群外的客户端如何使用同一服务网络连接到Pod。由于各种原因,这很可能是三篇涉及最多的,并且掌握前两篇关于pod和service的内容是理解本篇的的前提。 路由并不是负载均衡 在上一篇文章中,我们创建了一个具有两个Pod的部署,并为该服务分配了一个IP,称为“集群IP”,针对Pod的请求已发送到该IP。我将在此处继续根据该示例进行构建。回想一下,该服务的群集IP 10.3.241.152位于与Pod网络以及节点本身所在的网络不同的IP地址范围内。我称这个地址空间为“...阅读全文

使用Vim编辑器开发Go的简单入门

今天是一次做Go的笔记,一开始直接打开Github上的Go项目然后跑到Wiki位置,然后作者列出了一堆学习Go的资料,这里我 以第一个学习资料https://tour.golang.org/作为Go学习到入门。然后为了训练我的终端运用 能力还有Vim下的编码能力这里我使用到了tmux和Vim编辑器,然后之前已经在VIM里面安装了Vim-go插件了,所以在之前 的Go项目文件目录下可以直接使用命令模式使用:Go来执行相应的操作。如果项目报错都话你可能是没有按照 Vim-go的要求现在项目里面执行:GoInstallBinaries. You will also need to install all the necessary binaries. vim-go makes it easy to...阅读全文

Aura: 一个专注于监控和采集的 SDK 组件

## ???? Overview ☁️ 在云原生时代,以 [Prometheus](https://prometheus.io) 为中心的监控生态已经逐渐完善,社区也出现了大量的中间件,数据库以及各种基础组件的 exporter,Prometheus 官方也给出了维护了一份 exporter 列表 [instrumenting/exporters](https://prometheus.io/docs/instrumenting/exporters)。 但是 Prometheus 的缺点和它的优点一样明显,缺少高可用的集群方案。想了解 Prometheus 和监控系统的同学可阅读 [Prometheus 折腾笔记](https://github.com/chenjiandongx/prome...阅读全文

博文 2020-06-01 10:24:46 chenjiandongx

【转载】关于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

您需要了解的有关Kubernetes服务质量(QoS)

服务质量(QoS)类是Kubernetes的概念,它确定Pod的调度和驱逐优先级。 Kubernetes调度程序使用QoS类来做出有关将Pod调度到节点上的决策。 Kubelet使用它来管理驱逐pod的顺序,以及使用高级CPU管理策略允许更复杂的pod调度决策。 QoS类由Kubernetes本身分配给Pod。但是,DevOps可以通过处理Pod内各个容器的资源请求和限制来控制分配给容器的QoS类。 在kubernetes 中存在三种QoS类: Guaranteed Burstable BestEffort 让我们看一下不同的QoS类,看看它们如何与Kubernetes Scheduler和Kubelet一起工作。 Guaranteed 如何分配Pod的QoS Guaranteed 等级? ...阅读全文

《Go 语言程序设计》读书笔记 (三) 方法

方法 方法声明 在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法。 package geometry import "math" type Point struct{ X, Y float64 } // traditional function func Distance(p, q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y) } // same thing, but as a method of the Point type func (p Point) Distance(q Point) float64 { return math.Hypot(...阅读全文

博文 2019-12-24 14:32:42 KevinYan

GO语言学习笔记(一)Go语言的初步了解

一·、Go语言的官方网站https://golang.org/dl/二、安装Go语言Linux版本: tar zxf go1.11.4.linux-amd64.tar.gz mv go /usr/local/ 三、设置GOPATH和GOROOT环境变量 vim /etc/profile 增加这三行: export GOROOT=/usr/local/go export PATH=$GOROOT/bin:$PATH export GOPATH=$GOROOT/gocode 使其生效:source /etc/profile 四、验证 执行:go version go version go1.11.4 linux/amd64 五、Go环境变量介绍 执行:go env GOARCH="amd64" ...阅读全文

博文 2019-01-24 18:35:17 Mr大表哥

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

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

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

[系列] - 使用 go modules 包管理工具(一)

概述 我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的。 为什么是开箱即用,它会集成哪些功能? 以上功能点,都是常用的,后期可能还会增加。 废话不多说,咱们开始吧。 创建一个项目,咱们首先要考虑一个依赖包的管理工具。 常见的包管理有,dep、go vendor、glide、go modules 等。 最开始,使用过 dep,当时被朋友 diss 了,推荐我使用 go modules 。 现在来说一下 go modules ,这个是随着 Go 1.11 的发布和我们见面的,这是官方提倡的新的包管理。 说一个环境变量:GO111MODULE,默认值为 auto 。 当项目中有 go.mod 时,使用 go modules 管理,反之使用 旧的 GOPATH 和 v...阅读全文

博文 2019-08-26 19:32:46 新亮

Go 编程:那些隐晦的操作符

文发布于个人站点: GitDiG.com, 原文链接: Go 编程:那些隐晦的操作符 本篇作为 Go 编程“边角料”的最后一篇,主要针对 Go 语言提供的操作符进行一次总结。刚好回应上篇一位读者关于表达式是否要加'.'的问题做个回复。 在 Go 语言中,一共提供了47个操作符,包括标点符号。摘自官方文档,分别是: + & += &= && == != ( ) - | -= |= || < <= [ ] * ^ *= ^= <- > >= { } / << /= <<= ++ = := , ; % >> %= >>= -- ! ... . : &^ &^= 除以上操作符以外,在 Go 语言中还有一个特殊的符号 _, 以及一个非 Go 语言操作符的特殊字节?。 刨去一些常用的操作符,对其中较隐晦...阅读全文

博文 2019-07-17 08:02:46 JayL

Golang接口的小疑问

学习接口的时候有个2个小疑问 接口的方法是否能被部分实现? 实现部分接口方法的结构体是否能转化为该接口类型? 写了点代码测试,如下: package main import "fmt" type Human struct { age int8 gender int8 } type Man interface { GetAge() int8 GetGender() int8 } func (human *Human) GetAge() int8 { return human.age } func main(){ var humanS = Human {32, 1} fmt.Printf("%d", humanS.GetAge()) var man Man man = humanS fmt.Pr...阅读全文

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

Golang单元测试入门实践总结

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

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

Go基础系列:WaitGroup用法说明

正常情况下,新激活的goroutine的结束过程是不可控制的,唯一可以保证终止goroutine的行为是main goroutine的终止。也就是说,我们并不知道哪个goroutine什么时候结束。 但很多情况下,我们正需要知道goroutine是否完成。这需要借助sync包的WaitGroup来实现。 WatiGroup是sync包中的一个struct类型,用来收集需要等待执行完成的goroutine。下面是它的定义: type WaitGroup struct { // Has unexported fields. } A WaitGroup waits for a collection of goroutines to finish. The main goroutine calls ...阅读全文

博文 2018-11-23 09:12:07 f-ck-need-u

五分钟学Java:如何才能学好Java Web里这么多的技术

副本_未命名.jpg 原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本文是《五分钟学Java》系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章,有兴趣看本系列更多文章可以关注我的公众号【Java技术江湖】 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 本文思维导图 在这里插入图片描述 什么是Java Web 不知道Java We...阅读全文

博文 2020-03-05 03:32:48 程序员黄小斜

最新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 应用配置文件如何把一套相关的配置文件作为一个应用进行管理如...阅读全文

已刪除

出現這個問題要怎麼解決 原先用goland編輯器正常 使用visual studio code編輯器卻發生問題 main.go:13:2: import "./a" is a program, not an importable package a\main.go:13:2: cannot find package "./a" in: C:\Users\ASUS\Desktop\golang\uintptrescapes.dir\a exit status 1 Process exiting with code: ...阅读全文

博文 2019-07-13 10:04:50 cho010012

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

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

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

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 青春埋在这

Part I - 操作系统调度(翻译)

Part I - 操作系统调度 简介 多线程程序是如何正确的调度工作的,在这里作者给出了很多详细的例子一步步深入。 OS Scheduler 您的程序只是一系列需要一个接一个顺序执行的机器指令。为了实现这一点,操作系统使用了线程的概念。线程的任务是说明并顺序执行分配给它的指令集。执行一直持续到线程不再有指令可执行。这就是为什么我称线程为“执行路径” 您运行的每个程序都创建一个进程,每个进程都有一个初始线程。线程能够创建更多的线程。所有这些不同的线程彼此独立运行,调度决策是在线程级别而不是在进程级别做出的。线程可以并行运行(每个线程在单个内核上轮流运行),也可以并行运行(每个线程在不同内核上同时运行)。线程还保持自己的状态,以允许安全、本地和独立地执行它们的指令。 如果有线程可以执行,操作系统...阅读全文

博文 2019-07-15 15:34:57 chenxull

Go 译文之词法分析与解析 - Part One

作者:Adam Presley | 地址:Writing a Lexer and Parser in Go - Part 1 译者前言 一直对词法分析与解析的话题比较感兴趣,最近发现了好几篇相关的优秀文章,准备好好翻译和研究下。我的理解,词法分析与解析的应用还是比较广泛的,无论简单的配置文件、各种模板语言、还是我们每天在写编程语言都离不开它。 本篇文章一个系列文章的第一篇,主要介绍的是词法分析与解析的一些基础概念,包括什么是词法分析,什么是解析,Token 如何表示等等。 正文如下: 从今天开始,我将会用三篇文章介绍在 Go 中如何构建一个简单的词法分析与解释器。文中介绍的内容主要是基于 Rob Pike 在 2011 年关于 Lexical Scanning In Go 的演讲。这个系列文...阅读全文

博文 2019-07-20 19:04:16 波罗学

Dubbo2.6.x—注册中心源码分析 dubbo-registry模块 (api and zookeeper)

文章有点长,亲,要慢慢看! 1. 概述 1.1 注册中心作用 在Dubbo中,注册中心为核心模块,Dubbo通过注册中心实现各个服务之间的注册与发现等功能,而本次源码的分析为registry模块的api和zookeeper的实现。 服务的提供者和消费者都需要把自己注册到注册中心,提供者让消费者感知到服务存在,从而消费者发起远程调用,也让服务治理中心感知到有服务提供者上线;消费者则是让服务治理中心可以发现自己。 1.2 Zookeeper Zookeeper是一个提供分布式协调服务的开源软件,常用于解决分布式应用中经常遇到的一些数据管理问题。Zookeeper功能非常强大,可以实现如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。关于Zookeeper,大家如果想了解可以关注一...阅读全文

博文 2020-01-11 21:32:47 苡仁ilss

go语言-01.基本结构

//当前程序包名 package main //导入其他的包 import std "fmt" //常量定义 const PI = 3.14 //全局变量的声明与复制 var name = "gohpher" //一般类型声明 type newType int // 结构的声明 type gopher struct{} //接口的声明 type golang interface{} //使用main函数作为程序的入口点启动 func main() { std.Println("Hello world!") ...阅读全文

博文 2019-06-10 23:32:49 KeyboardLife

golang并发编程-20190624

进程 进程是操作系统进行资源分配的一个基本单元,由于描述程序执行的过程。 所有的进程都有父进程,所有的进程共同组成了一个树状结构 内核启动进程是所有进程的祖先,他自己作为自己的父进程 进程标识 内核对每个进程的属性和行为进行详细记录 pid就是这个唯一标识,pid为1的就是上面说的内核启动进程 image.png ppid就是当前进程的父进程 pid := os.Getpid() ppid := os.Getppid() 通过以上方法可以获取到对应的pid和ppid 进程空间 一个用户进程总会生存与用户的空间中 image.pn...阅读全文

Golang交叉编译

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_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Wind...阅读全文

lesson-1:go 第一个程序

什么是 GO 程序 go 程序是一段简单的 UTF-8 编码的以 .go 结尾的文件。 GO 程序结构 package main // 创建一个 main 包,使用关键字 package import "fmt" // 从 Go 标准库中引入 fmt 包,使用关键字 import func main() { // 入口函数 fmt.Println("hello go") // fmt包中 Println 函数 } Go 程序都必须以一个包开头,必须包含一个 main 函数。main 函数是程序的入口函数。 $ go run ./hello.go // 执行 hello.go 文...阅读全文

博文 2020-01-14 11:32:44 Gabriel

好程序员web前端学习教程之Node Js流程

好程序员web前端学习教程之Node Js流程1,项目前期准备: 以express框架为例npmiexpress-generator-g//全局安装express框架express-e//生成express应用骨架npmi//安装依赖npmstart//在3000端口监听 拓展:目前最市面上最流行的node框架有:--Sail.jsSails.js就像是Node.js平台上的Rails框架。这是一个可靠可伸缩的开发框架,面向服务的架构,提供数据驱动的API集合。用来开发多玩家游戏、聊天应用和实时面板引用非常方便,也可用于开发企业级Node.js应用。Sails.js基于Node.js,Connect,Express和Socket.io构建。--Koa.jskoa.js是下一代的Node.js...阅读全文

博文 2019-03-29 13:42:32 hcxy

五分钟学Java:如何才能学好Java Web里这么多的技术?

副本_未命名.jpg 原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本文是《五分钟学Java》系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章,有兴趣看本系列更多文章可以关注我的公众号【Java技术江湖】 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 本文思维导图 什么是Java Web 不知道Java Web这个词是从什么时候...阅读全文

博文 2020-03-05 03:32:48 程序员黄小斜

聊聊在Go语言里使用继承的翻车经历

Go不是面向对象的语言,但是使用组合、嵌套和接口可以支持代码的复用和多态。关于结构体嵌套:外层结构体类型通过匿名嵌套一个已命名的结构体类型后就可以获得匿名成员类型的所有导出成员,而且也获得了该类型导出的全部的方法。比如下面这个例子: type ShapeInterface interface { GetName() string } type Shape struct { name string } func (s *Shape) GetName() string { return s.name } type Rectangle struct { Shape w, h float64 } 复制代码Shape类型上定义了GetName()方法,而在矩形Rectangle的定义中匿名嵌套了Sha...阅读全文

博文 2020-04-20 13:34:22 kevinyan

RocketMQ主从同步源码分析

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 之前写了一篇关于 RocketMQ 队列与 Kafka 分区副本的区别文章,里面提到了 RocketMQ 的消息冗余主要是通过主备同步机制实现的,这跟 Kafka 分区副本的 Leader-Follower 模型不同,HA(High Available) 指的是高可用性,而 RocketMQ 的HA机制是通过主备同步实现消息的高可用。 HA 核心类 HA 的实现逻辑放在了 store 存储模块的ha目录中,其核心实现类如下: image HAService:主从同步的核心实现类 HAService$AcceptSocketService:主服务器监听从服务器连接实现类 HAServic...阅读全文

博文 2019-10-14 20:33:36 aside section ._1OhGeD

如何使用CSS选择所有子元素?

如何使用CSS递归选择所有子元素?下面本篇文章就来给大家介绍一下使用CSS递归选择所有子元素的方法,希望对大家有所帮助。 原文地址:如何使用CSS选择所有子元素?当元素是某个元素的子元素时,可以使用子选择器匹配,该选择器选择特定父级的所有子元素。子选择器由两个或多个由“>”分隔的选择器组成;它也称为element > element选择器。注:子选择器只能选择自己的子类,第二级元素,而不能选择第二级别以下的元素。语法:选择指定元素的所有指定子元素element1 > element2如果想要递归选择所有子元素,则使用以下语法 element1 > * { // CSS样式 } 示例1:选择所有子元素 阅读全文

博文 2020-03-20 21:32:48 yanghs

新装Linux操作系统后,要保留哪些自启动服务?

和Windows系统一样,Linux服务器运行过程中也会一些没用的软件服务默认运行,这些占用了很多系统资源,也会有安全隐患,所以一般是建议关闭的。那么,工作中Linux主机到底需要有哪些开机自启动服务呢? 新装Linux系统之后,有必要保留的开机自启动服务有5个: Ø sshd:远程连接Linux服务器时要用到,所以必须开启,不然就无法提供远程连接服务了。 Ø rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中。 Ø network:系统启动时,如果想激活或关闭各个网络接口的话,可以考虑开启。 Ø crond:用于周期性的执行系统及用户配置的任务计划。有需要时开启。几乎是运维工作中必须要用的一个软件。 Ø sy...阅读全文

博文 2019-11-15 16:40:15 zhouzhou2018

区块结构描述

1、块链(Blockchain)表现形式为块文件,名称如blockfile_000000,由块(Block)按照顺序排列组成,每一个块的头部(Header)都包含了当前块的data_hash和前一个块的hash值previous_hash,官网blockchain结构图如下:块链B包含了块B0,B1,B2,B3,其中B0是创世块(genesis block) 2、块(Block)包含3部分内容:块头,块数据,块的元数据。具体描述如下:2.1块头(Block Header)块头结构形式如下: "header": { "data_hash": "xXLEx+MSmIh3XiYCOOzgqgbncCWv/CerQmr4pv5htIw=", "number": "4", "previous_hash...阅读全文

博文 2020-01-09 23:32:45 阿留神

编译

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_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Wind...阅读全文

博文 2020-02-03 19:32:41 风亡小窝

通过例子学习 Go 和 Rust ---- 闭包

闭包简而言之,是一段有状态的代码。咱试着用闭包来做一个计数器,每次调用,闭包的状态就加1. Go func intSeq() func() int { i := 0 return func() int { i++ return i } } func main() { nextInt := intSeq() fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) } 1 2 3 Rust 由于编译时我们无法知道闭包的体积,所以用一个Box把它套起来。另外,闭包的具体类型是不可描述的,只能用dyn关键字来通过Trait来描述。 fn main() { fn int_seq() -> Box阅读全文

博文 2020-03-03 15:32:56 Tericoder

GoLang 学习笔记 - 循环语句

GoLang 中的循环语句只有 for 循环,没有像 C 语言中那样的 while 、do ...while 循环,但是可以改变写法实现 do ...while 循环。   GoLang 循环语句的语法: // 和 C 语言的 for 一样 for init; condition; post { // .... } init: 一般为赋值表达式,给控制变量赋初值; condition: 关系表达式或逻辑表达式,循环控制条件; post: 一般为赋值表达式,给控制变量增量或减量。 for 语句执行过程如下:   1. 执行 init 赋值表达式.   2. 检查控制变量是否满足 condition 的条件,若其值为 true ,则执行循环体内语句,然后执行 post,进入下一次循环,再检查 c...阅读全文

GoLang 学习笔记 - 基本数据类型

GoLang 的数据类型   在 GoLang 中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。   GoLang 有以下几种数据类型: 类型 描述 布尔 基本数据类型,只有两个值,并且只可以是常量 —— true 或者 false。 数值 基本数据类型,GoLang 支持整型、浮点型数字,并且支持复数,其中位的运算采用补码。 字符串 基本数据类型,GoLang 中 string 类型被官方定为基本数据类型,是一串由单个字节连接起来的字符序列。GoLang 字符串的字节使用 UTF-8 编码标识 Unicode 文本。 派生 派生类型包括很多种,其中有:指针、数组、结构体、管道、切片、接口...阅读全文

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

golang交叉编译

Linux系统下编译Windows64位系统、Mac系统可执行程序 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go Mac系统下编译Linux系统、Windows64位系统可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Windows系统下编译Linux系统、Mac系统可执行程序 SET CGO_ENABLED=0 SET GOOS...阅读全文