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

golang源码解读之map

golang的map实现并不是像c++一样使用红黑树,而是使用了hashmap,用数组来实现。 详细的实现后续补充,这里先做个备忘。 在iterate整个map的时候,使用delete是安全的。这跟c++是不一样的,c++在delete的时候,会导致整棵树发生变化,所以不能在迭代的时候删除元素。 那为什么golang的map是安全的呢,从源码来看,golang的map使用了桶的概念,元素是被hash到桶存储,每个桶预设是存储八个kv,而且在头部有一个uint8 tophash[8]的结构,存储每个key的高八位(即hash(key) » (64 - 8)),如果该位置未被放置元素,则有一个特殊的标志Empty。在插入删除的时候,首先会比较该uint8跟hash(key)是否相等。当然,桶还利...阅读全文

博文 2014-10-04 19:26:15 weijiaen

golang文件传输服务

续上篇,本篇介绍一个完整的golang文件传输服务器。 完整的代码可以看服务器,客户端 网络使用的框架如上篇介绍,这里就不再复述. 首先定义3个命令码: const ( request_file = 1 file_size = 2 transfering = 3 ) request_file用于请求文件传输,附带的命令参数是文件key. file_size用于通告客户端文件的大小. transfering用于传输文件内容,附带参数是文件内容的二进制数据. 服务器的文件配置示例 ../learnyouhaskell.pdf=haskell ../golang.1.1.2.chm=golang ../NodeJS.pdf=NodeJS 上面的文件配置了3个文件可供传输=左边是文件路径,右边是请求...阅读全文

博文 2014-10-04 19:25:59 sniperHW

【go语言】Goroutines 并发模式(一)

前言 由于前一阶段实习中接到的项目的告一段落,不知不觉便多出了许多空余的时间,于是就想总结一下最近因为个人兴趣而学习的一些东西。从这篇文章开始以及后面陆续的几篇关于GO语言的文章,均是博主最近对GO语言学习过程中的一些感悟、总结,类似于学习笔记的东西。记录下来并整理成博客一为对学习的知识做一个整理,二为分享出来给大家(因为国内关于GO语言的中文资料比较少),由于博主能力和知识有限,难免有所靡误,还望勘正。 由于Go最近一系列出色的表现,从一开始Go便紧紧地吸引住了我的眼球。类似于Erlang、Scala等语言,Go也是天生为并发而设计的语言,Go有着许多在原生层面对并发编程进行支持的优秀特性,比如大名鼎鼎的Goroutines、Channels、Select等原生特性。那么废话不多说,这一篇...阅读全文

博文 2014-10-04 19:26:21 何良瑞Nyanko君

被阿里云关停服务器始末

记录下最近使用阿里云服务器比较难受的一件事情。 背景:当前公司的业务服务是部署在阿里云上,大概 40+ ECS ,医疗行业。之前一直有一些不严重的报警,比如 OSS 服务器有一些违规图片呀(私密咨询,你懂的),又比如被检测到对外攻击(双手保证没干过非法的事情),已阻断该服务器对其它服务器端口(UDP:ALL)的访问等。大概4月底收到一封邮件,说是有一台服务器发现存在大量违法违规类内容,要求24小时内整改,逾期将关停服务器,因为确实没有做违法的事情,加上马上五一小长假就没有及时跟进,结果悲催了,五一回来第一天正写着代码,突然连不上了,一脸懵,一查才知道服务器被关停了。 image.png 刚开始还没意识到严重性,想着要是整改完成了应该再开通就行了吧,因为只是开发的机器,没有造成什么影响。 而事...阅读全文

博文 2019-05-10 17:35:15 epicmr

收集Go语言技术文档,欢迎提供线索!!

各位好! 我们最近计划对Go语言的技术文档进行一个系统的收集和整理,现在向大家公开征集,希望大家推荐一些不错的Go语言技术文档,中英文皆可。 我这里先列一些,欢迎补充。 GO官方文档地址 http://golang.org/doc/ 《the way to GO》的中文版:《go入门指南》https://github.com/Unknwon/the-way-to-go_ZH_CN GO语言(FAQ) 英文 http://golang.org/doc/faq 《Go Web 编程》开源图书 https://github.com/astaxie/build-web-application-with-golang 《学习Go语言》中文版 http://mi...阅读全文

26岁零基础转行学啥?培训班python

老男孩教育分享《Python全栈9期全套视频》,内容涵盖:Python基础、并发编程、前端、vue.js、MySQL、Django、Flask、Tornado、rest API、分布式爬虫、Linux架构、区块链、数据分析、人工智能等,感兴趣的请加微信号:life_kl0517,备注:9期 Python最近一两年的火热是有目共睹的,根据TIOBE最新排名,Python已超越C#,与Java,C,C++成为全球前5大流行编程语言之一。从云端、客户端,到物联网终端,Python应用无处不在。每年的python人才缺口人数都高达30万以上。 事实说明,互联网已经越来越广泛地深入到人们生活的方方面面,python技术服务市场需求空缺会越来越大,转行学Python的人也是越来越多。零基础转...阅读全文

阴历阳历的相互转换(支持1900~2100年)

背景 最近做到一个项目, 需要阴历与阳历的相互转换, 网上找了很多资料, 发现很多都是不准的, 但是给了我参考价值 算法 借用百度百科的 : 阳历 太阳历又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法。太阳历的历年近似等于回归年,一年12个月,这个“月”,实际上与朔望月无关。阳历的月份、日期都与太阳在黄道上的位置较好地符合,根据阳历的日期,在一年中可以明显看出四季寒暖变化的情况;但在每个月份中,看不出月亮的朔、望、两弦。如今世界通行的公历就是一种阳历,平年365天,闰年366天,每四年一闰,每满百年少闰一次,到第四百年再闰,即每四百年中有97个闰年。公历的历年平均长度与回归年只有26秒之差,要累积3300年才差一日。 阴历 希吉来历系太阴历,其计算方法是: 以太阴圆缺一周为一月,...阅读全文

博文 2018-09-09 14:34:40 兰茗翔

go 对 json 的处理

json不用多说,一种跨语言的交换协议,这里探讨一下Go语言对json的支持。 Go对于json有官方自己的解析包,先谈一下json的解码方式。解码的api如下: func Unmarshal (data []byte, v interface{}) 在go中,json解码的数据结构有两种,一种是解析到结构体,一种是解析到空的interface。 以数据 {"changes": [{"index":5, "armid":6},{"index":9,"armid":10}]} 为例 1,解析到结构体 package main import ( "encoding/json" "fmt" ) func main() { type change struct { Index int Armid i...阅读全文

博文 2014-10-04 19:26:53 houzongzhi

go语言 安装编译体验

直接下载 go的安装包,解压后,即可使用 需要配置对应的环境变量 export GOROOT=/home/go/go export GOBIN=$GOROOT/bin export GOPATH=/home/go/src export PATH=$PATH:$GOBIN:$GOPATH 比较重要的是 GOROOT 和GOPATH GOROOT 是安装包的地址,GOPATH为开发环境的地址。 在使用中 go build 文件 会编译出可执行文件 go install 会把 工程中使用的pkg编译成.a文件 go的 package查找路径 首先会从 GOPATH /src/ 中查找 然后会从GOROOT/src/pkg/中查...阅读全文

博文 2014-10-04 19:26:01 ssdxiao

golang学习笔记[4] 网络编程

golang搭建一个网站只是需要简单的几句就可以了 package main import ( "fmt" "log" "net/http" "strings" ) func sayhelloName(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数,默认是不会解析的 fmt.Println(r) fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息 fmt.Println("path", r.URL.Path) fmt.Println("scheme", r.URL.Scheme) fmt.Println(r.Form["url_long"]) for k, v := range r.Fo...阅读全文

博文 2015-06-17 20:03:43 zhouyunxuan

秋高气爽,好工作不可挡!

立秋之后天气渐渐凉爽小伙伴们找工作的心也跃跃欲试起来 那么什么样的工作机会让你收入体面、购买五险升职稳定,前景光明……话不多说先睹为快吧~铛铛,接下来是超正经滴的自我介绍姓名:行不更名坐不改姓,我就是我要家网络科技有限公司。特征:一家面向未来、拥有浓郁互联网思维的、从事互联网+行业定制软件的高新科技企业,汇聚来自北上广深一线城市技术大牛的自己的核心技术研发团队。目标:致力于解决传统行业痛点,为广大企业提供PC端、web端和移动端的研发、运营、推广、服务等一体化的行业解决方案。优势:公司高度重视知识产权保护,目前已顺利通过ISO五大国际标准化体系认证,拥有45个商标、17个计算机软件著作权证书,以及以隐号直拨为代表的诸多国家发明专利,彰显着公司虽系新创公司但拥有着较好的软实力(但这都不算什么,...阅读全文

博文 2019-08-21 16:02:53 我要家网络科技有限公司

兄弟连区块链培训带你实战GO案例(52)Go数值

区块链技术的火热是币圈内外的人都有目共睹的,可是当我们讲到这项技术究竟有多火的时候却不知道该如何说明。其实,这并不是很难,如果大家从该领域的就业市场变化入手,我们就能很快弄明白区块链技术到底有多火。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。 Go数值 Go有很多种数据类型,包括字符串类型,整型,浮点型,布尔型等等,这里有几个基础的例子。 packagemain import"fmt" funcmain(){ //字符串可以使用"+"连接 fmt....阅读全文

博文 2018-07-30 15:34:53 Delete_88c3

NSQ 源码阅读 (四) diskqueue 文件读写

引言 我们在这个系列第一篇文章中提到过,如果需要消息落地而对存储子系统的选择上,从速度上来说 文件系统>分布式KV(持久化)>分布式文件系统>数据库。而NSQ选择了文件系统作为存储子系统。这篇文章将重点介绍nsq 对于文件的操作。 何时写入文件? 在内存的msg chan buffer 已满的时候,会将msg 写入文件,代码如下: func (c *Channel) put(m *Message) error { select { case c.memoryMsgChan <- m: default: b := bufferPoolGet() err := writeMessageToBackend(b, m, c.backend) bufferPoolPut(b) c.ctx.nsqd.S...阅读全文

博文 2017-09-19 15:34:45 buptztd

先睹为快 ▏Kubernetes 1.5有哪些你不得不知的新功能?

今年9月份我们迎来了Kubernetes 1.4的惊喜发布,一大波新功能让人眼花缭乱。经过将近三个月时间的打磨,如今Kubernetes再推出新版本,翘首以盼的Kubernetes 1.5重磅发布,本次版本更新涵盖了**4个主题、12个新特性以及4个原有基础上的重大变更**。期待不如眼疾手快,翻阅文章内容,享受一场Kubernetes 1.5的饕餮大餐吧~ ## 主题简介: **1、StatefulSets (原名PetSets)** - StatefulSets 现在是 beta 版 (主要是修复和稳定性) **2、改善联邦支持** - 新命令:kubefed - DaemonSets - 部署 - Configmaps **3、简化集群部署*...阅读全文

面试:从尾到头打印链表

题目:从尾到头打印链表 要求:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 题解1:递归法 因为是从尾到头返回每一个节点的值,所以很容易想到如果从最后的节点将值放入数组中,然后再往前逐步将数据放入数组,最后回到头节点返回即可,可以想到递归就能轻松做到,只要注意递归函数的结束条件即可。 /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reversePrint(head *ListNode) []int...阅读全文

博文 2020-02-28 16:32:40 若鱼治水

面试:从尾到头打印链表

题目:从尾到头打印链表 要求:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例: ` 输入:head = [1,3,2] 输出:[2,3,1] ` 限制: 0 <= 链表长度="" <="10000 题解1:递归法 因为是从尾到头返回每一个节点的值,所以很容易想到如果从最后的节点将值放入数组中,然后再往前逐步将数据放入数组,最后回到头节点返回即可,可以想到递归就能轻松做到,只要注意递归函数的结束条件即可。 /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reversePrint(head *ListNode...阅读全文

博文 2020-02-28 16:34:31 若鱼治水