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

Golang面试之Shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。 引用 Shell 教程 Shell 变量 定义变量 定义变量变量名不加美元符号,如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头; 中间不能有空格,可以使用下划线...阅读全文

博文 2020-05-12 01:32:52 网管同学

3. Go语言中的整型与浮点型

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 系列导读 1. 一文搞定Go语言开发环境的搭建 2. Go 语言中五种变量创建的方法 1. 整型 Go 语言中,整数类型可以再细分成10个类型,为了方便大家学习,我将这些类型整理成一张表格。 int 和 uint 的区别就在于一个 u,有 u 说明是无符号,没有 u 代表有符号。 解释这个符号的区别 以 int8 和 uint8 举例,8 代表 8个bit,能表示的数值个数有 2^8 = 256。 uint8 是无符号,能表示的都是正数,0-255,刚好256个数。 int8 是有符号,既可以正数,也可以负数,那怎么...阅读全文

博文 2020-03-27 14:34:36 王一白

Golang strconv包使用

// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) func main() { fmt.Println(strconv.ParseBool("1")) // true fmt.Println(strconv.ParseBool("t")) // true fmt.Println...阅读全文

博文 2019-01-28 15:34:50 小马哥_Magical

撮合引擎开发:解密黑箱流程

撮合引擎开发:开篇 撮合引擎开发:MVP版本 撮合引擎开发:数据结构设计 撮合引擎开发:对接黑箱 撮合引擎开发:解密黑箱流程 业务流程 前面的几篇文章已经陆续讲到了黑箱内部的一些设计,包括核心的软件结构、数据结构、目录结构等。而从本小节开始,我们将会更加深入,来解密黑箱内部的更多设计和实现细节。 解密黑箱的第一步就是要清楚其内部对数据的处理流程是怎样的。当我们要设计一个新系统的时候,也是一样的,第一步要梳理清楚业务流程和数据流向。对撮合引擎来说,就是要了解:从输入到输出,中间都经过了哪些处理流程。 前面的文章已经讲过,本撮合引擎定义了三种输入:开启撮合、处理订单、关闭撮合。后面就分别来看看这三种输入背后的流程。 开启撮合 开启撮合即是开启某个交易标的(交易对)的撮合引擎,未开启撮合的交易标的...阅读全文

博文 2019-11-28 12:34:13 Keegan小钢

Go语言中其他数据与字符串类型的转换

1 概述 Go语言是强类型语言,因此总会需要将字符串转成需要的类型。比如整型和字符串转换,字符串和布尔型的转换等。本文就介绍如何完成这些转换,以下是Go语言关于字符串转换的整理说明,主要是与切片类型的转换,和 strconv 包的使用。 2 与切片的转换 切片类型可以和字符串类型相互转换。 fmt.Println([]rune("Hello小韩说课")) // [72 101 108 108 111 23567 38889 35828 35838] fmt.Println(string([]rune{72, 101, 108, 108, 111, 23567, 38889, 35828, 35838})) // Hello小韩说课 fmt.Println([]byte("Hello")) /...阅读全文

博文 2018-10-28 07:35:09 小韩说课

爬虫性能分析及优化

前两天我们写了单任务版爬虫爬取了珍爱网用户信息,那么它的性能如何呢? 我们可以通过网络利用率看一下,我们用任务管理器中的性能分析窗口可以看到下载速率大概是保持在了200kbps左右,这可以说是相当慢了。 我们针对来通过分析单任务版爬虫的设计来看下: 从上图我们可以看出,engine将request从任务队列取出来,送到Fetcher取获取资源,等待数据返回,然后将返回的数据送到Parser去解析,等待其返回,把返回的request再加到任务队列里,同时把item打印出来。 慢就慢在了没有充分利用网络资源,其实我们可以同时发送多个Fetcher和Pareser,等待其返回的同时,可以去做其他的处理。这一点利用go的并发语法糖很容易实现。 上图中,Worker是Fetcher和Parser的合并...阅读全文

golang-nsq系列(一)--初识

nsq 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 它具有以下特性: 分布式。它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展。它支持水平扩展,没有中心化的消息代理(Broker),内置的发现服务让集群中增加节点非常容易。 运维方便。它非常容易配置和部署,灵活性高。 高度集成。现在已经有官方的Golang、Python和JavaScript客户端,社区也有了其他各个语言的客户端库方便接入,自定义客户端也非常容易。 1. 首先到官方文档看用法: https://nsq.io/overview/quick... 下载对应的二进制可执行文件...阅读全文

博文 2019-08-18 21:02:38 热爱coding的稻草

Go语言中其他数据与字符串类型的转换

## 1 概述 Go语言是强类型语言,因此总会需要将字符串转成需要的类型。比如整型和字符串转换,字符串和布尔型的转换等。本文就介绍如何完成这些转换,以下是Go语言关于字符串转换的整理说明,主要是与切片类型的转换,和 strconv 包的使用。 ## 2 与切片的转换 切片类型可以和字符串类型相互转换。 ``` fmt.Println([]rune("Hello小韩说课")) // [72 101 108 108 111 23567 38889 35828 35838] fmt.Println(string([]rune{72, 101, 108, 108, 111, 23567, 38889, 35828, 35838})) // Hello小韩说课 fmt.Println([]byte("...阅读全文

博文 2018-10-30 22:28:30 hanzkering

Go语言单链表

package main import "fmt" type Node struct { data int next *Node } func Shownode(p *Node){ //遍历 for p != nil{ fmt.Println(*p) p=p.next //移动指针 } } func main() { var head = new(Node) head.data = 0 var tail *Node tail = head //tail用于记录最末尾的结点的地址,刚开始tail的的指针指向头结点 for i :=1 ;i<10;i++{ var node = Node{data:i} (*tail).next = &node tail = &node } Shownode(h...阅读全文

博文 2019-12-25 19:33:14 huang_he_87

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) //输出: true true true 使用 " ` " 定义不做转义处理的原始字符串,支持跨行。 s := `a b\r\n\x00 c` println(s) // 输出: a b\r\n\x00 c...阅读全文

博文 2019-03-22 05:34:40 Diogoxiang

Golang 问题点(一)

1. make和new的区别: make和new都在堆上分配内存. 但是他们的行为不同, 适用于不同的类型. new(T) 返回的是T的指针, 其中T为一个类型, 不是一个值, 为T类型新值分配内存空间并将此空间初始化为T类型的的零值, 返回的是新值得地址,即T的指针*T的值, 该指针指向T的新分配的零值. make(T, args) 用来为slice,map货channel类型分配内存和初始化一个对象, 返回类型的引用we不是指针, 返回值根据T的不同而不同. 简单来讲: new 的作用是初始化一个指向类型的指针(*T),make 的作用是为 slice,map 或 chan 初始化并返回引用(T) testNew := new([2]int) fmt.Println(testNew) /...阅读全文

博文 2020-02-27 07:32:41 董小贱

软件结构很重要!嵌入式C语言修炼之道

模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了>相对论),C语言模块化程序设计需理解如下概念:(1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;(2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;(3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;(4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外...阅读全文

博文 2019-01-17 17:14:57 wangzijuan

golang-nsq系列(一)--初识

nsq 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 nsq 它具有以下特性: 分布式。它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展。它支持水平扩展,没有中心化的消息代理(Broker),内置的发现服务让集群中增加节点非常容易。 运维方便。它非常容易配置和部署,灵活性高。 高度集成。现在已经有官方的Golang、Python和JavaScript客户端,社区也有了其他各个语言的客户端库方便接入,自定义客户端也非常容易。 1. 首先到官方文档看用法: https://nsq.io/overview/quick_start.html q...阅读全文

博文 2019-08-19 02:32:44 热爱coding的稻草

图解kubernetes服务打散算法的实现源码

在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,node则是一个具体的节点,而该打散算法的目标就是将pod在zone和node之间进行打散操作 1.2 namespace namespace是k8s中进行资源隔离的实现,同样的筛选也是如此,在筛选的过程中,不同namespace下面的pod并不会相互影响 1.3 计数与聚合 SelectorSpread算法是scheduler中优先级算法的一种,其实现了优先级算法的map/reduce方法,其中ma...阅读全文

消息队列 NSQ 源码学习笔记 (四)

> **nsq** 工具集学习 ### nsq\_to\_nsq nsq 作为消息队列,有个优势是nsqd 各节点之间是不关联的,如果一个节点出了问题,仅仅影响该节点下的topic,channel,以及相关的生产者、消费者。 也就是官方说明的特性第一条:**no SPOF** ( single point of failure 单点故障)。好处不言而喻,坏处也是有的,如果节点出问题,没有备份数据无法恢复。 所以,在官方提供了 nsq\_to\_nsq 作为 nsqd 节点复制的工具,用于做 nsqd 节点数据的备份, 或者也可以用于数据的分发。 类似于MirrorMaker. #### 特性: - 支持将M 个 topic 的消息 publish 到 N 个 nsqd...阅读全文

DjanFey的基础库解读--bufio包(bufio.go)

package my_bufio import ( "bytes" "errors" "io" "unicode/utf8" ) const ( defaultBufSize = 4096 ) var ( // 非法使用UnreadByte ErrInvalidUnreadByte=errors.New("bufio: invalid use of UnreadByte") // 非法使用UnreadRune ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune") // buffer已满 ErrBufferFull = errors.New("bufio: buffer full") // count为负 E...阅读全文

博文 2020-03-14 23:41:34 DjanFy