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

Go语言实战笔记(二十五)| Go Struct Tag

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续笔记。觉得有帮助的话,顺手分享到朋友圈吧,感谢支持。 在上一篇介绍Go反射的时候,提到了如何通过反射获取Struct的Tag,这一篇文章主要就是介绍这个的使用和原理,在介绍之前我们先看一下JSON字符串和Struct类型相互转换的例子。 JSON字符串对象转换123456789101112131415func main() { var u User h:=`{"name":"张三","age":15}` err:=json.Unmarshal([]byte(h),&u) if err!=nil{ fmt.Println(err) }else { f...阅读全文

博文 2017-08-28 12:12:31 飞雪无情

听起来像“空气币”的【Skycoin】

文/韩大楠 写在前面我看了好些有关 Skycoin 的介绍,百度来百度去的,这个网站看看这个介绍,那个网站看看评论,我承认我有点墨迹了,毕竟这玩意儿涉及钱,我都 800% 谨慎,也更要理性占据感性的去研究各种币。我的「了解币」系列,除了 BTC、 FTN 、 KEY 、Ripple 、USDT ,这应该是我写币系列的第三篇。如下的内容,希望对你有用。初识 SkycoinSkycoin 这个币,我一看,哎妈呀,你是空气币么?好吧,其实它不是的。当时我还特意找胡同叔与区块链了解了这个币,他说是老币种了,技术和团队都经得起检验,业界比较认可,业经得起时间的检验的。我并没有急着去看其余的币,在此之前,我在在专注我的小白学习计划,现在写各种币,也不代表小白学习计划结束了,只是各个系列这这能在有条不紊的...阅读全文

博文 2019-11-11 02:33:00 更多精彩内容(记录)Skycoin生态详解 | Skycoin如何成为2019年最值得投资的区块链项目?钢铁肥蛋嘭嘭嘭关于Skycoin, 我所知道的50件事#skycoin钢铁肥蛋嘭嘭嘭#skycoin##比特币#浅谈比特币被其他数字货币替代的可能性(

golang学习笔记之-context详细理解篇

image.png context.Background():可以简单理解我们知道这个上下文要去干什么 context.TODO():可以简单理解我们不清楚要使用哪个上下文、或者还没有可用的上下文 下面代码演示: 1.context.WithCancel():返回Context和取消函数用来取消Context package main import ( "context" "log" "os" "time" ) var ( logg *log.Logger ) func work(ctx context.Context, ch chan bool) { for { select { case <-ctx.Done(): logg.Println(`下班!`) ch <- true retur...阅读全文

博文 2019-01-30 20:34:43 Maggie_up

Golang中一个不错的处理 JSON 的库 go-dproxy

图片来自:http://qiita.com/hogedigo/items/f914992baf7a2ed12b9c国庆七天,你是吃多了,还是睡多了?放假七天转眼即逝,接下来的七天可能你又觉得会很漫才。言归正传。Golang 虽然自己就带了 JSON (encoding/json) 处理的库,也有第三方的 simplejson(https://github.com/bitly/go-simplejson) 之类的库,但总是感觉不如Python这样的动态语言方便,在 Python 里,数组和字典的处理都很方便,和 JSON 互转也非常简单。encoding/json 最大的问题是不够灵活,需要预先定义很多的 struct 来进行编解码,这样对于处理结构不定的 JSON 文件非常不方便。这里介绍一...阅读全文

博文 2016-11-05 17:00:00 u012798391

Service Mesh 落地负责人亲述:蚂蚁金服双十一四大考题

2019 年的双十一是蚂蚁金服的重要时刻,大规模落地了 Service Mesh 并顺利保障双十一平稳渡过。我们第一时间与这次的落地负责人进行了交流。采访的开头:花肉:“这次大规模上了 Service Mesh ,双十一值班感觉是什么?”卓与:“Service Mesh 真的稳。” 图为卓与 TOP100 北京峰会分享现场图 落地负责人介绍Service Mesh 是蚂蚁金服下一代架构的核心,今年蚂蚁金服大规模的 Service Mesh 落地,我有幸带领并面对了这个挑战,并非常平稳的通过了双十一的大考。我个人主要专注在微服务领域,在服务注册与服务框架方向深耕多年,主导过第五代服务注册中心(SOFARegistry)设计与实施,在微服务的架构演进中持续探索新方向,并在蚂蚁金服第五代架构演进中...阅读全文

[golang] 数据结构-树形选择排序(锦标赛排序)

接上文 简单选择排序简单选择排序很容易理解,代码也很容易实现。但毕竟比较次数太多。树形选择排序则对这个问题进行了改进。 原理简单来说,树形选择排序(Tree selection sort)就是在选择完一轮找出最小值后,直接在与最小值比较中稍大的元素里筛选出最小的。这样避免了简单选择查询那种,抛弃了之前比较过的结果,每次都全部重新比较的情况。 流程举例 先列出所有待排序的元素如:8、4、12、7、35、9、22,并用他们组成满二叉树的叶子元素,不足的位置以∞作为补充。将元素两两相比较,分别得到较小值:4,7,9,22。再次两两比较,得到4,9。最终比较一次得到最小值4。由此构建出一个完整的满二叉树: 完成一轮比较后,将胜出者4的叶子节点改成∞,然后由它的兄弟节点8继续参加下一轮比较。从这次开始...阅读全文

博文 2018-07-15 12:36:10 NicoChen

golang实现局域网内简单文件服务

linux上没qq,手机和电脑之间传输文件就变得异常困难。要么从充电器插头上拔下数据线插到电脑上,手机开启usb文件传输功能,要么蓝牙传输,传输速度不是一般的慢,10M的图片一分钟才传完。懒得在网上找类似功能的软件就手写了一个。速度很快。 package main import ( "fmt" "net/http" "io/ioutil" "net" "os" ) func check(e error) { if e!=nil{ fmt.Println(e) } } func main() { fmt.Println("请访问下面的链接:") showip() http.HandleFunc("/", uploadFileHandler) http.Handle("/file/",http....阅读全文

博文 2018-11-03 20:34:39 Nuko

Go语言黑魔法中的问题修正

文: http://studygolang.com/articles/2909 文中大多技巧都是正确的,但是结构体和[]byte之间的转换: 第三式 - 结构体和[]byte互转 有一天,你想把一个简单的结构体转成二进制数据保存起来,这时候你想到了encoding/gob和encoding/json,做了一下性能测试,你想到效率有没有可能更高点? 于是你又试了encoding/binady,性能也还可以,但是你还不满意。但是瓶颈在哪里呢?你恍然大悟,最高效的办法就是完全不解析数据也不产生数据啊! 怎么做?是时候使用这个黑魔法了: type MyStruct struct { A int B int } var sizeOfMyStruct = int(unsafe.Sizeof(MyStru...阅读全文

博文 2016-03-13 01:00:04 InsZVA

这个程序有什么问题

![无标题2.png](https://static.studygolang.com/171201/82cd80f1c581c116d680709b9b1bca45.png) 执行结果: In f fatal error: all goroutines are asleep - deadlock! goroutine 1 [semacquire]: sync.runtime_Semacquire(0xc42000e23c) /home/zenglin/Downloads/go1.8/src/runtime/sema.go:47 +0x34 sync.(*WaitGroup).Wait(0xc42000e230) /home/zenglin/Downloads/go1....阅读全文

golang(Go语言) byte/[]byte 与 二进制形式字符串 互转

效果 把某个字节或字节数组转换成字符串01的形式,一个字节用8个"0"或"1"字符表示。比如: byte(3) --> “00000011” []byte{1,2,3} --> "[00000001 00000010 00000011]" "[00000011 10000000]" --> []byte{0x3, 0x80} 开源库 biu 实际上我已经将其封装到一个开源库了(biu),其中的一个功能就能达到上述效果: //byte/[]byte -> string bs := []byte{1, 2, 3} s := biu.BytesToBinaryString(bs) fmt.Println(s) //[00000001 00000010 00000011] fmt.Println(b...阅读全文

博文 2017-09-03 07:04:58 imroc

golang 学习笔记之字符串

golang 中字符串相关操作用得最多的基础库是 strings 和 strconv 1、strings.HasPrefix 判断字符串开头常见的场景是用来判断服务地址是HTTP还是HTTPS 协议,例如:func main() { str := "http://www.baidu.com" if ok := strings.HasPrefix(str,"http://");ok { fmt.Println("it's http protocol") }else{ fmt.Println("unknown") } }2、strings.HasSuffix 判断字符串后缀场景,用于判断文件类型,例如图片是否是png格式func main() { pic := "baidu.png" if ok...阅读全文

博文 2019-06-18 22:03:49 筑梦攻城狮

golang协程池tunny源码解析

tunny github地址:https://github.com/Jeffail/tunny 项目结构 tunny的项目结构非常简单,核心文件就是tunny.go与worker.go 整体分析 tunny主要是通过reqChan管道来联系pool与worker之间的关系,worker的数量与协程池的大小相等,在初始化协程池时决定;各个worker竞争地获取reqChan中的数据,然后处理,最后返回给pool; 代码详解 type Pool struct { queuedJobs int64 ctor func() Worker workers []*workerWrapper reqChan chan workRequest workerMut sync.Mutex } Pool结构体: ...阅读全文

博文 2020-01-25 19:32:38 byte

golang 方法

golang语言中的方法是与对象实例绑定的特殊函数,用于维护和展示对象的自身状态。与函数的区别是方法有前置实例接收参数(receiver),编译器根据receiver来判断该方法属于哪个实例。receiver可以是基础类型,也可以是指针类型,这会关系到是否需要有可以修改对象实例的能力。在调用方法时,可以使用对象实例值或指针,编译器会根据receiver类型自动在基础类型和指针类型之间转换,比如:type rect struct { width, height, area int } func (r *rect) pointer() { r.width += 2 r.area = r.width * r.height } func (r rect) value() { r.width += 4...阅读全文

博文 2017-02-10 11:12:09 100018

Python分支循环:if elif for while

Python中一个缩进代表一个层级,推荐4个空格 分支与循环 条件是分支与循环中最为核心的点,解决的问题场景是不同的问题有不同的处理逻辑。当满足单个或者多个条件或者不满足条件进入分支和循环,这里也就说明这个对相同问题处理执行逻辑依据具体参数动态变化,由此产生多种可能性,但要求其中一个可能性必须执行其他可能性不需要执行时候使用分支。 循环的核心是边界值,通过控制边界值控制循环的执行次数,循环体中逻辑是重复执行直至到达边界值,跳出循环。 在Python中分支和循环不能形成作用域,在其他如Golang语言中分支和循环会形成一个作用域。Python中没有 ++ -- 自增自减这个运算符,并且for循环是用来遍历可迭代数据。 分支与循环规范: 不推荐在分支和循环下写大量逻辑代码,封装成函数或者写少量几...阅读全文

博文 2020-03-26 17:33:10 我爱学python

slice类型和sliceheader类型不能互相显式转换吗?

第一种情况: ``` go sl:=[]int{1,2,3} psl:=reflect.SliceHeader(sl) fmt.Println(psl) ``` 报错:cannot convert expression of type []int to type SliceHeader 第二种情况: ``` go var psl []int sl:=[]int{1,2,3} psl=reflect.SliceHeader(sl) fmt.Println(psl) ``` 报错: cannot convert expression of type []int to type SliceHeader; cannot use reflect.SliceHead...阅读全文

无脑for在程序被终止的时候协程会终止吗

func main(){ go func(){ for{ time.Sleep(1 * time.Second) fmt.Println("something") } } //此处不让程序退出 for{ time.Sleep(1*time.Second) } }以上代码。运行起来后,如果直接kill进程将他杀掉的话,内存是怎么样的情况,是不是包括起的所有协程都会被终止,若是不会,是不是会造成内存泄漏?早上看了篇文章后还是不懂。请各位指教...阅读全文

博文 2019-01-02 13:55:11 UYAD

加解密学习笔记

加密技术包括两个元素:算法和密钥。 算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤。 密钥是用来对数据进行编码和解密的一种算法。 在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。 大纲介绍 常用的加密解密方法主要有以下加大类: 基本加密方法 对称加密方法 非对称加密方法 下面我们简单介绍一下这几种加密码方法 加密解密技术 我们先来了解一下加密解密的技术。 数据加密和数据解密是一对逆过程。 先来看加密解密的公式: 加密: img 数据加密是用加密算法E和加密密钥K1将明文P转换成密文C 用上面公式表示。 解密: img 数据解密是数据加密的逆过程, 解密算法D和解密密钥K2奖密文C转换成明文P。 通过下图我们可以清晰的看到,数据加密...阅读全文

博文 2019-03-05 18:34:40 赵客缦胡缨v吴钩霜雪明

Typescript --- 基础入门

Typescript 给 JavaScript 带来了强大的类型系统 类型语言: duck typing 所谓看起来像鸭子的就是鸭子类型;比如: 当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子 package main import ( "fmt" ) type ISayHello interface { SayHello() } type Person struct {} func (person Person) SayHello() { fmt.Printf("Hello!") } type Duck struct {} func (duck Duck) SayHello() { fmt.Printf("ga ga ga!") } func gree...阅读全文

博文 2019-04-19 11:34:44 Joah_l

leetcode刷题笔记(Golang)--5. Longest Palindromic Substring

题链接5. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example 2: Input: "cbbd" Output: "bb" 解题思路:基本就是无脑的”马拉车“算法(Manacher),其中的字符串处理部分用到了链接的现有函数 func longestPalindrome(s string) ...阅读全文

博文 2020-02-06 20:32:41 煮酒_zzh

无标题文章

package mainimport ("fmt" _"github.com/go-sql-driver/mysql""google.golang.org/grpc" pb"jiuye.com/dto" server"jiuye.com/server""log""net")const (port= ":50051")func main() {lis, err:= net.Listen("tcp", port)if err!= nil {log.Fatalf("failed to listen: %v", err)}s:= grpc.NewServer()pb.RegisterGreeterServer(s, &server.UserServer{})if err:= s.Serve(lis)...阅读全文

博文 2019-08-23 23:32:55 大梨子_d5bf