go channel使用及其实现原理

目录 channel背景 channel基本用法 channel应用场景 channel实现原理 channel数据结构 channel实现方式 channel注意事项 闲聊 【迈莫coding】 channel背景 channel是Go的核心类型,是Go语言内置的类型,你无需引包,就能使用它。你可以把它看作一个管道,在Go语言中流传着一句话,"执行业务处理的goroutine不要通过共享内存通信,要通过channel管道进行共享数据"。 channel和Go的另一种特性goroutine一起为...阅读全文

简书 2021-01-16 00:32:53 迈莫coding

2021年,字节/百度/阿里相继发布50W+优质Java岗(含内部面试真题及答案)

2021刚刚启程,各互联网大厂便发布了一大波优质Java岗,平均薪资总包都在40w左右,你心动了吗?下面给大家列出几个具体的岗位及要求。 此外,在文末还有分享:由各大厂面试官整理的字节、阿里、百度Java内部面试题(含答案),新鲜出炉!希望大家了解并掌握这些知识点,争取通过每一轮面试! 2021年刚启程 字节/阿里/ 百度 相继发布薪资总包 40w 优质Java岗(附内部面试题) 字节跳动Java 开发工程师 薪资:25~40k 16薪 扎实的计算机基础知识,较强的逻辑理解能力和学习能力 熟悉p...阅读全文

简书 2021-01-16 00:32:51 小迁不秃头

百题大冲关系列课程更新啦!这次是 Golang

此前,蓝桥云课已陆续出过「Pandas 百题大冲关」「NumPy 百题大冲关」「Python 百题大冲关」,获得了很好的反响,如今再次更新了「Golang 百题大冲关」。 「Golang 百题大冲关」采用 webide 环境,可先进行试学,感兴趣的小伙伴点击链接更多即可进入!阅读全文

简书 2021-01-16 00:32:49 蓝桥云课

golang 写个冒泡

在算法这个领域,大学的课程也都是从冒泡排序开始的,今天用 golang 写个简单的冒泡排序。 func bubbleSort(arr []int) []int { if len(arr) == 0 { return arr } for i := 0; i < len(arr); i++ { for j := 0; j+1 < len(arr); j++ { if arr[j] > arr[j+1] { arr[j], arr[j+1] = arr[j+1], arr[j] } } } retur...阅读全文

简书 2021-01-16 00:32:48 追风骚年

Golang后台单元测试实践

[toc] Why单元测试 让我们对重构与修改有信心 新功能的增加,代码复杂性的提高,优化代码的需要,或新技术的出现都会导致重构代码的需求。在没有写单元测试的情况下,对代码进行大规模修改,是一件不敢想象的事情,因为写错的概率实在太大了。而如果原代码有单元测试,即使修改了代码单测依然通过,说明没有破坏程序正确性,一点都不慌! 及早发现问题,降低定位问题的成本 bug发现的越晚,修复它的费用就越高,而且呈指数增长的趋势。作为编码人员,也是单元测试的主要执行者,能在单测阶段发现的问题,就不用等到联调测...阅读全文

简书 2021-01-16 00:32:48 CG_9b87

atomic.Value代替sync.RWMutex

记一次性能优化,读公司项目代码时候,发现好些使用sync.RWMutext的使用场景:项目启动时候对高频数据缓存到内存缓存中,同时每隔一段时间重新写一下这个缓存(用一个全局变量): type cosCred struct { Cred []int64 sync.RWMutex } var CosCred *cosCred // 每分钟写一次 func InitCosCred() { CosCred = new(cosCred) CosCred.Cred, _ = GetGlobalCredDat...阅读全文

简书 2021-01-16 00:32:43 laotoutou

聊聊gorm的Unscoped

序本文主要研究一下gorm的UnscopedUnscopedgorm.io/gorm@v1.20.11/chainable_api.gofunc (db *DB) Unscoped() (tx *DB) { tx = db.getInstance() tx.Statement.Unscoped = true return }Unscoped方法设置tx.Statement.Unscoped为trueDeletegorm.io/gorm@v1.20.11/callbacks/delete.gofu...阅读全文

Segmentfault 2021-01-18 22:32:33 .container .car 等

windows下如何玩转火热的go-zero

前言go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。这么牛,怎么不想去试一下?!go语言环境搭建配置GO语言环境新增go的代理GOPROXY=https://goproxy.io,di...阅读全文

51CTO博客 2021-01-15 19:07:31 mb5ffbc80063708

Windows下如何玩转火热的go-zero

Windows下如何玩转火热的go-zero作者:阿啄debugIT前言go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android,Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。这么牛,怎么不想去试一下?!go语言环境搭建配置GO语言环境新增g...阅读全文

51CTO博客 2021-01-15 19:04:05 mb5ffbc80063708

Go 语言社区系统 bbs-go3.2.2 发布,UI 全新升级

更新内容Feature:帖子、动态功能合并,动态功能更加完善Feature:全新的帖子信息流展示样式Feature:记录帖子最后回复人、最后回复时间Feature:新增签到排行榜Feature:帖子详情页支持推荐功能Enhancement:优化头像的存储和加载方式More:多处细节和功能优化技术栈iris (github.com/kataras/iri…) Go 语言 mvc 框架gorm (gorm.io/) Go 语言 orm 框架elasticsearch(https://www.elas...阅读全文

51CTO博客 2021-01-15 18:51:52 mb5ffbc80063708

Golang 实现定时任务 | 七日打卡

Why在应用开发中,经常需要一些周期性的操作,如:在每天凌晨分析前一天的日志、每隔5分钟检查某些业务情况并触发告警等等。这些功能需要使用定时任务的方法去实现,那我们是如何使用 Golang 去实现的呢?What推荐使用 github 上的 Golang 开源库来实现定时任务,介绍两个常用的库:robfig/cron 和 jasonlvhit/gocronrobfig/cron:说到定时任务,会想到 crontab,其常见于Unix和类Unix的操作系统之中。robfig/cron 库使用了类 c...阅读全文

51CTO博客 2021-01-15 17:44:48 mb5ffbc80063708

深入理解Go Context

目录emptyCtx类型cancelCtx类型timerCtx类型valueCtx类型在Go语言并发编程中,用一个goroutine来处理一个任务,而它又会创建多个goroutine来负责不同子任务的场景非常常见。如下图这些场景中,往往会需要在API边界之间以及过程之间传递截止时间、取消信号或与其它请求相关的数据谁是性能卡点呢?得通知它们任务取消了。这时候就可以使用Context了。context包在Go1.7的时候被加入到官方库中。context包的内容可以概括为,一个接口,四个具体实现,还有...阅读全文

51CTO博客 2021-01-15 17:37:01 mb5ffbc80063708

ubuntu20安装Golang

下载Golang golang官网被墙了,可以用下面这个地址: https://golang.google.cn/dl/ 解压 tar -C /usr/local -xzf go1.14.3.linux-amd64.tar.gz 添加权限 sudo chmod -R 0777 /usr/local/go 配置环境变量 语言的环境变量配置,需要两个值: GOROOT是系统上安装Go软件包的位置 GOPATH是工作目录的位置 创建工作目录,我选择创建在/home/ss目录下. $ mkdir GOP...阅读全文

简书 2021-01-15 17:32:42 梦雨星辰_LS

epoll在Golang中的应用

使用Golang可以轻松地为每一个TCP连接创建一个协程去服务而不用担心性能问题,这是因为Go内部使用goroutine结合IO多路复用实现了一个“异步”的IO模型,这使得开发者不用过多的关注底层,而只需要按照需求编写上层业务逻辑。这种异步的IO是如何实现的呢?下面我会针对Linux系统进行分析。在Unix/Linux系统下,一切皆文件,每条TCP连接对应了一个socket句柄,这个句柄也可以看做是一个文件,在socket上收发数据,相当于对一个文件进行读写,所以一个socket句柄,通常也用表...阅读全文

Segmentfault 2021-01-18 20:32:34 .container .car 等

Java微服务 vs Go微服务,究竟谁更强!?

前言Java微服务能像Go微服务一样快吗?这是我最近一直在思索地一个问题。去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nelson和Peter Nagy就对此做过一系列基础的的测试用以比较。接下来就给大家介绍下。在程序员圈子里,普遍的看法是Java老、慢、无聊 ,而Go是快、新、酷为了尽可能的进行一个相对公平的测试,他们使用了一个非常简单的微服务,没有外部依赖关系(比如数据库),代码路径非常短(只是操纵字符串),使用了小型的、轻...阅读全文

51CTO博客 2021-01-15 15:49:51 mb5ffbc80063708

Java微服务 vs Go微服务,究竟谁更强!?

前言Java微服务能像Go微服务一样快吗?这是我最近一直在思索地一个问题。去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nelson和Peter Nagy就对此做过一系列基础的的测试用以比较。接下来就给大家介绍下。在程序员圈子里,普遍的看法是Java老、慢、无聊 ,而Go是快、新、酷为了尽可能的进行一个相对公平的测试,他们使用了一个非常简单的微服务,没有外部依赖关系(比如数据库),代码路径非常短(只是操纵字符串),使用了小型的、轻...阅读全文

51CTO博客 2021-01-15 15:48:18 mb5ffbc80063708

Gauge框架概要

Gauge是一种轻量级、跨平台的测试自动化框架,支持使用业务语言来组织测试用例。 概要 Gauge是免费开源的测试框架,可读写、运行可支持的测试用例。Gauge框架有一下特点: 简单,可扩展,且支持Markdown语法 可跨平台编写测试代码 丰富的插件库 支持内部数据驱动及外部数据源 支持编写易读的测试套件 很好的支持VS code 什么是说明 Gauge规格是通过Markdown语法实现的,例如 # Search the Internet ## Look for something * Got...阅读全文

简书 2021-01-15 14:32:39 张小Di

一起用go写项目

微信搜【吴亲强的深夜食堂】,分享一些奇奇怪怪的设计,领取多多少少的 go 资料今天偶然看到这样的小程序。[](https://cdn.learnku.com/uploa...[](https://cdn.learnku.com/uploa...虽然我一直使用苹果自带的。但是我记得我刚学 go 的时候写过类似的工具,索性看看项目还在不在,终究是找到了。看了下代码,之前写的有点粗暴。也没有用上开源的一些组件,数据库是直接原生的,路由也是,都是很简易并且粗暴的实现。之所以一开始不用啥组件,是因为开始学...阅读全文

Segmentfault 2021-01-18 17:32:34 .container .car 等

基于 Golang 实现的 Shadowsocks 源码解析

基于 Golang 实现的 Shadowsocks 源码解析你好,欢迎来到洲洋的编程课堂!本人邮箱:w910820618@126.com ,欢迎交流讨论学习相关的内容。欢迎转载,转载请标注 :洲洋的编程课堂。本教程是基于 github.com/shadowsocks/go-shadowsocks2项目,我将通过分析该项目的源码来帮助大家学习如何通过Golang来实现一个隧道代理转发工具。我会把重点代码罗列出来,方便大家在阅读源码的时候能够找到代码的主线。本教程主要会从以下四个问题入手:什么是隧道...阅读全文

Segmentfault 2021-01-18 12:32:33 .container .car 等