流程控制 选择结构(分支语句) 因为switch只能匹配固定值,推荐使用if-else做条件筛选 if-else判断 package main import "fmt" func main() { var tmpA int fmt.Scanln(&tmpA) if tmpA >= 90 { fmt.Println("tmpA >= 90") } else if tmpA < 90 && tmpA >= 60 { fmt.Pr…
流程控制 选择结构(分支语句) 因为switch只能匹配固定值,推荐使用if-else做条件筛选 if-else判断 package main import "fmt" func main() { var tmpA int fmt.Scanln(&tmpA) if tmpA >= 90 { fmt.Println("tmpA >= 90") } else if tmpA < 90 && tmpA >= 60 { fmt.Pr…
今天这篇笔记我们来记录Channel 和 Select, Go语言并发中Channel是goroutine传递数据的桥梁,是非常重要的一个工具。 定义Channel 双向Channel 要定义一个channel很简单,只需要在类型前面加上chan就可以了, stringStream := make(chan string) 这样就是定义和实例化了一个string 类型的双向channel, 先来看一个Hello World的例子 func main() { stringStream := make(chan str…
0.1、索引 https://blog.waterflow.link/articles/1662974432717 1、进程 一个进程包含可以由任何进程分配的公共资源。这些资源包括但不限于内存地址空间、文件句柄、设备和线程。 一个进程会包含下面一些属性: Process ID:进程ID Process State:进程状态 Process Priority:进程优先级 Program Counter:程序计数器 General purpose register:通用寄存器 List of open files:打开…
0、转载 go-zero docker-compose 搭建课件服务(三):编写courseware api服务 0.1源码地址 https://github.com/liuyuede123/go-zero-courseware 1、生成api相关文件 # 到之前创建的courseware/api目录下 goctl api go -api courseware.api -dir . -style gozero 2、courseware/api/etc/user.yaml下增加rpc配置 Name: coursewa…
四川麻将胡牌规则,参考腾讯麻将“血流成河”规则 详细代码如下: package main import ( "bytes" "fmt" "strings" ) func main() { var ( tile = []string{ "56756744422222m", // 超过4张牌,记为4张 "675456234m32155p4s", // 没有缺一门,可以打一张后听牌 "112233m1122445…
“林子雨大数据” 实验3 HBase操作与接口编程 环境搭建 VM虚拟机和Ubuntu系统的安装 在Windows中使用VirtualBox安装Ubuntu虚拟机(2020年7月版本)_厦大数据库实验室博客 (xmu.edu.cn) Hadoop安装(伪分布式) Hadoop3.1.3安装教程_单机/伪分布式配置_Hadoop3.1.3/Ubuntu18.04(16.04)_厦大数据库实验室博客 (xmu.edu.cn) HBase安装(伪分布式) HBase2.2.2安装和编程实践指南_厦大数据库实验室博客 (x…
0.1、索引 https://waterflow.link/articles/1666090530880 1、概念 1.1、源文件里的代码执行顺序 init 函数是用于初始化应用程序状态的函数。 它不接受任何参数并且不返回任何结果(一个 func() 函数)。 初始化包时,将初始化包中的所有常量和变量声明。 然后,执行初始化函数。 下面是一个初始化主包的例子: package main import "fmt" // 1 var a = func() int { fmt.Println(…
索引:https://waterflow.link/articles/1666534616841 我们先看一个简单的例子,我们自定义一个错误,用来把多个错误放在一起输出: type CustomError struct { errors []string } func (c *CustomError) Add(err string) { c.errors = append(c.errors, err) } func (c *CustomError) Error() string { return strings.J…
hello,大家好呀,我是小楼。 前几天不是写了这篇文章《发现一个开源项目优化点,点进来就是你的了》嘛。 文章介绍了Sentinl的自适应缓存时间戳算法,从原理到实现都手把手解读了,而且还发现Sentinel-Go还未实现这个自适应算法,于是我就觉得,这简单啊,把Java代码翻译成Go不就可以混个PR? 甚至在文章初稿中把这个描述为:「有手就可以」,感觉不太妥当,后来被我删掉了。 过了几天,我想去看看有没有人看了我的文章真的去提了个PR,发现仍然是没有,心想,可能是大家太忙(懒)了吧。 于是准备自己来实现一遍,周末…
0、转载 go-zero docker-compose 搭建课件服务(六):完善jwt鉴权和返回结构 0.1源码地址 https://github.com/liuyuede123/go-zero-courseware 1、用户服务登录接口生成jwt token user/api/etc/user.yaml中增加用于生成jwt的secret和过期时间 ... Auth: AccessSecret: 38f9c7af24ff11edb92900163e30ef81 AccessExpire: 86400 user/ap…