推 荐
推 荐
如何写出漂亮的代码-代码整洁之道 HOT 2020-12-07
2023
03-09
03-09
grpc etcdv3兼容问题 NEW
undefined: grpc.SupportPackageIsVersion6 grpc.ClientConnInterface由于etcd版本管理的问题,导致etcd的代码和新版本的grpc冲突,会在编译时报错:undefined: resolver.BuildOption
undefined: resolver.ResolveNowOption
undefined: balancer.PickOptions
undefined:&nb...
Read More >
2023
03-08
03-08
运行proto文件踩坑历程 NEW
大家如果觉得安装问题很多,也可以直接参考这篇文章,使用一键安装和版本控制PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制 : https://phpmianshi.com/?id=4078一.安装protobufhttps://github.com/protocolbuffers/protobuf/releases在这里一定要确保你的protoc.exe是在你的gopath目录下,否则会报错protoc不是内部...
Read More >
2023
03-07
03-07
PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制 NEW
PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制项目地址:github.com/storyicon/powerprotoPowerProto主要用于解决下面三个问题: 降低gRPC的使用门槛与使用成本。 解决protoc以及其相关插件(比如protoc-gen-go、protoc-gen-grpc-gateway)的版本控制问题...
Read More >
2023
03-06
03-06
etcd安装及go简单操作
ETCD 介绍 概念: 高可用的分布式key-value存储,实现配置共享和服务发现 类似项目: zookeeper和consul 开发语言: Go 接口: 提供restful的http接口,使用简单 实现算法: 基于raft算法的强一致性,高可用的...
Read More >
2023
03-05
03-05
go操作etcd实现服务注册和发现亲测版
服务发现etc/discovery/discovery.gopackage main
import (
"context"
"go.etcd.io/etcd/api/v3/mvccpb"
clientv3 "go.etcd.io/etcd/client/v3"
&nb...
Read More >
2023
03-05
03-05
Go操作etcd亲测版
2023
03-04
03-04
grpc与etcd实现服务注册和服务发现亲测版
一、前言grpc中没有像go-micro那样集成可插拔式的etcd库使用,如何使得grpc能够使用服务注册发现及命名解析的功能,因此本文基于etcd实现了Name Resolver。二、所需的grpc版本grpc相关库:google.golang.org/grpc v1.45.0
google.golang.org/grpc/resolveretcd相关库:go.etcd.io/etcd/client/v3 v3.5.7所需的protoc protoc-...
Read More >
2023
03-03
03-03
etcd clientv3 源码解读 - grpc负载均衡原理
1. 几个会反复出现的术语的理解resolver:解析器,可以粗暴理解为从一个字符串映射到一堆服务。比如经典的dns就是完成一个域名到一堆ip的映射解析,在etcd中,它自己定义了一个endpoint的解析器。有自己的格式,最终也是映射到服务地址。clientconns: 连接池。可以粗暴理解为这个池子缓存着与每个resolver解析后的地址的连接,数据哪里来呢? 原始数据会根据resolver解析完存进来,然后后面介绍的balancer会小心的维护这个池子。ba...
Read More >
2023
03-02
03-02
go语言中map拷贝 go map使用

2023
03-02
03-02
Go语言互斥锁(sync.Mutex)和读写互斥锁(sync.RWMutex)
Go语言包中的 sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。Mutex 是最简单的一种锁类型,同时也比较暴力,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只能乖乖等到这个 goroutine 释放该 Mutex。RWMutex 相对友好些,是经典的单写多读模型。在读锁占用的情况下,会阻止写,但不阻止读,也就是多个 goroutine 可同时获取读锁(调用 RLock() 方法;而写锁(调用 Lock()...
Read More >
2023
03-01
03-01
对已经关闭的 channel 进行读写关闭操作会发生什么
1、关闭已经关闭的 channel 会引发 panic,panic: close of closed channelch3 := make(chan int, 3)
wg.Add(1)
go func() {
for i := 1; i < 3; i++ {
ch3 <- i
}
cl...
Read More >
2023
03-01
03-01
优雅关闭channel
1 channel使用不当引发的问题示例1 重复关闭channelfunc main(){
ci:=make(chan int)
close(ci)
close(ci)}复制「编译不会提示错误,运行直接报错」panic: close of closed channel goroutine 1 [running]:示例2 向已关闭的channel中发送消息func main() {
&nbs...
Read More >
2023
01-01
01-01
gRPC简介和使用亲测版

2022
05-07
05-07
go gRPC介绍, demo
参考文章: https://blog.51cto.com/u_150910612. http://jia-shun.cn/2018/08/12/gRPC/ 文章1应该是参考的文章2. 文章1在2的基础上增加了如何安装protobuf软件.一起整理出来这篇文章最终的脉络是: 通过java代码是客户端, go是服务端, java有一个controller接口, 我们在调用接口的时候, java请求了go服务, 最终底层的东西通过controller返...
Read More >
2022
04-23
04-23
PHP如何检测字符串里有没有繁体字
检测UTF-8字符串里有没有繁体字我们可以使用iconv()这个函数,然后将字符串的编码由UTF-8转换成GB2312,这个方法的原理是:GB2312是简体中文的字符集,如果将含有繁体字的字符串转换成GB2312编码,iconv函数会返回false。不说那么多了,下面直接上代码:<?php
/**
* 检测一个UTF-8字符串里是否包含繁体中文
* @param string $str
...
Read More >
2022
04-22
04-22
什么是jsonp
什么是jsonp,jsonp是什么,jsonp如何使用 首先先知道jsonp的核心原理就是目标页面回调本地页面的方法,并带入参数我们常用的动态页面有jsp,php,aspx 为什么需要JSONP?由于浏览器安全限制,数据是不可以直接跨域(包括不同的根域名、二级域名、或不同的端口)请求的,除非目标域名授权你可以访问。比如设置crossdomain.xml 或在http头部里授权但是crossdomain.xml会允许设置的网站访问所有的数据,而头部设置又非常...
Read More >
2022
04-21
04-21
Git不要只会pull和push,试试这5条提高效率的命令

2022
04-13
04-13
使用fastcgi_finish_request 处理耗时的任务

2022
04-08
04-08
PHP如何将十进制转换为十六进制?(代码示例)
背景在PHP中可以通过使用内置函数dechex()或base_convert() 函数来将十进制转换为十六进制。下面本篇文章就来给大家介绍一下dechex()和base_convert() 函数是如何将十进制转换为十六进制的方法一:使用dechex()函数将十进制转换为十六进制dechex()函数是PHP中的一个内置函数,用于将给定的十进制数转换为等效的十六进制数。函数名称中的“dechex”一词代表十进制到十六进制。注: dechex()函数仅适用于无符号数。如果传递给它的...
Read More >
2022
03-21
03-21
Redis官方可视化工具RedisInsight功能真心强大
