-
golang通过反射使用json字符串调用struct的指定方法及返回json结
所属栏目:[大数据] 日期:2020-12-16 热度:54
起因 通过反射获取struct指定的方法 通过json字符串调用 适当的完善 起因 在很多场合会存在这样一个需求或者想法:提交一个类似这样的json { " func_name ": "FooBarAdd" ," params ": [ 123.4 , 432.1 ] } 然后得到一个这样的json { " func_name ": "FooBar[详细]
-
golang中tcp socket粘包问题和处理
所属栏目:[大数据] 日期:2020-12-16 热度:95
在用golang开发人工客服系统的时候碰到了粘包问题,那么什么是粘包呢?例如我们和客户端约定数据交互格式是一个json格式的字符串: {"Id":1,"Name":"golang","Message":"message"} 当客户端发送数据给服务端的时候,如果服务端没有及时接收,客户端又发送了[详细]
-
Go语言TCP Socket编程
所属栏目:[大数据] 日期:2020-12-16 热度:129
Go语言TCP Socket编程 Golang的 主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的[详细]
-
tbox协程使用之切换与等待
所属栏目:[大数据] 日期:2020-12-16 热度:85
tbox的协程实现,是stackfull模式的,需要指定独立堆栈和协程函数,目前暂时还不能像golang那样实现堆栈的动态增长,之后会对其进行支持。 目前提供下面一些功能特性: 1. 提供yield切换调度支持,这个是必须的哈2. 提供suspend(挂起)/resume(恢复)协程接口[详细]
-
golang 使用时间通过md5生成token
所属栏目:[大数据] 日期:2020-12-16 热度:195
packagemain import( "crypto/md5" "fmt" "io" "strconv" "time" ) funcmain(){ crutime:=time.Now().Unix() fmt.Println("crutime--",crutime) h:=md5.New() fmt.Println("h--",h) fmt.Println("strconv.FormatInt(crutime,10)--",strconv.FormatInt(crutim[详细]
-
Golang与C#之switch区别
所属栏目:[大数据] 日期:2020-12-16 热度:63
Golang与C#之switch区别 Go 是Google开发的一种编译型,可并行化,并具有垃圾回收功能的编程语言。 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。 开发过程虽然主要用的不是C#,但是开发过程难免会阅读到C#代码,下文是[详细]
-
golang中并发sync和channel
所属栏目:[大数据] 日期:2020-12-16 热度:193
golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go”,但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外[详细]
-
使用golang快速开发微信公众平台(六):给用户发红包(用户提现至微
所属栏目:[大数据] 日期:2020-12-16 热度:145
给用户发红包 用户买了商品,剩下的钱,可以自己再提出来。 问题1我纠结了好久,并没有找到合适解决方法,因为按照这个要求,操作由后台发起,由后台执行, 而这样做,微信是不允许的 ,这也是为什么我会写一篇关于支付宝提现的帖子,但你去看支付宝的文档,[详细]
-
go语言 grequests+goquery 简单爬虫,使用多协程并发爬取
所属栏目:[大数据] 日期:2020-12-16 热度:133
/*下载工具*/package mainimport ("fmt"//go语言版本的jquery"github.com/PuerkitoBio/goquery""os""sync""strings"//go语言版本的request"github.com/levigross/grequests""time""strconv")var wg sync.WaitGroupfunc main() {now := time.Now()initalUrls[详细]
-
golang的内存模型与new()与make()
所属栏目:[大数据] 日期:2020-12-16 热度:130
要彻底理解new()与make()的区别,最好从内存模型入手. golang属于c family,而c程序在unix的内在模型: |低地址|text|data|bss|heap--|unused|--stack|env|高地址| 其中: (1)text存储程序主体,即机器指令. (2)data,bss存储全局变量,data存储初始化的全局变量. b[详细]
-
golang之defer
所属栏目:[大数据] 日期:2020-12-16 热度:63
点击上方 蓝色字体 关注我们 golang 中的延迟调用函数 延迟调用函数 (Deferred Function Calls)的调用方式如下: defer func_name(param-list) 1 执行的时机 func f1() (ret int ) { defer func () ret++ }() return 0 } f2() tmp := 1 = tmp + 10 tmp f3()[详细]
-
golang的哪些坑爷事: package实践--转
所属栏目:[大数据] 日期:2020-12-16 热度:189
在golang中package是个困惑的概念,特别是package还可以与folder不同名,委实让我恶心了一把. 关于golang的package的最佳实践: package is folder. package name is folder name. package path is folder path. 信耶稣得永生! 1. 同一个folder存在不同package,[详细]
-
golang:interface{}类型测试
所属栏目:[大数据] 日期:2020-12-16 热度:71
在golang中空的interface即interface{}可以看作任意类型,即C中的void *. 对interface{}进行类型测试有2种语法: 1. Comma-ok断言: value,ok = element.(T), 其中T是具体类型. 2. Switch测试: switch element.(type) { case T1: case T2: default: } 其中T1,T2[详细]
-
golang生产者与消费者
所属栏目:[大数据] 日期:2020-12-16 热度:105
使用golang可以很容易实现,生产者与消费者功能。 实现一:(只生产一定数量数据) //写入专用通道 //一次写10条 func produce(p chan- int) { for i := 0; i 10; i++ { p - i //主线程不能产生死锁,所以此处报错 fmt.Println("send:",i) } } //消费专用通道[详细]
-
golang-goruntime与channel:高效的channel
所属栏目:[大数据] 日期:2020-12-16 热度:82
golang有两个非常大的特性,那就是goruntime与channel,这两个特性直接将开发人员从并发和线程同步中解放了出来,使高并发和线程同步之间代码的编写变得异常简单,并且占用资源少,同步传输效率高。 资源占用方面,goroutine 会从4096字节的初始栈内存占用开[详细]
-
Golang不使用MD5比较文件内容是否一致
所属栏目:[大数据] 日期:2020-12-16 热度:52
func compare(spath,dpath string ) bool { sinfo,err := os.Lstat(spath) if err != nil { return false } dinfo,err := os.Lstat(dpath) if { return false } sinfo.Size() != dinfo.Size() || !sinfo.ModTime().Equal(dinfo.ModTime()) { return comparef[详细]
-
golang 远程传输文件
所属栏目:[大数据] 日期:2020-12-16 热度:126
概述 之前有一篇介绍如何使用 golang 通过SSH协议来执行远程命令:golang 执行远程命令同样,通过SSH协议也可以使用 golang 来远程传输文件。 除了 SSH 的库,为了传输文件,还需要用到 github.com/pkg/sftp 这个库。 实现方式 废话不多说,直接看代码。 由[详细]
-
golang xml解析
所属栏目:[大数据] 日期:2020-12-16 热度:198
golang解析xml真是好用,特别是struct属性的tag让程序简单了许多,其他变成语言需要特殊类型的在golang里直接使用tag舒服 xml文件地址:http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/doc/addresslist.zip http://wiki.opensns.qq.com/wiki/【QQ登录】get_[详细]
-
Golang语言——垃圾回收
所属栏目:[大数据] 日期:2020-12-16 热度:54
垃圾回收涉及到:阈值触发,并行标记,并发清理。 或者:定期强制回收,释放物理内存。 垃圾回收效率总是Go版本升级的核心问题。 阈值或强制回收 如下 图 1 : 并行标记 如下 图2 : 串行或与用户逻辑并发执行 如下 图3 : 如阈值过大,可能会导致长时间无法[详细]
-
golang 线程与通道
所属栏目:[大数据] 日期:2020-12-16 热度:153
首先我们来看线程,在golang里面也叫goroutine 在读这篇文章之前,我们需要了解一下并发与并行。golang的线程是一种并发机制,而不是并行。它们之间的区别大家可以上网搜一下,网上有很多的介绍。 下面我们先来看一个例子吧 import( "fmt" ) func main(){ go[详细]
-
golang 支付宝SHA1withRSA加密
所属栏目:[大数据] 日期:2020-12-16 热度:118
SHA1大家用的挺多,RSA不多但用的也有,但像支付宝这样要求 SHA1 + RSA的恐怕就没几个了,写起来实在痛苦。而且一搜一片,却没几个能跑起来的。 刚才有个人在QQ上加我,问之前在支付宝集成的帖子里的SHA1withRSA是咋解决的。说实话,不是专门研究加密的,鬼知[详细]
-
Golang 1.4 net/rpc server源码解析
所属栏目:[大数据] 日期:2020-12-16 热度:156
上一篇文章我们讲了net/rpc中client部分的实现,我本机源码安装路径在/usr/local/go,这net/rpc(golang 1.4版本)涉及到的相关代码主要有: server.go 方法注册: 因为从client我们知道是复用的socket来实现并发调用rpc方法,我们先从方法注册来看源码部分[详细]
-
Golang语言学习资源
所属栏目:[大数据] 日期:2020-12-16 热度:185
一、知名的Golang开源框架 1. Beego: 一个国产的HTTP框架,我们可以用它快速开发各种应用程序。 官网地址: http://beego.me 2. Gogs: 一个国产的自主Git托管服务程序,我们可以用它来搭建自己的Git服务器。 官网地址:http://gogits.org 3. Docker: 一个[详细]
-
[笔记] Golang小试实现神经网络框架
所属栏目:[大数据] 日期:2020-12-16 热度:165
国庆节宅在家里,看完了40集的电视剧,也刷了4K代码。最近看看Golang,然后想摆弄一下神经网络。虽然如今都是第三方库泛滥,开源代码拿来即用,而这次对自己的要求是没有第三方库,代码自成闭包。这样更有自主控制性,加深对神经网络实现的理解,也省去了学[详细]
-
golang中使用protobuf
所属栏目:[大数据] 日期:2020-12-16 热度:80
安装 goprotobuf 1. 从 https://github.com/google/protobuf/releases 获取 Protobuf 编译器 protoc (可下载到 Windows 下的二进制版本 wget https: // github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz tar zxvf protobuf - 2.[详细]
