go语言type关键字的用法

type是go语法里的重要而且常用的关键字,搞清楚type的使用,就容易理解go语言中的核心概念struct、interface、函数等的使用用法一:定义结构体type student struct { name string age int class string }用法二:类型别名(相当于给一个变量类型重新起了一个名字,次用法类似于c/c++的typedef)type str string //str为string类型用法三:结构体内嵌匿名成员//结构...阅读全文

Go语言中文网 2020-07-27 09:17:43 outman

从零学习 Go 语言(36):图解 Go 语言的反射三定律,so easy~

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- 当我在使用 Python 的时候,我甚至可以做到不需要知道什么是内省,什么是反射,就可以立即使用内省去做一些事情。 而在学习 Go 语言后,反射在我这却变成了一个难点,一直感觉这个 **反射对象** 的概念...阅读全文

Go语言中文网 2020-07-27 08:49:22 hello_wbm

golang+jenkins自动化部署方案

先说一下实现思路,在gitee和Jenkins使用webhook来触发构建,构建策略中做的事情是ssh连接远程服务器,然后执行部署命令。 Jenkins环境搭建 Jenkins安装 Jenkins的安装有两种方式,一种是下载war包放在tomcat中跑,一种是docker中直接拉取镜像运行,这里只讲解第二种方式。 拉取镜像docker pull jenkins/jenkins:lts 启动容器 docker run \ -u root \ --rm \ -d \ -p 8080:8080 \ -...阅读全文

简书 2020-07-26 19:33:20 lannisiter

关于Golang中的iota

快速一览 iota是Golang中提供的一个简化常量和枚举编程的标识符,合理的使用这个标识符可以让代码变得更简洁,省去大量的不必要的代码。 比如下面的这个常量定义 const ( a = 1 b = 2 c = 3 ) 使用iota可以写成如下的方式 const ( a = iota + 1 b c ) 剖析 iota的用法很灵活,但是只要掌握了它的基本规则,就可以很熟练地使用它 iota是一个从0开始递增的整形值 iota可以用在const定义块的任何位置,并且它的当前值取决于它所在的位置 c...阅读全文

简书 2020-07-26 19:33:13 龙鹤鹿

天天CURD,你了解为了执行SQL,MySQL用了怎样的架构设计吗?

大家好, 从今天开始我们开启MySQL底层原理的探索里程,今天是第一篇我们将MySQL从一个黑盒状态一点点拨云见日剖析来了解整个MySQL的架构设计和底层组件 把MySQL当作一个黑盒来执行SQL 现在我们来看看, 对于研发工程师来说数据库是什么东西?平时我们做系统开发时,一般情况下都会连接到一个MySQL数据库上去,去执行各种增删改查语句。如下图所示: image.png 但是实际上我们在使用MySQL的过程中,总会遇到这样那样的一些问题,比如死锁异常、SQL性能太差、MySQL gone a...阅读全文

简书 2020-07-26 19:33:13 meng_philip123

golang 之 map

抽点时间阅读以下 golang 的 hmap,哈希表解决重头的方式一般有两种: 开放地址法和拉链法, 拉链法有个缺点就是不知道拉链链表的大小 下面先给出 hmap 的结构 type hmap struct { count int // hmap 的大小(元素个数) flags uint8 B uint8 // noverflow uint16 // approximate number of overflow buckets; see incrnoverflow for details hash...阅读全文

简书 2020-07-26 19:33:06 这个名字有点特殊

php 面试问题收集--算法篇

算法题:问:实现整数转二进制字符串函数 ToBinString ,例如,输入 3 输出 "11",输入 11 输出 "1011"。php版://php实现进制转换 function dec2bin($num) { if ($num == 0) return 0; $flag = array(); while ($num != 0) { array_push($flag, $num % 2); $num = (int)($num / 2); } $result = ''; while (!empt...阅读全文

Segmentfault 2020-08-01 18:32:33 特伦姝

你经常看的斗鱼直播平台,首次开源了自家项目

Jupiter 的诞生为什么选择 Go与其它微服务框架的区别微服务架构的意义拥抱开源的斗鱼关于未来上个月,斗鱼将基于 Go 语言的微服务框架 Jupiter 开源。作为国内知名的互联网直播公司,这也是斗鱼首次以公司的名义正式推出开源项目。近年来,得益于日渐增长的高并发业务需求,微服务架构开始在国内逐渐普及。同时,专为高并发而生的 Go 语言及其相关生态在国内的发展也突飞猛进。目前,市面上主流的微服务架构包括 Spring cloud、Dubbo 等,并且都有团队为之专门推出了对应的 Go 版本,...阅读全文

简书 2020-07-26 07:32:46 java余生

Golang学习笔记-Channel

Golang channel 作为Go的核心的数据结构和Goroutine之间的通信,是支撑Go语言高并发的关键 设计原理 Go 语言提供了一种不同的并发模型,也就是通信顺序进程(Communicating sequential processes,CSP)1。Goroutine 和 Channel 分别对应 CSP 中的实体和传递信息的媒介,Go 语言中的 Goroutine 会通过 Channel 传递数据。 先入先出 目前Channel收发操作先入先出的设计 先从Channel读取数据的G...阅读全文

Golang学习笔记-网络轮询器

网络轮询器 当前大多数的服务都是IO密集形的,应用程序需要花大量的时间进等待I/O操作的完成,网络轮询机制就是Go语言在运行的时候用来处理I/O操作的关键组件,它使用了操作系统提供的 I/O 多路复用机制增强程序的并发处理能力。 设计原理 网络轮询器不仅仅只是用于监控网络I/O,还能用于监控文件的I/O,它利用了操作系统提供的I/O多路复用模型来提升设备的利用率,以及程序的性能 I/O模型 操作系统中包含阻塞 I/O、非阻塞 I/O、信号驱动 I/O 与异步 I/O 以及 I/O 多路复用五种 ...阅读全文

简书 2020-07-26 07:32:44 LegendGo

容器化运维之路-k8s

1 容器编排和k8s(Kubernetes) 1.1 容器部署的困局容器部署的困境1 10台服务器如何编排 .资源能不能真的利用,真的需要所有服务器都上线,动态调整,如何调正,如果有2W台服务器怎么办2 容器合理的编排,容器的分配就叫容器编排k8s就是一个容器编排的工具1.2 容器编排工具解决了哪些问题1 自动化容器的部署和复制2随时扩展或收缩容器规模3 容器分组group,并且提供容器间的负载均衡(实现nginx功能)4 实时监控,即时故障发现,自动替换1.3 容器编排工具的比较docker ...阅读全文

简书 2020-07-26 07:32:44 陈朝辉_39f7

golang领域模型-聚合根

Aggregate 将实体、值对象、其他聚合在一致性的边界下之内组合成聚合(Aggregate) 咋看起来是一件轻松的任务,但在DDD众多的战术设计中该模式是最不容易理解的。 聚合是针对数据变化可以考虑成一个单元的一组 相关的对象。聚合使用边界将内部和外部的对象划分开来。每个聚合有一个根。这个根是一个实体,并且它是外部可以访问的唯一的对象。根可以保持对任意聚合对象的引用,并且其他的对象可以持 有任意其他的对象,但一个外部对象只能持有根对象的引用。如果 边界内有其他的实体,那些实体的标识符是本地化...阅读全文

Gox语言中访问Web Service(SOAP)服务-GX44

Gox对Web Service(SOAP)服务进行访问也是非常容易的,基本只需要用到tk包即可进行基本的服务请求发送和服务反馈接收,以及简单的XML处理。 下面是一个实际应用中的例子,仅将实际网址做了变化。 // 准备发送到Web Service的XML请求体 // 其中用“TX_”和“_TX”包含的是准备替换的文本 // 这里用了简化处理,如果需要严谨的XML文本生成 // 可以使用github.com/beevik/etree包(用github_beevik_etree引用) xmlT = ...阅读全文

简书 2020-07-26 07:32:42 陆满庭

2020-07-25:如何实现一个高效的单向链表逆序输出?

福哥答案2020-07-25: 1.链表反转。反转,输出,反转。 2.递归。 3.数组。遍历存数组,然后反向遍历数组。 4.栈。遍历存栈,然后pop栈输出。 golang代码采用第2种方法。代码如下: package test27_reverseprint import ( "fmt" "testing" ) //Definition for singly-linked list. type ListNode struct { Val int Next *ListNode } //go test...阅读全文

简书 2020-07-26 07:32:41 福大大架构师每日一题

git多仓协作问题以及解决方案

多仓协作的问题 一个项目可能会由多个代码仓构成。如果这些代码仓之间没有依赖关系,那么除了操作上的不方便,也不会有其他问题。但是, 如果这几个代码仓之间有依赖关系,那么单纯使用git管理就会存在问题。 例如有两个代码仓,代码仓A是功能源码仓,代码仓B是测试用例仓。 那么,代码仓B的特性用例集B‘的执行,就依赖于代码仓A对应特性A’的功能代码提交; 只有同时提交或者已经提交了,相关用例才能够成功执行。现在问题来了, 要追溯一些历史问题,怎么样才能够使得两个代码仓都回退到一个匹配的提交点上,使得源代码...阅读全文

简书 2020-07-26 07:32:40 刺猬窝窝头

golang 进度条功能实现

最近在做一个需求,功能很简单,就是开发一个轻量级客户端,将一个指定文件中的内容通过TCP发送到服务器。由于该文件特别大,有可能到达100G的数量级,因此处理起来会比较慢,为了给用户提供比较友好的展示界面,因此,在其中加入了进度条显示功能。 在这里,说一下我在实现该进度条功能时的一些思路。 成果演示 先看一下最终的成品效果展示: 该进度条一共分三部分组成,第一部分是主体进度条,第二部分是百分比,第三部分是当前完成的数据和总数据的一个动态展示。 源码分析 由于是要在终端上打印出进度条的效果,因此,主...阅读全文

Segmentfault 2020-07-31 14:32:35 禹鼎侯

Go: 关于锁的1234

在上一篇《踩坑记:Go服务灵异panic》里我们提到了 mutex 和 atomic ,感觉意犹未尽,这篇再展开一点。 - 锁 - 前面我们讲过好多面试题了,其实锁也很适合用来做套题,比如可以这么切入:sync.Mutex 是悲观锁还是乐观锁? 有些候选人不了解它们的区别,回答靠猜,缺乏逻辑以至于我都记不住。虽然这只是一个概念性的知识,但是却很能反映候选人的工作经验,比如读多写少的并发场景,乐观锁可以减少加锁冲突带来的开销。 当然大多数人还是知道的,于是可以继续问:你有了解过锁是怎么实现的吗? ...阅读全文

Segmentfault 2020-07-31 14:32:34 felix021

(2)Go的数据类型转换

1、基本数据类型的转换 Golang 和 java/c不同,Go在不同类型的变量之间赋值时需要显示转换。也就是说Golang中数据类型不能够自动转换 Go中,数据类型的转换可以是从 表示范围小-->表示范围大,也可以 范围大-->范围小; 在转换中,比如讲int64转换为int8,编译时不会出错,但是转换的结果是按照溢出处理 题1中,n2,n3在赋值时数据类型不对应。正确如下: 编译器报错 2、基本数据类型转string类型 在程序开发中,经常需要将基本数据类型转成string类型或者将stri...阅读全文

简书 2020-07-25 14:33:56 真是个点子王

Go slice扩容深度分析(来自掘金文章)

Go slice扩容深度分析 本文主要是对go slice的扩容机制进行了一些分析。环境,64位centos的docker镜像+go1.12.1。 常规操作 扩容会发生在slice append的时候,当slice的cap不足以容纳新元素,就会进行growSlice 比如对于下方的代码 slice1 := make([]int,1,) fmt.Println("cap of slice1",cap(slice1)) slice1 = append(slice1,1) fmt.Println("c...阅读全文

简书 2020-07-25 14:33:48 哆啦在这A梦在哪