自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 FSM(有限状态机)golang基本状态操作

golang中fsm(状态机)使用和简单状态转换

2022-05-31 13:25:37 1249 2

原创 golang结构体转为JSON

/* * @Description: ZhaoHuiMing * @Version: 2.0 * @Autor: Seven * @Date: 2022-01-25 17:44:41 * @LastEditors: Seven * @LastEditTime: 2022-01-25 18:17:54 */package mainimport ( "encoding/json" "fmt")type User struct { ID uint64 Name string.

2022-01-25 18:19:04 1619

原创 什么事缓存雪崩,击穿,穿透?

雪崩:在同一时间大量缓存大面积的失效,大量的请求访问数据库,造成数据库的崩溃。解决方案:1.缓存过期的时间随机2.缓存数据增加标记,发现缓存失效,则更新数据到缓存中。3.缓存预热4.使用互斥锁击穿:缓存失效,在同一时刻大量的求情并发到数据库,造成数据库崩溃。数据库中有数据,缓存中没有数据。解决方案:1.互斥锁2.热点数据永不过期穿透:数据库中没有数据,缓存存也没有数据。大量请求落到数据库上,造成数据库的崩溃。解决方案:1.接口增加校验,大于0的ID才能进行访问

2022-01-21 12:20:56 947

原创 分布式理论之BASE理论

CAP理论是伪3选2理论CAP详解:(1条消息) CAP原则(定理)分布式系统设计_牛宝贝儿哦的博客-优快云博客https://blog.youkuaiyun.com/weixin_54433389/article/details/122388294?spm=1001.2014.3001.5502BASE理论的内容:1.基本可用(Basically Available)2.软状态(Soft State)3.最终一致性(Eventually Consistent)基本可用呢:1.损失响应的时

2022-01-19 19:38:14 1387

原创 golang字符串分割,指定分割符

func main() { str := "10086:10:20:30:40:50:60:70:80:90:100:200:300:400:500:600:700:800:900:1000" st := ":" //指定分隔符 countSplit := strings.Split(str, st) ids := make([]orderSkuID, 0) var orderId uint64 var b uint64 for i, v := range countSplit { i.

2022-01-18 17:03:09 1051

原创 golang中map的使用方法

// 声明map 方案一var m map[string]string// 再使用make函数创建一个非nil的map,nil map不能赋值m = make(map[string]string)// 最后给已声明的map赋值m["yan"] = "su"m["bao"] = "bao"// 创建map方案二m1 := make(map[string]string)// 然后赋值m1["bao"] = "yansu"m1["bei"] = "niu"// 初始化 + 赋值一体化.

2022-01-16 22:59:26 980

原创 golang切割字符串(中文英文),(如***xx),字符串加*

package mainimport ( "fmt" "unicode/utf8")func main() { s := "mynameisyansu言素" // 取字符串的倒数地n位开始截取,到末尾位置 getRune(s, 1) getRune1(s, 5)}// 方案1func getRune(str string, n int) { j := len(str) for i := 0; i < n && j > 0; i++ { .

2022-01-15 19:33:29 666

原创 云原生(什么是云原生?云原生的四要素)

云原生:云+原生(是一种程序设计的方法或思想),满足云原生的四要素(微服务,持续交付,容器化,DevOps)就属于云原生项目。它并没有一个准确的定义。云原生的四要素:1.微服务:微服务解决的是高内聚+低耦合的问题。2.持续交付:在不影响用户使用服务的前提下频繁的更新和发布新的功能。3.容器化:运维不需要关心每个服务使用的技术栈,每个服务都封装在容器中,可以无差别的进行维护。现在流行的容器技术k8s(kubernetes)和docker.4.DevOps:开发和运维一体化,开发和运维不再是

2022-01-13 13:45:48 2207

原创 分布式系统的设计目标

可扩展性:通过对服务,存储的扩展,来提高系统的处理能力,使用多台服务器协同工作,来完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。高可用:单点故障不影响整体业务,单点故障指系统中某个组件一旦失效,会让整个系统无法工作。无状态:无状态的服务才能满足部分宕机不影响其它部分,可以随时扩展需求。可管理:便于运维,出问题能不能及时发现问题,解决问题。高可靠:同样的请求返回的数据是一致的;更新后可以持久化;不会造成数据丢失。...

2022-01-12 20:13:03 410

原创 消息队列(消息中间件 )的有缺点以及使用场景

消息队列的优点:1:应用解耦。降低系统程序之间的耦合性。2:异步处理。不需要同步等待。3:流量削峰。将流量从高峰期引到低峰期去处理。消息队列的缺点:1:增加了系统的复杂性。将系统的幂等,消息的重复消费,消息的丢失带入到了系统之中。2:系统的可用性降低。一旦消息队列挂机,程序可能崩溃。3:数据一致性问题。消费端可能消费失败。应用的场景:日志采集,发布订阅。...

2022-01-11 22:44:04 320

原创 分布式,微服务,集群和SOA的概念,区别?

分布式:服务的不同模块部署在不同的服务器上,单个节点不能提供完整的服务,需要多节点协调才能提供服务,也可以是相同组件部署在不同节点上,但节点通过交换信息协调提供服务。分布式强调的是工作方式。微服务:原有的单个业务系统拆分成多个可以独立开发,设计,运行的小型应用。这些应用通过服务完成集合和交互。微服务强调的是业务需要彻底的组件化和服务化。集群:在不同的服务器部署同一套应用程序对外提供访问,实现服务的负载均衡(主从,备份),是同一组件的多个实例,在逻辑上形成了一个整体。单个节点可以提供完整的服务SO

2022-01-10 13:27:34 1242

原创 如何比较golang中的结构体是否相等

结构体是否能比较?如果是相同的无复杂类型的结构体是可以比较的。如果是复杂类型则不能进行比较。复杂类型:slice,map,function简单类型:int,float,string还可以比较的数据类型有:Boolean,Complex,Pointer,Channel,Interface和Array...

2022-01-09 23:21:21 1016

原创 CAP原则(定理)分布式系统设计

C(Consistency):一致性:所有节点的数据时刻保持一致。A(Availability):可用性:每个请求都能得到一个相应,不管成功与否。P(Partition tolerance):分区容错性:系统中任意消息丢失了都不会影响到系统的正常运行。CAP原则(定理)的核心是,只能三选二,要么CA,要么CP,要么AP。不可能CAP同时都保证。因此分布式系统在设计的时候,需要做好取舍,明确自己的需求和侧重点是什么,以便设计出自己想要达到的效果。...

2022-01-08 23:29:16 242 1

原创 Golang当中同步锁(Mutex,RWMutex)的特点和作用(面试题)

同步锁的特点:1.Mutex:当一个Goroutine(协程)获得了Mutex后,其他Gorouline(协程)就只能进入等待之中,除非该gorouline释放了该Mutex。2.RWMutex(读写锁):RWMutex在读锁占用的情况下,会阻止写,但不阻止读;RWMutex在写锁占用情况下,会阻止任何其他goroutine(读和写)进来,整个锁相当于由该goroutine(协程)独占。同步锁的作用:保证资源在使用时的独有性,不会因为并发而导致数据错乱,保证系统并发时的稳定性。..

2022-01-07 23:56:10 708

原创 kubenetes(k8s)集群搭建(kubeadm 方式)详细教程

下载wget命令#yum install wget关闭防火墙#systemctl stop firewalld#systemctl disable firewalld关闭 selinux#sed -i 's/enforcing/disabled/' /etc/selinux/config // 永久#setenforce 0 // 临时关闭 swap:#swapoff -a // 临时主机名://主节点#hostnamectl set-hostname k

2022-01-06 10:00:00 496 1

原创 golang变量uint、int大小溢出后的结果

golang中变量的大小溢出会是什么结果呢? // uint8的取值范围: 0 - 255 var a uint8 = 1 var b uint8 = 255 fmt.Println("减法:", a-b)这段代码的结果是什么呢?很明显uint8的取值范围是0-255之间,此时已经超出范围了,那么超出后的结果是什么呢?0或者0报错?我也不知道,一起来看看最后的结果是怎样?package mainimport "fmt"//两个uint类型的数字相减后小于0func

2022-01-05 09:12:16 3873

原创 golang变量的作用域

package mainimport "fmt"// 姓名var name stringfunc main() { if name, err := test(); err == nil { fmt.Println("name:", name) } fmt.Println("name:", name)}func test() (name string, err error) { name = "牛宝贝儿哦" return}预期的结果为:name: 牛宝贝儿哦na.

2022-01-04 06:00:00 273

原创 go mod tidy: go.mod file indicates go 1.17, but maximum supported version is 1.16解决方案

出现问题的原因:golang版本太低,需要升级到需要的版本(1.17)即可解决解决方案:1:容器开发。修改容器golang的版本配置(1.17)及相关的需要升级的依赖,然后重新Rebuild Container,然后重新执行相关下载各种依赖的命令(go mod tidy/make install)问题即可解决。2:子系统开发。使用子系统开发比较麻烦一点,需要子系统的golang的版本(1.17),然后重新下载相关的依赖。...

2022-01-03 14:28:09 6948

原创 解决log4j2漏洞问题(升级版本到2.17.0)

找到项目的pom.xml文件将log4j相关的版本全部修改为:2.17.0查看maven中的赖是否更新成功,确定版本是2.17.0运行项目漏洞方可解决。 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <ve

2021-12-23 19:34:08 4901

原创 golang拼接字符串的方式

拼接字串串的方式共5种方式一:使用 “+”字符串只能被访问,不能被修改。所以在拼接字符串时,需要内存拷贝,会带来性能的消耗。但是可读性强,适合少量字符串拼接package mainimport "fmt"func main() { var ( a string = "一" b string = "二" c string = "三" stringJoin string ) stringJoin = a + .

2021-11-01 17:31:12 2245

原创 git基本操作命令和提交代码

克隆远程仓库的代码到本地git clonehttps://gitee.com/zhaohuiming55/issue_test.git查看文件状态git status查看本地所有分支git branch提交改动过的文件到暂存区git add .提交所有修改过的文件git commit -m "commit"切换分支到devgit checkout dev拉取远程仓库的代码到本地git pull upstream master将zh...

2021-10-19 13:11:33 101

原创 oh-my-docker使用教程(docker-desktop)

1.下载docke的桌面版本docker桌面官网下载地址:Docker Desktop for Mac and Windows | Dockerhttps://www.docker.com/products/docker-desktop或者在应用商店进行下载2.打开桌面版3.设置docker镜像设置代理>>点击设置点击 Docker Engine替换方框中的内容:{ "registry-mirrors": [ "https://regi.

2021-10-13 09:35:29 433

原创 commands out of sync错误

第一种情况:commands out of sync. Did you run multiple statements at once可能的原因:是在事务之中写了查询语句。解决方案:把查询语句放到事务的外面去,即可。第二种情况:Commands out of sync; you can't run this command now可能原因:错误的顺序调用客户端的函数解决方案:修改顺序调用客户端的函数...

2021-10-11 13:11:30 4496

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除