满二叉树、完全二叉树、平衡二叉树、最优二叉树
一、满二叉树 一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k)-1,则它就是满二叉树。) 二、完全二叉树 若设二叉树的深度为k,除第k层外,其它各层(1~k-1)的结点数都达到最大个数,第k层所有的结点都连续集中在最左边,这就是完全二叉树。 三、平衡二叉树 ...
一、满二叉树 一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k)-1,则它就是满二叉树。) 二、完全二叉树 若设二叉树的深度为k,除第k层外,其它各层(1~k-1)的结点数都达到最大个数,第k层所有的结点都连续集中在最左边,这就是完全二叉树。 三、平衡二叉树 ...
读写锁的特点 读写锁区别与互斥锁的主要区别就是读锁之间是共享的,多个goroutine可以同时加读锁,但是写锁与写锁、写锁与读锁之间则是互斥的 写锁饥饿问题 因为读锁是共享的,所以如果当前已经有...golang...
参考博文基本概念僵尸进程:是所有进程都会进入的一种进程状态,子进程退出,而父进程并没有调用wait()或waitpid()获取子进程的状态信息,那么子进程的PID和进程描述符等资源仍然保存在系统中,这种进程称之为僵尸进程。僵尸进程会一直以终止状态(释放了内存等资源)保持在进程表里并会一直等待父进程获取其退出状态,但父进...
原文 写完代码后,我们一般这样gitadd.//添加所有文件gitcommit-m"本功能全部完成" 执行完commit后,想撤回commit,怎么办? 这样凉拌:gitreset--softHEAD^ 这样就成功的撤销了你的commit注意,仅仅是撤回commit操作,您写的代码仍然保留。 说一下个人理解:HEAD...
序言在GoLang开发过程中,经常会遇到「匿名函数」和「闭包」,但是对这两个概念始终是一知半解,因此决定认真整理一下以解答这一疑惑。一、什么是匿名函数?首先,什么是「匿名函数」。匿名函数,顾名思义就是没有名字的函数,我们从一个简单的例子开始介绍。1.不带参数的匿名函数packagemainimport("fmt")fu...
之前文章中介绍的互斥锁虽然能够保证同串行化,但是却保证不了执行过程中的中断。要么成功、要么失败,没有中断的情况,我们叫它叫原子性,这种由硬件 CPU 提供支持的特性,是非常可靠的。百度百科上关于原子操作的介绍。原子操作由 sync/atomic 包提供操作支持。加法(add)
最近准备写一些关于golang的技术博文,本文是之前在GitHub上看到的golang技术译文,感觉很有帮助,先给各位读者分享一下。 前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们...
(type A has no field or method Name) } 标签如下面在字段后面用`` 包起来的是标签,主要是通过反射来序列化和反序列化,具体由反射章节来讲。type User struct { Id int `json:"id"` Account string `json:"account" fo...
现在我们想测试Target函数,但是由于调用的A函数依赖于自己的某个函数,这里就是A调用了rpc接口拉别人接口数据,我们想mockA接口的目标是,想直接拿到A返回的数据即可,直接采用gomock方式,行不通,自己测试了一下,发现要不断的mock 别人接口所依赖的其他接口,非常麻烦,通过注入代码或者后面第三种方式替换函数...
前言嗨,大家好,我是asong,鸽了好久,其实元旦就想写一下这篇文章,但是因为喝酒喝断片了,养了三天才缓过来,就推迟到这个周末了,不过多追溯了,有点丢人。今天与大家来聊一聊go中的关键字defer,目前很多编程语言中都有defer关键字,而go语言的defer用于资源的释放,会在函数返回之前进行调用,它会经常被用于关闭...
【Go语言入门系列】前面的文章:【Go语言入门系列】(六)再探函数【Go语言入门系列】(七)如何使用Go的方法?【Go语言入门系列】(八)Go语言是不是面向对象语言?1.引入例子如果你使用过Java等面向对象语言,那么肯定对接口这个概念并不陌生。简单地来说,接口就是规范,如果你的类实现了接口,那么该类就必须具有接口所要...
##go语言中的for循环*假如给你一个字符串让你遍历获取其中的内容,或者查找其中的是否包含某个字符串,你会如何做?*####理所当然的我们选择了for循环来进行遍历在go语言中使用比较多的两个循环一个是**fori**,一个是**forrange**,这两者都能够很有效的对一个集合体进行遍历。(string也是一个集...
1、sudo apt-get install mysql-server 提示继续执行输入Y 等待提示设置密码,此密码是以后登录数据库的密码 重复上一步设置的密码 2、sudo apt-get install mysql-client 3、sudo apt-get install ...
内建map切忌开箱即用Golang中,map是引用类型,如指针切片一样,通过下面的代码声明后指向的是nil。这点在golang官方文档中也说明了,所以千万别直接声明后就使用,开始可能经常会犯下面的错:...
go time包定时器 golang的time包的Timer和Ticker都可以实现定时功能,两者的区别是Timer用于定时执行一次的任务,Ticker用于循环定时执行多次任务。 Stop用于关闭定时器,在关闭后,将不会往定时器发送信息。 官方...
在上一篇文章中,我们介绍了Gmqtt的基本特性以及钩子函数的基本使用方法。本篇我们来详细介绍Gmqtt的插件机制,以及如何编写插件。前文回顾Gmqtt——Go语言实现的MQTT broker 项目地址:https://github.com/DrmagicE/gmqttsession的生命周期根据MQTT协议规范,每个客...
IMEI校验码算法: (1).将偶数位数字分别乘以2,分别计算个位数和十位数之和 (2).将奇数位数字相加,再加上上一步算得的值 (3).如果得出的数个位是0则校验位为0,否则为10减去个位数 如:35 89 01 80 69 72 41 偶数位...
今天看到HN的一篇关于 Go2 Generics 的讨论。有网友说到: Ken Thompson and Rob Pike are mostly out not at all involved with Go anymore. They are 2/3 of the original creators. It’s d...
用在win上用telnet测试发现连接可以长达10分钟保持不断,再次输入http请求仍然可以响应,实际上可不止10分钟,因为我只测试了10分钟,这种长连接会在某些情况下导致服务器问题。怎样强行中断连接? 在数据量大的...
如何快速的创建一个属于自己的博客 写给想要自学创建自己博客的同学的话 现在创建博客很方便 自购服务器 自购域名 搭建宝塔平台 一键搭建博客 对博客想干啥就干啥 网上现在教程很多,每一步都有足够多的教程。...
主函数 main.go // testHtmlLogin project main.go package main import ( "fmt" "io/ioutil" "net/http" "os" . "github.com/soekchl/myUtils" ) var ( change = m...
这里写目录标题下载golang的Docker镜像使用Golang镜像 下载golang的Docker镜像 docker search golang 查询Golang的镜像信息。 选择使用第一个 执行命令 docker pull docker.io/golang 来下载 golang 的官方镜像 ...
5.函数 函数声明 递归 多返回值 错误 函数值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 ...函数声明func name(parameter-list) (result-list) { ...//result-list中可以声明返回...
NATS基本介绍NATS基础简介NATS是一个简单、安全、可扩展的高效消息系统,它可以实现分布式部署,横向扩展。主要运用在云本地应用、IoT基础消息设施和微服务架构中。NATS由Apcera team维护,主要包括了NATS Server ...
概念 发布/订阅(Publish/subscribe或pub/sub)是一种消息范式,消息的发送者(发布者)不是计划发送其消息给特定的接收者(订阅者)。而是发布的消息分为不同的类别,而不需要知道什么样的订阅者订阅。...