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

go channel实现

go channel实现 转载自:http://alpha-blog.wanglianghome.org/2012/04/13/go-channel-implementation/ G语言经过多年的发展,于最近推出了第一个稳定版本。相对于C/C++来说,Go有很多独特之出,比如提供了相当抽象的工具,如channel和goroutine。本文主要介绍channel的实现方式。 简介 channel有四个操作: 创建:c = make(chan int)发送:c <- 1提取:i <- c关闭:close(c) 根据创建方式的不同,channel还可分为有buffer的channel和没有buffer的channel。buffer的大小由make的第二个参数指定,默认为0,即没有buffer。创...阅读全文

博文 2014-10-06 16:37:04 kai_ding

在线学习平台具备什么特色和特点?

其实在我们的生活中,对于在线学习平台并不陌生,现在企业、教育单位和培训机构都会使用在线学习平台来进行线上学习、培训。使用在线学习平台,可以很好减少人力和物力成本,那么在线学习平台有哪些特色和特点呢? 在线学习平台是通过计算机互联网,或是通过手机无线网络,在一个网络虚拟教室与教室进行网络授课、学习。它不需要特定的时间到特定的地点进行学习,只要有一台电脑、一部手机在有网的地方就能进行学习。再者就是在线培训平台的稳定和安全性,或许很多人会担心在线学习平台的稳定性和安全性,担心在线学习系统会不稳定而丢失了重要数据。但其实不用担心,好智学在线学习平台采用APACHE 2.0+MYSQL+Golang技术,能够保证数据安全稳定,数据储存备份。再者就是在安装上来说,在线培训系统无需安装系统软件,直接在好智...阅读全文

博文 2019-07-08 11:02:42 在线培训学习系统

服务监控系统 Prometheus

Prometheus 是一个开源的服务监控系统和时间序列数据库。 ![image](http://static.oschina.net/uploads/space/2015/0205/082749_47Dp_5189.png) 特性: * 高维度数据模型 * 自定义查询语言 * 可视化数据展示 * 高效的存储策略 * 易于运维 * 提供各种客户端开发库 * 警告和报警 * 数据导...阅读全文

golang 锁的使用

sync.mutex 加锁后禁止其他地方读或写,这个适用于可能出现的在不同go程中修改同一个数据 sync.rwmutex 的lock 和 unlock 的使用和sync.mutex类似 sync.rwmutex 的rlock和runlock的使用适用于要读取数据,防止在读取的同时可能出现的别的地方写入 而导致的读取失...阅读全文

博文 2015-10-15 19:00:15 徐学良

GO中调用redis时,当并发量比较大时出现的问题。

GO中调用redis时,实始化一个连接池,做法也是一般的用户: ```go &redis.Pool{ MaxIdle: beego.AppConfig.DefaultInt("redis::maxidle", 1), MaxActive: beego.AppConfig.DefaultInt("redis::maxactive", 10), IdleTimeout: time.Duration(beego.AppConfig.DefaultInt64("redis::idle_time_out", 180)) * time.Second, Dial: func() (redis.Conn, error) { log.Println("func dia...阅读全文

Go语言for```range方法遍历map,遍历打印值与map实际存储值不同

> 今天编写了map结构数据存储程序,map的key总数:22046个,通过for```range方法遍历map发现,遍历打印的结果与实际存储内容不符,主要是存储结果数量和值正确,打印出来的值少了。 - 以下是打印结果 ```go keys:0xE7A0 values:0x942E keys:0xE9E6 values:0x6B92 keys:0xF5F2 values:0x8E9C keys:0xF7F0 values:0x9EDF ======================= 以上使用range遍历结果 ==================== 获取0xFE4E值:0xFA28 总数:22046 ``` - 以下是存储数据结构示意 ...阅读全文

Go圣经-学习笔记入门bufio.Scanner

上一篇 Go圣经-学习笔记入门bufio 下一篇 Go圣经-学习笔记入门bufio.Writer 由bufio.Reader引出的问题 由上篇文章《Go圣经-学习笔记入门bufio》,我们可以知道,bufio.Reader结构体中所有读取数据的方法,都包含了delim分隔符,这个用起来很不方便,所以Google对此在go1.1版本中加入了bufio.Scanner结构体,用于读取数据。 使用DEMO: func main(){ scanner:=bufio.NewScanner( strings.NewReader("ABCDEFG\nHIJKELM"), ) for scanner.Scan(){ fmt.Println(scanner.Text()) // scanner.Bytes()...阅读全文

博文 2017-10-22 00:31:10 cdh0805010

Go如何发送广播包

网络数据包的发送分为三种方式,分别是单播、组播、广播。 广播通俗地讲,就是让你的机器发送的数据包可以被同一个网络内的所有主机都接收到。 在讲解如何发送广播包之前,先来看看跟广播有关的知识: 我们都知道IP地址的作用是用来在网络中定位某个网络接口的(没错,准确的讲,IP并不是定位某一台主机)。我们通常见到的IP地址的形式都是如下这样子的: XXX.XXX.XXX.XXX 这种IP地址的形式叫做点分十进制表示法,其实IP是一个32位长的二进制数,以每8位为单位,共分成4个部分,也就是分成了4个字节。 IP地址的组成方式是: [网络号]+[主机号] 网络号是用来标识某个网络的,而主机号是用来标识网络中的某一台主机的(其实是主机上的某个接口)。 通常计算机发送一个数据包时会在数据包的头部加上发送者的...阅读全文

博文 2015-11-03 15:00:15 u011774512

Golang+MySQL 事务

准备知识:MySQL事务 1 基本操作 sql.Tx tx会从连接池中取一个空闲的连接,直至调用commit或者rollback才会释放 tx, err := db.Begin() // 创建tx对象 tx.Query(command1) tx.Exec(command2) tx.Commit() 2 并发 事务只有一个连接,事务内的操作是串行的 db, _ := sql.Open(...) rows, _ := db.Query("SELECT id FROM tt_users") for rows.Next(){ var ( user_id int openid string ) rows.Scan(&user_id) db.QueryRow("SELECT openid FROM tt...阅读全文

博文 2018-08-08 14:34:53 埃尔温薛定谔不养猫

GOLANG 基本数据类型 整型

基本数据类型-整型 种类 有符号(负号) int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位数) int uint 类型别名 Unicode字符rune类型等价int32 byte等价uint8 特殊类型 uintptr,无符号整型, 由系统决定占用位大小,足够存放指针即可,和C库或者系统接口交互 取值范围 具体类型 取值范围 int8 -128到127 uint8 0到255 int16 -32768到32767 uint16 0到65535 int32 -2147483648到2147483647 uint32 0到4294967295 int64 -9223372036854775808到9223...阅读全文

博文 2016-08-30 16:00:00 zengyz

了解一下Golang的市场行情

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

博文 2018-04-28 09:44:10 go-crawler

阿里云技术大牛详解混合云数据安全传输两大解决方案

阿里云高级安全专家 安忍 引言 Gartner称,云计算的使用正在不断增加,到2016年这一增长将占据大量新增IT开支。2016年将是云计算决定性的一年,私有云开始让路给混合云,近半数的大型企业将在2017年年底部署混合云。 但在此过程中,从公共云到私有云之间的数据安全传输问题也成为各方关注的焦点。 本文详细解读了阿里云是如何通过自有产品VPC高速通道专线接入和第三方安全厂商VPN公网接入两种方案,解决用户这方面的安全诉求。 数据安全传输解决方案之阿里云 · 高速通道 在与用户沟通时,我们发现用户对于混合云的数据安全传输主要有这四大诉求: l 出现类似微博跨年抢红包、12306过年卖票这种突发业务,可以快速将业务平滑地从私有云向公共云迁徙,保证业务...阅读全文

Golang 数据库操作

Golang 数据库操作 Golang 数据库 MySQL Golang支持DB操作位于database包下,支持基本CRUD操作、事务和Prepared Statement,本文以MySQL为例。 MySQL驱动安装 使用数据库之前,必须安装相关MySQL数据驱动[1],如果未安装驱动或者没有引入驱动库会报以下错误: failed to open database: sql: unknown driver "mysql" (forgotten import?) 安装golang mysql driver go get github.com/go-sql-driver/mysql 代码中还需注册数据库驱动,通过引入空白倒入[2]mysql包来完成 import( "database/sql"...阅读全文

博文 2015-08-09 18:00:00 nop4ss

golang mongodb mgo 插入,查询例子

golang mongodb mgo 插入,查询的一个小例子,golang还是给我那个感觉,比nodejs写起来舒服. package main import ( "fmt" "launchpad.net/mgo" "launchpad.net/mgo/bson" ) type Mail struct { Id bson.ObjectId "_id" Name string Email string } func main() { // 连接数据库 session, err := mgo.Dial("127.0.0.1") if err != nil { panic(err) } defer session.Close() // 获取数据库,获取集合 c := session.DB("tes...阅读全文

博文 2014-10-05 00:00:01 DarkWingBoy

【200426】字节跳动大量岗位释放,欢迎找我内推,base 北京/深圳

职位描述 1、服务于字节跳动核心广告系统,负责广告商业变现基础平台研发工作; 2、设计并维护广告投放平台,优化改进微服务系统薄弱点,解决数据隔离、系统解耦等技术难题; 3、对接抖音、头条、西瓜、抖音火山版等当红APP的广告投放; 4、深入理解广告投放流程,了解上下游投放链路和投放策略,参与现有投放链路和策略优化,助力平台营收; 5、提供百亿级广告基础数据服务,完成大规模、高可用的广告系统搭建。 职位要求 1、熟悉python、php、c++、java、golang 等中至少一门语言 ),具备良好的编码能力; 2、基础扎实,熟悉网络编程,熟练使用至少一种数据库和缓存等基础组件; 3、学习能力强,能够独立分析和解决问题,逻辑思维能力强,善于分析和解决问题,能够处理复杂业务系统逻辑; 4、责任心强...阅读全文

博文 2020-04-26 21:32:51 林湾村龙猫

golang 查询数据库操作

SQL.Open only creates the DB object, but dies not open any connections to the database. If you want to test your connections you have to execute a query to force opening a connection. The common way for this is to call Ping() on your DB object. See http://golang.org/pkg/database/sql/#Open and http://golang.org/pkg/database/sql/#DB.Ping Quoting from...阅读全文

博文 2017-07-01 08:00:35 oxspirt

Golang -- 10件你不知道的事情

本文翻译 从 文章进行翻译,在此表示感谢 10 things you (probably) don’t know about golang 匿名结构体 (Anonymous structs) Template data (模板数据) data := struct { Title string Users []*User //猜测 User 是一个接口,接口指针的切片 } { title, USERS, } err := tmpl.Execute(w, data) (Cheaper and safer than using map[string]interface{}) 确实没有太理解,是什么意思? 嵌入式锁 (Embedded Lock) var hits struct{ sync.Mute...阅读全文

博文 2015-03-29 20:00:09 xiaorenwuzyh

Go中nil

结论:由于Go中interface会同时存储类型和值,如果将一个nil对象赋值给一个interface,这个interface为非nil。 nil在Go中相当与其它语言中的NULL、null和None等,在实际的使用中表示某一个变量为空。nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果将nil赋值给其他变量的时候将会引发panic。 首先来看一个代码: package main import "fmt" type MyError struct{} func (this *MyError) Error() string { return "" } func test() error { var p *MyError = nil /* //C...阅读全文

博文 2016-02-07 12:00:01 jiaolongdy

golang udp服务端客户端例子

golang udp服务端客户端例子 服务端: package main import ( "fmt" "net" ) func main() { // 创建监听 socket, err := net.ListenUDP("udp4", &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 8080, }) if err != nil { fmt.Println("监听失败!", err) return } defer socket.Close() for { // 读取数据 data := make([]byte, 4096) read, remoteAddr, err := socket.ReadFromUDP(data) if err != nil...阅读全文

每日安全资讯(2019.09.06)

用Golang打造一款便携式网络拓扑可视化的工具 之前做内网渗透测试的时候,一直想要有一款能够格式化存储收集到的信息,并且可以方便的查找出重要信息的工具。前段时间看到了Leprechaun这个工具,给了我一些想法。由于,我对于这个工具有些不喜欢的地方。再加上好久没有写小程序练手了,于是决定自己定制一款类似的工具。 https://www.freebuf.com/sectool/212374.html 自古逢秋悲寂寥:浅谈瑞华的“分手季” 瑞华最近不太好,前头沾惹上陈年造假大案,后头接连被分手两次。为啥安全圈的大佬们不爱瑞华了? https://www.freebuf.com/news/213476.html 一种基于欺骗防御的入侵检测技术研究 欺骗防御(Deception)是防守者得以观察攻...阅读全文

博文 2019-12-27 16:33:08 溪边的墓志铭

趣头条基于 Flink 的实时平台建设实践

本文由趣头条实时平台负责人席建刚分享趣头条实时平台的建设,整理者叶里君。文章将从平台的架构、Flink 现状,Flink 应用以及未来计划四部分分享。 一.平台架构 1.Flink 应用时间线 首先是平台的架构,2018 年 3 月之前基本都是基于 Storm 和 Spark Streaming 来做的。目前,基本已经把 Spark Streaming 和 Storm 淘汰了,主要都是 Flink SQL 来做的。起初还比较传统,一般是接需求然后开发类似于 Flink SQL 的任务,基本是手工作坊操作模式。 后来 Flink SQL 的任务逐渐多了起来,就开始考虑往平台化方向发展。大概在 2018 年 10 月份,我们开始搭建实时平台。当时设计实时平台时就直接抛弃了 Spark Strea...阅读全文

Golang利用select实现goroutine的超时控制

简单的说下select是干什么的? select用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的处理机制。当你发起一些阻塞的请求后,你可以使用select机制轮训扫描fd,直到被监视的文件句柄有某一个或多个发生了状态改变。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。 http://xiaorui.cc/?p=2997 本来只是想说下select,但又忍不住废话下说下epoll的处理流程: 我们可以把要监控读写的文件交给内核(epoll_add),而内核通过中断的方式得知事件通知. 这要比select好不少. 设置你关心的事件(epoll_ctl),比如读事件. 然后等(epoll_wait),此时,如果没有哪个文件有你关心的事...阅读全文

博文 2017-04-04 19:30:56 rfyiamcool

golang map to struct

map映射到结构体,这里只支持简单的数据类型,复杂的需要在拓展 package main import ( "errors" "fmt" "reflect" "strconv" "time" ) type User struct { Name string Age int8 Date time.Time } func main() { data := make(map[string]interface{}) data["Name"] = "张三" data["Age"] = 26 data["Date"] = "2015-09-29 00:00:00" result := &User{} err := FillStruct(data, result) fmt.Println(err, fmt...阅读全文

博文 2015-09-29 16:00:03 别人说我名字很长

聊聊BoltDB:简单使用

说明 -- BoltDB是一个嵌入式key/value的数据库,即只需要将其链接到你的应用程序代码中即可使用BoltDB提供的API来高效的存取数据。而且BoltDB支持完全可序列化的ACID事务,让应用程序可以更简单的处理复杂操作。 BoltDB设计源于LMDB,具有以下特点: * 直接使用API存取数据,没有查询语句; * 支持完全可序列化的ACID事务,这个特性比LevelDB强; * 数据保存在内存映射的文件里。没有wal、线程压缩和垃圾回收; * 通过COW技术,可实现无锁的读写并发,但是无法实现无锁的写写并发,这就注定了读性能超高,但写性能一般,适合与读多写少的场景。 最后,BoltDB使用Golang开发,而且被应用于influxDB项目作为底层存储。 使用 *安装BoltDB...阅读全文

博文 2017-09-09 14:15:59 丁凯

数据宝缘何受到CCTV的采访与报道?

2017年1月8日,在CCTV-发现之旅频道《揽胜神州》多彩贵州山水贵安中,贵州数据宝网络科技有限公司(以下简称:数据宝)的身影亮相荧屏之中——公司办公环境、职工面貌、平台模式以及历史使命都做了充分地展示说明。据了解,该频道由中央电视台新影集团打造而成,是国内首家以人文探索、科学揭秘、旅游地理为主的专业电视频道,也是独创的“空、地、网”跨界传播平台。目前,发现之旅频道已全面接入国内31个省级广电有线网络,落地城市超过240个,覆盖全国有线数字电视用户数超过1.75亿户、逾5亿人群。频道在全国101个数字频道中综合竞争力排名前10位,并已实现全年365天,全天24小时不间断播出,是国内数字电视频道的创举。那么,数据宝作为一个大数据资产运营平台,缘何受到如此礼遇? ![1.jpg](http:...阅读全文

饿了么 Influxdb 实践之路

前言 Influxdb是一个基于golang编写,没有额外依赖的开源时序数据库,用于记录metrics、events,进行数据分析。这篇文章谈论的influxdb版本在1.2.0以上。这篇文章只谈论influxdb在监控中的数据存储应用,不会谈论influxdb提供的整套监控方案。本文主要谈论五个方面:时序数据库选型、influxdb基本概念、存储引擎、实践、数据聚合。 选型 Influxdb vs Prometheus influxdb集成已有的概念,比如查询语法类似sql,引擎从LSM优化而来,学习成本相对低。 influxdb支持的类型有float,integers,strings,booleans,prometheus目前只支持float。 influxdb的时间精度是纳秒,prom...阅读全文

博文 2017-06-24 09:49:24 刘平

强强联手!数据宝与国家发改委直属机关国家信息中心的全资公司中国国信签署战略合作协议

祝贺中国国信信息总公司与数据宝今日签署战略合作协议。中国国信是国家发改委直属机关国家信息中心的全资公司、正在筹建的北京国际大数据交易所的大股东,数据宝是2017年度大数据流通交易排名最高的公司,双方强强联手,接下来将在政府大数据流通与交易领域展开深度合作。 2018年1月11日,数据宝与中国国信信息总公司在北京签署战略合作协议,双方就共同利用双方优势资源,最大发挥各自优势,共同发展大数据产业,未来在大数据产品开发、市场推广、品牌营销、渠道建设等方面进行深入合作,形成紧密的战略合作伙伴关系。 中国国信信息总公司(简称“中国国信”)于1992年经国务院批准设立,曾隶属于原国家计划委会,2002年成为国家信息中心的全资企业。国家信息中心是国家发展和改革委员会直属的副部级单位。 ...阅读全文

go 语言实现http请求转发

package main import ( "bytes" "flag" "fmt" "io" "log" "net" "os" "strings" "time" ) func main() { var srcHost, agencyHost string flag.StringVar(&srcHost, "srcHost", "", "srcHost") flag.StringVar(&agencyHost, "agencyHost", "", "agencyHost") flag.Parse() if srcHost == "" || agencyHost == "" { fmt.Fprintf(os.Stderr, "Fatal error: %s", "参数为空") os.Exit(...阅读全文

博文 2017-01-19 11:00:08 KelvinQ

网易云首倡中台方法论,发布全链路中台技术方案

当前数字经济领域最受关注的技术趋势当属中台,到底中台对企业发展的意义何在,企业应当如何建设中台?7 月 26 日,网易云在本届云创峰会上给出了完整的答案,从组织、技术、方法论的角度系统阐述了网易杭州研究院的中台实践与成果,并发布了全链路大数据产品和轻舟微服务产品,分别为企业构建数据中台和在线业务中台提供完整的技术和方法论支持。在主题演讲中,网易副总裁、网易杭州研究院执行院长汪源首次介绍了网易对中台的理解,他表示:“中台的本质是业务能力的沉淀,它对于企业提高需求响应、降低定制成本、实现弹性稳定、实现系统互通、提升运营效率和降低资源成本具有独特的优势,而中台的成功建设,需要组织、技术和相应的方法论的支撑,同时由于业务的复杂性,企业往往还需要借助专业的咨询服务,才能顺利建设中台。”据悉,网易是业界...阅读全文

博文 2019-07-30 21:32:39 Linux技术

Go Mvc的一个示例

下载 Go Mvc的一个示例,项目后台用户管理部分,包括用户的添加,修改,删除,分页,查询等操作。分享出来供大家参考。 data.sql 是表结构的创建SQL,运行前先创建数据表。DBConfig.xml是数据库连接字符串的设置,只所以独立出来一个文件,主要是方便程序里对文件进行修,力求简单,在程序运行前先设置Mysql连接信息。访问地址为:http://localhost:6080/Admin/AdminUser/Index 下...阅读全文

博文 2015-05-12 21:00:02 王岩0001

c语言客户端与golang服务端通信(网络字节序)

网络二进制数据转换: 总所周知,数据在tcp网络传输协议中传输的字节序是大端模式的,换句话说如果你要传输一个int32型的整数,那么假设其二进制小端模式表示为11111111111111110000000000000000那么其大端模式表示为00000000000000001111111111111111,利用c语言的htonl函数会将数据字节序转换成大端模式,在网络上面传输,接收端想解出原始数据只需要认为发送来的数据是大端模式,按照大端模式表示的数据解析便可 举个例子: 在C语言端发送一个int32_t数据过程如下: 发送端(c语言) char buf[100]; int32_t x = 100; ((int*)buf)[0] = htonl(x); send(clientfd, buf,...阅读全文

博文 2016-02-26 03:00:01 candycloud

金融领域的区块链项目 Chain

Chain是由一家刚成立两年的美国创业公司Chain推出,是一个企业级的区块链平台架构,可以让机构构造从零开始更好的金融服务。 作为区块链供应商,Chain在过去的两年多时间中获得了极好的信用。Chain通过将专属区块链和分布式总账的源代码进行开放,可以让更多的人在其软件上增加应用或是建立专属网络。Chain核心开发者版本的创建花费了数年时间,它是区块链供应商和金融机构合作的直接产物。由于这个开源软件针对的是金融领域,因此它允许用户创建和发行他们自己认为合适的数字资产。 Chain 开放标准在以下方面实现突破: • 全新的共识模型在不到一秒的时间里实现交易的最终完成,即便是交易量非常大也能支持 • 私密解决方案对区块链数据进行加密,并让相关对手方和监管者进行有选择的读...阅读全文

go语言的比较运算

首先区分几个概念:变量可比较,可排序,可赋值 可赋值 规范里面对赋值是这么定义的:https://golang.org/ref/spec#Assignability A value x is assignable to a variable of type T ("x is assignable to T") in any of these cases: x's type is identical to T. x's type V and T have identical underlying types and at least one of V or T is not a defined type. T is an interface type and x implements T. x...阅读全文

博文 2017-10-11 18:34:47 CodeGeek

全球云端数据仓库领导者 MaxCompute 将于本月10日正式开服美东节点

摘要: 作为全球云端数据仓库的领导者,阿里云MaxCompute为满足更多客户的业务需求,不断加快全球化部署的节奏。本月10日,美东(弗吉尼亚)节点会正式上线。届时,将会以最新版本产品向用户提供大数据计算资源和能力 作为全球云端数据仓库的领导者,阿里云[MaxCompute](https://www.aliyun.com/product/odps?spm=a2c4e.11153959.blogcont576224.10.69f543dcvDTYwy)为满足更多客户的业务需求,不断加快全球化部署的节奏。本月10日,美东(弗吉尼亚)节点会正式上线。届时,将会以最新版本产品向用户提供大数据计算资源和能力。 ![图片描述](http://img.blog.csdn.net/2018041...阅读全文

golang-利用反射给结构体赋值

由于想给一个结构体的部分成员赋值,但是有不知道具体名字,故将tag的json名字作为索引,按照json名字来一一赋值 //将结构体里的成员按照json名字来赋值 func SetStructFieldByJsonName(ptr interface{}, fields map[string]interface{}) { logger.Debug("fields:", fields) v := reflect.ValueOf(ptr).Elem() // the struct variable for i := 0; i < v.NumField(); i++ { fieldInfo := v.Type().Field(i) // a reflect.StructField tag := fi...阅读全文

博文 2017-11-06 01:00:01 fwdqxl

使用go语言和webview编写桌面应用

https://github.com/tenny1225/go-web-app 具体思路是使用http实现页面跳转,使用jsonrpc实现ui和go之间的数据通讯。 golang版本的webview使用的是github.com/zserge/webview这个库,自己封装了一套Page,实现页面之间的跳转。具体使用 package main import "time" func main() { StartWindow("golang html", 400, 400, true, func() { pager := NewPager(&MyPage{},&MyPageAction{}) pager.StartPage(0) }) } type MyPage struct { PageImpl...阅读全文

博文 2018-11-29 18:34:41 tenny1109

go-goroutine中的共享变量

自 : http://www.cnblogs.com/sevenyuan/archive/2013/04/18/3029388.html Happens Before 对于一个goroutine来说,虽然指令会被编译器乱序重排,但它其中变量的读, 写操作执行表现必须和从所写的代码得出的预期是一致的。但是在两个不同的goroutine对相同变量操作时, 可能因为指令重排导致不同的goroutine对变量的操作顺序的认识变得不一致。为了解决这种二义性问题,Go语言中引进一个happens before的概念,它用于描述对内存操作的先后顺序问题。如果事件e1 happens before 事件 e2,事件e2 happens after e1。如果,事件e1 does not happen bef...阅读全文

博文 2015-09-15 18:00:00 lmxmimihuhu

GoLang基础数据类型--->字典(map)详解

GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是函数吗?学过python的小伙伴可能会想到map这个函数。其实它就是Golang中的字典。下面跟我一起看看它的特性吧。map 也就是 Python 中字典的概念,它的格式为“map[keyType]valueType”。 map 的读取和设置也类似 slice 一样,通过 key 来操作,只是 slice 的index 只能是`int`类型,而 map 多了很多类型,可以是 int ,可以是 string及所有完全定义了 == 与 != 操作的类型。 一.map的赋值方式 1.先的声明再初始化最后赋值 1...阅读全文

博文 2017-10-19 16:00:01 yinzhengjie

golang防缓存击穿利器--singleflight

缓存击穿     给缓存加一个过期时间,下次未命中缓存时再去从数据源获取结果写入新的缓存,这个是后端开发人员再熟悉不过的基操。本人之前在做直播平台活动业务的时候,当时带着这份再熟练不过的自信,把复杂的数据库链表语句写好,各种微服务之间调用捞数据最后算好的结果,丢进了缓存然后设了一个过期时间,当时噼里啪啦两下写完代码觉得稳如铁蛋,结果在活动快结束之前,数据库很友好的挂掉了。当时回去查看监控后发现,是在活动快结束前,大量用户都在疯狂的刷活动页,导致缓存过期的瞬间有大量未命中缓存的请求直接打到数据库上所导致的,所以这个经典的问题稍不注意还是害死人     防缓存击穿的方式有很多种,比如通过计划任务来跟新缓存使得从前端过来的所有请求都是从缓存读取等等。之前读过 groupCache的源码,发现里面有...阅读全文

博文 2019-03-11 19:34:45 薛薛薛

golang channal中buf和for range一些用法

go的gocontinue用法实现了轻量级的线程,可以被大量创建。线程之间用channal通信,以下说说基本用法。 channal的buf c:=make(chan int ,3) 3就是设定的chanal的缓存量,缓存只意味着这个创建的channal可以同时存入3个数据,并不意味读channal时可以同时读出。 x:=<-c 读channal时仍然是以阻塞的方式一次一个地将数据读出。 当channal缓存中存在有效数据时,即使close掉channal,仍然可以读出buf里的数据。需要注意的是,从close掉的channal读数据时,channal是不阻塞的,当channal中的buf数据被读完时,仍然会以不阻塞的方式读出0值。 channal的for range c:=make(chan...阅读全文

博文 2015-12-21 16:00:01 iwbno1

Golang-btree包的主要方法和总结

B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,B 通常认为是Balance的简称 本篇介绍google的btree使用, 地址:http://github.com/google/btree 树的结构必须实现排序的规则 import ( "github.com/google/btree" ) type MyTree struct { Age int Name string } func (m *MyTree) Less(item btree.Item) bool { return m.Age < (item.(*MyTree)).Age } 创建树 btree.New(degree int)...阅读全文

博文 2020-03-03 15:33:21 八叉树

江西信息化中心主任金俊平一行莅临数据宝参观考察

2017年7月20日,江西信息化中心主任金俊平一行莅临chinadatapay.com中国数据宝上海分公司参观考察。来访领导对公司发展历程、平台模式以及产品应用场景进行详细地咨询了解,金主任称赞数据宝产品具备高效性、全面性和创新性,并希望与数据宝携手合作,共同发展大数据产业。 ![1.jpg](http://studygolang.qiniudn.com/170731/0f11f58859d208d130418859448f74eb.jpg) 江西省信息中心成立于1987年,是由省发改委管理的副厅级全额拨款的事业单位,也是全省政务系统信息专家最集中、技术力量最强、信息装备最先进的信息中心。经省编办批复,先后于2011、2015年分别加挂“江西省电子政务网络管理中心”、“江西省信用...阅读全文

Golang之bytes.buffer

bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建 一个 Buffer (其实底层就是一个 []byte, 字节切片)...阅读全文

博文 2016-01-29 00:00:01 grassroots2011

Golang实现简单tcp服务器04 -- 服务器的粘包处理

服务器的粘包处理 什么是粘包 一个完成的消息可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题 TCP粘包和拆包产生的原因 应用程序写入数据的字节大小大于套接字发送缓冲区的大小 进行MSS大小的TCP分段。MSS是最大报文段长度的缩写。MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以MSS并不是TCP报文段的最大长度,而是:MSS=TCP报文段长度-TCP首部长度 以太网的payload大于MTU进行IP分片。MTU指:一种通信协议的某一层上面所能通过的最大数据包大小。如果IP层有一个数据包要传,而且数据的长度比链路层的MTU大,那么IP层就会进行分片,把数据包分成托干片,让每一片都...阅读全文

博文 2015-06-02 23:00:16 victoriest

华为云 路由器的天坑

问题在华为云服务器上使用Golang直接监听UDP端口,外部将无法访问这些端口,因为华为云服务器的路由不会允许外部与这些UDP端口直接通信。即便在配置了安全组以后亦是如此。解决方案Golang 建立连接后,使用 conn.Write() 写入部分数据即可(无需指定目的地)。如此一来,华为云的路由器便能放行此 UDP 端口。问题猜测华为云路由器的 NAT 算法应该是华为自己魔改的。尽管外网 IP 对 服务器内网IP是 1对1 的,但路由器对外部的访问存在限制。需要像 IP限制锥形 NAT 一样向往外发送数据后才能正常使用...阅读全文

博文 2020-05-05 05:32:43 鹿沐浔

数据宝与天翼征信签署战略合作协议

2016年12月5日,数据宝ChinaDataPay.com与天翼征信有限公司签署《战略合作协议》。根据协议,双方秉承“致力于为广大客户提供更好的大数据信用评估和反欺诈服务”的宗旨,共同携手推进大数据征信领域的深度合作。数据宝公司将发挥其在“大数据淘宝”平台资源和创新优势,积极促进运营商征信产品在数据宝平台上的业务开展,共同为诚信社会的建设贡献一份力量。此次与天翼征信的战略合作,也是数据宝业务战略的进一步实施和践行。签约仪式上,数据宝董事长汤寒林与中国电信天翼征信总经理陈建立就双方未来合作业务进行了深入交流。 跨行业合作助力破除大数据征信壁垒 当前,依托于互联网、大数据、云计算技术的金融科技正盛行一时。大数据技术的突飞猛进,使得海量数据的采集与挖掘成为可能,促使国内开...阅读全文

Go channel

// xuhh_go_channel project main.go /* channel 1. channel 在读取数据的时候,如果此时通道内没有数据,则会阻塞。 在取数据的时候,如果此时通道内没有数据,则也会阻塞。 2. channel 在创建的时候会存在一个数据缓冲,如果通道内存入的数据超过缓冲,则就会崩溃。 range 在遍历 channel 的时候需要注意的问题: 1. range在遍历channel的时候,一直在运行,直到close(channel)的时候才会结束调用。 2. range会一直读取数据,如果没有数据,就会阻塞在那里。 len(channel):channel内未被读取的len cal(channel):channel的容量 select机制 : 1. 检查每个c...阅读全文