按照Github的教程 Adding a local repository to GitHub using Git 1. 创建空的Github仓库 创建远程仓库 🔗 ,注意不要勾选<label>Add a README file</label>,如果勾选会生成一笔提交,如果本地仓库也提交了代码,会导致拉取/推送代码失败。 2. 切换到本地环境,初始化仓库 $ git init -b main 3. 添加本地文件并提交 $ git add . # Adds the files in the l…
按照Github的教程 Adding a local repository to GitHub using Git 1. 创建空的Github仓库 创建远程仓库 🔗 ,注意不要勾选<label>Add a README file</label>,如果勾选会生成一笔提交,如果本地仓库也提交了代码,会导致拉取/推送代码失败。 2. 切换到本地环境,初始化仓库 $ git init -b main 3. 添加本地文件并提交 $ git add . # Adds the files in the l…
1. 背景 对于后台开发新的需求时,一般会先进行各种表的设计,写各个表的建表语句 然后根据建立的表,写对应的model代码、基础的增删改查代码(基础的增删改查服务可以划入DAO(Data Access Object)层)。 model代码都有一些固定的格式,可以通过解析SQL建表语句,来自动生成model代码, 对于不同的表,基础的增删改查代码大概率只是换了个表名或者数据库,因此也可以自动生成。 通过自动生成代码,减少重复工作,提示开发效率。 2. 整体介绍 目录结构如下,具体代码建Github sql2cod…
1. GOPATH 和 GOROOT(环境变量) 1. GOROOT go 编译器、标准库等安装的地方,所有我们写的代码其实都是文本文件而已,需要编译器等工具将其加工成可执行文件或者库文件才能使用,每种语言都有自己的这样一套“工具”。GOROOT 就是 go 语言的这类“工具”的安装目录。 2. GOPATH 类似工作区(workspace)的概念,其中里面有三个文件夹 src:保存自己的源代码,或者第三方依赖的代码,有了 go module 现在一般不用这个了; pkg:一般保存一些库文件,在 go module…
0、转载 go-zero docker-compose 搭建课件服务(八):集成jaeger链路追踪 0.1源码地址 https://github.com/liuyuede123/go-zero-courseware 1、链路追踪 一个外部请求需要内部若干服务的联动响应,这时候完整的调用轨迹将跨越多个服务,同时包括服务间的网络传输信息与各个服务内部的调用堆栈信息。追踪的主要目的是排查故障,如分析调用链的哪一部分、哪个方法出现错误或阻塞,输入输出是否符合预期,等等。 链路追踪中有几个比较重要的概念: trace:从客…
垃圾回收器 垃圾回收是释放掉那些不再被使用的内存空间的过程。 换句话说,垃圾回收器会去检查哪些对象超出范围并且不会再被引用到,然后它回去释放掉那些对象占用的内存空间。这个过程实在 go 程序运行中以并发的方式去进行的,不是 go 程序执行之前,也不是 go 程序执行之后。go 垃圾回收器实现的说明文档给出了如下声明(runtime 包下的 mgc.go): The GC runs concurrently with mutator threads, is type accurate (aka precise), a…
需要保证电脑中安装了:protobuf安装教程 如果出现报错请看博客:protobuf报错问题解决 基本使用demo地址:demo 安全传输、流式传输的demo地址:demo2 简介: rpc微服务,grpc是一种开源的高性能RPC框架,能够运行在任何环境中,最初由谷歌进行开发,它使用HTTP2作为传输协议。grpc让客户端可以像调用本地方法一样调用其他服务器上的服务应用程序,可以更容易的创建分布式应用程序和服务。能让我们更容易的编写跨语言的分布式代码。本示例使用protocol buffers(简写:protob…
概要 用户服务基本是每个互联网产品里必备的一个服务了,因为没有用户基本是什么也干不了。所以他的重要性不言而喻。本文主要介绍下如何开发一个用户微服务,以及他的详细开发流程。 目录 Go微服务实战 - 从0到1搭建一个类Instagram应用(持续更新) Go微服务实战 - 用户服务(gRPC+Protocol Buffer) Go微服务实战 - 关系服务服务(gRPC+Protocol Buffer) Go微服务实战 - 动态服务(gRPC+Protocol Buffer) Go微服务实战 - 聚合服务(http) …
我的Go并发之旅。本节介绍并发的基础知识,上下文、原语、竞争条件、原子性、内存访问同步、死锁、并发与并行、并发哲学。 注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。 上下文 上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。 上下文切换 所谓的上下文切换(context switch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的…
开篇明义,Go lang中从来就不存在所谓的“引用传递”,从来就只有一种变量传递方式,那就是值传递。因为引用传递的前提是存在“引用变量”,但是Go lang中从来就没有出现过所谓的“引用变量”,所以也就不可能存在引用传递这种变量传递的方式。 引用类型 首先,Go lang的基本数据类型是值类型,比如整数、浮点、字符串、布尔、数组及错误类型,它们本质上是原始类型,也就是不可改变的,所以对它们进行操作,一般都会返回一个新创建的值,所以把这些值传递给函数时,其实传递的是一个值的拷贝副本,这一点,基本没啥争议。 而引用类型…
我的gRPC之旅。本节介绍微服务架构、强弱类型接口、Rest、gRPC定义,proto编译方式,并用golang编写一个简单的gRPC托管服务和客户端。在调试中进步,感受gRPC的魅力。 微服务架构 微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API 进行通信的小型独立服务组成。 这些服务由各个小型独立团队负责。 微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。 将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力(强调能力,而不是完成任…