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

golang中os包用法

os包中实现了平台无关的接口,设计向Unix风格,但是错误处理是go风格,当os包使用时,如果失败之后返回错误类型而不是错误数量. os包中函数设计方式和Unix类似,下面来看一下. func Chdir(dir string) error //chdir将当前工作目录更改为dir目录. func Getwd() (dir string, err error) //获取当前目录,类似linux中的pwd func Chmod(name string, mode FileMode) error //更改文件的权限(读写执行,分为三类:all-group-owner) func Chown(name string, uid, gid int) error //更改文件拥有者owner func ...阅读全文

博文 2015-10-18 12:00:05 chenbaoke

【公告】寻找社区日常运营、功能开发、维护 自愿者

本站 2013 年上线以来,得到国内广大 gopher 们的支持,也让我有动力一直开发、维护着。 随着 go 越来越流行,学习 go 的人也越来越多,本社区用户量也越来越大,而我个人的精力有限。为了给社区用户提供更好的服务,希望有自愿者加入社区,一起维护、运营本站。招募的自愿者包括: 1. 日常网站运营 —— 比如晨读文章推荐、周推荐等;**特别欢迎在校大学生;** 2. 功能开发、维护 —— 参与开发本站功能;板块维护、管理者等; 3. 活动组织、宣传者 —— 组织社区用户参与互动,和外界联系拉赞助等; 4. 翻译 —— Go 相关教程、文章、资讯等的翻译; 其他你想到的,也可以和我沟通~ 根据情况,会提供奖励~ 项目开源的,参与开发,可以直接 fork + ...阅读全文

Go语言 unsafe的妙用

unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Pointer可相互转换。uintptr和unsafe.Pointer的区别就是:unsafe.Pointer只是单纯的通用指针类型,用于转换不同类型指针,它不可以参与指针运算;而uintptr是用于指针运算的,GC 不把 uintptr 当指针,也就是说 uintptr 无法持有对象,uintptr类型的目标会被回收。golang的unsafe包很强大,基本上很少会去用它。它可以像C一样去操作内存,但由于golang不支持直接进行指针运算,所以用起来稍显麻烦。 切入正题。利用u...阅读全文

博文 2014-10-14 10:00:01 abv123456789

妙用GO信道(channel)

channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 channel 是一个管道或者先进先出队列,非常简单且轻量。channel 并不是 Golang 首创的。它同样作为内置功能出现在其他语言中。在大多数情况下,它是一个又大、又笨、又复...阅读全文

博文 2017-03-14 06:00:55 云迹

[Golang]妙用channel

channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述:信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 channel 是一个管道或者先进先出队列,非常简单且轻量。channel 并不是 Golang 首创的。它同样作为内置功能出现在其他语言中。在大多数情况下,它是一个又大、又笨、又复杂的消...阅读全文

博文 2015-03-06 16:00:02 abv123456789

Golang,kafka实现消息推拉

Kafka的安装与启动 kafka中涉及的名词 消息记录:由一个key,一个value和一个时间戳构成,消息最终存储在主题下的分区中,记录在生产中称为生产者记录,在消费者中称为消费记录。Kafka集群保持了所有发布的消息,直到它们过期,无论消息是否被消费了,在一个可配置的时间段内,Kafka集群保留了所有发布的消息。比如消息的保存策略被设置为2天,那么在一个消息被发布的两天时间内,它都是可以被消费的。Kafka的性能是和数据量无关的常量级的,所以保留太多数据并不是问题 生成者:生产者用于发布消息 消费者:消费者用于订阅消息 消费者组:相同的groupID的消费者将视为同一个消费者组,每个消费者都需要设置一个组id,每条消息只能被consumer group中的一个Consumer消费,但是可...阅读全文

博文 2019-01-25 14:34:47 Carrism

如何基于Go搭建一个大数据平台

大家下午好!我是来自七牛云大数据团队的党合萱。今天向大家介绍一下我们是如何基于Go搭建大数据平台的。七牛的大数据的产品——Pandora首先介绍一下七牛的大数据的产品——Pandora,我们的目的是提供简单、高效和开放的大数据平台。图 1 是我们的工作流,提供实时计算和离线计算。我们的数据流实时进来之后可以到下游的实时数据服务,最常见的场景是提供日志搜索和机器性能监控,就是看到的仪表盘(图2),还有就是基于 spark 做一些实时数据分析。 图1图 2图 3图 4 是整个Pandora业务上的架构图。数据打进系统之后先落地到消息队列,落地之后有一个计算任务,数据经过计算之后还可以再次落地到消息队列。这个过程很灵活,比如可以选择最左边的一条线把数据直接倒出到下游的系统,图1上的示例是一个HTT...阅读全文

博文 2017-10-18 01:15:33 党合萱

go文件操作函数

文件操作 golang的文件操作时在os包中的。 所以用的时候要import os包 包含以下的这些函数 func Create(name string) (file *File, err error) 直接通过纹面创建文件 func NewFile(fd uintptr, name string) *File func Open(name string) (file *File, err error) 以只读方式打开一个存在的文件,打开就可以读取了。 func OpenFile(name string, flag int, perm FileMode) (file *File, err error) ...阅读全文

golang 创建守护进程

package main import ( "os" "os/exec" "path/filepath" ) if os.Getppid()!=1{ //判断当其是否是子进程,当父进程return之后,子进程会被 系统1 号进程接管 filePath,_:=filepath.Abs(os.Args[0]) //将命令行参数中执行文件路径转换成可用路径 cmd:=exec.Command(filePath,os.Args[1:]...) //将其他命令传入生成出的进程 cmd.Stdin=os.Stdin //给新进程设置文件描述符,可以重定向到文件中 cmd.Stdout=os.Stdout cmd.Stderr=os.Stderr cmd.Start() //开始执行新进程,不等待新进程退...阅读全文

博文 2015-06-17 20:15:59 ghost911_slb

分布式缓存version_cache

# version_cache version_cache是一个分布式一致性缓存解决方案。 原理:job 将数据打包成版本到redis,实例将存在redis的版本load到本地内存并计算最新版本的生效时间,使所有实例的缓存在同一时间生效来达到所有实例数据的一致。 实用场景:数据量少、非及时生效数据、高并发强一致的场景。如:配置服务,门店服务等 优点: 1. 轻松实现水平扩展,实现千万并发的服务不是梦 2. 数据强一至性,不论启动多少实例,同一时间的数据绝对是一致的(服务器时间一致情况下) 3. 使用简单,实现数据生成接口后就可以像使用缓存一样方便,轻松实现高性能服务 缺点: 1. 数据按版本生效,变更的数据会延迟生效(原则上数据量越小处理越快) 2. 不适...阅读全文

开源项目 2020-06-30 09:15:02

专访iDST华先胜:城市大脑,对城市的全量、实时认知和搜索

摘要: 对外界而言,城市大脑是一个熟悉而又神秘的项目,如果用一个通俗而又古老的词来描述,它就是智慧城市,但事实上城市大脑已经远远超越了大家通常谈论的智慧城市... 编者按:10月11-14日,为期四天的2017杭州云栖大会(门票火热抢购中!)将再度在杭州云栖小镇起航,作为全球最具影响力的科技展会之一,本届大会将有不少阿里集团专家以及各企业行业领袖的精彩演讲。从今天开始,云栖社区将会对大会嘉宾做一系列专访,想了解嘉宾以及最新议题信息请关注“云栖大会”公众号。第一位嘉宾我们采访的是IEEE Fellow,国家千人,阿里巴巴 iDST副院长华先胜,他将在10月的云栖大会上分享关于计算机视觉领域的前沿趋势以及城市大脑最新的进展。 在7月底结束的全球计算机视觉顶级会议——CVPR 2017...阅读全文

golang 防知乎 中文验证码 源码

创,转载请注明出处! 最开始用图形来模仿文字进行各种角度的倒立和排列,后来切换为文字后,有很多问题。总结如下: 1、程序在画图形和画文字方面不一样,图形的是从原点开始(0,0),而文字则从文字的基线开始(0,baseline) 2、在增加角度偏移时,文字或图形的高宽会产生变化(偏∠45度时达到最大),这时候为了让它们顶点对齐,需要计算偏移量(用三角函数) 3、在绘图时,会先旋转“画布”(描述可能不准确),再绘制文字。此时要往回旋转,否则下一个图形会顺着这个角度继续画。 4、为了让图形保持固定宽度,对于有偏角的文字,需要平均缩小左右间距(否则不同的角度,固定的文字个数,会让图形宽度不同) 效果图: 源码:(代码还可以再整理和优化,但限于计划时间,懒得弄了) package main impor...阅读全文

博文 2018-07-16 15:30:00 Denny_Yang

百度云主机的优势

在百度上搜索云主机,出现了大量的品牌名称,可谓百花齐放。但对不太懂服务器、建站的小白来说,要在茫茫的云主机海洋中选出一款适合自己的,实在是太困难了。在选择之前,大家不妨先做点功课,了解一下云主机的相关知识。 首先,什么是云主机呢?云主机又叫云虚拟主机,是在一个云服务器上划分出来的100M、200M等不同型号的小型空间,每个用户都有一个独立的IP,用来安放你做好的网站供用户访问,云主机比普通虚拟主机更稳定。 度娘上有包括阿里云、腾讯云、360云、百度云在内的数十种xx云主机,如果是完全没有经验的人进行选购,估计真的要选择困难了,因为这几个品牌,除开“云”字,看上去都挺靠谱的,质量自然不用担心了,效果怎么样呢? 众所周知,百度是目前中国使用率最高的搜索引擎,我们所做的一切关于...阅读全文

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获取命令行参数及信号量处理

部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用os库和flag库。 golang os库获取命令行参数 os可以通过变量Args来获取命令参数,os.Args返回一个字符串数组,其中第一个参数就是执行文件本身。 1 2 3 4 5 6 7 8 9 10 package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) } 编译执行后执行 $ ./cmd -user="root" [./cmd -user=root] 这种方式操作起来要自己封装,比较费时费劲。golang提供了flag库,可以很方便的操作命名行参数,下面介绍下flag的用法。 golang fla...阅读全文

博文 2015-08-22 12:00:00 kenkao

【互联网早报】2017.12.06

## 国内新闻 1.威马汽车获百度领投新一轮融资,累计融资金额已超120亿 http://www.tmtpost.com/2953163.html 2.中国电信飞机上网技术曝光:将采用高通量通信卫星 http://www.cnbeta.com/articles/tech/676767.htm 3.央行:第三季度移动支付业务金额增近四成 网联平台试运行平稳 https://www.leiphone.com/news/201712/rDsY4yemksmgIpBv.html 4.美法院将重审阿里IPO欺诈案 被指隐瞒假货监管信息 http://tech.163.com/17/1206/08/D4V7R6JT00097U7...阅读全文

golang的io包

package io import "io" io包提供了对I/O原语的基本接口。本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作。 因为这些接口和原语是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安全的。 Index Variables type Reader type Writer type Closer type Seeker type ReadCloser type ReadSeeker type WriteCloser type WriteSeeker type ReadWriter type ReadWriteCloser type Read...阅读全文

博文 2014-10-04 19:26:40 刘地

golang并发编程实践 -- 简单生产者消费者(with chan)

本文简单介绍如何用golang实现经典的生产者消费者模型。 golang语法简洁,凡可以通过几行代码解决的事情,绝不为了解决该问题而在语言中引入不必要的特性。这个和c++正好相反,c++是个庞大的怪物,我这么形容可能很多c++的fans心里要不舒服了,为了让你在看到诸如子类言论时能够心平气和,建议大家使用一下golang吧。本文不是介绍golang编程语言本身的文章,而是从golang如何让并发编程变得容易...阅读全文

博文 2014-10-04 19:26:04 aura521521

前阿里高管“下海”创业,做了一只全球卖断货的“水杯”

《创业大学》第三期---对话Gululu创始人兼CEO江志强 如果一款儿童智能水杯的在线时长超过这个孩子在iPAD花的时间,其商业潜力是不是会有更多的想象空间? 没错,这个售价在129美元的智能互动水杯Gululu,已经在全球各个国家快卖断了货——Gululu创始人兼CEO江志强6月份做客上海云栖大会·阿里巴巴创新创业论坛,分享了“一只水杯”与“淘富成真”的故事。 一位“童心未泯”的“老兵” 46岁的江志强看上去还像个小伙子,梳着大背头,穿着得体时尚。会议开始前早早到场check演讲ppt播放情况。两年前决定创业前,他已经在互联网行业摸爬滚打了快20年,先后任职网易营销副总裁、阿里巴巴集团副总裁和人人公司首席营销官,参与过人人纽交所上市。正是这样...阅读全文

建站宝盒小程序竟让企业用户量突破300万?

互联网的新事物每天都在产生,这些新事物的出现,无疑使得一批人获取了红利,目前微信推出了主打产品——微信小程序。自小程序上线后,小程序一直是个热门话题,现在越来越火,入驻的品牌商家也越来越多。 微信小程序是一种无需下载安装即可使用的应用,只需用户扫一扫或者搜索即可打开应用。体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题, ![00.png](https://static.studygolang.com/180504/c69f7a6d3ac205365a9cc1d4a8e80fa2.png) 现如今它为什么能够那么“火”,那是因为它只需搜索或者扫一扫,即可使用,无需下载和安装的环节,让人和功能的连接变得更加简单直接。 微信小程序的出现无疑是一个时代的进步...阅读全文

Golang:有趣的 channel 应用

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 ...阅读全文

博文 2014-10-09 16:17:36 mikespook

golang: 利用unsafe操作未导出变量

看了 @喻恒春 大神的利用unsafe.Pointer来突破私有成员,觉得例子举得不太好。而且不应该简单的放个demo,至少要讲一下其中的原理,让看的童鞋明白所以然。see:http://my.oschina.net/achun/blog/122540 unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Pointer可相互转换。uintptr和unsafe.Pointer的区别就是:unsafe.Pointer只是单纯的通用指针类型,用于转换不同类型指针,它不可以参与指针运算;而uintptr是用于指针运算的,GC 不把 uin...阅读全文

博文 2014-10-04 19:26:58 陈一回

借助江苏电信欢go进行流量推广活动合作的工作规范(一)

借助江苏电信欢go(下面简称欢go)渠道落地推广的活动要求必须具备如下条件: 1、技术限制:为了防止用户恶意刷流量的不公平竞争行为发生,要求对参与用户进行手机号码、设备号双重限制,用户提交号码页面做图片验证码,而且必须要做短信验证,欢go可以无偿提供短信验证接口,若不做短信验证必须邮件欢go相关运营人员,声明无条件做短信验证,出现流量被刷的情况后果自负; 2、活动范围:活动上线前,烦请提供产品及业务重点目标用户群体及地域特征,以便最终确认活动覆盖范围,开展精准营销,以提高活动质量,指定区域的活动要求必须在活动页面明确说明活动范围,且要求客户端侧做定向活动分区域展示; 3、流量充值:为提高充值成功率,提升用户体验感知度,减低用户投诉量,建议必须采用API接口方式接入,实现流量实时充值; 4、活...阅读全文

博文 2016-02-17 11:00:00 labulakayoyo

golang信号量处理

c语言的信号量都很容易理解了,注册回调函数就行了 go中的有所不同,是通过个go程和chan来处理的 func main(){ go signalHandle() //用go程执行信号量处理函数 。。。。处理其他逻辑 } func signalHandle() { for { ch := make(chan os.Signal) signal.Notify(ch, syscall.SIGINT, syscall.SIGUSR1, syscall.SIGUSR2,syscall.SIGHUP) sig := <-ch Utils.LogInfo("Signal received: %v", sig) switch sig { default: Utils.LogInfo("get sig=%v...阅读全文

博文 2015-06-17 20:23:31 ghost911_slb

中文手机域名,开启“移动互联网+”新时代

要说这两年让人印象深刻的中文域名,非“.手机”莫属。这个简单粗暴又直白的域名,自开放注册依赖就被上百个手机品牌哄抢。 中文手机域名的优势 1、 中文手机域名自开放注册依赖,注册量已达到32313个,居中文域名注册量第5位,前4名分别是“.网址”、“.信息”、“.公司”、“.世界”。手机巨头小米手机、电商巨头唯品会、数码巨头尼康等均已注册中文手机域名。 ![20161212160555_28665.png](http://studygolang.qiniudn.com/170204/36165d3ccb247c9d2d4a5f686d209ea4.png) 2、 调查显示,有75.4%的智能手机用户,每两年至少换一次机,34.4%的用户至少一年一换,仅有24.6%的用户能坚...阅读全文

Go 语言 bufio 包介绍

[原文链接](https://medium.com/golangspec/introduction-to-bufio-package-in-golang-ad7d1877f762) [bufio](https://golang.org/pkg/bufio/) 用来帮助处理 [I/O 缓存](https://www.quora.com/In-C-what-does-buffering-I-O-or-buffered-I-O-mean/answer/Robert-Love-1)。 我们将通过一些示例来熟悉其为我们提供的:Reader, Writer and Scanner 等一系列功能 ## bufio.Writer 多次进行小量的写操作会影响程序性能。每一次写操作最终都会体现为系统层调用,频繁...阅读全文

博文 2017-12-04 08:18:54 jliu666

Go语言 美妙的channel(下)

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述:信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 c...阅读全文

博文 2014-10-11 18:00:01 abv123456789

Golang:有趣的 channel 应用

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 ...阅读全文

博文 2014-10-10 19:00:01 kjfcpua

Go bytes包

Go bytes包 bytes包基本方法的使用 package main import ( "bytes" ) func writeUInt16(buff []byte, data uint16) { for i := 0; i < 2; i++ { buff[i] = byte(data >> uint(i*8)) } } func spilt(r rune) bool { if r == 'c' { return true } return false } func main() { println("hello world") buff1 := make([]byte, 2) // 创建一个切片 writeUInt16(buff1, uint16(12)) buff2 := make(...阅读全文

博文 2017-02-10 08:00:40 xxggy

使用算法检测英超中的食物链

最近看到一篇新闻: 英超再现恐怖食物链!20强相生相克 今年用了14轮,对于足球和英超感兴趣的读者一定了解,所谓食物链是指A队胜过B队,B队胜过C队,……,N队也胜过A队,截止到英超第14轮,根据所有的队伍的胜负关系,一条最大的食物链已经形成,英超20队都加入到这个食物链中,相生相克。 我看到这篇新闻的时候,有一点点程序员的不由自主的想法,能否通过算法检查目前最大的食物链,以及能否将食物链罗列出来?这也算是算法解决实际问题的一个很好的例子吧。 很自然的,可以通过图来表示两队之间的已经比赛的关系,因为我们我们只考虑胜负关系,不考虑平局,所以可以使用有向图来表示。食物链可以单纯用胜或者负来表示,所以我们的有向图中以胜表示两个节点之间的关系。 当然,我对图相关的算法不是很熟悉,所以特地搜了一下相关...阅读全文

博文 2017-02-08 12:53:45 smallnest

热更新配置参数例子(Golang)

在不停止程序的情况下,通过发送USR1或USR2等信号量,触发运行中程序的参数更新处理。当然还可以通过处理如kill等信号量, 让程序正确的处理退出操作。 做了个例子,效果如下。 可以看到通过发出kill -USR1 id号 让对应的程序参数发生了变更。 关于kill的参数值可以通过kill -l列出。 各个终端也提供了很多快捷键来支持特定信息的发送,如最常见的ctrl+c. 但注意,各个终端的快捷键定义可能不一样,而且有些是可以自定义的,这个要注意,在使用前可以用stty -a查出。 附上测试机这两条命令的结果: xcl@xclpc:~$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SI...阅读全文

博文 2015-06-17 20:04:33 xcltapestry

freetype-go学习

freetype-go的源码在这里https://code.google.com/p/freetype-go/ 它的作用是生成带文字的png图片 首先解决的几个概念: 什么是FreeType? FreeType是一个可移植的,高效的字体引擎。 字体在电脑上的显示有两种方式:点阵和矢量。对于一个字,点阵字体保存的是每个点的渲染信息。这个方式的劣势在于保存的数据量非常大,并且对放大缩小等操作支持不好。因此出现了矢量字体。对于一个字,矢量字体保存的是字的绘制公式。这个绘制公式包括了字体轮廓(outline)和字体精调(hint)。字体轮廓使用贝塞尔曲线来绘制出字的外部线条。在大分辨率的情况下就需要对字体进行精调了。这个绘制字的公式就叫做字体数据(glyph)。在字体文件中,每个字对应一个glyph...阅读全文

博文 2014-10-20 23:12:53 yjf512

数据宝优质接口助力春节,全场2折起,超值套餐订购更享折上折!!

新春大作战!数据宝优质接口助力春节,全场2折起,超值套餐订购更享折上折!! 想增加网站浏览、APP装机量?航班、火车、汽车,身份证实名认证接口用起来,春运抢票大军正在排队等待~ 想要在跨年大促拔得头筹?乘机人价值评估、营销短信、通知短信低至¥0.06/次!为您进行客户画像、消费行为分析,为精准营销锦上添花~ 100元无门槛红包任性抽还在继续!现在注册认证还可享免费测试次数~~ 如果你的量足够大,想要更低折扣,请q:3484392838或18121358792 ![spring1200.jpg](http://studygolang.qiniudn.com/161227/6e84a65b1443caeaae378830daa74349.jpg) ![spring-landing...阅读全文

Golang同步机制的实现

Golang的提供的同步机制有sync模块下的Mutex、WaitGroup以及语言自身提供的chan等。 这些同步的方法都是以runtime中实现的底层同步机制(cas、atomic、spinlock、sem)为基础的, 本文主要探讨Golang底层的同步机制如何实现。 1 cas、atomic cas(Compare And Swap)和原子运算是其他同步机制的基础, 在runtime/asm_xxx.s(xxx代表系统架构,比如amd64)中实现。amd64架构的系统中, 主要通过两条汇编语句来实现,一个是LOCK、一个是CMPXCHG。 LOCK是一个指令前缀,其后必须跟一条“读-改-写”的指令,比如INC、XCHG、CMPXCHG等。 这条指令对CPU缓存的访问将是排他的。 CMP...阅读全文

博文 2017-06-21 04:44:00 无心之祸

Golang 1.3 sync.Mutex 源码解析

sync包给我们方便的提供了一组同步语意相关的标准库,下面我们重点看下sync.Mutex互斥是如何实现的。 我本机源码安装路径在/usr/local/go,这sync.Mutex(golang 1.3版本)涉及到的相关代码主要有: /usr/local/go/src/pkg/sync/mutex.go /usr/local/go/src/pkg/sync/runtime.go /usr/local/go/src/pkg/runtime/sema.goc 首先是mutex.go: // A Mutex is a mutual exclusion lock. // Mutexes can be created as part of other structures; // the zero v...阅读全文

博文 2014-10-17 23:16:51 毛, 剑

招聘【数据采集后台开发工程师】Go

#####**岗位职责: ** 参与腾讯游戏运维数据平台的建设; 参与数据平台数据管道建设; 负责高性能大数据采集系统的设计与研发。 #####**岗位要求:** 大学本科及以上学历,3年以上工作经验,2年以上 C++/Go开发经验; 熟悉大数据量、高并发环境下的Linux服务端程序开发; 熟悉常用的服务端IO设计模型,深入理解TCP/IP等网络协议; 有高性能数据采集系统设计经验者优先; 熟悉Beats、Fluentd、Logstash等开源数据采集方案,有二次开发经验优先; 具有良好的沟通能力、学习能力、分析解决问题能力; 具有高度的责任心和团队合作精神。 **简历投递信箱: terrencehan@tencen...阅读全文

beego ORM建表

开发http后台时用了beego这个框架,牵涉到数据库,就用了ORM模块。 目前的用法是在init里面建表,但是来的数据量很大,所以过一阵表格就会有很多记录。这样就希望过一段固定时间就生成新的表格,后续的数据写在新表格内(表格字段不变,但名字有细微变化),旧表格仅作统计查询使用。 这个功能不知道怎么实现,有了解的大大给指点一下啊,多谢多...阅读全文

Go 切片的 append 操作总结

预备 切片是对其底层数组的某一段的引用。 切片有 len 和 cap 两个属性,代表切片的引用长度和切片的容量(从切片的引用起点位置到其底层数组最末端的长度。因为其底层数组的长度是固定的,这也就是意味着容量是指切片可引用的最大宽度)。 append 函数 slice2 := append(slice1, 23, 15) 以上对切片 slice1 进行 append 操作。该操作遵循以下原则: append 函数对一个切片 slice1 进行追加操作,并返回另一个长度为 len(slice1) + 追加个数 的切片,原切片不被改动,两个切片所指向的底层数组可能是同一个也可能不是,取决于第二条: slice1 是对其底层数组的一段引用,若 append 追加完之后没有突破 slice1 的容量,...阅读全文

博文 2019-08-24 00:02:40 Xavier

golang 并发编程之生产者消费者

golang 最吸引人的地方可能就是并发了,无论代码的编写上,还是性能上面,golang 都有绝对的优势 学习一个语言的并发特性,我喜欢实现一个生产者消费者模型,这个模型非常经典,适用于很多的并发场景,下面我通过这个模型,来简单介绍一下 golang 的并发编程 go 并发语法 协程 go 协程是 golang 并发的最小单元,类似于其他语言的线程,只不过线程的实现借助了操作系统的实现,每次线程的调度都是一次系统调用,需要从用户态切换到内核态,这是一项非常耗时的操作,因此一般的程序里面线程太多会导致大量的性能耗费在线程切换上。而在 golang 内部实现了这种调度,协程在这种调度下面的切换非常的轻量级,成百上千的协程跑在一个 golang 程序里面是很正常的事情 golang 为并发而生,启...阅读全文

博文 2018-03-11 19:34:41 hatlonely

golang并发编程实践 -- 简单生产者消费者(with lock)

上一篇文章用golang中的channel实现了简单的消费者模型,下面的版本是用传统的锁技术实现的版本,相对比会发现golang提供的channel更好用。而且golang的channel可以完成很多在别的语言里需要很多代码才能实现的功能。以后陆续解答。 package main import ( "fmt" "sync" "time" ) type Queue struct { Elem []int Capacity int Front int Rear int Lock sync.Locker Cond *sync.Cond } func New() *Queue { theQueue := &Queue{} theQueue.Capacity = 10 theQueue.Elem = ...阅读全文

博文 2014-10-04 19:26:11 aura521521

Golang http.Request复用

针对除了Get以外的请求 package main import ( "net/http" "strings" ) func main(){ reader := strings.NewReader("hello") req,_ := http.NewRequest("POST","http://www.abc.com",reader) client := http.Client{} client.Do(req) // 第一次会请求成功 client.Do(req) // 请求失败 } 第二次请求会出错 http: ContentLength=5 with Body length 0 原因是第一次请求后req.Body已经读取到结束位置,所以第二次请求时无法再读取body, 解决方法:重新定义...阅读全文

博文 2019-01-17 11:34:47 dom_chan

GO語言基礎教程:流程控制

在開始一個新的章節之前先來回顧上一篇文章的部份,首先我們來看這段代碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package main import ( "fmt" ) func main(){ var x,y int=1,2 { var x int=2 { var x int=3 fmt.Println(x,y) //首先輸出3,2 如果我把這行輸出語句注解掉,大家猜猜會如何? } fmt.Println(x,y) //其次輸出2,2 } fmt.Println(x,y) //最後輸出1,2 } 執行結果我已經加到註釋內了,其實沒必要好奇,GO語言就是如此,這種突然出現的大括號構成了複合語句,大括號內的變量作用範圍只能在變量內部,這就涉及到變量的作用...阅读全文

golang专有的gob序列化性能分析

为什么要分析gob序列化格式的性能 我自己编的一个单向同步软件(https://gitee.com/rocket049/mysync),混合了RPC和HTTP服务器功能,利用RPC做控制功能,HTTP进行数据上传。最近我有意简化其构造,把其中的http上传功能也用RPC方式实现。但是我担忧会导致性能下降,因为通常对象序列化,将会导致数据量增加,例如JSON序列化后,二进制数据变成16进制数据,数据量倍增。因此我测试了gob序列化前后的体量变化。 测试方法 我编写了一个小程序,参数是输入文件,把这个文件转换为一个结构体,其中包含文件名(strring)和所有数据组成的数组([]byte),然后用golang标准库encoding/gob将这个结构体序列化后保存到另一个文件中,然后比较输入文件和...阅读全文

博文 2018-06-17 22:34:39 从火星来

[翻译]编译器(7)-扫描

文在此。 ————翻译分隔线———— 编译器(7)-扫描 第一部分:介绍 第二部分:编译、转译和解释 第三部分:编译器设计概览 第四部分:语言设计概述 第五部分:Calc 1 语言规格说明书 第六部分:标识符 现在终于可以开始在扫描器上工作了。 词法分析 那么,从哪里开始呢? 这是最难的一部分,对我来说,扫描看起来应该挺简单的,但是很快我就迷失在细节里。有许多种实现扫描器的方法,我只会向你展示其中的一种。这里是 Rob Pike 在一次演讲中的演示文稿,是关于另外一种很酷的方法:在 Go 中的词法扫描。 扫描器的基本原理就是从顶到底、从左到右、直到源代码的结尾进行检索。每次,发现所需要的元素,就报告词法串被找到,标识符会告诉解析器它是什么,以及找到它的位置。 有限状态机 我现在不会真正深入到...阅读全文

博文 2014-10-09 16:20:24 mikespook

GRPC状态码

使用grpc的时候,线上php客户端调用go服务端,出现2/5/14等状态码,没有做日志输出,导致问题查了很长时间,最终问题是因为连接没有close掉,连接数不够了。 grpc的状态码在google.golang.org/grpc/codes:codes中,整理下状态码的翻译: 0:Ok:返回成功 1:Canceled:操作已取消 2:Unknown:未知错误。如果从另一个地址空间接收到的状态值属 于在该地址空间中未知的错误空间,则可以返回此错误的示例。 没有返回足够的错误信息的API引发的错误也可能会转换为此错误 3:InvalidArgument:表示客户端指定了无效的参数。 请注意,这与FailedPrecondition不同。 它表示无论系统状态如何(例如格式错误的文件名)都有问题的...阅读全文

博文 2018-11-16 19:34:47 王先森QAQ

记录 Elasticsearch 的 maximum shards open 问题

问题背景 某天打开 Jaeger UI 后,发现里面没有任何数据了,这是个奇怪的问题。 然后立马上服务器检查了 jaeger-collector, jaeger-agent, jaeger-query 和 Elasticsearch 的服务进程、端口及网络通信。所有一切都正常。 然后进一步排查数据流向问题,通过排查 jaeger-collector 日志,发现 jaeger-agent -> jaeger-collector 之间的数据传输没有问题。 而 jaeger-collector -> ES 之间数据传输时报错了。错误如下: {"level":"error","ts":1576483292.2617185,"caller":"config/config.go:130","msg":"...阅读全文

博文 2019-12-16 19:32:40 维子

Go unsafe包

Go unsafe包 unsafe包概述 直到现在(Go1.7),unsafe包含以下资源: 三个函数: // unsafe.Sizeof函数返回操作数在内存中的字节大小,参数可以是任意类型的表达式,但是它并不会对表达式进行求值. // 一个Sizeof函数调用是一个对应uintptr类型的常量表达式, // 因此返回的结果可以用作数组类型的长度大小,或者用作计算其他的常量. func Sizeof(x ArbitraryType) uintptr //函数的参数必须是一个字段 x.f, 然后返回 f 字段相对于 x 起始地址的偏移量, 包括可能的空洞. func Offsetof(x ArbitraryType) uintptr //unsafe.Alignof 函数返回对应参数的类型需要...阅读全文

博文 2017-02-17 11:00:19 xxggy

Golang:有趣的 channel 应用

转自 http://www.cnblogs.com/luckcs/articles/2588200.html 严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信...阅读全文

Go io包

Go io包 Go io包的接口概览 io.Writer interface // Writer 接口包装了基本的 Write 方法,用于将数据存入自身。 // Write 方法用于将 p 中的数据写入到对象的数据流中, // 返回写入的字节数和遇到的错误。 // 如果 p 中的数据全部被写入,则 err 应该返回 nil。 // 如果 p 中的数据无法被全部写入,则 err 应该返回相应的错误信息。 type Writer interface { Write(p []byte) (n int, err error) } 我们可以通过查看标准库文档,列出实现了io.Reader或io.Writer接口的类型(导出的类型): os.File 同时实现了io.Reader和io.Writer s...阅读全文

博文 2017-02-12 12:00:25 xxggy

优秀跨平台Redis可视化客户端工—RedisViewer

自荐RedisViewer一个有情怀的跨平台Redis可视化客户端工具 感谢头条小哥的精彩推广 — 最美分享Coder 介绍 在以往的文章中曾经介绍过几款Redis的可视化工具,在笔者的印象中Redis至今没有一款非常专业的可视化管理客户端,就算之前介绍过的几款也是差强人意,有些时候满足不了我们的需求,而今天本文要介绍的是另一款值得推荐的Redis可视化客户端,以下通过截图的方式来展示这款软件! 已支持Windows、MacOS、Linux,方便不同平台开发者们使用! 本软件出自@可乐onefineday之手。 技术栈 UI: electron、vue、elenentui 服务: springboot 、webflux 、mybatis 、mapper PS: 现阶段服务JVM使用openj...阅读全文

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