摘要:
我们已经知道 C#当中 存在async/await 、BackGroudWorker类以及TPL(任务并行库)。当然C#还有一些旧的模式来支持异步编程。参考《C#图解教程》 1. BeginInovke和EndInvoke简单介绍 如上代码,定义了一个委托 MyDel ,并且在调用的时候把Sum方法 阅读全文
摘要:
最近在写程序的时候,经常遇到大量需要异步访问的情况,但是对于async和await到底怎么写,还不是非常明确。于是参考《C#图解教程》了异步编程一节。 1.普通的程序怎么写? 结果: 从运行结果可以看到,同步执行的时间主要花在了两次请求外部地址上,计算长度并不费时,用图来表示就像下面 2.使用asy 阅读全文
摘要:
举个例子:我有如下的一个需求,当我想要取得用户信息的时候,会先从本地缓存中查找,找不到然后从分布式缓存中查找,最后找不到再从数据库中查询。但是有些场景我又不需要查询数据库。 所以我想建立如下这种模型。 但是每次调用者都去构建一个List,比较麻烦,此时我们可以使用枚举中的Flags特性,修改程序如下 阅读全文
摘要:
在C#或者Java里面我们都知道,一个Class是要包含成员变量和方法的,对于GO语言的Struct也一样,我们也可以给Struct定义一系列方法。 一、怎么定义一个方法? Go的方法是在函数前面加上一个接收者,这样编译器就知道这个方法属于哪个类型了。例如: 上面的代码就是定义了一个Student的 阅读全文
摘要:
一、Go语言中没有像C#、Java一样的Class,只有Struct这样的结构体。Go语言使用type关键字来定义一个类型。 如下: 二、Struct的声明以及初始化 初始化方法一:直接定义,通过变量名.成员名的方式赋值 初始化方法二:直接通过{}进行初始化,这点和C#不一样,C#初始化的时候一般用 阅读全文
摘要:
问题一、Go使用Package组织源码的好处是什么? 1.任何源码属于一个包 2.用包组织便于代码的易读和复用 问题二、Go语言中Package的种类 Go语言中存在两种包、一种是可执行程序的包、一种是类库函数的包。 可执行程序的包,编译完成后会生成一个可执行文件、静态库的包编译之后会生成一个.a为 阅读全文
摘要:
一、背景介绍 项目中需要开发一个通过微信红包提现的功能,调查一下,目前已经简单实现了功能。现在总结一下开发过程中遇到的一些问题。 红包提现有两种场景: 场景一:使用微信的【现金红包】功能 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon 阅读全文
摘要:
相同点: make和new都是用来创建分配类型内存的。 不同点: 先看下面的代码 编译过程会出错 我们的想法是把 10 赋值 i指向的地址,但是这里由于 *i 没有初始化,所以并不知道 *i的地址是什么,如果直接 *i的赋值为10,那么肯定是不行的(10这个地址没有) 所以要想使用 *i,需要把 x 阅读全文
摘要:
1.切片是基于数组做的一层封装,灵活能够自动扩容。 2.切片的初始化方法 ①直接创建 ②基于已有的数组或切片 ③使用make来创建一个切片 第一个5是切片的大小 第二个5是切片的容量 3.基本操作 ①获取元素 ②增加元素append 当达到底层的最大容量,切片会进行扩容,扩容的策略是翻倍扩容。 下图 阅读全文
摘要:
数组是一个值类型 结果: 从上面结果可以看到,只用B的第二元素被修正了,这里说明A和B直接的拷贝是值拷贝,如果想要都修正,需要传地址,修改上面的赋值语句,为如下 所以在利用数组进行传参的时候,要注意一点传递的是数组的副本,并非本身,如果有需要修正数组内的值并影响原来的数组,就必须要传地址。 阅读全文