Golang领域模型-领域事件

前言: 在DDD中,一个业务用例对应一个事务,一个事务对应一个聚合根,在一次事务中,只能对一个聚合根进行操作。那么在复杂的业务场景涉及多个聚合根的修改,特别是许多聚合根处于不同的限界上下文中时,我们可以选择使用领域事件对其进行修改。 使用freedom,两行代码就让你轻松搞定领域事件! 一、DomainEvent 什么是领域事件 领域事件是领域驱动设计中的一个重要概念,我们使用领域事件来捕获领域中发生的一些事情。只有那些对业务有价值,能够有助于形成完整的业务闭环,能够推动下一步业务发展的事情,才...阅读全文

简书 2020-12-06 22:32:42 奔奔奔跑

Go 学习笔记 09 | Golang 结构体与 JSON 互相转换

一、Golang 结构体与 JSON 互相转换 JSON 是一种轻量级的数据交换格式。RESTful API 接口中返回的数据都是 JSON 数据。 JSON 基本格式: { key: value, } 结构体转 JSON 举例 package main import ( "fmt" "encoding/json" ) type Student struct { ID int Gender string Name string Sno string } func main() { var s1 ...阅读全文

简书 2020-12-06 22:32:41 Wonz

Go 学习笔记 10 | go mod 以及自定义包

一、go mod 以及 Golang 自定义包 go mod init 初始化项目 image 新建一个 demo 文件夹,在 demo 文件夹下新建 go.mod 文件和 main.go 文件,再在 demo 文件夹下新建一个 calc 文件夹,在 calc 文件夹下新建一个 calc.go 文件。 calc.go 代码: package calc // package 一定要放在最上面 func Add(x, y int) int { // 首字母大写表示公有方法 return x + y ...阅读全文

简书 2020-12-06 22:32:41 Wonz

如何处理好Golang中的panic和recover

题记 Go 语言自发布以来,一直以高性能、高并发著称。因为标准库提供了 http 包,即使刚学不久的程序员,也能轻松写出 http 服务程序。 不过,任何事情都有两面性。一门语言,有它值得骄傲的优点,也必定隐藏了不少坑。新手若不知道这些坑,很容易就会掉进坑里。《 Go 语言踩坑记》系列博文将以 Go 语言中的 panic 与 recover 开头,给大家介绍笔者踩过的各种坑,以及填坑方法。 初识 panic 和 recover panic panic 这个词,在英语中具有恐慌、恐慌的等意思。从字...阅读全文

简书 2020-12-06 22:32:40 臭小子_2dc9

golang 模板(template)的常用语法

模板 在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染。 这篇文章不讨论golang后端的模板读取及渲染方法,只讨论模板中嵌入变量,渲染变量、循环等一些基本用法。 变量 在golang渲染template的时候,可以接受一个interface{}类型的变量,我们在模板文件中可以读取变量内的值并渲染到模板里。 有两个常用的传入参数的类型。一个是struct,在模板内可以读取该struc...阅读全文

简书 2020-12-06 22:32:36 如水网

提速 72 倍,在 Python 里面调用 Golang 函数

我们知道,在涉及到大量 CPU 计算的时候,Python 的运行效率可能不如其他语言。在之前的一篇文章我们讲到了如何通过把 Python 代码编译成 C 语言代码来提高代码的运行速度。今天,我们不用 C 语言,而用 Go 语言。并且,我们这次不是做转换,而是直接用 Python 调用 Go 语言写的代码。今天的文章内容需要使用 Linux 和 macOS 系统实现。或者你也可以使用 Windows 10自带的 WSL2 Linux子系统。今天我们的测试代码还是递归版本的斐波那契数列计算函数,由于...阅读全文

51CTO博客 2020-12-06 16:31:32 涛哥聊python

Leaf—Segment分布式ID生成系统(Golang实现版本)

Leaf-Segment简介:今天直接开门见山,先来介绍一下我今天所带来的东西。没错,看标题想必大家已经想到了 —— Leaf-segment数据库获取ID方案。这个方案已经喜闻乐见了,美团早就进行了开源,不过他是由java来实现的,所以最近为了学习这一方面知识,我用go自己实现了一下,目前自己验证是没有发现什么bug,等待大家的检验,发现bug可及时反馈(提mr或加我vx都可)。代码已收录到我的个人仓库——[go-算法系列(go-algorithm)](https://github.com/a...阅读全文

Segmentfault 2020-12-08 10:32:35 asong

基于TCP长连接实现的带QOS的消息传输服务KTMT

# [github.com/eleztian/ktmt](https://github.com/eleztian/ktmt]) ## Feature - 支持断开重连 - 服务质量(Qos0/Qos1)最多一次/至少一次 - 双向的业务心跳 - 读写超时 ## 整体结构 - 应用层(业务协议) - 表示层(序列化) - 会话层(session 报文交互协议) 服务质量保证 - 连接层(tcp连接管理/keepalive)阅读全文

Go语言中文网 2020-12-06 16:19:28 eleztian

LeetCode-Golang之【3. 无重复字符的最长子串】

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 Golang题解 func lengthOfLongestSubstring(s string) int { // 哈希表用来判断字符是否重复 m :=map[byte]int{} n :=len(s) // 右指针 rk,ans := -1,0 for i:=0;i<n;i++{ // 左指针移动 if i !=0 { delete(m,s[i-1]) } // 右指针移动 for rk+1 < n && m[s[rk+1]] ...阅读全文

简书 2020-12-06 12:32:37 StevenChu1125

LeetCode-Golang之【70. 爬楼梯】

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? Golang题解 func climbStairs(n int) int { if n == 1 { return 1 } if n == 2 { return 2 } dp :=make([]int,n) dp[0] = 1 dp[1] = 2 for i:=2;i<n;i++{ dp[i] = dp[i-1] + dp[i-2] } return dp[n-1] }阅读全文

简书 2020-12-06 12:32:37 StevenChu1125

记一次go get安装hugo的坑、go module、goinstall、gobuild。

该文章的golang版本为go version go1.14.5 darwin/amd64心路历程1. 报错晚上本来想装个hugo玩玩,hugo提供了挺多安装方法比如最直接的二进制包安装、homebrew等包管理安装、docker,正好电脑里也有golang的环境,平时装go写的软件也很方便go get就解决了,自然而然想到go get -v github.com/gohugoio/hugo,看着控制台Download了半天最后竟然给我报了个错:package github.com/jdkato...阅读全文

Segmentfault 2020-12-08 10:32:34 JabinGP

fabric如何定制chaincode运行container

以golang语言chaincode为例子,当前golang chaincode是编译成一个叫chaincode的静态可执行文件,然后peer基于fabric-baseos为chaincode创建一个image,并把可执行文件chaincode打入新的image;然后在运行的时候使用root身份调用chaincode --peer.address=... 有些时候我们可能会有一些新的需求: 在调用chaincode可执行程序之前做些其他的额外工作,例如设置环境等等。 让chaincode运行在普...阅读全文

简书 2020-12-06 07:32:35 CodingCode

【go系列5】golang中的通道

golang中的通道类型是一种特殊的类型, 类型名字为chan。在任何时候,同时只有一个goroutine访问通道进行并发和获取数据,goroutine间通过通道就可以进行通信。我们可以通过go关键字创建goroutine。 通道本身是同步的,通道的发送和接受数据默认是同步的,且遵循先进先出的规则以保证数据发送的顺序。 通道分为双向通道和单向通道。 双向通道: chan1 := make(chan int, 10) 单向通道: #单向只写通道,10 表示通道的容量 chan2 := make(c...阅读全文

简书 2020-12-06 04:32:41 鸿乃江边鸟

The Go Memory Model(Go 内存模型)

原文链接The Go Memory Model Introduction G 内存模型指定了一些条件,保证了在一个goroutine中如何读取一个同时被其他goroutine写入的变量 Advice 如果程序要修改一个被多个goroutine访问的变量,此类访问必须被序列化。 为了序列了访问,我们可以采用channel操作或者使用sync或sync/atomic包下的同步原语来保护数据。 If you must read the rest of this document to understa...阅读全文

简书 2020-12-06 04:32:41 Lin_Shao

再见Python!我要学Go了!2500字深度分析!

大家好,我是菜鸟哥 周末了跟大家聊我最近的一些想法。编程语言的天下,自古就是适者生存。像是Java, C和Python等语言,都是历经大浪淘沙,顺应时代发展的强大的编程语言。而今天要和大家分享的go语言,也是顺应时代发展的强大编程语言,被称为取代Python的语言。 从2011-2019 可以看出Go语言的增长速度还是非常迅猛的。   1.什么是Go 语言 go语言,又被称为golang,是由谷歌开发的一种静态强类型、并发型的编译型语言,并且还具有垃圾回收功能。于2009年正式开源推出。什么是静...阅读全文

简书 2020-12-06 04:32:41 菜鸟学python