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

Golang标准库——go(4)

token types token token包定义代表Go编程语言的词法标记的常量以及对标记的基本操作(打印,谓词)。 Constants const ( LowestPrec = 0 // non-operators UnaryPrec = 6 HighestPrec = 7 ) 一组用于基于优先级的表达式解析的常量。 非运算符的优先级最低,其后依次是从优先级1开始到一元运算符的运算符。 最高优先级用作选择器,索引以及其他运算符和定界符标记的“包罗万象”优先级。 type File type File struct { // contains filtered or unexported fields } 文件是属于FileSet的文件的句柄。 文件具有名称,大小和行偏移量表。 func...阅读全文

博文 2020-10-11 17:32:39 DevilRoshan

Textile托管Powergate实例-企业能访问托管的Filecoin和IPFS资源

今天,我们很高兴宣布基于Filecoin的Textile的一个重要里程碑:托管Powergate实例。Powergate托管帐户是Textile的Filecoin服务三部曲中的第三部分,包括我们的自助式Powergate部署,Textile Bucket对Filecoin存储的支持以及现在托管的Powergate基础结构。什么是Powergate?如果您是我们博客或Powergate项目的新手,则Powergate是基于Filecoin(通过Lotus)和IPFS 构建的多层存储系统。该系统提供了许多有用的工具来存储和管理Filecoin上的数据,同时使其可以通过API和IPFS进行访问。它带有一个命令行界面,一个gRPC API,一个Golang客户端和一个JavaScript客户端。托管...阅读全文

博文 2020-06-29 16:41:38 IPFS星小妹

tcpdump 使用

TCPDump 可以将网络中传送的数据包完全截获下来提供分析,支持针对网络层、协议、主机、网络或端口的过滤。-a 尝试将网络和广播地址转换成名称。-c<数据包数目> tcpdump将在接受到count个数据包后退出。tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes 00:02:01.018648 IP ubuntu.33417 > _gateway.domain: 3978+ [1au] A? sp1.baidu.com. (42) 00:02:...阅读全文

博文 2020-10-05 15:32:39 五行缺金

一文搞定macOS下Go语言开发环境的搭建

1.下载安装 Go语言 下载地址:https://golang.google.cn/dl/ image.png 下载完成后,直接双击 文件进行安装 image.png 一路点击next即可 image.png 最后在终端执行 go version 命令,如过能获取到版本信息则说明安装成功了 2.配置环境变量 在终端输入go env会打印出go 相关的所有环境变量。 这些环境变量,仅设置下面这两个就足够了 一个是GO111MODULE 设置为 on,表示使用 go modules 模式 $ go env -w GO111MODULE=on 一个是开启代理,防止下载包失败(前面可能你已经设置过) $ go env -w GOPROXY=https://goproxy.cn,direct 3. 配...阅读全文

博文 2020-10-08 20:32:46 老朱别问

Pod创建流程代码版本[kubelet篇]

在k8s的面试中Pod的创建流程是一个常问的问题,而kubelet则无疑重中之重,之前也写过一篇Pod的运行,不过没有涉及到具体的代码,本文尝试用代码的方式,来复数整个核心的流程,同时为了方便记忆,又将整个过程分为:准备、配置、清理、构建运行四个阶段,让我们一起来看下吧, 文末有大图总结​ 2. 准备阶段 当获取到Pod添加的事件的时候,首先会进行一些基础的工作,我吧这个过程称为准备阶段,准备阶段主要做的事情有如下:1)加入PodManager 2)准入控制检查 3)分发事件 4)根据Pod添加对应的探针, 让我们一起来看下关键实现 2.1 加入PodManager PodManager中的功能除了存储Pod的信息,还会进行对应Pod的configMap和secret的管理,当心加入Pod的...阅读全文

博文 2020-04-12 23:32:42 仔仔

【译】Go 语言项目源码贡献官方指导文档

以前给 Go 语言项目源码提交过一些 commits,期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考,因为最近又提交了几个 commits,就又把这篇文档再看了一遍,有感于 Go 团队在项目管理和工程实践上的一些宝贵经验,就把文档翻译成了中文;一来为了更加深入地理解 Go 语言团队的项目工程最佳实践,二来则是为了给其他有意给 Go 语言源码提交贡献的开发者提供一点参考。 导言 Go 语言项目欢迎所有的代码贡献者。 这是一份指导你完成向 Go 语言项目贡献代码整个流程的文档,会略微跟其他开源项目所使用的指导文档有所不同。我们假设阅读者已经对 Git 和 Go 有基本的理解以及具备相关的基础知识。 除了这里所介绍的信息,Go 语言社区也维护了一份关...阅读全文

博文 2020-04-07 10:32:42 panjf2000

WGCLOUD监控系统agent启动错误解决

agent日志错误信息: [wgcloud-agent]2020/07/18 17:59:31 WgcloudAgent.go:30: runtime error: invalid memory address or nil pointer dereference WGCLOUD的agent日志里出现这个错误,一般是agent没有权限获取系统信息导致的,可以朝着这个思路去解决。 如在Ubuntu系统里,可以尝试使用sudo开启start.sh后,就正常了。 其他系统偶尔也会有类似的问题,一般是启动agent的权限不够导致的...阅读全文

博文 2020-07-22 22:32:45 tianshiyeben

Docker基础(2) 实践篇

Docker基础(2) 实践篇 Docker的指令系统 全局指令 Docker仓库管理 Docker镜像管理 Dockerfile Docker容器管理 Docker Compose 命令的嵌套 Docker的指令系统 Docker指令的操作对象主要针对四个方面: 针对守护进程的系统资源设置和全局信息的获取。比如:docker info、docker deamon等。 针对Docker仓库的查询、下载操作。比如:docker search、docker pull等。 针对Docker镜像的查询、创建、删除操作。比如:docker images、docker build等。 针对Docker容器的查询、创建、开启、停止操作。比如:docker ps、docker run、docker star...阅读全文

博文 2020-03-02 01:32:39 zhixin9001

2020-07-22

1、golang-defer执行顺序 2、unix-孤儿、僵尸进程 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在...阅读全文

基于 TiSpark 的海量数据批量处理技术

作者介绍:杨哲轩,PingCAP 资深解决方案架构师。 熟悉 TiSpark 的人都知道,TiSpark 是 Spark 的一个插件,它其实就是给予了 Spark 能够去访问 TiDB 底层分布式存储引擎 TiKV 或者 TiFlash 的能力。之前我们一直在解决读的问题,写问题并没有付出太多的时间去解决。今天就给大家揭秘,我们是怎样使用 TiSpark 去实现海量数据批处理,然后写入到 TiDB 里面去的。 传统批处理 vs TiSpark 的批处理 在介绍 TiSpark 之前,我们首先来回顾一下传统批处理架构。 image 对于传统批处理架构而言,首先要有一个数据,这个数据可以是用户的 CSV 文件,也可以是用户从 TiDB 或 MySQL,或者是其它异构数据库里面读出来的数据。在拿到...阅读全文

博文 2020-10-12 11:33:23 PingCAP

Go检测并发访问共享资源是否有问题的工具: race detector

由于golang中的go是非常方便的,加上函数又非常容易隐藏go。所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题。所以在本质上说,goroutine的使用增加了函数的并发问题,这个问题,有经验的开发人员还是比较容易发现的,但是,很多时候,并发问题隐藏得非常深,即使是有经验的人,也不太容易发现或者 Debug 出来。针对这个问题,Go 提供了一个检测并发访问共享资源是否有问题的工具: race detector,它可以帮助我们自动发现程序有没有 data race 的问题。 Go race detector 是基于 Google 的 C/C++ sanitizers 技术实现的,编译器通过探测所有的内存访问,加入代码能监视对这些内存地址的访问(读还是...阅读全文

博文 2020-10-14 16:34:00 就是耍帅

golang 结构体

//结构体 package main import "fmt" // 用 type 关键字定义一个结构体 type person struct { name string age int } func main() { //实例化一个结构体 // 第一种情况 p1 := person{} p1.name = "小麦客" p1.age = 666 fmt.Println(p1.name) fmt.Println(p1.age) // 第二种情况 p2 := person{ name:"小麦客", age:666, } // %#v 打印详细信息 fmt.Printf("%#v\n", p2) } 结构体_结构体指针.pn...阅读全文

博文 2020-04-08 07:32:49 小麦客

第三十一章:JWT与Golang

JWT基础概念 JWT是 json web token的简称 其中的 token 是令牌的意思, 其实这个令牌实质上是服务端生成的一段有规则的字符串 我们看看JWT官方自己对其的定义 JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be...阅读全文

博文 2020-04-05 20:32:50 captain89

open-falcon-alarm 代码分析

总结:alarm消费由judge产生的redis报警事件,根据优先级高低是否做合并,发往不同的报警通道 高优先级报警比如p0: judge产生报警事件-->写入redis event:p0队列 -->alarm消费-->获取发送对象并处理调用回调函数(如果有)-->根据策略不同生成不同通道的报警(im,sms,mail,phone)等-->写入redis各个通道的发送队列 /im /sms /mail /phone -->发送报警的worker取出报警发送 低优先级报警比如p4: judge产生报警事件-->写入redis event:p4队列 -->alarm消费-->获取发送对象并处理调用回调函数(如果有)-->根据策略不同生成不同通道的合并(im,sms,mail,phone)事件写入...阅读全文

博文 2020-07-07 16:32:54 ning1875

【golang小工具】目录下文件路径写入Excel并打tar包上传远程服务器

ToolTest 整体说明 最近在练习go代码,恰好工作中有一些场景需要经常去访问某个目录下所有文件,将相对路径写入Excel并上传系统,同时打包文件上传服务器。利用工作之余,练练手学习写了一个小工具,主要实现功能如下: 获取指定目录下所有文件路径信息 将获取文件相对路径信息保存至Excel文件中 将对应目录下所有文件打入tar包 将war包上传至指定的服务器路径 完整代码下载链接 代码实现 infoFromYaml.go 读取 yaml 配置文件信息,并保存在结构体变量中 导入包 import ( "io/ioutil" "log" "gopkg.in/yaml.v2" ) 定义结构体类型 结构字段只有在导出时才进行数据编出(首字母大写),并且使用小写的字段名作为默认键进行数据编出 typ...阅读全文

博文 2020-10-09 23:32:41 云之君兮鹏

5年 Python 功力,总结了 10 个开发技巧!网友:太实用了

大家好。 今天给大家分享 10 个我平时整理非常实用的 Python 开发小技巧,内容目录如下: 值得一提的是,这 10 个技巧全部收录在我自己写的 《Python黑魔法指南》里 你可以在按照如下方法,后台发送『黑魔法』就可以获取精美排版的 PDF 电子书。 1. 如何在运行状态查看源代码? 查看函数的源代码,我们通常会使用 IDE 来完成。 比如在 PyCharm 中,你可以 Ctrl + 鼠标点击 进入函数的源代码。 那如果没有 IDE 呢? 当我们想使用一个函数时,如何知道这个函数需要接收哪些参数呢? 当我们在使用函数时出现问题的时候,如何通过阅读源代码来排查问题所在呢? 这时候,我们可以使用 inspect 来代替 IDE 帮助你完成这些事 # demo.py import insp...阅读全文

博文 2020-06-17 09:32:54 Python编程时光

虚拟化运维--容器云--Helm(十九)

一、Helm简介   Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。有点类似于 Ubuntu 中的 APT 或 CentOS 中的 YUM。   Helm 是 Kubernetes 生态系统中的一个软件包管理工具。Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用,同时,也可以通过helm进行容器云应用的分享。在Kubeapps Hub中提供了包括Redis、MySQL和Jenkins等参见的应用,通过helm可以使用一条命令就能够将其部署安装在自己的Kubernetes集群中。   Helm Chart 是用来封装 Kube...阅读全文

博文 2020-07-17 19:32:50 无剑_君

【golang小工具】获取目录下文件路径信息写入Excel并打包上传远程服务器

@TOC ToolTest 整体说明 最近在练习go代码,恰好工作中有一些场景需要经常去访问某个目录下所有文件,将相对路径写入Excel并上传系统,同时打包文件上传服务器。利用工作之余,练练手学习写了一个小工具,主要实现功能如下: 获取指定目录下所有文件路径信息 将获取文件相对路径信息保存至Excel文件中 将对应目录下所有文件打入tar包 将war包上传至指定的服务器路径 完整代码下载链接 代码实现 infoFromYaml.go 读取 yaml 配置文件信息,并保存在结构体变量中 导入包 import ( "io/ioutil" "log" "gopkg.in/yaml.v2" ) 定义结构体类型 结构字段只有在导出时才进行数据编出(首字母大写),并且使用小写的字段名作为默认键进行数据编...阅读全文

博文 2020-10-09 11:32:51 云之君兮鹏

图解kubernetes Kubelet驱逐管理关键实现

驱逐管理是kubelet自我保护的一种机制,当资源缺乏的时候,通过阈值和策略主动驱逐部分的Pod从而保持系统的资源水位在一个合理的范围内,本身的策略官方文档上已经写的很详细,今天只是看下其在代码上的一些设计 1. 设计臆测 1.1 驱逐总体流程 驱逐总体流程主要是通过获取当前使用资源的统计信息和当前活跃的Pod容器列表,然后结合资源阈值来决策是否需要进行Pod的驱逐 1.2 基于观察者模式的观测 在驱逐管理器中基于观察者模式实现对特殊资源驱逐管理的支持,比如内存资源,在某些情况下即时当前的资源水位没有达到阈值,也可能会触发oom killer这个时候,对应的ThresholdNotifier也会尝试进行状态同步,从而确定是否要主动的驱逐一些节点, 目前这个特性应该还没开, 同理如果这个资源有...阅读全文

博文 2020-02-25 13:34:30 8小时_2020

图解kubernetes Pod生命周期事件生成器

PLEG(PodLifecycleEventGenerator)主要是用于周期性检测Pod的运行状态,从而对比Pod前后状态生成事件从而触发kubelet进行Pod容器状态的校证,让我们一起来初探下其内部实现机制 1. 图解设计 1.1 Pod事件生成 Pod事件生成主要是根据对应Pod前后的状态对比来实现,首先通过runtime来获取当前节点的所有Pod的列表,并将对应的状态进行保存,这样在下一个轮训周期就可以通过前后状态的对比去发现状态发生改变的Pod的容器,并且产生对应的事件 1.2 事件通知与状态同步 Pod事件生成之后会通过管道将对应的事件同步给状态同步线程,状态同步线程感知到Pod的变更事件后,会与Pod的目标状态进行对比同步,并调用Runtime来进行最终校证操作的执行,同时在...阅读全文

learn go with tests 学习笔记(七)反射

声明 因为反射的概念比较重要,结合learn go with tests示例,并搜集了一些反射的文章,汇总整理为此文。也至此,learn go with tests 学习笔记完结,撒个花~ 本文主要内容来自于掘金文章: 作者:吴德宝AllenWu 链接:https://juejin.im/post/5a75a4fb5188257a82110544 知识点 反射概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golan...阅读全文

博文 2020-06-24 18:32:45 硌手小石头

SpringCloud框架全解析,继续你的微服务之旅,直达成功彼岸

写在前面 Spring Cloud是一系列框架的有序集合, 它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。Spring Cloud微服务工具包为开发者提供了分布式系统中的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。它的各个项目基于Spring Boot,将Netlix的多个框架进行封装,并且通过自动配置的方式将这些框架绑定到Spring的环境中,从而简化了这些框架的使用。 各组件的运行流程如下: 所有请求都统一通过API网关(Zuul)来访问内部服务。 网关接收到请求后,从注册中心(Eureka) 获取可用服务。 ...阅读全文

博文 2020-07-15 18:32:46 Java领域指导者

golang Error Wrapping

go1.13中引入err wraping机制 1.13前函数返回一个error errors.New()创建一个errorString errorString 只包含了一个字符串 实现了error接口的Error方法 当函数嵌套返回时 嵌套层数更深的error只保留了字符串信息 丢失了原始的类型 // Each call to New returns a distinct error value even if the text is identical. func New(text string) error { return &errorString{text} } // errorString is a trivial implementation of error. type err...阅读全文

博文 2020-10-08 22:32:40 nil_ddea

图解kubernetes Kubelet驱逐管理关键实现

驱逐管理是kubelet自我保护的一种机制,当资源缺乏的时候,通过阈值和策略主动驱逐部分的Pod从而保持系统的资源水位在一个合理的范围内,本身的策略官方文档上已经写的很详细,今天只是看下其在代码上的一些设计 1. 设计臆测 1.1 驱逐总体流程 驱逐总体流程主要是通过获取当前使用资源的统计信息和当前活跃的Pod容器列表,然后结合资源阈值来决策是否需要进行Pod的驱逐 1.2 基于观察者模式的观测 在驱逐管理器中基于观察者模式实现对特殊资源驱逐管理的支持,比如内存资源,在某些情况下即时当前的资源水位没有达到阈值,也可能会触发oom killer这个时候,对应的ThresholdNotifier也会尝试进行状态同步,从而确定是否要主动的驱逐一些节点, 目前这个特性应该还没开, 同理如果这个资源有...阅读全文

图解kubernetes调度器SchedulingQueue核心源码实现

SchedulingQueue是kubernetes scheduler中负责进行等待调度pod存储的对,Scheduler通过SchedulingQueue来获取当前系统中等待调度的Pod,本文主要讨论SchedulingQueue的设计与实现的各种实现, 了解探究其内部实现与底层源码,本系列代码基于kubernets1.1.6分析而来,图解主要位于第二部分 SchedulingQueue设计 队列与优先级 队列与场景 类型 描述 通常实现 队列 普通队列是一个FIFO的数据结构,根据元素入队的次序依次出队 数组或者链表 优先级队列 优先级队列通常是指根据某些优先级策略,高优先级会优先被获取 数组或者树 其实在大多数的调度场景中,大多都是采用优先级队列来实现,优先满足优先级比较高的任务或者...阅读全文

博文 2020-01-13 11:34:24 代码仔

golang如何使用Spring Cloud Stream

慎重声明,只代表本人观点,不一定代表实际。看了差不多半天Spring Cloud Stream中的kafka源代码,差不多断断续续折腾了一个月,终于在golang中使用kafka发送给Spring Cloud Stream并且成功处理 Spring Cloud Stream当使用@StreamListener中的condition,通过head进行选择的时候,其中MessageHeader是需要包含三个信息: id UUID类型 contentType 字符串类型,内容类型,可以为:application/json spring_json_header_types header中的值类型,使用golang的时候,例如:{"partitionKey":"java.lang.String","s...阅读全文

博文 2020-10-07 23:32:40 EasyNetCN

[Golang实现JVM第七篇]实现invokevirtual和虚方法表

本篇我们专注invokevirtual这一条指令,先通过简单粗暴的方式实现指令的功能,然后探究如何通过著名的虚方法表(Virtual Method Table)来进行一些优化。 指令含义 invokevirtual用于调用除静态方法、构造方法、私有方法、接口方法外的所有方法。其指令的格式为: invokevirtual = 182 (0xb6) Format: invokevirtual indexbyte1 indexbyte2 Operand Stack: ..., objectref, [arg1, [arg2 ...]] → 其中indexbyte1和indexbyte2为一个uint16类型的无符号整数,表示常量池中方法引用常量的下标,这点跟invokestatic是完全相同的。后...阅读全文

博文 2020-10-09 20:32:43 司青玄

Java程序员不缺对象,缺的是对象存储

前言 文件服务器是一个应用必要的组件之一。最早我搞过FTP,然后又用过FastDFS,接私活的时候我用MongoDB也凑合凑合。现如今时代不同了,开始流行起了OSS。什么是 OSS全称为Object Storage Service,也叫对象存储服务,是一种解决和处理离散单元的方法,可提供基于分布式系统之上的对象形式的数据存储服务,具有可拓展、可管理、低成本等特点,支持中心和边缘存储,能够实现存储需求的弹性伸缩,主要应用于海量数据管理的各类场景。这概念真是够难以理解的。简单说点我知道的吧,平常我们的文件地址都是 /User/felord/video/xxx.mp4的目录树结构,系统先要找到User,然后一级一级往下找一直到目标为止,这是一种结构化的存储方式。对象存储就不一样了,所有的文件都放在...阅读全文

博文 2020-10-08 16:32:40 马小诺QAQ

Go语言HTTP服务生命周期

在 go 语言里启动一个 http 服务非常简单,只需要一行代码http.ListenAndServe()就可以搞定,这个方法会一直阻塞着直到进程关闭,如果这个时候来了些特殊的需求比如: 监听服务启动 手动关闭服务 监听服务关闭 在 go 中应该怎么实现呢?下面来一一举例。 监听服务启动 方法一(推荐) 将Listen步骤拆分出来,先监听端口,再绑定到server上,代码示例: l, _ := net.Listen("tcp", ":8080") // 服务启动成功,进行初始化 doInit() // 绑定到server上 http.Serve(l, nil) 方法二 通过一个协程去轮询监听服务启动状态,代码示例: go func() { for { if _, err := net.Dia...阅读全文

博文 2020-10-21 11:32:41 mklee

python字符串详解

字符串定义 字符串是由一个个字符组成的序列 使用成对的单引号或者双引号 two_quote_str = 'hello python' one_quote_str = "hello python" 成对的三引号,保留字符串中的全部格式信息 # 会保留换行符,制表符 three_quote_str = '''languages: 1.python 2.java 3.golang 4.c++ ''' 字符串的操作 基本操作(序列通用功能) 索引访问 str = "12345678" print(str[0]) print(str[2]) print(str[8]) # IndexError: string index out of range print(str[-1]) print(str[-8...阅读全文

博文 2020-09-18 01:32:40 梦止步了

在 Go 语言项目中使用 Travis CI

文链接:在 Go 语言项目中使用 Travis CI Travis CI 是一种免费的持续集成服务,而 持续集成(CI, Continuous integration) 是一种软件工程流程,概括来讲就是多提交小的 Commit 来更快的发现软件的 Bug,从而提高软件质量。 本文会详细介绍如何在 Go 语言项目中使用 Travis CI。 准备工作 GitHub 账号:用于保存项目。 Travis CI 账号:点击右上角的 Sign in with GitHub 即可通过 GitHub 创建关联账号。 示例项目 hello,它包含三个文件: hello.go: package hello func Hello() string { return "Hello, World!" } hello...阅读全文

博文 2020-05-31 23:32:48 line

NebulaGraph初次相遇

一个完整的 Nebula 部署集群包含三个服务,即 Query Service,Storage Service 和 Meta Service。每个服务都有其各自的可执行二进制文件,这些二进制文件既可以部署在同一组节点上,也可以部署在不同的节点上。一、元数据服务层 Meta Service Meta Service集群采用 leader / follower 架构,Leader 由集群中所有的 Meta Service 节点选出后对外提供服务,Followers 处于待命状态并从 leader 复制更新的数据,一旦 leader 节点 down 掉,再选举其中一个 follower 成为新的 leader。Meta Service 不仅负责存储和提供图数据的 meta 信息,如 schema、...阅读全文

博文 2020-06-28 16:35:53 风南子

# Tendermint ABCI 接口介绍

概述 Tendermint项目通过分层的理念将区块链应用构建划分成3层: P2P网络层, 共识层以及应用层, 项目本身提供了P2P网络层以及Tendermint共识协议层的实现, 并且定义了通用的ABCI接口来支持与上层应用的交互. ABCI接口的定义支持应用层的深度定制, Tendermint项目本身只负责P2P网络通信以及共识过程, 而交易检查和执行, 存储状态更新, PoS中的奖惩与验证者集合更新以及链上治理等都可以由应用层根据需要进行定制 通过ABCI接口进行交互时, 根据传统的C/S模型划分, 则Tendermint本身是客户端, 而上层应用App则是服务器, 客户端发起ABCI请求, 而服务器端则根据请求作出做出响应. 在允许应用层逻辑的深度定制之外, Tendermint也支持...阅读全文

博文 2020-06-24 18:32:45 CoinExChain

Golang标准库——go(3)

format importer parser printer scanner format format包实现Go源码的标准格式。 func Node func Node(dst io.Writer, fset *token.FileSet, node interface{}) error 节点以标准gofmt格式格式化节点,并将结果写入dst。 节点类型必须为* ast.File,* printer.CommentedNode,[] ast.Decl,[] ast.Stmt,或与ast.Expr,ast.Decl,ast.Spec或ast.Stmt兼容的分配。 节点不修改节点。 不会对表示部分源文件的节点的导入进行排序(即,如果该节点不是* ast.File或* printer.Comme...阅读全文

博文 2020-10-11 01:32:39 DevilRoshan

leetcode_213

Golang: 思路:这题我个人感觉要复杂一些,难度在于首尾相连,并且,你需要考虑的更全面一些。当然,这题做完的时间复杂度100%,空间47%,但我不太想优化了。简单来说,有房子[1...n],通过打家劫舍1得出的最大值,我们需要做出判断:如果我们没抢n,那么这个最大值没有问题,如果我们抢了n,那么就需要去看下我们抢没抢1,如果也没抢1,那么没问题,但如果抢1了,那么这个最大值就需要修改了,为max([2....n],[1...n-1])。 代码如下: func rob(nums []int) int { if len(nums) == 0 { return 0 } if len(nums) == 1 { return nums[0] } if len(nums) == 2 { if num...阅读全文

博文 2020-02-22 15:32:50 淳属虚构

TiDB源码阅读笔记(三) TiDB 的在线 DDL

在线 DDL 始终是数据库使用上的痛点。之前的工作中,有很多数据中心同事做 DDL 变更都很头疼,也吐槽过,谨慎选择时间点进行。即便如此,面对复杂庞杂的应用系统和各类定时运维脚本,DDL 操作依然可能干扰到业务正常运行。TiDB 的在线 DDL 是根据 Google F1 的在线异步 schema 变更算法实现F1 中 schema 以特殊的 kv 对存储于 Spanner 中,同时每个 F1 服务器在运行过程中自身也维护一份拷贝。为了保证同一时刻最多只有 2 份 schema 生效,F1 约定了长度为数分钟的 schema 租约,所有 F1 服务器在租约到期后都要重新加载 schema 。如果节点无法重新完成续租,它将会自动终止服务并等待被集群管理设施重启。简单来说,TiDB 的在线DDL...阅读全文

博文 2020-08-05 22:43:09 Sev7ndayYo

xmake v2.3.6 发布, 新增fortran编译支持

这个版本重点对其他语言的支持做了一些改进,比如新增了fortran的编译支持,zig语言的实验性支持,另外对golang/dlang增加了第三方依赖包支持以及交叉编译支持。 虽然,xmake重点关注c/c++的构建支持,但是其他语言的支持xmake也会不定期做一些改进,其主要目的并不是替代它们官方自身的构建系统,仅仅只是为了支持与c/c++的混合编译,更好的为c/c++项目服务,毕竟有些c/c++项目中,还是会偶尔调用其他语言的代码接口,比如与cuda, dlang, objc,swift, asm等语言的混合调用,所以xmake还是会对他们做一些基础性的编译支持。 另外,关于c/c++方面,我们也对vs预览版中新的/sourceDependencies xxx.json输出的头文件依赖格式...阅读全文

博文 2020-07-29 10:33:43 waruqi

GoMod 文档翻译

GO MOD Go Mod : Golang 的包管理工具之一 中国代理 添加代理源 https://goproxy.cn Go Mod 常用指令集 官方WIKI说明 链接:Go-Mod_Github/wiki Go Mod 的使用 在使用Go Mod之前,需要将环境变量GO111MODULE设置为auto或者on,如果没有设置,将会默认开启。 也可以在运行Go指令之前,显示声明环境变量GO111MODULE=on GO111MODULE 应该是 go mod 的1.11版本 项目初始化 $ go mod init $ # initialize new module in current directory $ # 将当前目录初始化为Go Module...阅读全文

5年 Python 功力,总结了 10 个开发技巧!网友:太实用了

大家好。 今天给大家分享 10 个我平时整理非常实用的 Python 开发小技巧,内容目录如下: 值得一提的是,这 10 个技巧全部收录在我自己写的 《Python黑魔法指南》里 你可以在按照如下方法,后台发送『黑魔法』就可以获取精美排版的 PDF 电子书。 1. 如何在运行状态查看源代码? 查看函数的源代码,我们通常会使用 IDE 来完成。 比如在 PyCharm 中,你可以 Ctrl + 鼠标点击 进入函数的源代码。 那如果没有 IDE 呢? 当我们想使用一个函数时,如何知道这个函数需要接收哪些参数呢? 当我们在使用函数时出现问题的时候,如何通过阅读源代码来排查问题所在呢? 这时候,我们可以使用 inspect 来代替 IDE 帮助你完成这些事 # demo.py import insp...阅读全文

博文 2020-06-17 17:49:10 王炳明

Supervisor 的使用和进阶 (4) - supervisor Event 的使用

本文主要介绍 supervisor Event 的功能。 supervisor 作为一个进程管理工具,在 3.0 版本之后,新增了 Event 的高级特性, 主要用于做(进程启动、退出、失败等)事件告警服务。 Event 特性是将监听的服务(listener)注册到supervisord中,当supervisord监听到相应事件时,将事件信息推送给监听对应事件的listener。 事件类型 Event 可以设置 27 种事件类型,可以分为如下几类: 1. 监控进程状态转移事件; 2. 监控进程状态日志变更事件; 3. 进程组中进程添加删除事件; 4. supervisord 进程本身日志变更事件; 5. supervisord 进程本身状态变更的事件; 6. 定时触发事件。 事件可以被单独监...阅读全文

SimpleChain Singularity(奇点) 星辰时代

Simplechain星辰时代已经呼啸而至,而此次跨时代之作是Simplechain的主链性能,共识机制,主子链通信(跨链),社区建设,落地应用等全模块全面升级。Simplechain新版本的发布,极大的提振了整个区块链行业,有利于主子链生态的协同融合,互相促进。加速推进整个Simplechain构建数字经济网络。我们来看一下`SimpleChain Singularity 星辰时代`技术迭代的详细内容 ### 技术迭代内容 **主链** 1. 更新了p2p网络的寻址,有助于节点之间更快发现。 2. 增加区块同步检查点功能,防止区块同步出错。 3. 优化虚拟机,数据库模式,存储树(trie)访问模式,提高区块数据处理的性能。 4. 增加Freezer数据库,数据的传输,存储更加高效。 5. ...阅读全文

博文 2020-07-17 09:52:35 SimpleChain

Nsq原理分析(二)

在上一篇文章中对nsq进行了简单的介绍,从nsq 的golang的客户端代码分析了一下nsq的使用,这篇文章会分析nsqd的代码 Nsqd代码分析 nsqd做了什么 nsqd接收对topic、channel的创建以及对消息的存储和分发 nsqd向nsqlookup注册自己的服务信息,ip 和端口,向nsqlookup注册自己的元数据信息(topic、channel),nsqd也会向nsqdlook查询topic、和channel信息 nsqadmin 是一个简单的管理界面,通过它可以查询topic、channel、消费者等等一些基本信息,nsqadmin是从 nsqlookup中获取信息的,通过nsqadmin也可以创建topic、channel,创建到了nsqlookup中,在nsqloo...阅读全文

博文 2020-05-29 22:32:44 朱伟

图解kubernetes调度器SchedulingQueue核心源码实现

SchedulingQueue是kubernetes scheduler中负责进行等待调度pod存储的对,Scheduler通过SchedulingQueue来获取当前系统中等待调度的Pod,本文主要讨论SchedulingQueue的设计与实现的各种实现, 了解探究其内部实现与底层源码,本系列代码基于kubernets1.1.6分析而来 SchedulingQueue设计 队列与优先级 队列与场景 类型 描述 通常实现 队列 普通队列是一个FIFO的数据结构,根据元素入队的次序依次出队 数组或者链表 优先级队列 优先级队列通常是指根据某些优先级策略,高优先级会优先被获取 数组或者树 其实在大多数的调度场景中,大多都是采用优先级队列来实现,优先满足优先级比较高的任务或者需求,从而减少后续高优...阅读全文

博文 2020-01-13 13:32:42 仔仔

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候的类型。 var age int // int 是静态类型 var name string // string 也是静态类型 它是你在编码时,肉眼可见的类型。 2. 动态类型 所谓的 动态类型(即 c...阅读全文

博文 2020-06-15 10:32:53 王炳明

golang面试题:reflect(反射包)如何获取字段tag​?为什么json包不能导出私有变量的tag?

image 问题 json包里使用的时候,会结构体里的字段边上加tag,有没有什么办法可以获取到这个tag的内容呢? 举例 tag信息可以通过反射(reflect包)内的方法获取,通过一个例子加深理解。 package main import ( "fmt" "reflect" ) type J struct { a string //小写无tag b string `json:"B"` //小写+tag C string //大写无tag D string `json:"DD" otherTag:"good"` //大写+tag } func printTag(stru interface{}) { t := reflect.TypeOf(stru).Elem() for i := 0; ...阅读全文

博文 2020-06-15 10:32:54 9號

反射 reflection golang

type User struct { Name string Age int Id int } func (u User) GetName(name string) { //将匿名方法绑定到结构体中 fmt.Println("我的名字叫", u.Name, "传进来的是", name) } func main() { a := User{"xiaoming", 5, 6} a.GetName("测试1") Setname(&a) a.GetName("测试2") fmt.Println(a.Name) info(a) ra := reflect.ValueOf(a) rm := ra.MethodByName("GetName") args := []reflect.Value{reflec...阅读全文

博文 2020-09-06 09:33:26 与子笑

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候的类型。 var age int // int 是静态类型 var name string // string 也是静态类型复制代码 它是你在编码时,肉眼可见的类型。 2. 动态类型 所谓的 动态类型(即 conc...阅读全文

博文 2020-06-15 10:35:49 王一白

2.7 Socket Programming: Creating Network Applications

在网络应用开发中,开发者首先要做的一个决定是使用 TCP 还是 UDP 作为传输层协议。TCP 是基于连接,并且基于字节流提供可靠的数据传输的协议。而 UDP 是无连接,通过数据包发送数据,并不保证送达的协议。 我们将在这一节分别利用 UDP 和 TCP 实现一套 client-server 程序。 该程序主要完成的功能是: client 从键盘读取一行字符串,并发给 server server 收到字符串并转换成大写 server 将修改后的字符串发送给 client client 收到修改后的数据并显示 2.7.1 Socket Programming with UDP UDP 在发送数据包时,需要先在数据包中附加地址的信息。网络会利用这个信息 route 数据包到达接收程序。 附加的地...阅读全文

博文 2020-05-13 03:32:47 找不到工作

[golang圣经]查找重复的行(程序无响应?)

go圣经里有一段查找重复的行的代码,发现输入无反应不会打印重复行数据// Dup1 prints the text of each line that appears more than // once in the standard input, preceded by its count. package main import ( "bufio" "fmt" "os" ) func main() { counts := make(map[string]int) input := bufio.NewScanner(os.Stdin) for input.Scan() { counts[input.Text()]++ } if input.Err() != nil{ fmt.Print("...阅读全文

博文 2020-08-25 16:32:41 微澜

JSP的学习总结

JSP的基本构成:HTML文件+Java片断+JSP标签三大指令:page指令、include指令、taglib指令。page指令:1.language属性:设置当前页面中编写JSP脚本使用的语言,默认值为java。<%@page language="java"%>2.contentType属性:设置页面响应的MIME类型,通常被设置为text/html。 <%@page contentType="text/html"%>还可以设置JSP字符的编码:<%@page contentType="text/html;charset=gb2312"%>3.import属性:类似于Java中的import语句,用来向JSP文件中导入需要用到的包。在page指令中可多次使用该属性来导入多个包。例如:<%...阅读全文

博文 2020-10-12 09:32:40 不差不多