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

Go圣经-学习笔记入门bufio.Scanner

上一篇 Go圣经-学习笔记入门bufio 下一篇 Go圣经-学习笔记入门bufio.Writer 由bufio.Reader引出的问题 由上篇文章《Go圣经-学习笔记入门bufio》,我们可以知道,bufio.Reader结构体中所有读取数据的方法,都包含了delim分隔符,这个用起来很不方便,所以Google对此在go1.1版本中加入了bufio.Scanner结构体,用于读取数据。 使用DEMO: func main(){ scanner:=bufio.NewScanner( strings.NewReader("ABCDEFG\nHIJKELM"), ) for scanner.Scan(){ fmt.Println(scanner.Text()) // scanner.Bytes()...阅读全文

博文 2017-10-22 00:31:10 cdh0805010

Go如何发送广播包

网络数据包的发送分为三种方式,分别是单播、组播、广播。 广播通俗地讲,就是让你的机器发送的数据包可以被同一个网络内的所有主机都接收到。 在讲解如何发送广播包之前,先来看看跟广播有关的知识: 我们都知道IP地址的作用是用来在网络中定位某个网络接口的(没错,准确的讲,IP并不是定位某一台主机)。我们通常见到的IP地址的形式都是如下这样子的: XXX.XXX.XXX.XXX 这种IP地址的形式叫做点分十进制表示法,其实IP是一个32位长的二进制数,以每8位为单位,共分成4个部分,也就是分成了4个字节。 IP地址的组成方式是: [网络号]+[主机号] 网络号是用来标识某个网络的,而主机号是用来标识网络中的某一台主机的(其实是主机上的某个接口)。 通常计算机发送一个数据包时会在数据包的头部加上发送者的...阅读全文

博文 2015-11-03 15:00:15 u011774512

Golang+MySQL 事务

准备知识:MySQL事务 1 基本操作 sql.Tx tx会从连接池中取一个空闲的连接,直至调用commit或者rollback才会释放 tx, err := db.Begin() // 创建tx对象 tx.Query(command1) tx.Exec(command2) tx.Commit() 2 并发 事务只有一个连接,事务内的操作是串行的 db, _ := sql.Open(...) rows, _ := db.Query("SELECT id FROM tt_users") for rows.Next(){ var ( user_id int openid string ) rows.Scan(&user_id) db.QueryRow("SELECT openid FROM tt...阅读全文

博文 2018-08-08 14:34:53 埃尔温薛定谔不养猫

Go语言程序测试

最近一直在搞各种测试,然后今天周末翻翻书,发现特价萝卜的书上在测试方面写得挺全的。 这书是之前CU(chinaunix.net)论坛。搞活动得到奖品(还有作者亲笔签名),拿回来都没看完. 因为写得太太太细了,又厚。 参考他的书及官网的文档,再把测试方面的东西过一下还是有点意思的. 这篇主要讲这几点: 一.Testing的几种不同形式 功能测试: TestXxxx(t *testing.T) 基准测试: BenchmarkXxxx(b *testing.B) 样本测试: Example_Xxx() 用于测试的Main函数: TestMain(m *testing.M) // // func TestMain(m *testing.M) { // flag.Parse() // os.Exit(...阅读全文

博文 2015-12-15 01:00:04 xcltapestry

终极 Web 应用性能和压力测试工具 Gor

常见的 Web 应用的压力测试工具 Web 应用压力测试工具有很多,比如 Apache ab,node-ab,Apache JMeter, LoadRunner, httperf。但是这些工具都没能解决一个问题: 如何正确模拟生产环境的流量 如今 Web 应用的架构变得非常复杂,内部包含复杂的各种负载均衡、 服务和 RPC 调用关系,简单的发送 GET 请求到某些 URL 或者 API 接口完全无法模拟真实的流量。假如回放 HTTP 日志,操作又异常麻烦。Tcpcopy 虽然能够复制实时流量,但是操作也很复杂。之前的 亚马逊云平台的迁移 就用到了 Gor 这个工具。 Gor 是 Web 应用压力测试的完美方案 我一直在找一个简单又方便的解决方案,直到找到了 Gor 。Gor 是用 Golan...阅读全文

博文 2015-06-17 20:15:54 xtqve

GOLANG 基本数据类型 整型

基本数据类型-整型 种类 有符号(负号) int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位数) int uint 类型别名 Unicode字符rune类型等价int32 byte等价uint8 特殊类型 uintptr,无符号整型, 由系统决定占用位大小,足够存放指针即可,和C库或者系统接口交互 取值范围 具体类型 取值范围 int8 -128到127 uint8 0到255 int16 -32768到32767 uint16 0到65535 int32 -2147483648到2147483647 uint32 0到4294967295 int64 -9223372036854775808到9223...阅读全文

博文 2016-08-30 16:00:00 zengyz

Golang中如何编写test测试代码

这种编写test的操作还是我实习的小哥哥教我的,个人觉得特别的实用,我们编写项目的时候难免不会出现某个调用不确定!这个输出结果是否是我们期望的!很多是否都要碰都这种情况,特别是在写一些项目的时候,文件很多代码也多,以前在不知道这样方法的时候就很恼火,以前在遇到这种情况的时候处理方法就是用IDE新建一个环境,然后把要测试的函数直接复制过去,但是这样不仅麻烦很多时候还没有办法做。 打个比方:我现在不确定我用gorm(Go语言中一个比较火的orm第三方包)写了一个model的查询,但是我不确定我写的这个是否有问题,那么就只有另外写一个东西来运行测试这个函数是否正确。但是model的查询等等,都是还是很多数据库初始化连接,读取配置文件中的数据库配置信息等,一大堆的东西,所以就很麻烦。自从小哥哥教了我...阅读全文

博文 2019-02-02 19:34:43 _AlphaBaby_

杭州招聘全职Golang高级工程师

**要求** 1、开发snmp、xmpp、APNS推送等系统服务 2、知道ruby on rails更好, web这一层我们是用ROR写的 3、一年以上Golang经验, 想长期沿着Golang走下去 4、有github帐号, 熟悉linux/mac+git开发环境 **团队** 20人左右, 技术不到10人, 服务器暂时放Ruby、Go各1人, iOS、Android各1人 、嵌入式以及硬件共4人、测试、支持什么的2人、架构1人,所以Go这块要可以独立工作的 **产品** 户外的智能WiFi应用 **地点** 杭州文一西路 **待遇** 8-12k+五险一金+年终奖励 **联系人** www.sharp.bz...阅读全文

主题 2013-10-23 15:44:39 sharp

AliPay SDK for Golang

https://github.com/smartwalle/alipay AliPay SDK for Golang ## 已实现接口 #### 手机网站支付API * **手机网站支付接口** alipay.trade.wap.pay * **统一收单线下交易查询** alipay.trade.query * **统一收单交易支付接口** alipay.trade.pay * **统一收单交易关闭接口** alipay.trade.close * **统一收单交易退款接口** alipay.trade.refund * **统一收单交易退款查询** alipay.trade....阅读全文

了解一下Golang的市场行情

了解一下Golang的市场行情 项目地址:https://github.com/go-crawler/lagou_jobs 如果对你有所帮助,欢迎 Star :) 目标 在工作中 Golang 已是一份子,想让大家了解一下 Golang 的市场行情,也想让更多的人熟悉它。因此主要是展示数据分析的结果 目标站点是 某招聘网站 的职位数据抓取和分析,爬取城市分别为 北京、上海、广州、深圳、杭州、成都,再得出一个结论 分析 首先需要进行页面分析,找到我们的抓取方向 搜索 golang 关键字,打开页面 F12 就能看到它发送了四个请求,留意 positionAjax.json 这个请求 我们仔细研判这个接口的入参和出参 入参 1、Query String Param city:请求的城市 need...阅读全文

博文 2018-04-28 09:44:10 go-crawler

Golang测试包小结

Golang测试包 golang自带了测试包(testing),直接可以进行单元测试、性能分析、输出结果验证等。简单看着官方文档试了试,总结一下: 目录结构和命令 使用golang的测试包,需要遵循简单的目录结构 测试代码放在待测试代码的目录下(一个包内),以_test.go结尾,例如如下目录结构,MyTest目录下有待测试的代码文件MyTest.go和测试代码MyTest_test.go . |-- bin | `-- main |-- pkg | `-- darwin_amd64 | `-- MyTest.a `-- src |-- MyTest | |-- MyTest.go | `-- MyTest_test.go `-- main `-- main.go 直接在MyTest目录下执...阅读全文

博文 2015-03-03 03:00:01 numbersix

阿里云技术大牛详解混合云数据安全传输两大解决方案

阿里云高级安全专家 安忍 引言 Gartner称,云计算的使用正在不断增加,到2016年这一增长将占据大量新增IT开支。2016年将是云计算决定性的一年,私有云开始让路给混合云,近半数的大型企业将在2017年年底部署混合云。 但在此过程中,从公共云到私有云之间的数据安全传输问题也成为各方关注的焦点。 本文详细解读了阿里云是如何通过自有产品VPC高速通道专线接入和第三方安全厂商VPN公网接入两种方案,解决用户这方面的安全诉求。 数据安全传输解决方案之阿里云 · 高速通道 在与用户沟通时,我们发现用户对于混合云的数据安全传输主要有这四大诉求: l 出现类似微博跨年抢红包、12306过年卖票这种突发业务,可以快速将业务平滑地从私有云向公共云迁徙,保证业务...阅读全文

golang slice

#slice append 实现 s2 := append(s1, *) 切片s1上记录的切片信息复制给s2, 1.如果s1指向的底层array长度不够,append的过程会发生如下操作:内存中不仅新开辟一块区域存储append后的切片信息,而且需要新开辟一块区域存储底层array(复制原来的array至这块新array中),最后再append新数据进新array中,这样,s2指向新array。 2.如果s1指向的底层array长度够, s2和s1指向同一个array,append的结果是内存中新开辟一个区域存储新切片信息。 开辟一块区域存储底层array 使用下面的策略: 1.如果 增加的 len < s的cap 则 新s的cap*2 2.如果 增加的 len > s的cap 则 新s的c...阅读全文

博文 2017-09-21 09:33:13 1071954237

golang读写文件

抗压测试的时候多线程需要使用一个文件的内容频繁发送,所以想预处理文件内容到内容,分段发送, 1.读取文件内容到内存 type Chunk struct{ data []byte } func prepareChucks(path string) { fi, err := os.Open(path) if err != nil { panic(err) } defer fi.Close() for { buf := make([]byte, 4096) //每次需要再for循环里面重新make,踩坑 n, err := fi.Read(buf) if err != nil && err != io.EOF { panic(err) } if 0 == n { break } chunckDat...阅读全文

博文 2019-05-07 13:35:15 柯蓝_e007

go语言函数参数与返回值示例,数组的简单应用

go语言函数参数与返回值示例,数组的简单应用 package main import "fmt" func main() { string1 ,string2 :=test_various_values(30,58) fmt.Println("参数1 ",string1) fmt.Println("参数2 ",string2) fmt.Println("------------------------------------------------------------------") v1 ,v2 :=test_various_values2(46,"huangmao") fmt.Println("--v1==== ",v1) fmt.Println("---v2 == ",v2) fm...阅读全文

博文 2016-10-26 17:00:01 qq_26337701

golang. 批量获取redis中的缓存值

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> 使用redis的pipeline,批量获取redis中的key值时,报错,分析发现,批量获取时,exec后,会返回两种值:nil 及 redis.Nil, 这种情况下,使用常规的 if err!=nil 的判断方法判断错误,是会报错的。 测试代码: package main import ( "github.com/go-redis/redis" "log" "strconv" ) func main() { client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB...阅读全文

博文 2018-09-01 14:33:16 gguoqiang110

golang流操作(一)——GetStream

问题 最近看了《分布式对象存储--原理架构及Go语言实现》这本书,整体思路很清晰,但是由于对于golang中的数据流操作(tcp数据流,文件流等)不是很熟悉,导致对代码的理解有点问题。所以特地整理一下。 场景 假设要做一个对象储存,架构如下所示: 对象存储架构.png 其中接口服务器是直接和客户端交互的,而数据服务器是用来存储存储数据的。 现在将问题简化,只有一个接口服务器,一个数据服务器。当客户端想从服务器获取数据时,流程如下所示: 客户端发起请求流程.png 客户端需要先找接口服务器要数据,接口服务器找数据服务器要(当然需要先定位数据在哪个数据服务器上),数据服务器回数据给接口服务器,接口服务器再回复给客户端,经过这样的流程,客户端才能收到数据。 接口设计 客户端获取数据时向接口服务器发...阅读全文

博文 2018-12-26 23:34:43 StormZhu

FastAPI、Flask、Golang性能测试

前言 最近看到一篇讲python 几款异步框架,其中一款框架让人眼前一亮,他就是Fastapi。其中介绍到 其性能能与Node相匹配,甚至在某种情况下可以与Golang相媲美。这是什么概念?传统观念中,python生来视乎就与高性能、大并发风马牛不相及,而Golang似乎是高性能的代名词。这里python出现一款框架与Golang相媲美,无法不让人对这个东西产生联想。这里就对这三个做一个性能测试,看看情况如何 环境 2 核CPU, 8G内存 虚拟机 压测工具: webbench 代码示例 FastAPI from fastapi import FastAPI app = FastAPI() @app.get('/') async def index(): return {'message':...阅读全文

博文 2020-01-05 13:32:47 梦想做小猿

Boom — Go语言实现的性能测试工具

Boom — Go语言实现的性能测试工具 HTTP(S) load generator, ApacheBench (ab) replacement, written in Go Boom is a tiny program that sends some load to a web application. It's similar to Apache Bench (ab), but with better availability across different platforms and a less troubling installation experience. 项目地址:[https://github.com/rakyll/boom](https:/...阅读全文

Golang 数据库操作

Golang 数据库操作 Golang 数据库 MySQL Golang支持DB操作位于database包下,支持基本CRUD操作、事务和Prepared Statement,本文以MySQL为例。 MySQL驱动安装 使用数据库之前,必须安装相关MySQL数据驱动[1],如果未安装驱动或者没有引入驱动库会报以下错误: failed to open database: sql: unknown driver "mysql" (forgotten import?) 安装golang mysql driver go get github.com/go-sql-driver/mysql 代码中还需注册数据库驱动,通过引入空白倒入[2]mysql包来完成 import( "database/sql"...阅读全文

博文 2015-08-09 18:00:00 nop4ss

golang mongodb mgo 插入,查询例子

golang mongodb mgo 插入,查询的一个小例子,golang还是给我那个感觉,比nodejs写起来舒服. package main import ( "fmt" "launchpad.net/mgo" "launchpad.net/mgo/bson" ) type Mail struct { Id bson.ObjectId "_id" Name string Email string } func main() { // 连接数据库 session, err := mgo.Dial("127.0.0.1") if err != nil { panic(err) } defer session.Close() // 获取数据库,获取集合 c := session.DB("tes...阅读全文

博文 2014-10-05 00:00:01 DarkWingBoy

Golang 开发的微信 SDK go-wechat-sdk

### WeChat SDK for Go 使用Golang开发的微信SDK,简单、易用。 ### 快速开始 以下是一个处理消息接收以及回复的例子:

//配置微信参数
config := &wechat.Config{
    AppID:          "xxxx",
    AppSecret:      "xxxx",
    Token:          "xxxx",
    EncodingAESKey: "xxxx",
    Cache:          memCache
}...阅读全文

【200426】字节跳动大量岗位释放,欢迎找我内推,base 北京/深圳

职位描述 1、服务于字节跳动核心广告系统,负责广告商业变现基础平台研发工作; 2、设计并维护广告投放平台,优化改进微服务系统薄弱点,解决数据隔离、系统解耦等技术难题; 3、对接抖音、头条、西瓜、抖音火山版等当红APP的广告投放; 4、深入理解广告投放流程,了解上下游投放链路和投放策略,参与现有投放链路和策略优化,助力平台营收; 5、提供百亿级广告基础数据服务,完成大规模、高可用的广告系统搭建。 职位要求 1、熟悉python、php、c++、java、golang 等中至少一门语言 ),具备良好的编码能力; 2、基础扎实,熟悉网络编程,熟练使用至少一种数据库和缓存等基础组件; 3、学习能力强,能够独立分析和解决问题,逻辑思维能力强,善于分析和解决问题,能够处理复杂业务系统逻辑; 4、责任心强...阅读全文

博文 2020-04-26 21:32:51 林湾村龙猫

golang 查询数据库操作

SQL.Open only creates the DB object, but dies not open any connections to the database. If you want to test your connections you have to execute a query to force opening a connection. The common way for this is to call Ping() on your DB object. See http://golang.org/pkg/database/sql/#Open and http://golang.org/pkg/database/sql/#DB.Ping Quoting from...阅读全文

博文 2017-07-01 08:00:35 oxspirt

Golang -- 10件你不知道的事情

本文翻译 从 文章进行翻译,在此表示感谢 10 things you (probably) don’t know about golang 匿名结构体 (Anonymous structs) Template data (模板数据) data := struct { Title string Users []*User //猜测 User 是一个接口,接口指针的切片 } { title, USERS, } err := tmpl.Execute(w, data) (Cheaper and safer than using map[string]interface{}) 确实没有太理解,是什么意思? 嵌入式锁 (Embedded Lock) var hits struct{ sync.Mute...阅读全文

博文 2015-03-29 20:00:09 xiaorenwuzyh

[笔记]Go语言写文件几种方式性能对比

Go语言中写文件有多种方式,这里进行如下几种方式的速度对比: 打开文件,写入内容,关闭文件。如此重复多次 打开文件,写入内容,defer 关闭文件。如此重复多次 打开文件,重复多次写入内容,defer 关闭文件 在VMWare下的Ubuntu 14.04下运行的结果表明: 方式1速度最慢,但是慢的很稳定 方式2比方式1略快,但是重复次数多了后会报错,应该是defer被压栈太多导致系统撑不了太多打开的文件 方式3速度约是前两者的2倍,因为减少了很多打开关闭文件的操作 测试代码如下: package main import ( "fmt" "os" "time" ) func benchmarkFileWrite(filename string, n int, index int) (d tim...阅读全文

博文 2015-03-08 03:00:01 journeyonmyway

Go中nil

结论:由于Go中interface会同时存储类型和值,如果将一个nil对象赋值给一个interface,这个interface为非nil。 nil在Go中相当与其它语言中的NULL、null和None等,在实际的使用中表示某一个变量为空。nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果将nil赋值给其他变量的时候将会引发panic。 首先来看一个代码: package main import "fmt" type MyError struct{} func (this *MyError) Error() string { return "" } func test() error { var p *MyError = nil /* //C...阅读全文

博文 2016-02-07 12:00:01 jiaolongdy

互联网哪些职位最赚钱?开发哪些语言人才最贵最热门?

一、互联网人群求职意向 数据显示,互联网人对市场销售类职位最有意向,占比高达25.47%。技术类和运营类职位紧跟其后,分别占到23.55%和18.08%的比例。其中,市场销售类细分领域中,销售与市场营销职位更受关注;在技术类细分领域中,较受亲睐的是移动开发和后端开发;而在运营细分领域中,运营是最受欢迎的职位。二、互联网十大高/低薪职位 数据统计得知,CTO、CFO、COO、CMO、产品总监、技术总监、架构师、交互设计总监、网络推广、视觉设计总监是平均工资排名前十的互联网职位。其中,CTO最为吸金,以平均35.06万的年薪位居榜首。相比之下,前台、出纳、售后客服、售前咨询、助理、行政、产品助理、内容编辑、IT支持和Flash设计师成为了工资最低的十大岗位,前台的年薪仅有4.07万。大家可以对工...阅读全文

博文 2017-07-07 02:07:25 宝桃软件夏正行

golang udp服务端客户端例子

golang udp服务端客户端例子 服务端: package main import ( "fmt" "net" ) func main() { // 创建监听 socket, err := net.ListenUDP("udp4", &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 8080, }) if err != nil { fmt.Println("监听失败!", err) return } defer socket.Close() for { // 读取数据 data := make([]byte, 4096) read, remoteAddr, err := socket.ReadFromUDP(data) if err != nil...阅读全文

分布式文件系统 SeaweedFS

SeaweedFS 是简单,高伸缩性的分布式文件系统,包含两部分:存储数十亿的文件;快速为文件服务。SeaweedFS 作为支持全 POSIX 文件系统语义替代,Seaweed-FS 选择仅实现 key-file 的映射,类似 "NoSQL",也可以说是 "NoFS"。 SeaweedFS 仅花费 40 字节的硬盘来存储每个文件的元数据。 基准测试基于 Mac Book,固态硬盘,CPU:1 Intel Core i7 2.6GHz。 编写 1 百万的 1KB 文件:

Concurrency Level:      16
Time taken for tests:   88.796 seconds
Complete requests:  ...阅读全文

Golang 发送Post表单请求

准备服务器 package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/tpost", func(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { var ( name string = r.PostFormValue("name") ) fmt.Printf("key is : %s\n", name) } }) err := http.ListenAndServe(":80", nil) if err != nil { fmt.Println(err.Error()) return } } 测试发送POST请求 packa...阅读全文

博文 2019-03-27 02:34:37 Rnben

golang 的 sync.WaitGroup

WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 官方对它的说明如下: A WaitGroup waits for a collection of goroutines to finish. The main goroutine calls Add to set the number of goroutines to wait for. Then each of the goroutines runs and calls Done when finished. At the same time, Wait can be used to block until all goroutines have fini...阅读全文

博文 2015-05-30 03:00:15 ghj1976

Archlinux下Golang环境配置

一、准备 1)golang 安装:# pacman -S go/$ sudo pacman -S go 2)liteide 安装:# pacman -S liteide/sudo pacman -S liteide 二、配置环境 1)golang Archlinux中配置环境最好放到自启动中。 #nano /etc/profile.d/go.sh #set go environment export GOPATH=/home/用户名/Workspaces/Go #根据自己的Go工作目录替换 export GOBIN=$GOPATH/bin export PATH=$GOBIN:$PATH 以上代码在Archlinux(Linux localhost 4.2.2-1-ARCH #1 SMP P...阅读全文

博文 2015-10-05 09:00:02 大糊涂

goLang 文件操作之一

go 官方库的文件操作分散在多个包中,感觉有点乱,比如os,ioutil包,基于别人总结的基础上简单总结一下 1.文件基本操作 1.1创建空文件 package main import ( "os" "log" ) var ( newFile *os.File err error ) func main(){ //创建文件 newFile,err=os.Create("text.txt") checkErr(err) log.Println(newFile) newFile.Close() } /** 检查错误 */ func checkErr(err error){ if err!=nil{ log.Fatal(err) } } 1.2 truncate 文件 package main i...阅读全文

博文 2018-02-07 15:34:38 soledad

每日安全资讯(2019.09.06)

用Golang打造一款便携式网络拓扑可视化的工具 之前做内网渗透测试的时候,一直想要有一款能够格式化存储收集到的信息,并且可以方便的查找出重要信息的工具。前段时间看到了Leprechaun这个工具,给了我一些想法。由于,我对于这个工具有些不喜欢的地方。再加上好久没有写小程序练手了,于是决定自己定制一款类似的工具。 https://www.freebuf.com/sectool/212374.html 自古逢秋悲寂寥:浅谈瑞华的“分手季” 瑞华最近不太好,前头沾惹上陈年造假大案,后头接连被分手两次。为啥安全圈的大佬们不爱瑞华了? https://www.freebuf.com/news/213476.html 一种基于欺骗防御的入侵检测技术研究 欺骗防御(Deception)是防守者得以观察攻...阅读全文

博文 2019-12-27 16:33:08 溪边的墓志铭

在 Golang 中尝试简洁架构

>(独立性,可测试性的和简洁性) 在阅读了 Bob 叔叔的 Clean Architecture Concept 之后,我尝试在 Golang 中实现它。我们公司也有使用相似的架构,[Kurio - App Berita Indonesia](https://kurio.co.id/), 但是结构有点不同。并不是太不同, 相同的概念,但是文件目录结构不同。 你可以在这里找到一个示例项目[https://github.com/bxcodec/go-clean-arch](https://github.com/bxcodec/go-clean-arch),这是一个 CRUD 管理示例文章 ![](https://raw.githubusercontent.com/studygolang/gctt...阅读全文

博文 2018-05-07 22:23:03 fredvence

趣头条基于 Flink 的实时平台建设实践

本文由趣头条实时平台负责人席建刚分享趣头条实时平台的建设,整理者叶里君。文章将从平台的架构、Flink 现状,Flink 应用以及未来计划四部分分享。 一.平台架构 1.Flink 应用时间线 首先是平台的架构,2018 年 3 月之前基本都是基于 Storm 和 Spark Streaming 来做的。目前,基本已经把 Spark Streaming 和 Storm 淘汰了,主要都是 Flink SQL 来做的。起初还比较传统,一般是接需求然后开发类似于 Flink SQL 的任务,基本是手工作坊操作模式。 后来 Flink SQL 的任务逐渐多了起来,就开始考虑往平台化方向发展。大概在 2018 年 10 月份,我们开始搭建实时平台。当时设计实时平台时就直接抛弃了 Spark Strea...阅读全文

问答 APP 自动答题助手Answer Helper

问答 APP 自动答题助手,适用于 百万英雄 / 芝士超人 / 冲顶大会 / 花椒百万赢家 等多个直播答题类 APP,支持 iOS、Android 手机和模拟器,3 秒出结果,可以自动答题。 ![image](https://raw.githubusercontent.com/henson/Answer/master/doc/1.png) 超快的响应速度 支持iOS、Android 支持真机测试和模拟器 全面覆盖百万英雄/芝士超人/冲顶大会/花椒百万赢家等多个直播答题类APP 优化搜索逻辑保证高正确率 多维度参考值,答案交叉验证 自动答题(目前仅支持Android...阅读全文

golang实现抽象工厂模式

在项目过程中,遇到某处需要使用工厂模式,因此写了个测试代码进行测试, 首先定义了interface Worker,其中包含一个接口Work(task *string) 然后定义创建Worker的interface WorkerCreator,包含一个接口Create() ,返回值为Worker type Worker interface { Work(task *string) } type WorkerCreator interface { Create() Worker } 我们假设有一个工种程序员,实现了Work接口,同时定义其构造类,实现Create()接口 type Programmer struct { } func (p *Programmer) Work(task *stri...阅读全文

博文 2016-04-16 19:00:00 qq_33204116

Golang利用select实现goroutine的超时控制

简单的说下select是干什么的? select用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的处理机制。当你发起一些阻塞的请求后,你可以使用select机制轮训扫描fd,直到被监视的文件句柄有某一个或多个发生了状态改变。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。 http://xiaorui.cc/?p=2997 本来只是想说下select,但又忍不住废话下说下epoll的处理流程: 我们可以把要监控读写的文件交给内核(epoll_add),而内核通过中断的方式得知事件通知. 这要比select好不少. 设置你关心的事件(epoll_ctl),比如读事件. 然后等(epoll_wait),此时,如果没有哪个文件有你关心的事...阅读全文

博文 2017-04-04 19:30:56 rfyiamcool

golang map to struct

map映射到结构体,这里只支持简单的数据类型,复杂的需要在拓展 package main import ( "errors" "fmt" "reflect" "strconv" "time" ) type User struct { Name string Age int8 Date time.Time } func main() { data := make(map[string]interface{}) data["Name"] = "张三" data["Age"] = 26 data["Date"] = "2015-09-29 00:00:00" result := &User{} err := FillStruct(data, result) fmt.Println(err, fmt...阅读全文

博文 2015-09-29 16:00:03 别人说我名字很长

Golang的map并发安全

已知多个goroutine同时读写Map会出问题 如下代码会抛出异常 package main import ( "time" "fmt" ) func main() { c := make(map[string]int) go func() {//开一个goroutine写map for j := 0; j < 1000000; j++ { c[fmt.Sprintf("%d", j)] = j } }() go func() { //开一个goroutine读map for j := 0; j < 1000000; j++ { fmt.Println(c[fmt.Sprintf("%d",j)]) } }() time.Sleep(time.Second*20) } 运行结果 fatal...阅读全文

博文 2019-05-03 07:34:38 星落纷纷

[更新20151203:继续扩队伍! ]招golang 分布式平台开发工程师(Docker相关) 上海 (2名)

我们是专门为国内大金融(银行,交易所,保险公司,证券)和电信提供开源解决方案和服务的专业团队。公司技术团队都是热爱开源,长期做开源工作的工程师。 非常感谢我们这个专业社区,去年我们在这里发帖找到了非常棒的golang开发人员。 经过1年的努力,我们终于开发出了基于golang 和docker底层技术的面向金融行业的分布式平台。并且作为国内领先的团队,在超大型金融企业的项目中落地,真正发挥了golang的的威力。 随着业务良好的扩展,我们开始扩展团队,这次仍旧在上海总部招聘 2位golang 开发工程师 招聘情况如下,喜欢golang , 分布式和开源技术的小伙伴快来加入我们把。 工作地点: 上海 职位描述: 分布式平台开发工程师 薪酬范围:12k-20k, 13...阅读全文

你应该知道Go语言的几个优势

要说起GO语言的优势,我们就得从GO语言的历史讲起了…… 本文由腾讯技术工程官方号发表在腾讯云+社区 2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新语言来取代C++, 这就是Golang。出现在21世纪的GO语言,虽然不能如愿对C++取而代之,但是其近C的执行性能和近解析型语言的开发效率以及近乎于完美的编译速度,已经风靡全球。特别是在云项目中,大部分都使用了Golang来开发,不得不说,Golang早已深入人心。而对于一个没有历史负担的新项目,Golang或许就是个不二的选择。 被称为GO语言之父的Rob Pike说,你是否同意GO语言,取决于你是认可少就是多,还是少就是少(Les...阅读全文

博文 2018-06-19 16:34:45 腾讯云加社区

golang后台 实现用户登录注册

第一步 注册models models 下建立 models.go models.go文件 package models import ( "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql") func RegisterDB() { //注册驱动 orm.RegisterDriver("mysql", orm.DRMySQL) //数据库链接 //注册默认数据库 var db_url string = beego.AppConfig.String("username_DB") + ":" + beego.AppConfig.String("password_D...阅读全文

博文 2018-08-04 00:30:02 acg88688

阿里1682亿背后的协同研发云——云效公共云正式商业化

摘要: 2017年12月20日云栖大会北京峰会,阿里云宣布其一站式企业协同研发云产品——云效公共云版本正式进入商业化服务阶段,同时云效还发布了三大新功能模块:跨团队联合作战的项目集、多维度测试服务、便捷高效的移动端工作台。 2017年12月20日云栖大会北京峰会,阿里云宣布一站式企业协同研发云产品——云效,其公共云版本正式进入商业化服务阶段,将为更多企业提供研发效能服务。发布会现场,还首次亮相了三大新功能:跨团队联合作战的项目集、多维度测试服务、便捷高效的移动端工作台。 云效是一站式企业协同研发云,支持公共云、专有云和混合云三种模式下的大规模团队的项目管理和协同研发,它为应用项目研发全周期(需求->开发->测试->发布->运维->运营)提供高效的工具化支撑,落地实现敏捷研发、流式实施交付和分...阅读全文

博文 2017-12-25 04:03:31 maoerya

history.back(-1)和history.go(-1)的区别

history.back(-1)和history.go(-1)的区别 阅读:7233 次 编辑日期:2016-01-11 目录: 1这个方法的用途 2两个方法的区别 3总结 概述: H5页面做多了,自然就会做到页面上的返回功能,返回功能大致有两种:history.back(-1)和history.go(-1),今天我们来说说两种方法的区别。 这个方法的用途 返回一个页面方法有很多,就好比给返回按钮绑定一个URL,但是如果一个页面可以从很多页面到达,那么这个页面返回的页面就不是固定的,那么绑定固定的URL显然不妥。 两个方法的区别 既然history.back(-1)和history.go(-1)都是返回之前页面,但是方法不同,所以肯定是有区别的: 1 2 history.back(-1)//...阅读全文

博文 2017-09-28 15:31:02 a460550542

聊聊BoltDB:简单使用

说明 -- BoltDB是一个嵌入式key/value的数据库,即只需要将其链接到你的应用程序代码中即可使用BoltDB提供的API来高效的存取数据。而且BoltDB支持完全可序列化的ACID事务,让应用程序可以更简单的处理复杂操作。 BoltDB设计源于LMDB,具有以下特点: * 直接使用API存取数据,没有查询语句; * 支持完全可序列化的ACID事务,这个特性比LevelDB强; * 数据保存在内存映射的文件里。没有wal、线程压缩和垃圾回收; * 通过COW技术,可实现无锁的读写并发,但是无法实现无锁的写写并发,这就注定了读性能超高,但写性能一般,适合与读多写少的场景。 最后,BoltDB使用Golang开发,而且被应用于influxDB项目作为底层存储。 使用 *安装BoltDB...阅读全文

博文 2017-09-09 14:15:59 丁凯

Go 中的 import 声明

Go 中的程序由各种包组成。通常,包依赖于其它包,这些包内置于标准库或者第三方。包首先需要被导入才能使用包中的导出标识符。这是通过结构体调用 *import 声明* 来实现的: ```go package main import ( "fmt" "math" ) func main() { fmt.Println(math.Exp2(10)) // 1024 } ``` 上面我们有一个 import 导入的例子,其中包含了两行导入声明。每行声明定义了单个包的导入。 > 命名为 **main** 的包,是用来创建可执行的二进制文件。程序的执行是从包 **main** 开始,通过调用包中也叫做 **main** 的函数开始。 但是,还有其它一些鲜为人知的导入用法,这些用法在各种场景下都很实用: ...阅读全文

博文 2018-09-27 23:10:35 polaris