Golang程序设计——数据容器

本文学习Go语言数据容器、包括数组、切片和映射。数组数组是一个数据集合,常用于存储用数字索引的同类型数据。Go语言的数组调用函数时使用的是值传递,因此形参会拷贝一份实参的值。在Go语言中,声明数组需要同时指定长度和数据类型,数组长度是其类型的一部分,因此[5]int和[1]int是两种类型。Go语言可以对数组进行写入、读取、删除、遍历等操作。package main import "fmt" func main() { // 声明数组并指明长度,不初始化,因此a的5个元素为int类型的零值(0)...阅读全文

51CTO博客 2021-03-10 19:36:43 tomcat

GoLang XML 解析神器 etree 转载自“北极熊博客”

etree包是一个轻量级的纯go包,它以元素树的形式表示XML。它的设计灵感来自Python ElementTree模块。 Github 项目地址 https://github.com/beevik/etree DOC http://godoc.org/github.com/beevik/etree 安装方式 go get github.com/beevik/etree 创建一个XML文档 以下示例使用etree 包从头开始创建XML文档,并将其缩进内容输出到stdo...阅读全文

Go语言中文网 2021-03-10 20:28:35 whoiswho

大厂面试必备算法技能&力扣刷题技巧

金三银四互联网奋战期,你准备好了吗?收获到心仪的offer了吗? 今天为大家总结下大厂面试必备的算法技能知识体系,在文章结尾还有面试学习资料包哦! 说到算法,离不开数据结构: 1. 常⽤的数据结构:字符串、数组、链表、树(如⼆叉树)等; 2. 常⽤的算法:分治、贪⼼、穷举、动态规划、回溯、⼆分算法、深度优先搜索等 盲目刷题,没有任何效果,在理解算法的基础上再去有针对性的刷题,事半功倍! 搜集了大神整理的力扣算法刷题总结如下: ![image.png](https://sta...阅读全文

Go语言中文网 2021-03-10 19:58:22 kep-w

WebAssembly + Go 系列(1)什么是 WebAssembly 和 Go 语言示例

WebAssembly 简介当 JavaScript 这种动态语言在某些场景下性能很难再压榨时,WebAssembly 慢慢走向人们的视野,并成为一个突破口。那么,什么是 WebAssembly?WebAssembly(Wasm)是基于堆栈式虚拟机的二进制指令集,它被设计为编程语言的可移植编译目标,从而可以部署于客户端和服务端的 Web 应用程序。具体一点地说,WebAssembly 是一种可以在现代 Web 浏览器(Web 环境)中运行的类似于汇编的低级语言(编译为二进制格式),可以以接近本机...阅读全文

51CTO博客 2021-03-10 18:55:40 mob604756e39ef4

开课啦 dubbo-go 微服务升级实战

曾凡维 杭州开课啦教育科技有限公司高级开发工程师来源 | 阿里巴巴云原生公众号 杭州开课啦教育科技有限公司是一家致力于为中小学生提供学习辅导的在线教育公司,目前公司后端服务基础设施主要依托于阿里云原生,其中包含计算、网络、存储以及 Kubernetes 服务。 技术选型背景 2020 年是开课啦公司发展壮大的一年,整个公司团队由原来的几百人扩充至现在的几千人,在集中使用的时候基本上会有几千人同时在运营后台进行操作,公司原有的内部后台运营系统是用 PHP 搭建起来的,性能跟业务上已逐渐不能满足公司...阅读全文

51CTO博客 2021-03-10 15:09:04 阿里巴巴云原生

Go的测试覆盖率

测试覆盖率是一个术语,用于统计通过运行程序包的测试多少代码得到执行。 如果执行测试套件导致80%的语句得到了运行,则测试覆盖率为80%。计算测试覆盖率的通常方法是埋点二进制可执行文件。 例如,GNU gcov 在二进制文件中设置执行分支断点。 当每个分支执行时,断点被清除,并且分支的目标语句被标记为“被覆盖”。这种方法是成功和广泛使用的。 Go的早期测试覆盖工具甚至以相同的方式工作。但它有问题。 由于分析二进制文件的执行是很困难的,所以很难实现。 它还需要将执行跟踪绑定回源代码的可靠方法,这也可...阅读全文

Segmentfault 2021-03-15 07:32:32 小谷xg

《Golang从入门到跑路》之指针

第六章 指针 相比于C/C++,Go语言中的指针不能进行偏移和运算,是安全指针。 Go语言中的指针操作有以下两种: &:取地址 *:根据地址取值 指针地址和指针类型 指针地址是变量在内存中的位置,在Go语言中用&变量 取变量的地址。 其基本语法如下: ptr := &v // v的类型为T 其中: v:代表被取地址的变量,类型为T ptr:用于接收地址的变量,ptr的类型就为T,称做T的指针类型。代表指针。 例如: package main import "fmt" func main() { ...阅读全文

51CTO博客 2021-03-10 12:50:50 mb5ff97f7b72697

《Golang从入门到跑路》之map的初识

第七章 map map是一种无序的,基于key-value 的数据结构。它是Go语言中的映射关系容器,其内部是使用散列表(hash) 实现的。 注意:Go语言中的map是引用类型,所以必须初始化才能使用。 map的定义 map定义的基本语法如下: map[keyType]valueType 其中: keyType:是key的类型 valueType:是key对应的值的类型 map类型的初始值是nil,要使用需要使用make()函数来初始化分配内存地址,语法如下: make(map[keyType...阅读全文

51CTO博客 2021-03-10 12:49:09 mb5ff97f7b72697

结构体的注意事项和使用细节

1、结构体的所有字段在内存中是连续的。 内存图参考 2、结构体是用户单独定义的类型,和其他类型需要转换时需要有完全相同的字段(名字、个数和类型)。有例程如下: 例程 这里声明了A、B两个结构体,拥有相同类型、相同数目的元素,但是当我们将B的实例b赋给A的实例a时,会发现有报错。所以下一步我们做了强制类型转换,如下: 强制类型转换 编译器没有报错。这里有个前提,之所以能将结构体B的实例b转换成A的实例a,是因为两者的名字、个数和类型(统称为字段)是一样的。个数和实例好理解,名字的影响如下: 两个结...阅读全文

方法使用的注意事项和细节

1、结构体类型是值类型,在方法调用中,遵守值类型的传递机制,是值拷贝传递方式。2、如果程序员希望在方法中,修改结构体的值,可以通过结构体指针的方式来处理。3、Golang中的方法是作用在指定的数据类型上的(即:和指定的数据类型绑定),因此自定义类型,都可以有方法,而不仅仅是struct,比如int,float32等都可以有方法。 给系统类型int添加方法myprint 用int对象a1执行方法myprint() 报错 报错表明不能给int、float32这种non-local type人为添加方...阅读全文

简书 2021-03-10 12:32:41 柯帆

influxdb快速入门指南

致读者 史上最全InfluxDb教程地址:InfluxDb中文教程 InfluxDB安装完成之后,我们开始来做一些有意思的事。在这一章里面我们将会用到influx这个命令行工具,这个工具包含在InfluxDB的安装包里,是一个操作数据库的轻量级命令行工具。它直接通过InfluxDB的HTTP接口(如果没有修改,默认是8086)来和InfluxDB通信。 说明:也可以直接发送裸的HTTP请求来操作数据库,例如curl,我们后面在介绍rest这种接口,但是会稍微复杂一些。 1、InfluxDB创建数...阅读全文

简书 2021-03-10 10:32:51 k8s程序员

手撸golang GO与微服务 ChatServer之4 内存泄漏

缘起 最近阅读<<Go微服务实战>> (刘金亮, 2021.1) 本系列笔记拟采用golang练习之 案例需求(聊天服务器) 用户可以连接到服务器。 用户可以设定自己的用户名。 用户可以向服务器发送消息,同时服务器也会向其他用户广播该消息。 目标(Day 4) 诊断并修复内存泄漏 诊断 在day 3的代码基础上, 使用go tool pprof查看heap日志 $ go tool pprof ~/chat_server_mem.profile File: chat_server.test Typ...阅读全文

简书 2021-03-10 09:32:36 老罗话编程

手撸golang GO与微服务 ChatServer之4 内存泄漏

缘起最近阅读<<Go微服务实战>> (刘金亮, 2021.1)本系列笔记拟采用golang练习之案例需求(聊天服务器)用户可以连接到服务器。用户可以设定自己的用户名。用户可以向服务器发送消息,同时服务器也会向其他用户广播该消息。目标(Day 4)诊断并修复内存泄漏诊断在day 3的代码基础上, 使用go tool pprof查看heap日志$ go tool pprof ~/chat_server_mem.profile File: chat_server.test Type: inuse_sp...阅读全文

Segmentfault 2021-03-14 22:32:32 ioly

python中的数据类型

① 互斥锁和GIL的区别 互斥锁在多线程的情况下,确保当前线程执行完之后,继续下个任务,如果说当前任务仍然在执行的时候,下个任务会阻塞 GIL锁是保证在同一时间有一个线程,当释放掉GIL的时候,会继续下一个线程 但是也有可能是IO流阻塞,并没有完成该线程任务就直接释放,该线程的任务分多少次执行完这个会安装GIL默认策略。 互斥锁是必须保证当前任务在当前线程的完成 GIL锁是不一定在当前线程完成任务 情况是IO流阻塞的时候,直接停止当前线程继续下次线程 ② python高并发解决方案有哪些 并且使...阅读全文

简书 2021-03-10 03:32:45 幼姿沫

Golang并发模式之扇入FAN-IN和扇出FAN-OUT

本文转自:https://blog.haohtml.com/archives/20363 在现实世界中,经常有一些工作是属于流水线类型的,它们每一个步骤都是紧密关联的,第一步先做什么,再做做么,最后做什么。特别是制造业这个行业,基本全是流水线生产车间。在我们开发中也经常遇到这类的业务场景。 假如我们有个流水线共分三个步骤,分别是 job1、job2和job3。代码:https://play.golang.org/p/e7ZlP9ofXB3 package main import ( "fmt" ...阅读全文

简书 2021-03-10 03:32:45 路过100

leetcode1047 删除字符串中的所有相邻重复项 golang

1047. 删除字符串中的所有相邻重复项 题解 用数组A表示目前已经遍历的字符串且没有被删除的 然后依次遍历字符串S,每次遍历中 如果A不为空,且A中最后的元素与当前遍历到元素相同,则对A进行pop 否则将字符压到A中 代码 func removeDuplicates(S string) string { A := make([]byte,0,len(S)) for i:=0;i<len(S);i++{ if len(A)>0 && A[len(A)-1]==S[i]{ A = A[:len(A...阅读全文

简书 2021-03-10 03:32:44 lucasgao

测试平台(序)

测试平台(序) 起因 其实也没有什么背景可言,笔者其实已经开了很多个项目,例如Lamb和Eagle,都是没头没尾的项目。 最近也是因为遗憾错失了某鹅云的offer,让我感到很沮丧吧。想着的是把自己最近几年的一些工作上的内容展示出来,就打算先开个好头吧。 @我去热饭 饭佬坚持更新的态度激励了我,虽然这个项目可能又更不下去,已经失败了2次了,我这个人还是比较懒,日更对我来说很难,只能说希望有生之年能够慢慢写下去吧。 如果以后写完了且广为人知了,希望还能有机会去🐧!哈哈! 说明 刚才在公交车上,大概构...阅读全文

简书 2021-03-10 03:32:44 小克klose

2021-03-09:在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和。求数组小和。例子: [1,3,4,2,5],1左边比1小的数:没有,3左边比3小的数...

2021-03-09:在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和。求数组小和。例子: [1,3,4,2,5],1左边比1小的数:没有,3左边比3小的数:1,4左边比4小的数:1、3,2左边比2小的数:1,5左边比5小的数:1、3、4、 2,所以数组的小和为1+1+3+1+1+3+4+2=16 。 福哥答案2021-03-09: 1.归并排序,从左往右,相等拷右。有代码。 2.归并排序模板。有代码。 代码用golang编写,代码如下: package m...阅读全文

简书 2021-03-10 03:32:44 福大大架构师每日一题

Java内存模型:看Java如何解决可见性和有序性问题

什么是 Java 内存模型? 你已经知道,导致可见性的原因是缓存,导致有序性的原因是编译优化,那解决可见性、有序性最直接的办法就是禁用缓存和编译优化,但是这样问题虽然解决了,我们程序的性能可就堪忧了。 合理的方案应该是按需禁用缓存以及编译优化。那么,如何做到“按需禁用”呢?对于并发程序,何时禁用缓存以及编译优化只有程序员知道,那所谓“按需禁用”其实就是指按照程序员的要求来禁用。所以,为了解决可见性和有序性问题,只需要提供给程序员按需禁用缓存和编译优化的方法即可。 Java 内存模型是个很复杂的规...阅读全文

简书 2021-03-10 03:32:44 慕容千语