
Golang
alvin_666
golang
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Golang的并发与goroutine
1、并发的含义并发与并行的区别:并发:逻辑上具备同时处理多任务的能力(由程序的逻辑实现决定)并行:物理上在同一时刻执行多个并发任务(由的处理器核数决定)实际的单核处理器在处理任务的时候基本都是以间隔方式切换执行(时间片调度),并行是并发程序在设计的理想执行模式。任务可以并行执行其中多线程和多进程是基本条件。然而在单线程中引入了一个比线程还轻量级的运行单元,协程(coroutine)实...原创 2019-04-07 13:39:13 · 474 阅读 · 0 评论 -
golang中interface 接口
Golang中的接口:代表一种调用契约,是多个方法声明的集合接口类似于C++中的纯虚函数,只需要关注的是做什么,而不去关注具体怎么做由谁来做(一种面向对象的思想)。接口相比于C++中的纯虚函数更加灵活,只需要实现接口的全部方法就可以进行使用了。接口的优点:解除类型依赖屏蔽内部结构和实现细节有助于程序的扩展使用接口的注意:由于接口的内部实现机制会有运行期开销对于相同的包,或不频繁变化...原创 2018-12-02 18:04:43 · 200 阅读 · 0 评论 -
Go语言并发之道学习-----基本概念
并发概述并发:通常指的是一个或多个进程同时发生的过程1、竞争条件:当两个或多个操作必须按正确的顺序执行,而程序并未保证顺序var data intgo func(){ data++}()if data == 0{ fmt.Printf("The data:%d\n",data)}这段代码可能会有三种情况不打印打印 The data:0打印 The data:1因此代...原创 2019-05-26 12:58:03 · 601 阅读 · 0 评论 -
Go语言并发之道学习-----死锁,活锁和饥饿
死锁和活锁死锁:会使得所有并发程序在等待,如果没有外界干预,程序不能恢复type values struct{ mu sync.Mutex value int}func TestMutes(v1, v2 *values){ defer wg.Done() v1.mu.Lock() defer v1.mu.Unlock() time.Sleep(2*time.Second) v...原创 2019-05-26 12:59:10 · 946 阅读 · 0 评论 -
Golang源码学习----string包
String包在go中的字符串是不可变字节序列,默认是UTF-8编码存储Unicode字符1、分割字符串函数主要有:SplitN:按指定的字符,将字符串分割,返回指定切片长度Split:按指定的字符,将字符串分割SplitAfterN:按指定字符分割,但是包含字符,返回指定切片长度SplitAfter :按指定字符分割,但是包含字符Fields:用于分割字符串,不包括空格(跳过所...原创 2019-06-23 14:41:00 · 887 阅读 · 0 评论 -
Go语言并发组件
Go中的并发组件1、GoroutineGoroutine: go语言程序中最基本的组织单位之一,每个Go程序中至少会有一个main goroutine,在进程开始时自动创建并启动。是一个并发函数,在程序中使用go关键字进行触发gorountine如何工作?A、goroutine与Go语言在运行时是深度集成的B、goroutine没有定义自己的暂停方法或再运行点C、Go语言再运行时会观察...原创 2019-06-27 19:05:04 · 406 阅读 · 0 评论 -
Golang的内存管理--学习笔记
Go的内存管理内存的分级arena区SpansGo中的mspan内存管理组件mcachemcentralmheap内存的分配流程内存的分级使用的是多级分配的办法,将内存分为多级,进行分级管理,从而降低锁的粒度。并且将可用的堆内存采用二级管理,其中每个线程会有一个自己的内存池,只有在自己的内存池不够时才会去全局内存中获取,够用时首先使用自己的内存池。基本概念arena区arena是堆区(...原创 2019-09-08 16:36:42 · 674 阅读 · 0 评论 -
算法实现----二分查找go语言实现
二分查找二分查找:时间复杂度O(log n),有序的情况下go语言实现:func erFen(nums []int, key, n int) int { var low, high, mid = 0, n, 0 for { mid = (high + low) / 2 if key < nums[mid] { high = mid - 1 } else if ke...原创 2019-09-08 16:38:07 · 373 阅读 · 0 评论 -
Go语言的并发模式
Go语言的并发模式1、约束保证操作安全的方法:用于共享内存的同步原语 (锁,sync.Mutex)通过通信共享内存来进行同步(channel)隐式并发安全: 不会发生改变的数据和受保护的数据在并发编程中,不可变数据是理想的,它隐式的并行安全。并发进程之间可以对相同的数据操作,但是不能修改,如果创建新数据,就需要创建所需修改的数据的新副本,可以提高开发效率和程序运行速度,使得程序临界...原创 2019-09-22 21:03:50 · 464 阅读 · 0 评论