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

Golang搭建并行版爬虫信息采集框架

1.简介 Go语言在分布式系统领域有着更高的开发效率,提供了海量并行的支持。本博文介绍的是采用Go语言搭建一个并行版爬虫信息采集框架,博文中使用58同城中租房网页做案例。相比较其他爬虫程序它的优点是: 1.抓取信息速度非常快,因为是并行处理的,通过配置协程数量,可以比普通的爬虫信息采集程序快上上百倍。 2.功能模块化,每个功能模块各司其职,配置简单。通过修改信息抓取规则,就可以采集不同网站中的数据。 程序源代码放到github上,链接地址是: https://github.com/GuoZhaoran/crawler 2.项目架构 下面是项目整体架构的示意图: 2.1 Request(请求) 该爬虫架构中Request请求可以理解为:抓取请求url的内容,例如抓取58同城北京市的租房信息时,...阅读全文

博文 2018-10-05 22:34:38 郭兆冉

.net的快递鸟物流单号自动识别查询api接口demo实例

1、应用场景(1)PC端、移动端应用或网站应用集成运单物流信息查询功能时,只需要录入单号即可完成查询,无需用户输入快递公司。(2)电商网站要在快递鸟查询或者订阅运单时,可通过单号识别先行判断物流公司后,再订阅到快递鸟。2、是否需要授权要Free申请服务3、接口描述/说明API ID:点击申请API Key:点击申请示例(1)请求示例JSON格式(1)该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。(2)接口并不返回物流轨迹,用户可结合即时查询接口和订阅查询接口完成轨迹查询、订阅的动作。(3)接口识别会返回一家或者多家快递公司,返回的数据根据快递鸟大数据分析结果排序,排名靠前的命中率更高。(4)若识别失败,快递鸟返回的匹配结果为空。(5)接口支持的消息接收方式为HTTP POST,...阅读全文

博文 2019-09-09 15:36:04 fire70

Golang创建daemon程序

## daemon的概念 守护进程(daemon)就是一直在后台运行的进程,它没有控制终端,无法和前台的用户交互。当我们打开一个终端时会创建一个session会话(shell),从用户登录开始到用户退出为止,这段时间内在该终端执行的进程都属于这一个会话。一个会话一般包含一个前台进程组、一个后台进程组和一个会话首进程(shell程序本身)。 例如用以下命令启动5个进程: > $ proc1 | proc2 & > $ proc3 | proc4 | proc5 > proc1和proc2属于同一个后台进程组,proc3、proc4、proc5属于同一个前台进程组,Shell进程本身属于一个单独的进程组。这些进程组的控制终端相同,它们属于同一个session。 > **"后台任务"与"前台任务"...阅读全文

博文 2017-02-09 20:02:22 shanks

基于go通道的异步任务调度器

项目地址:[https://github.com/chenhg5/go-task](https://github.com/chenhg5/go-task) 安装 ``` go get github.com/chenhg5/go-task ``` 使用 ``` import ( "runtime" "fmt" "time" "github.com/chenhg5/go-task" ) func main() { // init task.InitTaskReceiver(runtime.NumCPU()) // add task task.AddTask(task.NewTask( map[string]interface{}{ "paramA" : "value", }, // parame...阅读全文

100%移植阿里云移动测试技术,竟仅需1周?!——移动测试专有云(2)——架构详解

摘要: 移动测试的应用架构 作为一整个庞大的移动测试解决方案,MQC专有云系统内部包含了非常多的软硬件模块,整个系统紧密高效的互相连接稳定配合。从模块划分上来看,主要包括:用户交互平台、任务调度平台、移动终端控制系统、无线机房管理平台、自动化测试能力、中间件(数据库、缓存、文件存储)、无线机房硬件方案、专家支持服务。 **移动测试的应用架构** 作为一整个庞大的移动测试解决方案,MQC专有云系统内部包含了非常多的软硬件模块,整个系统紧密高效的互相连接稳定配合。从模块划分上来看,主要包括:用户交互平台、任务调度平台、移动终端控制系统、无线机房管理平台、自动化测试能力、中间件(数据库、缓存、文件存储)、无线机房硬件方案、专家支持服务。除了自动化测试能力,其他应用模块构成专有云基础服务。 ...阅读全文

go+chan并发执行

利用一个chan执行一个并发的任务, 整个任务的最大耗时是最耗时的那个子任务 func SendChan(data int){ t := 10 - data if data == 5{ t = 20 } time.Sleep(time.Duration(t*1e9)) C <- data } func main(){ for i:=0; i<10; i++{ go SendChan(i) } for i:=0; i<10; i++{ var data int = <- C fmt.Println("data:", data) } ...阅读全文

博文 2017-08-05 03:14:54 jinjiashan

算法导论习题:10.2-7 in Go语言

10.2-7题:给出一个时间复杂度为O(n)的非递归过程,实现对一个含n个元素的单链表的逆转。 程序的主要思想就是,转变指标的指向,例如原本是1->2->3->4,现在变成1<-2<-3<-4,就实现了逆转 package main import ( "fmt" ) type Node struct { next *Node data int } type List struct { first *Node } func (l *List) Insert(d int) { node := &Node{nil, d} node.next = l.first l.first = node } func revise(l *List) { if l.first == nil { return } ...阅读全文

博文 2016-05-24 03:00:14 u013564276

gorilla/sessions 学习笔记

简单样例 首先调用NewCookieStore初始化一个store,同时传入一个secret key用来对session进行认证。 在Handler中,调用store.Get()获取一个已经存在的session或(如果不存在)创建一个新的。 设置sesssion.Values中的值,session.Values是map[interface{}]interface{}类型。 调用session.Save()将session保存到响应中。在实际项目中,调用session.Save(r,w)时需要检测返回的错误并处理。Save()方法必须在写入response之前调用,否则session cookie不会发送到客户端。 var store = sessions.NewCookieStore([]b...阅读全文

博文 2017-07-06 02:07:01 kingeasternsun

分布式分布订阅消息系统

image.png 几千行 C 代码实现了的一个优先级/延时队列,短小精悍 概念 tube - 消息通道,类似于 kafka 里面的 topic, 用来存储某一类或者业务的任务 job - 生产和消费的基本单元,每个 job 都会有一个 id 和 优先级 特点 1、协议,类 Memcached 协议, 非二进制安全 2、全内存, 可开启 binlog, 断电从 binlog 恢复数据 3、单线程, 使用 epoll/kqueue 来实现事件机制 基于golang和beanstalk封装的分布式发布订阅消息系统 主要工作 1、producer消息路由 2、维护client与topic的订阅关系 3、dispatcher并发投递消息给多个相关订阅者,从而支持1对N的关系 delivery gua...阅读全文

博文 2019-03-22 18:34:43 loloxiaoz

golang后台任务库

功能需求 本来想用linux自带的corntab,然而corn调试困难,而且不支持以下需求 能分布式 有http接口 能调试 有统计 kala 这个需求也不算小众,于是在网上查了一下,果然有,而且还比较多。 最后选择了kala,主要是它的接口比较简洁,而且调试方便。 注意 与其它库不同的是,kala没有选择与corntab格式兼容,而是采用了iso8601时间格式。 格式说明,可以见我上一篇博客。 小优化 kala是一个任务管理平台,也提供了golang、nodejs和python的客户端sdk,可是默认的 golang库,有点问题,于是我把kala默认的库修改了一下,只保留的客户端功能。 使用方法和官方一样,git仓库在此...阅读全文

博文 2017-12-01 00:00:01 xdao

高可用 Redis 服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

博文 2018-10-07 21:34:39 JAVA高级架构开发

Go中单引号和双引号和反引号(飘号)

Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 。Go语言中的字符串字面量使用 双引号 或 反引号 来创建 :双引号用来创建 可解析的字符串字面量 (支持转义,但不能用来引用多行);反引号用来创建 原生的字符串字面量 ,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式。根据我找到的资料以及碰到的情况来看, Go语言的单引号一般用来表示「rune literal」 ,即——码点字面量...阅读全文

博文 2018-10-06 02:35:09 ck_god

免费物流快递查询API接口对接攻略

目前提供快递查询的接口平台有:快递鸟(非淘系用户使用最多)菜鸟 (淘系用户使用)不同接口的区别:(1)快递鸟支持400多家物流快递公司,接口稳定免费,提供多种方式接口对接(2)菜鸟支持100多家物流快递公司接口,主要支持阿里淘系商家用户使用。快递API的应用场景与用途1. 最常见的应用场景如下:(1)电商网站:例如B2C、团购、B2B、批发分销站、C2C、本地生活交易等网站。(2)管理系统:订单处理平台、订货平台、发货平台、分销系统、渠道管理系统、客户管理系统、ERP等。2. 快递API的用途如下:(1)让顾客登录网站后,直接在“我的订单”页面内就能看到订单的物流状态。(2)自动筛选出“已签收”、“疑难件”等状态的单号,减轻物流跟单人员的压力。(3)改变订单的状态和交易流程,例如单号变为“已...阅读全文

博文 2019-08-15 17:33:51 fire70

go语言 基础编程学习笔记

无闻的 GO基础编程 1,在方法外部 只能声明变量 或者类型, 不能执行语句,比如说赋值(声明并且赋值 算到声明里面), 或者控制语句(这个和java是一样的, 要注意呀!)、 2,testAB := 10000 变量的简写形式 不能指定类型. 并且 这种方式只能在方法内部使用,在方法外部不能使用 3, 变量只有在声明 并且赋值的时候, 才能省略类型。在先声明后赋值的情况下面不能省略类型 4, 全局变量的声明不可以省略 var 5,强制类型转换获取一个值, 如何用 这个用这个给 这个变量赋值无所谓 可以使用:=, 也可以使用 var testVar int = . 赋值的时候的类型 必须得是一样的。 6,并行声明变量, 常量, 如果要指定的话,只能指定一个类型, 在声明的最后指定。并且所有的...阅读全文

Go语言中多字节字符的处理

1 概述 Go语言的字符串是使用 UTF-8 编码的。UTF-8 是 Unicode 的实现方式之一。本文内容包括:UTF-8 和 Unicode 的关系,Go语言提供的 unicode 包和 unicode/utf8 包的使用。 2 UTF-8 和 Unicode 的关系 Unicode一种字符集,是国际标谁化组织(ISO)设计的一个包括了地球上所有文化、所有字母和符号 的编码。他们叫它 Universal Multiple-Octet Coded Character Set,简称 UCS,也就是 Unicode。Unicode 为每一个 字符 分配一个唯一的 码点(Code Point),就是一个唯一的值。例如 康 的码点就是 24247,十六进制为 5eb7。Unicode 字符集仅仅...阅读全文

博文 2018-10-28 07:35:09 小韩说课

go任务调度9(op实现分布式乐观锁)

package main import ( "go.etcd.io/etcd/clientv3" "time" "fmt" "context" ) func main() { var ( config clientv3.Config client *clientv3.Client err error lease clientv3.Lease leaseGrantResp *clientv3.LeaseGrantResponse leaseId clientv3.LeaseID keepRespChan <-chan *clientv3.LeaseKeepAliveResponse keepResp *clientv3.LeaseKeepAliveResponse ctx context.Co...阅读全文

博文 2019-04-20 22:35:12 梁十八

Go语言打造分布式Crontab 轻松搞定高性能任务调度

Go语言开发分布式任务调度 轻松搞定高性能CrontabGolang因其强大的协程机制,现已广泛应用于解决分布式环境下的高并发问题。本门课程中将结合Etcd与MongoDB实现一个基于Master-Worker分布式架构的任务调度系统。你不仅将掌握Golang的工程实践能力,而且会收获诸如CAP、Raft的分布式经典理论与架构经验,”工程能力”与”知识体系”齐头并进,实现华丽质变第1章 课程介绍本章中将介绍一下本课程的基本内容,包括:我们要做什么、要求什么基础、将学会哪些工具、收获哪些独家干货,以及课程具体安排。1-1 课程导学 试看第2章 如何执行shell命令执行"定时任务"其实就是执行"shell命令"。在本章中,将首先带大家区分"程序"与"命令",接着了解bash命令解释器的2种工作...阅读全文

博文 2019-05-04 19:34:37 花开月月圆

送你一份Redis书单,以后使用缓存的问题不用再问我啦!

点击蓝色“程序员书单”关注我哟 加个“星标”,每天带你读好书! ![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")​ 经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年SpringBoot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的入门成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特...阅读全文

博文 2020-05-08 23:32:51 程序员书单

兄弟连区块链培训分享Go语言获取packed struct的大小

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。网络协议里面,很可能遇到自定义的封包,对应到c里面的是typedef struct _PackageHeader{ int headerLen; int timeStamp; short cmd };为了保证单字节对齐,可以加上编译...阅读全文

博文 2018-08-21 16:35:19 兄弟连区块链培训

go任务调度10(操作mongodb)

后台启动mongodb服务器端: nohup ./bin/mongod --dbpath=./data & package main //导入 import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/readpref" "os" "time" ) type Howie struct { //struct里面获取Ob...阅读全文

博文 2019-04-21 01:35:11 梁十八

「Go」byte、rune与string

不积跬步,无以至千里;不积小流,无以成江海。 码字不易,点赞再看。 byte 占用1个节字,也就是 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 65 // 8进制写法: var c byte = '\101' 其中 \ 是固定前缀 // 16进制写法: var c byte = '\x41' 其中 \x 是固定前缀 var b uint8 = 66 fmt.Printf("a 的值: %c \nb 的值: %c", a, b) // 或者使用 string 函数 // fmt.Pr...阅读全文

博文 2020-04-20 21:32:43 不住隔壁的王老师

Go语言打造分布式Crontab 轻松搞定高性能任务调度

Go语言开发分布式任务调度 轻松搞定高性能CrontabGolang因其强大的协程机制,现已广泛应用于解决分布式环境下的高并发问题。本门课程中将结合Etcd与MongoDB实现一个基于Master-Worker分布式架构的任务调度系统。你不仅将掌握Golang的工程实践能力,而且会收获诸如CAP、Raft的分布式经典理论与架构经验,”工程能力”与”知识体系”齐头并进,实现华丽质变第1章 课程介绍本章中将介绍一下本课程的基本内容,包括:我们要做什么、要求什么基础、将学会哪些工具、收获哪些独家干货,以及课程具体安排。1-1 课程导学 试看第2章 如何执行shell命令执行"定时任务"其实就是执行"shell命令"。在本章中,将首先带大家区分"程序"与"命令",接着了解bash命令解释器的2种工作...阅读全文

博文 2019-05-04 19:34:37 为了谁你知道

Golang学习(14)——Unicode utf8包

Golang学习 - unicode/utf8 包----------------------------// 编码所需的基本数字const ( RuneError = '\uFFFD' // 错误的 Rune 或 Unicode 代理字符 RuneSelf = 0x80 // ASCII 字符范围 MaxRune = '\U0010FFFF' // Unicode 码点的最大值 UTFMax = 4 // 一个字符编码的最大长度)------------------------------------------------------------// 将 r 转换为 UTF-8 编码写入 p 中(p 必须足够长,通常为 4 个字节)// 如果 r 是无效的 Unicode 字符,则写入 ...阅读全文

博文 2017-02-10 10:20:23 1160636144

go语言之json的使用

go语言之json的使用 作为先天具有高并发的go语言,经常用于网络传输,go语言为我们提供了json的数据封装, 便于数据的交换和解析。下面来看看go语言中的json使用。代码最为明显。 重要函数 func Marshal(v interface{}) ([]byte, error) 编码成JSON数据 func Unmarshal(data []byte, v interface{}) error 将JSON数据解码 package main import ( "encoding/json" "fmt" ) type test struct { Name string `json:"test_name"` Age int `json:"test_age"` g int `json:"te...阅读全文

博文 2015-06-17 23:01:32 bojie5744

go任务调度11(分布式crontab架构分析)

crontab是单机工具(所有worker都在调度,如果有1000个任务,所有worker都在调用者1000个任务。对于编译型语言来说,排序一个一千万的数组只需要一秒,对于一千一万的调度,无需担心性能)(相当于完成一个到worker集群的通知,通知它们杀死任务...阅读全文

博文 2019-04-21 16:35:13 梁十八

Golang的单引号、双引号与反引号

Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 即:一个Go语言字符串是一个任意字节的常量序列。 Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式 而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码...阅读全文

博文 2018-07-25 11:30:02 sunsky303

高可用Redis服务架构分析与搭建

c基于内存的Redis应该是目前各种Web开发业务中最为常用的Key-Value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较MySQL而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。 不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。 首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出...阅读全文

Go 语言团队否决关于"try"语句的提案

Go语言作者之一 Robert Griesemer前几天代表Go语言开发团队的提案审查委员会公布了关于否决一项提案的决定。Robert在「内置的Go错误检查函数,"try"」提案下面的回复中发布了这个公告,并表示基于社区压倒性的反应和由此引起的广泛讨论,团队决定提前拒绝此项提案。关于Go 2的错误处理问题,Robert表示团队去年就已阐述了对此的看法,但当时并没引起足够的注意和讨论。所以关于"try"语句的提案可能是解决此问题的一个很好的解决方案,但对于大多数使用者而言,这可能没解决到什么问题。下面举一个try语句的示例。例如如下代码:f, err := os.Open(filename) if err != nil { return …, err // zero values for ot...阅读全文

博文 2019-07-21 01:04:16 NetFly

云渲染集群监控与任务调度架构设计

首先说一下此项目的背景,公司主要从事互联网家居设计行业,所以最重要的就是室内设计,初期做的是离线渲染,设计师使用我们的设计软件做设计,将设计好的方案提交至后端,由我们的构建应用做参数转换,然后提交至我们的渲染引擎进行云渲染,最终出设计图。 云渲染的专业知识要求比较高,本人也是第一次接触,对于渲染引擎、专业图形显卡的预研工作涉及颇少,最终大佬选用英伟达的iray渲染引擎和2080TI显卡,话不多说先上整体的架构设计图: iraycloud.png 接下来细述各应用的职责与功能: dr-client:面向C端设计师使用的设计软件客户端。 dr-web: 设计软件服务端,存储设计师方案参数。 dr-notify:渲染任务状态消息的收发。 rocketMQ:DR端和IRAY端数据通讯的中间层。 ir...阅读全文

MaxCompute2.0助力众安保险快速成长

摘要:2017云栖大会阿里云大数据计算服务(MaxCompute)专场,众安保险数据总监王超群带来MaxCompute助力众安保险方面的演讲。本文主要从MaxCompute优势开始谈起,进而谈及大数据能够公司运营带来的好处,最后重点分析了众安保险的数据平台建设,包括任务调度、元数据和数据质量监控等。 **原文地址:http://click.aliyun.com/m/43993/** 2017云栖大会阿里云大数据计算服务(MaxCompute)专场,众安保险数据总监王超群带来MaxCompute助力众安保险方面的演讲。本文主要从MaxCompute优势开始谈起,进而谈及大数据能够为公司运营带来的好处,最后重点分析了众安保险的数据平台建设,包括任务调度、元数据和数据质量监控等。 ...阅读全文

go语言的字符和字符串

Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出: '我'的类型为:%!t(int32=25105) 二进制为:110001000010001 r的实际类型为:int32 那我产生一个问题:Unicode字符的长度是多少?这个问题的问法有没有问题?其...阅读全文

博文 2016-10-26 14:00:01 davidsu33

golang实现redis的延时消息队列功能

前言 在学习过程中发现redis的zset还可以用来实现轻量级的延时消息队列功能,虽然可靠性还有待提高,但是对于一些对数据可靠性要求不那么高的功能要求完全可以实现。本次主要采用了redis中zset中的zadd, zrangebyscore 和 zdel来实现一个小demo。 提前准备 安装redis, redis-go 因为用的是macOS, 直接 $ brew install redis $ go get github.com/garyburd/redigo/redis 复制代码又因为比较懒,生成任务的唯一id时,直接采用了bson中的objectId,所以: $ go get gopkg.in/mgo.v2/bson 复制代码唯一id不是必须有,但如果之后有实际应用需要携带,便于查找相...阅读全文

博文 2019-11-25 14:34:16 菜菜jjj

xxl-job定时任务golang执行器 xxl-job-executor-go

# xxl-job-executor-go 很多公司java与go开发共存,java中有xxl-job做为任务调度引擎,为此也出现了go执行器(客户端),使用起来比较简单: # 支持 ``` 1.执行器注册 2.耗时任务取消 3.任务注册,像写http.Handler一样方便 4.任务panic处理 5.阻塞策略处理 6.任务完成支持返回执行备注 7.任务超时取消 (单位:秒,0为不限制) 8.失败重试次数(在参数param中,目前由任务自行处理) 9.日志查看(未完成) ``` ## Example ``` package main import ( xxl "github.com/xxl-job/xxl-job-executor-g...阅读全文

golang单点推送

package main import ( "encoding/json" "flag" "fmt" "log" "net/http" "time" "config" "framework/logger" "global" "models/function" "models/schema" "github.com/go-redis/redis" "github.com/gorilla/websocket" "github.com/labstack/echo" ) var clients = make(map[*websocket.Conn]bool) var broadcast = make(chan Message) var upgrader = websocket.Upgrader{Ch...阅读全文

博文 2017-12-08 06:00:02 zhangym

为什么要学习更多的编程语言

![page head](https://raw.githubusercontent.com/studygolang/gctt-images/master/why-need-to-learn-mpl/1.jpg) ## 我与编程语言的开放式关系 迄今为止我已经编程四年了。从开始的基于 C# 的游戏开发,然后使用 python 处理机器学习。学习使用 Javascript 以及 Typescript 做前端工作。后来想要做移动端应用,所以又学习了 Ionic,React,React Naive。为了达到更好的后端性能,Go 是一个最佳选择。随着 Flutter 的诞生,所以我学习了 Dart 来编写更多的移动应用。我从一些大学课堂上学习 Java,当我在 Facebook 工作时学习使用 PH...阅读全文

集群管理和容器编排工具 SwarmKit

SwarmKit 是Docker公司开源的Docker集群管理和容器编排工具,其主要功能包括节点发现、基于[raft算法](https://en.wikipedia.org/wiki/Raft_%28computer_science%29)的一致性和任务调度等。 ### 基本概念 服务器上运行SwarmKit工具的swarmd命令后,即可将其加入到服务器集群中,该服务器就成为集群中的一个 节点 。SwarmKit将节点分为两类: * 工作节点 负责通过执行器运行任务。SwarmKit的默认执行器为Docker容器执行器(Docker Container Executor); * 管理节点 负责接收和响应用户的请求,将集群状态调节成最终状态。 用户可以动态调整节点的角色。 ...阅读全文

时间序列数据的处理

摘要: 随着云计算和IoT的发展,时间序列数据的数据量急剧膨胀,高效的分析时间序列数据,使之产生业务价值成为一个热门话题。阿里巴巴数据库事业部的HiTSDB团队为您分享时间序列数据的计算分析的一般方法以及优化手段。 演讲嘉宾简介:钟宇(悠你) 阿里巴巴 数据库高级专家,时间序列数据库HiTSDB的研发负责人。在数据库、操作系统、函数式编程等方面有丰富的经验。 本次直播视频PPT,戳这里!http://click.aliyun.com/m/51142/ 本次分享主要分为以下几个方面: 1. 时序数据库的应用场景 2. 面向分析的时序数据存储 3. 时序数据库的时序计算 4. 时序数据库的计算引擎 5. ...阅读全文

go IOTA常量计数器1期

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

博文 2018-07-15 21:34:44 WalkingInTheAir

小知识点--crontab

前言 这两周学了很多东西,还把golang语言基本掌握了,收获还是挺多的。在做安全的过程中,有很多需要定时执行的任务,比如抓取主机数量,端口数据等,这都逃不开linux中的crontab命令,今天分享一下crontab这个小知识点。提醒大家一下,在大公司服务器中,部署的基本上都是CentOS,所以大家想学CentOS上的操作,推荐大家看一下《鸟哥私房菜》 命令说明 crontab 命令可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。 命令格式 crontab [-u user] file 或者 crontab [-u user] [-e | -l | -r] 参数解释 -u user:用来设定某个用户的cro...阅读全文

C# Golang Python类型转换

C#的类型转换 隐式转换: int--float,int--double,float--double,容量小的转换成容量大的,可以直接隐式转换 显示转换: 1.使用(目标type)待转换数据 (int)float,(int)double,(float)double#大的数据类型转换为小的数据类型 2.使用Convert类的转换方法 Convert.ToInt32() 转换为整型(int) Convert.ToChar() 转换为字符型(char) Convert.ToString() 转换为字符串型(string) Convert.ToDateTime() 转换为日期型(datetime) Convert.ToDouble() 转换为双精度浮点型(double) Conert.ToSingl...阅读全文

博文 2020-03-11 17:33:01 stardust_0000

Golang的socket编程(三):并发Server

一、概述上一篇实现了一个server和client通信,完成了小写转大写的功能,但是是一个单任务式的响应:客户端发送连接接收响应,程序结束;服务端则接收数据响应数据也结束!就实际需要而言,并没有很大的用处,所以现在我们就给客户端和服务端添加上并发功能。 逻辑其实很简单,就是利用golang的gorutine,一旦来新的连接,就开启一个gorutine去处理,然后响应,直到客户端关闭连接。 二、服务端1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package mainimport ( "net" "fmt" "strings")func handle(con...阅读全文

博文 2018-05-17 09:28:40 Client | 马谦的博客

NSQ深入与实践

1. 介绍 最近在研究一些消息中间件,常用的MQ如RabbitMQ,ActiveMQ,Kafka等。NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。 官方和第三方还为NSQ开发了众多客户端功能库,如官方提供的基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript客户端nsqjs、异步C客户端libnsq、Java客户端nsq-java以及基于各种语言的众多第三方客户端功能库。 1.1 Features 1). Distributed NSQ提供了分布式的,去中心化,且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和HA(高可用)特性。 2...阅读全文

Golang模仿七牛图片处理API

之前一直在用qiniu的存储服务,生成图片的缩略图,模糊图,视频的webp,现在需要把存储移到s3上,那么这些图片,视频处理就要自己动手写了,本文梳理一下大致的思路。 分析需求 先看一下qiniu的接口是如何处理图片的,例如先截取视频第一秒的图片,再把图片缩略,最后存储到一个新的key,命令可以这么写 vframe/jpg/offset/1|imageMogr2/thumbnail/400x|saveas/xxx, 可以看到三个操作之间用 | 符号分割,类似unix 的 pipe 操作。 上面的操作算作一个cmd, 一次API请求可以同时处理多个cmd,cmd之间用分号分割, 处理完毕后,在回调中把处理结果返回,例如 { "id": "xxxxx", "pipeline": "xxx", "...阅读全文

博文 2017-02-09 08:29:46 一堆好人卡

Golang实现简单爬虫框架(5)——项目重构与数据存储

前言 在上一篇文章《Golang实现简单爬虫框架(4)——队列实现并发任务调度》中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一。然后添加数据存储模块。 注意:本次并发是在上一篇文章简单并发实现的基础上修改,所以没有贴出全部代码,只是贴出部分修改部分,要查看完整项目代码,可以查看上篇文章,或者从github下载项目源代码查看 1、项目重构 (1)并发引擎 通过分析我们发现,两种不同调度的区别是每个worker一个channel还是 所有worker共用一个channel,所以我们在接口中定义一个函数WorkerChan(),用来决定这件事,即worker一个channel还是 所有worker共用一个channel。此时ConfigMasterWorkerCh...阅读全文

博文 2019-06-03 23:34:21 盐的甜

Go语言使用Golang连接MongoDB数据库实现增删改查

Go语言使用Golang连接MongoDB数据库实现增删改查 1.通过mongodb服务端口号启动mongodb服务 text 2.连接mongodb数据库 3.插入数据到持久层mongodb中 4.在持久层mongodb中删除数据 5.将数据在持久层mongodb中更改 6.在数据库中查询单条或多条数据 7.显示数据库集合中元素数目 本文转载自:http://www.hemadaili.com/help/news/detail/5d54ff289f02b700084d92a5.htm...阅读全文

博文 2019-08-16 15:03:16 犀牛代理

go_工作池

```golang package main import ( "fmt" "time" ) // 在这个例子中,我们将看到如何使用goroutine 和channel实现一个_工作池_ // 工作池是我们将要在并发实例中支持的任务了,这些执行者将从`jobs`通道接受任务, // 并且通过`result`发送对应的结果。 // 工作池 func worker(id int, jobs <-chan int, result chan<- int) { for j := range jobs { fmt.Println("worker : ", id, "processing job ", j) time.Sleep(time.Second * 2) // 构建耗时2s的任务 result <...阅读全文

博文 2018-06-12 17:10:57 18393910396