自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (6)
  • 收藏
  • 关注

原创 linux中shell输入输出重定向(>,>>,&>,>&,1>&2,2&>1)

linux中0,1,2分别代表什么在linux系统中0,1,2是一个文件描述符| 名称 | 代码 | 操作符 | java中表示 | linux下文件描述符(Debian为例) ||–|--|| 标准输入(stdio) | 0 | <,<< | System.in | /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0 || 标准输出(stdout) | 1 | >,>>,1>,1>> | Sys

2021-03-22 16:11:31 282 1

原创 go语言使用var声名变量

变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法。所以变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变使用var声名一个变量时,如果不赋初始值,系统会自动给其赋初始值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。注意:变量必须先定义才能使用go语言是静态语言,要求变量的类型和赋值的类型必须一致。变量名不能冲突。(同一个作用于域内不能冲突)简短

2020-10-24 16:41:32 368

原创 consul概述及其内部原理

consul概述:consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务,consul属于微服务架构的基础设置中用于发现和配置服务的一个工具。consul的核心功能:服务发现:consul的某些客户端可以提供一个服务,其他客户端可以使用consul去发现这个服务的提供者。健康检查:consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务,比如心跳包的检测。键值存储:应用实例可以使用consul提供的分层简直存储,比如动态配置,特征标记,协作等。通过HTT

2020-10-10 21:16:42 1418 1

原创 服务的发现机制

服务的发现机制:客户端发现和服务端发现客户端发现模式:客户端负责决定可用服务的网络地址,并且在集群中请求相应的负载均衡,客户端访问服务登记表,也就是一个可用服务的数据库,然后客户端使用一种负载均衡算法,选择一个可用的服务实例然后发送请求。注:服务实例的网络地址在服务器启动的时候被登记到服务注册表中,当实例终止服务时,从注册表中移除,服务实例的注册一般是通过心跳机制阶段性的进行刷新。服务端发现模式:在该模式下,客户端通过一个负载均衡器向服务端发送请求,负载均衡器查询查询服务注册表,并把请求路由到一台可用

2020-10-10 20:43:01 321

原创 微服务简介

微服务的定义:将一个单体应用拆分为一组微小的服务组件,每个微小的服务组件运行在自己的进程上,组件之间通过RESTful API这样的轻量级机制进行交互,这些服务以业务能力为核心,用自动话部署机制独立部署,另外这些服务可以用不同语言进行研发,用不同技术来存储数据对于单独部署独立运行的微服务实例而言,在业务需要时,需要与其他服务进行通信,这种通信是进程之间的通信方式(简称:IPC)IPC有两种实现方式:同步过程调用和异步消息调用。同步过程调用的具体实现中,有一种实现方式为RPC(远程过程调用)的通信方式

2020-10-10 20:25:36 143

原创 Mapreduce排序

一、排序概述1、排序是 MR 中非常重要的操作之一,MapTask 和 ReduceTask 都会对数据按照 key 进行排序。该操作是默认行为。任何 MR 程序中数据均会被排序,而不看逻辑是否需要。2、MapTask 中,它会将处理的结果暂时放到环形缓冲区中,当环形缓冲区使用率到一定的阈值,再对缓冲区数据进行一次快排,并将这些有序数据溢写到磁盘上,而当数据处理完毕后,它会对磁盘上所有文件进行归并排序。3、ReduceTask 中,它从每个 MapTask 上远程拷贝相应的数据文件,如果文件大小超过一

2020-09-27 16:28:59 870

原创 channel通道的一些细节

在go语言中需要使用内置函数make来创建一个通道make的第一个参数是关键字chan,之后跟着允许通道交换的数据类型。如果创建的是一个有缓存的通道,之后还要再第二个参数指定缓存区的大小。//无缓存的整形通道unbuffered:=make(chan int)//有缓存的字符串通道buffered:=make(chan string,10)向通道发送值或指针需要用到 <- 操作符//创建一个有缓存的字符串通道buffered:=make(chan string,10)//通过通道

2020-09-26 14:50:26 25584

原创 创建goroutine并管理其寿命

创建goroutine并管理其寿命步骤:1.分配逻辑处理器给调度器使用//分配一个逻辑处理器给调度器使用runtime.GOMAXPROCS(1)2.使用WaitGroup来作为一个计数信号量,可以用来记录并维护gororutine,如果WaitGroup的值大于0,wait方法就会阻塞//wg用来等待程序完成var wg sync.WaitGroup//计数加二,表示要等待两个goroutinewg.add(2)go func(){ ... //在函数退出时调用Done来通知ma

2020-09-25 21:36:48 125

原创 值接收者和指针接收者

go语言中有两种类型的接收者:值类型的接收者和引用类型的接收者如果使用值接收者声明方法,调用时会使用这个值的一个副本来执行。当调用使用指针接受者声明的方法时,这个方法会共享调用方法时接收者所指向的值。内置类型(值传递):数值类型,字符串类型,布尔类型引用类型(应用传递):切片,映射,通道,接口,函数类型规范里定义的方法集的规则:ValuesMethods ReceiversT(t T)*T(t T)and(t *T)从接收者类型的角度来看方法集:Me

2020-09-25 21:36:36 315 1

原创 并发和并行

并发和并行:并发:是指同时管理很多事情,这些事情可能只做了一般就去做别的事情去了。并行:是让不同的代码片段同时在不同的物理处理器上执行。并行的关键是在同时做很多事情。

2020-09-25 20:27:59 80

原创 使用os.openfile读文件时的权限

os.openfile()方法权限:O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件O_RDWR int = syscall.O_RDWR // 读写模式打开文件O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件O_EXCL

2020-09-21 19:47:53 1049

原创 defer

defer的词义:”延迟“,”推迟“在go语言中使用关键字defer来延迟一个函数或方法的执行1.defer 函数或方法:一个函数或方法的执行被推迟了2.defer的用法: A:对象.close(),临时文件的删除... B:go语言中关于异常的处理,使用panic()和recover() panich函数用于引发恐慌,导致程序中断执行 recover函数用于恢复程序的执行,recover语法上要求必须在defer中执行3.当一个函数有多个延迟调用时,它们被添加到一个堆栈中,并在L

2020-09-13 16:25:36 105

原创 递归函数

递归函数(recursion):一个函数自己调用自己,就叫做递归,这样的函数就叫做递归函数递归函数要有一个出口,逐渐的向出口靠近func main(){sum:=getSum04(100)fmt.Println(sum)res:=fbnq(12)fmt.Println(res)}//递归求和func getSum04(n int) int {if n == 1 { return 1}return getSum04(n-1)+n}//求斐波那契数列func fbnq(n

2020-09-13 15:53:55 106

原创 break和continue

switch中的break和continue/* switch中的break和fallthrough语句 break:可以在switch中使用,也可以在for循环中使用 强制结束case语句,从而结束switch分支 fallthrough:用于穿透switch 当switch中某个case匹配成功之后,就执行该case语句 如果遇到fallthrough,那么后面紧邻的case无需匹配,执行穿透执行 fallthrough应该位于某个case的最后一行*/n := 1sw

2020-09-12 19:44:30 162

原创 switch

/* 1.switch语句: 语法结构: switch 变量名{ case 数值1:分支1 case 数值2:分支2 case 数值3:分支3 ... default:最后一个分支 } 注意: 1.switch可以作用在其他类型上,case后的数值类型必须和switch作用的变量类型一致 2.case是无无序的 3.case后面的数值是唯一的 4.default语句是可选的操作,相当于 2.省略switch后的变量,相

2020-09-12 18:20:50 90

原创 golang中的map

map:映射,是一种专门用于存储键值对的集合,属于引用类型存储特点: A:存储的是无序的键值对 B:键不能重复,并且和value是一一对应的 map中的key不能重复,如果重复,那么新的value会覆盖原来的value,程序不会报错创建map: var map1 map[key类型]value类型 为nil,不能直接使用 var map2=make(map[key类型]value类型) var map3=map[key类型]value类型{key:value,key:value,k

2020-09-10 09:56:04 204

原创 深拷贝与浅拷贝

深拷贝:拷贝的是数据本身值类型的数据,默认都是深拷贝:array,int,float,string,bool,struct浅拷贝:拷贝的是数据地址导致多个变量指向同一块内存引用类型的数据,默认都是浅拷贝:slice,map

2020-09-09 19:25:38 45

原创 切片slice

切片slice1.每一个切片引用了一个底层数组2.切片本省不存储任何数据,都是这个底层数组存储,如果修改切片也就是修改这个底层数组3.当向切片中添加数据时,如果没有超过容量,直接添加,如果超过容量,自动扩容(成倍增长)4.切片一旦扩容就是从新指向一个新的底层数组1.创建切片//创建一个空切片var slice01 []int//创建一个长度和容量为3的切片slice01 := []int{10,20,30}//使用make创建切片func make(t Type,size …Integ

2020-09-09 18:32:47 108

原创 go语言数据类型

数据类型基本数据类型:int,float,string,bool引用数据类型:array,slice,map,function,pointer,channel值类型:int,float,string,bool,array存储数据本身,将数据传递给其他的变量,传递的是数据的备份。引用类型:slice,map存储的是数据的内存地址。...

2020-09-09 15:21:00 44

暂存所有的笔记.zip

暂存所有的笔记.zip

2021-08-06

面试:.md面试学习高级文件(个人整理)面试学习高级文件(个人整理)

面试:.md面试学习高级文件(个人整理)面试学习高级文件(个人整理)

2020-11-20

go注意点.mdgo学习高级文件(个人整理)

go注意点.mdgo学习高级文件(个人整理)

2020-11-20

linux.mdlinux学习高级文件(个人整理)

linux.mdlinux学习高级文件(个人整理)

2020-11-20

mysql高级.md

mysql高级.md

2020-11-20

mysql学习基础文件(个人整理)

mysql学习基础文件(个人整理)

2020-11-20

空空如也

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

TA关注的人

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