【Go】我与sync.Once的爱恨纠缠

原文链接: https://blog.thinkeridea.com/202101/go/exsync/once.html官方描述 Once is an object that will perform exactly one action, 即 Once 是一个对象,它提供了保证某个动作只被执行一次功能,最典型的场景就是单例模式,Once 可用于任何符合 "exactly once" 语义的场景。sync.Once 的用法在多数情况下,sync.Once 被用于控制变量的初始化,这个变量的读写...阅读全文

Segmentfault 2021-01-06 08:32:33 thinkeridea

Golang之微服务为什么发现不了

李乐问题引入  2020-12-25日晚,突然接收到少量错误日志报警『failed to dial server: dial tcp xxxx:yy: i/o timeout』。原来是微服务客户端请求服务端,连接失败。  简单介绍下服务现状:我们的服务部署在k8s环境,微服务框架我们使用的是smallnest/rpcx,注册中心基于zookeeper,链路如下图所示:第一步:这些连接超时的pod(一个pod相当于一台虚拟机)是有什么异常吗?根据连接超时的IP地址查找对应的pod,发现没有一个po...阅读全文

Segmentfault 2021-01-05 23:32:33 LNMPR源码研究

new year resolution for 2020

2020真是最惨的一年,用无所事事形容真不为过但是resolution该写还是得写:接去年,2019年末,我住在Leeds的Saile和Reo家度过了后半段的圣诞,有了Reo天天都能吃上米饭,那几天真的很幸福。离开Leeds去火车站的路上,默默地哭,一个是因为离开朋友温暖的家,一个是因为离开Leeds,我不知道下次见到他们是什么时候。 chopstick master——Saile 2019年12月31日夜-2020年1月1日:伦敦烟花 伦敦烟花 2020年1月1日:伦敦新年游行 紧接着是疫情的...阅读全文

简书 2021-01-01 08:33:03 相茵

2020。

2020年最后一天的最后一个小时了,还是来随便写两句吧。 技术/工作 有幸见证了我司业务的急速扩张,当然也全程参与了大数据架构的迭代与演进过程,特别是主导了实时数仓体系的建设。累,但收获颇丰,非常值得。 Flink已经成为流式计算的事实标准,新特性层出不穷,越来越强大;Zeppelin为SQL任务平台化提供了巨大的便利;ClickHouse、TiDB分别在特定领域的OLAP、HTAP方面发光发热。开源领域永无止境,投身其中令人甘之如饴。 最近为风控系统添砖加瓦,顺便学习了Golang,对于笔者这...阅读全文

简书 2021-01-01 00:32:41 LittleMagic

gin的一个标准化返回工具

大家在用gin的写服务的时候多多少少会遇到一些需要频繁处理响应的格式、错误、翻译的问题,这里给大家推荐一个非常干净高效的格式化工具。 [github地址](https://github.com/sleagon/ginfmt) 这玩意很简单,代码不超过200行,没有用任何反射,除了gin本身没有以来任何标准库的包,理论上可以兼容任何版本的gin。 它实现的功能如下: 1. 所有的响应都是格式化的code/message/data。 2. 所有的错误都按级别打印好了,可以自...阅读全文

Go语言中文网 2020-12-31 23:39:19 sleagon

2020年终总结

序 不知不觉2020年就要过去了,又到了写总结的时候。往年贴了好多文章的索引,也立了好多flag,今年就不贴索引了,简单做下回顾。 盘点 技术研究 chronos、artemis研究 skywalking研究 canal、mysql-binlog-connector-java、maxwell、debezium、rocketmq-mysql、SpinalTap、puma、Otter、kingbus研究 nacos-sdk-go、rocketmq-client-go、dubbo-go、claudb研...阅读全文

理解 Go 语言中的字符串和字节数组

最近在学习Go 语言时,遇到一个很有意思的问题,记录一下。第一次使用redisgo 时,有点懵,怎么取出来的数据跟我存的完全不一样?package main import ( "fmt" "github.com/gomodule/redigo/redis" ) func main() { conn, _ := redis.Dial("tcp", "127.0.0.1:6379") defer conn.Close() conn.Send("SET", "hello", "hello") conn...阅读全文

Segmentfault 2021-01-05 17:32:32 0xBoo

「对比Python学习Go」- 高级数据结构下篇

本篇是「对比 Python 学习 Go」系列的第四篇,本篇文章我们来看下 Go 的高级数据结构,因文章偏长分为两篇,此为下篇。本系列的其他文章可到 「对比 Python 学习 Go」- 开篇 查看,下面我们开始今天的分享。上篇说道,Go和Python的数据结构可分为类数组和哈希结构。本篇我们来看下哈希结构相关的类型。哈希结构哈希结构又叫做散列表(hash table),它是数组的一种扩展。它通过散列函数把元素的键值映射为数组的下标,然后将数据存储在数组中对应下标的位置。当我们按照键值查询元素时,...阅读全文

Segmentfault 2021-01-05 12:32:35 DeanWu

java 自动装箱与拆箱

这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆:java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱);其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例://声明一个Integer对象 Integer num = 10; //以上的声明就是用到了自动的装箱:解析为 Integer num = new Intege...阅读全文

Segmentfault 2020-12-31 14:32:41 廖111

如何读取yaml,json,ini等配置文件【Golang 入门系列九】

本文转载自如何读取yaml,json,ini等配置文件【Golang 入门系列九】 前面已经讲过一些Go语言的基础知识,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。 实际项目中,还有一个比较重要的基础功能,就是读取相关的配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。 一. go读取json配置文件 JSON 应该比较熟悉,它是一种轻量级的数据交...阅读全文

简书 2020-12-31 02:32:42 雪域迷影

基于redisgo的redis客户端的封装示例

redisgo包 redisgo是一款go语言的redis客户端库。 为了简化对redis的操作,可以使用redisgo对redis常用命令进行封装。 首先在Github上面创建一个仓库redisgoExample 然后git clone将项目克隆到本地,比如说我的阿里云CentOS8服务器下, git clone https://github.com/ccf19881030/redisgoExample.git 如下图所示: 克隆redisgoExample 当然运行go项目的前提是需要安装g...阅读全文

简书 2020-12-31 02:32:40 雪域迷影

Kafka基本架构和命令

原文地址:https://github.com/WilburXu/b...Kafka体系架构Broker服务代理节点服务代理节点。对于Kafka而言,Broker可以简单地看作一个独立的Kafka服务节点或Kafka服务实例。大多数情况下也可以将Broker看作一台Kafka服务器,前提是这台服务器上只部署了一个Kafka实例,一个或多个Broker组成了一个Kafka集群。Producer和ConsumerProducer生产者生产者,也就是发送消息的一方。生产者负责创建消息,然后将其投递到K...阅读全文

Segmentfault 2021-01-05 12:32:34 WilburXu

GO内网穿透,可以让全世界访问家用电脑里的网站。

GO内网穿透,可以让全世界访问家用电脑里的网站。特点:基于go开发。在这里: 有时间学学~... ...技术框架GO一:原理及使用方法原理:client运行在家用电脑,内装有自己的网站。user为访问网站的浏览器。 使用方法:1、配置好go语言环境2、把server.go上传到公网服务器上。运行例子:go run server.go -localPort 3002 -remotePort 20012(如下图) localPort端口为用户访问的端口,remotePort端口为与client通讯的...阅读全文

51CTO博客 2020-12-30 10:21:25 mb5fe5608dce902

用Go语言做极简风格网址导航

之前一直使用百度自带的网址导航,但是最近发现不能添加类别目录了。所以想找个差不多的导航网址,一直没有找到。 要么是各种弹广告,要么是不能自己添加网址。于是乎,就想自己做一个。 我也不知道有多少人跟我一样喜欢用网址导航,这里就介绍一下怎么样来用Go语言做一个极简风格的网址导航。需要的可以直接拿走使用。 源代码:https://gitee.com/fcsvr/navi 1.目录结构 目录下面主要的文件就是css,img,js,index.html,navi.go css,img,js这三个目录就是w...阅读全文

51CTO博客 2020-12-29 22:48:38 马哥教育