golang模版方式构造struct赋值

直接上git地址:https://github.com/pkgng/structorhttps://github.com/pkgng/copit第二个是简单相同名字字段copy的库,也可以定义字段计算方法,但是只支持接受一个字段。第一个链接是通过struct Tag自定义字段计算方法的,语法是javaScrip,非常好用。记得给作者Star 哦!Demo 源代码:```package mainimport ( "encoding/json" "fmt" "github.com/pkgng/str...阅读全文

简书 2020-06-22 18:32:48 紫气迷城

Golang面试题:二叉树的最大深度

问题:求二叉树的最大深度 给定一个二叉树,返回其最大深度。 示例: 1 / \ 2 3 / \ / \ 4 5 6 7 返回最大深度为3 解题思路 利用深度优先或者广度优先遍历二叉树,找到树的最大深度。 二叉树的结构体 type TreeNode struct { left *TreeNode // 左子节点 right *TreeNode // 右子节点 value int // 值 } 深度优先搜索 主要思路 1.深度优先搜索和二叉树的前序遍历比较类似。 2.利用递归的方式不停下探树的深度。...阅读全文

简书 2020-06-22 18:32:47 ppmoon

fixedlist定长数据列表

## 说明 fixedlist 提供定长列表,初始化时定义好长度,add()负责向尾部添加数据,当数据达到指定长度时,fixedlist会自动删除头部数据。 该场景常用于统计最近X时间的数据,比如最近60秒内每秒的请求量,只需把每秒的统计数据顺序add即可。 ## 安装 ``` go get github.com/go-basic/fixedlist ``` ## 使用 ``` package main import ( "fmt" "github.com/g...阅读全文

Go语言中文网 2020-06-22 17:03:59 rushui

Go 每日一库之 negroni

简介 negroni是一个专注于 HTTP 中间件的库。它小巧,无侵入,鼓励使用标准库net/http的处理器(Handler)。本文就来介绍一下这个库。 为什么要使用中间件?有一些逻辑代码,如统计、日志、调试等,每一个处理器中都需要,如果一个个去添加太繁琐了、容易出错、容易遗漏。如果我们要统计处理器耗时,可以在每个处理器中添加代码统计耗时: package main import ( "fmt" "net/http" "time" ) func index(w http.ResponseWri...阅读全文

掘金 2020年06月22日 darjun

Win10系统下搭建Go lang开发环境更换国内源并且体验宇宙最快框架Iris

原文转载自「刘悦的技术博客」v3u.cn/a_id_156 最近有同学开始尝试接触Go lang,拥抱新技术永远都会是一个好习惯,之前的一篇文章介绍了如何在Mac os系统下配置Go lang开发环境,这次我们在Win10系统下进行配置,并且更换国内的安装源,最后再和“全宇宙最快的web框架”--Iris亲密接触一下,对于Iris可能很多朋友并不熟悉,一般Go lang在web开发领域相对著名的框架比如Beego或者Gin都名声在外,这里推荐Iris的原因也并不是因为它源于古希腊女神(彩虹女神)...阅读全文

掘金 2020年06月22日 刘悦的技术博客

Golang简易入门教程——面向对象篇

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第9篇文章,我们一起来看看golang当中的面向对象的部分。 在现在高级语言当中,面向对象几乎是不可或缺也是一门语言最重要的部分之一。golang作为一门刚刚诞生十年的新兴语言自然是支持面向对象的,但是golang当中面向对象的概念和特性与我们之前熟悉的大部分语言都不尽相同。比如Java、Python等,相比之下, golang这个部分的设计非常得简洁和优雅(仁者见仁),所以即使你之前没有系统地了解过面向对象,也...阅读全文

掘金 2020年06月22日 承志

ARTS 第6周 | 迭代法后序遍历二叉树 | 重读 Effective Go | 刷题的拐点

ARTS ARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。 每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。 本周内容 本周的 ARTS 你将看到: 迭代的方式实现二叉树的后序遍历 重读 Go 官方的 Effective Go 解算法题能力的第一个拐点 Algorithm 这周的算法题是迭代后序遍历二叉树。 遍历二叉树可能是你能...阅读全文

Segmentfault 2020-06-29 10:32:34 casmo澎湃哥

kafka元数据在zookeeper中的存储分布

我们都知道,自从Kafka诞生之际,就一直使用Zookeeper服务来进行kafka集群的元数据和状态管理,虽然在KIP-500中有提议未来将移除Zookeeper的依赖,使用Raft协议来实现新的元数据和状态管理,但在这之前,我们仍然需要对kafka集群的整个元数据和状态有一定理解,才能更好的维护和保障kafka集群。 前言 在kafka集群中,ZooKeeper集群用于存放集群元数据、成员管理、Controller 选举,以及其他一些管理类任务。 存放元数据: 是指主题分区的所有数据都保存在...阅读全文

Go 每日一库之 negroni

简介 negroni是一个专注于 HTTP 中间件的库。它小巧,无侵入,鼓励使用标准库net/http的处理器(Handler)。本文就来介绍一下这个库。 为什么要使用中间件?有一些逻辑代码,如统计、日志、调试等,每一个处理器中都需要,如果一个个去添加太繁琐了、容易出错、容易遗漏。如果我们要统计处理器耗时,可以在每个处理器中添加代码统计耗时: package main import ( "fmt" "net/http" "time" ) func index(w http.ResponseWri...阅读全文

Segmentfault 2020-06-29 09:33:00 darjun

04GORM源码解读

简介 查询 查询流程 构建查询 SQL 语句 条件语句 小结 search 结构体 search 的定义 search 的方法 小结 总结 简介 GORM 源码解读, 基于 v1.9.11 版本. 查询 上一节中, 我们已经探究过了模型是如何定义的, 以及数据表是如何创建的. 这次, 看一下查询是如何实现的. 查询涉及到很大的一块内容, 因为要支持各种类型的方法. 先看一下官方文档中提供的最简单的几个查询方法. // 根据主键查询第一条记录 db.First(&user) //// SELECT...阅读全文

掘金 2020年06月21日 帅气猫咪

golang面试题:对未初始化的的chan进行读写,会怎么样?为什么?

问题 对未初始化的的 chan 进行读写,会怎么样?为什么? 怎么答 读写未初始化的 chan 都会阻塞。 举例 1. 写未初始化的 chan package main // 写未初始化的chan func main() { var c chan int c <- 1 } 复制代码 // 输出结果 fatal error: all goroutines are asleep - deadlock! goroutine 1 [chan send (nil chan)]: main.main() /...阅读全文

掘金 2020年06月21日 9號同学

故障演练利器之ChaosBlade介绍

一、什么是ChaosBlade ChaosBlade是阿里巴巴在其自身故障测试和演练实践基础上,结合自身业务场景而开发的故障注入工具。 该工具目前已经开源,项目地址: https://github.com/chaosblade... 二、为什么需要故障演练 ChaosBlade是一款故障注入工具,是整个故障演练的一个小环节,那为什么要做故障演练呢? 在我看来,主要是为了验证在故障场景程序的可靠性和可用性,因为大部分人写代码都有惯性,只喜欢写正向流程,对于一些异常处理往往是非常简单和粗暴的,所以很...阅读全文

Segmentfault 2020-06-28 19:32:33 身不由己

docker编排部署多服务Web应用(python/fastapi, go/gin, nginx, mysql, redis)

本文是对我的博客项目的虚拟化部署思路设计与实践的记录,希望对大家使用容器编排部署多服务的应用有所启发。项目的地址在:项目地址: python/fastapi + golang/gin + Vue + docker 基于异步技术栈的个人博客系统 同时对该博客项目之前有几篇思路介绍性的文章供大家参阅:Python-FastAPI 使用asyncio生态圈开发异步博客(一)数据篇Python-FastAPI 基于asyncio异步生态开发异步博客(二)通信逻辑篇Python-FastAPI 异步框架开...阅读全文

Segmentfault 2020-06-28 14:32:36 LouisYZK

快速上手 dubbo-go

前言 每次技术调研总会发现自己学不动了怎么办?用已有的知识来拓展要学习的新知识就好了~ by LinkinStar 最近需要调研使用 dubbo,之前完全是 0 基础,对于 dubbo 只存在于听说,今天上手实战一把,告诉你如何快速用 go 上手 dubbo PS:以下的学习方式适用于很多新技术 基本概念 首先学习一个技术首先要看看它的整体架构和基本概念,每个技术都有着自己的名词解释和实现方式,如果文档齐全就简单很多。 http://dubbo.apache.org/zh-cn/docs/use...阅读全文

简书 2020-06-21 19:32:50 LinkinStar

golang领域模型-开篇

DDD是什么? 领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水道隔三差五就堵了?某一户跳闸了导致整个楼都停电了?那么盖楼前是否有好的方法论去建模呢?不论任何行业的工程设计都因该使用正确的方法论去设计。任何行业的方法论也离不开八个字 分而治之、拥抱变化。如果和城市的设计、建筑的设计相比较,我认为软件的设...阅读全文

简书 2020-06-21 19:32:49 八叉树

一个非侵入的Go事务管理库——工作原理

在上一篇文章“一个非侵入的Go事务管理库——如何使用”中,我讲述了如何使用事务库。有些读者可能读过"清晰架构(Clean Architecture)的Go微服务: 事物管理" ,其中描述了事务管理系统的旧版本。那篇文章和本文之间会有一些重叠。因为大多数人可能还没有读过那篇文章或者即使读了也忘记了它的内容。因此为了照顾多数读者,本文还是从头开始(假设你没有读过前文)。如果你读过,那你可以直接跳过熟悉的部分。 好的事务库对于使用它的应用程序是透明的。在Go的“sql”库中,有两种类型的数据库链接,“...阅读全文

Segmentfault 2020-06-28 13:32:35 倚天码农

一个非侵入的Go事务管理库——如何使用

在文章"清晰架构(Clean Architecture)的Go微服务: 事物管理"中,我谈到了如何在清晰架构中实现非侵入的事务管理。 它允许你把事务代码与业务逻辑代码分开,并且让你在编写业务逻辑时不必考虑事务。但它也有一些缺点。首先,它是整个清晰框架(Clean Architecture)的一部分,所以你不能抛开框架单独使用它。其次,尽管它对业务逻辑没有侵入,但它对框架有侵入。你需要修改框架的各个层,使其工作,这使他看起来比较复杂。 第三,正如我在文章中提到的,它存在一个依赖泄漏的漏洞。我虽然在...阅读全文

Segmentfault 2020-06-28 09:32:36 倚天码农