几个常见的并发模型——生产者消费者模型【Golang 入门系列十七】

前面已经讲过很多Golang系列知识,包括并发,锁等内容,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html,接下来讲几个golang常见的并发模型,今天先说说生产者消费者模型。 生产者消费者模型 生产者:发送数据端消费者:接收数据端缓冲区: 1. 解耦(降低生产者和消费者之间耦合度) 2. 并发(生产者消费者数量不对等时,能保持正常通信) 3. 缓存(生产者和消费者 数据处理速度不一致时,暂存数据)...阅读全文

51CTO博客 2021-01-29 20:45:52 mb5fe94b3e552d9

google官宣:新一代操作系统Fuchsia编程语言竟然是它!

什么是Fuchsia?Fuchsia是Google开发的操作系统。和以前该公司开发的操作系统,如基于Linux内核的Chrome OS和Android等不同,Fuchsia基于新的名为Zircon的微内核,受Little Kernel启发,用于嵌入式系统,主要使用C语言和C++编写。Fuchsia的设计目标之一是可运行在众多的设备上,包括移动电话和个人电脑。Fuchsia应用使用什么语言开发?谷歌新一代开源操作系统 Fuchsia 的开发者网站上公布了一份 Fuchsia 编辑语言策略,文档描述...阅读全文

51CTO博客 2021-01-30 19:00:10 mb5fe94ba3ca002

分布式定时任务执行器

# xxl-job-executor-go 很多公司java与go开发共存,java中有xxl-job做为任务调度引擎,为此也出现了go执行器(客户端),使用起来比较简单: # 支持 ``` 1.执行器注册 2.耗时任务取消 3.任务注册,像写http.Handler一样方便 4.任务panic处理 5.阻塞策略处理 6.任务完成支持返回执行备注 7.任务超时取消 (单位:秒,0为不限制) 8.失败重试次数(在参数param中,目前由任务自行处理) 9.可自定义日志 ...阅读全文

Go语言中文网 2021-01-30 22:03:56 rushui

死磕hyperledger fabric源码|kafka共识排序

死磕hyperledger fabric源码|kafka共识排序 文章及代码:https://github.com/blockchainGuide/ 分支:v1.1.0 d1e794177969e09552b173b7d6eaea19 概述 Orderer共识组件提供HandleChain()方法创建通道绑定的共识组件链对象(consensus.Chain接口),包括Solo(solo.chain类型)、Kafka(kafka.chainImpl类型)等类型,属于通道共识组件的重要实现模块,并设...阅读全文

简书 2021-01-30 16:32:48 mindcarver

golang中slice作为参数会怎么样

golang参数传递其实只有一种就是值拷贝,那么slice作为参数传递的时候有什么特别的地方吗? 修改值 我们先看一个小示例 package main import "fmt" func changeValue(s []int) { fmt.Printf("inner: %v \t%p\n", s, s) s[0] = 0 fmt.Printf("inner: %v \t%p\n", s, s) } func main() { s1 := []int{1, 2, 3} fmt.Printf("o...阅读全文

简书 2021-01-30 16:32:46 小刀田田

Golang 语言的标准库 log 包怎么使用?

转载 Golang 语言的标准库 log 包怎么使用? 介绍 Golang 语言的标准库中提供了一个简单的 log 日志包,它不仅提供了很多函数,还定义了一个包含很多方法的类型 Logger。但是它也有缺点,比如不支持区分日志级别,不支持日志文件切割等。 函数 Golang 的 log 包主要提供了以下几个具备输出功能的函数: func Fatal(v ...interface{}) func Fatalf(format string, v ...interface{}) func Fatall...阅读全文

简书 2021-01-30 16:32:46 Vicky丶云

Golang 语言怎么使用 gomail 库发送邮件?

转载:Golang 语言怎么使用 gomail 库发送邮件? 介绍 我们在项目开发中,经常会遇到发送邮件的需求,比如给开发人员发送报警邮件,给用户发送优惠券或兑换码等。 Gomail 是发送电子邮件的简单高效的包。它已经过充分测试和记录。Gomail 只能使用 SMTP 服务器发送电子邮件。但是该 API 灵活,可以轻松实现使用本地 Postfix,API 等发送电子邮件的其他方法。 它使用 gopkg.in 进行了版本控制,因此保证每个版本都不会存在向后不兼容的更改。它需要 Go 1.2 或更...阅读全文

小前端关于面试题的总结, Js基础篇(一)

缘起 笔者最近在近两周的面试中, 遇到了大大小小形形色色的面试题。很多问题都是知道但是说不出来,所以想记录下来, 希望可以帮到大家,也可以方便自己以后查阅。 面试题无疑就是那几种类型的题, 所以笔者将按分类 分几次发, 也会有对应的问题扩展的解答。 希望可以帮到大家。 说明一下,面试题远不止这些,笔者只是就自己所遇到的做一个记录。若有说的不对的地方,还请大家指出来,大家共同进步! Js基础的数据类型相关问题 1. Js 的基础数据类型有哪些? null undefined boolean str...阅读全文

简书 2021-01-30 16:32:45 xd的笔记

golang 创建型设计模式 抽象工厂

golang 创建型设计模式 抽象工厂 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 本系列笔记拟采用golang练习之 抽象工厂 抽象工厂模式(Abstract Factory Pattern)指提供一个创建一系列相关或相互依赖对象的接口,无须指定它们具体的类。意思是客户端不必指定产品的具体类型,创建多个产品族中的产品对象。 _ 抽象工厂vs工厂方法 抽象工厂是创建一系列对象, 且这些对象之间可能存在相关性. 工厂方法通常是创建单一类别的对象 场景 某智能家居场景, 需要通过...阅读全文

在Golang中如何正确地使用database/sql包访问数据库

本文记录了我在实际工作中关于数据库操作上一些小经验,也是新手入门golang时我认为一定会碰到问题,没有什么高大上的东西,所以希望能抛砖引玉,也算是对这个问题的一次总结。其实我也是一个新手,机缘巧合几个月前开始做golang开发,以前一直是以.NET技术栈为主,文章如有错误不吝指正。访问数据库相信大家第一次碰到这个问题的时候应该和我一样,去网上找个例子参考一下。没错,这样的例子一搜一大把,于是我们很容易(抄)写了如下一段代码:import ( "fmt" "database/sql" _ "gi...阅读全文

51CTO博客 2021-01-30 09:56:03 mb6013bccfd9c69

最长公共子序列

最长公共子序列(Longest Common Subsequence,简称 LCS)是非常经典的动态规划题目。 通常有两种方式,一个是自顶向下的递归写法,一个是自底向上的 dp table 写法,这里我在使用递归时,发现 golang 的一个问题,如果在函数内部定义个函数,那么内部函数的内部是无法访问到内部函数名。 例如: func lcs(s1, s2 string) { dp := func(i, j int) int { ... return dp(i, j-1) // 这里是无法访问到 ...阅读全文

简书 2021-01-30 00:32:37 追风骚年

当 Go struct 遇上 Mutex

struct 是我们写 Go 必然会用到的关键字, 不过当 struct 遇上一些比较特殊类型的时候, 你注意过你的程序是否正常吗 ?一段代码type URL struct { Ip string Port string mux sync.RWMutex params url.Values }func (c *URL) Clone() URL { newUrl := URL{} newUrl.Ip = c.Ip newUrl.params = url.Values{} return newUrl...阅读全文

51CTO博客 2021-01-29 21:44:53 mb6013bccfd9c69

Elasticsearch:Elasticsearch 开发入门 - Golang_Elastic

在本文中,我将分享如何在 Golang 中如何使用 Elasticsearch 来开发的经验。 顺便说一句,以防万一你从未听说过 Elasticsearch:Elasticsearch 是一个高度可扩展的开源全文本搜索和分析引擎。 它使你可以快速,近乎实时地存储,搜索和分析大量数据。 它通常用作支持具有复杂搜索功能和要求的应用程序的基础引擎 / 技术。如果你想了解更多关于 Elasticsearch 的介绍,你可以参阅我之前的文章 “Elasticsearch 简介”。针对 Golang 的 E...阅读全文

51CTO博客 2021-01-29 21:17:34 mb6013bccfd9c69

gRPC

gRPC 简述 由来 gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统 gRPC 是什么? 在 gRPC 里客户端应用可以像<font color='red'>调用本地对象一样直接调用另一台不同的机器上服务端应用的方法</font>,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:<font color='green'>定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)</font>。在服...阅读全文

简书 2021-01-29 18:32:40 ghostxbh

golang的多态

定义了一个shape接口 type shape interface { area() float64 //计算面积 perimeter() float64 //计算周长 } 需要注意的问题:如果想将一个结构体指针赋值给shape指针,则要求这个结构体必须实现所有已经在shape里定义好的函数 比如下面的代码,你把func (r *rect) area() float64改成func (r *rect) area2() float64就会报错。 package library import "fm...阅读全文

简书 2021-01-29 18:32:40 不知名小号

Spring boot jar包加密(防止放在客户端反编译)

前言 需求常用但是时间不常有。有些能客户接触到jar包就很尴尬了。不要问为什么尴尬。 混淆?? 测试了下 ProGuard maven 插件。嗯,放弃了。不言弃的朋友可以试试。 加固!! 可以的给钱就行 重点,jar包不给钱加密了---xjar github-xjar-链接 解决方案 第一步,新建一个maven项目。(不来操作演示了) pom添加内容如下,缺一不可不要问为什么,看github地址介绍 <dependencies> <dependency> <groupId>com.github....阅读全文

简书 2021-01-29 18:32:40 板栗炖牛肉

还在写定时任务进行部署? ---使用Artifactory Webhooks和Docker实现持续部署

还在写定时任务进行部署?---使用Artifactory Webhooks和Docker实现持续部署 引言持续部署(CD)是在持续集成的基础上,把集成代码或构建产物自动化部署到测试或生产环境。这就是我们所说的“流动软件”。完全自动化可以使您的部署无缝、更少的出错几率、更快,并且可以缩短反馈循环,因为您现在可以在每次更改之后进行部署。实现持续部署需要以下要素:持续集成(CI),如Jenkins或JFrogPipeline,用于构建/验证新版本。制品管理器,如JFrog Artifactory,用于...阅读全文

简书 2021-01-29 17:32:50 JFrog杰蛙科技

golang 创建型设计模式 工厂方法

golang 创建型设计模式 工厂方法 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 该书以java语言演绎了常见设计模式 本系列笔记拟采用golang练习之 工厂方法 工厂方法模式(Factory Method Pattern)又叫作多态性工厂模式,指定义一个创建对象的接口,但由实现这个接口的类来决定实例化哪个类,工厂方法把类的实例化推迟到子类中进行。 在工厂方法模式中,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。因此,当增加一个产品时,只需增加一个相应...阅读全文