leetcode_733

Golang: 思路:这题使用BFS,每找到一个元素,就染色,染完色后,下次就不会找到这个染过色的元素了。所以要注意一下,如果新染的颜色和原来一样,就不染了,直接返回即可。 代码如下: func floodFill(image [][]int, sr int, sc int, newColor int) [][]int { oldColor:=image[sr][sc] if newColor==oldColor{ return image } var stack [][]int stack=a...阅读全文

简书 2020-02-27 07:32:39 淳属虚构

leetcode_811

Golang: 思路:这题是字符串处理吧,没啥好说的,但是这里我的代码需要精简一下,Count函数那里,有多余的时间复杂度。 代码如下: func subdomainVisits(cpdomains []string) []string { mp:=make(map[string]int) for _,v:=range cpdomains{ flds:=strings.Fields(v) count,_:=strconv.Atoi(flds[0]) mp[flds[1]]+=count temp...阅读全文

简书 2020-02-27 07:32:39 淳属虚构

kcp的优势

传输数据上增加包头 ``` conv:连接号。UDP是无连接的,conv用于表示来自于哪个客户端。对连接的一种替代 cmd:命令字。如,IKCP_CMD_ACK确认命令,IKCP_CMD_WASK接收窗口大小询问命令,IKCP_CMD_WINS接收窗口大小告知命令, frg:分片,用户数据可能会被分成多个KCP包,发送出去 wnd:接收窗口大小,发送方的发送窗口不能超过接收方给出的数值 ts:时间序列 sn:序列号 una:下一个可接收的序列号。其实就是确认号,收到sn=10的包...阅读全文

Go语言中文网 2020-02-26 17:41:42 lwcbest

源码分析nats request reply的设计实现

前言: Golang nats mq是一个基于golang实现的高性能消息队列,nats也被cncf纳入到云原生计算基金会。据我所知,nats mq貌似在gopher里很有名气,但别的语言系的朋友不关注这个。 我用nats也有段时间了,你问我这个nats好用否? 我只能说比我以前用的go nsq性能高且可用性强,加入stream后,可信赖数据可靠性。如果再详细的介绍,大家就看nats的官网文档吧。 该文章后续仍在不断的更新修改中, 请移步到原文地址 http://xiaorui.cc/?p=56...阅读全文

峰云就她了 2019年1月19日 rfyiamcool

开源golang兼容crontab的定时任务管理器

前言: 业务越来越复杂,有太多太多的定时任务需要管理,如事务检查,风控扫描,报表,日报等等。这些任务本身都是golang写的,所以需要一个基于golang开发的定时管理器。 如果只是需要定时器管理,我们可以直接用timer或者ticker,甚至自己用minHeap来实现。但传统的时间格式表现力一般,比如我需要每个周一和周三的上午来报表输出?所以需要crontab格式的支持。 该文章后续仍在不断的更新修改中, 请移步到原文地址 http://xiaorui.cc/?p=5625 在github里,...阅读全文

峰云就她了 2019年1月6日 rfyiamcool

golang多场景下RwMutex和mutex锁性能对比

前言: 测试golang锁的性能是个无聊的事情,说下缘由吧,前两天朋友问我如果要对一个slice进行线程安全的读写操作,需要读写锁还是互斥锁,哪个性能高一点? Rwmutex在什么场景下会比mutex性能要好? 在我看来lock和unlock之间,在没有io逻辑,没有复杂的计算逻辑下,mutex互斥锁要比rwlock读写锁更加的高效。 像社区里rwlock读写锁的设计实现有好几种,大多是抽象两把lock和reader计数器实现。 该文章后续仍在不断的更新修改中, 请移步到原文地址 http://...阅读全文

峰云就她了 2018年12月19日 rfyiamcool

Go关键字defer的特性

Go里面,流程控制语句中有一个defer的关键字,翻译过来就是延迟的意思。下面用代码说话。 func deferFunc() { defer fmt.Println("后打印") fmt.Println("先打印") } defer在函数执行完毕之后,才会执行,所以,我们经常在释放资源或异常处理等需要收尾的场景下会用到defer。 不过defer也有一些“坑”,大家需要注意一下。 func printNumbers() { for i := 0; i < 5; i++ { defer func(...阅读全文

Segmentfault 2020-02-29 21:32:33 iuoui

Go 并发模式

基本概念 了解并发和并行 并发:强调一段时间做多件事 并行:强调同一时间做多件事 CSP vs Actor 模型 Actor Actor 模型是一个通用的并发编程模型,可以应用在几乎任何一种编程语言中,典型的是 Erlang。多个 actor(进程) 可以同时运行、不共享状态、通过向与进程绑定的消息队列(也称为信箱)异步发送消息来进行通信。 actor-1 与 actor-2 进程通信依赖一个消息队列,而且消息队列与进程互相耦合绑定。actor-1 在发送完消息之后,在 actor-2 没有处理...阅读全文

掘金 2020年02月26日 咔叽咔叽

小浩算法|一文让你学会如何用代码判断"24"点

“24点”是一种数学游戏,正如象棋、围棋一样是一种人们喜闻乐见的娱乐活动。它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受。今天就为大家分享一道关于“24点”的算法题目。 话不多说,直接看题。 题目:你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。 示例 1:输入: [4, 1, 8, 7] 输出: True 解释: (8-4) * (7-1) = 24 示例 2: 输入: [1, 2, 1, 2]...阅读全文

Segmentfault 2020-02-29 19:32:32 宜信技术学院

go mod

[TOC] docs go modules wiki go modules quick start 中文文档 go mod migrations: enable go modules 主要有以下两种方式: GO111MODULE=on 把工程移出$GOPATH/src 创建go.mod 文件: go mod init github.com/cdz620/xxx 编译:go build vendor —> mod: go mod -vendor 复制vendor下的目录到$GOPATH/pkg/m...阅读全文

简书 2020-02-26 09:32:41 cdz620

微信用户加密数据解密 -golang版本

背景 因为小程序先前端获取的用户数据的openId和UnionId属于用户隐私数据,需要进行对用户加密数据进行解密才能获取,官方提供的有解密demo有php,python,C++等语言版本的,但是没有golang版本,所以今天写下博客,写下golang版的解密。 加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和 unionId),接口的明文内容将不包含这些敏感数据。开发者如需要获取敏感数据,需要对接口返回的加密数据(encryptedData) 进行...阅读全文

51CTO博客 2020-02-25 18:11:16 阿泽Aze

leetcode_208

Golang: 思路:这题是为了解决720题所预先做的准备,前缀树这个结构,大家去看看leetcode在这题的官方题解就知道了 代码如下: type Trie struct { ending bool next [26]*Trie } /** Initialize your data structure here. */ func Constructor() Trie { return Trie{} } /** Inserts a word into the trie. */ func (thi...阅读全文

简书 2020-02-25 22:33:25 淳属虚构

EMQ百万级MQTT消息服务(TLS Docker Golang)

在这里插入图片描述 附上: 喵了个咪的博客:w-blog.cn EMQ官方地址:http://emqtt.com/ EMQ中文文档:http://emqtt.com/docs/v2/guide.html 1.TLS证书验证 为了保障安全.我们常常会使用HTTPS来保障请求不被篡改,作为MQTT使用TLS加密的方式来保障传输安全 EMQ默认使用的TLS加密的端口是8883端口,默认证书在EMQ目录下etc/certs: 对应的配置文件在emq.conf中,可以修改你的端口和配置文件路径 liste...阅读全文

简书 2020-02-25 22:33:25 文振熙

Golang的协程调度器原理及GMP设计思想?

一、Golang“调度器”的由来? (1) 单进程时代不需要调度器 我们知道,一切的软件都是跑在操作系统上,真正用来干活(计算)的是CPU。早期的操作系统每个程序就是一个进程,知道一个程序运行完,才能进行下一个进程,就是“单进程时代” 一切的程序只能串行发生。 5-单进程操作系统.png 早期的单进程操作系统,面临2个问题: 1.单一的执行流程,计算机只能一个任务一个任务处理。 2.进程阻塞所带来的CPU时间浪费。 那么能不能有多个进程来宏观一起来执行多个任务呢? 后来操作系统就具有了最早的并发...阅读全文

简书 2020-02-25 22:33:23 刘丹冰Aceld

golang 解析html时把url转绝对路径

golang 解析html时把url转绝对路径 在golang解析html时,常遇到img、a标签的资源地址为相对路径[../,./]的情况,这时就需要一个方法把这些地址转换为绝对路径。 // 返回url的绝对地址 // currUrl 当前url func absUrl(currUrl, baseUrl string) string { urlInfo, err := url.Parse(currUrl) if err != nil { return "" } if urlInfo.Schem...阅读全文

简书 2020-02-25 22:32:52 _老七

企业级区块链实战课程(第四版)

虽然各地已经逐渐开始复工复业,不过疫情形势依然非常严峻。虽然健康非常重要,但工作也同样重要。待在家里,我也没闲着。前一段时间完成了《企业级区块链实战课程》初稿编写。最近一直在修改,目前已经到了第四版,感觉还可以更好。下面是第四版教程部分更新内容。1、区块链技术理论这部分内容主要参照的是《大话区块链》,后面有时间会进行进一步优化。初步想法是加入一些更有技术深度的内容。 2、区块链开发实战预备知识 这部分内容相对比较成熟,修改余地不大,只是做了部分文字润色。3、Hyperledger Fabric架...阅读全文

简书 2020-02-25 22:32:52 应平与你说未来

docker 搭建nsq集群

nsq简介 nsq是go实现的高性能消息队列,部署相当简单。 一.搭建nsq集群 1.拉取docker镜像 docker pull nsqio/nsq #拉取nsq镜像 docker images #查看镜像 2.启动nsqlookup服务 docker run -d --name nsqlookupd -p 4160:4160 -p 4161:4161 nsqio/nsq /nsqlookupd 3.启动两个nsqd节点服务 nsqd是nsq里面保存数据的服务 在服务器192.168.6.10...阅读全文

简书 2020-02-25 22:32:44 疯狂的小蚂蚁go

我的后台Java面经(阿里、腾讯、头条、京东、IBM等)

# 简介经过招聘季每个人都会有相当多的面试经历,对我来说把这些写出来一方面是为了学习,另外一方面也希望能够为之后求职的同学提供一定的借鉴意义我的笔试经历会把主要记得的题目列出来我的面试经历详细介绍了以下几点面试岗位面试体验:这个有主观成分,但也能从我个人的侧面去反映公司是如何对待招聘的,请记住“面试者也是面试官,反之亦然”面试问题:在面试过程中被面试官提问的问题拉勾offer工厂2017资料,是当时拉勾做的一系列沙龙活动,其中ppt提到的面试问题很有参考价值,故而放到其中我面试的岗位主要是后台开...阅读全文

简书 2020-02-25 22:32:44 编程的程序员

Go语言之禅

本文翻译自Go社区知名Gopher和博主Dave Cheney的文章《The Zen of Go》。 本文来自我在GopherCon Israel 2020上的演讲。文章很长:) 如果您希望阅读精简版,请移步到the-zen-of-go.netlify.com。 该演讲视频还未上线。如上线,我会把它更新到本文中的。 我应该如何编写出好代码? 我最近一直在思考很多事情,每当反思自己的工作成果时,眼前常会出现一行字幕:我该如何编写出好代码? 主观上,没人愿意去编写糟糕的代码,那么问题来了:你是怎么知...阅读全文

Tony Bai 二月 24, 2020 bigwhite