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

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

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

Go TCP

网络编程 Golang主要设计目标之一是面向大规模后端服务程序,网络通信是服务端程序必不可少且至关重要的一环。 网络应用程序的设计模式可分为两种结构,分别是C/S结构和B/S结构。 C/S结构是传统的网络应用设计模式,即客户端(Client)和服务端(Server)模式。此模式需在通讯两端各自部署客户机和服务器来完成数据通信。 B/S结构表示浏览器(Browser)和服务器(Server)模式,此模式只需在一端部署服务器,另一端使用操作系统自带的浏览器即可完成数据传输。 因此网络编程也可分为两种...阅读全文

简书 2021-02-20 06:32:43 JunChow520

go 1.16 embed 实现资源文件(html, css, js等)内嵌

Golang 发布1.16,如今通过//go:embed 注解内嵌资源文件并打包到二进制文件,关于//go:embed的使用网上很多教程,我想也不需要我在此在啰嗦一遍,今天的重点:用go开发网站时候内嵌的css、html、js以及图片等资源如何内嵌和渲染到网页。 含有资源文件的demo项目结构 1. 在没有//go:embed支持之前的实现serve文件的方式如下: package main import ( "log" "net/http" ) func main() { mux := htt...阅读全文

简书 2021-02-20 02:32:42 生活简单些

golang官方嵌入文件到可执行程序

目录前言示例程序嵌入文件直接访问嵌入文件列表总结前言在go官方出嵌入文件的方法前我在网上找过,并且自己还研究过,虽然没有问题,但是既然官方支持还是用起来吧。看了下go源码embed/embed.go很简单,并且看embed/internal/embedtest/embed_test.go就知道如何使用。示例程序嵌入文件直接访问原理是使用go:embed标签来完成。下面是直接读取文件内容,需要注意下面几点。文件不是utf8编码时,输出内容为中文会乱码。测试过嵌入文件只能为源码文件同级目录和子目录下...阅读全文

51CTO博客 2021-02-19 20:25:39 mb601ce0d29b15f

2021-02-19:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角。沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和。请问最小距离累加和是多少?

2021-02-19:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角。沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和。请问最小距离累加和是多少? 福哥答案2021-02-19: 自然智慧即可。 一般会考虑dp[i][j]的右边和下边,谁小选谁,虽然你能确定下一步是最小值,但是下一步的以后就不一定是最小值了,不是路径最优。逆向思维,dp[i][j]的左边和上边,谁小选谁,左边和上边已经确定了,肯定路径最优。这道题可以用空间压缩技巧,所以dp不需要二维数组,用一维数组...阅读全文

简书 2021-02-19 23:32:42 福大大架构师每日一题

云手机基本原理与构建(云手机源码怎样炼成的?)

云手机基本原理与构建(云手机源码怎样炼成的?)一、什么是云手机云手机是虚拟化技术,最终为用户/客户在云端提供的一个个安卓实例(操作系统)。用户/客户可以通过视频流的方式,远程实时控制云手机,最终实现安卓原生APP及手游的云端运行。二、云手机实现原理 三、远程连接协议VNC/SPICE/RDP所有的云手机都离不开远程桌面连接协议,若没有远程桌面连接协议,要实现云手机屏幕的控制则需要自行设计远程桌面连接协议。目前较为常见的云手机连接协议,大多使用VNC方式实现云手机桌面作为视频流进行传输。1、三种协...阅读全文

简书 2021-02-19 23:32:42 Yelee2021

golang1.16新特性速览

今天是假期最后一天,明天起大家也要陆续复工了。golang1.16也在今天正式发布了。原定计划是2月1号年前发布的,不过迟到也是golang的老传统了,正好也趁着最后的假期快速预览一下golang1.16的新特性吧。本文索引语言內建的资源嵌入支持支持arm64go modules的新特性 GO111MODULE现在默认为ongo build不在更改mod相关文件go install的变化新的GOVCS环境变量相对路径导入不在被允许标准库的变化 testingioutils包已经废弃tcp半连接队...阅读全文

51CTO博客 2021-02-19 20:50:25 mb601ce0d29b15f

Golang源码探索----GC的实现原理(2)

参考链接: Python中的屏障对象Barrier Objectsmcentral向mheap申请一个新的span会使用grow函数: 1// grow allocates a new empty span from the heap and initializes it for c's size class. 2func (c *mcentral) grow() *mspan { 3 // 根据mcentral的类型计算需要申请的span的大小(除以8K = 有多少页)和可以保存多少个元素 4...阅读全文

51CTO博客 2021-02-19 00:14:28 wx592a7561e9493

重温Golang要点-常量、字符串、类型转换

参考链接: Go-常量文章目录 重温Golang要点-常量、字符串、类型转换2 常量、字符串、类型转换2.1 常量2.2 字符串2.3 类型转换 重温Golang要点-常量、字符串、类型转换 2 常量、字符串、类型转换 2.1 常量 定义赋值之后不能更改值!不能用 := 来定义! const pi = 3.14const name = "weizheng"const married = trueconst sex = 'm' 2.2 字符串 字符串内容由双引号""或者反单引号==``==包含在内...阅读全文

51CTO博客 2021-02-18 01:30:53 wx592a7561e9493

Golang- GO语言学习笔记之定义变量

参考链接: Go-变量目录 Golang 编程注意事项 定义变量 包内变量 函数内变量 总结: 内建变量类型 bool, string 整数类型 byte, rune float32,float64,complex64,complex128 常量与枚举 常量 使用常量定义枚举类型 Golang 编程注意事项 go语言定义的变量一定要被使用,不然会报错方法体()和{一定要连写,不能换行使用fmt.Printf时需要自己手动换行注释用 // 定义变量 变量类型写在变量名之后编译器可以推测变量类型没有...阅读全文

51CTO博客 2021-02-18 01:29:51 wx592a7561e9493

golang 程序结构

参考链接: Go-程序结构1、标识符:以字母或下划线打头,后可接多个字母下划线数字 2、关键字 包导入声明:import package 程序实体声明及定义:var type func interface map struct chan const 流程控制:if continue for return go case goto switch select else break default defer fallthrough range 空接口:_ 3、常量 隐式定义:const Pi = ...阅读全文

51CTO博客 2021-02-18 01:26:42 wx592a7561e9493

Go string 一清二楚

字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,我们务必深入学习一下,做到一清二楚。前言字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,我们务必深入学习一下,做到一清二楚。本文假设读者已经知道切片(slice)的使用,如不了解,可阅读 Go 切片 基本知识点为了更好的理解后文,推荐先阅读 Unicode 字符集,UTF-8 编码是什么In Go, a string is in effect a read-only slice of bytes....阅读全文

51CTO博客 2021-02-19 20:58:13 mb601ce0d29b15f

go好用的类型转换第三方组件

Cast介绍开源地址https://github.com/spf13/castCast是什么?Cast是一个库,以一致和简单的方式在不同的go类型之间转换。Cast提供了简单的函数,可以轻松地将数字转换为字符串,将接口转换为bool类型等等。当一个明显的转换是可能的时,Cast会智能地执行这一操作。它不会试图猜测你的意思,例如,你只能将一个字符串转换为int的字符串表示形式,例如“8”。Cast是为Hugo开发的,Hugo是一个使用YAML、TOML或JSON作为元数据的网站引擎。为什么使用Ca...阅读全文

51CTO博客 2021-02-19 20:38:18 mb601ce0d29b15f

go-admin在线开发平台学习-2[程序结构分析]

紧接着上一篇,本文我们对go-admin下载后的源码进行分析。首先对项目所使用的第三方库进行分析,了解作者使用的库是否是通用的官方库可以有助于我们更快地阅读程序。接着对项目的main()方法进行分析,因为程序使用cli的方式启动,对cli不同的命令进行分析。基于此俩点开始工作。go-admin中使用的第三方库cobra强大的cli封装,支持命令嵌套cast简单安全的类型转换casbin轻量级开源访问控制框架,采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于...阅读全文

51CTO博客 2021-02-19 20:33:20 mb601ce0d29b15f

go语言之并发

参考链接: Pythonn编程技巧和窍门| 2(用于竞争性编程的语言)2019独角兽企业重金招聘Python工程师标准>>> 简介 多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式需要有一个极其简洁的内核,还有在此之上丰富的外延,可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 并...阅读全文

51CTO博客 2021-02-19 03:51:14 wx592a7561e9493