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

使用Go开发前端应用(四)- 操作canvas绘制一个表格

前言 这篇文章会讲下,如果通过Go来操作canvas,然后画一个类似腾讯文档表格一样的,在线的表格。当然,这肯定是个demo(你懂的)。然后,这篇文章主要会讲下面几个点: 使用Go来操作canvas绘制表格 使用js来操作canvas绘制表格 性能问题 使用Go操作canvas绘制表格 这里我们就直接上Go的代码了,如果有对Go如何编译成wasm或者其他的基础问题,可以查看这个系列的之前的几篇文章。 package main import ( "fmt" "syscall/js" "time" ) var drawCtx js.Value var window js.Value func init() { window = js.Global() doc := window.Get("doc...阅读全文

博文 2020-05-15 10:35:13 zhongzhong05

阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)

由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!整理了一份Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。如果需要获取到这个【核心知识点整理】文档的话帮忙转发一下然后加入我的Java进阶架构Q群:723890152 免费获取吧!点击我,马上获取​​​​​​​如果需要获取到这个【核心知识点整理】文档的话帮忙转发一下然后加入我的Java进阶架构Q群:723890152 免费获取吧!点击我,马上获...阅读全文

博文 2019-07-25 19:08:28 wyygxly

golang项目结构日记

最近再玩golang,在研究如何导入自己的模块的时候很是头疼。基本golang槽糕的设计——project既要设置$GOPATH又对项目结构有一定的要求(缺少一定的自由)(当然golang糟糕的设计远不止这方面,越是深入了解越是讨厌)。google好久才知道如何配置。网上blog里要么是同一篇文章各种转载(他喵的还不注明),要么不够清晰,各种尝试后终于成功,记录如下: 进入终端输入命令 mkdir -p goproject/src/goproject cd goproject touch install cd src/goproject touch main.go cd .. mkdir test cd test && touch test.go 此时cd 到goproject应该是如下: ...阅读全文

博文 2016-07-16 02:00:01 danny_amos

微服务系列笔记之Broker模式入门介绍

导语 API模式笔记告一段了,这篇文章总结了Micro中的消息订阅模式,在之前的系列文章中讲解了RabbitMQ消息队列,使用的是原生代码进行编写,在Micro中,其实为我们封装了RabbitMQ消息队列,不仅仅是RabbitMQ还有NATs作为消息中间件,称之为broker模式,在这篇文章中我们进行一个简单的发布与订阅模式的介绍。 入门案例介绍 首先建立如下目录 image 编写我们的main.go,首先,定义一个待发布的主题和一个broker,使用broker需要导入"github.com/micro/go-micro/broker"包。 var ( // 定义一个待发布的主题 topic = "mu.micro.book.topic.payment.done" b broker.Bro...阅读全文

博文 2019-08-13 01:32:49 陌无崖

介绍 GDB 调试 Go

注:本文作者是 YANN,原文是 Introduction to Go Debugging with GDB 在过去的 4 年中,我花了我绝大部分的时间用来写,读以及调试 Python 或 JavaScript 代码。在学习 Go 的过程中,像穿着一双有小石子的鞋子在美丽的山中远行。很多事情给我留下了深刻的印象,但是使用 println 调试我的代码在过去走的太远了。在 Python 中,当代码在运行的时候,我们使用 pdb/ipdb 调试它,JavaScript 提供了类似的工具。在这些年中,这个模式已经变成了我工作流中非常重要的一部分了。 今天,我认识到 Go 已经内建支持 Gnu debugger (aka GDB)。 为了这篇文章,我们使用以下这个简单的程序: package mai...阅读全文

博文 2015-10-16 10:00:06 feihongdragon

如何泄漏一个协程然后修复它

很多 go 语言开发者都知道这句格言,[永远不要启动一个你不知道如何停止的协程](https://dave.cheney.net/2016/12/22/never-start-a-goroutine-without-knowing-how-it-will-stop),但是泄漏一个协程还是超级的简单。让我们看一种常碰到的泄漏协程的方式,然后修复它。 为了实现这个,我们先建立一个包含一个自定义 `map` 类型的库,这个 `map` 类型的 key 在经过了一段可配置的时间后过期。我们把这个库叫做 [ttl](https://en.wikipedia.org/wiki/Time_to_live) ,这个库有一个 `API` 类似如下: ```go // 创建一个生存周期为5分钟的map m :=...阅读全文

用 Go 创建一个新的智能合约语言 - 新项目动机,概念

这篇文章讲述了 **为什么** 我们开始为智能合约创建新的编程语言(使用 Go)。 ## 动机 目前有两个众所周知的区块链,比特币和以太坊。比特币有 **bitcoin script** 和以太坊有 **solidity** 为它们自己的智能合约编程。两者都有利有弊。 对于 **比特币** 而言,它没有状态概念,并且 bitcoin script 是基于低级语言和很少的操作,因此它所能做的是有限的。另一方面,因为它的工作方式简单并且比特币是没有状态的,这样我们能轻松地进行静态分析,如这个脚本运行速度有多快。 对于 **以太坊** 而言,它有状态的概念,并且 solidity 被设计为高级语言,solidity 开发者能够更直观的编程,并且以太坊智能合约可以做很多事情(是的,这是因为以太坊是有...阅读全文

博文 2019-01-27 13:16:02 PotoYang

Golang 中函数作为值与类型

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 老司机倾囊相授,带你一路进阶,来不及解释了快上车! 在 Go 语言中,我们可以把函数作为一种变量,用 type 去定义它,那么这个函数类型就可以作为值传递,甚至可以实现方法,这一特性是在太灵活了,有时候我们甚至可以利用这一特性进行类型转换。作为值传递的条件是类型具有相同的参数以及相同的返回值。 函数的类型转换 Go 语言的类型转换基本格式如下: type_name(expression) 复制代码举个例子: package main import "fmt" type CalculateType func(int, int) // 声明了一个函数类型 // 该函数类型实现了一个方法 f...阅读全文

博文 2019-06-03 23:34:20 后端进阶

彬哥笔记 --2 掌握Go语言可以给你带来什么

文章标题可以稍微通俗一点解释就是:学了Go语言,对我有什么用? 目前大多数从事IT开发的人,很大一部分是因为IT行业薪资高而选择的,其实彬哥我也是一样,我大学专业是核物理,毕业时候班上大多数同学都去了国家的核工程系统或者去读研了;我毕业就开始找工作,发现没有企业需要核物理的,当时我就意识到了必须”转行“。于是我就开始找高薪都有那些行业,大概分析了很多数据后,得出结论:金融,律师,服务器开发;再结合自身,短期内可以达到的可能是服务器开发,就这样阴差阳错的做到现在。清晰的记得第一份工作IT工作是在成都孵化园5栋,TV游戏开发;老大是展姐,工资600元; 有件事我还记得,展姐问我后面的理想是什么,我说我要做一款属于自己的游戏引擎,她说你先学会开发中不用鼠标开始计算,时间过10年在中国你才可能开发一...阅读全文

博文 2018-11-17 00:34:40 Golang语言社区

Python爬虫之处理异常 python进阶

每个程序都不可避免地要进行异常处理,爬虫也不例外,假如不进行异常处理,可能导致爬虫程序直接崩掉。以下是网络爬虫出现的异常种类。 **URLError** 通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生。 **HTTPError** 首先我们要明白服务器上每一个HTTP 应答对象response都包含一个数字“状态码”,该状态码表示HTTP协议所返回的响应的状态,这就是HTTPError。比如当产生“404 Not Found”的时候,便表示“没有找到对应页面”,可能是输错了URL地址,也可能IP被该网站屏蔽了,这时便要使用代理IP进行爬取数据。 **两者关系** 两者是父类与子类的关系,即HTTPError是U...阅读全文

protobuf可变长度原理

这篇文章在你已经了解protobuf使用的基础上,更进一步的学习,如果不知道protobuf是什么?请查阅这篇文章【golang-protobuf使用】 可变长度类型 官网说明地址:https://developers.google.com/protocol-buffers/docs/proto3 proto文件的可变长度类型有:int32、int64、uin32、uin64、sint32、sint64 连续位标识 Protobuf用的是连续位标识技术,使用每个字节的第一位来标识是否需要继续向后读。每个字节低7位用于实际的编码。 举例: 本次举例使用uin32类型 十进制:300 二进制(4个字节):00000000 00000000 00000001 1000000 protobuf编码过...阅读全文

博文 2018-12-03 14:34:49 __simple

自学Python找不到工作?吃鸡半小时,编程五分钟,劝你还是放弃吧

Python发展可以说是如日中天,更多的人选择学习Python,也更多的人开始关注它,从这些关注度来看,我发现关注度最高的还是Python的就业前景是怎么样的,毕竟大家学习Python都是为了以后能有好的工作,那么,Python就业到底靠不靠谱呢?答案当然是肯定的。 都说,滴水穿石非一日之功。然而有些人即使奋斗一辈子也比不上别人一年,别人学习一年比不得你学习一个月。其中缘由,有些人看了大半辈子还没看明白。 即使Python这么火,为何你学习一年的Python还找不到工作? 我认为有以下四点非常关键: 1,功利心强: 急需赚钱之人,所以才会着重强调“赚钱”这个字眼。如果越是功力心强,进取心弱,越着急学,越学不明白。 2,基础薄弱: Python编程零基础的人,或者是基础十分薄弱之人,所在的工作...阅读全文

博文 2018-11-08 20:34:40 Python农夫

Go 面试每日一题(2)

每天 15 分钟,学好 Go 语言从上篇文章留言区的回答来看,大家对 defer 先进后出的特性都是了解的,没问题,但如果结合 panic 语句就可能会搞不清到底是 defer 先执行还是 panic 执行。看下答案,输出:1打印后2打印中3打印前4panic: 触发异常参考解析:defer 的执行顺序是后进先出。当出现 panic 语句的时候,会先按照 defer 的后进先出的顺序执行,最后才会执行panic。欢迎在留言区补充!来看下今天的题目:下面这段代码输出什么,说明原因。 1func main() { 2 3 slice := []int{0,1,2,3} 4 m := make(map[int]*int) 5 6 for key,val := range slice { 7 m[k...阅读全文

博文 2019-08-31 21:09:33 Golang来啦

A Tour of Go---Go语言之旅

序言 开始翻译一下GO的官方网站的:A Tour of Go(Go语言的不归之旅) 学习A Tour of Go的前置步骤 安装最新版本的Go语言环境(现在最新版本是:1.12.9) 查看自己的GOPATH和MODULES环境变量是否设置好 随便在自己的硬盘的任何位置创建一个文件夹,文件夹的名字就是你项目的名字 进入文件夹,新建main.go(也可以其他命名文件,推荐使用main.go文件命名一个项目的启动文件) package main import "fmt" func main() { fmt.Println("Hello, 世界") } 复制代码 在项目的文件夹下打开dos或者terminal,输入go mod init xxxx(xxxx是你项目的名字),这是使用go提供的modu...阅读全文

golang进阶(一)——glide的使用手册

+++ title=”golang进阶(一)——glide的使用手册” date=”2017-10-10” tags=[“golang”,”glide”,”docker”] categories=[“资源管理”] description=”golang也有包管理,类似maven,gradle,npm,bower之类的” featured=true image=”img/201710/fengjing1.jpeg” +++ golang的包管理软件有很多,我选择了glide,由于深中docker之毒,所以方式也就用docker的方式来了,看不懂的先补docker的课 glide的Dockerfile 直接把glide做成镜像,基础镜像是golang,把两者打包成一个golang的运行环境 Do...阅读全文

博文 2017-11-06 12:06:48 lastsweetop

html2pdf 网页转PDF

Gayhub 链接 问遍谷歌百度,依然没有好的方案. 打开Gayhub ,发现万赞JS 效果也就那个XX样,一张糊里糊涂的img 冒充精美的PDF? 经过一天的苦思冥想,借助HiqPDF (估计Itext , spirePDF 等类似的都可以,思路还用这个就可以了),终于实现了目前来看最完美的方案 - -而且,贼简单你敢信? 先来个效果图 (= ̄ω ̄=) 阅读全文

博文 2018-08-18 12:35:04 忘忧天

Go语言用堆排序的方法进行一千万个int随机数排序.

上篇文章用的是quicksort方法排序,但是如果用快速排序法对重复率很高的slice排序的时候,时间复杂度会激增,速度相当慢 所以尝试了一下堆排序,实验结果,感觉挺好的.下面是代码,大家可以参考一下,这个是建立的大顶堆. 二叉树的特性: 最后一个非叶子节点 : root = length/2(当length为奇数的时候root向下取整) 在GO语言中的索引位置:root - 1, 左右孩子节点:child_l = 2*root,索引位置:child_l-1,右孩子的节点: 2*root+1 索引位置. package main import ( "fmt" "math/rand" ) func main() { Num := 10000000 var list []int for i :=...阅读全文

博文 2016-03-12 09:00:00 fyxichen

golang time操作整理

这里的内容大部分是从他人处整理得到 http://my.oschina.net/1123581321/blog/190942 时间戳 当前时间戳 fmt.Println(time.Now().Unix()) # 1389058332str格式化时间 当前格式化时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5 # 2014-01-07 09:42:20时间戳转str格式化时间 str_time := time.Unix(1389058332, 0).Format("2006-01-02 15:04:05") fmt.Println(str_...阅读全文

博文 2015-11-06 17:00:13 u012210379

k8s与aws--如何在cloud-provider=aws的k8s中设置externalTrafficPolicy为local

如何在启用cloud-provider=aws的k8s集群中设置service 的externalTrafficPolicy为local 关于externalTrafficPolicy的local和cluster两个值,在之前的文章中,我们已经讲过。大家可以参考从service的externalTrafficPolicy到podAntiAffinity这篇文章。 而在aws中,假如你自己部署k8s集群,并且启用了cloud-provider=aws,那么需要做一些其他的工作,否则service 的externalTrafficPolicy为local后,无法访问。 首先保证kube-proxy启动参数里加入hostname-override设置 - --hostname-override=$...阅读全文

博文 2019-01-07 11:34:48 iyacontrol

open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境

收到新的任务研究一下 open-falcon 监控公司的服务器指标玩玩。说实话现在连要重视哪些监控指标都不知道,但在open-falcon 中文介绍 中,就安装这一块,踩的坑实在好多,所以有必要写篇文章记一下。 这篇文章主要包括: 如何搭一个虚拟的 linux 服务器和相关配置 按照官方的中文介绍安装,会踩到哪些坑。 目标只有一个:尽快跑起来。 服务器选择 笔者最终选择的是 ubuntu-server 16.04 LTS 64bit。基于这款服务器,许多安装指令和介绍中不一样。具体包括 yum 替换为 apt-get mysql-devel 替换为 libmysqld-dev,libmysqlclient-dev 等。并且 ubuntu 的源需要配置。笔者配置的是阿里云的ubuntu 16....阅读全文

博文 2017-02-10 10:31:57 genefy

RSA到底是谁加密?

RSA到底是谁加密? RRSA加密是最常用的非对称加密方式,原理是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。 但你一定会碰到过,两个开发者争执:到底是由谁加密,谁解密? 看完这篇文章,你就会明白这一切。 规范怎么说 我们先来看看权威库open_ssl的文档描述,它定义了四个方法 RSA_private_decrypt RSA_private_encrypt RSA_public_decrypt RSA_public_encrypt 看起来似乎私钥和公钥都可以用来进行加密解密? 但是仔细查看 RSA_public_decrypt 和RSA_private_encrypt的描述都是:low level signature operations...阅读全文

博文 2020-05-06 21:32:46 boywus

Golang 要点汇总

Golang有很多非常强大的用法,本文对网上的一些文章做一个简单的汇总,供以后翻阅。 1,Constant的用法 https://splice.com/blog/iota-elegant-constants-golang/ 这篇文章详细介绍了如何优雅地定义constant 2,Channel 非阻塞Channel操作:https://gobyexample.com/non-blocking-channel-operations 超时Channel:http://blog.golang.org/go-concurrency-patterns-timing-out-an...阅读全文

博文 2015-03-18 03:00:01 cobbliu

golang进阶(五)——restful开发的json处理

前言 restful开发时,对象转json,json转对象是非常频繁的操作,怎么样才能少些重复的代码呢,以这个为目的开启这篇文章 所有代码放在github上 简化数据结构 每次需要返回的数据有code,msg,data这些字段,每个类型都加这些字段太繁复了,这里有interface的方式,去代替任意类型,然后使用的时候data字段与其他类型任意的组合 package model type Resp struct { Code string `json:"code"` Msg string `json:"msg,omitempty"` Data interface{} `json:"data,omitempty"` } type User struct { Username string `j...阅读全文

博文 2017-11-06 12:08:41 lastsweetop

golang进阶之路

类型转换 go语言提供了一种在不同但是相互兼容的类型之间相互转换的方式,并且这种转换非常安全。非数值类型之间的转换不会丢失精读。 但是对于数值类型之间的转换,可能会发生丢失精度或其他问题。 转换语法 resultOfType := Type(exportession) 例如 x := uint16(6500) y := int16(x) 由于x超出了int16的范围,所以y的值会被设置成-535。 对于数字,本质上将我们可以将任意的整型或者浮点型数据转换成别的整型或浮点型(要考虑丢失精度问题)。 string类型转换 一个字符串可以转换成一个[]byte(其底层位UTF-8的字节)或者一个[]rune(Unicode码点),并且[]byte和[]reune都可以转换成一个字符串类型。单个字符...阅读全文

博文 2019-04-24 01:34:42 b77bb494e846

我是这么使用黑苹果的

最近使用黑苹果,为啥要用黑苹果以及怎么黑的跳过不说,说说我是怎么使用的。 首先说明,我没有使用白苹果的经验,OS X里的24K纯小白。写这篇文章的起因是前天晚上无缘无故用户密码不对了,重启之后进不了系统,再加上看网上各种的密码回复教程搞得电脑无限重启,无奈最后重装系统(好在我有专门的U盘做安装盘)。 还要说明的是这篇文章是给开发人员准备的,那些开机装两个软件看看视频聊个天的可以返回或者右上角了。开发人员都知道,配环境什么的最麻烦了,要下载软件,解压,配置环境变量,各种麻烦,尤其是需要多种开发语言的。我是配置的golang作为业余学习使用的,而且不想分盘,所以才有了今天的下场。废话有点多,开始正题。 首先,环境变量需要的SDK都放在家目录(~)下新建文件夹统一安放,环境变量也配置在这个目录的....阅读全文

博文 2017-06-12 01:07:07 remainer

RocketMQ主从读写分离机制

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 一般来说,选择主从备份实现高可用的架构中,都会具备读写分离机制,比如 MySql 读写分离,客户端可以向主从服务器读取数据,但客户写数据只能通过主服务器。 RocketMQ 的读写分离机制又跟上述描写的不太一致,RocketMQ 有属于自己的一套读写分离逻辑,它会判断主服务器的消息堆积量来决定消费者是否向从服务器拉取消息消费。 决定消费者是否向从服务器拉取消息消费的值存在 GetMessageResult 类中: org.apache.rocketmq.store.GetMessageResult: private boolean suggestPullingFromSlave = f...阅读全文

博文 2019-10-22 23:33:05 aside section._1OhGeD

Golang中的数据驱动和参数化测试

此篇文章转自Elliot Chance的[Go: Data-Driven or Parameterized Tests](http://elliot.land/go-data-driven-parameterized-tests)。欢迎大家访问[我的博客](http://zuozuohao.github.io/)。 Glang的核心原则是保持简单和问题解决方法的唯一性,Python也遵循了这一原则。 在Go中可以轻松的完成单元测试,然而依旧会遇到一些测试功能上的问题。至少对于我来说, 与其写令人厌烦的测试样板文件,我宁愿去找一个功能完善的第三方测试包。 这篇文章详细介绍了在书写数据驱动或者说参数化测试框架过程中,数据驱动测试是指基于相同的测试逻辑使用表格作为输入和期望输出源...阅读全文

computer go

这学期做了一个计算机围棋的项目,也因此自学了围棋,就程序而言虽然最后比赛结果不是很好,但仍然有了一个初步的轮廓。 先上一个程序自己跟自己下的截图 接下来我来逐步介绍一些细节,里面会涉及到很多围棋方面的知识,但大部分是简单的,因为复杂的围棋概念,例如薄厚,眼形,模样,目前还是很难用计算机程序来描述的。另外这个程序还存在一些其他更重要的问题尚未解决,下面我会一一道来。如果你有任何问题,也可以在留言中回复,我尽力回答。由于这篇文章规模巨大,再加上我一边还在重写代码,更新的进度估计很慢,我估计寒假能把这篇文章写完。 首先,读者需要建立一个这样的概念,计算机围棋的搜索空间是10^700次方,目前为止没有任何一台机器能够解决如此复杂的问题。第二,计算机围棋作为人工智能领域的著名难题,至今仍然没有超过人类...阅读全文

博文 2015-12-23 20:00:00 u012520030

InkPaper 最佳实践——使用 Travis CI 自动部署 Ink 博客到 GitHub pages

简介 纸小墨(InkPaper)是一个GO语言编写的开源静态博客构建工具,可以快速搭建博客网站。它无依赖跨平台,配置简单构建快速,注重简洁易用与更优雅的排版。使用 Travis CI 可以解决 自动构建和自动部署的问题, 这样能让我们更加专注书写。 什么是 Travis CI? Travis CI 是为 GitHub 上的项目提供构建和测试的分布式持续构建服务。这意味着你的静态博客最好是托管在GitHub Pages 上的。当 GitHub Pages 仓库激活 Travis CI 服务,当你的博客有新的修改提交到 GitHub 的时候,GitHub 会通知 Travis CI。它也可以被配置为只对特定的分支生效,或分支的名称匹配特定的模式。Travis CI 将会检查相关分支并执行之前在 ...阅读全文

golang进阶(七)——go语言的几种测试方法

前言 用了go的测试框架,再想下junit的,虽然已经Junit5,那丑陋程度还是依然。 java出来的时候,还没有很多软件工程的概念,语言先出来了,因此需要通过不同的插件慢慢补。 go就很幸运,出来的时候很多软件工程的概念已经基本定了下来,可以加到语言特性之中,go的测试就简便很多,不愧是为工程而生的语言 需要测试的程序 我们需要测试的程序文件叫做utils.go,里面有个字符串反转的方法Reverse,代码相对简单,这里就不赘述了 func Reverse(s string) string { r := []rune(s) for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { r[i], r[j] = r[j], r[i] } ...阅读全文

博文 2017-12-07 02:01:01 lastsweetop

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

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

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

送别2019,期待2020!

概述 2019 年时间过得很快。 有欢笑、 有离别、 有压力、 有收获。 关于工作 项目发生了变动,团队也发生了变动,不过总体是成长的,在这感谢领导的关照、信任! 下半年开始学习 Go 语言,并用 Go 进行搭建项目,也算是刚刚入门了吧。 自己在团队内也进行了几次分享,锻炼了自己的上台说的能力。 期间听过一些大牛的分享,将自己的笔记分享给大家: 用抽象来解决需求的快速变化; 用解耦来解决技术实现的不确定性; 要在当前资源条件下求最优解,然后再进行灰度过渡; 组织的沟通方式决定你使用什么样的结构设计,架构的核心目标之一就是降低团队的沟通成本; 关于生活 感谢老婆,有你相伴的日子,即使平凡也很浪漫!(求生欲) 感谢父母,在这边帮忙带孩子,发现我自己都变成猪了,好吃懒做。 孩子正在开始学说话,咿咿...阅读全文

博文 2020-01-04 14:32:38 新亮

Go 官方博文 Module 第四部分:v2 及更高版本

## 简介 本文是 Go modules 系统的第四部分 - Part 1: [使用 Go Modules](https://blog.golang.org/using-go-modules) [译文](https://studygolang.com/articles/19334) - Part 2: [迁移到 Go Modules](https://blog.golang.org/migrating-to-go-modules) [译文](https://studygolang.com/articles/23133) - Part 3: [发布 Go Modules](https://blog.golang.org/publishing-go-modules) [译文](https://s...阅读全文

博文 2019-12-04 20:10:53 befovy

Go语言DefaultClient没有设置请求超时

今天看到这篇文章:Don’t use Go’s default HTTP client。总结起来就是直接使用Go语言的http.Post,http.Get等方法时,底层连接使用的是DefaultClient。而DefaultClient没有设置请求超时: // DefaultClient is the default Client and is used by Get, Head, and Post. var DefaultClient = &Client{} 因此,如果服务器端如果一直无响应的话,就会把当前发出请求的goroutine挂死。因此如果要使用DefaultClient,一定要留心这个陷阱...阅读全文

go 垃圾回收:三色算法

三色算法 go垃圾回收器的操作都是基于三色算法,这篇文章主要来说明此算法。 注意:三色算法并不是go独有的,它也会在其它编程语言中使用到 严格来说,在Go中这个算法的官方名称是叫做三色标记清除算法(tricolor mark-and-sweep algorithm)。它可以和程序一起并发工作并且使用写屏障(write barrier)。这就意味着,当Go程序员运行起来,go调度器去负责应用程序的调度,而垃圾回收器会像调度器处理常规应用程序一样,去使用多个goroutines去进行工作。 这个算法背后的核心思想是由Edsger W. Dijkstra,Leslie Lamport,A.J.Martin,C.S.Scholten和E.F.M.Steffens这些大佬提出的。算法首先发表在论文On...阅读全文

博文 2019-07-25 19:04:24 lucifer_L

超级干货:1元购《GO语言从入门到实战》

超级干货:1元购《GO语言从入门到实战》 Go 语言越来越重要了,很多云计算公司都是逢 Go 必招。而且 Go 语言在排行榜上上升势头最猛。基于此极客时间又推出了《 Go 语言从入门到实战》相关课程。 课程的作者是蔡超,人长的不仅帅,内容讲的也非常的给力。这套课程一共 45 讲,最重要的是大家喜爱的视频教程。 蔡超是谁? 能在 QCon 上做演讲的嘉宾,绝对一肚子干货。蔡超有 15 年的软件开发经验,曾在亚马逊(中国)、惠普等世界级 IT 公司担任过首席软件架构师。目前在 Mobvista 担任技术副总裁兼首席架构师,带领团队用 Go 语言构建了国内最大同时也是全球排名前十的移动广告平台,这个平台每天处理着来自世界各地的超过 500 亿次请求,在 Go 语言实现项目上有着丰富的经验。 课程能...阅读全文

博文 2019-09-04 10:32:48 乖儿子

Java-100天知识进阶-基本类型-知识铺(一)

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停地来唤醒你记忆深处的知识点。 Java的两大数据类型: 一、内置数据类型 二、引用数据类型 内置数据类型 Java语言提供了八种基本类型。 byte: short: int: long: float: double: boolean: char: 本文由zshipu.com学习笔记或整理或转载,如有侵权请联系,必改之...阅读全文

博文 2019-11-15 15:02:41 知识铺

colly 自动抓取资讯

colly 在golang中的地位,比之scrapy在python的作用,都是爬虫界的大佬。本文用其抓取博文资讯, 从收集器实例配置,goQuery进行dom节点数据抓取,自动分页访问,到csv数据持久化,json控制台输出,全程简单直观。 Code 抓取数据入口为社区某用户博客列表页,比如 https://learnku.com/blog/pardon package main import ( "encoding/csv" "encoding/json" "log" "os" "regexp" "strconv" "strings" "github.com/gocolly/colly" ) // Article 抓取blog数据 type Article struct { ID int ...阅读全文

博文 2019-12-25 15:32:42 pardon110

Golang并发模型:轻松入门流水线FAN模式

前一篇文章《Golang并发模型:轻松入门流水线模型》,介绍了流水线模型的概念,这篇文章是流水线模型进阶,介绍FAN-IN和FAN-OUT,FAN模式可以让我们的流水线模型更好的利用Golang并发,提高软件性能。但FAN模式不一定是万能,不见得能提高程序的性能,甚至还不如普通的流水线。我们先介绍下FAN模式,再看看它怎么提升性能的,它是不是万能的。 这篇文章内容略多,本来打算分几次写的,但不如一次读完爽,所以干脆还是放一篇文章了,要是时间不充足,利用好碎片时间,可以每次看1个标题的内容。 FAN-IN和FAN-OUT模式 Golang的并发模式灵感来自现实世界,这些模式是通用的,毫无例外,FAN模式也是对当前世界的模仿。以汽车组装为例,汽车生产线上有个阶段是给小汽车装4个轮子,可以把这个阶...阅读全文

博文 2018-11-28 22:34:43 大彬

【go】继续go go go,ubuntu环境搭建及golang的依赖关系分析

这次是在ubuntu14.04 amd64上搭建go的编译环境,使用的IDE换成了sublime text,具体步骤参照的是 http://blog.csdn.net/aqiang912/article/details/46775409 ,我就不赘述了。 关于依赖分析,应该算是比较头疼的地方了。花了点时间看了语法,发现除了一些很不一样的地方比如类型放在变量后面等,其他大多跟C和java类似,很容易上手。 下面以一个小例子来说明golang是怎么import一个包的: 首先我们在自己的主目录下创建一个文件夹test,里面创建一个go文件,test.go,内容如下: package test import "fmt" func Test() { fmt.Printf("This is test-...阅读全文

博文 2016-07-01 02:00:00 puyangsky

Golang并发模型:轻松入门协程池

goroutine是非常轻量的,不会暂用太多资源,基本上有多少任务,我们可以开多少goroutine去处理。但有时候,我们还是想控制一下。 比如,我们有A、B两类工作,不想把太多资源花费在B类务上,而是花在A类任务上。对于A,我们可以来1个开一个goroutine去处理,对于B,我们可以使用一个协程池,协程池里有5个线程去处理B类任务,这样B消耗的资源就不会太多。 控制使用资源并不是协程池目的,使用协程池是为了更好并发、程序鲁棒性、容错性等。废话少说,快速入门协程池才是这篇文章的目的。 协程池指的是预先分配固定数量的goroutine处理相同的任务,和线程池是类似的,不同点是协程池中处理任务的是协程,线程池中处理任务的是线程。 最简单的协程池模型 简单协程池模型 上面这个图展示了最简单的协程...阅读全文

博文 2018-12-20 13:34:44 shitaibin

node.js与Swoole对比优劣势分析,终于有答案了!

今天咱们引用一篇韩大的文章,给大家讲下PHP高级并发的一个处理,还有一些跟node.js的比较,这个问题也是很多在用这两门语言一直在争执的,现在就来讲解下!多核并行node.js的event loop是单进程单线程的,只有一个epoll/kqueue事件轮询被执行。所以无法利用到多核的计算优势。 swoole的event loop是多线程的,是基于epoll/kqueue的Multi-Reactor模型。这点与nginx/golang相同。另外swoole的多线程Reactor之间不存在锁,这点与nginx不同。它启用了专门的accept线程,类似与JAVA的netty。所以在多核CPU的机器上,node.js对网络IO事件的处理能力绝对是要差swoole数倍的,在4核的机器上至少要查2-3...阅读全文

博文 2019-07-02 18:32:46 PHP大神进阶

【MMORPG开发日志01】技术选型及踩过的坑

写在前面 之前的序言发出来之后,很多热心小伙伴给我留言和私信,给我提供了各种各样的想法。让我产生了一些想法,所以重新思考开这个坑的目的。结合我自身的情况,理论结合实际。做一次更完善的技术选型。并且把这周来踩过的坑总结一下,希望能对后来的小伙伴有帮助。 这篇文章的视频版在这里: 【MMORPG开发日志】004复刻魔兽世界,KBEngine服务器框架选择,安装和启动! 交流QQ群:872537977 项目地址github:https://github.com/Liweimin0512/uRPG 不得不吐槽一下,视频形式的开发日志所要付出的时间真的比写文章多得多啊。 开发目的 我在上篇文章中说我做这个项目是为了蹭魔兽世界怀旧服的热度其实是开了个玩笑。 真实的原因是我想涉猎自己从未接触过的游戏服务器...阅读全文

博文 2019-10-10 01:32:44 aside section ._1OhGeD

Functional Go: Vector Trie 的实现

上一篇 文章介绍了多种实现函数式编程当中持久化数据结构的思路, 其中重点对 Vector Trie 这种数据结构的实现原理进行了解释。这一次我们就使用 Golang 来初步地实现这种数据结构。 这篇文章是系列文章的一部分,如果还没有浏览过文章的其它部分请参考: 持久化数据结构简介 Vector Trie 的实现 (本文) Transient 及持久化 首先我们来回顾一下 Vector Trie 的设计思路,为了代替 ArrayList 这种数据结构以及兼顾高性能的随机访问和内存使用, Vector Trie 主要采用了以下几种设计: 将 ArrayList 连续的地址空间切分成一段一段定长的数组 使用 Trie 树结构将这些分段组织起来 读取和写入的时候,利用 Trie 树检索的方法查找目标...阅读全文

博文 2017-09-26 22:35:58 meter

Go入门系列(十二)编译

目录 一、二进制编译 二、白帽子觉醒 三、Golang进阶 一、二进制编译 我们首先来明确一个问题,编译意味着什么? 脱离环境,脱离依赖运行! 我们知道,python也是可以编译的,但是需要借助第三方包来完成,但是在最新的python3中兼容极差,而且对系统的位数架构各种条件苛刻,即使如此,依然随时崩掉,各种缺包。我丢! Go语言的编译需要用到build方法: usage: go build [-o output] [-i] [build flags] [packages] 关于其跨平台编译,我们可以使用env方法查看系统当前环境变量。 C:\Users\Administrator\Desktop\gotest>go env set GO111MODULE= set GOARCH=amd64...阅读全文

博文 2020-03-20 05:32:51 RabbitMask

一招教你无阻塞读写Golang channel

无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,教你一招再也不遇到channel阻塞的问题。 这篇文章会介绍,哪些情况会存在阻塞,以及如何使用select解决阻塞。 阻塞场景 阻塞场景共4个,有缓存和无缓冲各2个。 无缓冲通道的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景: 通道中无数据,但执行读通道。 通道中无数据,向通道写数据,但无协程读取。 // 场景1 func ReadNoDataFromNoBufCh() { noBufCh := make(chan int) <-noBufCh fmt.Println("read from no buffer channel success") // Output: // fatal error: all goroutines ...阅读全文

博文 2018-11-16 13:34:40 大彬

2019最新web前端学习路线:前端从初级入门到入坟到高级进阶

2019最新web前端学习路线:从初级入门到入坟到高级进阶 我的前端学习路线-从初级入门到高级架构 初中级阶段 一、前端基础阶段 HTML CSS JavaScript DOM BOM 二、前端中级阶段 HTML5 CSS3 bootstarp Canvas JQuery 三、后台技术阶段 Node.js MongoDB Koa EJS 四、前后端交互 五、JavaScript 六、前端新型WEB框架 七、跨平台开发 高级阶段 1、JavaScript进阶攻略 高级特性 JQuery设计理念源码研究 Underscpre设计理念源码研究 seajs模块加载器源码研究 2、前端工程化,现代前端框架设计 前端单页应用Vue框架设计 前端单页应用react框架设计 webpack前端工程化 3、移...阅读全文

博文 2019-09-10 22:26:26 Javagaoji