最近困扰我的一个问题
最近看了golang中的unsafe包,一直没有理解其中的unsafe.Pointer和uintptr有什么区别,请大神赐教...阅读全文
最近看了golang中的unsafe包,一直没有理解其中的unsafe.Pointer和uintptr有什么区别,请大神赐教...阅读全文
2019年年假放完回来,就着手跳槽的事情。对于我,一个普通二本,工作不到两年经验,二线互联网公司,刚投递简历的时候,碰壁不少。我相信很多不满公司现状的同学也是准备在一年中最旺盛的跳槽季做准备,鉴于我自己努力后,拿了几个offer(包括阿里与腾讯银行),分享一点心得。马爸爸说过,跳槽有两个原因,一是钱不到位,二是心伤了,而我,还要加一条,“未来的方向”。 本人是从事java技术岗,从近年来看,golang后来居上,已经开始动摇了java在后端的地位(当然我也遇到由于市场golang人才少和昂贵而转java技术栈的,如腾讯下某政务公司)。并不是说故步自封不学习新技术,而是在黄金跳槽季中,经验尚缺的我来不及学好另一门语言。对于“未来的方向”,我希望可以从事在金融领域上的开发,除了本身毕业于金融学院...阅读全文
与其说并发调度,不如说,这就是一场“配对”游戏。线程模型在细说 Go 的调度模型之前,先来说说一般意义的线程模型。线程模型一般分三种,由用户级线程和 OS 线程的不同对应关系决定的。N:1,即全部用户线程都映射到一个OS线程上,上下文切换成本最低,但无法利用多核资源;1:1 , 一个用户线程对应到一个 OS线程上, 能利用到多核资源,但是上下文切换成本较高,这也是 Java Hotspot VM 的默认实现;M:N,权衡上面两者方案,既能利用多核资源也能尽可能减少上下文切换成本,但是调度算法的实现成本偏高。为什么 Go Scheduler 需要实现 M:N 的方案?线程创建开销大。对于 OS 线程而言,其很多特性均是操作系统给予的,但对于 Go 程序而言,其中很多特性可能非必要的。这样一来,...阅读全文
golang的指针receiver和非指针receiver的区别? 最大的区别应该是指针传递的是对像的引用,这样在方法里操作的时候可以动态修改对像的属性值。 非指针传递的是对像的拷贝。 这个应该和PHP的引用的用法差不多。 package main import ( "fmt" ) type Person struct { Name string Age int } func (p *Person) SayHi1() { p.Name = "leon1" } func (p Person) SayHi2() { p.Name = "leon2" } func main() { p1 := &Person{Name: "test", Age: 10} fmt.Println("name1 : ...阅读全文
type Rectangle struct { length, width int } func (r Rectangle) Area_by_value() int { return r.length * r.width } func (r *Rectangle) Area_by_reference() int { return r.length * r.width ...阅读全文
上面有两个方法一个是带星号的User, 一个是不带的星号的User,但我始终搞不清,星号在这种情况下应用有什么区别...阅读全文
2种方式都可以正常运...阅读全文
难道io密集的时候不是等比例地占用cp...阅读全文
看了一下,发现好像就httptest下面的NewRequest方法多了这句话
```
req.RemoteAddr = "192.0.2.1:1234"
```
别的还有什么区别吗?
http的NewRequest方法地址:Golang/src/net/http/request.go,line765
httptest的NewRequest方法地址:/Golang/src/net/http/httptest/httptest.go,line4...阅读全文
type T interface{ A() B() } func (t *T)A() {} func (t T)B() {} 这里面的接受类型*T, T有什么区别,除了在字段被提升的时候,其它的时候有什么区别...阅读全文
和其他高级语言一样,golang 也支持面向对象编程,支持得比较简单,有些特性并不支持,但是够用了 接口 接口使用 interface 关键字声明,任何实现接口定义方法的类都可以实例化该接口,接口和实现类之间没有任何依赖,你可以实现一个新的类当做 Sayer 来使用,而不需要依赖 Sayer 接口,也可以为已有的类创建一个新的接口,而不需要修改任何已有的代码,和其他静态语言相比,这可以算是 golang 的特色了吧 type Sayer interface { Say(message string) SayHi() } 继承 继承使用组合的方式实现 type Animal struct { Name string } func (a *Animal) Say(message string) ...阅读全文
zerolog是一个高性能,支持日志等级,钩子的结构化日志库。log的Print()和Printf()方法默认输出到os.Stderr,默认日志等级为debug,用法和官方log库相同。 package main import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) func main(){ zerolog.TimeFieldFormat = zerolog.TimeFormatUnix log.Print("hello world") } {"level":"debug","time":1576398679,"message":"hello world"} 日志等级 zerolog有下面几种日志等级,调用zerolog...阅读全文
a.length=1 b.length=1 这有什么实际区别吗...阅读全文
它们最大的区别是new生成一个固定大小的内存块并返回一个指针指向它。make是生成一个可变大小的内存块,并返回一个它的引用。 指针与引用的区别见我的下一个主题...阅读全文
想问下大神,下面两种初始化变量有啥区别 第一种定义的时候直接初始化 var hooks []hookfunc = make([]hookfunc, 0) 第二种 放在init方法中进行初始化 var hooks []hookfunc func init(){ hooks = make([]hookfunc, 0) } 这两种初始化有啥区别呢...阅读全文
interface是什么 interface被称为接口,是一种类型,其本质是一组抽象方法的集合。凡是实现这些抽象方法的对象,都可以被称为“实现了这个接口”。其存在意义是为了规定对象的一组行为。 interface举例 package main import ( "fmt" ) type Singer interface { sing() } type Man struct { lyric string } type Bird struct { lyric string } func (m Man) sing() { fmt.Println(m.lyric) } func (b Bird) sing() { fmt.Println(b.lyric) } func main() { var in...阅读全文
在加密货币行业因为安全性使然,导致很多安全平台在设计系统的时候对安全措施的层层加密,把平台的安全性达到顶点。我觉得这对于项目方来说出发点是没有问题的,因为资产的安全关乎着每一位用户对平台的热衷性。但是随着币圈市场的发展,我们不难发现很多项目方在设计平台安全功能的时候,在安全方面做得成本过高且复杂,这样容易丢失一大部分新的用户,同时用户的再教育成本相对来说就会比较昂贵了。 那么我们在设计平台的时候,如何才能让用户快速、轻松地购买数字货币,并轻松的入场呢?首先我们先看一下什么样的平台更为人所用呢?从我的角度来看:一套简单、安全的平台只会使自己的加密货币市场更具吸引力,并为更多人所用。 这是为什么呢?因为目前的币圈市场除了早期进入币圈的用户,还有现在进入币圈已经有了自己热衷的平台的用户,剩下的就是...阅读全文
一个典型的类型系统包括: 基础类型: byte, int, bool, float等 复合类型:数组,结构体,指针 可以指向任意对象的类型(Any类型) 值语义和引用语义 面向对象,即所有具备面向对象特征的类型 接口 在GO语言中可以为任意类型(包括内置类型)添加相应的方法 上面的例子中我们定义了一个新类型 Integer ,Integer和int没有本质区别,只是为内置的int增加了一个方法Less(),可以让整型像一个普通的类一样使用了。 在GO语言中没有隐藏的this指针 1) 方法施加的目标显示传递,没有被隐藏起来 2) 方法施加的目标不需要非得是指针,也不用非得叫this GO语言和C语言一样,类型都是基于值传递的,要想改变变量的值,只能在函数中传递指针。 1. 类型系统 1.1....阅读全文
 这个提示的意思是双引号代表byte类型?  ...阅读全文
和其他高级语言一样,golang 也支持面向对象编程,支持得比较简单,有些特性并不支持,但是够用了 接口 接口使用 interface 关键字声明,任何实现接口定义方法的类都可以实例化该接口,接口和实现类之间没有任何依赖,你可以实现一个新的类当做 Sayer 来使用,而不需要依赖 Sayer 接口,也可以为已有的类创建一个新的接口,而不需要修改任何已有的代码,和其他静态语言相比,这可以算是 golang 的特色了吧 type Sayer interface { Say(message string) SayHi() } 继承 继承使用组合的方式实现 type Animal struct { Name string } func (a *Animal) Say(message string) ...阅读全文
strconv.Itoa(1) string(1)区别? 融云SDK创建token方法,rc.UserRegister的第一个参数要求是string类型的。user结构体ID是int类型的。所以我使用了string(id) 进行了转化,不过这样写SDK报错。后我尝试修改为strconv.Itoa(id) 就可以了。这有啥区别呢? https://blog.csdn.net/TCatTime/article/details/100192117 得出结论:int转string要用strconv.Ito...阅读全文
time包中包括两类时间:时间点(某一时刻)和时常(某一段时间) 1. 时间常量(时间格式化) const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 M...阅读全文
type ss struct{ data int } var a = new(ss) var b = &ss{...阅读全文
Go 语言并不是传统意义上的面向对象语言,但是实现很小的面向对象的机制。 匿名嵌入并不是继承,无法实现多态处理,虽然配合方法集,可用接口来实现一些类似操作,但是其本质是完全不同的。 type Animal struct { 声明Animal name string age int } type Cat struct { Animal 匿名字段 teeth string "牙" "牙" 不是注释,字段标签(tag)不是注释,是用来描述字段的元数据,是struct的一部分 leg int } type Animal struct { 声明Animal类 name string age int } type AnimalAction interface { 声明AnimalAction 接口类 e...阅读全文
和其他高级语言一样,golang 也支持面向对象编程,支持得比较简单,有些特性并不支持,但是够用了 接口 接口使用 interface 关键字声明,任何实现接口定义方法的类都可以实例化该接口,接口和实现类之间没有任何依赖,你可以实现一个新的类当做 Sayer 来使用,而不需要依赖 Sayer 接口,也可以为已有的类创建一个新的接口,而不需要修改任何已有的代码,和其他静态语言相比,这可以算是 golang 的特色了吧 type Sayer interface { Say(message string) SayHi() } 继承 继承使用组合的方式实现 type Animal struct { Name string } func (a *Animal) Say(message string) ...阅读全文