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

优秀的 Go 存储开源项目和库

可以看到,今年谷歌家的 Go 编程语言流行度有着惊人的上升趋势,其发展也是越来越好,因此本文整理了一些优秀的 Go 存储相关开源项目和库,一起分享,一起学习。 存储服务器(Storage Server) Go 实现的存储服务器 minio - Minio 是一个与 Amazon S3 APIs 兼容的开源对象存储服务器,分布式存储方案 rclone - “用于云存储的 Rsync” - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile… camlistore - Camlistore 是你的个人存储系统:一种存储、同步、共享、建模和备份内容的方式 torus - ...阅读全文

博文 2017-02-14 11:00:08 编辑部的故事

vendor

# 引言 Go Vendoring是一种对GOPATH的扩展,其意义在于:让原生的工具链无缝支持第三方库的版本管理,如`go build/run/test`. 在Go1.5之前,多个项目(ProjA,ProjB)如果想要引用某个第三方库的不同版本,可以在编译时修改GOPATH,将对应的第三方库加入GOPATH中,这样一来势必需要在原生工具链上层有一层脚本或Makefile抽象. Go Vendoring解决了这个问题,实现了`GOPATH`的扩展:将项目ProjA依赖的外部库代码放到具体位置的时候,直接用原生的Go Command是可以找到、识别这些代码文件(就好像修改了`GOPATH`一样). Vendoring是Go1.5中引入的[实验特性](https://do...阅读全文

golang for,range的坑

for,range 的k,v变量在整个遍历过程中共用,不能直接进行引用传递,即地址传递,但循环内定义的变量只能为当前循环所使用。 错误代码: package main import ( "encoding/json" "log" "time" ) type test struct { Name string `bson:"name" json:"name" yaml:"name"` // Command name (unique on the profile) } func (test test) String() string { out, err := json.Marshal(test) if err != nil { return err.Error() } return strin...阅读全文

购买国内虚拟主机怎样选择机房?需要注意什么?

购买了国内虚拟主机,怎样选择机房,成了大家头疼的事情,毕竟没有好的机房去辅助,再好的虚拟主机也不能很好的发挥。 国内虚拟主机机房的选择主要考虑是速度,安全等,另外举例网站访客的物理位置靠近,举例越短访问速度快而且稳定。 分两方面考虑,地理位置和是否备案 从地理位置上。一般情况下我们建议选择离自己目标用户所在地域最接近的数据中心,这样可以进一步提升用户访问速度。比如:华北用户推荐选北京和青岛地域,华东用户选杭州地域,华南地域用户可选广州和深圳地域。机房越近,你搭建的网站就经常有秒开的刺激。与自己的电脑本地搭建的服务器相近。 从备案与否。无论是华北机房用户,还是其他国内机房,国内机房都需要按照工信部的要求来操作,对网站进行备案,域名有备案号则可直接购买主机使用。如购买的国...阅读全文

protobuf导出golang,调整默认tag的方法

protobuf导出golang,调整默认tag的方法 问题概述 在protobuf导出到golang的时候,生成的.go文件里的struct的tag是没办法灵活设置的,以下面这个message为例 test.proto syntax=proto3; package test; option go_package = ".;test"; message MyMessage { int64 Code = 1; } 执行protoc --proto_path=. --go_out=. test.proto导出的test.pb.go里的MyMessage这个结构体的定义会是这样: type MyMessage struct { state protoimpl.MessageState sizeCa...阅读全文

博文 2020-05-10 21:32:43 一条大菜狗HS

golang 通过 Redis GEO 实现 LBS 功能

LBS 基于位置的服务(Location Based Services,LBS),是利用各类型的定位技术来获取定位设备当前的所在位置,通过移动互联网向定位设备提供信息资源和基础服务。LBS首先读者可利用定位技术确定自身的空间位置,随后读者便可通过移动互联网来获取与位置相关资源和信息。LBS服务中融合了移动通讯、互联网络、空间定位、位置信息、大数据等多种信息技术,利用移动互联网络服务平台进行数据更新和交互,使用户可以通过空间定位来获取相应的服务。 redis 中关于 GEO 的方法 geoadd:增加某个位置的坐标。 geopos:获取某个位置的坐标。 geohash:获取某个位置的geohash值。 geodist:获取两个位置的距离。 georadius:根据给定位置坐标获取指定范围内的位...阅读全文

博文 2020-03-17 15:32:53 hwholiday

Go1.10 支持 HTTPS 代理

Go1.9 出来后 6 个多月的时间,Go1.10 就被[发布](https://blog.golang.org/go1.10)。新版本带来大大小小的变化([发行说明](https://golang.org/doc/go1.10)),但是我想谈谈有关 `net/http` 包的改变。1.10 版本支持在 HTTPS([commit](https://github.com/hyangah/go/commit/ab0372d91c17ca97a8258670beadadc6601d0da2)) 上的代理,而在原来它只能通过使用普通的(未加密)HTTP 来和代理进行沟通。接下来让我们来看看它是否真的可以工作。 ## Server 为了验证这一改变,首先请用 golang 启动一个简单的 HTTP(...阅读全文

为什么 template 输出html源码,而非解析

有一功能函数, 用于解析html并输出到 浏览器: ```go func (this *TemplateEngine) Dispatch(w http.ResponseWriter, r *http.Request, path string) { // 获取html所在位置 real_path := g_global_cfg["html_templ"] + path // 进行template解析 t, err := template.ParseFiles(real_path) CheckError(err) // 输出 err = t.Execute(w, nil) CheckError(err) } ``` 但是在浏览器只输出了h...阅读全文

Redis GEO相关命令和功能,你造吗?

Redis 是一个高性能的key-value数据库,其最大优点就是,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。同时Redis还提供了Java开发,C/C++,C#,PHP开发,JavaScript,Perl,Object-C,Python开发,Ruby,Erlang等客户端,使用起来很方便。 而今天小编要和大家聊的就是Redis 的 GEO 特性,这个特性将在 Redis 3.2 版本释出,可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作。下面我们就来看看Redis GEO 的相关命令及这些命令相关功能的实现。 一、添加和获取位置 要进行地理位置的操作,我们需要...阅读全文

构建开发者能力金字塔,化解年龄焦虑 2018-9-10

构建开发者能力金字塔,化解年龄焦虑很多开发者对年龄很焦虑。要入行时,到处找人问,程序员到底是不是青春饭。干了几年,快30了,开始担忧,到底能干到多少岁,该不该转管理。过了30了,开始跟着大家讨论,35岁到底是不是程序员的一道坎,要是干不成管理,是不是该转行了。过了35了,开始在知乎上翻回答,看40以上的程序员都干什么去了。……一开始我也是焦虑的,不过后来想明白了,精力的不足,可以用经验、技巧和方法论来弥补。这个道理,从《天龙八部》中也可以看出来。《天龙八部》第39章——“解不了,名缰系嗔贪”——中有几段文字,描写了大轮明王鸠摩智如何借助小无相功运使少林七十二绝技,惊倒玄生、玄慈等少林高僧,非常精彩。(想看的小伙伴可以戳这里:大轮明王鸠摩智教你找核心竞争力。)对鸠摩智来讲,少林七十二绝技是外在...阅读全文

一致性hash算法原理及golang实现

概述 这里存在一种场景, 当一个缓存服务由多个服务器组共同提供时, key应该路由到哪一个服务.这里假如采用最通用的方式key%N(N为服务器数目), 这里乍一看没什么问题, 但是当服务器数目发送增加或减少时, 分配方式则变为key%(N+1)或key%(N-1).这里将会有大量的key失效迁移,如果后端key对应的是有状态的存储数据,那么毫无疑问,这种做法将导致服务器间大量的数据迁移,从而照成服务的不稳定. 为了解决类问题,一致性hash算法应运而生. 1. 一致性hash算法特点 在分布式缓存中, 一个好的hash算法应该要满足以下几个条件: 均衡性(Balance) 均衡性主要指,通过算法分配, 集群中各节点应该要尽可能均衡. 单调性(Monotonicity) 单调性主要指当集群发生...阅读全文

博文 2016-09-10 16:00:01 u010511236

Uber如何使用go语言创建高效的查询服务

在2015年初我们创建了一个微服务,它只做一件事(也确实做得很好)就是地理围栏查询。一年后它成了Uber高频查询(QPS)服务,本次要讲的故事就是我们为什么创建这个服务,以及编程语言新秀Go如何帮我们快速创建和扩展该服务。 背景 在Uber,一个地理围栏就是在地表人为定义的地理区域(或多边形几何区域)。地理围栏在Uber被广泛用于基于地理位置的设置。向用户展示给定区域有哪些产品可以使用,根据特殊需要(如机场)定义区域,并在乘车高峰时在相邻区域实施动态定价是我们产品的重要应用场景。 一个科罗拉多地理围栏示例。 第一步是通过用户手机获取地理位置信息如经纬度,进而确定用户所在地理围栏。这个功能分散在多个服务或模块中。因为我们从整体架构向微服务架构迁移,我们选择将这个功能做成一个新的微服务。 使用G...阅读全文

博文 2016-05-04 11:00:00 zengmingen

客户端地理位置服务 Js-geolocation

Js-geolocation 是一个 Go 开发的,使用谷歌服务的客户端地理位置服务。地理位置数据库是由 Google 维护,非常可靠。

{
    "city":"cluj-napoca",
    "cityLatLong":{
        "lat":46.777248,
        "long":23.59989
    },
    "country":"RO",
    "region":"cj"
}阅读全文

入职阿里的机会来了!2018阿里巴巴校园招聘季火热进行中!

导语:2018阿里巴巴校园招聘季火热来袭!技术、设计、产品、游戏等25个岗位等你来! 简历投递地址 https://campus.alibaba.com/positionList.htm 招聘流程 一、关于网申/内部推荐: 面向群体:2018届毕业生(毕业时间:2018.1.1-2018.12.31) 内推时间:7月4日至8月18日 网申时间:7月4日至8月18日 二、关于在线编程: 1. 面向人群:技术类岗位同学 2. 测验有效期:简历投递后请点击邮件链接进行在线编程测验,完成答题的同学会增加面试几率 3. 测验时间:总计30分钟(具体时长请注意查看邮件通知),一旦开始编程,请在规定的时间内完成并提交,超过时长系统将不能继续答题 4. 测验形式...阅读全文

Sublime Text 2搭建Go开发环境

本文在已安装Go环境的前提下继续。 1、安装Sublime Text 2 2、安装Package Control。 运行Sublime,按下 Ctrl+`(`在1键左边),然后输入以下内容: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').w...阅读全文

博文 2014-10-21 11:00:00 LvanNeo

golang读取ini配置的pkg(读取配置文件)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 今天我写了一个go读取ini文件的包,已经上传到github上边了,方便大家使用,主要是读取配置文件的方法。下边是简单的文档 The official website 描述 使用goini更简单的读取go的ini配置文件以及根据特定格式的各种配置文件。 安装方法 gp get github.com/widuu/goini 使用方法 ini配置文件格式样列 [database] username = root password = password hostname = localhost [admin] username = root password = password [nihao] u...阅读全文

Golang 项目部署实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/netdxy/article/details/79431415 一直认为不懂部署的开发工程师不是好的开发工程师,以下以一些实例讲解自己在项目中的 Golang 后端部署的情况。 一般部署脚本应该具有构建、启动、停止、回滚已经查看记录日志等功能,以下分别将这些功能以单个脚本的形式给出,当然也可以写成Makefile 的形式。 单个部署脚本的形式,在一个目录下建立如下文件: bin # 目录,用于存放每次 build 之后存放的二进制文件 app.log # 用来记录的日志文件 log.sh # 实时查看日志 build.sh # 构建 run.sh # 启动某一次编译版本 start.sh # 启...阅读全文

博文 2018-12-06 19:31:34 netdxy

Go语言中字符串操作常用函数介绍

- 操作 ```go //"helloogo"中是否包含"hello" fmt.Println(strings.Contains("helloogo", "hello")) fmt.Println(strings.Contains("helloogo", "goe")) //Join组合 s := []string{"abc", "hello", "mike", "go"} buf := strings.Join(s, "_") fmt.Println("buf = ", buf) //Index 查找子串所在位置 fmt.Println(strings.Index("abcdhello", "hello")) fmt.Println(strings.Index("abcdhello", "...阅读全文

博文 2019-04-21 22:40:52 OctopusLian

怎么用Python实现FTP功能?

可以利用 Python 的 Pyftpdlib 模块快速搭建FTP 服务器实现文件上传下载功能,以下是具体做法: 安装 Pyftpdlib 模块 $ sudo pip install pyftpdlib 通过 Python 的 -m 选项将 Pyftpdlib 模块作为一个简单的独立服务器来运行,假设我们需要共享目录 /Users/Edu/Oldboy,只需要以下这个命令行就可以轻松实现: $ cd /Users/Edu/Oldboy $ python -m pyftpdlib [I 2018-05-04 15:13:12] >>> starting FTP server on :::8080, pid=7517 <<< [I 2018-05-04 ...阅读全文

MySQL 8.0.13 设置日期为0000-00-00 00:00:00时出现的问题

刚开始学习数据库操作,今天存数据时发现,保存的时候报错(Error 1292: Incorrect datetime value: '0000-00-00' for column 'deleted_at' at row 1) ,之后就搜索了下原因,是因为MySQL存日期时不允许出现这种格式导致的。下面记录下解决问题的经过: 先是根据Mysql 数据库date, datetime类型设置0000-00-00默认值报错问题 这篇博客操作的。但是发现。我电脑上没有文章中提到的cnf文件。于是就在网上搜索该文件。粘贴了my.cnf这个内容到/etc/my.cnf里边。可是等我将 sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIV...阅读全文

博文 2019-01-20 23:34:42 Magicer

2019-10-10,Golang程序入口

通过Beego的阅读,学习了基本的golang的语法及开发思路。 再通过Go SDK的源码,熟悉一下API构成,然后开始实现一个简单的低代码框架。 Go SDK中的package列表 还是挺多的,挑几个学习一下,以此为教材学习一下Golang。 还是以debug,从程序开始学习。 runtime/proc.go runtime/proc.go作为Go程序的执行入口,看一下里面都有什么。 if GOARCH != "wasm" { // no threads on wasm yet, so no sysmon systemstack(func() { newm(sysmon, nil) }) } 可以看到,Go是支持WebAssembly的,可以在浏览器中调用。 具体做法请参考: https:...阅读全文

博文 2019-10-10 12:32:44 aside section ._1OhGeD

[golang] 数据结构-快速排序

快速排序是个非常经典、高效、常用的排序算法。很多语言标准库里的排序算法都有用到它。 原理快排原理其实比较简单,就是将原本很大的数组拆成小数组去解决问题。要拆就得找个拆的位置。如果吧这个位置称为支点,那么快速排序问题就变成了不断的去找到拆分的支点元素位置。通常找支点就是以某个元素为标准,分别从最右侧元素向左找到比指定元素小的位置,再从最左侧开始向右找比指定元素大的位置。如果两个位置不相同就交换两个位置,在继续分表从两头相向寻找。找到合适的位置就是我们需要的支点。支点两边的元素再各自重复上面的操作,直到分拆出来的子数组只剩一个元素。分拆结束,顺序也就拍好了。那么问题来了,以哪个元素为标准去比较呢?比如可以选第一个元素。 复杂度理想情况下找到的支点可以把数组拆分成左右长度相近的子数组,此时时间复杂...阅读全文

博文 2018-09-06 00:35:39 NicoChen

一致性hash算法原理及golang实现

概述 这里存在一种场景, 当一个服务由多个服务器组共同提供时, key应该路由到哪一个服务.这里假如采用最通用的方式key%N(N为服务器数目), 这里乍一看没什么问题, 但是当服务器数目发送增加或减少时, 分配方式则变为key%(N+1)或key%(N-1).这里将会有大量的key失效迁移,如果后端key对应的是有状态的存储数据,那么毫无疑问,这种做法将导致服务器间大量的数据迁移,从而照成服务的不稳定. 为了解决类问题,一致性hash算法应运而生. 1. 一致性hash算法特点 在分布式缓存中, 一个好的hash算法应该要满足以下几个条件: 均衡性(Balance) 均衡性主要指,通过算法分配, 集群中各节点应该要尽可能均衡. 单调性(Monotonicity) 单调性主要指当集群发生变化...阅读全文

Go语言import语句的位置

以下摘自The Go Programming Language: The import declarations must follow the package declaration.After that, a program consists of the declarations of functions, variables, constants, and types (introduced by the key words func, var , const , and type ); for the most part, the order of declarations does not matter. import语句必须跟在package定义后面。请看下例: package...阅读全文

博文 2017-06-24 19:21:57 肖楠

deeply equal(深度相等)

1.deeply equal条件 reflect包里面有一个判断是否deeply equal的函数,对于不同的类型,deeply equal的定义如下。 类型 deeply equal条件 数组 对应的元素deeply equal 结构体 对应的域deeply equal 函数 都为nil interface 实际的值deeply equal map 同时满足以下条件: 1. 同时为nil或者同时不为nil2.长度相同 3.同一个map,或者对应key的value deeply equal 指针 满足"=="对比,或者指向的值deeply equal sliece 同时满足以下条件: 1. 同时为nil或者同时不为nil2.长度相同 3.指向相同的底层数组,或者对应的元素deeply equ...阅读全文

博文 2019-11-03 09:33:29 moonbamboo

Go开发环境搭建-Windows下

Go官方安装指引文档(需要FQ)https://golang.org/doc/installGo下载参考地址(需要FQ)https://golang.org/dl/Go安装包可直接通过此地址下载64位,忽略上面两步骤(需要FQ)https://dl.google.com/go/go1.12.windows-amd64.msi下载完毕如下: 开始安装,双击上述已下载文件,流程如下: 注意:下面用默认路径 安装完毕,验证,在DOS下敲 go version, 如下图,则说明安装成功。 备注:由于使用msi安装文件,所以Go语言的环境变量已经自动设置好了。如果你安装的是ZIP包,需要设置环境变量如下:系统变量名: Go的安装位置Path: 原来的path下追加 ;%GOROOT%\bin验证:zi...阅读全文

博文 2019-03-04 15:35:49 没图怎么玩儿

敏感词匹配

今日去被大佬问到如何实现一个敏感词的匹配,所以写了一个简版的敏感词匹配结构,还待后期优化! **注:暂时不可以投放到生产环境使用** **有喜欢的可以提交代码给我,或者拿走自己维护** 希望各位大佬指点 谢谢~, 关键词为网上找到的所以不是很全,望大家海涵~谢谢! 源码地址:https://github.com/tianye/sensitive_words 源码实现方式: ``` package decision import ( "fmt" "strings" ) type Node struct { Word string Node [] *Node Location int IsSensitive bool } type Tree struct { TreeNode [] *Node ...阅读全文

Go语言入门——数组、切片和映射

Go语言入门——数组、切片和Map 按照以往开一些专题的风格,第一篇一般都是“从HelloWorld开始” 但是对于Go,思来想去,感觉真的从“HelloWorld”说起,压根撑不住一篇的篇幅,因为Go的HelloWorld太简单了。 1、简介 Go是什么? Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。——摘自百度百科 Github地址 https://github.com/golang/go 官网地址 https://golang.org 中文网社区 https://studygolang.com 如果需要下载安装包,可以进入https://studygolang.com/dl下载,速度较快 https://www.golang...阅读全文

博文 2019-05-19 01:34:39 Jackie_Zheng