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

Go时间格式化的两种方法

时间格式在程序、数据库、日志信息中扮演着非常重要的角色,选择合适的格式能为我们的工作带来编辑。在Go语言中可以使用time包实现我们基础的需求。导入包import ( "time" "fmt" )时间输出以及格式化package main import ( "time" "fmt" ) //时间函数以及时间格式化 func main(){ now := time.Now() //Year = now.Year() //Mouth = now.Month() //Day = now.Day() //时间格式化输出 Printf输出 fmt.Printf("当前时间为: %d-%d-%d %d:%d:%d\n",now.Year(),now.Month(),now.Day(),now.Hour(...阅读全文

博文 2019-03-03 23:35:10 tianya1993

Golang GBK与UTF-8互转

package main import ( "code.google.com/p/mahonia" "fmt" ) func main() { //"你好,世界!"的GBK编码 testBytes := []byte{0xC4, 0xE3, 0xBA, 0xC3, 0xA3, 0xAC, 0xCA, 0xC0, 0xBD, 0xE7, 0xA3, 0xA1} var testStr string utfStr := "你好,世界!" var dec mahonia.Decoder var enc mahonia.Encoder testStr = string(testBytes) dec = mahonia.NewDecoder("gbk") if ret, ok := dec.Conve...阅读全文

博文 2015-02-03 10:00:02 ____追梦人

GO同包内不同文件方法引用问题

问题:GO语言同包内不同文件方法引用在本地LiteIDE中可运行,但在linux环境下报错: 在main.go中引用c2c_admin_base_info.go中GetcsChatCntTrend方法: 本地运行正常,但部署至linux服务器时,报错: 解决方案:将c2c_admin_base_info.go放到包data下 main.go c2c_admin_base_info.go 层级关系: 注:包和package有关系:main包和main函数比较特殊,是程序的入口,其他的包就要和文件夹名字一样(感谢扫盲的GO大牛...阅读全文

博文 2014-10-16 17:00:00 sea_198821

golang积累-时间、时区、格式的使用

以下文章转自自己的博客:http://blog.csdn.net/qq_26981997/article/details/53454606 , 对格式稍加整理。 前几天,因为需要实现海外服务端定时停机,涉及到时区的概念。网上搜索了一下,大部分都是谈time.Format中的Layout,非常不成体系,这里就简单总结一下其中的时间初始化、时区转化及格式转换。 开发中,我们对时间的使用是比较多的,其应用场景,按照使用概率,从大到小,通常是: 1. 获取当前或数据库中存储的时间 2. 比较两个时间点的先后 3. 显示打印时间 4. 时区转换 对应到go,也就是几个基本定义: 5. 时间点与时间段:Time,Duration。好比MVC中的M。 6...阅读全文

腾讯云+校园服务器,360元3年4个月

1.注册新用户,老用户可以直接注册个新号,使用绑定银行卡的手机认证即可。 2.点击**参团链接**:有效期到3月9号10点:https://cloud.tencent.com/act/campus/group/detail?group=15533 3.购买1年,付120元,可送4个月 4.可续费两年,付款240 5.最后可以花**360元**购买到**3年4个月**的服务器时长。 6.**配置**是**1核2G内存** ...阅读全文

如何编写一个分布式数据库

大家好, 我是开源项目 分布式 NewSQL 数据库 TiDB 和 分布式缓存 Codis 的 创始人 刘奇, 之前在京东, 豌豆荚做 infrastructure 相关的事情, 现在在创业 (PingCAP), 方向是分布式数据库. 最近如果有朋友关注开源社区或者HackerNews 的话,可能会发现一个叫 TiDB 的数据库项目吸引了一些眼球(https://github.com/pingcap/tidb ) 。 这是我们开源的第一个东西,短短几天得到了过千Star,特别感谢大家的支持和鼓励。 今天主要介绍一下 NewSQL 与 TiDB 的设计实现, 未来的一些 Roadmap 以及 一些做开源项目的心得。 大家可能经常用数据库,但是很少写一个数据库(实在是有点 hardcore),今...阅读全文

博文 2015-09-24 10:26:00 刘奇

Dota沦陷:OpenAI狂虐Dota2世界冠军

就在几小时前,在Dota 2国际邀请赛上Open AI公司的机器人在Dota2 1v1比赛中战胜了Dota人类顶级职业玩家Dendi。至此,继横扫人类国际象棋大师和围棋大师后,人工智能如今又将风靡全球的电子竞技游戏Dota2攻陷。 ​​​​ 期待 5V5 团战完虐人类? http://3g.163.com/tech/article/CRL2EVHV00098IEO.htm...阅读全文

ChinaDataPay中国数据宝与美国雅商顾问集团有限公司总裁洽谈合作事宜

10月17日美国雅商顾问集团有限公司总裁、美国林肯国际交流教育中心总裁、盈科芝加哥中国中心主任苏丰原一行,光临中国数据宝 ChinaDataPay.com进行业务合作洽谈,双方针对国际数据的开放性及国际教育大数据标准化的交流合作进行了深入探讨。 雅商顾问集团是美国知名跨境投资和EB-5投资咨询公司,主要客户包括全美各地商业项目开发商、EB-5投资区域中心、律师楼、政府单位等。苏丰原先生听取了数据宝公司的发展模式、业务规划等详细介绍。他表示,投资本身就具有一定的风险性,而且这种风险涉及移民绿卡风险及商业风险(本金能否收回),投资人拿到有条件绿卡只是这个移民系统工程的开端,并不能代表项目就可以能够顺利开动或运作,在整个过程当中,会有很多未知或人为因素可能导致项目进展出现困难或失败。因此...阅读全文

Golang time包

参考 golang time 包的坑 一、定义 不同于 java 饱受诟病的各种乱七八糟的时间处理相关的包,golang 的 time 包的设计可谓相当精巧。time 包用来描述“时刻”的类型为 Time,其定义如下: type Time struct { // sec gives the number of seconds elapsed since // January 1, year 1 00:00:00 UTC. sec int64 // nsec specifies a non-negative nanosecond // offset within the second named by Seconds. // It must be in the range [0, 999999...阅读全文

博文 2019-01-29 00:34:45 懒皮

Golang 的 map,slic 转 json 注意 chan

// You can edit this code! // Click here and start typing. package main import "fmt" import "encoding/json" type ChannelOperator struct { Oid string Aid string Name string Isonline bool Msgchan chan string `json:"-"` } type ChannelOperators struct { Op []ChannelOperator } func main() { fmt.Println("Hello, 世界") mm := make(map[string]*ChannelOperator...阅读全文

博文 2015-06-17 20:17:41 peta

Go命令行工具

ubuntu安装配置好go环境后,终端执行”go”则会显示出一些常用命令。其中有一些是在编译安装信令服务器时使用到的。 执行“go”后, Usage: go command [arguments] The commands are: build compile packages and dependencies clean remove object files env print Go environment information fix run go tool fix on packages fmt run gofmt on package sources get download and install packages and dependencies install compil...阅读全文

博文 2016-09-22 09:00:03 day_day_up1991

golang timestamp

package mmtime import ( "fmt" "strconv" "time" ) // FMT_TYPE_NOMAL const ( DATE_TIME_FMT = "2006-01-02 15:04:05" DATE_FMT = "2006-01-02" TIME_FMT = "15:04:05" DATE_TIME_FMT_CN = "2006年01月02日 15时04分05秒" DATE_FMT_CN = "2006年01月02日" TIME_FMT_CN = "15时04分05秒" ) const SecondInNano = 1000 * 1000 * 1000 //return 1441006057 in sec func GetTimestamp() int64...阅读全文

博文 2016-02-17 01:00:04 lcj0304

GoAgent原理和实现(一) :基本原理介绍

GoAgent对于每一个可以登上 blogger.com 的孩纸来说也许并不陌生。出于好奇,我准备学习学习它的工作原理,并打算自己动手写一个类似的东西。当然,前提不是照抄了。我打算记录下整个学习和实现它的过程,但由于能力有限,之中难免会出现错误,希望发现的童鞋可以帮忙指正。如果即使自己没能详尽的弄明白它的编程思想和手段,自己也要写出一个可以实现它的功能的近似的东西。 开始之前,我应该感谢一下阮成雄同学。他把GoAgent介绍给了我,才让我实现了“跨过长城,走向世界”的梦想。 如果你没有听说过GoAgent,但平日里苦于无数次的“连接被重置”错误,它将是你的终极解决方案。这里,我不想介绍它的安装和使用过程,需要的同学可以参考GoAgent图文设置教程,或是在code.google.com中搜索...阅读全文

go 获取操作系统纳秒级时间

代码如下: package main import ( "fmt" "time" ) func main(){ fmt.Println(time.Now().UnixNano()) } 环境: 本地Linux和远程Linux版本相同 本地编译执行结果可以获取到纳秒级别:例如:1519830943640340440 但是当拷贝到远程服务器时,直接结果为:1519831600789612000 如果在远程服务器重新编译,则可以获取纳秒级数据? 神马原因...阅读全文

通过搭建wordpress博客来学习云服务器的详细使用方法

云服务器越来越普及,很多企业及个人都纷纷上云,从传统的虚拟主机或者托管服务器上把网站和应用迁移到腾讯云、阿里云、百度云等这些云服务器上。云服务器相比传统服务器的优势有很多,比如安全性、性价比、稳定性、可用性、便捷性等等各方面,大家可以百度自己了解,我就不在这里多说了。虽然云服务器就这么多的优点,但真正会用,能用好的站长朋友们还不是很多,今天,就由提供阿里云、腾讯云1折秒杀活动的“尊托云数-9i0i.com”带着新手站长们,来通过搭建wordpress博客来学习云服务器的详细使用方法:首先,我们从云服务器的选购开始,建议选择的云服务商:阿里云、腾讯云、华为云、百度云,因为这些大的品牌能让你免除后顾之忧,持续经营你的网站,如下图:在选购云服务器时,有区域、CPU、内存、带宽、系统镜像这几个要素需...阅读全文

golang web编程:简单的会话(使用sessions包)

网站不能根据来访的ip来确定来访者的身份,ip加端口号也不行.一般都是通过用户名密码来确定用户身份的,但用户也不能每次访问网页时都手动输入一次用户名和密码啊,这样太累了. 一个最简单的想法就是让浏览器帮我们输入,但是http协议本身没有夹带用户名密码的功能,而且有时我们的需求又不只是用户名和密码这么简单,比如说我们还想在浏览器和网页服务器之间传递用户的id,上次访问网站的时间等,每个网站的要求都不一样,所谓众口难调. 现在的做法是,浏览器允许网页服务器在浏览器里存一小段数据,什么数据都行,你自己的格式自己去解析就好了.具体的做法是,浏览器第一次访问服务器时,服务器应答中就会包含需要浏览器请求的数据,浏览器收到服务器的应答,并把数据保存起来.当浏览器再次访问服务器时,浏览器就在请求里包含这段数...阅读全文

博文 2015-06-17 20:17:43 dean_go

go语言http服务处理image/css/js等静态文件

go语言实现http服务器时如果处理静态文件,需要用到http.ServeFile: func ServeFile(w ResponseWriter, r *Request, name string) { dir, file := filepath.Split(name) serveFile(w, r, Dir(dir), file, false)} 首先根据请求路径r.URL.Path判断是否包含静态文件目录,如果存在则直接返回: img_dir := "/home/qinpeng" if strings.HasPrefix(r.URL.Path,"/img"){ file := img_dir + r.URL.Path[len("/img"):] f,err := os.Open(fil...阅读全文

vscode-golang跳转定义无效问题

问题发现: 本来可以进行"ctrl"+点击或者F12,进行跳转定义的方式,突然失效了 问题分析: 1.辅助工具是否关闭 解决方案,进入首选项,设置,查找go.docsTool,选项选择为 gogetdoc,这一步可能会提示你没有安装gogetdoc,那就 go get -u -v github.com/zmb3/gogetdoc image.png 结果:测试跳转,还是不行 2.判断工具是否有效 解决方案:资料显示,方法确实没有错,但是我注意到了一点,其中的一句话 image.png 他的意思是,这个工具,在使用语言服务器时,不适用。怀着试一试的心情,去找找这个东西,慢慢向下找。哎呀,还真有哦,然后把这个取消掉。它会提示你重启生效,然后重启,问题解决。~~~ image.png 只为了解决问...阅读全文

博文 2019-10-10 22:33:02 aside section ._1OhGeD

go 时间格式风格详解

一段代码 这里有一段代码 play 更能解说 layout. 可以看出, go 自动识别并转换 time 字符串是完全可能的. time package go 的time package 提供了time.Format函数,用来对时间进行格式化输出。 类似的还有time.Parse用来解析字符串类型的时间到time.Time。这是两个互逆的函数。 问题是,go 采用的格式化 layout 和我们以往所用的任何经验都不同。以至于初次接触总是一头雾 水。 其实 go 提供的这个 layout 对算法的实现非常科学高效,而且很规律。下面我们详细分解下。 直接上个对应表 前面是含义,后面是 go 的表示值,多种表示,逗号”,“分割 月份 1,01,Jan,January 日 2,02,_2 时 3,0...阅读全文

博文 2014-10-04 19:26:12 喻恒春

golang 实现clock

在网上看到某人实现了一个简单的clock,发现代码编译不过,略作修改: 1 package main 2 3 import ( 4 "bufio" 5 "image" 6 "image/color" 7 "image/png" 8 "math" 9 "os" 10 "time" 11 ) 12 13 const clock_size = 200 14 const radius = clock_size / 3 15 16 var colour color.RGBA 17 18 func circle(clock *image.RGBA) { 19 for angle := float64(0); angle < 360; angle++ { 20 radian_angle := math.P...阅读全文

博文 2014-10-04 19:26:07 ronghantao

阿里巴巴 Sigma 调度和集群管理系统架构详解

阿里系统软件技术 阿里系统软件技术 统一调度体系 始于 2011 年建设的 Sigma 是服务阿里巴巴在线业务的调度系统,围绕 Sigma 有一整套以调度为中心的集群管理体系。

image
Sigma 有 Alikenel、SigmaSlave、SigmaMaster 三层大脑联动协作,Alikenel 部署在每一台物理机上,对内核进行增强,在资源分配、时间片分配上进行灵活的按优先级和策略调整,对任务的时延,任务时间片的抢占、不合理抢占的驱逐都能通过上层的规则配置自行决策。SigmaSlave 可以在本机进行容器 CPU 分配、应急场景处理等。通过本机 Slave 对时延敏感任务的干扰快速做出决策和响应,...阅读全文

博文 2018-08-27 15:35:21 阿里系统软件技术

golang JWT的简单使用

JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 JWT和session有所不同,session需要在服务器端生成,服务器保存session,只返回给客户端sessionid,客户端下次请求时带上sessionid即可。因为session是储存在服务器中,有多台服务器时会出现一些麻烦,需要同步多台主机的信息,不然会出现在请求A服务器时能获取信息,但是请求B服务器身份信息无法通过。JWT能很好的解决这个问题,服务器端不用保存jwt,只需要保存加密用的secret,在用户登录时将jwt加密生成并发送给客户端,由客户端存储,以后客户端的请求带上,由服务器解析jwt并验证。这样服务...阅读全文

博文 2018-10-31 16:34:58 我的饭卡呢

golang 通过 qq 开通smtp 发送邮件的 全步骤(tls +ssl)

首先 打开邮件 2 找到 》设置 》账户 选项卡 这里会根据你的账号安全添加密保 ,添加密保 后 会给你 一个 密钥 (2)验证密保 (3)获取授权码 这个授权码 一会会用到 提前须知 :ssl, tls, 是不同的协议 首先 我们用starttls 协议 写 一个 简单的 例子 1 ============= = 1 start ===================== package main import ( "net/smtp" "strings" "fmt" ) func SendToMail(user, pwd, host, to, subject, body, mailtype string) error{ hp := strings.Split(host, ":") aut...阅读全文

博文 2018-01-15 15:33:06 lwtcumt

golang根据配置的时间和时区计算定时任务是否到了刷新时间

起因 思路 细化 遗留问题 起因 很多时候我们会碰到这样的需求,每天某个时候需要定时执行某个任务,比如定时发邮件、定时发推送消息等,而这个定时是针对当地时间的,比如每天中午12点发推送消息给玩家提醒可以上线领金币啦。 然而,中国的12点和越南的12点就不是同一个12点,所以需要通过时区计算是否到了该执行任务的时候。 思路 先来看一下如何根据时区计算约定的时间。假设现在需要晚上20点,执行任务,时区为西3时区。首先生成一个格林威治时间的20点 utcTime := time.Now().UTC() targetTime :=time.Date(utcTime.Year(),utcTime.Month(),utcTime.Day(), 20, 0, 0, 0, utcTime.Location(...阅读全文

博文 2016-11-04 14:00:04 changjixiong

存储组织协调引擎 REX-Ray

REX-Ray 是一个 EMC {code} 团队领导的开源项目,为 Docker、Mesos 及其他容器运行环境提供持续的存储访问。其设计旨在囊括通用存储、虚拟化和云平台,提供高级的存储功能。 当前支持的系统: * Ubuntu * Debian * RedHat * CentOS * CoreOS * OSX 运行时 CLI:

$ export REXRAY_STORAGEDRIVERS=ec2
$ export AWS_ACCESSKEY=access_key
$ export AWS_SECRETKEY=secret_key
$ rexray vol...阅读全文

玩转云企业网(上):为什么需要云企业网

摘要: 我们在去年12月发布了网络家族新产品 -- 云企业网(原名云骨干网),英文名字叫Cloud Enterprise Network。经过海内外近半年的邀测和公测,云企业网于今年5月正式商业化了。我们之前发表过博客,一张图看懂网络产品云企业网,简单介绍了这款产品。 我们在去年12月发布了网络家族新产品 -- 云企业网(原名云骨干网),英文名字叫Cloud Enterprise Network。经过海内外近半年的邀测和公测,云企业网于今年5月正式商业化了。我们之前发表过博客,一张图看懂网络产品云企业网,简单介绍了这款产品。这次,将通过两篇文章让大家真正了解云企业网,并学会使用它。上篇将会介绍产品价值与功能,下篇着重讲解如何使用产品,敬请期待。 云企业网是一张什么网? 云企...阅读全文

[go]增加并发控制的并发ping

参照anyevent/coro版的ping功能实现. golang没有方便的pop/shift语法,只能自己按数组进行计数 /*gorouting版本的并行ping */ package main import ( "ping" "fmt" "time" "strconv" ) var fin chan string; //用于实现joinall //go没有pop/shift操作,只能自己计数 var cur int /*定义协程 ping单个目标 输入:目标ip/域名 输出:结果, 时延 */ func doit(){ if cur >= len(iplist){ return } ip:=iplist[cur] cur++ go pingr(ip,1000) } func pingr(...阅读全文

博文 2015-06-18 09:09:11 laputa73

如何优雅的关闭net.Listeners

使用golang做网络应用时,创建网络服务器时需要用到net.Listeners生成一个监听器,阻塞处理连接到服务器的请求,如下所示: func main(){ ln, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", 1234)) if err != nil { log.Fatal(err) } log.Println("server start...") for { conn, err := ln.Accept() if err != nil { log.Fatal(err) } handle(conn) } } 但是ln.Accept()是一个阻塞函数,我们无法在某时刻通知并令其退出(处于一个for循环之中),并且有时我们需要在关闭监...阅读全文

博文 2017-07-18 09:06:25 qinxiuchen

【深圳云栖大会】阿里云弹性计算ESSD云盘产品全面解析

摘要: 2018年3月29日,在**深圳云栖**大会弹性计算技术专场上,来自阿里云弹性计算产品专家崆闻做了主题为**《百万级别IOPS云盘产品全面解析》**的技术分享,主要就阿里云新一代ESSD云盘的产品特点、适用业务场景和对业务的实际性能提升进行了深度解读。 2018年3月29日,在深圳云栖大会弹性计算技术专场上,来自阿里云弹性计算产品专家崆闻做了主题为《百万级别IOPS云盘产品全面解析》的技术分享,主要就阿里云新一代ESSD云盘的产品特点、适用业务场景和对业务的实际性能提升进行了深度解读。 阿里云于2018年1月9日正式推出新一代ESSD云盘产品,现场也有观众提问为什么阿里云要推出ESSD云盘这款产品,阿里云产品专家崆闻谈到,当前正处在一个数据爆炸性增长的时代,业务的快速奔跑...阅读全文

主题 2018-04-04 10:20:32 maoer

全球访问无障碍 阿里云直播全球加速正式开放试用

摘要: 阿里云直播全球加速为用户在视频采集地域与播放源站地域建立跨域高速通道,实现采集地域与播放地域间以最短,最优链路传输,帮助企业解决全球用户访问卡顿或者延迟过高的问题。 在全球互联网飞速发展的今天,越来越多的网民希望通过网络直播获取跨国资讯,尤其是重要的新闻事件、赛事盛况,此类内容吸引着全球各地的用户眼球。它具有实时性高、播放时间点集中等特点。但也面临着因网络带宽、分发加速受限而来的种种问题。 为了解决跨国传输缓慢,延迟造成用户体验不佳的问题,阿里云直播全球加速功能应运而生。它为用户在视频采集地域与播放源站地域建立跨域高速通道,实现采集地域与播放地域间以最短,最优链路传输,帮助企业解决全球用户访问卡顿或者延迟过高的问题。 阿里云全球加速直播架构图 从下面的架构图可以看...阅读全文

write smart proxy step by step 2 (单节点转发)

胡歌 写在前面根据第一篇理论内容,本文基于 Redis Client Protocol 实现最精简的单机转发版本。不包含连接池,网络超时,命令检测,集群,性能统计和服务注册等功能。Archer该版本 Proxy 命名为 Archer, 意为弓箭手,熟悉 War3 的老玩家肯定知道,三本弓手很厉害。后续的开发也都是基于这个版本,代码大家感兴趣可自行下载。https://github.com/dongzerun/archer数据结构 For Simple Strings the first byte of the reply is "+" For Errors the first byte of the reply is "-" For Integers the first byte of th...阅读全文

博文 2017-02-10 14:43:08 董泽润

开启go 03.Go语言logo和版本

一、 Go的logo 1.1 Go语言的logo Go语言的logo就是很简洁的GO两个字母。 1.2 Go的吉祥物 Go之所以叫Go,是想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。 gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物, 它的中文名叫做囊地鼠,他们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。 二、Go的官网 三、 Go语言主要发展过程 2007年9月,雏形设计 ,Rob Pike(罗伯.派克) 正式命名为Go; 2008年5月,Google全力支持该项目; 2009年11月10日,首次公开发布,Go将代码全部开源,它获得了当年的年度语言; 2011年3月16日,Go语言的第一个稳定(stable)版本r56发布...阅读全文

博文 2019-11-23 23:33:09 CrazyWing

go godoc 文档服务器

搭建公司内部自己的 godoc 服务器 早期的go项目规范: 必须在GOPATH下 项目的包的命名路径与git的路径关联 引入go modules之后,项目可以不在GOPATH内,包的命名也可以不包含git的路径。 godoc 生成的文档,只扫描GOPATH与GOROOT内的代码,在此之外的代码无法生成在线文档,详见go-issue-26827 。 基于此历史背景,一个较好的go项目规范如下: 项目统一命名规范带上git路径,格式:module git.your-company.com/{business}/{your proj name}为了兼容历史与 godoc 方便生成文档。 go项目不强制放在GOPATH内 使用go modules时,module 的命名规范参照第一条 godoc ...阅读全文

博文 2020-03-11 13:32:52 cdz620

reminder提醒记

Repo地址:https://github.com/guoruibiao/reminder 基于艾宾浩斯遗忘曲线的reminder 先前就写了几篇关于艾宾浩斯遗忘曲线相关的博客,比如浅读艾宾浩斯遗忘曲线 期间用了段Mac自带的日历工具,行程安排这块不太好同步,需要向系统申请权限,我本人对macOS开发不熟悉,就没有在上面花心思。也曾用过influxdb作为存储介质,但是有一点小材大用的感觉,不够灵活。 昨天TB去了密云附近,爬了司马台长城,逛了古北水镇。全天走了20公里,真的是腿酸脚麻。一路上大家说说笑笑,聊天的时候发现平时积累的一些小知识点忘得是一干二净,更是提醒了我给自己做一个小工具,来时不时地提醒我该复习哪些知识了。 晚上构思了下大致的雏形,早上起来就开始编码了,因为是基于艾宾浩斯遗忘...阅读全文

博文 2019-04-14 22:34:43 尽情的嘲笑我吧

[新品发布]全球首个百万IOPS云盘来了 阿里云推出超高性能云盘ESSD

摘要: 搭配ECS云服务器使用, ESSD可提供单盘高达100万IOPS的随机读写能力和低至0.1毫秒的单路时延,相比SSD云盘分别提升了50倍性能上限和降低80%读写时延,单台云服务器整体存储性能提升500%. 点此查看原文:http://click.aliyun.com/m/40293/ **阿里云发布超高性能ESSD云盘 100万IOPS随机读写刷新纪录** 1月9日,阿里云正式推出全球首个跨入IOPS百万时代的云盘——ESSD,单盘IOPS高达100万,这是阿里云迄今为止性能最强的企业级块存储服务。 搭配ECS云服务器使用, ESSD可提供单盘高达100万IOPS的随机读写能力和低至0.1毫秒的单路时延,相比SSD云盘分别提升了50倍性能上限和降低80%读...阅读全文

标准库time中的常用时间转换方法

package main import ( "fmt" "time" ) func main() { //1、指定年月日时分秒,创建一个时间 oneDay := time.Date(2019, 3,6, 22, 20, 0, 0, time.Local) //2、指定当前时间 oneDay = time.Now() //3、输出指定时间oneday的字符串格式,如:20190306222400,年月日时分秒 //如果要输出如:2019-03-06 22:27:27,则format是:%04d-%02d-%02d %02d:%02d:%02d dayStr := fmt.Sprintf("%04d%02d%02d%02d%02d%02d", oneDay.Year(), oneDay.Mont...阅读全文

博文 2019-03-07 14:27:35 xiaoxuan

闭包与普通函数的区别

闭包与普通函数**最大的区别是有两个return, 而且都被顺序执行了**,普通函数只能return一次就彻底跳出函数了。比如: 1,func closure1() func() int{ 2, i :=0 3, return func() int{ 4, i++ 5, return i 6, } 7,} 8, f := closure1() 9, fmt.Println(f()) 10,fmt.Println(f()) 11,fmt.Println(f()) 12,fmt.Println(f()) 此例中1-7行定义了闭包函数closure1,8-12行为...阅读全文

弱网络下,非幂等性操作的分布式微服务处理

背景 在浏览器访问服务器时,网速非常慢的情况下。为了获取结果,用户常常会进行重复点击操作。这将会使得一些非幂等性操作的操作结果变得非常不可靠。 举例而言,用户进行付款操作就是一个非幂等性操作。 非幂等性,简单而言,就是一个操作是不可重复的。 方案 在用户浏览器cookie中,加上idempotent_token ,然后在各个微服务中使用拦截器拦截,并且使用分布式锁 进行全局锁定。 由于微服务是分布式的,那么将会出现一种情况是,在某种负载均衡的策略,用户在访问仓库微服务(1),并且同时访问仓库微服务(2),并且同时对库存进行修改。这种情景是合乎情理的,并且他们将会带上同一个idempotent_token进行仓库的微服务操作。这个时候是必须要使用分布式锁进行加锁操作。 原理与实现 拦截器 /*...阅读全文

博文 2017-10-13 13:04:52 浑身演技

Golang的socket编程(四):解决粘包问题及制定通信协议

一、概述前面已经完成了一个完美的多并发CS模型,但美中不足的是没有解决粘包问题。 1.1 什么是粘包问题?在网络传输中,数据都是通过数据流来传输的,也就是以比特来传输。传输的过程中我们可能会遇到各种各样的问题导致数据传输异常,最常见的就是网络发送时延。网络时延会导致服务端此时收到的数据的时间有偏差,然后就导致数据接收数据的时间不一致。 可以看一个例子,修改上篇的服务端和客户端为以下内容: 1234567891011121314151617for { data := make([]byte, 2048) n, err := conn.Read(data) if n == 0{ fmt.Printf("%s has disconnect", conn.RemoteAddr()) break } ...阅读全文

博文 2018-05-17 09:28:49 马谦的博客

mqant框架概述

mqant经过4个月的发展,目前已在github上获得了300多的star,相信在大家的努力下mqant将在未来更加光彩 现如今只有多进程的架构才能达到支撑较多在线用户,降低服务器压力,降低单点故障所带来的影响等要求,因此一个真正高可扩展的游戏运行架构必须是多进程的。 然而在游戏的开发和运营也是按步骤阶段性进行的,尤其是现如今服务器硬件设备配置也越来越高的前提下,在游戏刚开始运营时单台服务器就足够支撑了,况且多进程部署所带来的运维成本也相对较高。 mqant的设计思想是在能用单台服务器时能让充分挖掘服务器的性能,而在需要多进程时再通过简单的配置就可以实现分布式部署。 mqant游戏服务器的运行架构 mqant服务器是按模块来划分功能模块的,例如 用户管理,在线聊天,战斗平台等等都应该划分为独...阅读全文

博文 2017-07-29 17:05:04 liangdas

中介者模式 Go语言实现

对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系。虽然将一个系统分割成许多对象通常可以增强可复用性,但是对象间相互连接的激增又会降低其可复用性,大量的相互连接使得一个对象似乎不太可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,而且对系统的行为进行任何较大的改动都会十分困难。结果是你不得不定义大量的子类以定制系统的行为。因此,为了减少对象两两之间复杂的引用关系,使之成为一个松耦合的系统,我们需要使用中介者模式. 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。...阅读全文

博文 2016-04-20 03:00:02 readen

goroutine请求http服务器时很快就阻塞,请问什么原因,或者如何定位问题?

###goroutine请求http服务器时很快就阻塞,请问什么原因,或者如何定位问题? 在做一个设备管理的功能,通过访问http服务器的REST ful接口确定设备是否在线,30s访问1000个设备,目前写的方案大致如下 其中看到goroutine的数量并不是很高,但很快程序就不动了,cpu,内存也并没有占用过高 ```golang package main import ( "fmt" "net/http" "runtime" "time" ) func a() { b() //..... } var bb = 0 func b() { fmt.Printf("b:%d\n", bb) bb++ resp, ...阅读全文

Golang学习笔记

---runtime包 获取GORootruntime.GOROOT()获取操作系统runtime.GOOS()获取逻辑cpu数量untime.NumCPU()设置程序执行的最大cpu数量n: = runtime.GOMAXPROCS(runtime.NumCPU)---OS包os.open() //*打开文件* , 只限于读取文件os.OpenFile(file string, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm) // *可读可写* 文件time 包t1 := time.Now() //初始化一个时间s1 := t1.Format("2006年1月2日 15:04:05") //123456 必需使用这个日期来做格式的模板s2 ...阅读全文

博文 2020-01-07 19:32:49 stardust_01a0

golang学习笔记6:时间和日期

time 包为我们提供了一个数据类型 time.Time (作为值使用)以及显示和测量时间和日期的功能函数。当前时间可以使用 time.Now() 获取,或者使用 t.Day() 、 t.Minute() 等等来获取时间的一部分;你甚至可以自定义时间格式化字符串,例如: fmt.Printf("%02d.%02d.%4d\n", t.Day(), t.Month(), t.Year()) 将会输出01.09.2018 。Duration 类型表示两个连续时刻所相差的纳秒数,类型为 int64。Location 类型映射某个时区的时间,UTC 表示通用协调世界时间。包中的一个预定义函数 func (t Time) Format(layout string) string 可以根据一个格式化字符...阅读全文

博文 2018-10-15 09:34:42 编程老司机

golang包time用法详解

在我们编程过程中,经常会用到与时间相关的各种务需求,下面来介绍 golang 中有关时间的一些基本用法,我们从 time 的几种 type 来开始介绍。 时间可分为时间点与时间段,golang 也不例外,提供了以下两种基础类型 时间点(Time) 时间段(Duration) 除此之外 golang 也提供了以下类型,做一些特定的业务 时区(Location) Ticker Timer(定时器) 我们将按以上顺序来介绍 time 包的使用。 时间点(Time) 我们使用的所有与时间相关的业务都是基于点而延伸的,两点组成一个时间段,大多数应用也都是围绕这些点与面去做逻辑处理。 初始化 go 针对不同的参数类型提供了以下初始化的方式 // func Now() Time fmt.Println(t...阅读全文

博文 2019-04-23 04:34:39 佛心看世界

紧急求问 udp问题

请教一个问题:我多个硬件设备通过udp跟服务器连接,他会隔1小时给服务器去上报数据 每个设备是有唯一的标识码IMEI 现在想通过服务器把数据发给指定设备 该怎么操作 之前的做法是 当设备连接服务器时就把UDPAddr的对象存到一个map里 key值为imei号 但是设备连着 第二次发报文后 ip是不会变的 端口变了 我想用WriteToUDP 就找不到接受对象...阅读全文

# golang JWT的简单使用

golang JWT的简单使用 JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 JWT和session有所不同,session需要在服务器端生成,服务器保存session,只返回给客户端sessionid,客户端下次请求时带上sessionid即可。因为session是储存在服务器中,有多台服务器时会出现一些麻烦,需要同步多台主机的信息,不然会出现在请求A服务器时能获取信息,但是请求B服务器身份信息无法通过。JWT能很好的解决这个问题,服务器端不用保存jwt,只需要保存加密用的secret,在用户登录时将jwt加密生成并发送给客户端,由客户端存储,以后客户端的请求带上,由...阅读全文

博文 2019-02-05 17:34:41 w85278161

Go基础学习记录之阻止Session劫持(Preventing session hijacking)

阻止Session劫持(Preventing session hijacking) Session劫持是一种常见且严重的安全威胁。在与服务器通信时,客户端使用Session ID进行验证和其他目的。不幸的是,恶意第三方有时可以跟踪这些通信并找出客户端Session ID。本次分享,将向您展示如何为教育目的劫持Session。 Session劫持过程 以下代码是count变量的计数器: // WelcomeLogin 欢迎登录页 func WelcomeLogin(w http.ResponseWriter, r *http.Request) { session, err := appSession.SessionStart(w, r) if err != nil { fmt.Fprintf(...阅读全文

博文 2018-11-06 14:34:44 DurbanZhang