众所周知,Go lang的作用域相对严格,数据之间的通信往往要依靠参数的传递,但如果想在多个协程任务中间做数据通信,就需要通道(channel)的参与,我们可以把数据封装成一个对象,然后把这个对象的指针传入某个通道变量中,另外一个协程从这个通道中读出变量的指针,并处理其指向的内存对象。 通道的声明与创建 package main import "fmt" func main() { var a chan int if a == nil { fmt.Println("通道是空的, 不能使…
众所周知,Go lang的作用域相对严格,数据之间的通信往往要依靠参数的传递,但如果想在多个协程任务中间做数据通信,就需要通道(channel)的参与,我们可以把数据封装成一个对象,然后把这个对象的指针传入某个通道变量中,另外一个协程从这个通道中读出变量的指针,并处理其指向的内存对象。 通道的声明与创建 package main import "fmt" func main() { var a chan int if a == nil { fmt.Println("通道是空的, 不能使…
0.1、索引 https://blog.waterflow.link/articles/1663688140724 1、简介 单元测试是测试代码、组件和模块的单元函数。单元测试的目的是清除代码中的错误,增加代码的稳定性,在更改代码时提供正确性。单元测试是软件测试的第一级,然后是集成测试和 ui 测试。 2、编写测试代码 首先测试文件的命名必须以_test.go结尾,测试方法必须以Test开头 我们创建一个testexample项目,执行go mod init初始化项目。 然后创建一个uri.go的文件,里面的代码是…
0、转载 go-zero docker-compose 搭建课件服务(四):生成Dockerfile并在docker-compose中启动 0.1源码地址 https://github.com/liuyuede123/go-zero-courseware 1、目前的目录文件结构 目前只是创建好了courseware服务,这一章节我我们先在docker-compose跑通课件服务 . ├── courseware │ ├── api │ │ ├── courseware.api │ │ ├── courseware.…
Go创建Grpc链接池 转载请注明来源:https://janrs.com/2023/03/创建grpc链接池/ 常规用法 gRPC 四种基本使用 请求响应模式 客户端数据流模式 服务端数据流模式 双向流模式 常见的gRPC调用写法 func main(){ //... some code // 链接grpc服务 conn , err := grpc.Dial(":8000",grpc.WithInsecure) if err != nil { //...log } defer conn.Clo…
typimg是一款为typora编辑器提供图像自定义上传服务的工具,该工具将在typora中输入的网络图片、本地图片、剪贴板图片/截图实时上传到博客园,与typora无缝集成,支持在MacOS、Windiws、Linux三个平台上运行。 项目介绍 项目背景 个人经常使用Typora这一软件,在编写md文档时,图片可以暂存本地,文章中可以使用本地图片的绝对路径或相对路径,痛点就是不利于以后文档的迁移和平台的变化,因此需要将文档的图片存放在云端并提供远程访问的url,个人搭建图床或使用OSS成本有点高(杀鸡焉用牛刀!)…
1. 前言 所谓的逃逸分析(Escape analysis)是指由编译器决定内存分配的位置吗不需要程序员指定。 函数中申请一个新的对象 如果分配在栈中, 则函数执行结束后可自动将内存回收 如果分配在堆中, 则函数执行借宿可交给GC(垃圾回收)处理 有了逃逸分析,返回函数局部变量将变得可能,除此之外,逃逸分析还跟闭包息息相关,了解哪些场景下对象会逃逸至关重要。 2. 逃逸策略 每当函数中申请新的对象,编译器会根据该对象是否被函数外部引用来决定是否逃逸: 如果函数外部没有引用,则优先放到栈中; 如果函数外部存在引用,则…
前文再续,上一回我们完成了用户管理模块的CURD(增删改查)功能,功能层面,无甚大观,但有一个结构性的缺陷显而易见,那就是项目结构过度耦合,项目的耦合性(Coupling),也叫耦合度,进而言之,模块之间的关系,是对项目结构中各模块间相互联系紧密程度的一种量化。耦合的强弱取决于模块间调用的复杂性、调用模块之间的方式以及通过函数或者方法传送数据对象的多少。模块间的耦合度是指模块之间的依赖关系,包括包含关系、控制关系、调用关系、数据传递关系以及依赖关系。项目模块的相互依赖越多,其耦合性越强,同时表明其独立性越差,愈加难…
GO的环境配置? GOPATH GOROOT 都是干嘛用的? 配置环境跟java对比有点奇怪 https://blog.csdn.net/weixin_40563757/article/details/115476327 语言特性 协程? 建立一个协程很简单 加一个go关键字就可以 package concurrence import ( "fmt" "time" ) func hello(i int) { println("hello goroutine : …
目录 问题 编译 检查结果 问题 当我使用kubeadm部署成功k8s集群时在想默认生成的证书有效期是多久,如下所示 /etc/kubernetes/pki/apiserver.crt #1年有效期 /etc/kubernetes/pki/front-proxy-ca.crt #10年有效期 /etc/kubernetes/pki/ca.crt #10年有效期 /etc/kubernetes/pki/apiserver-etcd-client.crt #1年有效期 /etc/kubernetes/pki/front…
Go素数筛选分析 1. 素数筛选介绍 学习Go语言的过程中,遇到素数筛选的问题。这是一个经典的并发编程问题,是某大佬的代码,短短几行代码就实现了素数筛选。但是自己看完原理和代码后一脸懵逼(仅此几行能实现素数筛选),然后在网上查询相关资料,依旧似懂非懂。经过1天的分析调试,目前基本上掌握了的原理。在这里介绍一下学习理解的过程。 素数筛选基本原理如下图: 就原理来说还是比较简单的,首先生成从 2 开始的递增自然数,然后依次对生成的第 1, 2, 3, ...个素数 整除,经过全部整除仍有余数的自然数,将会是素数。 大佬…