还是无聊的人~
码龄6年
关注
提问 私信
  • 博客:5,394
    5,394
    总访问量
  • 10
    原创
  • 583,981
    排名
  • 1
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2019-02-20
博客简介:

gugugu_kjy的博客

查看详细资料
个人成就
  • 获得1次点赞
  • 内容获得0次评论
  • 获得1次收藏
创作历程
  • 10篇
    2019年
TA的专栏
  • golang十大经典算法
    5篇
  • golang协程并发同步
    4篇
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

golang协程并发同步-条件变量

条件变量:到一定条件或事件再处理数据用于很典型的生成-消费模型func main(){ proch := make(chan bool,1) conch := make(chan bool,1) wg := sync.WaitGroup{} wg.Add(2) go consume(conch,proch,&wg) go producer(proch,conch,&...
原创
发布博客 2019.07.20 ·
739 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang协程并发同步-信号量

只允许1个进入临界区的是互斥, 允许多个进入临界区的是信号量.func toilet(i int,ch chan int,wg *sync.WaitGroup){ fmt.Println(i,"进入厕所") rand.Seed(int64(i)) t := rand.Intn(10) time.Sleep(time.Duration(t)*time.Second)//随机时间 fmt....
原创
发布博客 2019.07.20 ·
692 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang协程并发同步-死锁问题

死锁产生条件:互斥,占有并等待,不可抢占,循环等待type Account struct { Id string Balance float64 lock sync.Mutex}func (a *Account) deposit(amount float64){ a.Balance += amount}func (a *Account) withdrew(amount floa...
原创
发布博客 2019.07.20 ·
1207 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

golang协程并发同步-互斥锁

func main() { num := 0 lock := sync.Mutex{} wg :=sync.WaitGroup{} wg.Add(2) go add(&num,&lock,&wg)//需要传入同一个锁 go reduce(&num,&lock,&wg) wg.Wait()//等待协程完成 fmt.Println(num...
原创
发布博客 2019.07.20 ·
976 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

golang实现十大经典算法:选择排序

选择排序要点:每次都选出最大的,放到位置上选择排序:时间较长,不稳定func selectSort(a[]int ,n int){ for i:=n;i>=0;i--{ max := i for j:=0;j<i;j++{ if a[j]>a[max]{ max = j } } a[max],a[i]=a[i],a[max] }}...
原创
发布博客 2019.07.02 ·
311 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang实现十大经典算法:冒泡排序

冒泡排序要点:两两比较,每次都浮出最大的那个冒泡排序优点:稳定,不需要额外空间,时间较长func bubSort(a[]int,n int){ for i:=n;i>0;i--{//总共浮出来的个数 for j:=0;j<i-1;j++{ if a[j]>a[j+1]{ a[j],a[j+1]= a[j+1],a[j] } } }}...
原创
发布博客 2019.07.02 ·
165 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang实现十大经典算法:堆排序

堆排序要点是运用堆的特点:最大堆前一半都是父节点堆排序的优点:已有最大堆,排序会快func main(){ a := []int{0,1,2,4,5,6,7,8,9,10}//注意0是开头,必定存在 heapSort(a,len(a)-1)}func shiftDown(a[]int,n int,i int){//下沉 for i*2<=n{ i = i*2 if i+...
原创
发布博客 2019.07.02 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang实现十大经典算法:归并排序

归并排序要点,不断二分并排序,直到最后两个大的有序合并归并排序优点:时间复杂度:log(n),有序归并排序缺点:需要大量空间func merge(a[]int,b[]int)[]int{ l := []int{} for len(a)>0&&len(b)>0{ if a[0]<b[0]{ l = append(l,a[0]) a = ap...
原创
发布博客 2019.07.01 ·
266 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang实现十大经典算法:插入排序

插入排序的要点是找一个合理的位置插进入插入排序优点:原数组有序会非常快,稳定golang数组没有插入的操作,所以得自己实现 a := []int{1,3,4,52,2,5,7,3,7,9} for i:=1;i<len(a);i++{ todo := true for j:=i-1;j>=0;j--{ if a[j]<a[i]{ todo = fal...
原创
发布博客 2019.07.01 ·
199 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang实现十大经典算法:快速排序

快速排序中心点就是定义一个pivot,将小于piovt的放左边,大于pivot放右边,再不断循环这过程直到有序golang代码实现func main(){ l := []int{0,0,0,14124,124124,1} quicksort(l,0,len(l)-1)}func partion(a []int,start int ,end int) int { pivot,i,j :...
原创
发布博客 2019.07.01 ·
520 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏