摘要: 一说起事务,你可能自然会联想到数据库。的确,我们日常使用事务的场景,绝大部分都是在操作数据库的时候。像MySQL、Oracle这些主流的关系型数据库,也都提供了完整的事务实现。那消息队列为什么也需要事务呢? 其实很多场景下,我们“发消息”这个过程,目的往往是通知另外一个系统或者模块去更新数据,消息队 阅读全文
posted @ 2021-09-08 23:35 brady-wang 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 这节课我们来学习消息队列中像队列、主题、分区等基础概念。这些基础的概念,就像我们学习一门编程语言中的基础语法一样,你只有搞清楚它们,才能进行后续的学习。 如果你研究过超过一种消息队列产品,你可能已经发现,每种消息队列都有自己的一套消息模型,像队列(Queue)、主题(Topic)或是分区(Parti 阅读全文
posted @ 2021-09-08 23:14 brady-wang 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 消息队列是最古老的中间件之一,从系统之间有通信需求开始,就自然产生了消息队列。但是给消息队列下一个准确的定义却不太容易。我们知道,消息队列的主要功能就是收发消息,但是它的作用不仅仅只是解决应用之间的通信问题这么简单。 我们举个例子说明一下消息队列的作用。话说小袁是一家巧克力作坊的老板,生产出美味的巧 阅读全文
posted @ 2021-09-08 23:13 brady-wang 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 这节课我们来聊一下几个比较常见的开源的消息队列中间件。如果你正在做消息队列技术选型,不知道该选择哪款消息队列,你一定要先听一下这节课的内容。 作为一个程序员,相信你一定听过“没有银弹”这个说法,这里面的银弹是指能轻松杀死狼人、用白银做的子弹,什么意思呢?我对这句话的理解是说,在软件工程中,不存在像“ 阅读全文
posted @ 2021-09-08 23:13 brady-wang 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 上一节课,我简单介绍了面向对象的一些基本概念和知识点,比如,什么是面向对象编程,什么是面向对象编程语言等等。其中,我们还提到,理解面向对象编程及面向对象编程语言的关键就是理解其四大特性:封装、抽象、继承、多态。不过,对于这四大特性,光知道它们的定义是不够的,我们还要知道每个特性存在的意义和目的,以及 阅读全文
posted @ 2021-09-08 22:59 brady-wang 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 考虑到各个水平层次的同学,并且保证专栏内容的系统性、全面性,我会循序渐进地讲解跟设计模式相关的所有内容。所以,专栏正文的第一个模块,我会讲一些设计原则、设计思想,比如,面向对象设计思想、经典设计原则以及重构相关的知识,为之后学习设计模式做铺垫。 在第一个模块中,我们又首先会讲到面向对象相关的理论知识 阅读全文
posted @ 2021-09-08 22:37 brady-wang 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 在上一节课中,我们讲到,要具备编写高质量代码的能力,你需要学习一些编程方法论,其中就包含面向对象(我们可以把它看成一种设计思想)、设计原则、设计模式、编程规范、重构技巧等。而我们整个专栏的内容也是围绕着这几块展开讲解的。所以,今天我就先来简单介绍一下这几个概念,并且说一说它们之间的联系。 今天的内容 阅读全文
posted @ 2021-09-08 22:32 brady-wang 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 前导内容:正确使用接口的基础知识 在Go语言的语境中,当我们在谈论“接口”的时候,一定指的是接口类型。因为接口类型与其他数据类型不同,它是没法被实例化的。 更具体地说,我们既不能通过调用new函数或make函数创建出一个接口类型的值,也无法用字面量来表示一个接口类型的值。 对于某一个接口类型来说,如 阅读全文
posted @ 2021-09-08 21:59 brady-wang 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,结构体类型表示的是实实在在的数据结构。一个结构体类型可以包含若干个字段,每个字段通常都需要有确切的名字和类型。 前导内容:结构体类型基础知识 当然了,结构体类型也可以不包含任何字段,这样并不是没有意义的,因为我们还可以为类型关联上一些方法,这里你可以把方法看做是函数的特殊版本。 函数是独 阅读全文
posted @ 2021-09-08 21:58 brady-wang 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 我们已经讨论过了通道的基本操作以及背后的规则。今天,我再来讲讲通道的高级玩法。 首先来说说单向通道。我们在说“通道”的时候指的都是双向通道,即:既可以发也可以收的通道。 所谓单向通道就是,只能发不能收,或者只能收不能发的通道。一个通道是双向的,还是单向的是由它的类型字面量体现的。 还记得我们在上篇文 阅读全文
posted @ 2021-09-08 21:28 brady-wang 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 作为Go语言最有特色的数据类型,通道(channel)完全可以与goroutine(也可称为go程)并驾齐驱,共同代表Go语言独有的并发编程模式和编程哲学。 Don’t communicate by sharing memory; share memory by communicating. (不要 阅读全文
posted @ 2021-09-08 21:22 brady-wang 阅读(525) 评论(0) 推荐(0) 编辑
摘要: package main import ( "fmt" "io/ioutil" "net/http" "os" "regexp" "strings" "time" ) var name ="AI技术内参" var path string = "/Users/mac/www/book/其他书籍/"+n 阅读全文
posted @ 2021-09-08 20:01 brady-wang 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 你好,我是鸟窝。 今天是我们Go并发编程实战课的第一讲,我们就直接从解决并发访问这个棘手问题入手。 说起并发访问问题,真是太常见了,比如多个goroutine并发更新同一个资源,像计数器;同时更新用户的账户信息;秒杀系统;往同一个buffer中并发写入数据等等。如果没有互斥控制,就会出现一些异常情况 阅读全文
posted @ 2021-09-08 17:03 brady-wang 阅读(289) 评论(0) 推荐(0) 编辑