- 博客(35)
- 收藏
- 关注
原创 Redis集群服务搭建
为什么要有集群a)服务器可能因为代码原因,人为原因,或者自然灾害等造成服务器损坏。数据服务就挂掉了b)大公司都会有很多的服务器(华东地区、华南地区、华中地区、华北地区、西北地区、西南地区、东北地区、台港澳地区机房)集群的概念集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用...
2018-10-30 17:12:18
410
1
原创 Redis主从服务搭建
主从概念a)⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构b)master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1c)通过主从配置可以实现读写分离d)master和slave都是一个redis实例主从配置配置主a)查看当前主机的ip地址Ifconfigb)修改etc/redis/...
2018-10-30 17:04:27
182
原创 Redis数据库介绍、安装、基本用法及go语言操作redis
Redis简介Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其...
2018-10-30 16:56:26
680
原创 go语言学习笔记31------Goland之简版聊天室
package mainimport ( "net" "fmt" "strings" "time")// 创建全局用户结构体类型type Client struct { Name string Addr string C chan string}// 定义全局 map,存储在线用户列表var OnlineMap map[string]Client// 定义全局ch...
2018-09-20 22:17:45
237
原创 go语言学习笔记30------TCP通信
1.TCP通信过程下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。在这个例子中,首先客户端主动发起连接、发送请求,然后服务器端响应请求,然后客户端主动关闭连接。两条竖线表示通讯的两端,从上到下表示时间的先后顺序。注意,数据从一端传到网络的另一端也需要时间,所以图中的箭头都是斜的。1.1三次握手所谓三次握手(Three-Way Handshake)即建立T...
2018-09-18 22:18:48
290
原创 go语言学习笔记29------Goland之TCP、UDP通信并发②
1.TCP并发C/S模型通信1.1并发Server现在已经完成了客户端与服务端的通信,但是服务端只能接收一个用户发送过来的数据,怎样接收多个客户端发送过来的数据,实现一个高效的并发服务器呢?Accept()函数的作用是等待客户端的链接,如果客户端没有链接,该方法会阻塞。如果有客户端链接,那么该方法返回一个Socket负责与客户端进行通信。所以,每来一个客户端,该方法就应该返回一个Soc...
2018-09-15 22:23:11
1585
原创 go语言学习笔记28------Goland之TCP、UDP通信①
1网络应用程序设计模式1.1C/S模式传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。1.2B/S模式浏览器(Browser)/服务器(Server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。1.3优缺点对于C/S模式来说,其优点明显。客户端位...
2018-09-13 22:15:01
930
原创 go语言学习笔记27------Goland之网络编程
1.网络概述1.1协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:1)第一次,传输文件名,接收方接收到文件名,应答OK给传输方;2)第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;3)第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。由此,无论A、B之间传递何种文件,都是通过...
2018-09-12 22:13:07
859
原创 go语言学习笔记26------生产者消费者简易模型②
1.条件变量条件变量:条件变量的作用并不保证在同一时刻仅有一个协程(线程)访问某个共享的数据资源,而是在对应的共享数据的状态发生变化时,通知阻塞在某个条件上的协程(线程)。条件变量不是锁,在并发中不能达到同步的目的,因此条件变量总是与锁一块使用。GO标准库中的sync.Cond类型代表了条件变量。条件变量要与锁(互斥锁,或者读写锁)一起使用。成员变量L代表与条件变量搭配使用的锁。typ...
2018-09-11 17:38:03
201
原创 go语言学习笔记25------读写锁、互斥锁
1锁为了解决协程同步的问题我们使用了channel,但是GO也提供了传统的同步工具。它们都在GO的标准库代码包sync和sync/atomic中。下面我们看一下锁的应用。什么是锁呢?就是某个协程(线程)在访问某个资源时先锁住,防止其它协程的访问,等访问完毕解锁后其他协程再来加锁进行访问。1.1死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的...
2018-09-08 22:08:32
5730
3
原创 go语言学习笔记24------生产者消费者简易模型①
今天,让我们来探讨下go语言之下的生产者消费者模型,让我们先来了解一下单向channel的定义。1.channel及应用默认情况下,通道channel是双向的,也就是,既可以往里面发送数据也可以同里面接收数据。但是,我们经常见一个通道作为参数进行传递而值希望对方是单向使用的,要么只让它发送数据,要么只让它接收数据,这时候我们可以指定通道的方向。单向channel变量的声明非常简...
2018-09-07 16:16:58
245
原创 go语言学习笔记23------Go语言并发编程③
1.channelchannel是Go语言中的一个核心类型,可以把它看成管道。并发核心单元通过它就可以发送或者接收数据进行通讯,这在一定程度上又进一步降低了编程的难度。 channel是一个数据类型,主要用来解决go程的同步问题以及go程之间数据共享(数据传递)的问题。 goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。goroutine 奉行通过通信来共享内存,而不是...
2018-09-06 22:40:36
203
原创 go语言学习笔记22------Go语言并发编程②
1.Goroutine1.1什么是Goroutinegoroutine是Go语言并行设计的核心,有人称之为go程。 goroutine说到底其实就是协程,它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时...
2018-09-05 22:14:56
175
原创 go语言学习笔记21------Go语言并发编程①
1.Go并发编程1.1概述简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务。随着硬件的发展,并发程序变得越来越重要。Web服务器会一次处理成千上万的请求。平板电脑和手机app在渲染用户画面同时还会后台执行各种计算任务和网络请求。即使是传统的批处理问题–读取数据,计算,写输出–现在也会用并发来隐藏掉I/O的操作延迟以充分利用现代计算机设备的多个核心。计算机的性能每年都在以非线...
2018-09-04 21:54:35
181
原创 go语言学习笔记20------面向对象③
1.接口1.1接口实现package mainimport "fmt"type Human interface { sayhi()}type student struct { name string id int}func (s *student) sayhi() { fmt.Println(s.name, s.id)}type ...
2018-09-03 22:41:09
103
原创 go语言学习笔记19------面向对象②
1.方法1.1基本方法创建package mainimport "fmt"type Interger intfunc (a Interger)Test(b Interger) Interger { return a+b}func main() { var result Interger=3 t:=result.Test(3) fmt.Println(...
2018-09-02 22:49:07
131
原创 go语言学习笔记18------面向对象①
1:匿名字段1.1匿名字段创建与初始化package mainimport "fmt"type person struct { id int name string age int}type student struct { person //匿名字段 score float64}func main() { var a stud...
2018-09-01 20:29:28
124
原创 go语言学习笔记17------数据结构③
1.结构体type student struct { name string id int sex byte}type 结构体名字 struct1.1顺序初始化var s1 student=student{"abc",123,'b'}注意:顺序初始化,每个成员必须初始化,在初始化时,值的顺序与结构体成员的顺序保持一致。1.2结构体比较...
2018-08-31 22:36:42
143
原创 go语言学习笔记16------双色球玩法
双色球 红球1-33号 随机选择6个 不能重复 蓝球 1-16号 选择1个package mainimport ( "math/rand" "time" "fmt")func main() { //使用随机数种子 rand.Seed(time.No
2018-08-29 20:30:20
820
原创 go语言学习笔记15------数据结构②
1.字符串我们从文件中将数据读取出来以后,很多情况下并不是直接将数据打印出来,而是要做相应的处理。例如:去掉空格等一些特殊的符号,对一些内容进行替换等。 这里就涉及到对一些字符串的处理。在对字符串进行处理时,需要借助于包“strings” 下面讲解一下常用的字符串处理函数: (1)Contains func Contains(s,substr string)bool 功能:检查字符串...
2018-08-29 20:16:29
162
原创 go语言学习笔记14------猜数字游戏
猜数字游戏需求:要求用户输入3位数,与系统随机产生的3位数,进行每一位比较,如果不相等,提示用户输入的数字是大了还是小了,如果相等,提示一致。最后每一位上的数字都一致,退出程序。package mainimport ( "math/rand" "time" "fmt")
2018-08-27 22:02:55
297
原创 go语言学习笔记13------数据结构①
1:数组所谓的数组:是指一系列同一类型数据的集合。1.1数组定义var a [10]int数组定义也是通过var 关键字,后面是数组的名字a,长度是10,类型是整型。表示:数组a能够存储10个整型数字。也就是说,数组a的长度是10。 当定义完成数组a后,就在内存中开辟了10个连续的存储空间,每个数据都存储在相应的空间内,数组中包含的每个数据被称为数组元素(element)...
2018-08-26 22:03:09
134
原创 go语言学习笔记12------函数④
1.匿名函数与闭包1.1匿名函数前面我们定义函数的时候,发现是不能在一个函数中,再次定义一个函数。如果我们想在一个函数中再定义一个函数,那么可以使用匿名函数,所谓匿名函数就是没有名字的函数。 如下所示:package mainimport "fmt"func main() { var num int num=9 f:=func(){ nu...
2018-08-24 22:34:09
99
原创 go语言学习笔记11------函数③
1.函数类型在GO语言中还有另外一种定义使用函数的方式,就是函数类型,所谓的函数类型就是将函数作为一种类型可以用来定义变量,这种用法类似于前面我们讲过的int ,float64,string等类型,这些类型都是可以用来定义变量。基本语法如下:package mainimport "fmt"func Test(a,b int)(sum int){ sum=a+b re...
2018-08-23 21:29:13
126
原创 go语言学习笔记10------函数②
1.函数嵌套调用1.1 基本函数嵌套调用函数也可以像我们在前面学习if选择结构,for循环结构一样进行嵌套使用。所谓函数的嵌套使用,其实就是在一个函数中调用另外的函数。package mainimport "fmt"func Test1(a,b int){ fmt.Println(a+b)}func Test(a,b int){ Test1(a,b)}...
2018-08-22 22:25:02
156
原创 go语言学习笔记9------函数①
1.函数定义1.1什么是函数呢?函数就是将一堆代码进行重用的一种机制。函数就是一段代码,一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据就叫参数,返回的执行结果就是返回值。 ##1.2函数基本语法 func 函数名(){ 函数体 } 通过func关键字来定义函数,函数名后面必须加括号...
2018-08-20 20:06:03
134
原创 go语言学习笔记8------小练习
百钱百鸡题目:公鸡5钱1只 母鸡3钱1只 小鸡1钱3只 花费100钱买100只鸡 鸡必须是整只package mainimport "fmt"func main(){ for cock:=0;cock<=20;cock++{ for hen:=0;hen<=33;hen++{ for chicken:=0;chicken<=...
2018-08-20 20:02:50
1500
原创 go语言学习笔记7------循环结构
循环结构1.1基本语法结构 在GO语言中,我们有专门实现这种循环的结构就是for结构(GO语言中只有for循环结构,没有while,do-while结构),基本语法结构如下: for 表达式1;表达式2;表达式3{ 循环体 } 表达式1:定义一个循环的变量,记录循环的次数 表达式2:一般为循环条件,循环多少次 表达式3:一般为改变循环条件的代码,使循环条件终有一天不再成立...
2018-08-18 23:14:30
215
原创 go语言学习笔记6------流程控制②
1.4if-else if 结构基本语法如下: if 条件判断{ 要执行的代码段 }else if 条件判断{ 要执行的代码段 }else if 条件判断{ 要执行的代码段 }else if条件判断{ 要执行的代码段 }…………………………….else{ } 通过以上的语法格式我们发现,可以写很多的else if结构。具体的执行过程:程序首先判...
2018-08-18 00:37:19
188
原创 go语言学习笔记6------流程控制①
前面我们写的程序都是从第一行开始执行,一直执行到末尾,一行一行的顺序执行下来,这种执行结构叫顺序执行结构。 GO语言除了有顺序结构,还有选择结构,循环结构。 顺序结构:程序按顺序执行,不发生跳转。 选择结构:依据是否满足条件,有选择的执行相应功能。 循环结构:依据条件是否满足,循环多次执行某段代码。1.1if结构在编程中实现选择判断结构就是用if if结构基本语法 i...
2018-08-17 00:27:31
200
原创 go语言学习笔记5------运算符
GO语言中常见的运算符有算术运算符,赋值运算符,关系运算符,逻辑运算符等。1:算术运算符(1) Go语言中不允许隐式转换,所有类型转换必须显式声明(强制转换),而且转换只能发生在两种相互兼容的类型之间 强制类型转换总结 强制类型转换的语法格式: 数据类型名(待转换的值)2:赋值运算符关于赋值运算符前面我们已经使用过多次,赋值运算符 = , varint...
2018-08-13 22:28:45
254
原创 go语言学习笔记4------常量
1:常量定义使用变量是用来存储数据,并且变量里面存储的值是可以在程序运行时随时发生变化的。但是,常量里面的值在确定好后,后面是不允许修改的下面看一下关于常量的定义使用。Func main(){//变量:程序运行期间,可以改变的量,变量声明需要var//常量:程序运行期间,不可以改变的量,常量声明需要constconst a int=10//a=20 //err,常量不允许修改...
2018-08-12 23:14:37
129
原创 go语言学习笔记3------变量
1.什么叫变量?所谓的变量简单地理解就是用来存储数据的。计算机通过变量来保存数据实际上将数据存储到计算机的内存中,这里我们可以画一个图给大家理解一下。 计算机将内存划分成不同的区域,数据就是存储在这些区域中,那么怎样从这些区域中将数据取出来呢?计算机将每块区域都加上了一串数字,作为编号。通过该编号就可以将数据取出来了,但是问题是,这一串数字对我们程序员来说是非常难记忆的, 为了解决这个...
2018-08-11 20:37:38
219
原创 go语言学习笔记2------第一个Go语言程序
第一个GO程序开发第一个GO程序。具体步骤如下:1:选择文件—>新建 弹出如下对话框。 注意:程序名称,和程序保存位置不能输入中文2:新建完成后,开始输入代码。第一行:每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。 Go语言中是通过包来对代码进行管理的。那么什么是包呢?我通过一个例子来解释一下包的概念。例如:有一家公司叫“京东“”,该...
2018-08-11 19:51:19
1020
原创 go语言学习笔记1------Go语言介绍
1.1GO语言是什么“Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效率的软件”(来自go官网golang.org) 程序员在开发程序,开发软件时都会选择一门编程语言,那么我们应该怎样进行选择呢?可能有人会说,我们要选择一门简单的,容易学习的,而且开发效率高的,能够在很短的时间内开发完成一个软件,这样老板会非常的满意,能够升职加薪,Python语言或者Ruby语言就...
2018-08-11 19:39:56
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人