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

Go 功能:将 Go 程序员带向极限(Functional Go: Taking The Gopher to it's extremes)

## 功能范式(The Functional Paradigm) 函数式编程基于简单的规则,目的是使程序保持一致,使并行(更)人性化和简单化,函数是存粹的,它不会改变(变量的)状态,不会改变对象,也不共享状态,代码是声明式的,计算只不过是数学函数的一种实现。 我们来看一个纯粹的函数语言的函数例子: ``` isPalindrome :: (Eq a) => [a] -> Bool isPalindrome x = x == reverse x ``` 上面的代码是 haskell 版本的 palindrome 函数,我们(实际上)都在某种程度上通过循环来遍历列表,以及检查...,在 Haskell 中,isPalindrome 函数获取 Equality 的字符列表(考虑比较时),并返回一个...阅读全文

博文 2018-07-01 17:54:31 gogeof

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...阅读全文

工作调度 Kala

Kala 是用 Go 写成的简单的、现代的、高性能的工作调度,它没哟任何依赖。 Kala 的灵感来自于 [Chronos](http://www.oschina.net/p/chronos),Chronos 由 Airbnb 开发,它建立于 Mesos 的顶层,默认 容错 和 分布式 设计 。这两个设计是 Kala 所没有的,因为 Kala 专为小型部署而开发。 示例代码:

ajvb$ curl http://127.0.0.1:8000/api/v1/job/
{"jobs":{}}
ajvb$ curl http://127.0.0....阅读全文

开源项目 2016-09-07 16:06:12 ajvb

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

![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); * 管理节点 负责接收和响应用户的请求,将集群状态调节成最终状态。 用户可以动态调整节点的角色。 ...阅读全文

上海互动直播平台招GO

### 岗位要求: * 参与公司游戏服务端的底层分布式架构设计,模块开发和业务开发 * 参与服务高并发监控部署,及时调整服务参数 * 与团队合作攻关项目难点 * 协助测试及前端开发部署相关项目 ### 任职要求: * 计算机相关专业,本科及以上学历,至少一年 go 开发经验,熟悉软件工程开发全过程 * 熟练掌握 Golang 的相关知识,熟悉leaf、cellnet、mqant、xingo 等框架其中的一种 * 有相关 socket 网络编程经验,精通服务端开发中需涉及的基础框架、网络通讯、并发控制、异步 IO 等相关技术 * 熟悉 redis、mongodb 等nosql数据库,并可以使用 golang 操作 * 了解 mqtt 协议,了解主流 RPC 实现方案,并掌握...阅读全文

小知识点--crontab

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

使用阿里云发布分布式网站,开发时候应该注意什么?

虽然之前写过关于负载均衡的文章,但是似乎大家都对负载均衡这个标题很陌生。今天就换个角度,从分布式网站发布角度说一下首先,网站发布一定离不开服务器,就是阿里云的云服务器ECS。最近发现,老用户也有机会购买特价服务器,参考阿里云天猫旗舰店。分布式网站架构,在开发环节需要处理号几个地方,才能更轻松的扩展:1,数据库单独运行这个最简单,相信只要用到了数据库的网站,大部分都是已经可以轻松实现网站和数据库分离的模式。之所以强调这点,就是因为,网站真的到了访问量大了,需要由单机发布改为分布式发布时候。首先就是要把数据库单独出来,使用单独一台ECS或者使用专门的RDS运行。关于使用ECS自行搭建数据库,要说的无非就是,数据库文件一定要放在SSD硬盘上。因为云硬盘本质都是虚拟硬盘,读写指标iops会损失的很严...阅读全文

博文 2019-02-28 10:43:40 jiyulin

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

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

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

安全登录分布式服务 Shadowd

Shadowd是安全登录分布式服务,包含服务端和客户端,支持SS秘钥,支持生成哈希表,支持生成SSL证书。 REST API接口用于服务器和客户端之间的通信: ![image](http://static.oschina.net/uploads/space/2016/0729/113555_L0Tv_1774694.png) 生成Hash表: ![image](http://static.oschina.net/uploads/space/2016/0729/114236_ntYU_1774694.gif...阅读全文

Goroutine(协程)理解

title: Goroutine(协程)理解 tags: Go,Goroutine 并发概念 Go语言相对于其他语言的最大一个特色就是支持高并发编程模式。Goroutine(协程)是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。 为了更好理解Goroutine,我们需要了解并发和并行的区别 并发:逻辑上具备同时处理多个任务的能力。 并行:物理上在同一时刻执行多个并发任务。 简单来说,并发是在同一时间处理多件事情。并行是在同一时间做多件事情。并发的目的在于把当个 CPU 的利用率使用到最高。并行则需要多核 CPU 的支持。 线程和协程 Go 语言在语言层面上支持了并发,goroutine是Go语言提供的一种用户态线程...阅读全文

博文 2019-03-27 20:35:07 Clown95

基于分布式原理解析Redis分布式锁的实现

用Redis作为分布式锁是个轻量级的解决方案, 但很多同学在使用过程中并未弄明白其中的优劣, 知其然不知其所以然, 反而引入了一些那一排查的线上故障. 这里针对Redis分布式锁常用的几种方式, 从原理触发, 分析其适用场景及潜在缺陷 先回顾一下LESLIE LAMPORT大神在其1977年论文Proving the Correctness of Multiprocess Programs中对于分布式系统正确性的定义 Correctness == Safety and liveness Safety (安全性) safety properties informally require that "something bad will never happen" in a distribute...阅读全文

博文 2018-12-06 21:38:12 pippo1980

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 一堆好人卡

go语句初探

go语句和通道类型是Go语言的并发编程理念的最终体现。相比之下,go语句在用法上要比通道简单很多。与defer语句相同,go语句也可以携带一条表达式语句。注意,go语句的执行会很快结束,并不会对当前流程的进行造成阻塞或明显的延迟。一个简单的示例如下: go fmt.Println("Go!") 可以看到,go语句仅由一个关键字go和一条表达式语句构成。同样的,go语句的执行与其携带的表达式语句的执行在时间上没有必然联系。这里能够确定的仅仅是后者会在前者完成之后发生。在go语句被执行时,其携带的函数(也被称为go函数)以及要传给它的若干参数(如果有的话)会被封装成一个实体(即Goroutine),并被放入到相应的待运行队列中。Go语言的运行时系统会适时的从队列中取出待运行的Goroutine并...阅读全文

博文 2016-08-06 18:00:02 freedomai

Golang 并发问题(四)之单核上的并发问题

写在前面 Golang 在单核上的“并发”问题 gotour上的乌龙案例 单个物理核心上的“并发” runtime.GOMAXPROCS(1) 方法 小结 参考 写在前面 过去 Web 开发的工作比较少涉及到并发的问题,每个用户请求在独立的线程里面进行,偶尔涉及到异步任务但是线程间数据同步模型非常简单,因此并未深入探究过并发这一块。最近在写游戏相关的服务端代码时发现数据的并发同步场景非常多,因此花了一点时间来探索和总结。这是一个系列文章,本文为第四篇。 本文简单介绍 Golang 中配置可用 CPU 核的方法及其可能导致的误解。 Golang 在单核上的“并发”问题 gotour上的乌龙案例 在上一篇博客中介绍了 Golang 并发编程中 map 类型的“脆弱”性。具体地,Golang 的运...阅读全文

golang channel 有缓冲 与 无缓冲 的重要区别

golang channel 有缓冲 与 无缓冲 是有重要区别的 我之前天真的认为 有缓冲与无缓冲的区别 只是 无缓冲的 是 默认 缓冲 为1 的缓冲式 其实是彻底错误的,无缓冲的与有缓冲channel有着重大差别 那就是一个是同步的 一个是非同步的 怎么说?比如 c1:=make(chan int) 无缓冲 c2:=make(chan int,1) 有缓冲 c1<-1 无缓冲的 不仅仅是 向 c1 通道放 1 而是 一直要有别的携程 <-c1 接手了 这个参数,那么c1<-1才会继续下去,要不然就一直阻塞着 而 c2<-1 则不会阻塞,因为缓冲大小是1 (其实是缓冲大小为0)只有当 放第二个值的时候 第一个还没被人拿走,这时候才会阻塞。 打个比喻 无缓冲的 就是一个送信人去你家门口送信 ,...阅读全文

博文 2016-10-07 10:00:06 tree2013

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

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

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

兄弟连Go语言培训清华尹成带你实战GO案例(53)Go数值

兄弟连Go语言培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。 兄弟连Go语言培训清华尹成带你实战GO案例(53)Go数值 Go数值 Go有很多种数据类型,包括字符串类型,整型,浮点型,布尔型等等,这里有几个基础的例子。 packagemain import"fmt" funcmain(){ //字符串可以使用"+"连接 fmt.Println("go"+"lang") //整型和浮点型 fmt.Println("1+1=",1+1) fmt.Println("7.0/3.0=",7.0/3.0) //布尔型的几种操作符 fmt.P...阅读全文

博文 2018-07-31 11:34:49 兄弟连区块链培训

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

互融云永续合约交易平台搭建-开发数币永续合约交易系统

互融云永续合约交易平台搭建-开发数币永续合约交易系统互融云永续合约交易系统不需要交割的特点更人性化,且永续合约结算快,有效提升了市场活跃度,也加大了投资者风险对冲、套期保值的机会。全球领先数字资产交易平台OKEX不断创造着币圈一个又一个纪录,践行着自己安全、创新、可信赖的承诺。据了解,从2018年12月至4月底,OKEX永续合约上线4个月以来,OKEx合约总成交额达4500亿美金,单日最高成交额突破120亿美金,创行业之最。永续合约运行稳定,期间共上线BTC、LTC、ETH、XRP、EOS、BCH、TRX等九个币种,成交额突破350亿美金,并且实现全币种零分摊。 随着数字货币期货的快速发展,广大用户看到了期货合约可以套期保值这一优势,并大力投身于合约交易之中。针对于资产量较大的用户来说,传统...阅读全文

博文 2019-08-22 17:32:53 北京互融时代

域名与网站分会场——阿里云双十一促销清单

一年最期盼到来的日子,就是这一天,没有之一。 一年最懊悔错过的日子,也是这一天,一样没有之一。 相信你已经猜到了,这一天就是——11.11 今年这个重要的日子,阿里云域名又将带来什么样的惊喜和欢愉呢?! 促销清单已新鲜出炉,高能剧透看过来~~ ————————————域名低价注册1元起——————————— 活动的方式简单点,优惠的力度粗暴点。 对于大家喜闻乐见的需求,这个双11统统满足你。 届时将有近20种域名后缀,纷纷打出年度最低价格和独家折扣。 • 国家顶级域名 .cn 11.11注册:¥11/首年 原价39元 (活动时间:11.11 08:00-24:00) • 国际顶级域名 .com 11.11注册:¥45/首年 原价60元 (活...阅读全文

Go by Example: Switch

Switch声明通过众多分支来表达条件判断。 package main import "fmt" import "time" func main() { // 基础的switch用法 i := 2 fmt.Print("write ", i, " as ") switch i { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") } // 你可以使用逗号来在case中分开多个条件。还可以使用default语句。 // 当上面的case都没有满足的时候执行default所指定的逻辑块。 switch time.Now().Weekday() { case time.Saturda...阅读全文

博文 2015-06-18 09:03:53 codemanship

分布式数据库技术与实现

课程介绍 本课程主要讲解分步式数据库系统的主要功能和实现方式,课程中首先阐述传统数据库所存在的问题,结合此问题说明分步式数据库系统如何解决这些问题,以及阿里云平台下分步式数据库系统如何优化这些问题 讲师介绍: 林晓斌,阿里云RDS数据库内核组高级技术专家,负责RDS MySQL源码分支维护。专注于数据存储系统、MySQL源码研究和改进、MySQL性能优化和功能改进。活跃的MySQL社区贡献者。在系统瓶颈分析、性能优化方面拥有丰富的经验。 课程目标 • 掌握分步式数据库系统的主要功能和实现方式 适合人群 • 云计算开发者 • 数据库开发者 课时列表 • 课时1:传统数据库回顾 • 课时2:分布式数据库概述 • 课时3...阅读全文

大数据用什么开发工具?大数据专业技术学习

大数据研究的出现,为企业、研究机构、政府决策提供了新的行之有效思路和手段,想要做好大数据的管理和分析,一些大数据开发工具的使用是必不可少的,以下是大数据开发过程中常用的工具: **1. Apache Hive** Hive是一个建立在Hadoop上的开源数据仓库基础设施,通过Hive可以很容易的进行数据的ETL,对数据进行结构化处理,并对Hadoop上大数据文件进行查询和处理等。 Hive提供了一种简单的类似SQL的查询语言—HiveQL,这为熟悉SQL语言的用户查询数据提供了方便。 **2. Apache Spark** Apache Spark是Hadoop开源生态系统的新成员。它提供了一个比Hive更快的查询引擎,因为它依赖于自己的数据处理框架而不是依靠Hado...阅读全文

进程、线程和协程

姓名:张志文 学号:19021210649 链接:https://www.jianshu.com/p/80bde972196d [嵌牛导读] 计算机中的线程,进程和协程之间存在着许多的联系和区别 [嵌牛鼻子] 线程;进程;协程 [嵌牛提问] 什么是线程、进程和协程? 进程 我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序是运行于操作系统之上的。 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。 进程一般由程序、数据集合和进程控制块三部分...阅读全文

博文 2019-11-02 17:34:02 aside section._1OhGeD

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

第1章 课程介绍本章中将介绍一下本课程的基本内容,包括:我们要做什么、要求什么基础、将学会哪些工具、收获哪些独家干货,以及课程具体安排。1-1 课程导学试看第2章 如何执行shell命令执行"定时任务"其实就是执行"shell命令"。在本章中,将首先带大家区分"程序"与"命令",接着了解bash命令解释器的2种工作模式,并图示分析shell执行任务的底层原理与涉及的系统调用。最后,我们使会用Go语言的Command标准库,实现任务的执行,输出捕获,杀死任务等重要功能。 ...2-1 原理介绍2-2 执行任务2-3 捕获任务输出2-4 强制结束任务第3章 如何解析cron表达式cron表达式是配置定时任务执行周期的核心工具。在本章中,将首先分析cron表达式的构成以及解析逻辑,并利用开源项目c...阅读全文

博文 2019-03-08 12:34:43 itsourceshop

一个逻辑处理器运行多个goroutine,这些goroutine的被调度顺序是怎么样的?

代码如下: ![76540481-8DEB-46C9-B1C1-1FA08EB66C92.png](https://static.studygolang.com/171218/29f84a242b5e74fe36bbed76f71f3f20.png) 显示结果如下: Create Goroutines Waiting To Finish D:2 D:3 D:5 D:7 ... D:43 D:47 Completed D A:2 A:3 A:5 ... A:43 A:47 Completed A B:2 B:3 ... B:43 B:47 Completed B C:2 C:3 ... C:43 C:47 Completed C...阅读全文

ubuntu 下 golang 跨平台编译 windows 程序

1. 安装 gcc-mingw-w64 apt-get install gcc-mingw-w64 2. 跨平台编译 生成 64位 exe 可执行文件. env CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build -o main.exe main.go 生成 32 位 exe 可执行文件 env CGO_ENABLED=1 GOOS=windows GOARCH=386 CC=i686-w64-mingw32-gcc go build -o main.exe main.g...阅读全文

go-grpc-流式接口(streaming rpc)

上一篇我们介绍了rpc最基本的应用,今天我们来看看rpc的另外一个数据交互方式streaming rpc,也就是流式接口。 streaming rpc相比于simple rpc来说可以很好的解决一个接口发送大量数据的场景。 比如一个订单导出的接口有20万条记录,如果使用simple rpc来实现的话。那么我们需要一次性接收到20万记录才能进行下一步的操作。但是如果我们使用streaming rpc那么我们就可以接收一条记录处理一条记录,直到所以的数据传输完毕。这样可以较少服务器的瞬时压力,也更有及时性 下面们来看看streaming rpc具体是怎么交互的。 IDL syntax = "proto3"; package proto; message Order { int32 id = 1;...阅读全文

博文 2020-02-20 22:32:42 旧梦发癫

go任务调度2(linux的cron调用)

cron格式:分 时 日 月 周 每隔5分钟执行1次: /5 * echo hello > /tmp/x.log 每隔1-5分钟执行1次: 1-5 echo hello > /tmp/x.log 每天10点整、22点整执行1次: 0 10,22 * echo hello > /tmp/x.log 每隔1-5分钟执行1次: 1-5 echo hello > /tmp/x.log Parse():解析与校验Cron表达式Next():根据当前时间,计算下次调度时间 package main import ( "fmt" "github.com/gorhill/cronexpr" "time" ) func main() { var ( expr *cronexpr.Expression err ...阅读全文

博文 2019-04-19 18:35:13 梁十八

golang switch case结构

结构: switch express { case exp1: todo1 case exp2: todo2 default: } Q1: default定义在最前面和最后面有什么区别? default的执行时机和default所在的位置无关。不管default是放在所有其他case的前面还是后面,都是先检查其他case,其他case都不满足时,default才会得到执行。 default放在最前面: func main(){ v := 10 switch v { default: fmt.Println("111") case 10: fmt.Println("222") case 20: fmt.Println("333") } } default放在最后面: func main(){ ...阅读全文

博文 2020-01-21 00:32:43 舒小贱

大数据挖掘工具有哪些?

大数据工具可以帮助大数据工作人员进行日常的大数据工作,以下是大数据工作中常用的工具: **1. Hivemall** Hivemall结合了面向Hive的多种机器学习算法。它包括诸多高度扩展性算法,可用于数据分类、递归、推荐、k最近邻、异常检测和特征哈希。 支持的操作系统:与操作系统无关。 **2. Mahout** Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。 ...阅读全文

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

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

博文 2019-05-30 15:34:40 jsfantasy

一、分布式之弹性设计概述

从移动开发转到后台开发后,总结了很多基础概念以及分布式弹性设计的一些方案。 [1.1、分布式之弹性:服务隔离]([http://ldaysjun.com/2019/04/28/Distributed/1.1%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E5%88%86%E5%B8%83%E5%BC%8F%E4%B9%8B%E5%BC%B9%E6%80%A7%EF%BC%9A%E9%9A%94%E7%A6%BB%E8%AE%BE%E8%AE%A1/](http://ldaysjun.com/2019/04/28/Distributed/1.1、分布式分布式之弹性:隔离设计/) [1.2、分布式之弹性:服务限流]([http://ldaysjun.com/2019/0...阅读全文

博文 2020-01-04 10:41:20 ldaysjun

go-内存机制(4)

go的GC机制 GO的GC是并行GC,也就是说GC的大部分清理和普通的go代码是同时运行的,这让GO的GC流程比较复杂。 标记清除(Mark And Sweep) 此算法主要有两个主要的步骤: 标记(Mark phase) = 清除(Sweep phase) 第一步,找出不可达的对象,然后做上标记。 第二步,回收标记好的对象。 操作非常简单,但是有一点需要额外注意:mark and sweep算法在执行的时候,需要程序暂停,即stop the world。 三色标记法 对于Mark And Sweep来说要通过STW保证GC期间标记对象的状态不能变化,整个程序都要暂停掉,在外部看来程序就会卡顿。 当前Golang使用的垃圾回收机制是三色标记发配合写屏障和辅助GC,三色标记法是标记-清除法的一...阅读全文

博文 2020-03-28 15:32:45 GGBond_8488

golang的goroutine

1.mpg模型介绍。 2.调度队列的介绍,调度算法的介绍。 3.与操作系统底层线程的交互与对应。 4.协程的特点。 一些看到的不错的资料: https://blog.csdn.net/heiyeshuwu/article/details/51178268 https://www.jianshu.com/p/9db2dcb1ccb7 goroutine原始设计文档:https://docs.google.com/document/d/1TTj4T2JO42uD5ID9e89oa0sLKhJYD0Y_kqxDv3I3XMw/edit https://studygolang.com/articles/11720 https://blog.csdn.net/liangzhiyang/article/...阅读全文

博文 2019-03-11 19:34:47 黑魔术师

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

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

博文 2019-05-22 17:34:41 方便你我他

go语句初探

go语句和通道类型是Go语言的并发编程理念的最终体现。相比之下,go语句在用法上要比通道简单很多。与defer语句相同,go语句也可以携带一条表达式语句。注意,go语句的执行会很快结束,并不会对当前流程的进行造成阻塞或明显的延迟。一个简单的示例如下: go fmt.Println("Go!") 可以看到,go语句仅由一个关键字go和一条表达式语句构成。同样的,go语句的执行与其携带的表达式语句的执行在时间上没有必然联系。这里能够确定的仅仅是后者会在前者完成之后发生。在go语句被执行时,其携带的函数(也被称为go函数)以及要传给它的若干参数(如果有的话)会被封装成一个实体(即Goroutine),并被放入到相应的待运行队列中。Go语言的运行时系统会适时的从队列中取出待运行的Goroutine并...阅读全文

博文 2016-09-08 10:00:04 freedomai

阿里云文件存储 NAS 使用教程

课程介绍 阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访 问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas 课时列表 • 课时1:NAS入门与提高系列之基本概念 • 课时2:NAS入门与提高系列之典型应用场景 • 课时3:NAS入门与提高系列之如何在Windows下使用NAS 开始学习http://click.aliyun.com/m/27883...阅读全文

自定义调度器构建工具 Blox

Blox 是用于在 Amazon ECS 上构建自定义调度程序的开源工具,是用于容器管理和编排的开源项目的集合。 Blox 可以使你更好地控制容器化应用在 Amazon ECS 上的运行情况。它使你能够构建调度程序并在 ECS 之上集成第三方调度工具,同时利用 Amazon ECS 来完全管理和扩展集群。 Blox 项目提供了一个调度框架,以帮助在 Amazon ECS 上轻松构建自定义工具,例如调度程序。该框架使得易于从 Amazon ECS 消费事件,在本地存储集群状态,并通过 API 查询本地数据存储。 blox 项目目前包含两个组件: * 集群状态服务 * 守护程序调度程...阅读全文

开源项目 2016-12-02 17:00:03 blox

go任务调度5(go操作etcd)

连接etcd: package main import ( "fmt" "go.etcd.io/etcd/clientv3" "time" ) var ( config clientv3.Config client *clientv3.Client err error ) func main() { //客户端配置 config = clientv3.Config{ Endpoints: []string{"0.0.0.0:2379"}, //集群列表 DialTimeout: 5 * time.Second, } //建立连接 if client, err = clientv3.New(config); err != nil { fmt.Println(err) return } clie...阅读全文

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

亿牛云动态转发代理

产品特点 自营线路稳定可靠带宽高,海量IP资源池 基于Linux自建平台,系统稳定可靠,自动处理代理线路故障 智能代理实时检测器,区别于传统扫描式检测,能做到毫秒级检测,确保用户获取的代理100%网络可用。 代理IP隧道技术,通过固定云代理服务地址,自动实现IP毫秒级切换 两种IP切换模式可选: (1)每个HTTP请求自动切换(适合每个session单独IP访问) (2)用户自主切换(通过设置HTTP头控制IP切换,适合多个session相同IP连续性访问) 代理IP有效时间20秒或180秒可选。 全国90多个自营线路地区 支持HTTP, HTTPS,Socket5 IP白名单认证或用户认证(通过请求头实现用户名和密码认证) 1、爬虫代理IP与传统A...阅读全文

Golang小例 命令行正则

package main import ( "bufio" "flag" "fmt" "os" "regexp" ) func main() { defer func() { return }() data := flag.String("data", "This is a example for test!", "Type: Text!") length := flag.Bool("len", false, "Type: Bool!") r := flag.Bool("r", false, "Type: Bool!") reString := flag.String("re", "(a)", "Type: Text!") findCount := flag.Int("count", -1,...阅读全文

博文 2016-04-21 17:00:01 LanX_Fly

Go 实现lamda、匿名函数和内联函数

Go 实现lamda、匿名函数和内联函数 在Go语言中,lamda、匿名函数和内联函数的实现称作字面函数(function literals)。当一个函数足够小时,你可以创建一个字面函数。下文将创建一个简单的实例来展示这个函数的实现。 package main import("fmt") func main(){ substract := func(a, b int) int { return a - b } fmt.Print("--substraction function literals: ", substract(10, 2), "\n") } 输出结果 --substraction function literals: 8 one-line函数有它具体的应用场合,特别是对于简单的...阅读全文

博文 2016-08-04 20:00:04 abcijkxyz

Python和Go语言的区别总结!

什么是Python? Python是一种功能强大的高级编程语言,主要用于科学和工程计算。它是一种高效的语言,优雅务实,简单而强大,适合新手和专业人士的编程。 Python支持多种编程范例,并提出了一个大型标准库,包括面向对象,命令式,功能性和程序性。 Python学习交流群:1004391443,有大牛答疑,有资源共享!有想学习python编程的,想提升自己能力的,欢迎加入讨论学习。 Go是什么? Go是一种通用编程语言,由Google设计;它借鉴了许多其他许多好主意语言,同时避免导致复杂性和不可靠代码的功能。 Go支持多范式,如程序,功能和并发。它的语法传统上来自C语言,但它已经做了很多修改,以改进简单性和安全性等功能。 Python和Go之间的区别是什么? 想要学习Python?Pyth...阅读全文

博文 2019-05-01 21:34:41 不谈风月_0eb8