- 博客(11)
- 资源 (12)
- 收藏
- 关注
原创 Go语言之unsafe
很多同学可能很奇怪,Go不是有指针类型了吗?为啥还需要这样一个unsafe的包呢,关键这个包的名字还是这么的让人不放心,叫做不安全包?而这个包又能够做什么呢,可以帮助我们解决那些问题呢?...
2019-12-31 14:43:22 222
原创 Go语言之Cond
Golang的sync包中的Cond实现了一种条件变量,主要用来解决多个读协程等待共享资源变成ready的场景。在使用Cond的时候,需要特别注意下:每个Cond都会关联一个Lock(*sync.Mutex or *sync.RWMutex),当修改条件或者调用Wait方法时,必须加锁,保护condition。1. Cond的介绍:定义如下所示:Cond相关API介绍, Co...
2019-12-25 12:30:00 626
原创 Go语言之Once
sync.Once是sync包中的一个对象,它只有一个方法Do,这个方法很特殊,在程序运行过程中,无论被多少次调用,只会执行一次。1.适用场景:在一个进程之中,如果一个函数里面的一部分代码,希望在很多协程都执行的时候,只被执行一次,那么Once便起到了作用。例如:初始化进程中的共享内存,它只希望被该进程初始化一次,其他协程不需要初始化操作。例子:结果分析:从上面的输出结果...
2019-12-23 14:19:25 968
原创 Go语言之RWMutex
本篇文章,笔者主要来介绍读写锁的一种Go语言的实现方式RWMutex。1.基本概念读写锁:是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁。读操作可并发重入,写操作是互斥的。主要适用的场景是:读多写少的业务场景。这种场景下如果每次读写都使用互斥锁那么整个效率就会变得很低。因为只是读的话并不需要互斥锁来锁住数据,只有写操作的时候需要互斥锁,而读写结合的时候,...
2019-12-21 08:00:00 379
原创 Go语言之mutex
写在前面的话:程序中的并发,是导致临界区竞争的根本原因,而解决这个问题的最常用办法就是锁机制,而mutex是Go语言之中最基本的一种锁机制。这篇文章,笔者主要来介绍下Go语言的这个锁机制mutex,在开始之前,我们需要先介绍下几个概念。1. 基本概念临界区(Critical Section):当程序并发地运行时,多个Go协程不应该同时访问那些修改共享资源的代码,这些修改共享资源的代...
2019-12-20 06:27:50 1041
原创 Go语言之panic和recover
写在前面的话:panic是Go语言中,用于终止程序的一种函数,往往用在下面两种情况:1)程序出现了很大的故障,例如不能在提供服务了。2)程序在运行阶段碰到了内存异常的操作,例如空指针的取值,改写只读内存等。对于panic来说,1)场景往往是主动调用;2)场景则是被动调用,panic一旦产生之后,会将堆栈里面的数据dump出来,这样就方便了开发人员来定位问题。recover是用来截获p...
2019-12-19 13:06:26 3811 1
原创 Go语言之error
写在前面的话:Go语言提供了一个error类型,专门用来表示程序出现异常的错误信息。但是有时候,error本身提供的这些错误信息不能完全满足我们的要求,这种情况下我们就需要自己去改造error,来实现自己希望的error格式以及内容。下面笔者主要来讲下这件事情,不过在讲这之前,我们先看下error的定义吧。1. error介绍error其实就是实现了Error()函数的一个接口,...
2019-12-18 19:45:45 557
原创 Go语言之装饰器,一种很骚的函数操作方法
Go的装饰器本质上允许您包装现有功能,并添加你自己的自定义功能,它操作的对象是函数,返回的对象也是函数。1.简单的一个装饰器例子:结果分析:从输出的结果能够看出,调用了装饰器之后,函数testFunc已经实现了,“自己的代码 + 原来代码”的效果。2.如果我们希望装饰器装饰的函数类型不是固定的呢,也就是说我们希望装饰器装饰的函数可以是任何函数,这样我们该怎么办?答案:采用空in...
2019-12-12 18:51:09 545
原创 Go语言之反射
笔者原本是C++开发人员,之前对于反射没太大概念,学了GO之后,才开始接触,在研究了一段时间之后,有了些认识,便整理一个帖子,希望对大家有所帮助。在学习反射的时候,笔者一直在问自己,反射是什么?为什么要用到反射?它是怎么实现的?笔者觉得,在知道这些问题的答案之后,才算是真正了解反射。下面笔者便从这些问题来着手整理反射。一、反射是什么?维基百科上的定义:在计算机科学中,反射是指计...
2019-12-11 13:22:26 451
转载 Go语言目录
一、Go语言之语言结构二、Go语言之变量三、Go语言之常量四、Go语言之指针五、Go语言之延迟调用函数defer六、Go语言之匿名函数和C++的lambda表达式七、Go语言之类篇八、G...
2019-12-04 09:46:21 128
原创 Go语言之条件编译
背景介绍:我们在开发的过程中,特别是在重构的过程中,往往会存在新代码和老代码同时都在的情况。这种情况下,我们希望可以编译不同的版本,旧代码编译的版本用来做产品发布,没有改好的新代码用来做测试,等测试通过之后,再把旧代码移除。在C和C++中,我们可以很轻松的完成这件事情,那就是使用“预编译宏”#ifndef XXX #define XXXX #endif,但是Go语言中,我们该如何操作呢...
2019-12-03 09:48:07 726
vim用户手册
2013-03-20
笔试题集锦(C,C++)
2010-02-03
wxWidgets参考手册查询
2009-11-23
高质量C++(C) 编程指南
2009-08-16
五子棋程序(C++)
2009-08-14
WindowsAPIdq.chm(中文版)
2009-08-13
mysee客户端的配置文件
2009-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人