04 2020 档案

摘要:Proxy Pattern 代理模式 The proxy pattern provides an object that controls access to another object, intercepting all calls. 代理模式提供一个对象,该对象控制对另一个对象的访问,拦截所有 阅读全文
posted @ 2020-04-30 15:00 独角兕大王 阅读(132) 评论(0) 推荐(0)
摘要:反射是指在程序运行期对程序本身进行访问和修改的能力。 程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样 阅读全文
posted @ 2020-04-28 13:29 独角兕大王 阅读(197) 评论(0) 推荐(0)
摘要:对象池模式 The object pool creational design pattern is used to prepare and keep multiple instances according to the demand expectation. 实例: package main i 阅读全文
posted @ 2020-04-28 11:38 独角兕大王 阅读(153) 评论(0) 推荐(0)
摘要:A curated collection of idiomatic design & application patterns for Go language。 这是一组用于Go语言的惯用设计和应用模式 Creational Patterns 创造者模式 Abstract Factory:provi 阅读全文
posted @ 2020-04-28 10:25 独角兕大王 阅读(572) 评论(0) 推荐(0)
摘要:建造者模式 将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 以下情况适合使用呢建造者模式 .当创造复杂对象的算法一个独立于该对象的组成部分以及它们的装配方式时。 .当构造过程必须允许构造的对象有不同表示时。 Builder pattern separates the cons 阅读全文
posted @ 2020-04-27 23:52 独角兕大王 阅读(208) 评论(0) 推荐(0)
摘要:单例模式 Singleton creational design pattern restricts the instantiation of a type to a single object. 单例模式说白了,就是在整个golang单体服务中,如果说把所有博客比喻成一个服务,那么所有原创的文章都 阅读全文
posted @ 2020-04-27 13:47 独角兕大王 阅读(503) 评论(0) 推荐(0)
摘要:汇编指令太多了,这里借鉴了一位大神整理的指令: X86和X87汇编指令大全(有注释) 一、数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈 阅读全文
posted @ 2020-04-26 10:22 独角兕大王 阅读(358) 评论(0) 推荐(0)
摘要:在深入阅读runtime和标准库的源码时候,发现底层有大片代码都会与汇编打交道,所以这篇文章主要是介绍golang使用到的汇编。 go汇编语言是一个不可忽视的技术。因为哪怕只懂一点点汇编,也便于更好地理解计算机原理,也更容易理解Go语言中动态栈/接口等高级特性的实现原理。 本文涉及到计算机架构体系相 阅读全文
posted @ 2020-04-26 10:20 独角兕大王 阅读(1272) 评论(0) 推荐(0)
摘要:关于C语言的基础知识:常量、流程控制等等 函数的定义 函数:一组一起执行一个任务的语句。 这里有必要说一下:通常一个较大的程序中会分为若干个模块,一个模块用来实现一个特定的功能,在大多数的编程语言中都有子程序的概念,通常都用子程序来实现模块的功能,在C语言中,子程序的作用就是由函数来完成。在程序设计 阅读全文
posted @ 2020-04-25 23:50 独角兕大王 阅读(453) 评论(0) 推荐(0)
摘要:选择题 【初级】下面属于关键字的是()A. funcB. defC. structD. class 参考答案:AC,func 定义函数,struct 定义结构体的复杂数据类型 【初级】定义一个包内全局字符串变量,下面语法正确的是()A. var str stringB. str := “”C. st 阅读全文
posted @ 2020-04-25 17:27 独角兕大王 阅读(1580) 评论(0) 推荐(1)
摘要:之前我们通过Watch机制实现了简化版本的监视服务,这里我们基于这种机制实现一个发布订阅模式,但是因为RPC缺乏流机制导致每次只能返回一个结果,在发布订阅模式中,由调用者主动发起的发布行为类似于一个普通函数调用,而被动的订阅者则类似gRPC客户端单向流中的接收者。现在我们可以尝试基于gRPC的流特性 阅读全文
posted @ 2020-04-24 10:24 独角兕大王 阅读(5351) 评论(0) 推荐(0)
摘要:gRPC介绍 gRPC是Google公司基于Protobuf开发的跨语言的开源RPC框架。gRPC基于HTTP/2协议设计,可以基于一个HTTP/2链接提供多个服务,对于移动设备更加友好。本节将讲述gRPC的简单用法。 gRPC的技术栈: 最底层为TCP或Unix Socket协议,在此之上是HTT 阅读全文
posted @ 2020-04-23 13:36 独角兕大王 阅读(1442) 评论(0) 推荐(0)
摘要:RPC实现上下文信息 基于上下文可以针对不同的客户端提供定制化的RPC服务,我们可以通过为每个连接提供独立的RPC服务来实现对上下文的特性的支持,下面我们将针对每个RPC服务进行登陆验证,如果通过服务登陆就可以调用RPC,首先是proto目录下的proto文件: syntax = "proto3"; 阅读全文
posted @ 2020-04-23 09:10 独角兕大王 阅读(257) 评论(0) 推荐(0)
摘要:Protofbuf与RPC实例 下面已网上最多的一个RPC实例进行分析。首先定义好proto文件,在proto目录下创建message.proto文件: syntax = "proto3"; package proto; // 订单请求参数 message OrderRequest { string 阅读全文
posted @ 2020-04-22 22:04 独角兕大王 阅读(314) 评论(0) 推荐(0)
摘要:Protobuf介绍 Protobuf 是Protocol Buffers 的简称,它是谷歌公司开发的一种数据描述语言, 2008开源时定位类似于XML、JSON等描述语言,通过附带的工具生成代码并实现结构化数据的功能,但我们更关注的是Protobuf作为接口规范的描述语言,可以作为设计安全的跨语言 阅读全文
posted @ 2020-04-21 18:01 独角兕大王 阅读(890) 评论(0) 推荐(0)
摘要:跨语言的RPC 标准库的RPC默认采用Go语言特有的Gob编码,因此从其他语言调用Go语言实现RPC服务将比较困难,在互联网的为服务时代,每个RPC以及服务的使用都可能采用不同的编码语言,因此跨语言是互联网时代RPC的一个首要 条件。Go语言的RPC框架有两个比较有特色的设计: 一个是RPC数据包可 阅读全文
posted @ 2020-04-19 22:20 独角兕大王 阅读(390) 评论(0) 推荐(0)
摘要:RPC和Protobuf RPC是远程过程调用(Remote Procedure Call) 的缩写, 通俗地来说就是调用远处的一个函数,远处到底有多远?可能是同一个机器的另一个进程,也可能是远在火星好奇号上的一个秘密东西。因为RPC涉及的函数可能非常远,远到它们之间说着不同的语言,所以我们需要解决 阅读全文
posted @ 2020-04-19 15:31 独角兕大王 阅读(1071) 评论(0) 推荐(0)
摘要:概述 结构体是由成员构成的复合类型。Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性。 结构体成员,也可称之为成员变量,字段,属性。属性要满足唯一性。 结构体的概念在软件工程上旧的术语叫 ADT(抽象数据类型:Abstract Data Type) 数据层面,结构体是自定义数 阅读全文
posted @ 2020-04-19 10:05 独角兕大王 阅读(299) 评论(0) 推荐(0)
摘要:1、切换到dev后,当远端代码被修改,无法正常提交代码时: [rejected] dev -> dev (non-fast-forward) git checkout dev //切换分支 git fetch origin dev //获取远程dev分支的修改 git merge origin de 阅读全文
posted @ 2020-04-15 10:22 独角兕大王 阅读(102) 评论(0) 推荐(0)
摘要:参考文档:https://gobyexample.com/ 数组 package main import "fmt" func main() { var a [5]int fmt.Println("emp:", a) a[4] = 100 fmt.Println("set:", a) fmt.Pri 阅读全文
posted @ 2020-04-14 09:55 独角兕大王 阅读(714) 评论(0) 推荐(1)
摘要:Redis相关知识 1、为什么使用redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从 阅读全文
posted @ 2020-04-12 15:30 独角兕大王 阅读(147) 评论(0) 推荐(0)
摘要:使用Lock和RLock对象 如果多个线程共同对某个数据进行修改,则可能出现不可预料的结果,为了保证数据的正确性,需要对多个线程进行同步修改,在Python程序中,使用对象Lock和RLock 可以实现简单的线程同步功能,这两个对象都有acquire方法和release方法,对于那些需要每次只允许一 阅读全文
posted @ 2020-04-12 15:01 独角兕大王 阅读(514) 评论(0) 推荐(0)
摘要:Gin框架介绍 Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin。Go世界里最流行的Web框架,Github上有32K+star。 基于httprout 阅读全文
posted @ 2020-04-10 22:23 独角兕大王 阅读(1601) 评论(0) 推荐(0)
摘要:切片诞生的背景 数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum } //这个求和函数只能接受[ 阅读全文
posted @ 2020-04-08 22:55 独角兕大王 阅读(205) 评论(0) 推荐(0)
摘要:安装报错 Nuxt.js 是一个基于 Vue.js 的通用应用框架。 通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI渲染。 Nuxt.js 预设了利用 Vue.js 开发服务端渲染的应用所需要的各种配置。由于它是一个在服务器进行渲染的框架, 所以很适合用来做SEO。 阅读全文
posted @ 2020-04-01 13:07 独角兕大王 阅读(830) 评论(0) 推荐(0)