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

Golang从入门到精通

课程概述Golang从入门到精通,本课程以学习Golang语言开发互联网产品为目标,从基础理论知识入手,详实地讲解Golang语言的开发方法与技巧,并通过大量的线上训练,带领同学们全面掌握服务端高并发、过载保护、水平扩展、服务降级、服务限流以及微服务等主流互联网产品的开发技术栈,快速达到大公司工作两年的技术水平。章节1:Golang环境搭建课时1课程介绍10:08课时2Go的发展历史02:08课时3Go开发环境搭建09:18课时4Go目录结构介绍04:13课时5hello world程序演示16:56课时6Go常用命令介绍09:36课时7Go语言特性13:25章节2:数据类型课时8标识符和关键字04:44课时9变量介绍08:19课时10常量介绍14:21课时11常量练习03:26课时12数据...阅读全文

博文 2019-04-21 22:34:40 花开月月圆

6、 reactor

Reactor 简介 前面提到的 RxJava 库是 JVM 上反应式编程的先驱,也是反应式流规范的基础。RxJava 2 在 RxJava 的基础上做了很多的更新。不过 RxJava 库也有其不足的地方。RxJava 产生于反应式流规范之前,虽然可以和反应式流的接口进行转换,但是由于底层实现的原因,使用起来并不是很直观。RxJava 2 在设计和实现时考虑到了与规范的整合,不过为了保持与 RxJava 的兼容性,很多地方在使用时也并不直观。Reactor 则是完全基于反应式流规范设计和实现的库,没有 RxJava 那样的历史包袱,在使用上更加的直观易懂。Reactor 也是 Spring 5 中反应式编程的基础。学习和掌握 Reactor 可以更好地理解 Spring 5 中的相关概念。 ...阅读全文

博文 2018-10-15 08:34:37 lesline

go语言-常见并发模式

生产者-消费者模型并发编程中最常见的例子就是生产者/消费者模型,该模型主要通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。简单的说,就是生产者生产一些数据,然后放到队列中,同时消费者从队列中来取这些数据。这样就让生产和消费变成了异步的两个过程。当队列中没有数据是,消费者就进入饥饿的等待中;而当对立中数据已满时,生产者则面临产品积压导致CPU被剥夺的问题。//生产者 func Producer(factor int, out chan <- int) { for i := 0; ; i++ { out <- i * factor } } //消费者 func Consumer(in <- chan int) { for v := range in { fmt.Println...阅读全文

博文 2020-03-15 16:33:17 guoguocto

Go 1.1 is released(Google Go 语言发布1.1版本)

MONDAY, MAY 13, 2013Go 1.1 is releasedIt is our great pleasure to announce the release of Go 1.1.In March last year we released Go 1.0, and since then we have released three minor "point releases". The point releases were made to fix only critical issues, so the Go 1.0.3 you use today is still, in essence, the Go 1.0 we released in March 2012.Go 1....阅读全文

博文 2015-06-17 20:06:13 OpenHero

如何在 Linux & MacOS 上优雅的发布 Go 程序

这两天写了一个开源小工具,时间戳转换与对比工具:ts,主要是在公司运维时使用。程序写完了发现安装过程不够自动化,特别是对于个人使用 MacOS 系统,日常运维是 Linux 操作系统。虽然 Go 语言支持跨平台编译,但是拿着个二进制程序拷贝来拷贝去,总归不像样。本文记录一下如何优雅在 Linux & MacOS 上发布 Go 程序的过程。 必备工具 在实操之前,请首先确认成功安装以下工具: brew goreleaser godownloader 操作步骤 首先当然是完成项目的编码工作。程序能够正常的编译执行。以ts项目为例。 $: git clone https://github.com/liujianping/ts $: cd $: ├── LICENSE ├── README.md ├...阅读全文

博文 2019-06-27 12:04:16 JayL

Golang从入门到精通

课程概述Golang从入门到精通,本课程以学习Golang语言开发互联网产品为目标,从基础理论知识入手,详实地讲解Golang语言的开发方法与技巧,并通过大量的线上训练,带领同学们全面掌握服务端高并发、过载保护、水平扩展、服务降级、服务限流以及微服务等主流互联网产品的开发技术栈,快速达到大公司工作两年的技术水平。章节1:Golang环境搭建课时1课程介绍10:08课时2Go的发展历史02:08课时3Go开发环境搭建09:18课时4Go目录结构介绍04:13课时5hello world程序演示16:56课时6Go常用命令介绍09:36课时7Go语言特性13:25章节2:数据类型课时8标识符和关键字04:44课时9变量介绍08:19课时10常量介绍14:21课时11常量练习03:26课时12数据...阅读全文

博文 2019-03-23 02:34:42 瑛子_1791198045

Golang分页

//分页方法,根据传递过来的页数,每页数,总数,返回分页的内容 7个页数 前 1,2,3,4,5 后 的格式返回,小于5页返回具体页数func Paginator(page, prepage int, nums int64) map[string]interface{} { var firstpage int //前一页地址 var lastpage int //后一页地址 //根据nums总数,和prepage每页数量 生成分页总数 totalpages := int(math.Ceil(float64(nums) / float64(prepage))) //page总数 if page > totalpages { page = totalpages } if page <= 0 { ...阅读全文

博文 2019-05-22 01:34:42 永远de明天

观察者模式实战

本文转自“雨夜随笔”公众号,欢迎关注。 在上一篇文章中,我们简单了讲了一下设计模式和观察者模式。那么这次让我们详细了解一下观察者模式和我们如何进行使用。 内容 还记得上一篇文章中,我们说过了解或者设计一个设计模式的时候,要按照下面四点进行分析: image.png 意图 在实际业务场景中,我们经常遇到这样的稳定,也就是在某个对象发生某种事件时,通知其他相关的对象。所以观察者模式就允许你定义一种订阅机制,使得订阅某种事件的对象能够在事件发生时得到通知。 动机 我们来分析一种常见的业务场景,也就是购物APP中经常遇到的货物上架提醒,如果为了实现这种需求,我们可以按照下面的方式来实现: 成本最低:我们知道在开发中成本最低的就是不做这个需求,当然这个是开玩笑,不过一般在开发初期,我们可能会分析需求的...阅读全文

博文 2020-05-03 12:32:44 soolaugust

RDC容器构建和部署服务新功能上线

摘要: 通过RDC和容器服务的集成,很好的解决了从代码提交到发布上线,及多环境流水线部署等问题 容器服务 阿里云容器服务提供了从容器构建到部署的服务。再此基础之上还提供了一系列的阿里云其它服务的集成和扩展,比如监控、日志、负载均衡等。 Devops解决方案 先探讨一下我们期望的Devops研发流程是什么样子。 Devops需求 对于一个应用A(非容器服务中的应用,而是RDC中的应用的概念),会考虑下面的点: 在进行镜像构建时,我希望运行测试;对于Java之类的编译型语言,我还需要打包。但我不希望把运行测试和进行构建的依赖(比如maven),放入镜像中。目前容器服务提供的构建服务仅支持docker build命令,因此无法在镜像构建之外再做上述的工作。...阅读全文

网站邮箱email地址定向采集核心代码分享

邮箱采集demo:http://www.jsanai.com/emailco...原理: 1、根据要采集的url地址,获取页面html内容,然后采用正则匹配出页面的url列表、邮箱地址列表。 2、获取到url列表及邮箱后分两个异步线程: ①保存邮箱地址; ②分析采集子页面url的邮箱地址; 核心源码(golang): //采集网站地址入口方法 func CollectEmail(hosturl string) (EmailObj, []string, error) { emailObj := new(EmailObj) var inhost []string //获取主域名 uparse, err := url.Parse(hosturl) if err != nil { return *e...阅读全文

博文 2019-10-08 14:02:43 吉山数据

如何在 Linux & MacOS 上优雅的发布 Go 程序

这两天写了一个开源小工具,时间戳转换与对比工具:ts,主要是在公司运维时使用。程序写完了发现安装过程不够自动化,特别是对于个人使用 MacOS 系统,日常运维是 Linux 操作系统。虽然 Go 语言支持跨平台编译,但是拿着个二进制程序拷贝来拷贝去,总归不像样。本文记录一下如何优雅在 Linux & MacOS 上发布 Go 程序的过程。 必备工具 在实操之前,请首先确认成功安装以下工具: brew goreleaser godownloader 操作步骤 首先当然是完成项目的编码工作。程序能够正常的编译执行。以ts项目为例。 $: git clone https://github.com/liujianping/ts $: cd $: ├── LICENSE ├── README.md ├...阅读全文

golang实现简单爬虫---豆瓣电影前250

package main import ( "fmt" "io" "net/http" "os" "regexp" "strconv" ) func main() { //起始页,页结束 var startPage, endPage int fmt.Println("请输入起始页>=1") fmt.Scan(&startPage) fmt.Println("请输入结束页>=起始页") fmt.Scan(&endPage) startWorking(startPage, endPage) } func startWorking(startPage, endPage int) { //同步每个go程,每个go程结束,往此通道写入数据,所有go程结束退出程序 quit := make(chan i...阅读全文

博文 2019-07-28 19:32:40 七八个星天

使用golang爬取 斗鱼 所有颜值主播照片

package main import ( "fmt" "io" "net/http" "os" "regexp" "strconv" "strings" ) func HttpGet(url string) (result string, err error) { client := &http.Client{} req, err1 := http.NewRequest("GET", url, nil) if err1 != nil { err = err1 return } resp, err2 := client.Do(req) if err2 != nil { err = err2 return } defer resp.Body.Close() buf := make([]byte...阅读全文

博文 2020-02-01 19:32:44 FredricZhu

golang 中的Interface 和 反射

基础知识在这里学习: 资源一 资源二 看完这些基本的估计都有点朦朦胧胧,好文章是值得读好几遍的,这里我写一些例子,用来快速上手。 reflect.Type 常用函数使用 type Type interface { Method(int) Method MethodByName(string) (Method, bool) NumMethod() int Name() string Size() uintptr String() string Kind() Kind Elem() Type Field(i int) StructField FieldByIndex(index []int) StructField FieldByName(name string) (StructField, b...阅读全文

博文 2019-03-26 20:34:48 YuWenHaiBo

day9 内核的malloc和free

今天看了下内核使用的malloc和free,受益颇丰,现在回想起来以前看golang的runtime中内存的管理部分感觉清晰了很多。linux0.11部分内核的方法名也叫malloc,之后的版本为了和用户程序的区分改成了kmalloc,但分桶思想大概相同 首先明确几个变量和数据结构 free_bucket_desc 这个是当前未使用的桶描述符的链表 _bucket_dir,通描述符目录,每个大小的通描述符的目录,其中size记录了桶的大小,bucket_desc是指向桶描述符的指针。每个bucket_desc都有next指针来组成一个链表 bucket_desc,关键对象,一个描述符被第一次使用的时候,会申请一页地址,并且根据该描述符所在的大小将该页切割成不同的块,每个块初始化的时候前4个字...阅读全文

博文 2018-12-12 14:34:46 柯基是只dog

使用Golang爬取捧腹网段子

package main import ( "fmt" "io" "net/http" "os" "regexp" "strconv" "strings" ) func HttpGet(url string) (result string, err error) { client := &http.Client{} req, err1 := http.NewRequest("GET", url, nil) if err1 != nil { err = err1 return } req.Header.Add("User-Agent", "test2") resp, err2 := client.Do(req) if err2 != nil { err = err2 return } defe...阅读全文

博文 2020-02-01 19:32:45 FredricZhu

爬虫管理平台 Crawlab v0.4.6 发布

前言 本次更新主要集中在日志管理、任务触发、爬虫展示等优化,以及加入 Node.js SDK。 更新日志 功能 / 优化 Node.js SDK. 用户可以将 SDK 应用到他们的 Node.js 爬虫中. 日志管理优化. 日志搜索,错误高亮,自动滚动. 任务执行流程优化. 允许用户在触发任务后跳转到该任务详情页. 任务展示优化. 在爬虫详情页的最近任务表格中加入了“参数”列. #295 爬虫列表优化. 在爬虫列表页加入"更新时间"和"创建时间". #505 页面加载占位器. Bug 修复 定时任务配置失去焦点. #519 无法用 CLI 工具上传爬虫. #524 产品规划 结果展示 支持其他数据库 爬虫 支持 Git 仓库同步 更好的 Scrapy 支持 更好的长任务支持 可配置爬虫 可配...阅读全文

博文 2020-02-15 10:32:40 MarvinZhang