自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 go 上下文context

go控制并发有两种经典的方式,一种是WaitGroup,另外一种就是ContextWaitGroup这种方式是控制多个goroutine同时完成func main() { var wg sync.WaitGroup wg.Add(2) go func() { time.Sleep(2*time.Second) ...

2019-09-12 17:49:00 189

转载 go log

go自带log包/*golang log exampleE-Mail : Mike_Zhang@live.com*/package mainimport ( "log" "os")func main() { logFile,err := os.Create("test1.log") defer logFi...

2019-09-10 17:20:00 119

转载 go 结构体取代类

我们知道go的结构体有点类的感觉,可以有自己的属性和方法。但是由于结构体的属性都是有零值的,我们在创建结构体的时候并不需要设置这些属性的值就能创建,但是这样创建的结构体往往没有什么实用价值。我们可以自定义一个构造方法,然后使用这个方法来构造此结构体package employeeimport ( "fmt")type employee s...

2019-09-10 15:00:00 99

转载 go select

select语句用于在多个发送/接收信道操作中进行选择。select语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,select会随机地选取其中之一执行。该语法与switch类似,所不同的是,这里的每个case语句都是信道操作。package mainimport ( "fmt" "time")func serv...

2019-09-10 10:51:00 81

转载 go channel

信道产生的动机:在 Go 语言中,一个最常见的也是经常被人提及的设计模式就是不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存,信道就是为此而生信道的声明:方法1:var a chan int 信道的零值为nil方法2:a :=make(chan,int) 通过信道发送接收消息:data :=<-a 读取信道a的消息a...

2019-09-09 17:24:00 77

转载 go 协程(Goroutine)

Go 协程是什么?Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。与线程相比,创建一个 Go 协程的成本很小。因此在 Go 应用中,常常会看到有数以千计的 Go 协程并发地运行。Go 协程相比于线程的优势相比线程而言,Go 协程的成本极低。堆栈大小只有若干 kb,并且可以根据应用的需求进行增减。而线程必须指定堆栈的大小,其堆栈是固定不...

2019-09-09 15:03:00 142

转载 go 学习之fmt包

基本模式fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。Print 将参数写入字符串或io.writerscan 从字符串或 io.Reader 读取指定数据, 并输出PrintPrint 方法的几种模式基础模式: [name] Print 返回默认格式化的字符串写入模式: F[name] 返回写入字节 例如: Fprint字...

2019-09-09 14:04:00 792

转载 go 学习之bufio

bufio模块通过对io模块的封装,提供了数据缓冲功能,能够一定程度减少大块数据读写带来的开销。实际上在bufio各个组件内部都维护了一个缓冲区,数据读写操作都直接通过缓存区进行。当发起一次读写操作时,会首先尝试从缓冲区获取数据;只有当缓冲区没有数据时,才会从数据源获取数据更新缓冲。Reader可以通过NewReader函数创建bufio.Reader对象,函数接收一个io.Read...

2019-09-05 15:52:00 160

转载 go 学习之io/ioutil包

// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情// 并且始终成功返回。var Discard io.Writer = devNull(0)// ReadAll 读取 r 中的所有数据,返回读取的数据和遇到的错误。// 如果读取成功,则 err 返回 nil,而不是 EOF,因为 ReadAll 定义为读取// 所有数据,所以不会把 E...

2019-09-05 14:22:00 167

转载 go 文件读写

go 文件读写有很多方式ioutil读文件package mainimport ( "io/ioutil" "fmt")func main() { data,err := ioutil.ReadFile("a.txt") #这里返回的data是一个字节切片 if err!=nil{ fmt.Pri...

2019-09-04 17:41:00 147

转载 go 发送http请求

普通的get请求package mainimport ( "io/ioutil" "fmt" "net/http")func main() { res,_ :=http.Get("https://www.baidu.com/") defer res.Body.Close() body,_ := iou...

2019-09-04 14:05:00 118

转载 go 学习之gorm

gorm是一个饱受好评的orm框架,此处数据库我们以mysql为例import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")var db *gorm.DBfunc init() { var err error db, err = g...

2019-09-03 17:49:00 373

转载 go 复合数据类型

数组数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,因此在Go语言中很少直接使用数组。数组声明方式:#第一种var balance [2] intbalance =[2]int {1,2}#第二种var ba = [3] int {1,2,3}#第三种ba := [...] int {1,2...

2019-08-26 18:32:00 164

转载 go 异常处理

Golang官方推荐的错误处理方式,是建议把err放在每个函数的返回值的最后,也就是每个函数返回至少两个值,一个是正常的结果一个是err。我们在日常的编码中也需要遵循这样的规则来定义func。这谁能接受?如果这样的话那得话多少时间来处理异常。还好后来出现了recover,可以用它来捕获异常。recover如果在defer函数中调用了内置函数recover,并且定义该defer...

2019-08-23 17:30:00 101

转载 go 学习之函数

个人把go函数理解分三种:1.普通函数普通函数声明:func name(parameter-list) (result-list) {  body}package mainimport "fmt"func add(x int, y int) int {return x + y}func sub(x, y int) (z int) { z = x -...

2019-08-22 17:47:00 87

转载 go module管理依赖包

go mod 最大的好处就是摆脱了GOPATH这个限制,在除了GOPATH以外的目录下也能开展你的项目go mod使用:1,确保你的go版本是1.1以上2,创建一个项目目录example,并添加一个go文件3,打开命令行,切换到该目录。4,设置环境变量,SET GO111MODULE=on 表示你要在GOPATH以外的目录下干活。5,go mod init ex...

2019-08-21 14:52:00 314

转载 go 学习之字符串

字符串字符串是不可变值类型,内部⽤用指针指向 UTF-8 字节数组。默认值是空字符串 ""。用索引号访问某字节,如 s[i], i不能是负数。不能⽤用序号获取字节元素指针,&s[i] ⾮非法。不可变类型,⽆无法修改字节数组。字符串有两种类型(区别就是是否转义)1,解释字符串该类字符串使用双引号括起来,其中的相关的转义字符将被替换,这些转义字符包括:\n :换行符\...

2019-08-21 14:25:00 93

转载 go 语言结构控制

if else 结构:#第一种if condition {// do something}#第二种if condition {// do something} else { // do something}#第三种if condition1 {// do something} else if condition2 {...

2019-08-19 14:39:00 86

转载 redis 入门之有序集合

zadd将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。score 值可以是整数值或双精度浮点数。如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但...

2019-08-14 16:12:00 73

转载 redis 入门之集合

sadd将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。# 添加单个元素redis> SADD bbs "discuz.net"(integer) 1# 添加重复元素redis> ...

2019-08-13 17:57:00 137

转载 redis 入门之列表

lpush将一个或多个值 value 插入到列表 key 的表头如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回...

2019-08-13 16:21:00 127

转载 redis 入门之哈希

hset将哈希表 hash 中域 field 的值设置为 value 。如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。当 HSET 命令在哈希表中新创建 field 域并成功为它设置值时,命令返回 1 ; 如果域 field 已经存在于哈希表, 并且 HSET 命令成功...

2019-08-13 14:19:00 71

转载 redis 入门之string

set 用法#set key value 设置value为字符串的键值对redis> SET key "value" #对不存在的key设置valueOKredis> GET key"value"redis> SET key "new-value" # 对已经存在的key设置valueOKredis> GET key"new...

2019-08-13 11:45:00 72

转载 redis 学习入门篇

基本概念redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系性数据库)。redis的特点速度快,因为数据存在内存中,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。支持丰富数据类型,支持string,list,set,sorted set,hash支持事务,操作都是原子性,所谓的原子性就是对数...

2019-08-12 17:54:00 80

转载 python 函数

内置函数python 内置函数有很多,这里挑一部分介绍一下abs() 获取绝对值,参数为数字all() 参数为一个可迭代对象,判断这个可迭代对象的所有元素都是True。 除了0,None,空,False 其他都是Trueany()参数为一个可迭代对象,判断这个可迭代对象的所有元素都是False。bin()返回一个整数 int 或者长整数 long int 的二进制...

2019-08-09 18:03:00 104

转载 迭代器,生成器,yield,yield from理解

迭代器说到迭代器就得想说可迭代对象Iterable,实现了__iter__()方法的对象都是可迭代对象,例如很多容器,list ,set,tuples。使用iter方法可以把一个可迭代对象变成迭代器迭代器是实现了__next__()方法的可迭代对象,也就是说迭代器必须实现__iter__()和__next__()方法,迭代器可以调用next()放不断的迭代,在给定的范围中返回数...

2019-08-08 15:19:00 167

转载 python 装饰器

1 函数装饰器构成:外部函数传入被装饰函数名,内部函数返回装饰函数名特点:不修改函数的调用方式,不修改函数的代码作用:在不对函数做任何修改的情况下增加额外的功能例如:缓存装饰器,权限验证装饰器,日志装饰器,路由装饰器,异常处理装饰器,错误重试装饰器,计时装饰器等函数装饰器装饰函数import timedef timmer(func): def...

2019-08-06 17:46:00 77

转载 python操作hbase

# -*- coding: utf-8 -*-import happybasefrom thrift.transport.TSocket import TSocketfrom thrift.transport.TTransport import TBufferedTransportfrom thrift.protocol import TBinaryProtoco...

2019-08-01 19:03:00 134

转载 python 数据压缩

zlib 压缩import zlibimport thiss = this.s.encode('utf8')*10for i in range(10): data = zlib.compress(s,i) #compress 接收两个参数分别是要压缩的字节和压缩等级。 de_data = zlib.decompress(data) #解压缩 ...

2019-07-25 17:31:00 535

转载 JsonSchema 启蒙

jsonSchema 的应用场景有很多,毕竟现在各个接口传输数据基本都是json,比如你做测试想对部分json字段进行校验或者统计你该如何写?解析json获取字段然后if else?不是说不可以但是也太low了,完全可以用jsonSchema来解决这个问题。有人就会说了,可是我不会啊,不会写jsonSchema,也不知道怎么用。 没关系问题不大,几分钟就能搞定的问题首先让我们取一个jso...

2019-07-24 17:35:00 88

转载 python 发送kafka

python 发送kafka大体有三种方式1发送并忘记(不关注是否正常到达,不对返回结果做处理)1 import pickle2 import time3 from kafka import KafkaProducer45 producer = KafkaProducer(bootstrap_servers=['ip:9092'],6 ...

2019-07-23 16:05:00 848

转载 Supervisor 使用

supervisor是Python开发的一套进程管理工具,被管理的进程是作为supervisor的子进程来启动,可以实现进程的监听,重启等功能。supervisor安装1:easy_install 安装:easy_install supervisor2:pip 安装:pip install supervisor3:Debian / Ubu...

2019-07-23 15:45:00 118

转载 Redis Sentinel 高可用方案

redis主从复制的问题Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用:1,一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。2,扩展主节点的读能力,分担主节点读压力。问题:1,一旦主节点宕机,从节点晋升成主节点,同时需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。2,主节点的写能力受到单机的...

2019-07-23 15:34:00 254

空空如也

空空如也

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

TA关注的人

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