QQ机器人插件开发实践(一)

平台选择:酷Q 使用此平台的原因是个人觉得易用性、稳定性方面要比其他平台好一些。 开发语言:Go,其他其他平台可参考社区 环境准备 从社区发布板块下载最新的平台软件,我的安装路径(C:\酷Q Air)为例 GCC编译环境搭建(有的话可忽略) 下载GCC编译器,如链接失效则点此中并安装,我的安装路径(C:\TDM-GCC-64)为例 将GCC的bin目录添加到环境变量(我的是C:\TDM-GCC-64\bin) 最后使用cmd 验证有效即可 gcc -v 截图参考: 项目搭建 打开CoolQ Go...阅读全文

简书 2020-07-08 16:35:28 Gophers

[golang]几种字符串拼接方式的性能测试

通过 https://www.cnblogs.com/vinsent/p/11281777.html页面,可以看到golang用来完成字符串拼接的几种常用方式。这里测试下几个方式性能上的区别。 1:运算符+方式 2: fmt.Sprint 3: strings.Join 4: strings.Builder bytes.Buffer 这两个方式差不多 这里检测下以上4中类型的效率。测试代码如下 import ( "fmt" "strings" "testing" ) var msg = "htt...阅读全文

简书 2020-07-08 16:32:56 bakepotato

[Golang实现JVM第五篇]静态方法调用的实现

一直以来又长又臭的调用链简直就是Java语言的标志性特色,方法调用可谓是Java世界里表达一切逻辑的基石。现在我们终于具备了实现它的基础。 JVM中的5条方法调用指令 在JVM中触发方法调用的指令有5条,分别是: invokestatic 调用静态方法 invokespecial 调用构造方法 invokeinterface 调用接口方法 invokevirtual 调用对象方法 invokedynamic jdk1.7中引入,给动态语言预留的调用指令。指令的第一个参数不再是代表方法符号引用的C...阅读全文

简书 2020-07-08 16:32:56 司青玄

golang之MGP模型

操作系统会在物理处理器上调度线程来运行,而 Go 语言的运行时会在逻辑处理器上调度goroutine来运行。每个逻辑处理器都分别绑定到单个操作系统线程。在 1.5 版本以上, Go语言的运行时默认会为每个可用的物理处理器分配一个逻辑处理器。在 1.5 版本之前的版本中, 默认给整个应用程序只分配一个逻辑处理器。这些逻辑处理器会用于执行所有被创建的goroutine。即便只有一个逻辑处理器, Go也可以以神奇的效率和性能,并发调度无数个goroutine。 在图 1中,可以看到操作系统线程、逻辑处...阅读全文

简书 2020-07-08 16:32:56 stevenyeahnet

如何进入编程的大门

想学编程的童鞋们注意了有些同学想学软件编程,可是因为完全没有接触过,所以很迷茫,不知道该怎么学该学什么。今天小豆给大家带来一波实力的分析啊(只适合大部分人并不是所有人都和我说的一样)首先年龄事一方面,30岁以后的本事不是数学专业或者计算机专业的本科硕士,就不太建议学习了,原因就是纯粹的年龄不合适,你要是单纯的爱好也无所谓。其次。学历真的是一个门槛。专科建议从前端或者测试做起,工作好找一些,本科非计算机数学专业的建议学学Python那个简单点。计算机专业得老老实实复习复习java吧。确实比Pyth...阅读全文

简书 2020-07-08 13:32:58 A一条金鱼

golang的闭包和普通函数调用区别

https://www.cnblogs.com/ralap7/p/9195677.html这篇文章讲的精辟1、在Go的for…range循环中,Go始终使用值拷贝的方式代替被遍历的元素本身,简单来说,就是for…range中那个value,是一个值拷贝,而不是元素本身。也是说value是个局部变量,只是把元素赋值给该变量而已。2、闭包里的非传递参数外部变量值是传引用的,也就是闭包是地址引用。在闭包函数里那个value就是外部非闭包函数自己的参数,所以是相当于引用了外部的变量。有了以上两点的理解,...阅读全文

简书 2020-07-08 13:32:57 零知识

golang map底层原理

映射是一个集合,可以使用类似处理数组和切片的方式迭代映射中的元素。但映射是无序的集合,意味着没有办法预测键值对被返回的顺序。即便使用同样的顺序保存键值对,每次迭代映射的时候顺序也可能不一样。无序的原因是映射的实现使用了散列表。go语言中的map采用的是哈希查找表,由一个key通过哈希函数得到哈希值,64位系统中就生成一个64bit的哈希值,由这个哈希值将key对应到不同的桶(bucket)中,当有多个哈希映射到相同的的桶中时,使用链表解决哈希冲突。 hash函数 golang中的map使用has...阅读全文

简书 2020-07-08 13:32:57 stevenyeahnet

???????? MareWood 一个前端部署工具,主要特点是足够简单漂亮和轻量级

> MareWood 是一个轻量级的前端部署工具,使用了 GOLANG、GIN、GORM、SQLITE、JWT、REACT、MATERIAL-UI 开发, 不同于 Jenkins 的大而全,它很简单且只针对前端,你可以很灵活的配置各种部署环境。 如果你愿意,线上发布也可以是点击一下按钮这么简单的事情,当然也可以配置 WEBHOOK,提交 GIT 代码既自动发布。 开源地址:[https://github.com/xusenlin/MareWood](https://github.com/x...阅读全文

Go语言中文网 2020-07-08 12:33:31 xusenlin

mysql数据实时同步到Elasticsearch注意事项

网上有很多推荐mysql数据同步到Elasticsearch的方案,有大哥canal,python的mysqlsmom,还有go的go-mysql-elasticsearch,在我自己项目中用的是go-mysql-elasticsearch,给大家随便讲讲我遇到的一些小问题,先看看官方提到的注意事项。 ES的版本 关于ES的版本官方支持为 MySQL supported version < 8.0 ES supported version < 6.0 我的ES当前版本在7.7.0下运行依然运行成...阅读全文

Segmentfault 2020-07-15 20:32:33 4k显示器电竞鼠标

听说go语言越来越火了?那么请收下这一份go语言书单吧!

关注公众号【程序员书单】后回复“book”即可领取30+精品免费电子书 ​ Go 是一种简单、小巧、令人愉悦的语言。它也有一些犄角旮旯,但绝大部分是经过精心设计的。它的学习速度令人难以置信,并且规避了其他语言中一些不那么广为人知的特性。 现如今越来越多的互联网公司开始使用go语言,有的初创公司开始使用go语言打造基础架构,而知乎这样的公司也基本上踏上了go语言的路子,或许,未来的互联网公司会越来越多地使用golang,那么,你想学习一下这门未来的语言么,今天就来推荐一份go语言书单吧。 go语言...阅读全文

51CTO博客 2020-07-07 21:21:32 黄小斜

垃圾回收之写屏障

资料阅读 有两张不错的gif图(原子wikipedia) https://zhuanlan.zhihu.com/p/74853110 最先看的文章,引用了上面的文章 https://www.jianshu.com/p/4c5a303af470 在讨论 Go 的混合写屏障 https://github.com/changkun/go-under-the-hood/issues/20 解释了为啥有 read barrier https://www.zhihu.com/question/4287951...阅读全文

简书 2020-07-08 08:32:46 小小青蛙不怕风吹雨打

「译文」Go 语言内存管理与分配

内存管理与分配 原文:Memory Management and Allocation 本文基于Go1.13 当内存不被使用时,Go 标准库会自动执行 Go 内存管理,即将内存分配到内存收集器。因为开发人员不必处理它,所以 Go 对隐含的内存管理进行了很多的优化并且衍生了很多概念。 堆上的分配 内存管理旨在在并发环境中快速运行,并与垃圾回收器集成在一起。让我们从一个简单的示例开始: package main type smallStruct struct { a, b int64 c, d fl...阅读全文

掘金 2020年07月07日 starichat

golang嵌套分支之8秒决赛组(六)

package main import ( "fmt" ) func main() { //嵌套分支不要过多,最多不要超过三层 //参加百米运动会,如果用时 8 秒以内进入决赛,否则提示淘汰。 // 并且根据性别提示进入男子组或女子组。 输入成绩和性别。 // 分析思路 // 1.var second float64 // 2.根据性别嵌套分支区分进那个组 // 3.输入成绩和性别 var second float64 var gender string fmt.Printf("请输入时间(秒)...阅读全文

51CTO博客 2020-07-07 22:35:02 冷暖己知

听说go语言越来越火了?那么请收下这一份go语言书单吧!

关注公众号【程序员书单】后回复“book”即可领取30+精品免费电子书 ![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")​ Go 是一种简单、小巧、令人愉悦的语言。它也有一些犄角旮旯,但绝大部分是经过精心设计的。它的学习速度令人难以置信,并且规避了其他语言中一些不那么广为人知的特性。 现如今越来越多的互联网公司开始使用go语言,有的初创公司开始使用g...阅读全文

简书 2020-07-07 23:33:07 程序员黄小斜

使用 Golang 实现一个 JSON 命令行工具

首先先提一个问题,"abc" 、123 或者 [1, 2, 3] 是不是一个合法的 json ? 之前一直有在使用一个 json 的命令行工具 jq,这个工具是基于 flex 和 bison 来实现的(去了解这些是基于当年学习 php 的经历)。后来有段时间我又发现一个不错的词法和语法分析工具 antlr,它支持多种语言的生成,并且本身也提供了多种语言的基本语法文件。所以我就想能不用基于它实现一个 go 语言版的 json 命令行工具。 下面就开始一步一步行动吧(如果想直接看代码可以直接拉到底部...阅读全文

Segmentfault 2020-07-15 14:32:39 Scholer

golang time相关总结

前言 我们在php中对于时间操作主要是用时间戳和时间格式相互转换来计算,一般都是用时间戳进行计算,用时间格式进行展示,相对来说还是比较方便的。在golang中是有些区别的,主要是多了一个time对象,接下来我们来看一看 获取当前时间对象 在golang中,我们常用time.Now()来获取当前的时间 now := time.Now() //时间对象 fmt.Println(now) ****************** 打印结果 2020-07-07 11:12:48.795021 +0800 ...阅读全文

简书 2020-07-07 20:32:47 饭米粒_0ec3