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

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

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内存** ...阅读全文

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 懒皮

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

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

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

摘要: 我们在去年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

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

新装Linux操作系统后,要保留哪些自启动服务?

和Windows系统一样,Linux服务器运行过程中也会一些没用的软件服务默认运行,这些占用了很多系统资源,也会有安全隐患,所以一般是建议关闭的。那么,工作中Linux主机到底需要有哪些开机自启动服务呢? 新装Linux系统之后,有必要保留的开机自启动服务有5个: Ø sshd:远程连接Linux服务器时要用到,所以必须开启,不然就无法提供远程连接服务了。 Ø rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中。 Ø network:系统启动时,如果想激活或关闭各个网络接口的话,可以考虑开启。 Ø crond:用于周期性的执行系统及用户配置的任务计划。有需要时开启。几乎是运维工作中必须要用的一个软件。 Ø sy...阅读全文

博文 2019-11-15 16:40:15 zhouzhou2018

golang snippet 之 time 使用

时间格式化与解析 // 获取当前时间 t := time.Now() // 2020-05-13 22:23:56.253851 +0800 CST m=+0.001626130 fmt.Println(t) //获取当前年月日,时分秒 y := t.Year() //年 m := t.Month() //月 d := t.Day() //日 h := t.Hour() //小时 i := t.Minute() //分钟 s := t.Second() //秒 fmt.Println(y, m, d, h, i, s) // 2020 May 13 22 41 20 // 获取当前时间戳 (int64 数字) timestamp := t.Unix() // 1589379836 fmt.P...阅读全文

博文 2020-05-13 23:32:44 happen