自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高并发流量控制与算法实现思路

高并发流量控制与算法实现思路前言​ 昨天看了一篇关于高并发流量控制的文章,感觉对我启发非常的大,所以写一篇记录总结一下,方便于以后我自己的学习与复盘。简介首先要知道什么是大流量​ 听到大流量,我们首先可能会冒出:TPS(每秒事物量),QPS(每秒请求量),其实并没有一个绝对的数字,如果这一个流量对系统造成了压力,影响了系统的正常运行与性能,那么这个量就可以称之为大流量了。应对大流量的一些手段缓存 :说白一点,就是让数据尽早的进入缓存,离缓存近一点,不要大量的频繁访问数据库。降级

2020-07-24 16:34:00 708

原创 跨语言的RPC

跨语言的RPC前言标准库中的RPC默认采用GO语言特有的Gob编码,所有从其他语言调用Go语言实现的RPC服务将比较困难。在互联网的微服务时代,每一个RPC以及服务的使用者都可能采用不同的编程语言,因此跨语言是互联网时代RPC的一个首要条件。得益于RPC框架设计,Go语言的RPC其实也是很容易实现跨语言支持的。Go语言的RPC框架有两个比较有特色的设计:第一个是RPC数据打包时可以通过插件实现自定义的编码和解码;另一个就是ROC建立在抽象的io.ReadWriteCloser接口之上,我们可以将RPC

2020-10-13 14:15:01 887

原创 编写更安全的RPC接口

编写更安全的RPC接口前言在一般的RPC应用当中,作为开发人员一般分为了三种,第一种就是提供RPC服务的开发人员,第二种就是客户端使用RPC服务的开发人员,以及最重要的设计RPC接口和规范RPC接口的开发人员,前面的案例当中我们将三种角色融在了一起,虽然看起来非常的方便,但是非常的不利于后期的维护以及二次开发RPC接口规范如果要冲高HelloService服务,第一步需要明确服务的名字以及接口(HelloService服务在上两篇博客)const HelloServiceName="path/to

2020-10-11 15:58:33 360

原创 Glang中RPC版的Hello World

Glang中RPC版的Hello World什么是RPCRPC是远程调用(Remote Procedure Call)的缩写,简单的来说就是调用远处的一个函数,这个距离有可能是同一个文件的函数,也有可能是同一个及其的另一个进程的函数,还有可能是更远地方的函数。RPC版的hello world我们首先构造一个HelloService类型,其中的hello()的方法用于实现一个打印的功能type HelloService struct{}func (p *HelloService)Hello(req

2020-10-09 14:56:18 157

原创 编写链表的技巧

编写链表的技巧前言接触编程满打满算已经两年多了,数据结构一直都是我绕不过去的坎,链表也是我最早接触的数据结构之一,对其中的原理倒是了熟于心,但是到真真需要使用他的时候反而写起来感觉非常的吃力,看了一些博客,总结了一些编写链表的技巧,方便于我以后的学习以及复盘。理解指针与引用其实链表并不是一个很难的数据结构,但是把她和指针揉在了一起,就会很容易让人琢磨不到头脑,所以想要学好链表,就需要好好的理解指针。我们知道很多语言都会有指针的概念,例如c,golang等等,但是也有很多语言并没有指针的概念,例如j

2020-10-05 14:22:05 144

原创 golang中结构体与json

golang中结构体与json简介在进行前后分离式开发时,json显得格外的重要,因为他是链接前后台重要的枢纽,在go语言中没有显式的对象,我们通常使用结构体来实现面向对象编程,本篇主要讲的是golang中结构体与json·的序列化以及反序列化。什么是jsonjson是储存和交换文本信息的语法,他类似于xml,但是他比xml更加的便捷,快速,易于解析。主要使用场景就是作为前后台数据交互的枢纽,以下是一个简单json的格式:{ "name":"huweicheng", "age":9

2020-10-03 13:47:11 1966

原创 Golang中常见的问题(持续更新)

Golang中常见的问题(持续更新)前言这里列举一些我们学习golang时常遇见的问题,他们都是符合golang语言语法的,可以正常的编译,但是可能会出现运行结果错误,或者是由资源泄露的风险可变参数是空接口类型当参数的可变参数是空接口类型时,传入空接口的切片时需要注意参数的展开的问题:func main(){ var a = []interface{}{1,2,3} fmt.Println(a) fmt.Println(a...)}不管参数是否展开,编译器都无法发现错误,但是输出是不同

2020-10-03 13:46:37 189

原创 golang中函数,方法和接口的浅析(函数篇)

golang中函数,方法和接口的浅析(函数篇)前言函数对应操作序列,是程序的基本组成元素。Go语言中的函数有具名和匿名之分:具名函数一般对应于包级的函数,是匿名函数的一种特例。当匿名函数引用了外部的变量,那么这个匿名函数就变成了闭包函数,闭包函数是函数编程语言的核心。方法是绑定到一个具体类型的特殊函数,Go语言中的方法是依托于类型的,必须在编译时静态绑定。接口定义了方法的集合,这些方法依托于运行时的接口对象,因此接口对应的方法是在运行时动态绑定的。Go语言通过隐式接口机制实现了鸭子模型(duck typ

2020-10-03 13:46:04 552

原创 结构体中的匿名字段

结构体中的匿名字段前言今天在学习golang的结构体时发现一个很有意思的东西---------结构体中的匿名字段,这一篇就简单介绍一下golang中结构体的匿名字段普通的结构体结构体我们并不陌生,以下是一个简单的结构体案例:type student struct { id int64 name string}这是在golang中声明结构体的简单案例,至于其中的用法我就不在这里赘述了,我们接下来看一下结构体的匿名字段的声明以及用法匿名字段首先简单的说一下什么是匿名字段:在

2020-10-03 13:45:32 465

原创 闭包的价值

闭包的价值什么是闭包闭包是由函数以及相关引用环境组合而成的实体,一般通过在匿名函数中引用外部函数的局部变量或包全局变量组成。闭包 = 函数+应用环境案例闭包对闭包外的环境引入是直接引用,编译器检测到闭包,会将闭包引用到外部变量分配到堆上。如果函数返回的闭包引用了该函数的局部变量(参数或者函数内部变量): * 多次调用该函数,返回的多个闭包所引用的外部变量是多个副本,原因是每次调用函数都会为局部变量分配内存 * 用一个闭包函数多次,如果该闭包修改了其引用的外部变量,则每一次调用该闭包对该外

2020-10-03 13:45:01 104

原创 golang中new和make的区别

golang中new和make的区别前言最近在学习golang中遇到一个小问题,网课中在给类型分配内存空间的时候大量的使用到了new和make关键字,但是对于他们两个的区别以及使用场景并没有过多的描述,对此我写下这篇博客以便于学习以及以后的复盘简介我们知道new与make关键字是用来分配内存空间的,在我们定义变量的时候,可能会觉得有点迷惑,不知道应该使用哪个函数来声明变量,其实他们的规则很简单,new 只分配内存,而 make 只能用于 slice、map 和 channel 的初始化,下面我们

2020-09-08 09:29:22 140

原创 golang中slice的扩容原理

golang中slice的扩容前言学习golang肯定使用过slice(切片),大家都知道它是一种数据结构,这种数据结构便于使用和管理数据集合,并且他是围绕动态数组的概念构建的,可以按照自己的需求自动缩小或者扩容,但是在学习这个知识点的时候我并没有深究其扩容的底层原理,故对此写下这篇博客进行记录,方便我的学习以及后期的复盘简介切片的动态增长是通过内置函数append来实现的,这个函数可以快速高效的增长切片,还可以通过对切片再次切片来缩小一个切片的大小。切片是一个非常小的对象,它是对底层的数组进行了抽

2020-09-08 09:28:49 2698

原创 复杂度快速入门(基础篇)

复杂度快速入门(基础篇)前言我们都知道数据结构算法的作用是让我们的代码在尽可能简洁的同时高效的完成业务的需求,那么我们该如何快速的判断我们代码的效率呢,最常用的办法就是将代码完成后进行一些压力测试从而来判断我们代码的效率,在一些书本中,将这种方法称为事后统计法,但是这种办法存在许多的局限性,所以为了能够更加快速的有效的判断代码的复杂度,大O复杂度表示法就诞生了。事后统计法在前言中我提到了事后统计法,那么这个方法有些什么弊端呢,总结如下:测试的结果非常的依赖测试环境测试的结果受到数据规模的影响

2020-07-27 14:45:13 218

原创 redis基础入门

redis入门简介在学习一门新的技术时,首先要先了解这门技术是做些什么的,以下是百度百科对redis的解释Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013...

2020-03-23 10:50:50 77

空空如也

空空如也

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

TA关注的人

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