Go语言中文网 为您找到相关结果 27

go语言初始化内部结构体3中方式

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 type User struct { 8 Id int 9 Name string 10 Age int 11 } 12 13 type Manger struct { 14 User 15 title string 16 } 17 18 func main() { 19 m := Manger{User:User{1, "ok", 12}, title:"123"} //可以 20 m2 := Manger{User{1, "ok", 12}, "123"} //可以 21 m3 := Manger{User:User{Id:1, Name:"ok", Age:12}, title:"123"} //可...阅读全文

博文 2015-05-14 03:00:00 or2-

百度云主机的优势

在百度上搜索云主机,出现了大量的品牌名称,可谓百花齐放。但对不太懂服务器、建站的小白来说,要在茫茫的云主机海洋中选出一款适合自己的,实在是太困难了。在选择之前,大家不妨先做点功课,了解一下云主机的相关知识。 首先,什么是云主机呢?云主机又叫云虚拟主机,是在一个云服务器上划分出来的100M、200M等不同型号的小型空间,每个用户都有一个独立的IP,用来安放你做好的网站供用户访问,云主机比普通虚拟主机更稳定。 度娘上有包括阿里云、腾讯云、360云、百度云在内的数十种xx云主机,如果是完全没有经验的人进行选购,估计真的要选择困难了,因为这几个品牌,除开“云”字,看上去都挺靠谱的,质量自然不用担心了,效果怎么样呢? 众所周知,百度是目前中国使用率最高的搜索引擎,我们所做的一切关于...阅读全文

高效的多维空间点索引算法 — Geohash 和 Google S2

引子 每天我们晚上加班回家,可能都会用到滴滴或者共享单车。打开 app 会看到如下的界面: app 界面上会显示出自己附近一个范围内可用的出租车或者共享单车。假设地图上会显示以自己为圆心,5公里为半径,这个范围内的车。如何实现呢?最直观的想法就是去数据库里面查表,计算并查询车距离用户小于等于5公里的,筛选出来,把数据返回给客户端。 这种做法比较笨,一般也不会这么做。为什么呢?因为这种做法需要对整个表里面的每一项都计算一次相对距离。太耗时了。既然数据量太大,我们就需要分而治之。那么就会想到把地图分块。这样即使每一块里面的每条数据都计算一次相对距离,也比之前全表都计算一次要快很多。 我们也都知道,现在用的比较多的数据库 MySQL、PostgreSQL 都原生支持 B+ 树。这种数据结构能高效的...阅读全文

博文 2018-03-09 18:04:19 一缕殇流化隐半边冰霜

自定义协议/解决tcp粘包问题(golang版本)

Tcp/Udp介绍 Tcp是字节流协议, 数据传输像流水一样没有边界, 那么对等方在一次数据读取后,无法分辨读取是一个消息还是多个,或者是不足一个, 那么对等方拿到"残缺"消息就不知道如何处理. Udp是基于消息的传输服务,每个消息就是一个报文,是有边界的,对等方每次接收都是一个完整的消息.这样就需要我们在应用层,自己来区分. 粘包是如何出现的? 用户进程write消息, 但内核缓存区不足以容乃这个完整的消息, 一个消息分多次发送出去, 接收的时候就可能一个消息分多次接收 Tcp的报文段有大小限制(MSS) IP层最大传输单元(MTU), 会对包进行分片, 其他, Tcp流量控制, 拥塞控制 一般有三种常见的方式 1. 定长消息 发送端和接收端约定消息长度, 缺点: 消息很短时, 效率很低,...阅读全文

博文 2018-11-17 14:34:43 weiwenwang

关于map的v值是结构体的一些疑问

看了针对下面的结构体,map 定义为 : likes := make(map[string] *Person) 那怎么给likes 添加元素呢。 尝试了诸如 likes["a"].Likes = append(likes["a"], code) 或者 likes["a"].Likes = append(likes["a"].Likes, code) 都不可以。 其中code 是一个 string类型的标亮 ```go type Person struct { Likes []string } ``...阅读全文

go语言结构体定义使用

package main import ( "fmt" "sync" ) type Info struct { info map[int]string mu sync.RWMutex } func main() { x := &Info{info: make(map[int]string)} x.Set(1, "golang") s := x.Get(1) fmt.Println(s) } func (s *Info) Get(i int) string { s.mu.RLock() info := s.info[i] s.mu.RUnlock() return info } func (s *Info) Set(i int, name string) bool { s.mu.Lock() ...阅读全文

博文 2015-06-17 23:07:18 fyxichen

自定义协议/解决tcp粘包问题(golang版本)

### Tcp/Udp介绍 Tcp是字节流协议, 数据传输像流水一样没有边界, 那么对等方在一次数据读取后,无法分辨读取是一个消息还是多个, 或者是不足一个, 那么对等方拿到"残缺"消息就不知道如何处理. Udp是基于消息的传输服务,每个消息就是一个报文,是有边界的,对等方每次接收都是一个完整的消息. 这样就需要我们在应用层, 自己来区分. ### 粘包是如何出现的? - 用户进程write消息, 但内核缓存区不足以容乃这个完整的消息, 一个消息分多次发送出去, 接收的时候就可能一个消息分多次接收 - Tcp的报文段有大小限制(MSS) - IP层最大传输单元(MTU), 会对包进行分片, - 其他, Tcp流量控制, 拥塞控制 一般有三种常见的方式 #### 1. 定长消息 发送端和接收端...阅读全文

博文 2018-11-19 10:46:14 weiwenwang

Go语言入门(一)——接口的实现

package main import ( "fmt" ) /*接口*/ type IFly interface { Fly() } /*Bird结构体*/ type Bird struct { } /*接口方法的实现*/ func (b *Bird) Fly() { fmt.Println("Bird can fly") } /*Duck结构体*/ type Duck struct { } /*接口方法的实现*/ func (d *Duck) Fly() { fmt.Println("Duck can not fly") } func main() { b := new(Bird) b.Fly() d := new(Duck) d.Fly() } $(function () { $('pr...阅读全文

博文 2016-02-16 10:00:01 jaykiller123

Ethereum学习笔记(一)

相关命令分析 eth.blockNumber 查看当前块高。 eth.getBlock() 根据高度查看块内容。 eth.syncing 获取同步状态,可以看到全网最新块高,提示用户同步进度。 区块分析 创世区块: { difficulty: 17179869184, extraData: "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", gasLimit: 5000, gasUsed: 0, hash: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", logsBloom: "0x0000000000000000...阅读全文

博文 2017-10-26 10:04:44 慢性咽炎患者

go语言有关结构体的问题

go语言中,对于结构体,如果结构成员一样,但名字不一样,也认为是不同的结构。 package main import "fmt" type person struct { name string age int } type person2 struct { name string age int } func main() { bb := make([]person, 1, 50) bb[0].name = "xiaym" bb[0].age = 35 //cc := bb[:] aa := make([]person2, 1, 50) aa = bb[:] // cannot use bb[:] (type []person) as type []person2 in assignmen...阅读全文

博文 2015-06-17 23:01:47 zistxym

Golang 处理TCP分包、合包——固定包头+包体方式

TCP分包、合包的场景 TCP通信是流式的,在发送一个大数据包时,可能会被拆分成多个数据包进行发送,同时,多次发送数据包,也可能会被底层合并成一个数据包进行发送。 分包:接收一个数据包,需要对数据包进行拆分; 合包:接收多个数据包,需要对数据包进行合并; 因此,TCP通信时需要设定通信协议来正确处理收到的数据,如我们常见的HTTP、FTP协议等。 固定包头+包体方式 在该协议下,一个数据包总是有一个定长的包头加一个包体构成,其中包头中会有一个字段说明包体或者整个包的长度。服务器收到数据后就可以按序解析出包头 > 包体/包长度 > 包体。 程序默认使用包头最后一个字节描述包体长度,下面来看看具体的代码实现: 启动服务程序,读取并打印接收的TCP数据 package main import ( ...阅读全文

博文 2019-12-11 12:32:40 match

如何使用ARMS配置tengine的日志监控

摘要: 业务实时监控服务 ARMS 很好的提供了这么一个入口,为公司提供了一个实时查询Tengine运行情况的解决方案。在未来,ARMS将很好的和ODPS为公司监控形成互补方案,tengine日志日后可同时投递到ARMS和MaxCompute中: ARMS响应第一时间的多维度报警; MaxCompute来做深层次分析,例如接口的请求数、响应时长等,并有针对性地进行调优。 来自 深圳市小亿网络有限公司 王昕岩 最近公司通过业务实时监控服务 ARMS 成功搭建了基于tengine的日志监控系统。这里简单分享一下使用ARMS用于监控tengine日志的经验。 公司发展至今,现阶段所有接口都使用阿里的tengine作为web容器,类似nginx,在日志中也记录了包括host, ur...阅读全文

golang调用c结构体时的字节对齐问题

c结构体按1字节对齐时, 结构体Fc_tgs_struct与Fc_tgs_struct_2的大小不一致,谁能解答一下 --------------------------------struct.h-------------------------------- #ifndef HEAD_STRUCT_C #define HEAD_STRUCT_C #include #define BYTE_PACK_ON #ifdef BYTE_PACK_ON #pragma pack(1) #endif struct Fc_tgs_struct { char cFlag; unsigned in...阅读全文

Go JSON 技巧

相对于很多的语言来说, Go 的 JSON 解析可谓简单至极. 问题 通常情况下, 我们在 Go 中经常这样进行 JSON 的解码: package main import "encoding/json" // jsonText comes from http://json.org/example.html var jsonText = []byte(` { "glossary":{ "title":"example glossary", "GlossDiv":{ "title":"S", "GlossList":{ "GlossEntry":{ "ID":"SGML", "SortAs":"SGML", "GlossTerm":"Standard Generalized Markup La...阅读全文

博文 2018-02-22 22:47:30 lingchao