Java微服务 vs Go微服务,究竟谁更强!?
前言
Java微服务能像Go微服务一样快吗?
这是我最近一直在思索地一个问题。
去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nelson和Peter Nagy就对此做过一系列基础的的测试用以比较。接下来就给大家介绍下。
在程序员圈子里,普遍的看法是Java老、慢、无聊 ,而Go是快、新、酷
为了尽可能的进行一个 ...
深入理解Go Context
目录emptyCtx类型cancelCtx类型timerCtx类型valueCtx类型
在Go语言并发编程中,用一个goroutine来处理一个任务,而它又会创建多个goroutine来负责不同子任务的场景非常常见。如下图
这些场景中,往往会需要在API边界之间以及过程之间传递截止时间、取消信号或与其它请求相关的数据
谁是性能卡点呢?得通知它们任务取消了 ...
Go-连接Redis-学习go-redis包
Redis介绍
Redis是一个开源的内存数据结构存储,常用作数据库、缓存和消息代理。目前它支持的数据结构有诸如string、hash、list、set、zset、bitmap、hyperloglog、geospatial index和stream。Redis内置了复制、Lua脚本、LRU清除、事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性,通过Redis Cluster自动分 ...
Go语言基础
一、Go的基本介绍
Go(Golang)语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。
当前有两个Go编译器分支,分别为官方编译器gc和gccgo。官方编译器在初期使用C写成,后用Go重写从而实现自举。Gccgo是一个使用标准GCC ...
Go操作Redis实战
目录安装Redis客户端连接redis基本指令Keys():根据正则获取keysType():获取key对应值得类型Del():删除缓存项Exists():检测缓存项是否存在Expire(),ExpireAt():设置有效期TTL(),PTTL():获取有效期DBSize():查看当前数据库key的数量FlushDB():清空当前数据FlushAll():清空所有数据库字符串(string)类型Set():设置SetEX():设置 ...
ubuntu安装Go环境
1.下载Go语言安装包
官网:下载地址
2. 获取安装包
# 或者通过wget下载go语言安装包,这里以go1.15.6.linux-amd64.tar.gz为例
wget https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gz
# 将安装包下载到/usr/local 目录下
Download the archive and extract it into /usr/local # 翻译过来就是下载到/usr/l ...
GO语言mqtt使用(例子)
GO语言使用mqtt
"github.com/eclipse/paho.mqtt.golang"
//mqtt
"github.com/sirupsen/logrus"
//日志
package mqtt
import (
"crypto/tls"
"encoding/json"
"errors"
"os"
"os/signal"
"time"
"fmt"
MQTT "github.com/eclipse/paho.mqtt.golang"
log "github.com/sirupsen/logrus"
)
var MqttAgent *Agent
...
使用 go 实现一个Ping程序
使用golang 实现一个Ping程序
基本原理
ping 程序的基本原理
首先呢,ping用到的协议是网络层的ICMP协议,发送/接收的是ICMP报文,最终的形式还是以一个IP报文在网络中传送。
ping命令主要基于ICMP(Internet Control Message Protocol)实现,它包含了两部分:客户端、服务器。
客户端 : 向服务端发送ICMP回显请求报文
服 ...
我用 go-zero 一周实现了一个中台系统,已开源!
作者:Jack
最近发现golang社区里出了一个新星的微服务框架,来自好未来,光看这个名字,就很有奔头,之前,也只是玩过go-micro,其实真正的还没有在项目中运用过,只是觉得 微服务,grpc 这些很高大尚,还没有在项目中,真正的玩过,我看了一下官方提供的工具真的很好用,只需要定义好,舒适文件jia结构 都生成了,只需要 ...
Go加密算法总结
前言
加密解密在实际开发中应用比较广泛,常用加解密分为:“对称式”、“非对称式”和”数字签名“。
对称式:对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。具体算法主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也 ...
golang confluent-kafka-go
针对golang的 kafka client 有很多开源package,例如sarama, confluent等等。在使用sarama 包时,高并发中偶尔遇到crash。于是改用confluent-kafka-go,其简单易用,并且表现稳定。
本文主要介绍confluent-kafka-go的使用方法。confluent-kafka-go,是kafka官网推荐的golang package。
confluent-kafka-go is Confluent's ...
go操作RabbitMQ
go操作RabbitMQ
RabbitMQ服务器安装1、安装erlang
wget https://www.rabbitmq.com/releases/erlang/erlang-18.2-1.el6.x86_64.rpm
2、安装RabbitMQ
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el6.noarch.rpm
3、 常用命令
systemctl start rabbitmq-server 启动
ra ...
Go-swagger 的安装与使用
目录
一、安装与配置
下载与安装
添加环境变量
二、开始第一个 swagger 案例
swagger 初始化
声明 API 接口
生成接口代码
添加新的功能接口
代码完善
一、安装与配置
1.下载与安装
附件中下载 swagger 执行包,或者从 go-swaager 官网下载,根据 OS 选择合适的版本:
这里我们下载Windows 64版本的 swagger_windows ...
我用go-zero开发了第一个线上项目
作者:结冰
前言
说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。我是从phper转为gopher的,写php的时候我认识了互联网软件,写go的时候感觉自己终于在编程。
初见golang
我大学专业是软件。 ...
Go TryLock实现
Go TryLock实现
Go标准库的sync/Mutex、RWMutex实现了sync/Locker接口, 提供了Lock()和UnLock()方法,可以获取锁和释放锁,我们可以方便的使用它来控制我们对共享资源的并发控制上。
但是标准库中的Mutex.Lock的锁被获取后,如果在未释放之前再调用Lock则会被阻塞住,这种设计在有些情况下可能不能满足我的需求。有时候我 ...
我是如何用go-zero 实现一个中台系统的
最近发现golang社区里出了一个新星的微服务框架,来自好未来,光看这个名字,就很有奔头,之前,也只是玩过go-micro,其实真正的还没有在项目中运用过,只是觉得 微服务,grpc 这些很高大尚,还没有在项目中,真正的玩过,我看了一下官方提供的工具真的很好用,只需要定义好,舒适文件jia结构 都生成了,只需要关心业务,
...
深入分析 Java、Kotlin、Go 的线程和协程
前言
协程是什么
协程的好处
进程
进程是什么
进程组成
进程特征
线程
线程是什么
线程组成
任务调度
进程与线程的区别
线程的实现模型
一对一模型
多对一模型
多对多模型
线程的“并发”
协程
协程的目的
协程的特点
协程的原理
Java、Kotlin、Go 的线程与协程
Kotlin 的协程
使用「线程」的代码
使用 ...
Go语言的context包从放弃到入门
目录一、Context包到底是干嘛用的二、主协程退出通知子协程示例演示主协程通知子协程退出主协程通知有子协程,子协程又有多个子协程三、Context包的核心接口和方法context接口emptyCtx结构体BackgroudTODOvalueCtx结构体ValueWithValue示例cancelCtx结构体WithCancel示例timerCtx结构体WithDeadlineWithTimeout示例四、总结 ...
从go-libp2p开始
这里是从一系列关于libp2p的go实现教程开始,go-libp2p
我们会讲述go的安装,go模块的设置,启动libp2p节点,并在它们之间发送消息。
安装go
go-libp2p推荐使用包含 modules feature的go版本,也就意味着你必须使用1.11或以上版本。
你可以按照 official installation instructions安装go ...
Go微服务实践之增删改查
从此篇文章开始,我们来陆续介绍 go-zero 开发一个项目所需要的组件和开发实践。
首先我们从 model 层开始,来说说go-zero 的API以及封装细节。首先 model 层连接的API集中在core/stores。我们先来看看操作 mysql 这类数据库,API方法我们来到 core/stores/sqlx,所以接下来用几篇的文章总体介绍一下 sqlx 的使用和设计思 ...