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

Golang 网络爬虫框架gocolly/colly 一

Golang 网络爬虫框架gocolly/colly 一 gocolly是用go实现的网络爬虫框架,目前在github上具有3400+星,名列go版爬虫程序榜首。gocolly快速优雅,在单核上每秒可以发起1K以上请求;以回调函数的形式提供了一组接口,可以实现任意类型的爬虫;依赖goquery库可以像jquery一样选择web元素。 gocolly的官方网站是http://go-colly.org/,提供了详细的文档和示例代码。安装colly: go get -u github.com/gocolly/colly/... 在代码中导入包: import "github.com/gocolly/colly" colly的主体是Collector对象,管理网络通信和负责在作业运行时执行附加的回掉...阅读全文

博文 2017-12-30 00:30:00 majianguo

Golang回调函数实例二则

1.定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 2.机制 定义一个回调函数 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者 当特定的事件或条件发生时,调用者使用函数指针调用回调函数对事件进行处理 例1.这是一个简单的回调例子,调用函数test时,调用真正的实现函数add package main import "fmt" type Callback func(x, y int) int // 提供一个接口,让外部去实现 func test(x, ...阅读全文

博文 2017-07-27 02:06:18 iCaptain

studygolang filter模块阅读小结

##Filter模块与Hanlder## Hanlder是一种已知类型的回调方法,由使用者提供,可以抽象出一个type func类型来接受这种方法 type HandlerFunc func(http.ResponseWriter, *http.Request) 然后给该方法添加一个方法用来在触发该方法的调用 func (f HandlerFunc) ServeHTTP(rw http.ResponseWriter, req *http.Request) { // 执行当前Route的FilterChain filterChain := CurrentRoute(req).FilterChain if filterChain != nil { ...阅读全文

golang之runtime.SetFinaliz

在实际的编程中,我们都希望每个对象释放时执行一个方法,在该方法内执行一些计数、释放或特定的要求,以往都是在对象指针置nil前调用一个特定的方法,golang提供了runtime.SetFinalizer函数,当GC准备释放对象时,会回调该函数指定的方法,非常方便和有效。 参考: Go 语言中手动内存管理 go语言之初始化的构造函数 Go和C如何共享内存资...阅读全文

Ware - 轻松创建中间件层

Ware https://github.com/futurespaceio/ware 核心功能源自[martini][1], 喝杯martini,轻松创建属于自己的中间层。 目前正在使用Ware,开发一个静态生成器[Space][2],快速、简单、插件化。 "喝杯martini,梦回太空“ 简单例子: package main import ( "log" "github.com/futurespaceio/ware" ) func main() { w := ware.New() w.Use(func(c ware.Contex...阅读全文

【互联网早报】2017.11.21

## 国内新闻 1. 支付宝内测版遭曝光:马上将支持用Face ID支付 http://tech.sina.com.cn/mobile/n/n/2017-11-21/doc-ifynwnty6206785.shtml 2. 360重组议案过关股东大会500亿元资产注入在即 http://tech.sina.com.cn/i/2017-11-21/doc-ifynwxum7806388.shtml 3. 华策影视讨回乐视2.48亿债权 新乐视文娱业务或盘活 http://tech.sina.com.cn/it/2017-11-21/doc-ifynwxum7806435.shtml ## 国际新闻 1. 无人驾驶货运卡车技术企业「图森...阅读全文

分享 | 百度网盘高速下载方法汇总

在线免安装类1、在度盘资源分享网址“baidu”后面加上 “wp” 两个字母 这个方法之前介绍过:【工具分享】两个关于度娘的工具,非常不错!能用多久天知道,目前是最简便好用的方法。特点:免登陆,免下载安装软件2、油猴脚本+IDM这个方法第一次下载要先安装一些插件,然后用下载软件就可以实现高速下载。之前也介绍过:你还在吐槽百度网盘的下载速度吗?那就来试试这个吧【视频】百度网盘如何实现高速下载教程特点:免登陆,第一次要麻烦一些,后面就快了。 这个方法也比较好用,稳定性也还不错。关键就是要找对合适的脚本,最笨的方法就是挨个试,如果不行了就换。安装软件类1、速盘https://www.speedpan.com/speedpan-free.html 这款软件采用了Aria2多线程下载,支持免登陆网盘账...阅读全文

博文 2019-07-19 23:32:42 永恒君的百宝箱

基于 MySQL 的 ID 生成器 idgo

idgo是一个利用MySQL批量生成ID的ID生成器, 主要有以下特点: * 每次通过事务批量取ID,性能较高,且不会对MySQL造成压力. * 当ID生成器服务崩溃后,可以继续生成有效ID,避免了ID回绕的风险. 业界已经有利于MySQL生成ID的方案,都是通过:

REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
这种方式生成ID的弊端就是每生成一个ID都需要查询一下MySQL,当ID生成过快时会对MySQL造成很大的压力. 这正是我写这个lib库的原因...阅读全文

开源项目 2015-12-24 16:00:00 flike

golang版本的通用时间轮 Timewheel

一个通用的timewheel工具类 通用粗精度的timewheel,只启动一个timer,可监听任意多的到期时间,放入的用户数据可以是任何类型。 接口说明: 1. Start: 开始一个timewheel ; 2. SetCallback: 设置时间到期时的回调函数,回调函数中不可作过于耗时的操作,以免卡住timewheel的正常运行; 3. Add: 添加需要监控的对象,务必在Start调用后再调用此接口; 4. Stop: 停止此timewhee...阅读全文

Golang让协程交替输出

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 之前用Golang写过一篇关于下载的文章(https://my.oschina.net/90design/blog/1607131), 最后提到:如果新需求是同时下载,并且按循序下载,最近看到在论坛里有人又再问起,就想起来更新一下此问题。 开始 两个协程交替输出1-20 package main import "fmt" func main() { A := make(c...阅读全文

博文 2018-01-19 11:33:05 90design

Golang通过反射检测变量类型

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 简单的记录一下吧。 package main import ( "reflect" "fmt" "strings" ) type Foo struct { A int `tag1:"Tag1" tag2:"Second Tag"` B string } func main(){ f := Foo{A: 10, B: "Salutations"} fPtr := &f m ...阅读全文

博文 2018-01-23 10:33:06 90design

高效日志库 BLog4go Go

BLog4go 是高性能日志库。创新地使用“边解析边输出”方法进行日志输出,同时支持回调函数、日志淘汰和配置文件。可以解决高并发,调用日志函数频繁的情境下,日志库造成的性能问题。 ** 快速启动: **

package main

import (
    log "github.com/YoungPioneers/blog4go"
    "fmt"
    "os"
)

// optionally set user defined hook for logging
type MyHook struct {
    som...阅读全文

全面升级后的开源云盘不了解一下么?蓝眼云盘 2.0 发布

蓝眼云盘的 Github 地址,请随手点个 star,谢谢啦。 部分软件截图: 2018 年 1 月份的时候,蓝眼云盘 1.0 刚开发完毕,那时候一个 star 都没有。为了让自己的这个开源项目看起来像那么回事儿,我发第一篇文章, 经过一年时间的持续迭代,目前蓝眼云盘已经有了 600+的 star。 这次升级的关键词就是:更快,更人性化,更透明。更快是指后端重新梳理了架构,从而日志、异常、离线任务、配置文件等更加规范了,图片缩略图也增加了缓存功能,访问速度更快。更人性化是指增加了 UI 的安装向导,可以通过下一步,下一步的方式就配置好数据库和管理员账户。更透明是指增加了大盘监控,管理员可以非常直观的看到每天的 PV,UV 以及周环比日环比,文件占用空间等重要信息。 开源虽然不容易,但是看到大...阅读全文

博文 2019-01-08 23:34:45 李爽

Golang并发(四)- buffered channel 和 Worker Pools

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 Buffered channel 之前我们说的channel都是不带缓冲的,无论发送和接收都会导致阻塞。 缓冲Channel的特点是:只有当发送至缓冲区存满后导致阻塞, 接受也是如此。 创建方式: ch:= make(chan Type , capacity) capacity 容量, 当capacity = 0 时, 为无缓冲channel,通常省略而已。 packag...阅读全文

Golang全面深入系列

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 接口 1 - Golang interface接口全面理解(一) 2 - Golang interface接口全面理解(二) 并发 1 - 并发介绍 2 - Goroutine 3 - Channle 4 - 带缓冲的channle和工作池 5 - Select 6 - Mutex Defer和错误处理 1 - defer 2 - 错误处理 3 - 自定义错误 4 - p...阅读全文

博文 2018-03-13 18:33:07 90design

Golang学习[函数]

函数的结构如下 func(p mytype) funcname(q int)(r,s int){return 0,0} 函数有很多特点 多值返回 Go可以返回多值 延迟代码 在defer后指定函数会在退出的时候调用 func ReadWrite() bool { file.Open("fileName") defer file.Close() //.... } 变参 func myfunc(arg ...int){ } 回调 func callback(y int,f func(int)){ f(y) ...阅读全文

博文 2015-11-26 21:00:01 jingmiaowill

【Leetcode】:22. Generate Parentheses 问题 in Go语言

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: "((()))", "(()())", "(())()", "()(())", "()()()" 解题思路:这道题和N-Queen问题非常类似,几乎是一样的解题模式。 首先需要明白,怎么放置括号是合法的,假设n=5的情况,已经合法的放置了4个括号,那么怎么判断下一个放什么括号合法呢? 放左括号:如果之前放置的左括号数>=n,那么一定不合法 放右括号:如果之前放置的左括号数<=之前放置的右括号数,那么...阅读全文

博文 2016-05-02 23:00:00 u013564276

on the go way (一)服务器并发

服务器并发的方式有很多种 1.通过多进程或者多线程的方式,现在这种模式基本上已经不用 2.epoll和IOCP回调的方式,不符合人们的习惯 3.使用协程(轻量级线程,创建、销毁的代价很小),协程在逻辑上上顺序执行 其中属于erlang和golang在协程并发方面做的比较好 package mainimport ( "fmt")func getResult(data []int, res chan int) { var sum int sum = 0 for _, v := range data { sum += v } res <- sum}func main() { var res = make(chan int) var data = []int{1, 2, 3, 4, 5, 6, 7,...阅读全文

博文 2016-03-22 11:00:06 OneDream

真相:为何技术不如你的人加薪升职比你快

经常有小伙伴在我的公众号“程序视界”后台留言,对一种现象表示不理解:为什么技术并不是多好的人,加薪升职却比自己快? 有人说,这是因为这类人会溜须拍马伺候领导。 有人说,这是因为领导眼睛瘸了,看不出谁是真正能做事的人。 有人说,这是因为此人有背景,老板都不敢得罪他。 还有人说,此人说不定已被潜规则。 然而实际上,我们可能是被两个常见的思维错误给蒙蔽了。这两个思维错误是: 以己之长,比人之短 单一维度评估竞争力 大家都是有逻辑、有思维、有见识的聪明人,只要接下来咱们简要说几句,你就能理解这两个思维错误是怎么回事儿了。然后,咱们再介绍什么是更好的职场竞争策略。 (1) 以己之长比人之短 渴望加薪升职却又无法突破瓶颈的开发者,往往会拿着自己的技术长处,跟那些已经加薪升职的同事去比较,张三这块不如我,...阅读全文

数据库管理丨10种不同的云开发数据库管理技巧

前言 数据好比互联网产品的“血液”,数据库的管理效率关乎一个产品甚至一项业务能否良好且高效地运转。在使用云开发时,如何通过云数据库来做好数据管理,为你的产品打通“任督二脉”?本文将介绍 10 种不同的云数据库管理小技巧,助各位开发者轻松玩转云开发数据库。 第一招 借助数据导入导出对接历史数据 在过往的业务开展过程中,会产生大量的数据,例如,不少业务会选择使用 MySQL 存储数据。随着业务发展,计数选型从传统模式变为了云开发魔术,应该如何完成传统数据迁移到云开发呢? 你可以在 MySQL 中,将数据导出为 CSV文件的格式,并使用云开发提供的文件导入的功能,一键导入历史数据。 类似的,如果你需要将云开发数据库导出到线下,进行离线数据分析,也可以使用云开发提供的数据导出能力,将所有数据导出到云...阅读全文

博文 2020-06-30 19:33:12 云开发CloudBase

Go内存优化(一)— struct

理 关于Golang同一struct中field的书写顺序不同内存分配大小也会不同。主要原因如下:struct内field内存分配是以4B为基础,超过4B时必须独占。 示例 type A1 struct { a bool b uint32 c bool d uint32 e uint8 f uint32 g uint8 } 计算一下A1所需要占用的内存: 首先第1个4B中放入a,a是bool型,占用1B,剩余3B 这时看b是uint32,占用4B,剩余3B放不下,所以offset到下一个4B空间,这时我们会发现3B没有放东西,被浪费了 依次往下,A1要占用28B的空间 根据1,2两个步骤很容易看出,有很多浪费空间。 优化: type A2 struct { a bool c bool e u...阅读全文

树莓派上编译 Go and 安装 Cow

PS:老Blog文章转移, 年代久远, 连接可能已失效. Cow 是不错的软件,相当好用,我在公司是直接把它挂到了服务器上,然后办公室的人都在用它。但是回到了家里我就无法用移动设备或者 PSP 之类的连接它了,我的电脑也不能一天 24 小时的在家中开机,碰巧这两天买了连个树莓派,上面运行的是专门定制过的 Debian Linux,我就想着是否能够使用它来运行 Cow。十分不幸的是,似乎作者的网站上并没有提供 ARM 设备的 Cow 版本,我尝试的下载了 Linux 32 位的版本,但是无法在树莓派上运行。所幸 Cow 是用 Go 语言写的,而 Go 支持 ARM,大不了自己编译 Cow。 我不知道是因为我的的问题还是因为什么奇怪的问题,树莓派的官方源里有 Golang,但是我安装之后却无法使...阅读全文

博文 2017-02-09 13:31:05 venmos

记一次算法练习

算法一直是自己的弱项 通过算法来学习语言吧 Java版: /** * 算法练习 1 * Created by Exile on 2017/5/25. * 1 N(N为偶数)个数字,把数字平分 N/2 组,使得每组的数字和相等。 */ public class ArithmeticTest1 { // 题目1偶数个数组 public static void main(String[] args) { int[] evenNumberArry = new int[]{1, 7, 2, 7, 6, 5, 2, 8, 3, 4}; int arryNum = evenNumberArry.length / 2; // 1 计算sum; int sum = 0; for (int i : evenNu...阅读全文

博文 2017-06-01 05:07:18 埃赛尔

golang之runtime.SetFinaliz

在实际的编程中,我们都希望每个对象释放时执行一个方法,在该方法内执行一些计数、释放或特定的要求,以往都是在对象指针置nil前调用一个特定的方法,golang提供了runtime.SetFinalizer函数,当GC准备释放对象时,会回调该函数指定的方法,非常方便和有效。 不过值得注意的是,指针构成的 "循环引⽤" 加上 runtime.SetFinalizer 会导致内存泄露...阅读全文

博文 2017-02-07 03:56:40 henrylee2cn

GoLang回调实现,非传func参数方式

写这篇文章的初衷是因为最近被GoLang的一个低级问题搞蒙了,加上本蠢货用的还是IntelliJ的2017版本,对GoLang的错误提示非常有限,导致为了解决一个回调问题花了一个多小时。 问题呢,就是GoLang的回调了,在我的印象中GoLang实现回调和Java有那么一点区别,但是大同小异。首先如果是个简单的回调那么肯定没啥难度,传入一个struct对象就可以了,但是我想的是可以随时创建这个回调对象,在各种场合,那么就决定了这个回调对象可能是多个,所以必须是接口。 so,思路其实很清晰,回调参数使用接口就可以了,但是今天我被自己蠢到了,忘了GoLang的特性,首字母非大写是不能给外部包调用的,所以,一言难尽。 在解决问题的期间我不服气的搜了百度与google,发现搜出来的内容居然都是传入f...阅读全文

博文 2019-07-14 21:32:39 zerochl

2018-08-23

今天是整点写的23号的日记了终于赶上了进度我要跟懒癌和拖延症好好的斗一斗今天的账单还没有录入等下录好了今天早上喝的是自己煮的小米红枣粥哈哈哈还是挺好喝的没有放糖也是甜甜的据说这个对胃好之前本来是买来准备给那谁送个把月结果呢哎 不提了往事不堪回首今天估计她又有任务了往我们室跑了好多趟哎真心不想听到她声音不想看到她的脸我现在已经刻意的不去看她刻意的不去听她的声音希望她别太介意我也是想决断但是我现在因为买房考试这些问题不能离职买房这事这周六终于可以有个结果了成不成就看了想一想以后要背的房贷就心塞塞算了 先上车这个也不会亏了本来之前想追回来写两个人的名字结果呢造化弄人了一切都是没有缘分不去想不去问不去做感动自己的事情了加油做好自己做一个自己喜欢的人上午一杯黑咖啡提神下午一壶柠檬水+黑咖啡总之呢在公司...阅读全文

博文 2018-08-24 00:34:59 TheOne_WuX

Go语言事件系统

package main import "fmt" func main() { // 实例化一个角色 a := new(Actor) // 注册名为OnSkill的回调 RegisterEvent("OnSkill", a.OnEvent) // 再次在OnSkill上注册全局事件 RegisterEvent("OnSkill", GlobalEvent) // 调用事件,所有注册的同名函数都会被调用 CallEvent("OnSkill", 100) } // 声明角色的结构体 type Actor struct { } // 为角色添加一个事件处理函数 func (a *Actor) OnEvent(param interface{}) { fmt.Println("actor even...阅读全文

博文 2019-12-24 15:33:14 huang_he_87

在非同一文件情况下,结构体中的父类取不到

比如在a.go中写一个结构体, Base{id: int, age: int} , Student{ name: String, base: Base } ,然后新建一个main函数的maig.go,实例化结构体Student的时候base取不到,如果写 stu := Student{ name: "小明", base : Base{.....}} 这样也会报错,说找不到 field base, 这是怎么回事儿,和java好不一样,新手, 求指点 ...阅读全文

关于怎么实现type struct里的 回调函数 类型的实例

如果结构体内有一个 回调函数类型 ,那我该怎么实现这个类型的实例并打印输出值呢 ```go package main import "fmt" func main() { type PipeData struct { value int handler func(a int) int } //实现不了的部分⬇ var a PipeData fmt.Print(a.handler(2)) //实现不了的部分⬆ } ``...阅读全文

安装fabric hyperledger--by Skyh0625

hyperledger 是IBM的无币区块链,作为比较大联盟链项目,很多大公司都在研究,比如腾讯阿里,金融行业比如银行保险微众P2P企业等,作为杀手级应用,现在还没看很多,可能在信息存证,发票版权等项目有用上,炒区块链概念的外包公司也水涨船高,今天就重新再虚拟机上安装hyperledger(后面有精华) 1. 准备环境 首先我用的是Ubuntu18.04 LTS环境 这时就得用黑科技,通过ss方便实用,其它的就爱莫能助了 .bashrc写入 export http_proxy="http://192.168.157.1:1080" export https_proxy="http://192.168.157.1:1080" 安装go,官网推荐这样是最新版 sudo snap install ...阅读全文

博文 2019-06-26 00:32:42 skyh25

golang做成一个so静态库,供python调用, 我想实现golang这边网络收到数据后回调python的函数,但是总是提示不成功,相同的在c++可以成功. 高手帮我瞧瞧.

python部分如下: ``` def OnReceive(sockid, str_from_golang): print str_from_golang CCReceiveFUNC = CFUNCTYPE(None, c_int32, c_char_p) gReceiveFunc = CCReceiveFUNC(OnReceive) mydll = cdll.LoadLibrary lib = mydll("./basego.so") print gReceiveFunc lib.setCallbackFunc(gReceiveFunc) 用go的setCallbackFunc()来设置python的函数,作为回调函数 go部分: var...阅读全文

经典算法:汉诺塔

学编程,学IT,算法也是必不可缺的,这一次给大家带来一个经典的递归算法题,汉诺塔。算是算法的入门小题目之一吧~ 视频教程 什么是汉诺塔? 我这里直接拉来一个图解释一下(挂了请联系我)就是这么一个东西了,把所有的圆盘从左边移动到右边,并且大的圆盘不能够压住小的。怎么才能完成呢? 规则理解了,开始钻牛角尖 先来看看只有一个圆盘的情况, 嗯 相当的简单 A--->C 就可以了 两个的情况呢? 也不难 A--->B A--->C B--->C 三个的话有点挑战了 大家自己推一推 好的 十个呢?就算想了半天弄好了,怎么让程序帮我们做呢?头大! 牛角尖钻完了,冷静分析 在我们每次完成之前的状态,都是把最大的圆盘放到了最右边,剩下的圆盘放到了中间。然后把中间的再都放到右边就好了 这道理就跟把大象装冰箱一样...阅读全文

博文 2018-11-02 12:34:46 蒋吉兆

Golang GUI基础1 -- JSON格式化小工具

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 本人入门Golang的gui, 只是想做一些小的工具日常工作使用, 因为对Golang的热爱已经到了如痴如醉的地步。 开始今天的lxn/walk练习: package main import ( "encoding/json" "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) func main() {...阅读全文

博文 2018-01-09 10:33:04 90design

大佬们帮我看看一个协程计算的问题,报dead lock

func main(){ //协程并发计算的列子同步计算 //10000个数如果是偶数/2+1,如果是奇数*2 write:=make(chan int ,100) read:=make(chan int ,200) singal:=make(chan bool,5) //5个信号灯为true代表5个协程都计算完毕了 //开启一个协程写入要计算的数据 go putChan(write) //开启5个协程计算 for i:=0;i<5;i++{ go compulate(write,read,singal) } //main函数中读取ch3如果读取到了代表计算完成了,应该关闭ch2 for i:=0;i<5;i++{ res:=<-singal //代码在这里报错了all goroutines...阅读全文

博文 2019-08-28 17:52:13 blackdinosuar

promise/future异步编程模型

文: http://labs.strava.com/blog/futures-in-golang/ promise/future是一个非常重要的异步编程模型,它可以让我们摆脱传统的回调陷阱,从而使用更加优雅、清晰的方式进行异步编程 package main import ( "net/http" "io/ioutil" "fmt" ) func main() { url := "http://www.google.com" future := Future(func() (interface{}, error) { resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() retu...阅读全文

博文 2019-06-11 18:02:44 清晨的麦田

golang协程池

const Max = 10000000 type GoroutinePoll struct { Queue chan func() error Total, Num int Result chan error FinishCallBack func() error } func (g *GoroutinePoll) Init(total int) { g.Total = total g.Queue = make(chan func() error, total) g.Result = make(chan error, total) } func (g *GoroutinePoll) SetFinishCallBack(f func() error) { g.FinishCallBack =...阅读全文

博文 2018-03-09 14:30:01 fwdqxl

beehive 源码阅读- go 语言的自动化机器

beehive Overview 看一下作者本人的注释 // Package bees is Beehive's central module system. beehive 非常有趣的在于各逻辑的解耦设计,这不仅让本身功能操作简单,也让扩展变得关注点少了很多,只需要一点学习成本就可以扩展自己的 beehive 首先解释一下 bee hive 中 的概念 bee 代表的是我们常见的 Worker 也就是说,实际的行为是由这些 小蜜蜂执行的。他们就类似于采蜜的工人,采集到了之后统一放回来处理 hive 是蜂房,也就是我们常见的 WorkerPool 不同的是,她更像一个 Facotry ,什么意思呢?她可以创建专属的 bee 。在极少的配置下,比如只需要配置上一个 token 即可。就可以生成...阅读全文

博文 2019-08-02 10:04:25 yhyddr

golang实现和讲解动态规划算法(背包问题)

前言 昨天阅读了程序员小灰的《什么是动态规划》,当时还在亲戚家中,借了纸笔计算了一通,回家结合一些背包问题文章用程序实现了一下。文章先从简单的解决斐波那契数列入手,接着在讲解工人挖矿获取最大价值的例子中(其实就是经典的0-1背包问题),有一些容易使你晕头转向的问题,本文当作算法复习,并且记录了解题思路。 0-1背包问题 有n件物品和容量为cap的背包,每件物品有自己的容量w和价值v,每件物品只能选择放或者不放,求解让装入背包的物品容量不超过背包容量(cap)的情况下,能获得的最大价值是多少。 问题描述 小灰文章里举例的是工人挖矿,我们还是转换成物品放入背包的问题来描述,并且价值缩小10倍,只为了减少图片里表格的宽度。 我们把工人挖矿问题套用到背包问题里。容量=工人数,物品=金矿,背包装下最大...阅读全文

博文 2020-05-04 14:32:40 叶子

go 开发 寻求大神帮助

go怎么实现延迟任务执行 main函数执行后 直接退出了 在main函数里面是有select{}可以实现执行完后在退出 ,但是实际项目应用中肯定不能这样做,例如执行一个每20秒执行一个任务 应该怎么做func main() { //go timer1() //timer2() for i :=1; i <10 ; i++ { task :=&Task{i+1,"a",""} task.Start() } } type Task struct { delay int key string data string } func NewTask(delay int,key ,data string) *Task { task :=&Task{ delay:delay, key:key, data:...阅读全文

博文 2018-08-02 13:46:30 lemonsds

golang modules

本文使用go的版本 go1.13 ,使用的系统为 macos go modules 使用 go mod init hello ##初始化 go run hello.go ##运行项目搞定 使用go modules 不需要讲想法放大GOPATH下的src中并且只需要在项目的根目录执行 go mod init 模块名称,然后开始写代码,最后执行 go run hello.go go会自动下载项目依赖的第三方的包。简直太方便了。 下载之后的包放哪里了? 使用 go mod 依赖的包并没有放在项目的 vendor 中 ,而是放在了$GOPATH/pkg/mod中 如果go run 的时候特变慢可以先 export GOPROXY="https://goproxy.io" 添加代理,然后在重新执...阅读全文

博文 2019-09-18 18:02:38 曹飞龙