手撸golang 基本数据结构与算法 冒泡排序

缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之冒泡排序冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小, 再根据结果交换两个数字的位置”这一操作的算法。 在这个过程中,数字会像泡泡一样, 慢慢从右往左“浮”到序列的顶端, 所以这个算法才被称为“冒泡排序”。 在序列的最右边放置一个天平,比较天平两边的数字。 如果右边的数字较小,就交换这两个数字的位置。 完成后,天平往左移动一个位置,比较两个数字的大小。 不断对数字进行交换,天平最终到达了最...阅读全文

Segmentfault 2021-02-24 23:32:33 ioly

源码剖析sync.cond(条件变量的实现机制)

前言哈喽,大家好,我是asong,这是我并发编程系列的第三篇文章,这一篇我们一起来看看sync.Cond的使用与实现。之前写过java的朋友对等待/通知(wait/notify)机制一定很熟悉,可以利用等待/通知机制实现阻塞或者唤醒,在Go语言使用Cond也可以达到同样的效果,接下来我们一起来看看它的使用与实现。原文链接:源码剖析sync.cond(条件变量的实现机制)sync.Cond的基本使用Go标准库提供了Cond原语,为等待/通知场景下的并发问题提供支持。Cond他可以让一组的Gorou...阅读全文

Segmentfault 2021-02-24 14:32:41 asong

牛年最新干货!字节/阿里/腾讯Java技术经验面经总结

新年牛气冲天 新的一年开始啦!希望阅读本文的人春风得意,点赞的人爱情甜蜜,转发的人大吉大利,评论的人依然好运气,祝大家牛年大吉,牛气冲天! 话又说回来,我自认为对于我们这个行业的从业者来说,进入互联网大厂才算是对职业生涯的一种肯定,我相信这也是绝大多数同行的目标。如果想一直在这个行业发展的话,我建议大家以大厂的技术来要求自己,全方面提高自己的职业竞争力。 因此,我想在这里跟大家分享BAT官方推送的Java技术经验,对你来说可以更好地了解各家技术侧重点在哪里,也能帮助你在面试时有针对性的梳理知识,...阅读全文

简书 2021-02-21 02:33:55 码农小芷

5种构建微服务架构的最佳技术

“要有效地实现目标,您必须将它们分解成小任务,然后将大部分时间花在摆在面前的任务上,而不是被庞大目标的庞大淹没。” ―Sunday Adelaja,这可能不是微服务工作的意识形态,但这肯定是我们在微服务架构上开发应用程序时遵循的原则。随着企业致力于构建复杂的大型应用程序,这些应用程序可以作为较小的服务的集合进行分离和处理,因此微服务在市场上越来越受欢迎。越来越多的人希望将其传统的单片系统重新设计为一系列独立的微服务。您想到的自然问题是,在为下一个项目开发微服务时,哪种语言最适合使用?您可以根据最...阅读全文

简书 2021-02-21 02:32:52 麦芽maiya

Go HTTP

由于Web服务是HTTP协议的一个服务,Golang提供完善的net/http包,通过net/http包可以很方便地搭建一个可以运行的Web服务,同时net/http包能够简单地对Web的路由、静态资源、模板、Cookie等数据进行设置和操作。 net/http Golang标准库内置net/http包涵盖了HTTP客户端和服务端的具体实现,使用net/http包可方便地编写HTTP客户端和服务端的程序。 Golang为了实现高并发和高性能,使用goroutine来处理连接的读写事件,以保证每个...阅读全文

简书 2021-02-21 02:32:52 JunChow520

2021-02-20:手写代码:读写锁。

福哥答案2021-02-20: 四大方法:读加锁,读解锁,写加锁,写解锁。读加锁里有写加锁,读解锁里有写解锁。代码有写线程饥饿现象,但实现简单。 代码用golang编写,代码如下: package main import ( "fmt" "sync" "time" ) func main() { fdd := FddRWMutex{} go func() { i := 0 for k := 0; k < 5; k++ { go func() { j := i i++ fdd.RLock() fm...阅读全文

简书 2021-02-21 02:32:50 福大大架构师每日一题

golang语言学习之基本语法

前面已经基本了解到go语言以及结构组成,本篇主要讲解的是go的基本语法结构。 Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成: fmt.Println("Hello, World!") 6 个标记是(每行一个): 1. fmt 2. . 3. Println 4. ( 5. "Hello, World!" 6. ) 行分隔符 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾...阅读全文

51CTO博客 2021-02-19 22:36:57 清白之年

从C/C++到Go

参考链接: C++ ferror()很多程序员都是从c/c++转到go的,难免会产生一些混淆, 在学习go语言的时候,尤其要注意与c/c++的区别, 对比起来学习效果可能更好。下面这个总结很不错, 直接引用过来学习:http://hyperpolyglot.org/c Hyperpolyglot C, Go a side-by-side reference sheet grammar and invocation | variables and expressions | arithmetic ...阅读全文

51CTO博客 2021-02-20 07:51:56 wx592a7561e9493

从C/C++到Go

参考链接: C++ iscntrl()很多程序员都是从c/c++转到go的,难免会产生一些混淆, 在学习go语言的时候,尤其要注意与c/c++的区别, 对比起来学习效果可能更好。下面这个总结很不错, 直接引用过来学习:http://hyperpolyglot.org/c Hyperpolyglot C, Go a side-by-side reference sheet grammar and invocation | variables and expressions | arithmetic...阅读全文

51CTO博客 2021-02-20 05:40:05 wx592a7561e9493

5分钟学Go 基础02 下载与安装

本文首发于公众号「5分钟学Go (ID: learngo5)」,欢迎你的关注。 作者:伍工 原文链接:下载,安装,验证。01 下载进入 golang 官网[1],如果打不开,可以用这个 golang 中国[2]。Go 语言支持多种常用系统,比如:Windows、Linux、Mac OS 等,可以下载各个系统对应的安装包进行安装:本教程使用最新稳定版 go1.14.4 版本。02 安装Go 语言提供了三种常见的安装方式:源码安装、二进制包安装、软件包安装程序安装,和第三方工具安装。安装之前,先确保...阅读全文

Segmentfault 2021-02-20 20:32:37 伍工

mysql一张表到底能存多少数据?

前言程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨知识准备数据页在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB)。详细学习可以参考官网我们可以用如下命令查询到。mysql> SHOW GLOBAL STATUS LIKE 'innodb_page_siz...阅读全文

Segmentfault 2021-02-24 13:32:33 程序员小饭

go的string,byte和rune类型

rune是int32的别名类型,一个值就代表一个Unicode字符。byte是uint8的别名类型,一个值就是一个ASCII码值。rune类型的值在底层都是由一个 UTF-8 编码值来表达的。了解下什么是Unicode字符和ASCII码:1、简单理解,我们平时接触到的中英日文,或者复合字符,都是Unicode字符。比如,'G'、'o'、'爱'、'好'、'者'就是一个个Unicode字符。2、字符在计算机中存储时需要使用二进制数来表示。所以人们定义了一张表,将我们用到的字符用一个二进制数值表示。这...阅读全文

Segmentfault 2021-02-24 10:32:34 煮酒

手撸golang 基本数据结构与算法 二叉查找树

手撸golang 基本数据结构与算法 二叉查找树 缘起 最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一) 本系列笔记拟采用golang练习之 二叉查找树 二叉查找树(又叫作二叉搜索树或二叉排序树)是一种数据结构, 数据存储于二叉查找树的各个结点中。 二叉查找树有两个性质: 第一个是每个结点的值均大于其左子树上任意一个结点的值, 第二个是每个结点的值均小于其右子树上任意一个结点的值。 根据这两个性质可以得到以下结论。 首先,二叉查找树的最小结点要从顶端开始,往其左下的末端寻找。 反过来...阅读全文

简书 2021-02-20 13:32:45 老罗话编程

记一次HTTP连接重用问题分析

最近新发现了一个开源项目叫pyroscope:一个开源持续Profiling平台。 image.png 之所以关注到这个开源项目跟我以前的一个想法有一些契合,所以就先照着官方文档,写了个样例试用 package main import ( "github.com/gin-gonic/gin" "github.com/pyroscope-io/pyroscope/pkg/agent/profiler" ) func main() { profiler.Start(profiler.Config{ ...阅读全文

简书 2021-02-20 13:32:44 wu_sphinx

go-carbon 1.3.2 版本发布,新增自定义 i18n 系列方法和日文翻译文件

carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用、农历和gorm、xorm等主流orm如果您觉得不错,请给个star吧github:github.com/golang-module/carbongitee:gitee.com/go-package/carbon更新日志按照功能拆分文件,优化代码组织结构新增SetDir()、SetResources()、SetLanguage()方法用于自定义i18n新增StartOfSecond()、EndOfSecond(...阅读全文

Segmentfault 2021-02-23 22:32:33 够过瘾

Golang代码测试:一点到面用测试驱动开发

​​​​摘要:TDD(Test Driven Development),测试驱动开发。期望局部最优到全局最优,这个是一种非常不错的好习惯。了解Golang的测试之前,我们先了解一下go语言自带的测试工具。go test工具Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被g...阅读全文

Segmentfault 2021-02-23 13:32:34 华为云开发者社区