Go Web编程get github.com/DisposaBoy/MarGo 这个时候我们会发现在$GOPATH/bin下面多了两个可执行文件,gocode和MarGo,这两个文件会在GoSublime 加载时自动启动。 3. 安装完之后就可以安装Sublime的插件了。需安装GoSublime、SidebarEnhancements和Go Build,安装插件之 后记得重启Sublime生效,Ctrl+Shift+p打开Package 易用、更高效、更轻便。 goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过go关键字实现了,其实就是一个普通的函数。 go hello(a, b, c) 通过关键字go就启动了一个goroutine。我们来看一个例子 package main import ( "fmt" "runtime" ) func say(s string) { for tornado,这个代码和他是不是很像,对,没错,go就是拥有类似 python这样动态语言的特性,写web应用很方便。 如果你以前是ruby程序员,会发现和ROR的/script/server启动有点类似。 我们看到Go通过简单的几行代码就已经运行起来一个web服务了,而且这个Web服务内部有支持高并发的特性,我将会 在接下来的两个小节里面详细的讲解一下go是如何实现Web高并发的。0 码力 | 295 页 | 5.91 MB | 1 年前3
Go性能优化概览-曹春晖的服务,还可以额外看看: • Goroutine 数,线程数 • 如果 Goroutine 数很多,那这些 Goroutine 在⼲什么? • GC 频率,gctrace 的内容(线上保存 gctrace 的话,注意硬盘类型),GC 的 stw 时间 • Memstats 中的其它指标: https://github.com/prometheus/client_golang/blob/b89620c4916 https://golearn.coding.net/p/gonggongbanji/files/all/DF47 CPU 使⽤太⾼了-GC 使⽤ CPU 过⾼ • 调⼤ GOGC • 程序启动阶段 make ⼀个全局的超⼤ slice(如 1GB) 这种⽅式只适合那些内存不紧张,且希望提⾼整体吞吐量的服务 内存占⽤过⾼-堆分配导致内存过⾼ 实例分析,TLS 的 write buffer0 码力 | 40 页 | 8.69 MB | 1 年前3
Go 入门指南(The way to Go)functionName() 你可以在括号 () 中写入 0 个或多个函数的参数(使用逗号 , 分隔),每个参数的名称后面必须紧跟着 该参数的类型。 main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函 数则会先执行该函数)。如果你的 main 包的源代码没有包含 main 函数,则会引发构建错误 undefined: main.main 。main func (t T) Method1() { //... } func Func1() { // exported function Func1 //... } Go 程序的执行(程序启动)顺序如下: 1. 按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程: 2. 如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。 3. 然后以相 中的字符串也可能根据需要占用 1 至 4 个字节 (示例见第 4.6 节),这与其它语言如 C++、Java 或者 Python 不同(Java 始终使用 2 个字节)。Go 这样做的好处是不仅减少了内存和硬盘空间占用,同时也不用像其它语言那样需要对使用 UTF-8 字符集的 文本进行编码和解码。 字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容;更深入地讲,字 符串是字节的定长数组。0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)13.2 运行时异常和 panic 13.3 从 panic 中恢复(Recover) 13.4 自定义包中的错误处理和 panicking 13.5 一种用闭包处理错误的模式 13.6 启动外部命令和程序 13.7 Go 中的单元测试和基准测试 13.8 测试的具体例子 13.9 用(测试数据)表驱动测试 13.10 性能调试:分析并优化 Go 程序 第 14 章 协程(go 你可以在括号 () 中写入 0 个或多个函数的参数(使用逗号 , 分隔),每个参数的名称后面必须紧跟着该 参数的类型。 main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会 先执行该函数)。如果你的 main 包的源代码没有包含 main 函数,则会引发构建错误 undefined: main.main 。 main //... 25. } 26. 27. func Func1() { // exported function Func1 28. //... 29. } Go 程序的执行(程序启动)顺序如下: 1. 按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程: 2. 如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。 3. 然后以相0 码力 | 466 页 | 4.44 MB | 1 年前3
Hello 算法 1.1.0 Go版响算法程序的整体性能。 4.4.1 计算机存储设备 计算机中包括三种类型的存储设备:硬盘(hard disk)、内存(random‑access memory, RAM)、缓存(cache memory)。表 4‑2 展示了它们在计算机系统中的不同角色和性能特点。 表 4‑2 计算机的存储设备 硬盘 内存 缓存 用途 长期存储数据,包括操作系统、 程序、文件等 临时存储当前运行的程序和正 临时存储当前运行的程序和正 在处理的数据 存储经常访问的数据和指令,减少 CPU 访问内存的次数 第 4 章 数组与链表 hello‑algo.com 85 硬盘 内存 缓存 易失 性 断电后数据不会丢失 断电后数据会丢失 断电后数据会丢失 容量 较大,TB 级别 较小,GB 级别 非常小,MB 级别 速度 较慢,几百到几千 MB/s 较快,几十 GB/s 非常快,几十到几百 GB/s 价格 较便宜,几毛到几元 所示的金字塔结构。越靠近金字塔顶端的存储设备的速度越快、容 量越小、成本越高。这种多层级的设计并非偶然,而是计算机科学家和工程师们经过深思熟虑的结果。 ‧ 硬盘难以被内存取代。首先,内存中的数据在断电后会丢失,因此它不适合长期存储数据;其次,内存 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版法程序的整体性能。 4.4.1 计算机存储设备 计算机中包括三种类型的存储设备:「硬盘 hard disk」、「内存 random‑access memory, RAM」、「缓存 cache memory」。表 4‑2 展示了它们在计算机系统中的不同角色和性能特点。 表 4‑2 计算机的存储设备 硬盘 内存 缓存 用途 长期存储数据,包括操作系统、 程序、文件等 临时存储当前运行的程序和正 临时存储当前运行的程序和正 在处理的数据 存储经常访问的数据和指令,减少 CPU 访问内存的次数 第 4 章 数组与链表 hello‑algo.com 85 硬盘 内存 缓存 易失 性 断电后数据不会丢失 断电后数据会丢失 断电后数据会丢失 容量 较大,TB 级别 较小,GB 级别 非常小,MB 级别 速度 较慢,几百到几千 MB/s 较快,几十 GB/s 非常快,几十到几百 GB/s 价格 较便宜,几毛到几元 所示的金字塔结构。越靠近金字塔顶端的存储设备的速度越快、容 量越小、成本越高。这种多层级的设计并非偶然,而是计算机科学家和工程师们经过深思熟虑的结果。 ‧ 硬盘难以被内存取代。首先,内存中的数据在断电后会丢失,因此它不适合长期存储数据;其次,内存 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU0 码力 | 382 页 | 17.60 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版响算法程序的整体性能。 4.4.1 计算机存储设备 计算机中包括三种类型的存储设备:硬盘(hard disk)、内存(random‑access memory, RAM)、缓存(cache memory)。表 4‑2 展示了它们在计算机系统中的不同角色和性能特点。 表 4‑2 计算机的存储设备 硬盘 内存 缓存 用途 长期存储数据,包括操作系统、 程序、文件等 临时存储当前运行的程序和正 临时存储当前运行的程序和正 在处理的数据 存储经常访问的数据和指令,减少 CPU 访问内存的次数 第 4 章 数组与链表 www.hello‑algo.com 85 硬盘 内存 缓存 易失 性 断电后数据不会丢失 断电后数据会丢失 断电后数据会丢失 容量 较大,TB 级别 较小,GB 级别 非常小,MB 级别 速度 较慢,几百到几千 MB/s 较快,几十 GB/s 非常快,几十到几百 GB/s 价格 所示的金字塔结构。越靠近金字塔顶端的存储设备的速度越快、容 量越小、成本越高。这种多层级的设计并非偶然,而是计算机科学家和工程师们经过深思熟虑的结果。 ‧ 硬盘难以被内存取代。首先,内存中的数据在断电后会丢失,因此它不适合长期存储数据;其次,内存 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU0 码力 | 384 页 | 18.49 MB | 10 月前3
Hello 算法 1.0.0b1 Golang版[5]float64{} var characters = [5]byte{} var booleans = [5]bool{} 3.1.2. 计算机内存 在计算机中,内存和硬盘是两种主要的存储硬件设备。「硬盘」主要用于长期存储数据,容量较大(通常可达 到 TB 级别)、速度较慢。「内存」用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 算法运行中,相关数据都被存储 离散内存空间 数据结构长度 长度不可变 长度可变 内存使用率 占用内存少、缓存局部性好 占用内存多 优势操作 随机访问 插入、删除 � 缓存局部性的简单解释 在计算机中,数据读写速度排序是“硬盘 < 内存 < CPU 缓存”。当我们访问数组元素时,计算 机不仅会加载它,还会缓存其周围的其它数据,从而借助高速缓存来提升后续操作的执行速度。 链表则不然,计算机只能挨个地缓存各个结点,这样的多次“搬运”降低了整体效率。0 码力 | 190 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Golang版[5]float64{} var characters = [5]byte{} var booleans = [5]bool{} 3.1.2. 计算机内存 在计算机中,内存和硬盘是两种主要的存储硬件设备。「硬盘」主要用于长期存储数据,容量较大(通常可达 到 TB 级别)、速度较慢。「内存」用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 算法运行中,相关数据都被存储 离散内存空间 数据结构长度 长度不可变 长度可变 内存使用率 占用内存少、缓存局部性好 占用内存多 优势操作 随机访问 插入、删除 � 缓存局部性的简单解释 在计算机中,数据读写速度排序是“硬盘 < 内存 < CPU 缓存”。当我们访问数组元素时,计算 机不仅会加载它,还会缓存其周围的其它数据,从而借助高速缓存来提升后续操作的执行速度。 链表则不然,计算机只能挨个地缓存各个结点,这样的多次“搬运”降低了整体效率。0 码力 | 202 页 | 15.73 MB | 1 年前3
Hello 算法 1.0.0b4 Golang版树形结构:树、堆、哈希表,元素存在一对多的关系。 ‧ 网状结构:图,元素存在多对多的关系。 3. 数据结构 hello‑algo.com 39 3.1.2. 物理结构:连续与离散 在计算机中,内存和硬盘是两种主要的存储硬件设备。硬盘主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。内存用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 在算法运行过程中,相关数据都存储在内存 访问元素 ?(1) ?(?) 添加元素 ?(?) ?(1) 删除元素 ?(?) ?(1) 4. 数组与链表 hello‑algo.com 67 � 缓存局部性 在计算机中,数据读写速度排序是“硬盘 < 内存 < CPU 缓存”。当我们访问数组元素时,计算 机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓存来提升后续操作的执行速 度。链表则不然,计算机只能挨个地缓存各个节点,这样的多次“搬运”降低了整体效率。0 码力 | 347 页 | 27.40 MB | 1 年前3
共 39 条
- 1
- 2
- 3
- 4













