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

golang碎片整理之 fmt.Scan

本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数、从io.Reader中获取数据的Fscan系列函数以及从字符串中获取数据的Sscan系列函数的用法。 Scan系列 go语言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入。 fmt.Scan 语法 func Scan(a ...interface{}) (n int, err error) Scan 从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。 本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。 代码示例 package main import ...阅读全文

博文 2019-05-05 23:36:11 霍帅兵

PCDN服务接入实操手册

摘要: 本文为阿里云P2P内容分发网络(PCDN)实操手册,可根据本文内容接入与操作。参考来源官网文档。 一、 PCDN是定义? P2P 内容分发网络(英文名:P2P CDN,以下简称PCDN)是以P2P技术为基础,通过挖掘利用电信边缘网络海量碎片化闲置资源而构建的低成本高品质内容分发网络服务。客户通过集成PCDN SDK(以下简称SDK)接入该服务后能获得等同(或略高于)CDN的分发质量,同时显著降低分发成本。适用于视频点播、直播、大文件下载等业务场景。 二、 如何申请免费试用? Step 1 登录PCDN控制台(url: pcdn.console.aliyun.com),申请开通PCDN服务 Step 2 工作人员联系用户,了解用户业务现状和需求 St...阅读全文

go中指针传递与值传递

> 吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。 >-- 荀况 《劝学》 *** 1.指针传递传递的是一个地址,而非地址中的数据,传递数据较少,效率较值传递高,一般情况能用指针传递不用值传递。 2.指针传递时,调用函数中对指针所指向空间数据的修改会影响到调用者,因为他们指向的是同一块区域,指传递就不会影响到调用者的数据...阅读全文

海量数据实时在线分析Quick BI入门

课程介绍 Quick BI 专为云上用户量身打造的新一代智能BI服务平台,本课程主要介绍Quick BI的基础用法。 产品优势如下: 无缝集成云上数据:支持多种数据源:RDS、ADS、MaxCompute;ECS自建Mysql、SqlServer;本地文件等。 快速搭建数据门户:拖拽式操作、强大的数据建模、丰富的可视化图表、快速搭建数据门户。 灵活嵌入第三方系统:仪表板可嵌入到自有系统,直接在自有系统访问报表, 并实现免登。 安全管控数据权限:内置组织成员管理,支持行级数据权限,满足同一份报表,不同人看不同的数据。 学习入口:[请点击这里](http://click.aliyun.com/m/27918/) 课程目标 学习阿里云Qui...阅读全文

[译] CockroachDB GC优化总结

几周前我们分享了一个帖子讲述我们为什么选择Go语言编写CockroachDB,我们收到一些问题,询问我们是如何解决Go语言的一些已知问题,特别是关于性能、GC和死锁的问题。 本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 减少内存分配和GC优化 将Go与其他语言(比如java)区别开来的是Go语言能让你管理内存布局。通过GO语言,你可以合并碎片,而其他垃圾集合语言不能。 让我们看看CockroachDB中从磁盘读取数据并解码的一小段代码: metaKey := mvccEncodeMetaKey(key) var meta MVCC...阅读全文

博文 2015-11-26 17:22:53 Coldstar

go语言 string数据类型格式

在go语言里面定义字符串如下: var ss string = "12345" 对于一个熟悉C/C++的程序员来说,马上就会想到这个string是一个什么内容,占多大空间,内存如何分配等,下面我们来分析这个问题。 go语言的string是一种数据类型,这个数据类型占用16字节空间,前8字节是一个指针,指向字符串值的地址,后八个字节是一个整数,标识字符串的长度;注意go语言的字符串内部并不以'\0'作为结尾,而是通过一个长度域来表示字符串的长度。 type mystr struct { strbuf uintptr; strlen uint64; } 上述就是string的类型定义。下面我们通过代码来验证这个问题: package main import ( "fmt" "unsafe" //...阅读全文

爬虫带你了解一下Golang的市场行情

了解一下Golang的市场行情 项目地址:https://github.com/go-crawler... 如果对你有所帮助,欢迎 Star,给文章来波赞 :) 目标 在工作中 Golang 已是一份子,想让大家了解一下 Golang 的市场行情,也想让更多的人熟悉它。因此主要是展示数据分析的结果 目标站点是 某招聘网站 的职位数据抓取和分析,爬取城市分别为 北京、上海、广州、深圳、杭州、成都,再得出一个结论 分析 首先需要进行页面分析,找到我们的抓取方向 搜索 golang 关键字,打开页面 F12 就能看到它发送了四个请求,留意 positionAjax.json 这个请求 我们仔细研判这个接口的入参和出参 入参 1、Query String Param city:请求的城市 needA...阅读全文

golang Mysql -- Tx

Transaction 事务 事务处理是数据的重要特性。尤其是对于一些支付系统,事务保证性对业务逻辑会有重要影响。golang的mysql驱动也封装好了事务相关的操作。我们已经学习了db的Query和Exec方法处理查询和修改数据库。 tx对象 一般查询使用的是db对象的方法,事务则是使用另外一个对象。sql.Tx对象。使用db的Begin方法可以创建tx对象。tx对象也有数据库交互的Query,Exec和Prepare方法。用法和db的相关用法类似。查询或修改的操作完毕之后,需要调用tx对象的Commit提交或者Rollback方法回滚。 一旦创建了tx对象,事务处理都依赖与tx对象,这个对象会从连接池中取出一个空闲的连接,接下来的sql执行都基于这个连接,直到commit或者rollba...阅读全文

博文 2017-12-14 07:00:02 yxfeng

golang操作mysql数据库

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 都是先更新大家先看下,然后等有时间了我给大家给这些代码家注释,所有代码大家可以查看go.lingphp.com我都放在这里了 [php] package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) type User struct { id int username, password string } var sqldata map[interface{}]interface{} func main() { var u User db, err := sql.Open("mysql", "ro...阅读全文

博文 2017-02-09 18:37:49 widuu

通用的日志收集工具Logkit

logkit是七牛Pandora开发的一个通用的日志收集工具,可以将不同数据源的数据方便的发送到Pandora进行数据分析,除了基本的数据发送功能,logkit还有容错、并发、监控、删除等功能。 logkit详细的文档可以参见[WIKI](https://github.com/qiniu/logkit/wiki)页面。 **支持的数据源** 文件(包括csv格式的文件,kafka-rest日志文件,nginx日志文件等,并支持以[grok](https://www.elastic.co/blog/do-you-grok-grok)的方式解析日志) MySQL Microsoft SQL Server(MS SQL) Elasticsearch MongoDB Kafka R...阅读全文

开源项目 2017-11-21 03:00:36 网友

gorm的缓存中间件

###### gcache是gorm的中间件,注入后gorm即刻拥有缓存。 ## Overview - 即插即用 - 旁路缓存 - 数据源使用 Redis - 防击穿 - 防穿透 #### 安装 ``` $ go get -u github.com/8treenet/gcache ``` #### 快速使用 ```go import ( "github.com/8treenet/gcache" "github.com/jinzhu/gorm" "github.com/8treenet/gcache/option"" ) func init() { gormdb, _ = gorm.Open("mysql", "") opt := option.DefaultOption{} opt.Expi...阅读全文

博文 2019-09-19 14:43:18 8treenet

阿里云MaxCompute持续挑战极限,北京云栖大会现场完成基于公共云的BigBench评测!

摘要: 2017年12月19 -20日,引发全球科技共振的云栖大会在国家会议中心举办2017年的压轴场—北京峰会。在本次大会上,阿里云主力计算平台MaxCompute将全球首次现场完成基于公共云的BigBench评测,并由阿里云总裁胡晓明在20日上午的主论坛宣布最终结果,令人期待。 2017年12月19 -20日,引发全球科技共振的云栖大会在国家会议中心举办2017年的压轴场—北京峰会。在本次大会上,阿里云主力计算平台MaxCompute将全球首次现场完成基于公共云的BigBench评测,并由阿里云总裁胡晓明在20日上午的主论坛宣布最终结果,令人期待。 **什么是BigBench大数据测试基准?** BigBench是基于零售业场景构建的端到端大数据测试基准,支持主流分...阅读全文

beego.Error 原理

在用beego查询数据库后经常会 ```go if err != nil { beego.Error(err) } ``` 刚开始学习go,很不知道这里面发生了什么, 1. beego记住了这个error后会做什么,如果web进行一次数据库操作出错了,调用了这个beego.Error(err),那页面会显示正常页面还是报告error呢。 2. beego记住了这个error后我们怎么在其他地方访问到 3. 还有就是我在models里写了一次这个判断,那么我返回到controller里的时候,还需要写吗?还是我可以在models不写都直接将error返回给controller来处理呢? 4. 我想翻翻源码,发现太多了,不知道哪个是对头的,应该怎么从源码看起呢。 5....阅读全文

GO支持协程。linux系统是抢占式多任务。

那么 操作系统 会把 CPU的释放 的 功能交给 程序么? 我越用越不明白啊。 那个 《GO语言编程》里说 GO的并行机制 还不完善。 不是 本人测试。也没有他的测试数据。 是不是 就是因为 操作系统和 语言本身对于 CPU的抢占 有冲突。。 请版主 polaris 给一点 指点。。非常 感谢。...阅读全文

Go语言的timeout和select随机问题

看无闻的Go教程中提到,Go的select对channel的操作,是随机的。我测试的时候,在select中对channel写数据,确实是随机的。但是,我还想证实一下,select对channel的读,也是随机的。下面是一个例子,我通过goroutine,对ch1和ch2两个channel读取数据。为了避免ch1和ch2刚顺序写完就被读出来,影响实验的准确性。我特意在goroutine中使用了timeout。但是我发现两个问题: ①:最终还是先输出ccc,再输出ddd,运行多少次都是一样。我的理解,虽然goroutine后台去执行了,但是休眠5s的过程中,ch1和ch2都已经有值了,那么休眠结束后,理应会随机先输出ccc或者ddd啊 ②:关于timeout,我用sublime的插件...阅读全文

用Golang自己构造ICMP数据包

ICMP是用来对网络状况进行反馈的协议,可以用来侦测网络状态或检测网路错误。 限于当前Golang在网络编程方面的代码稀缺,资料甚少,所以分享一个用Golang来构造ICMP数据包并发送ping程序的echo消息的实例。 RFC792定义的echo数据包结构: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...阅读全文

博文 2015-06-17 20:02:33 u011774512

golang中channel使用心得

最近接手其他同学代码,发现业务功能实现了,但是对于在代码上,利用channel来充当回调函数,导致channel在整个代码中传递来,传递去,看起来相当痛苦,代码维护性也比较糟糕。下面写一些列子来说明这个情况。 示例1:利用channel充当callback package main import ( "fmt" "time" ) func main() { ch := make(chan int) go handleMsg(ch) for index := range ch { fmt.Println(index) } } func handleMsg(ch chan int) { t := time.Tick(time.Second) index := 0 for { select { c...阅读全文

博文 2019-05-18 00:34:39 包牙齿

使用Go访问MySQL的方法

使用Go访问MySQL的方法 安装MySQL驱动 go get github.com/go-sql-driver/mysql 导入mysql包 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 连接数据库 db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname") if err != nil { panic(err.Error()) } defer db.Close() err = db.Ping() if err != nil { panic(err.Error()) } 查询 age := 27 rows, err := db.Qu...阅读全文

golang: 常用数据类型底层结构分析

虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解golang并写出质量更好的代码。 基础类型 源码在:$GOROOT/src/pkg/runtime/runtime.h 。我们先来看下基础类型: /* * basic types */ typedef signed char int8; typedef unsigned char uint8; typedef signed short int16; typedef unsigned short uint16; ty...阅读全文

博文 2014-10-04 19:27:03 陈一回

Go 1.7中值得关注的几个变化

零、从Release Cycle说起 从Go 1.3版本开始,Golang核心开发Team的版本开发周期逐渐稳定下来。经过Go 1.4、Go1.5和Go 1.6的实践,大神Russ Cox在Go wiki上大致定义了Go Release Cycle的一般流程: 半年一个major release版本。 发布流程启动时间:每年8月1日和次年2月1日(真正发布日期有可能是这个日子,也可能延后几天)。 半年的周期中,前三个月是Active Development,then 功能冻结(大约在11月1日和次年的5月1日)。接下来的三个月为test和polish。 下一个版本的启动计划时间:7月15日和1月15日,版本计划期持续15天,包括讨论这个major版本中要实现的主要功能、要fix的前期遗留的b...阅读全文

博文 2016-06-21 10:23:08 bigwhite

关于go和java进行socket通讯时string类型的读取(ReadUTF16)

各位同仁: 本人初次尝试使用golang进行开发。在用go进行socket对接java服务时需要读取数据流中的各种类型。 java的java.io.DataInputStream类有各种数据读取的实现,如readInt, readFloat, readUTF等。 目前在go中同样实现相应的方法,本人尝试 var x int32 b_buf := bytes.NewBuffer(b) c,_ := b_buf.ReadByte() fmt.Println(c) binary.Read(b_buf, binary.BigEndian, &x) fmt.Println(x) 可以读取int类型的数据。但是针对readUTF这种字符串类型的数据目前还不清楚如...阅读全文

介绍一下Json的Number

Json的使用基本没有什么难度,就拿Golang来说,直接来个encoding/json包里的func Marshal(v interface{}) ([]byte, error)和func Unmarshal(data []byte, v interface{}) error就能对Json进行编解码了。具体的文件就是采用反射的方法,可以参考我之前的文章『Golang通过反射实现结构体转成JSON数据』。 现在问题来了,如下的map需要大家是如何解析的? {"10000000000":10000000000,"111":1} 如果直接定义一个map来解析,定义成map[string]int64,我们是肯定可以解析成功的,解析的时候会将数据转换为我们需要的数据类型。那么问题来了:如果把类型定义...阅读全文

高速数据同步服务器——Doozer

昨天在讨论平台新架构的时候,还在说要搞个配置管理的服务出来,方便接口的管理。然后今天就看到了这个……人品爆发了吗? 好吧,不扯淡,直接翻译 Doozer 的 README 吧。Doozer 我还没实测,不过感觉,如果真得像 README 上面说得那样,还是很有用,很有用的。 关键——这个玩意提供了 go 的接口。(补充一点,忘了说了,这个是用 go 开发的) 项目代码托管于此:Doozer。 ———————-翻译分割线———————- Doozer 这是什么? Doozer 是高可用的,完整一致性的用于小量、极端重要的数据的存储。当数据变化时,它立刻通知接入的客户端(不缓存),对于那些很少更新,但是希望更新发生时实时性高的客户端来说是非常理想的。Doozer 对于名字服务、主数据库选取和多个...阅读全文

博文 2014-10-09 16:15:18 mikespook

golang zlib 压缩数据

package main import ( "fmt" "compress/zlib" "bytes" ) func main() { var input = []byte("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKsAAAAgCAYAAABtn4gCAAAI9klEQVR4Xu2cfYxcVRmHn3Pu3Nm6lXa2ta0AYlsgFSGgThMU0W5hGkqApNGARk3cGm3BRN3FYGuCISrBXaNphcSkG2I3hn9gY2gSNWq32AoE1C6KRihFti2QSgvsTmm783HvOa+zM69cSS8Tacsq7n2SX87cj5P7ZvLs2ztnbseICG8HMjIsbxMyMnIoxhja...阅读全文

博文 2014-10-04 19:26:09 zitsing

golang插件化方案

背景业务线的活动,每一次新活动都做独立项目开发,有大量重复代码,并且浪费数据服务的连接资源;排序服务也许要经常添加业务代码,目前是停服务发布……这些场景为了开发维护效率、稳定性、安全性和性能都使用了Go语言。Go是静态编译语言,在具体的动态场景该如何实现应用级别的持续交付呢?基于k8s,nginx网关,队列回溯消费等工具的实现也可以实现不同程度的持续交付,但是持续交付的要求越高,搭建平台和维护的成本也越高。从应用开发本身出发,可以考虑插件化。>>>阅读全...阅读全文

博文 2018-08-15 13:36:18 倔强_beaf

go语言的hashmap

go语言中map的数据结构,以下只摘取了关键的几个属性: struct Bucket { uint8 tophash[BUCKETSIZE]; // top 8 bits of hash of each entry (0 = empty) Bucket *overflow; // overflow bucket, if any byte data[1]; // BUCKETSIZE keys followed by BUCKETSIZE values }; struct Hmap { uint8 B; // log_2 of # of buckets (can hold up to LOAD * 2^B items) byte *buckets; // array of 2^B Bucket...阅读全文

博文 2015-05-18 03:00:01 richmonkey

golang专有的gob序列化性能分析

为什么要分析gob序列化格式的性能 我自己编的一个单向同步软件(https://gitee.com/rocket049/mysync),混合了RPC和HTTP服务器功能,利用RPC做控制功能,HTTP进行数据上传。最近我有意简化其构造,把其中的http上传功能也用RPC方式实现。但是我担忧会导致性能下降,因为通常对象序列化,将会导致数据量增加,例如JSON序列化后,二进制数据变成16进制数据,数据量倍增。因此我测试了gob序列化前后的体量变化。 测试方法 我编写了一个小程序,参数是输入文件,把这个文件转换为一个结构体,其中包含文件名(strring)和所有数据组成的数组([]byte),然后用golang标准库encoding/gob将这个结构体序列化后保存到另一个文件中,然后比较输入文件和...阅读全文

博文 2018-06-17 22:34:39 从火星来

Go 实现常见数据结构

1. [二叉搜索树](https://flaviocopes.com/golang-data-structure-binary-search-tree) 2. [字典](https://flaviocopes.com/golang-data-structure-dictionary) 3. [图](https://flaviocopes.com/golang-data-structure-graph) 4. [哈希表](https://flaviocopes.com/golang-data-structure-hashtable) 5. [链表](https://flaviocopes.com/golang-data-structure-linked-list) 6. [队列](h...阅读全文

Golang使用redis阻塞读brpop实现即时响应并发执行

实现 主要利用redis的brpop阻塞读和Golang的goroutine并发控制以及os/exec执行程序,实现队列有数据就立即执行对应程序并把结果set任务key。 运行参数 设置brpop的超时(-t)和同步调度时返回的结果ttl(-e) ./dispatchdeploy Usage: -h 192.168.6.151 -p 6388 -t 300 -a /path/testfile.pl -e 1800 -a string start appname (default "/path/testfile.pl") -e int redis expire time sec (default 1800) -h string redis ip -p int redis port (defau...阅读全文

博文 2017-06-20 13:07:16 飞天神猫

Go 多返回值

Go语言革命性地在静态开发语言阵营中率先提供了多返回值功能。这个特性让开发者可以从原来用各种比较别扭的方式返回多个值的痛苦中解脱出来,既不用再区分参数列表中哪几个用于输入,哪几个用于输出,也不用再只为了返回多个值而专门定义一个数据结构。 package main import "fmt" func vals() (int, int) { return 3, 7 } func main() { a, b := vals() fmt.Println(a) fmt.Println(b) _, c := vals() fmt.Println(c) } 123456789101112131415 package mainimport "fmt" func vals() (int, int) { ret...阅读全文

golang的反射机制

go反射 什么是反射?使用反射可以实现什么功能? 反射提供了一种可以操作任意类型数据结构的能力。通过反射你可以实现对任意类型的深度复制,可以对任意类型执行自定义的操作。另外由于golang可以给结构体定义tag熟悉,结合反射,于是就可以实现结构体与数据库表、结构体与json对象之间的相互转换。 使用反射需要注意什么事情? 使用反射时需要先确定要操作的值是否是期望的类型,是否是可以进行“赋值”操作的,否则reflect包将会毫不留情的产生一个panic。 struct initializer示例 go-struct-initializer 是我在学习golang反射过程中实现的一个可以根据struct tag初始化结构体的go library,这里对其中用到的反射技术做一下说明 package...阅读全文

博文 2016-10-04 05:00:03 ylwh8679

阿里云消息服务使用教程

课程介绍 阿里云消息服务(Message Service,原MQS)是阿里云商用的消息中间件服务。与传统的消息中间件不同,消息服务一开始就是基于阿里云自主研发的飞天分布式系统来设计和实现,具有大规模,高可靠、高并发访问和超强消息堆积能力的特点。消息服务API采用HTTP RESTful标准,接入方便,跨网络能力强;已全面接入资源访问控制服务(RAM)、专有网络(VPC),支持各种安全访问控制;接入云监控,提供完善的监控及报警机制。消息服务提供丰富的SDK、解决方案、最佳实践和7x24小时的技术支持,帮助应用开发者在应用组件之间自由地传递数据和构建松耦合、分布式、高可用系统。 消息服务同时具备发送短信的能力,支持快速发送短信验证码、短信通知、推广短信。完美支撑双11期间的2亿用户发...阅读全文

golang 使用sql语句操作数据库的方法

func (m xxxstruct) insertxxx() (bool,string){ sqlquery :="insert into tables_name(id,name,email,content,) values(%v,%v,%v,%v)" sqlquery =fmt.Sprintf(sqlquery,m.id,m.name,m.email,m.content) ok,desc :=queryexecmysql(sqlquery) if ok { return false,desc } return true,"ok"}func queryexecmysql(parmam string)(bool string){ o :=orm.NewOrm() o.Using("deaful...阅读全文

博文 2017-02-09 17:32:12 gdutccd

Go语言5大基本数据类型解析

/*码农网底部横幅*/ var cpro_id = "u1635067"; Go语言目前也比较热门,本文主要来讨论一下Go语言的5大基本数据类型以及其使用方法。Go语言的基本数据类型包括注释、标识符、常量、变量以及布尔值,下面我们逐一来对这些数据类型进行分析。 1、注释(与C++一样) 行注释://块注释:/* …*/ 2、标识符 可以这么说,除了数字开头的不允许,符号开头的不允许,关键字不允许,其他的Unicode字符组合都可以。“_33”也可以是标识符、“我们”也可以是标识符。标识符也区分大小写。 (1)、以大写字母开头的标识符是公开的。(这个很有意思) (2)、其他任何标识符都是私有的。 (3)、空标识符“_”是一个占位符,用于赋值操作的时候,丢弃、忽略某个值。通常这样用: go的方法...阅读全文

博文 2015-03-11 14:12:24 codeceo

Golang 之 key-value LevelDB

时常会在应用中用到数据库功能,象 Key-Value 性质的。直接搬个 Redis,Mysql嫌大,好在有 LevelDB,直接编进应用中。 有关什么是 LevelDB 以及 LevelDB 的特性,可Google之,我们看看如何用。 先要 go get github.com/syndtr/goleveldb/leveldb 然后在文件中 import 进来。 1.打开数据库 db,err = leveldb.OpenFile("./db",nil) if (err != nil) { panic(err) } 如果这里如果有错,直接报了。 2.然后,读用 db.Get, 写用 db.Put 。 3.代码中的一小段。 package main import ( "github.com/syn...阅读全文

博文 2016-07-27 15:00:01 qufo

支持日志切分的日志记录器(日期、大小、普通)-博文

//@description 日志记录工具类 /* 日志格式: 时间(系统时间) 日志类型(方法设置) 日志内容(动态输入) 日志类包含两个同步锁: 缓冲区锁-mu_buf 文件锁-mu_file 日志输入操作 Printf Println 1.获取缓冲区锁 2.写入缓冲区 3.释放缓冲区锁 4.A.调用bufWrite,B.等待定时调用bufWrite 日志输出操作 bufWrite 1.获取文件锁 2.判断缓冲区,不需写入则返回 3.获取缓冲区锁 4.写入缓冲区 5.释放缓冲区锁 日志监听操作 fileMonitor A.文件监听定时器到期fileCheck 1.获取文件锁 2.判断是否需要文件重名,并后续操作 3.释放文件锁 B.定时写入定时器到期bufWrite 文件定时写入bufW...阅读全文

博文 2017-05-05 04:39:26 hansegod

记录 Elasticsearch 的 maximum shards open 问题

问题背景 某天打开 Jaeger UI 后,发现里面没有任何数据了,这是个奇怪的问题。 然后立马上服务器检查了 jaeger-collector, jaeger-agent, jaeger-query 和 Elasticsearch 的服务进程、端口及网络通信。所有一切都正常。 然后进一步排查数据流向问题,通过排查 jaeger-collector 日志,发现 jaeger-agent -> jaeger-collector 之间的数据传输没有问题。 而 jaeger-collector -> ES 之间数据传输时报错了。错误如下: {"level":"error","ts":1576483292.2617185,"caller":"config/config.go:130","msg":"...阅读全文

博文 2019-12-16 19:32:40 维子

golang之map数据类型

先上代码…… package main import "fmt" func testMap() { //两种声明map方式,切记,必须初始化才能用,否则panic //var a map[string]string = map[string]string{ // "key": "value", //} a := make(map[string]string, 10) a["abc"] = "efg" //map的key是唯一的,修改值可以直接改 a["abc"] = "efg2" a["abc1"] = "efg" fmt.Println(a) } //map嵌套map //map是无序排序 func testMap2() { a := make(map[string]map[string]...阅读全文

博文 2018-01-10 16:30:04 pyyu

打消数据上云的最大顾虑 众安保险为阿里云用户推出数据安全险

![云上安全(小图).jpg](http://studygolang.qiniudn.com/160127/758ba52c0f12b6559909386320258fe5.jpg) 自保险于1384年在佛罗伦萨诞生以来,它对生活的影响从未像本世纪这么大。 2016年1月中旬,阿里云市场上线第一份数据保险——由众安保险提供的数据安全险,为企业虚拟资产数据的安全承保。用户投保后,一旦发生因黑客入侵引发的数据泄露,将由众安保险公司提供最高100万元的现金赔偿,最大限度降低客户损失。这是国内第一份专保黑客盗取云计算数据的保险,意味着DT时代数据的价值正在被各方认可,而保险的推出也将推动企业更广泛地使用云计算。 DT时代,数据已成企业核心资产,而数据的安全则涉及多个环节。 在...阅读全文

微信公众号扫描带参数二维码实现自动分组

使用微号帮渠道二维码生成功能,粉丝通过扫描二维码统计来源,并自动分组。满足企业公众号市场分析,只有已微信认证的服务号才能实现,订阅号没有生成带参数的二维码的权限。1、微信扫码关注自动打标签分组创建渠道二维码》粉丝识别标识》打标签/分组,设置成功后,粉丝扫码关注就会自动打标签分组​​​2、微信扫码关注自动修改粉丝备注创建渠道二维码》粉丝识别标识》修改粉丝备注名,设置成功后,粉丝扫码关注就会自动修改粉丝备注名​​​3、粉丝扫码自动打标签分组数据明细​​​4、渠道粉丝数据统计渠道二维码统计数据表,粉丝微信扫码关注或取关公众号都能统计监测到​​...阅读全文

博文 2019-08-01 16:53:16 gujiushu

golang数据结构之List

golang数据结构之List,实际中用得很少,这里只做研究。 package main import ( "container/list" "github.com/sanity-io/litter" ) type Thing struct { Id int Info string } // golang 双向链表结构 func main() { doubleList := list.New() doubleList.PushBack(&Thing{Id:1, Info:"hello"}) doubleList.PushBack(&Thing{Id:2, Info:"list"}) doubleList.PushBack(&Thing{Id:3, Info:"!"}) //for e := ...阅读全文

博文 2018-08-10 12:30:02 LittleLee

用golang实现mongodb数据库连接池-基本篇

版本 golang -- 1.12.4 mongodb -- 4.0 go driver -- 1.0.0 简介 mongodb的数据库driver在官方文档里面明确写明所有的数据库连接需要自己建立和释放,而且建议尽量复用已有的建立,那么也就是说driver里面并未实现连接池的功能。在我们实际应用中就需要自己实现这套数据库连接池提升程序和数据库之间的执行效率。 设计思路 用一个数组来存放数据库连接的指针,并记录每一个指针两个状态: a.是否申请了数据库连接 b.这个连接是否已经给系统在使用中。举个例子就比较好理解了: 申请一个用于存放数据连接的数组,一开始空的什么都没有 pool_initial.png 程序需要一个数据库连接,连接池把数组第一个位置建立一个数据库连接,并把这个连接的状态置为...阅读全文

博文 2019-05-14 11:34:53 kmnemon