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

golang笔记之数据类型

基础数据类型 整形、浮点数、复数、布尔型、常量 复合数据类型 slice、数组、map、struct slices使用注意点: slice与数组的区别为在声明时不需要指定长度。 数组的初始化 var a [4]int slice的初始化 var s []byte Slices hold references to an underlying array, and if you assign one slice to another, both refer to the same array. Slice持有一个潜在的数组,如果你将一个slice赋值给另一个slice,那么两个slice有共同的数组。 重新分片一个slice不会拷贝此slice的内部数组。当只使用数据量比较大的sclice的一...阅读全文

博文 2019-05-05 21:34:58 月下独酌100

Golang构建Python高性能模块

package mainimport "C"​//指定那些函数能被外部调用//export testfunc test() int{ //计算 0-1000000000 的和 var s int for a := 0; a <= 10000000000; a++ { s += a } return s}​//pxport addstrfunc addstr(a,b * C.char) *C.char{ merge := C.GoString(a) + C.GoString(b) return C.CString(merge)​}func main(){}编译生成动态链接库,生成的.so文件可以被python加载并调用但是有一个需要注意的地方:Python是利用ctypes来跟so模块进行交互...阅读全文

博文 2020-05-20 16:53:43 大熊_7d48

go基础系列:数组

了解Python、Perl、JavaScript的人想必都知道它们的数组是动态的,可以随需求自动增大数组长度。但Go中的数组是固定长度的,数组一经声明,就无法扩大、缩减数组的长度。但Go中也有类似的动态"数组",称为slice数据结构,在下一篇文章会详细解释它。 Go中的数组是slice和map两种数据类型的基础,这两种数据类型的底层都是通过数组实现的。 数组的存储方式 当在Go中声明一个数组之后,会在内存中开辟一段固定长度的、连续的空间存放数组中的各个元素,这些元素的数据类型完全相同,可以是内置的简单数据类型(int、string等),也可以是自定义的struct类型。 固定长度:这意味着数组不可增长、不可缩减。想要扩展数组,只能创建新数组,将原数组的元素复制到新数组 连续空间:这意味可以...阅读全文

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

兄弟连区块链教程btcpool矿池源码分析slparser

btcpool矿池-slparser(share log parser)模块解析 核心机制总结 支持三种功能: 指定Date和UID,将打印指定日期指定用户的share信息到stdout UID=0时,将打印指定日期所有用户的share信息 指定Date但未指定UID,读取指定日期sharelog,统计数据并写入数据库 按Worker、user、pool三个维度统计:Accept1h、Accept1d、score1h、score1d、Reject1h、Reject1d 数据库仅保留最近3个月统计数据 如果Date和UID均未指定,将监听文件变化,读取share并统计数据,每15秒写入数据库 同时启动Httpd服务,开放ServerStatus和WorkerStatus slparser命令使...阅读全文

博文 2018-10-26 15:34:41 兄弟连区块链培训

【数据结构原理与应用(Golang描述)】② 链表

_ _ _ _ _ _ _ | (_) | | | | | (_) | | | |_ _ __ | | _____ __| | | |_ ___| |_ | | | '_ \| |/ / _ \/ _` | | | / __| __| | | | | | | < __/ (_| | | | \__ \ |_ |_|_|_| |_|_|\_\___|\__,_| |_|_|___/\__| 1.1 原理 链表与数组都非常基础也非常常用,从底层数据结构上看,数组需要一块连续的内存空间来存储数据,而链表则不需要,链表通过指针将一组零散的内存块串联起来使用。 日常中有三种常见的链表结构: 单向链表 双向链表 循环链表 1.2 分析 对于单链表来说,插入和删除操作的时间复杂度为 $O(1)$。双向链表...阅读全文

博文 2020-02-07 13:32:39 vouv

4. Go 语言数据类型:byte、rune与字符串

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更多的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 6...阅读全文

博文 2020-04-25 20:32:42 Python编程时光

14. Go 语言中的类型断言是什么?

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Type Assertion Type Assertion(中文名叫:类型断言),通过它可以做到以下几件事情 检查 i 是否为 nil 检查 i 存储的值是否为某个类型 具体的使用方式有两种: 第一种: t := i.(T) 这个表达式可以断言一个接口对象(i)里不是 nil,并且...阅读全文

博文 2020-05-11 09:32:44 Python编程时光

golang程序的基本结构和基本数据类型

1.文件名,关键字和标识符 每个golang程序的源文件都是以.go为后缀结尾 golang有25个关键字 break, default, func, interface, select case, defer, go, map, struct, chan else, goto, package, switch, const fallthrough, if, range, type, continue for, import, return, var 标识符使用字母数字下划线,且必须以字母或下划线开头的字符串序列 另外golang中还预定义了35个标识符 append, bool, byte, cap, close, complex, complex64, complex12 copy, f...阅读全文

博文 2019-04-02 23:34:38 孤风追影

[翻译]GO并发模型二:Pipeline和Cancellation

![image.png](https://static.studygolang.com/190320/6e9e2a4eacd7666eae1d15f42870c383.png) 紧接上文:[[翻译]GO并发模型一:Pipeline和Cancellation](https://zhuanlan.zhihu.com/p/59295820) ## 明确地取消 当主函数在没有从输出channel中接收完所有值便退出时,它必须告诉上游停止数据发送。可以通过向done channel发送停止信号实现。此处有两个可能阻塞的goroutine,所以需发两个值。 ``` func main() { in := gen(2, 3) // Distribute the sq work across two gor...阅读全文

Go基础系列:为select设置超时时间

Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 After() 谁也无法保证某些情况下的select是否会永久阻塞。很多时候都需要设置一下select的超时时间,可以借助time包的After()实现。 time.After()的定义如下: func After(d Duration) <-chan Time After()函数接受一个时长d,然后它After()等待d时长,等待时间到后,将等待完成时所处时间点写入到channel中并返回这个只读channel。 所以,将该函数赋值给一个变量时,这个变量是一个只读channel,而channel是一个指针类型的数据,所以它...阅读全文

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

从 io.Reader 中读数据

目录 [−] io.Reader.Readio.Copyioutil.ReadAllio.ReadFullio.ReadAtLeastio.LimitReader参考资料 Go 的标准库提供了多个从 io.Reader 中读取数据的方法 (io、ioutil),本文通过从 net.Conn中读取数据为例,演示各种方法已经应用场景。 使用TCP连接访问某个网站,采用HTTP 1.0的协议,让TCP连接保持短连接,读取完response之后连接会关闭,这样就模拟了io.EOF的错误: 123456conn, err := net.Dial("tcp", "rpcx.site:80")if err != nil { fmt.Println("dial error:", err) return}de...阅读全文

博文 2019-03-02 15:11:15 smallnest

Golang学习笔记--Channel

如何定义使用 定义 每个通道都有与之关联的类型。此类型是允许通道传输的数据类型。不允许使用该通道传输其他类型的数据。 通道的零值为nil。零通道没有任何用处,因此必须使用类似于 map 和 slice 的make来定义。 package main import "fmt" func main() { var a chan int // 定义 channel if a == nil { fmt.Println("channel a is nil, going to define it") a = make(chan int) fmt.Printf("Type of a is %T", a) // 输出Type of a is chan int } } 使用(接收和发送消息) data := <...阅读全文

【干货分享】大数据开发套件DataIDE使用教程

课程介绍 大数据开发套件(Data IDE) 是阿里云数加重要的Paas平台产品,是”DataWorks”中最重要的核心组件。提供全面托管的工作流服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。 大数据开发套件(Data IDE) 基于MaxCompute作为核心的计算、存储引擎,提供了海量数据的离线加工分析、数据挖掘的能力。您可以参见 MaxCompute 简介来对其进行深入了解 。 使用大数据开发套件(Data IDE),可对数据进行数据传输、数据转换等相关操作,从不同的数据存储引入数据,对数据进行转化处理,最后将数据提取到其他数据系统。 产品详情:https://data.aliyun.com/product/ide 课时列表 • 课...阅读全文

Golang通道的无阻塞读写的方法示例

无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,但其实有些情况,我们并不想读数据或者写数据阻塞在那里,有1个唯一的解决办法,那就是使用select结构。这篇文章会介绍,哪些情况会存在阻塞,以及如何使用select解决阻塞。阻塞场景阻塞场景共4个,有缓存和无缓冲各2个。无缓冲通道的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景:通道中无数据,但执行读通道。通道中无数据,向通道写数据,但无协程读取。// 场景1 func ReadNoDataFromNoBufCh() { noBufCh := make(chan int) <-noBufCh fmt.Println("read from no buffer channel success") // Output: // fatal...阅读全文

博文 2018-11-16 10:35:39 xiao_lili

数据结构和算法(Golang实现)(26)查找算法-哈希表

哈希表:散列查找 一、线性查找 我们要通过一个键key来查找相应的值value。有一种最简单的方式,就是将键值对存放在链表里,然后遍历链表来查找是否存在key,存在则更新键对应的值,不存在则将键值对链接到链表上。 这种链表查找,最坏的时间复杂度为:O(n),因为可能遍历到链表最后也没找到。 二、散列查找 有一种算法叫散列查找,也称哈希查找,是一种空间换时间的查找算法,依赖的数据结构称为哈希表或散列表:HashTable。 Hash: 翻译为散列,哈希,主要指压缩映射,它将一个比较大的域空间映射到一个比较小的域空间。 简单的说就是把任意长度的消息压缩到某一固定长度的消息摘要的函数。Hash 算法虽然是一种算法,但更像一种思想,没有一个固定的公式,只要符合这种思想的算法都称 Hash 算法。 散...阅读全文

博文 2020-04-07 16:32:50 陈星星

第四章 符合数据类型

复合数据类型包括数组,切片,map,结构体 数组 数组是一个由固定长度的特定类型的元素组成的序列,一个数组可以由零个或多个元素组成。 因为数组的长度固定,所以golang中很少直接使用数组,都是使用和数组对应类型的slice 汉译 切片 它是可以增长和收缩的动态序列,slice功能也更灵活,但是要理解slice 工作原理的话首先需要理解数组,因为slice就是基于数组做片段化引用的这么个东西 在数组字面值中,如果在数组长度位置出现“…” 省略号,则表示数组的长度是按照初始化长度来计算的。数组的长度是数组类型的组成部分[3]int 不是一个类型[4]int!! Slice 切片代表一个变长序列,序列中每一个元素都有相同的类型。一个slice类型一般写作[]T,其中T代表slice中元素的类型;...阅读全文

博文 2018-11-19 07:34:39 zhaoxi_yu

golang-sync.WaitGroup

使用 go 语言提供的方式处理:sync.WaitGroup package main import ( "fmt" "sync" ) /** channel 例子六: 接收方,接收完毕的时候,通知发送我接收完毕了! 使用 Go 语言提供的 sync.WaitGroup 的方式,来等待任务结束处理!之前处理方式比较繁琐 // 使用 go 语言提供的等待组,等待组 var wq sync.WaitGroup // 表示有多少个任务,比如添加20个任务 wq.Add(20) // 每个任务做完后,在任务做完后调用 wq.Done() // 等待任务做完,在任务开始后调用 wq.Wait() */ // c 这个chan 表示数据 func donWorker6(id int, c chan in...阅读全文

博文 2019-12-18 12:32:43 爱吃豆包

goroutine、channel原理

goroutine原理 概念介绍 并发 ⼀个CPU上能同时执⾏多项任务,在很短时间内,CPU来回切换任务执⾏(在某段很短时间内执⾏程序a,然后⼜迅速得切换到程序b去执⾏),有时间上的重叠(宏观上是同时的,微观仍是顺序执⾏),这样看起来多个任务像是同时执⾏,这就是并发。 并⾏ 当系统有多个CPU时,每个CPU同⼀时刻都运⾏任务,互不抢占⾃⼰所在的CPU资源,同时进⾏,称为并⾏。 进程 CPU在切换程序的时候,如果不保存上⼀个程序的状态(context--上下⽂),直接切换下⼀个程序,就会丢失上⼀个程序的⼀系列状态,于是引⼊了进程这个概念,⽤以划分好程序运⾏时所需要的资源。因此进程就是⼀个程序运⾏时候的所需要的基本资源单位(也可以说是程序运⾏的⼀个实体)。 线程 CPU切换多个进程的时候,会花费...阅读全文

博文 2020-05-28 21:32:44 强某某

Golang的数据类型

基本数据类型整型:1.按长度:int8(-128-127)、int16、int32、int642.无符号整型:uint8(0-255)、uint16、uint32、uint64特殊整型:int: 32位操作系统上就是int32,64位操作系统上就是int64uint: 32位操作系统上就是uint32,64位操作系统上就是uint64浮点型:float32 float64复数类型:complex64和complex128布尔类型:bool字符串:stringbyte类型和rune类型byte 和 run...阅读全文

博文 2020-05-13 16:32:54 lghCode

一次UDP通迅的问题排查

通迅模型 (A-->B-->A):A通过UDP发送数据给B(A可以是指定目的地,也可以是广播发送消息给B),B收到消息后根据来源地址和端口向A回发消息,就这么简单的一个通迅过程。 关于golang udp方面的讲解可以参考下https://colobu.com/2016/10/19/Go-UDP-Programming/这篇文件,讲的挺详细。什么时候udp socket是connected状态,什么时候是unconnected状态,什么时候用read/write,什么时候用readFromUDP/writeToUDP都有说明,写的挺好。 来段code demo吧 服务端: func main() { // 创建监听 sock, err := net.ListenUDP("udp4", &ne...阅读全文

Golang | IO库

一、io 1、两个接口 Go 的 io 包提供了 io.Reader 和 io.Writer 接口,分别用于数据的输入和输出; Go 官方提供了一些 API,支持对内存结构,文件,网络连接等资源进行操作; 围绕io.Reader/Writer,有几个常用的实现: net.Conn, os.Stdin, os.File: 网络、标准输入输出、文件的流读取 strings.Reader: 把字符串抽象成Reader(类似流那样,这样就有各种API了) bytes.Reader: 把[]byte抽象成Reader bytes.Buffer: 把[]byte抽象成Reader和Writer bufio.Reader/Writer: 抽象成带缓冲的流读取(比如按行读写) 什么是流?流是一种数据的载体,...阅读全文

博文 2020-04-06 00:34:21 _Liu_

golang-channel

缓冲的 chan, make(chan int, 缓冲大小): 表示满了 缓冲大小后 就开始堵塞,无法在往 管道 塞入数据 不带缓冲区 chan,make(chan int) : 就是放入数据之后,没有取出这个数据就无法在继续放入数据 cap(ch1) 可以查看缓冲区长度 len(ch1) 可以查看缓冲区有多少未读的缓存数据 例子一 package main import ( "fmt" "time" ) // 理念:不要通过共享内存来通信;通过通信来共享内存 /** channel 例子一 channel 既然有了发送方, 就必须要有接收方!!! */ func worker(c chan int) { for { // 从 channel 里面获取数据,赋值给 n n := <-c fm...阅读全文

LeetCode 1311. Get Watched Videos by Your Friends

链接: https://leetcode-cn.com/problems/get-watched-videos-by-your-friends/ 难度:medium 解题思路:广搜找到对应level的所有朋友,然后累加相应的video,最后排序。go语言没有啥priority queue,图简单这里排序用的直接插入排序,有点挫 Golang的数据结构支持太少了,各种都要自己写,真是麻烦。。 func watchedVideosByFriends(watchedVideos [][]string, friends [][]int, id int, level int) []string { visited := map[int]int{} queue := []Person {Person{i...阅读全文

博文 2020-05-15 23:32:47 码农老姜

golang mongoldb

使用gopkg.in/mgo.v2库操作,插入操作主要使用mongodb中Collection对象函数原型 func (c *Collection) Find(query interface{}) *Query 查找的时候Find的参数都会用bson.M类型 type M map[string]interface{} 例如:bson.M{"name": "Tom"}相当直接mongodb的查询条件{"name": "Tom"} 连接数据库 package main import ( "fmt" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) // get mongodb db func getDB() *mgo.Database { session, e...阅读全文

博文 2019-08-29 20:32:45 Steven_25bb

MaxCompute访问TableStore(OTS) 数据

摘要: MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部分的分布式计算需求。 免费开通大数据服务:https://www.aliyun.com/product/odps **前言** MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部分的分布式计算需求。而MaxCompute SQL作为分布式数据处理的主要入口,为快速方便处理/存储EB级别的离线数据提供了强有力的支持。 随着大数据业务的不断扩展,新的数据使用场景在不断产生,在这样的背景下,MaxCompute计算框架也在不断的演化,原来主要面对内部特殊格式数据的强大计算能力,也正在一步步的开放给不同的外部数据。 之前我们介绍了怎样[在MaxCompute上处理存储在OSS上...阅读全文

从插入排序来理解 Go 的接口

插入排序 根据插入排序的思想,我们很容易就可以完成插入排序的代码如下。 func insertionSort(data []int) { lo, hi := 0, len(data) - 1 for i := lo + 1; i < hi; i++ { for j := i; j > lo && data[j] < data[j-1]; j-- { data[j], data[j-1] = data[j-1], data[j] } } } 复制代码我们可以验证一下,确实没有问题。 package main import ( "fmt" ) func main() { nums := []int{2, 3, 4, 1, 7, 9, 10, 21, 17} insertionSort(nums)...阅读全文

博文 2019-12-03 11:34:19 咔叽咔叽

MySQL数据库入门学习

课程介绍 本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 课程目标 让小白也能够熟练掌握常用的数据库使用技巧,理解数据库的存储结构 适合人群 数据库入门学习者 前端学习者 课时列表 • 课时1: MySQL概要 • 课时2:MySQL在windows下的安装 • 课时3:MySQL在linux下的安装 • 课时4:MySQL在Mac下的安装 • 课时5:MySQL配置 • 课时6:添加和删除数据库(DB) • 课时7:数据类型 • 课时8:添加和删除数据表(table) • 课时9:给数据表添加或者删除列 • 课时10:修改某个数据列的名字或者数据类型 • 课时...阅读全文

7. Go 语言数据类型:指针

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 0. 什么是指针 当我们定义一个变量 name var name string = "Go编程时光"复制代码 此时,name 是变量名,它只是编程语言中方便程序员编写和理解代码的一个标签。 当我们访问这个标签时,机算机会返回给我们它指向的内存地址里存储的值:Go编程时光。 出于某些需要,我们会...阅读全文

博文 2020-04-29 11:35:21 王一白

25. 学习 Go 协程:详解信道/通道

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Go 语言之所以开始流行起来,很大一部分原因是因为它自带的并发机制。 如果说 goroutine 是 Go语言程序的并发体的话,那么 channel(信道) 就是 它们之间的通信机制。channel,是一个可以让一个 goroutine 与另一个 goroutine 传输信息的通道...阅读全文

博文 2020-06-02 08:32:41 Python编程时光

Golang通道的无阻塞读写

无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,但其实有些情况,我们并不想读数据或者写数据阻塞在那里,有1个唯一的解决办法,那就是使用select结构。 这篇文章会介绍,哪些情况会存在阻塞,以及如何使用select解决阻塞。 阻塞场景 阻塞场景共4个,有缓存和无缓冲各2个。 无缓冲通道的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景: 通道中无数据,但执行读通道。 通道中无数据,向通道写数据,但无协程读取。 // 场景1 func ReadNoDataFromNoBufCh() { noBufCh := make(chan int) <-noBufCh fmt.Println("read from no buffer channel success") // Output: /...阅读全文

博文 2018-11-02 15:34:43 shitaibin

探索 Go 语言数据类型的内部实现

向新程序员讲解 Go 语言的时候,必要的是解释 Go 各种数据值在内存中的组织来给他们建立正确的思想,知道哪些操作是开销昂贵的,哪些是不昂贵的。这篇文章就是关于基本类型,结构,数组和切片的内部实现原理。基本类型让我们从一个简单的例子开始 图1 变量 i 的类型是 int, 在内存中用一个32比特位的字来表示。j 的类型是 int32 ,由于显示类型转换。即使 i 和 j 由相同的内存布局,他们本质上还是不同的类型:在 Go 中直接 i = j 赋值将会产生一个错误,我们必须显示的转化 j,i = int(j)。值 f 的类型是 float,在内存中用 32 比特位的浮点值格式表示,它和 int32 有相同的内存使用量但是内部布局是不同的,感兴趣的可以去了解一个浮点数如何在内存中表示。结构体和...阅读全文

博文 2020-05-29 13:32:54 CXX_FLAGS

剖析nsq消息队列(三) 消息传输的可靠性和持久化[二]diskqueue

剖析nsq消息队列-目录 上一篇主要说了一下nsq是如何保证消息被消费端成功消费,大概提了一下消息的持久化,--mem-queue-size 设置为 0,所有的消息将会存储到磁盘。 总有人说nsq的持久化问题,消除疑虑的方法就是阅读原码做benchmark测试,个人感觉nsq还是很靠谱的。 nsq自己实现了一个先进先出的消息文件队列go-diskqueue是把消息保存到本地文件内,很值得分析一下他的实现过程。 整体处理逻辑 go-diskqueue 会启动一个gorouting进行读写数据也就是方法ioLoop 会根据你设置的参数来进行数据的读写,流程图如下 evernotecid://D2602A6B-6F53-4199-885D-97DFC21CBA3E/appyinxiangcom/2...阅读全文

博文 2019-11-15 18:04:17 li_peng

小白也能够熟练掌握常用的数据库使用技巧

课程介绍 本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 课程目标 让小白也能够熟练掌握常用的数据库使用技巧,理解数据库的存储结构 适合人群 数据库入门学习者 前端学习者 课时列表 • 课时1: MySQL概要 • 课时2:MySQL在windows下的安装 • 课时3:MySQL在linux下的安装 • 课时4:MySQL在Mac下的安装 • 课时5:MySQL配置 • 课时6:添加和删除数据库(DB) • 课时7:数据类型 • 课时8:添加和删除数据表(table) • 课时9:给数据表添加或者删除列 • 课时10:修改某个数据列的名字或者数据类型 • 课时...阅读全文

golang文件操作-读操作的常见方式汇总

1、ioutil读取整个文件(io/ioutil) ioutil的方式能够读取整个文件,只需传入文件名,操作简单。该操作方式需要把文件读入内容,效率高,同样占用内存也高 func ReadFile(filename string) ([]byte, error)ReadFile 从filename指定的文件中读取数据并返回文件的内容。成功的调用返回的err为nil而非EOF。因为本函数定义为读取整个文件,它不会将读取返回的EOF视为应报告的错误。 // ioutil.ReadFile读取整个文件 func main() { content, err := ioutil.ReadFile("./main.go") if err != nil { fmt.Println("read file f...阅读全文

博文 2020-03-08 19:32:40 司国瑞

数据结构和算法(Golang实现)(18)排序算法-前言

排序算法 人类的发展中,我们学会了计数,比如知道小明今天打猎的兔子的数量是多少。另外一方面,我们也需要判断,今天哪个人打猎打得多,我们需要比较。 所以,排序这个很自然的需求就出来了。比如小明打了5只兔子,小王打了8只,还有部落其他一百多个人也打了。我们要论功行赏,谁打得多,谁就奖赏大一点。 如何排序呢,怎么在最快的时间内,找到打兔子最多的人呢,这是一个很朴素的问题。 经过很多年的研究,出现了很多的排序算法,有快的有慢的。比如: 插入类排序有:直接插入排序和希尔排序 选择类排序有:直接选择排序和堆排序 交换类排序有:冒泡排序和快速排序 它们的复杂度如下: 稳定性概念 定义:能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变。(A1=A2,排序前A1在A2前面,排序后A1还在A2前面)...阅读全文

博文 2020-04-07 16:32:36 陈星星

Go实现数据结构--栈

使用golang语言的interface接口类型创建栈,栈可以操作各种数据类型,非常简洁方便 package main import "fmt" // 栈:先进后出,从栈顶取数据,栈低固定 type Stack struct { Top int // 栈顶 Capacity int // 栈容量 Prt *[]interface{} // 指向栈指针 } // 初始化栈 func (s *Stack) StackInitial(capacity int){ s.Capacity =capacity s.Top =0 // 使用interface类型,所有数据类型都能兼容 m:= make([]interface{},capacity) s.Prt =&m } // 元素入栈,栈顶上升 fun...阅读全文

博文 2020-04-09 18:32:54 阿鸠先生

数据结构和算法(Golang实现)(28)查找算法-AVL树

AVL树 二叉查找树的树高度影响了查找的效率,需要尽量减小树的高度,AVL树正是这样的树。 一、AVL树介绍 AVL树是一颗严格自平衡的二叉查找树,1962年,发明者Adelson-Velsky和Landis发表了论文,以两个作者的名字命名了该数据结构,这是较早发明的平衡二叉树。 定义如下: 首先它是一颗二叉查找树。 任意一个节点的左右子树最大高度差为1。 由于树特征定义,我们可以计算出其高度h的上界h<=1.44log(n),也就是最坏情况下,树的高度约等于1.44log(n)。 假设高度h的AVL树最少有f(h)个节点,因为左右子树的高度差不能大于1,所以左子树和右子树最少节点为:f(h-1),f(h-2)。 因此,树根节点加上左右子树的节点,满足公式f(h) = 1 + f(h-1) ...阅读全文

博文 2020-04-07 16:32:57 陈星星

Reflect-Go一分钟快速入门

Reflect 本文侧重讲解reflect反射的实践应用,适合新手初窥门径。 reflect两个基本功能 reflect.TypeOf() 动态获取输入数据的类型 reflect.ValueOf() 动态获取输入数据的值 func TypeOf(i interface{}) Type func ValueOf(i interface{}) Value 通过reflect.Type和reflect.Value支持的方法,可以对输入的动态数据进行解析。那么了解reflect.Type和reflect.Value提供的方法尤为重要,因为比较多,此介绍放在文末。 reflect.Kind 在reflect.Type和reflect.Value上调用Kind()方法,可以得到reflect.Kind类...阅读全文

博文 2020-01-10 17:32:41 tinson

基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)

TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下:1、新增对JDK9及以上版本Java环境的支持2、生成JavaBean更名为生成数据模型并且提供了C#、C++、Golang、Rust、Python、Objective-C、Swift等编程语言数据模型的简单模板3、新增生成SpringBoot项目工程的功能,在生成自定义文件界面直接生成一个可以跑起来的项目4、新增对数据库视图的支持5、新增大量自定义模板示例6、新增SQL查询导出数据功能,在生成自定义文件时通过配置SQL查询数据导出生成任何需要的文件7、新增一些内置静态对象用于生成自定义文件时使用,例如:org.apache.commons.lang.StringUtils8、移除是否目录直通,如果文件保存路径设置...阅读全文

博文 2020-05-31 22:33:14 TableGo

2018-09-17

go语言基础 hello world1.常量的定义//常量定义const PI =3.142.一般类型声明type myInt int//数据类型3.全局变量的声明与赋值var myName ="golang"4.结构的声明type myPerson struct {}5.接口的声明type myGolang interface {}6.hello world !func main() {fmt.Println("hello world! 你好世界! ")...阅读全文

博文 2018-09-17 21:34:39 tomato波

面向接口 - day 3

type Traversal interface { Traverse() } func main() { traversal := getTraversal() traversal.Traverse() } duck typing 描述事物的外部行为而非内部结构 golang类似duck typing golang中接口是由使用者定义的 实现者只需要实现接口的方法就可以 接口的内部实现 接口中包含实现者的类型和实现者的值/实现者的指针 将实现者赋值给接口变量时有两种方式:值赋值和指针赋值 值赋值是将实现者的值赋给接口的内部变量 指针赋值是将实现者的指针赋值给接口的内部变量 接口的指针赋值只能将实现者的指针赋值给接口变量 接口的值赋值既可以将实现者的指针赋值给接口变量又可以将值赋值给接口变量...阅读全文

第九天:golang学习笔记之bufio

★bufio | bufio 包实现了带缓存的I/O操作. golang界里我老八,今天给大家看个bufio。bufio包实现了带缓存的I/O,把io.Reader或io.Writer封装成更牛逼的对象 bufio bufio包内没有接口定义,只有结构体: 1. bufio.Reader 内部全私有变量,通过如下方法创建: - NewReader(rd io.Reader) *Reader:调用NewReaderSize创建defaultBufSize大小(4096B)的bufReader - NewReaderSize(rd io.Reader, size int) *Reader 结构体定义如下: type Reader struct { buf []byte rd io.Reader ...阅读全文

博文 2019-12-27 16:32:43 Macmillan_

[GO语言]Golang中new和make的根本区别

new和make的根本区别 1、没有指向底层数组的区别 2、new返回指针,make返回引用实例 例子new: var p *[]int = new([]int) 或 p := new([]int) 以上分配了一个slice结构,但是结构中的应该指向底层数组的ptr指针为空,故实际不能往这个slice里面存取数据 同时分配了一个指针p,也即(在32位系统中)占4个字节并存放slice结构的地址 例子make: var v []int = make([]int, 0) v := make([]int, 0) 以上分配了一个slice结构,且结构中的应该指向底层数组的ptr指针已经指向了某个底层数组,这个底层数组应该已经分配了,故这个slice已经可以使用了 注意v就是这个slice结构,而不是...阅读全文

博文 2020-05-15 17:34:07 小龙in武汉

Golang中make和new的区别

new:func new(Type) *Type 接受一个参数,这个参数是一种类型,而不是一个值,分配好内存后, 返回一个指向该类型内存地址的指针,这个指针指向的内容的值为该类型的零值。 对于不同的数据类型,零值的意义是完全不一样的。 比如,对于bool类型,零值为false;int的零值为0;string的零值是空字符串 make:func make(t Type, size ...IntegerType) Type 同样用于内存分配,但和new不同,make用于channel,slice和map的分配, 而且返回的类型就是这三个类型本身,而不是它们的指针, 因为这三种类型本身就是引用类型,所以就没必要返回他们的指针了。 具体而言,有如下几种用法: (1)make(map[string]s...阅读全文

博文 2020-04-18 17:32:50 普朗tong

c++对象模型

使用c++有些年头了,有一本深度搜索c++对象模型的书写的很赞,很经典。本文是本书的读书笔记。 #### 关于对象 ##### 加上封装后的布局成本 c语言中如下声明一个结构体 ``` typedef struct point3d{ float x; float y; float z;}Point3d; ``` struct point3d 转化为class Point3d之后 ``` class Point3d { public: Point3d(float x = 0.0f, float y = 0.0f; float z = 0.0f) :_x(x),_y(y),_z(z){} private: float _x,_y,_y; } ``` 封装带来的布局成本增加了多少?实际是没有增加布...阅读全文

博文 2019-11-06 09:53:55 bytemode

6. Go 语言数据类型:字典与布尔类型

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 字典 字典(Map 类型),是由若干个 key:value 这样的键值对映射组合在一起的数据结构。 它是哈希表的一个实现,这就要求它的每个映射里的key,都是唯一的,可以使用 == 和 != 来进行判等操作,换句话说就是key必须是可哈希的。 什么叫可哈希的?简单来说,一个不...阅读全文

博文 2020-04-28 08:32:43 Python编程时光

MySQL学习中,数据库事务有哪些特性?

MySQL数据库学习中,总有人会遇到问题,在面对问题的时候,我们一般都是自己先思索、解决,自己无法解答的时候,求助于他人。这是一个很好的习惯,有自学的能力,也有请教的态度。那么有朋友就问了,啥是数据库事务啊,事务又有哪些特性? 什么是数据库事务? ACID是逻辑上的一组操作,组成这个操作的各个单元,要不全部都成功,要不全部都失败,这个特性就是事务。 那事务有什么特性呢? 原子性(atomicity):整个事务中的所有操作,要么全部完成,要么全部不完成 一致性(consistency):事物必须始终保持系统处于一致的状态,不管在任何给定的时间并发事物有多少。 隔离性(isolation):当多个事务并发访问同一个数据源时,数据库能够保持每个访问的事务之间是隔离的,互不影响。 持久化(durab...阅读全文

博文 2019-11-15 16:39:20 zhouzhou2018

QuickBI助你成为分析师——数据源FAQ小结

摘要: 添加数据源的时候经常会遇到各种问题,下面来讲解一下常见情况,若仍有疑问扫码咨询哦! 使用 Quick BI 分析数据时,需要先指定原始数据所在的数据源,测试连通数据源是数据分析的基础,下面让我们看一下添加数据源时常遇到的问题吧! **MaxCompute** 注意以下几点: AccessId和AccessKey 必须是有效的 对应账号最好是项目admin或者owner 若为普通用户,需具有 list、select、create instance权限。 **ECS自建库** 目前ECS自建库经典网络添加白名单时常常遇到下面情况: ![图片描述](http://img.blog.csdn.net/20180328105245739?water...阅读全文

12 - go简单实现hashmap

注意:还没有解决hash冲突和hash倾斜的问题。 package main import "fmt" var nowCapacity = 10 //当前容量 const maxCapacity = 100 //最大容量 const loadFactor = 0.75 //负载因子(决定扩容因数) type Entry struct { k string //key v interface{} //值 next *Entry } type HashMap struct { size int //map的大小 bucket []Entry //存放数据的桶,为slice } //创建一个CreateHashMap的函数,返回一个HashMap指针 func CreateHashMap() *H...阅读全文

博文 2020-05-12 19:32:47 欢乐毅城

聊聊golang的context

golang的context的主要用途在于在多个goroutine之间传递数据,管理多个goroutine的生命周期。实际的应用场景有比如,在http服务中,每个请求就对应一个goroutine,而请求之中可能又会调用别的api,而产生更多的goroutine,用context来管理这些goroutine就能比较方便在这些goroutine中传递数据和管理。 主要方法 func Background() Context Background() 返回一个空的context,这是一个根节点。 func TODO() Context TODO()返回的也是一个空的context,它跟Background的区别在于目的,当你使用一个todo的context时,代码维护者便知道当时的设计意图是待定的...阅读全文

博文 2020-03-21 22:33:49 wx5e1abbbb0a5e5