08 2020 档案
摘要:流程 接口 # Request: method: GET url: api/v1.0/areas # data: no input data # Response: # 返回成功 { "errno": 0, "errmsg": "ok", "data": [ {"aid": 1, "aname":
阅读全文
摘要:项目启动 拆分原则 1、单一职责(一个服务只做一件事) 2、服务粒度适中 3、考虑团队结构 4、以业务模型切入 5、演进式拆分 6、避免环形依赖和双向依赖 如果还没有安装 beego 的话先安装 beego $ go get -u -v github.com/astaxie/beego $ go g
阅读全文
摘要:FastDFS概述 开源地址:https://github.com/happyfish100 余庆大佬用 c语言 编写的一款开源的分布式文件系统。 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,注重高可用、高性能等指标 冗余备份: 纵向扩容 线性扩容: 横向扩容, 增加容量 可以很
阅读全文
摘要:问题描述: 两个 go 程轮流打印一个切片。 Golang 实现: 使用两个 channel,只用来判断 package main import ( "fmt" "sync" ) // 两个 go 程轮流打印一个切片 func main() { ch1 := make(chan bool, 1) c
阅读全文
摘要:问题描述 拷贝大切片一定比小切片代价大吗? 解答 并不是,拷贝所有切片的代价都是一样的。 看一下源码,就很清楚了: type slice struct { array unsafe.Pointer len int cap int } 因为切片的底层有三个字段(一个 unsafe.Pointer,两个
阅读全文
摘要:比如: A = [1 3 7 6 4 5 2]; B = [3 5 6]; 如何把数组A中与数组B中的元素相同的元素删除,而剩余的元素还是按照原来的顺序排列? 即结果为:[1 7 4 2]。 [~, ia] = setdiff(A, B); res = A(sort(ia)); 欢迎访问我的个人网站
阅读全文
摘要:问题描述 翻转含有 中文、数字、英文字母 等任意字符串 示例 输入:"he師l發lo,世。+-*界,6" 输出:"6,界*-+。世,ol發l師eh" Golang 实现 package main import "fmt" func reverseString(s string) string { /
阅读全文
摘要:安装 go get github.com/gomodule/redigo/redis 安装完成后,可以自己创建一个 go 文件:test.go 内容如下: package main import "github.com/gomodule/redigo/redis" func main(){ conn
阅读全文
摘要:首先先说一下结论:没有。 在最新版本 Go 1.15 中, 在 runtime 部分中提到了一个改进: Converting a small integer value into an interface value no longer causes allocation. 意思是说,将小整数转换为
阅读全文
摘要:数据库结构 redis 是 key - value 的数据结构,每条数据都是一个键值对 键的类型是字符串 注意:键不能重复 值的类型分为5种:字符串(string)、列表(list)、哈希(hash)、集合(set)、有序集合(zset)。 数据库操作行为:增加、修改、获取、删除。 点击中⽂官⽹查看
阅读全文
摘要:简介 Redis 是一种高性能的 Key-Value 数据库。 Redis 中文官网 NoSQL 介绍 NoSQL是一种新出现的数据库(Not Only SQL),它的特点: 不支持 SQL 语法 存储结构跟传统关系型数据库中的那种关系表完全不同,NoSQL 中存储的数据都是 Key-Value 形
阅读全文
摘要:前言 前面我们为了解决go程同步的问题我们使用了channel, 但是go也提供了传统的同步工具. 它们都在go的标准库代码包 sync 和 sync/atomic 中. 下面我们来看一下锁的应用. 什么是锁呢? 就是某个协程(线程)在访问某个资源时先锁住, 防止其他协程的访问, 等访问完毕解锁后其
阅读全文
摘要:select的作用 Go里面提供了一个关键字 select, 通过 select 可以监听channel上的数据流动. select 的用法与 switch 语言非常类似, 由 select 开始一个新的选择块, 每个选择条件由 case 语句来描述. 与 switch 语句相比, select 有
阅读全文
摘要:Go语言中除了可以使用通道(channel)和互斥锁进行两个并发程序间的同步外,还可以使用等待组进行多个任务的同步,等待组可以保证在并发环境中完成指定数量的任务 在 sync.WaitGroup(等待组)类型中,每个 sync.WaitGroup 值在内部维护着一个计数,此计数的初始默认值为零。 等
阅读全文
摘要:简介 channel 是 Go 语言中的一个核心类型,可以把它看成管道。并发核心单元通过它就可以发送或者接收数据进行通讯,这在一定程度上又进一步降低了编程的难度。 channel 是一个数据类型,主要用来解决 go 程的同步问题以及 go 程之间数据共享(数据传递)的问题。 goroutine 运行
阅读全文
摘要:什么是 Goroutine goroutine 是 Go 并行设计的核心。goroutine 说到底其实就是协程,它比线程更小,十几个 goroutine 可能体现在底层就是五六个线程,Go 语言内部帮你实现了这些 goroutine 之间的内存共享。 执行 goroutine 只需极少的栈内存(大
阅读全文
摘要:前言 简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务。 随着硬件的发展,并发程序变得越来越重要。Web服务器会一次处理成千上万的请求。平板电脑和手机app在渲染用户画面同时还会后台执行各种计算任务和网络请求。即使是传统的批处理问题--读取数据,计算,写输出--现在也会用并发来隐藏掉I/
阅读全文
摘要:指针是一个代表着某个内存地址的值, 这个内存地址往往是在内存中存储的另一个变量的值的起始位置. Go语言对指针的支持介于Java语言和 C/C++ 语言之间, 它既没有像Java那样取消了代码对指针的直接操作的能力, 也避免了 C/C++ 中由于对指针的滥用而造成的安全和可靠性问题. 指针地址和变量
阅读全文
摘要:前言 结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。 用结构体的经典案例:学校的学生信息,每个学生信息包含一个唯一的学生学号、学生的名字、学生的性别、家庭住址等等。所有的这些信息都需要绑定到一个实体中,可以作为一个整体单元被复制,作为函数的参数或返回值,
阅读全文
摘要:前言 哈希表是一种巧妙并且实用的数据结构。它是一个无序的 key/value对 的集合,其中所有的 key 都是不同的,然后通过给定的 key 可以在常数时间复杂度内检索、更新或删除对应的 value。 在 Go 语言中,一个 map 就是一个哈希表的引用,map 类型可以写为 map[K]V,其中
阅读全文
摘要:YReal 是真实的数据,YPred 是预测的数据。 残差平方和(SSE) 计算公式 代码实现 sse = sum((YReal - YPred).^2); 均方误差(MSE) 计算公式 代码实现 mse = sum((YReal - YPred).^2)./n; 平均绝对误差(MAE) 计算公式
阅读全文
摘要:在Go语言中,条件语句主要包括有if 、 switch 与 select。 注意: Go语言中没有三目运算符,不支持 ?: 形式的条件判断。 if 语句 最简单的if语句 最简单的 if 语句的基本语法: if 条件判断 { // 在当前条件判断为true时执行 } 条件判断如果为真(true),那
阅读全文
摘要:信号处理 简介 现在我们已经把按钮添加到窗口中了,但是有一个问题:点击按钮没有反应。我们既然添加的是按钮,肯定希望当我们点击一个按钮时,能够做一些事情,这就用到了信号处理。 学习图形界面编程,我们会经常接触到“信号”这个名词。GTK中的“信号”实际上是一种软件中断。“中断”在我们生活中经常遇到,譬如
阅读全文
摘要:控件 控件简介 控件是对数据和方法的封装。控件有自己的属性和方法。属性是指控件的特征。方法是指控件的一些简单而可见的功能。如按钮就是一个控件,这个按钮是方形的,里面有张图片,这是我们能看到外观属性,同时,这个按钮具备被人按下的功能。 GTK 中控件主要分为两类:容器控件,非容器控件。 容器控件:它可
阅读全文
摘要:简单的空白窗口 在环境配置完成之后,需要在 github 上下载 go-gtk。 在配置好的 GOPATH 的 src 目录下用 git 下载即可。 当然,也可以在 GOPATH 以外的目录使用 go mod。 在goland中的设置: 第一次运行点击这里: 示例代码: package main i
阅读全文
摘要:Go版GTK环境搭建 下载安装MSYS2 官网下载 MSYS2(Minimal SYStem 2)是一个MSYS的独立改写版本,主要用于shell命令行开发环境。同时它也是一个在Cygwin(POSIX兼容性层)和MinGW-w64(从"MinGW-生成")基础上产生的,追求更好的互操作性的Wind
阅读全文
摘要:在做一些算法题时经常要用到二维切片,所以这里整理一下创建二维切片的方法,方便日后查阅。 package main import "fmt" func main() { // 初始化方法1 row, column := 3, 4 var answer [][]int for i := 0; i < r
阅读全文
摘要:比如想要把int类型的123转为string类型的"123", 应该如何操作呢? 如果按照下面的写法. 那么我会得到"{", 而不是"123"。 package main import "fmt" func main() { i := 123 s := string(i) fmt.Println(s
阅读全文
摘要:这个问题在这里给出了解答:https://stackoverflow.com/questions/60561748/why-go-doesnt-have-a-tenary-conditional-operator 虽然Go中没有三元运算操作,但是可以使用以下方法实现同样的结果: if expr {
阅读全文
摘要:运算符 Go语言中常见的运算符有算术运算符, 赋值运算符, 关系运算符, 逻辑运算符等. 算术运算符 运算符 描述 示例 结果 + 相加 10 + 3 13 - 相减 10 - 3 7 * 相乘 10 * 3 30 / 相除 10 / 3 3 % 取余 10 % 3 1 注意: 自增( ++ )和自
阅读全文
摘要:相对于变量, 常量是恒定不变的值, 经常用于定义程序运行期间不会改变的那些值. 常量的定义使用 常量的声明与变量的声明很相似, 只是把 var 换成了 const, 常量在定义的时候必须赋值. 在程序开发中, 我们用常量存储一直不会发生变化的数据. 例如: Π, 身份证号码等. 像这类数据, 在整个
阅读全文
摘要:直接看个例子: 每行包含两个整数 a 和 b 对于每行输入对应输出一行 a 和 b 的和 输入 1 5 输出 6 使用 fmt.Scan 按空格读取 fmt.Scan 只识别空格,同时会将换行判断为空格,做法如下 package main import ( "fmt" "io" ) func mai
阅读全文
摘要:我们前面在输出与输入字符串类型, 整数类型等都指定了对应的格式化. 那么Go语言中还有哪些格式化呢? 格式 含义 %% 一个 % 字面量 %b 一个二进制整数值(基数为2), 或者是一个用科学计数法表示的指数为2的浮点数. %c 字符型. 可以把输入的数字按照ASCII码相应的转换为对应的字符. %
阅读全文
摘要:关于字符与字符串的区别: 字符: 单引号 往往只包含一个字符, 转义字符除外: \n 字符串: 双引号 字符串有一个或者多个字符组成 字符串都是隐藏了一个结束符: \0 下面通过代码来看一下两者的区别: package main import "fmt" func main() { var a by
阅读全文
摘要:Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有切片、结构体、函数、map、通道(channel)等。 Go 语言的基本类型和其他语言大同小异。 1. 整型 整型可以分成以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、
阅读全文
摘要:前面我们所写的程序, 都是直接给变量赋值. 但是在很多情况下, 我们希望用户通过键盘输入一个数值, 然后存储到某个变量中, 接着将该变量的值取出来, 进行操作. 那么Go语言中怎么接收用户的键盘输入呢? 具体操作如下: 第一种形式:fmt.Scanf() package main import "f
阅读全文
摘要:输出就是将数据信息打印到电脑屏幕上. 本节我们就来学习一下Go语言中的三种输出方式: fmt.Print()、fmt.Println()、fmt.Printf(). fmt.Print() fmt.Print() 主要的一个特点就是打印数据时 不换行. package main import "fm
阅读全文
摘要:什么是变量? 我们应该怎么去理解变量? 在这里我要举一个例子: 大家应该都知道王者荣耀这个游戏. 当我们在玩王者荣耀的时候, 我们操控的英雄的血量是不断变化的, 这个血量是存在内存中的. 那么这个血量就是一个变量. 在程序运行的过程中, 其值可以改变的量, 我们就称为变量. 通过上面例子可以发现:
阅读全文
摘要:Go 语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则。 必须以一个字母或者下划线(_)开头,后面可以跟任意数量的字母、数字或下划线。 在 Go 语言中,大小写字母是不同的。 Go 语言中有 25 个关键字,不能用于自定义名字: break default
阅读全文
摘要:在上一节中, 我们学会了怎样写一个 Hello Go . 但是, 大家有可能还没有明白为什么那么写, 下面我们通过注释来了解一下. 我们通过用自己熟悉的语言(例如,汉语),在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。 以后,在公司中做开发,其他程序员会经常阅读我们写的
阅读全文
摘要:本节我们来学习写一个最简单的 Go 程序: 打印 Hello Go. 第一个Go程序, 只要跟着做, 留下个印象就可以. 用 Goland 创建一个 hello_go.go 文件(后缀为 .go ). 文件内容是 package main import "fmt" func main() { fmt
阅读全文
摘要:前言 前面我已经讲过 GoLand 的安装,当然,你也可以使用 VS Code 来进行开发。 VS Code 是微软开源的一款编辑器, 本文主要介绍如何使用VS Code搭建Go语言的开发环境. 下载与安装VS Code 官方下载地址: https://code.visualstudio.com/D
阅读全文
摘要:前言 前面我们已经将GO的环境安装好了,那么是否可以进行开发了呢? 可以,但是为了能够更高效率的开发,我们还需要下载一个软件,该软件的作用就是方便我们能够快速的编写GO指令,快速的运行我们编写好的GO指令。 这个软件就是 GoLand ,就像我们要处理文字安装 Word ,处理表格用 Excel 等
阅读全文

浙公网安备 33010602011771号