《k8s-1.13版本源码分析》-源码调试

源码调试概述k8s环境配置goland写在后面1. 概述本节内容并不是在准备好k8s环境后就写的,大家也不需要在开始看源码前研究怎么调试代码。今天之前我已经发了《调度器优选过程》也就是差不多准备好k8s环境后一个月了。所以大家也可以先跳过本节,先开始看后面的源码分析,灵活把握开始调试源码的时间吧。Debug应该是所有“攻城狮”的基本技能。除非是“Hello World”之类的小程序,不然都会出错,俗称bug,有bug就要debug. 今天不赘述调试本身的技术,我们只以调度器为例聊聊怎么把k8s的...阅读全文

Go语言中文网 2019-03-22 12:15:43 CloudGeek

golang导出csv

项目中涉及到导出到csv的功能,在网上找了一圈,有个UTF82GBK的方式,这个后来发现有bug,涉及到复杂中文,显示出来的有问题,而且导出来的csv不是utf-8格式,不能用文本编辑器打开.最终确定一个方案,也比较简单,既解决了csv用excel打开,中文乱码问题,也能用编辑器打开,还能默认显示带逗号的字符串.废话不多说,直接上代码. package main import ( "encoding/csv" "log" "os" ) func main() { filename := "/Us...阅读全文

go可执行程序携带附件

###### 1.灵感来源 主要是看到这个开源项目: https://github.com/jteeuwen/go-bindata 该项目就是将文件生成go代码,编译出来的可执行程序可以创建携带的文件。我之前有个工具需要7za.exe,因为怕别人的电脑上没有这个文件,所以我想在我代码中判断环境不存在7za.exe或md5值不正确的时候,自动生成正确的7za.exe。当时就是使用上面的库,但是我仔细研究了一下源码发现生成的go源文件还是有点大,而且我也不需要太多复杂功能,因此我自己写...阅读全文

Go语言中文网 2019-03-22 09:47:34 jan-bar

GO学习手册(1)环境搭建

1、定义 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 2、GO安装 1.安装包 安装包下载地址为:https://golang.org/dl/ 上面的网站打不开的话可以使用这个地址:https://golang.google.cn/dl/ 2.环境变量 安装msi文件,环境变量会自动配置好。 如果是自己下载zip包,需手动配置环境变量: 添加GOROOT: Go的安装位置 Path中追加: ;%GOROOT%\bin 添加GOPAT...阅读全文

fabric golang链码示例

0 导言 智能合约是区块链中一个非常重要的概念和组成部分。在Fabric中内成为Chaincode,中文翻译为链码。涉及到链码地方都是 Chaincode. 本示例是一个资产交易的示例 主要实现如下的功能: 初始化 A、B 两个账户,并为两个账户赋初始资产值; 在 A、B 两个账户之间进行资产交易; 分别查询 A、B 两个账户上的余额,确认交易成功; 删除账户。 新增账户 主要函数 Init:初始化 A、B 两个账户; Invoke:调用其它函数的入口; transfer:实现 A、B 账户间的...阅读全文

简书 2019.03.22 08:59* 链播学院

【Go】go get 自动代理

原文链接:https://blog.thinkeridea.com/201903/go/go_get_proxy.html 最近发现技术交流群里很多人在询问 go get 墙外包失败的问题,大家给了很多解决方案: 从 Github 的代码库 clone 设置 GOPROXY 环境变量配置代理, 例如:GOPROXY=https://goproxy.io 配置命令行代理,https_proxy 环境变量 使用 go mod replace 使用 Gopm 类似的工具 …… Go 的社区很活跃,国内...阅读全文

Segmentfault 2019-03-22 08:34:38 thinkeridea

golang 学习笔记 1.2 常量

1.2 常量 常量值必须是编译期可确定的数字、字符串、布尔值。 const x, y int = 1, 2 // 多常量初始化 const s = "Hello, World!" // 类型推断 const ( // 常量组 a, b = 10, 100 c bool = false ) func main() { const x = "xxx" // 未使用局部常量不会引发编译错误。 } 不支持 1UL、2LL 这样的类型后缀。 在常量组中,如不提供类型和初始化值,那么视作与上一常量相同。 c...阅读全文

简书 2019.03.21 22:05 Diogoxiang

solidity智能合约

[toc] solidity智能合约入门基础 区块链的价值 信任 创建永久的、安全的、不可篡改的可追溯的记录 价值 独一无二的资产转移,不需要第三方的组织 可靠 分布式、稳定性 solidity 语言 image 代码结构 solidity在线编辑器 pragma solidity ^0.4.23; contract HelloWorld{ string public name = "DNA"; function getName() public view returns(string){ re...阅读全文

简书 2019.03.21 22:09 ifcoder

golang 学习笔记 1.3 基本类型

1.3 基本类型 更明确的数字类型命名,支持 Unicode,支持常用数据结构。 常用数据结构 支持八进制、十六进制,以及科学记数法。标准库 math 定义了各数字类型取值范围。 a, b, c, d := 071, 0x1F, 1e9, math.MinInt16 空指针值 nil,而非 C/C++ NULL。 1.4 引用类型 引用类型包括 slice、map 和 channel。它们有复杂的内部结构,除了申请内存外,还需要初始化相关属性。 内置函数 new 计算类型大小,为其分配 零值内存...阅读全文

简书 2019.03.21 22:15 Diogoxiang

golang 学习笔记 1.6 字符串

1.6 字符串 字符串是不可变值类型,内部用指针指向 UTF-8 字节数组。 默认值是空字符串 ""。 用索引号访问某字节,如 s[i]。 不能用序号获取字节元素指针,&s[i] 非法。 不可变类型,无法修改字节数组。 字节数组尾部不包含 NULL。 struct String { byte* str; intgo len; }; 使用索引号访问字符 (byte)。 s := "abc" println(s[0] == '\x61', s[1] == 'b', s[2] == 0x63) //输...阅读全文

深入理解 Go-Defer的机制

defer 的作用和执行时机 go 的 defer 语句是用来延迟执行函数的,而且延迟发生在调用函数 return 之后,比如 func a() int { defer b() return 0 } b 的执行是发生在return 0之后,注意defer 的语法,关键字defer之后是函数的调用。 defer 的重要用途一:清理释放资源 由于defer 的延迟特性,defer常用在函数调用结束之后清理相关的资源,比如 f, _ := os.Open(filename) defer f.Close...阅读全文

简书 2019.03.21 23:27 Lateautumn_Lin

Golang的单引号、双引号与反引号的用法解析

Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 即:一个Go语言字符串是一个任意字节的常量序列。 Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可...阅读全文

简书 2019.03.21 23:45 Lateautumn_Lin

Golang使用LMDB

lmdb的相关简介可以看我的其他博客,这里记录go简单使用lmdb。我使用了https://github.com/bmatsuo/lmdb-go这个开源工具。 具体使用代码请参考我的github https://github.com/ClawHub/go-study.git 直接上代码: 结构体 //lmdb客户端结构体 只创建一个lmdb环境,一个DB库 type lmdbCliet struct { Env *lmdb.Env DBI lmdb.DBI } 获取lmdb客户端 /** * 获...阅读全文

简书 2019.03.22 00:03* clawhub

invalid receiver type

Because in a case like this: type I int type P *I func (i I) Get() int { return int(i) } func (p P) Get() int { return int(*p) } var v I var x = (&v).Get() it would be unclear whether the Get method in the last line would be I.Get or P.Get. We could ...阅读全文

简书 2019.03.22 02:44 风亡小窝

Go语言 chan的剖析

什么是channel? channel是goroutine之间互相通信的工具。具体点的说法,channel是一种通信管道,能够把数据放入管道,也能从管道中读出数据。一个goroutine把数据放入chan,然后另外一个goroutine可以从chan里面读出数据。 channel的使用 Go语言提供chan关键字来创建channel,一个channel只能传递一种数据结构,其他类型的数据是不可以使用该channel的。 package main import "fmt" func main(){...阅读全文

Segmentfault 2019-03-21 21:34:41 boywus

阿里Java架构师:微服务写的最全的一篇文章

什么是微服务1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)2)独立的进程(java的tomcat,nodejs等)3)轻量级的通信(不是soap,是http协议)4)基于业务能力(类似用户服务,商品服务等等)5)独立部署(迭代速度快)6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择)ps:微服务的先行者Netflix公司,开源了一些好的微服务框架,后续会有介绍。怎么权衡微服务的利于弊利:强模块边界 。(模块化的演化过程:类-->组件/类...阅读全文

Go语言中文网 2019-03-21 21:23:42 a1127889067

delve:Golang的最佳调试工具

推荐使用Golang原生调试器delve,gdb不能切换goroutine。 推荐文章Golang程序调试工具介绍(gdb vs dlv) ,分析得很棒! gdb只能切换thread,而不能切换goroutine,将dlv切换goroutine、查看变量的过程摘抄如下: (dlv) goroutine 6 Switched from 1 to 6 (thread 9022) 在此基础上,执行bt,则可以看到当前goroutine的调用栈情况 (dlv) bt 0 0x00000000004547...阅读全文

简书 2019.03.21 19:56 哈哈笑321

DERO:BlockDag+Ghost+Bulletproofs+环签名+匿名合约+Golang编写

开场白:净化币圈环境从我做起,大家好,我是驴把头。今天给大家推荐一款百倍币—DERO,之前也写过DERO的相关文章,没看过的可以翻阅一下。DERO:基于Dag和CryptoNote协议,通过Golang语言从零开始编写,并融合了Bulletproofs防弹技术+环签名等先进的匿名技术,创新了DERO系统(DEROFilesystem)和匿名合约的新一代的完全匿名(交易匿名+合约匿名)的匿名公链。 dero 直入主题,接下来我们从:基本面、技术优势、Roadmap、dapp开发、社区建设等方面对D...阅读全文

简书 2019.03.21 20:16 币圈驴把头

来,控制一下 goroutine 的并发数量

来,控制一下 goroutine 的并发数量 问题 func main() { userCount := math.MaxInt64 for i := 0; i < userCount; i++ { go func(i int) { // 做一些各种各样的业务逻辑处理 fmt.Printf("go func: %d\n", i) time.Sleep(time.Second) }(i) } } 在这里,假设 userCount 是一个外部传入的参数(不可预测,有可能值非常大),有人会全部丢进去循...阅读全文

golang type struct 只写成员类型的 匿名字段。

今天看代码,看到个奇怪的代码: type Mssql struct { *sql.DB dataSource string database string windows bool sa SA } 这真是蛋疼了。*sql.DB是什么鬼啊?为什么只有类型没有字段名啊?看来没有系统看过golang语法真是够呛。发个QQ在群里面问golang达人,趁着别人还没回复的功夫,自己想百度一下,可是这怎么百度啊?怎么描述这个问题啊?奇葩啊。后来没办法直接百度了关键字 golang type struct .....阅读全文

简书 2019.03.21 16:10 毛毛v5