自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

永远的Violet的博客

在读研究生,日常学习博客,主要内容是区块链和GO语言

  • 博客(47)
  • 收藏
  • 关注

原创 (4.23)百度Golang一面凉经

(4.23)百度Golang一面凉经:协程交替打印;return与defer;如何优雅关闭http服务端

2022-05-03 17:34:07 1626

转载 Golang 闭包的实现

Golang闭包实现

2022-03-07 18:37:10 265

转载 Golang sync.WaitGroup的用法

Golang sync.WaitGroup的用法

2022-03-05 18:49:46 461

原创 GolangRoadmap-Golang面试题笔记-并发编程(2)

Golang刷面试题笔记。Golang RWMutex的实现;Golang RWMutex解锁后的抢占规则;Golang Cond 是什么;Cond中Broadcast 和 Signal 区别;Cond 中 Wait 使用

2022-03-04 16:23:31 323

原创 GolangRoadmap-Golang面试题笔记-并发编程(1)

Golang刷面试题笔记。Mutex 的几种状态;Mutex 正常模式和饥饿模式;自旋锁

2022-03-03 22:37:30 493

原创 GolangRoadmap-Golang面试题笔记(5)

Golang刷面试题笔记。题目ID-27 Golang Map 查找的过程;题目ID-28 介绍一下 Go Channel;题目ID-29 介绍一下 Channel 的 ring buffer 实现

2022-03-03 22:10:38 917

原创 GolangRoadmap-Golang面试题笔记(4)

刷Golang面试题笔记。题目ID-25 Golang Map的底层实现。题目ID-26 Golang Map的扩容。

2022-02-28 18:13:48 448

原创 GolangRoadmap-Golang面试题笔记(3)

刷Golang面试题笔记。题目ID-21 Golang Slice 的底层实现。题目ID-23 扩容前后的 Slice 是否相同?

2022-02-27 10:27:11 395

原创 GolangRoadmap-Golang面试题笔记(2)

刷Golang面试题笔记。题目ID-13 Go 语言当中 new的作用是什么?题目ID-14 Go 语言中 make 的作用是什么?题目ID-15 Printf(),Sprintf(),FprintF() 都是格式化输出,有什么不同?题目ID-16 Go 语言当中数组和切片的区别是什么?题目ID-18 Go 语言当中数组和切片在传递的时候的区别是什么?题目ID-19 Go 语言是如何实现切片扩容的?

2022-02-26 10:27:10 308

原创 GolangRoadmap-Golang面试题笔记(1)

刷Golang面试题笔记。题目ID-1 与其他语言相比,使用 Go 有什么好处?题目ID-4 Go支持什么形式的类型转换?题目ID-6 如何在运行时检查变量类型?题目ID-7 Go 两个接口之间可以存在什么关系?题目ID-8 Go 当中同步锁有什么特点?作用是什么

2022-02-22 21:49:35 989

转载 高效GO语言编程(11)——并发(下)

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放GO内推,GO面试,GO宝典,GO学院,GO友会等栏目信道中的信道Go最重要的特性就是信道是一等值,它可以被分配并像其它值到处传递。 这种特性通常被用来实现安全、并行的多路分解。在上一节的例子中,handle 是个非常理想化的请求处理程序, 但我们并未定义它所处理的请求类型。若该类型包含一个可用于回复的信道, 那.

2022-01-22 12:15:01 119

转载 高效GO语言编程(12)——并发(中)

信道与映射一样,也需要通过 make 来分配内存。其结果值充当了对底层数据结构的引用。 若提供了一个可选的整数形参,它就会为该信道设置缓冲区大小。默认值是零,表示

2022-01-22 12:08:18 117

转载 高效GO语言编程(11)——并发(上)

通过通信共享内存,协程,GO并发

2022-01-21 11:32:31 139

转载 高效GO语言编程(10)——内嵌

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放GO内推,GO面试,GO宝典,GO返利等栏目Go并不提供典型的,类型驱动的子类化概念,但通过将类型内嵌到结构体或接口中, 它就能“借鉴”部分实现。接口内嵌非常简单。我们之前提到过 io.Reader 和 io.Writer 接口,这里是它们的定义。type Reader interface { .

2021-09-11 10:49:45 259

转载 高效GO语言编程(9)——空白标识符

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放GO内推,GO面试,GO宝典,GO返利等栏目我们在 for-range 循环和映射中提过几次空白标识符。 空白标识符可被赋予或声明为任何类型的任何值,而其值会被无害地丢弃。它有点像Unix中的 /dev/null 文件:它表示只写的值,在需要变量但不需要实际值的地方用作占位符。 我们在前面已经见过它的用法了。多个参.

2021-09-06 11:17:14 334

转载 高效GO语言编程(9)——通用性,接口和方法

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放GO内推,GO面试,GO宝典,GO返利等栏目通用性若某种现有的类型仅实现了一个接口,且除此之外并无可导出的方法,则该类型本身就无需导出。 仅导出该接口能让我们更专注于其行为而非实现,其它属性不同的实现则能镜像该原始类型的行为。 这也能够避免为每个通用接口的实例重复编写文档。在这种情况下,构造函数应当返回一个接口值.

2021-09-04 11:48:06 198

转载 GO语言内存管理——逃逸分析

前言所谓逃逸分析(Escape analysis)是指由编译器决定内存分配的位置,不需要程序员指定。 函数中申请一个新的对象如果分配在栈中,则函数执行结束可自动将内存回收;如果分配在堆中,则函数执行结束可交给GC(垃圾回收)处理;有了逃逸分析,返回函数局部变量将变得可能,除此之外,逃逸分析还跟闭包息息相关,了解哪些场景下对象会逃逸至关重要。逃逸策略每当函数中申请新的对象,编译器会根据该对象是否被函数外部引用来决定是否逃逸:1.如果函数外部没有引用,则优先放到栈中;2.如果函数外部存在引用

2021-09-01 21:11:54 312

转载 高效GO语言编程(9)——接口转换与类型断言

接口转换与类型断言类型选择 是类型转换的一种形式:它接受一个接口,在选择 (switch)中根据其判断选择对应的情况(case), 并在某种意义上将其转换为该种类型。以下代码为 fmt.Printf 通过类型选择将值转换为字符串的简化版。若它已经为字符串,我们需要该接口中实际的字符串值; 若它有 String 方法,我们则需要调用该方法所得的结果。type Stringer interface { String() string}var value interface{} // Value

2021-09-01 09:57:02 148

转载 高效GO语言编程(9)——接口与类型转换

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放GO内推,GO面试,GO宝典,GO返利等栏目接口Go中的接口为指定对象的行为提供了一种方法:如果某样东西可以完成这个, 那么它就可以用在这里。我们已经见过许多简单的示例了;通过实现 String 方法,我们可以自定义打印函数,而通过 Write 方法,Fprintf 则能对任何对象产生输出。在Go代码中, 仅包含一.

2021-08-31 15:25:54 207

转载 高效GO语言编程(8)——方法(指针 vs. 值)

正如 ByteSize 那样,我们可以为任何已命名的类型(除了指针或接口)定义方法; 接收者可不必为结构体。在之前讨论切片时,我们编写了一个 Append 函数。 我们也可将其定义为切片的方法。为此,我们首先要声明一个已命名的类型来绑定该方法, 然后使该方法的接收者成为该类型的值。type ByteSlice []bytefunc (slice ByteSlice) Append(data []byte) []byte { // 主体与上面定义的Append函数完全相同。}我们仍然需要

2021-08-28 11:28:09 157

转载 高效GO语言编程(7)——初始化

尽管从表面上看,Go 的初始化过程与 C 或 C++ 差别并不算太大,但它确实更为强大。 在初始化过程中,不仅可以构建复杂的结构,还能正确处理不同包对象间的初始化顺序。常量Go 中的常量就是不变量。它们在编译时创建,即便它们可能是函数中定义的局部变量。 常量只能是数字、字符(符文)、字符串或布尔值。由于编译时的限制, 定义它们的表达式必须也是可被编译器求值的常量表达式。例如 1<<3 就是一个常量表达式,而 math.Sin(math.Pi/4) 则不是,因为对 math.Sin 的函数调用

2021-08-19 14:49:26 218

原创 Golang开发问题:包的路径明明没问题,却找不到本地包,原来是GO文件的编码问题!

我们先来看这样一个例子(这是一个小伙伴在群里问的问题),这是一个使用了gomod来管理包的简单例子,当前项目在gopath路径外,且GO111MOUDLE=ON。大家觉得程序能不能正常运行?答案是不能!,但只看程序编写和包引用的路径是完全正确,那为什么无法运行呢?我们来看运行结果编译器报出了如下错误,提示main.go文件找不到包,但路径完全没问题,这是为什么呢。main.go:3:8: cannot find package一开始我也找不到问题所在,后来我完全按照他的写法重写了一遍,是可以正

2021-08-14 18:11:56 2617

转载 高效GO语言编程(7)——追加

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放GO内推,GO面试,GO宝典,GO返利等栏目追加现在我们要对内建函数 append 的设计进行补充说明。append 函数的签名不同于前面我们自定义的 Append 函数。大致来说,它就像这样:func append(slice []T, elements ...T) []T其中的 T 为任意给定类型的占位符.

2021-07-29 11:19:24 289

转载 高效GO语言编程(7)——打印

Go采用的格式化打印风格和C的 printf 族类似,但却更加丰富而通用。 这些函数位于 fmt 包中,且函数名首字母均为大写:如 fmt.Printf、fmt.Fprintf,fmt.Sprintf 等。 字符串函数(Sprintf 等)会返回一个字符串,而非填充给定的缓冲区。你无需提供一个格式字符串。每个 Printf、Fprintf 和 Sprintf 都分别对应另外的函数,如 Print 与 Println。 这些函数并不接受格式字符串,而是为每个实参生成一种默认格式。Println 系列的函数还

2021-07-28 09:25:39 2112

转载 高效GO语言编程(7)——映射

映射是方便而强大的内建数据结构,它可以关联不同类型的值。其键可以是任何相等性操作符支持的类型, 如整数、浮点数、复数、字符串、指针、接口(只要其动态类型支持相等性判断)、结构以及数组。 切片不能用作映射键,因为它们的相等性还未定义。与切片一样,映射也是引用类型。 若将映射传入函数中,并更改了该映射的内容,则此修改对调用者同样可见。映射可使用一般的复合字面语法进行构建,其键-值对使用冒号分隔,因此可在初始化时很容易地构建它们。var timeZone = map[string]int{ "UTC"

2021-07-23 09:33:18 171

转载 高效GO语言编程(7)——切片

切片切片通过对数组进行封装,为数据序列提供了更通用、强大而方便的接口。 除了矩阵变换这类需要明确维度的情况外,Go中的大部分数组编程都是通过切片来完成的。切片保存了对底层数组的引用,若你将某个切片赋予另一个切片,它们会引用同一个数组。 若某个函数将一个切片作为参数传入,则它对该切片元素的修改对调用者而言同样可见, 这可以理解为传递了底层数组的指针。因此,Read 函数可接受一个切片实参 而非一个指针和一个计数;切片的长度决定了可读取数据的上限。以下为 os 包中 File 类型的 Read 方法签名:

2021-07-22 22:16:09 204

转载 高效GO语言编程(7)——数据(上)

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,以开放GO内推,GO面试,GO宝典,GO返利等栏目标题使用new关键字分配内存Go提供了两种分配原语,即内建函数 new 和 make。 它们所做的事情不同,所应用的类型也不同。它们可能会引起混淆,但规则却很简单。 让我们先来看看 new。这是个用来分配内存的内建函数, 但与其它语言中的同名函数不同,它不会初始化内存,只.

2021-07-22 14:45:44 122

转载 Golang面试经验

GOLANG ROADMAP社区注册邀请码:Gopher-1035-0722make 和 new 的区别? 宝典导航了解过golang的内存管理吗?宝典导航调用函数传入结构体时,应该传值还是指针?说出你的理由?宝典导航线程有几种模型?宝典导航Goroutine 的原理了解过吗,讲一下实现和优势? 宝典导航Goroutine 什么时候会发生阻塞?PMG模型中Goroutine有哪几种状态?他的线程有哪几种状态?宝典导航每个线程/协程占用多少内存知道吗?如果Goroutine一直占用资源怎么

2021-07-19 20:39:05 732

转载 高效GO语言编程(6)——函数

欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722多返回值Go与众不同的特性之一就是函数和方法可返回多个值。这种形式可以改善C中一些笨拙的习惯: 将错误值返回(例如用 -1 表示 EOF)和修改通过地址传入的实参。在C中,写入操作发生的错误会用一个负数标记,而错误码会隐藏在某个不确定的位置。 而在Go中,Write 会返回写入的字节数以及一个错误: “是的,您写入了一些.

2021-07-18 12:45:41 115

原创 区块链入门资料推荐-总结一下自己的学习心得

区块链入门资料推荐

2021-06-26 12:01:45 4303 7

转载 高效GO语言编程(5)——控制结构

Go中的结构控制与C有许多相似之处,但其不同之处才是独到之处。 Go不再使用 do 或 while 循环,只有一个更通用的 for;switch 要更灵活一点;if 和 switch 像 for一样可接受可选的初始化语句; 此外,还有一个包含类型选择和多路通信复用器的新控制结构:select。 其语法也有些许不同:没有圆括号,而其主体必须始终使用大括号括住。If在Go中,一个简单的 if 语句看起来像这样:if x > 0 { return y}强制的大括号促使你将简单的 if.

2021-06-25 17:30:23 158

转载 高效GO语言编程(4)——分号

和C一样,Go的正式语法使用分号来结束语句;和C不同的是,这些分号并不在源码中出现。 取而代之,词法分析器会使用一条简单的规则来自动插入分号,因此源码中基本就不用分号了。规则是这样的:若在新行前的最后一个标记为标识符(包括 int 和 float64 这类的单词)、数值或字符串常量之类的基本字面或以下标记之一break continue fallthrough return ++ -- ) }则词法分析将始终在该标记后面插入分号。这点可以概括为: “如果新行前的标记为语句的末尾,则插入分号”。分号

2021-06-25 09:00:44 754

转载 高效GO语言编程(3)——命名规范

正如命名在其它语言中的地位,它在 Go 中同样重要。有时它们甚至会影响语义: 例如,某个名称在包外是否可见,就取决于其首个字符是否为大写字母。 因此有必要花点时间来讨论Go程序中的命名约定。包名当一个包被导入后,包名就会成了内容的访问器。在以下代码import "bytes"之后,被导入的包就能通过 bytes.Buffer 来引用了。 若所有人都以相同的名称来引用其内容将大有裨益, 这也就意味着包应当有个恰当的名称:其名称应该简洁明了而易于理解。按照惯例, 包应当以小写的单个单词来命名.

2021-06-23 21:01:51 334 1

转载 高效GO语言编程-代码注释

更多免费Golang知识,欢迎加入Go宝典 | GOLANG ROADMAP邀请码:Gopher-1035-0722Go 语言支持C风格的块注释 /* */ 和C++风格的行注释 //。 行注释更为常用,而块注释则主要用作包的注释,当然也可在禁用一大段代码时使用。godoc 既是一个程序,又是一个 Web 服务器,它对 Go 的源码进行处理,并提取包中的文档内容。 出现在顶级声明之前,且与该声明之间没有空行的注释,将与该声明一起被提取出来,作为该条目的说明文档。 这些注释的类型和风格决定了 godoc

2021-06-22 16:23:40 417

转载 高效Golang编程-格式化

格式化问题总是充满了争议,但却始终没有形成统一的定论。虽说人们可以适应不同的编码风格, 但抛弃这种适应过程岂不更好?若所有人都遵循相同的编码风格,在这类问题上浪费的时间将会更少。 问题就在于如何实现这种设想,而无需冗长的语言风格规范。在Go中我们另辟蹊径,让机器来处理大部分的格式化问题。gofmt 程序(也可用 go fmt,它以包为处理对象而非源文件)将Go程序按照标准风格缩进、 对齐,保留注释并在需要时重新格式化。若你想知道如何处理一些新的代码布局,请尝试运行 gofmt;若结果仍不尽人意,请重新组织

2021-06-22 16:09:24 592

原创 GO语言优势

1、学习曲线容易Go语言语法简单,包含了类C语法。因为Go语言容易学习,所以一个普通的大学生花几个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。Go 语言的语法特性简直是太简单了,简单到你几乎玩不出什么花招,直来直去的,学习曲线很低,上手非常快。2、效率:快速的编译时间,开发效率和运行效率高开发过程中相较于 Java 和 C++呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势。Go拥有接近C的运行效率和接近PHP的开发效率。C 语言的理念是

2021-06-20 10:34:37 857

原创 GO开发者成长路线,挺全面的,想学GO的可以按着这个路线来

偶然看见一个新建的GO开发者社团,内容还挺丰富的,GO开发者成长路线,挺全面的,想学GO的可以按着这个路线来,这个图里面的框都是可以点进去看具体内容的GOLANG ROADMAP 现在只能邀请注册,给大家发个码Gopher-1035-0722https://www.golangroadmap.com/...

2021-06-18 21:43:09 146

原创 给大家推荐个超棒的Golang开发者论坛

GOLANG ROADMAP : https://www.golangroadmap.com/现在只能邀请注册,我的邀请码Gopher-1035-0722,大家赶紧的呀,里面内容真的超棒!

2021-06-04 10:24:16 727

原创 数据挖掘笔记(三)

数据挖掘-聚类聚类是一种将一组观察值划分为不同子集且子集中的元素都有相似特征的方法。与分类不同的是聚类是一种无监督的方法。距离指标(Distance Metrics)欧氏距离(Euclidean Distance)几何距离曼哈顿距离(Manhattan Distance)绝对轴距总和马氏距离(Mahalanobis Distance)可以看作是欧氏距离的一种修正,修正了欧式距离中各个维度尺度不一致且相关的问题算法K-Means(K均值)Sequential Leader(序列数据)Affi

2021-02-15 17:30:38 273

原创 机器学习笔记(一)

模型选择与评估-一种训练集一种算法-评估方法泛化能力即模型对没有见过的数据的预测能力trainning set训练集 testing set测试集 validation set验证集测试集的保留方法留出法将数据集很简单的三七分或二八分,但是要注意训练集与测试集同分布,或者进行多次随机划分,训练出多个模型,最后取平均值交叉验证法k折交叉验证,将数据等分成几份,随机选择一份作为测试集,剩下的作为训练集,将测试结果取平均。缺点数据量较大时,对算力要求较高。自助法(bootstrapping),有放

2021-02-15 17:27:38 181

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除