二叉树遍历

以前在数据结构的书上学过二叉树的遍历,老师讲了前序、中序、后序遍历三种,但是只是讲了一下概念,在纸上画一下遍历的过程,并没有讲代码的实现。<!--more-->算法思想先序遍历前序遍历的顺序是 根节点-左子树-右子树 。意思是从根节点开始,要一直访问左子树,直到没有左孩子,然后访问右子树。(图片来自知乎)理解起来应该是很简单的,不过实现起来就不一样了,图中演示的是用递归的方式遍历的,事实上还可以用迭代来实现,也就是 DFS 和 BFS。中序遍历后序遍历在这个算法演示 的网站上没有找到后序遍历的图...阅读全文

Segmentfault 2020-10-12 14:32:34 五行缺金

go笔记-类型转换

go 存在 4 种类型转换分别为:断言、强制、显式、隐式。通常说的类型转换是指断言,强制在日常不会使用到、显示是基本的类型转换、隐式使用到但是不会注意到。断言、强制、显式三类在 go 语法描述中均有说明,隐式是在日常使用过程中总结出来。1、断言通过判断变量是否可以转换成某一个类型(1)使用断言表达式文档地址var s = x.(T) 或 s, ok := x.(T),注意第一种断言失败会直接panic,开发中尽量使用第二种例: var x interface{} = 7 // x has dyn...阅读全文

简书 2020-10-09 16:32:49 陈德华

17.Golang设计模式之迭代器模式

迭代器模式 GitHub代码链接 迭代器模式(Iterator Pattern)是JAVA和.NET中常用的模式,这种模式用于顺序访问集合中的元素。 什么是迭代器模式 迭代器提供一种方法顺序访问一个对象各个元素,而无需暴露对象的内部表示。 迭代器模式解决了什么问题 不同的方式遍历整个集合,把在元素之间游走的责任交给迭代器,而不是集合对象。 优点 它支持不同的方式遍历集合对象 迭代器简化了聚合类 在同一个聚合上面可以有多个遍历 迭代器模式中,新增聚合类和迭代器都很方便,无需新增代码 缺点 迭代器模...阅读全文

简书 2020-10-09 15:32:43 ShawnLee_123

easy-sys

easy-sys是一个通用的后台管理系统,实现了用户、菜单、角色、国际化管理四大模块。 其中菜单模块可以管理系统菜单,并且管理菜单对应的权限。角色管理中可以管理角色拥有哪些权限及菜单,角色拥有哪些用户。国际化管理中实现了系统中所有的国际化的后台管理,省去了用户需要在json文件中维护国际化的麻烦。 easy-sys-java是easy-sys后端的Java语言实现。地址https://gitee.com/fantasylan/easy-sys-java easy-sys-go是easy-sys后...阅读全文

简书 2020-10-09 15:32:43 莫荩堇

easy-sys

easy-sys是一个通用的后台管理系统,实现了用户、菜单、角色、国际化管理四大模块。其中菜单模块可以管理系统菜单,并且管理菜单对应的权限。角色管理中可以管理角色拥有哪些权限及菜单,角色拥有哪些用户。国际化管理中实现了系统中所有的国际化的后台管理,省去了用户需要在json文件中维护国际化的麻烦。easy-sys-java是easy-sys后端的Java语言实现。地址https://gitee.com/fantasylan/easy-sys-javaeasy-sys-go是easy-sys后端的g...阅读全文

Go语言中文网 2020-10-09 14:45:58 FantasyLan

【golang小工具】获取目录下文件路径信息写入Excel并打包上传远程服务器

@TOC ToolTest 整体说明 最近在练习go代码,恰好工作中有一些场景需要经常去访问某个目录下所有文件,将相对路径写入Excel并上传系统,同时打包文件上传服务器。利用工作之余,练练手学习写了一个小工具,主要实现功能如下: 获取指定目录下所有文件路径信息 将获取文件相对路径信息保存至Excel文件中 将对应目录下所有文件打入tar包 将war包上传至指定的服务器路径 完整代码下载链接 代码实现 infoFromYaml.go 读取 yaml 配置文件信息,并保存在结构体变量中 导入包 i...阅读全文

简书 2020-10-09 11:32:51 云之君兮鹏

PHP 和 Go 实现环路链表检测

原文链接:何晓东 博客环路链表检测给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl...解题思路 1遍历链表,同时将每次的结果放到 map 中,如果有元素重复出现,则是有环形链表代码/** * Definition for singly-linked list. * type ListNode ...阅读全文

Segmentfault 2020-10-12 10:32:33 hxd_

Golang连接池

package controllers import ( "io" "sync" "time" "errors" "fmt" ) var ( ErrInvalidConfig = errors.New("invalid pool config")//error().Error()//errors.New("invalid pool config") ErrPoolClosed = errors.New("pool closed") ) // 1、如果连接时数量已经满了,等待,等待一段时间后重新获...阅读全文

简书 2020-10-09 09:32:41 ES_KYW

2020-09-23

1、进程和线程的区别 答:计算机由CPU和操作系统组成,CPU执行计算任务,操作系统执行资源调度任务。在操作系统上会有很多软件可以执行,每个软件的执行系统都会单独分配资源,即一个独立的进程,进程和进程之间是相互独立的,每个进程有单独的分配内存空间,进程是系统进行资源分配和调度的一个独立单位。每个进程都至少有一个线程,线程执行代码程序,共享进程的数据资源,线程是轻量级的,有自己的堆栈、寄存器,共享进程空间,一个进程可以有多个线程,并发执行由CPU控制时间段,做上下文切换,上下文切换由调度器控制,在...阅读全文

简书 2020-10-09 09:32:41 ES_KYW

GoMod 文档翻译

GO MOD Go Mod : Golang 的包管理工具之一 中国代理 添加代理源 https://goproxy.cn Go Mod 常用指令集 官方WIKI说明 链接:Go-Mod_Github/wiki Go Mod 的使用 在使用Go Mod之前,需要将环境变量GO111MODULE设置为auto或者on,如果没有设置,将会默认开启。 也可以在运行Go指令之前,显示声明环境变量GO111MODULE=on GO111MODULE 应该是 go mod 的1.11版本 项目初始化 $ g...阅读全文

不同语言对单例模式的不同实现

前言前段时间在用 Python 实现业务的时候发现一个坑,准确的来说是对于 Python 门外汉容易踩的坑;大概代码如下:class Mom(object): name = '' sons = [] if __name__ == '__main__': m1 = Mom() m1.name = 'm1' m1.sons.append(['s1', 's2']) print '{} sons={}'.format(m1.name, m1.sons) m2 = Mom() m2.name = 'm2...阅读全文

Segmentfault 2020-10-12 09:32:33 crossoverJie

[开源阅读]snowflake-Go

github地址:https://github.com/bwmarrin/snowflake 总共就300行代码,主要逻辑也就100行吧。 这是一款大数据量下的id生成器的snowflake-golang实现,snowflake生成的id (int64类型)包含毫秒时间戳、机器id、同一毫秒下的自增id这3部分数据,这里面主要是位运算的妙用(好多开源项目都会用到位运算) 用int64的64bit存储以下部分: 12bit的自增id step(同一毫秒下) 10bit的机器id node(多台机器...阅读全文

简书 2020-10-09 03:32:40 laotoutou

GO语言实现 一 快速排序(一)

快速排序被誉为20世纪科学和工程领域的十大算法之一。听名字就能了解,快速排序的特点,就是快 快速排序 快速排序采用了二分递归的思想,通过一趟排序将整个数组划分为两个部分,低位部分的值全部小于高位部分的值,然后对低位和高位部分分别排序 快速排序算法的具体步骤如下: 对数组 arr 进行随机洗牌 划分数组,我们通过交换操作,找到合适的 j,保证 j 左边的元素全部小于 arr[j] j 右边的元素全部大于 arr[j] 对每一块被划分的切片进行排序 qs1.png 我们可以通过双指针在O(n)的时间...阅读全文

简书 2020-10-08 22:32:42 YXCoder

golang Error Wrapping

go1.13中引入err wraping机制 1.13前函数返回一个error errors.New()创建一个errorString errorString 只包含了一个字符串 实现了error接口的Error方法 当函数嵌套返回时 嵌套层数更深的error只保留了字符串信息 丢失了原始的类型 // Each call to New returns a distinct error value even if the text is identical. func New(text strin...阅读全文

简书 2020-10-08 22:32:40 nil_ddea

gin框架sentinel流量控制初体验

image.png 流量控制设计理念 流量控制有以下几个角度: 资源和资源之间的关系; 运行指标,例如 QPS、线程池、系统负载等; 控制的效果,例如直接限流、冷启动、匀速+排队等待等。 Sentinel提供了几个组件让用户去实现相关的流控方案: 基于QPS的流量控制:流量控制 基于协程数的隔离流控:并发隔离控制 基于热点参数的流量控制:热点参数限流 基于系统指标的自适应流控:系统自适应流控 Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果。 https:...阅读全文

简书 2020-10-08 21:32:43 SailSea

想要4个9?本文告诉你监控告警如何做

“你说说,没有仪表盘的车,你敢开吗?”“没有仪表盘的车开在路上,你怎么知道现在是什么情况?”“客户说你这车又崩了,咋知道什么时候好的?​啥时候出的问题?”前言将思考转换到现实的软件系统中,可想而知没有监控系统的情况下,也就是没有 ”仪表盘“ 的情况下实在是太可怕了。你的故障永远都是你的客户告诉你的,而...在什么时候发生的,你也无法确定,只能通过客户的反馈倒推时间节点,最后从错误日志中得到相对完整的日志信息。问题更要命的是你无法掌握主动权,错误日志有可能会有人漏记录,平均修复时间(MTTR)更不...阅读全文

一文搞定macOS下Go语言开发环境的搭建

1.下载安装 Go语言 下载地址:https://golang.google.cn/dl/ image.png 下载完成后,直接双击 文件进行安装 image.png 一路点击next即可 image.png 最后在终端执行 go version 命令,如过能获取到版本信息则说明安装成功了 2.配置环境变量 在终端输入go env会打印出go 相关的所有环境变量。 这些环境变量,仅设置下面这两个就足够了 一个是GO111MODULE 设置为 on,表示使用 go modules 模式 $ go ...阅读全文

简书 2020-10-08 20:32:46 老朱别问

Golang标准库——expvar

expvar包提供了公共变量的标准接口,如服务的操作计数器。本包通过HTTP在/debug/vars位置以JSON格式导出了这些变量。 对这些公共变量的读写操作都是原子级的。 为了增加HTTP处理器,本包注册了如下变量: cmdline os.Args memstats runtime.Memstats 有时候本包被导入只是为了获得本包注册HTTP处理器和上述变量的副作用。此时可以如下方式导入本包: import _ "expvar" type Var type Var interface { ...阅读全文

简书 2020-10-08 20:32:41 DevilRoshan