首页
学习
活动
专区
工具
TVP
发布

老司机的技术博客

学而不思则罔,思而不学则殆!个人微信号: jkxqj1992 微信公众号:JKXQJ
专栏作者
58
文章
55948
阅读量
35
订阅数
redis cluster 原理
一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群。连接各个节点的工作可以使用CLUSTER MEET命令来完成。向一个节点node发送CLUSTER MEET命令,可以让node节点与ip和port所指定的节点进行握手(handshake),当握手成功时,node节点就会将ip和port所指定的节点添加到node节点当前所在的集群中。例如:通过向节点7000发送以下命令,我们可以将节点7001添加到节点7000所在的集群里面:
JKXQJ
2022-03-04
6650
5种单例模式的实现方式,哪种最优?
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
JKXQJ
2019-11-08
2.3K0
golang学习笔记10:数组切片Slice
Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了 一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是 不固定的,可以追加元素,在追加时可能使切片的容量增大。 ---- 定义切片 你可以声明一个未指定大小的数组来定义切片: var identifier []type 切片不需要说明长度。 或使用make()函数来创建切片: var slice1 []type = make([]type, len)也可以简写为 slice1 :=
JKXQJ
2018-11-08
2830
golang学习笔记7:指针
不像 Java 和 .NET,Go 语言为程序员提供了控制数据结构的指针的能力;但是,你不能进行指针运算。通过给予程序员基本内存布局,Go 语言允许你控制特定集合的数据结构、分配的数量以及内存访问模式,这些对构建运行良好的系统是非常重要的:指针对于性能的影响是不言而喻的,而如果你想要做的是系统编程、操作系统或者网络应用,指针更是不可或缺的一部分。
JKXQJ
2018-11-07
6140
golang学习笔记8:控制结构
关键字 if 和 else 之后的左大括号 { 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 } 必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的。
JKXQJ
2018-11-06
4490
golang学习笔记9:函数参数与返回值
Go 默认使用按值传递来传递参数,也就是传递参数的副本。函数接收参数副本之后,在使用变量的过程中可能对副本的值进行更改,但不会影响到原来的变量,比如 Function(arg1)。
JKXQJ
2018-11-06
1.1K0
golang学习笔记6:时间和日期
time 包为我们提供了一个数据类型 time.Time (作为值使用)以及显示和测量时间和日期的功能函数。当前时间可以使用 time.Now() 获取,或者使用 t.Day() 、 t.Minute() 等等来获取时间的一部分;你甚至可以自定义时间格式化字符串,例如: fmt.Printf("%02d.%02d.%4d\n", t.Day(), t.Month(), t.Year()) 将会输出01.09.2018 。 Duration 类型表示两个连续时刻所相差的纳秒数,类型为 int64。Location 类型映射某个时区的时间,UTC 表示通用协调世界时间。 包中的一个预定义函数 func (t Time) Format(layout string) string 可以根据一个格式化字符串来将一个时间 t 转换为相应格式的字符串,你可以使用一些预定义的格式,如: time.ANSIC 或 time.RFC822 。
JKXQJ
2018-10-22
7310
golang学习笔记5:字符串及相关函数
字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。UTF-8 是被广泛使用的编码格式,是文本文件的标准编码,其它包括 XML 和 JSON 在内,也都使用该编码。由于该编码对占用字节长度的不定性,Go 中的字符串也可能根据需要占用 1 至 4 个字节,这与其它语言如 C++、Java 或者 Python 不同(Java 始终使用 2 个字节)。Go 这样做的好处是不仅减少了内存和硬盘空间占用,同时也不用像其它语言那样需要对使用 UTF-8 字符集的文本进行编码和解码。 字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容;更深入地讲,字符串是字节的定长数组。 Go 支持以下 2 种形式的字面值:
JKXQJ
2018-10-22
1.2K0
golang学习笔记4:基本类型和运算符
布尔型的值只可以是常量 true 或者 false。一个简单的例子: var b bool = true 。两个类型相同的值可以使用相等 == 或者不等 != 运算符来进行比较并获得一个布尔型的值。当相等运算符两边的值是完全相同的值的时候会返回 true,否则返回 false,并且只有在两个的值的类型相同的情况下才可以使用。
JKXQJ
2018-10-22
6540
golang学习笔记3:常量与变量
常量使用关键字 const 定义,用于存储不会改变的数据。 存储在常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。 常量的定义格式: const identifier [type] = value ,例如:
JKXQJ
2018-10-22
5100
golang学习笔记2:基本结构与数据类型
除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符,其中包含了基本类型的名称和一些基本的内置函数。
JKXQJ
2018-10-22
4070
golang学习笔记1:初识
随着软件规模的不断扩大,诸多的学者和谷歌的开发者们在公司内部的软件开发过程中开始经历大量的挫折,在诸多问题上都不能给出令人满意的解决方案,尤其是在使用 C++ 来开发大型的服务端软件时,情况更是不容乐观。由于二进制文件一般都是非常巨大的,因此需要耗费大量的时间在编译这些文件上,同时编程语言的设计思想也已经非常陈旧,这些情况都充分证明了现有的编程语言已不符合时下的生产环境。尽管硬件在过去的几十年中有了飞速的发展,但人们依旧没有找到机会去改变 C++ 在软件开发的重要地位,并在实际开发过程中忍受着它所带来的令人头疼的一些问题。因此学者们坐下来总结出了现在生产环境与软件开发之间的主要矛盾,并尝试设计一门全新的编程语言来解决这些问题。
JKXQJ
2018-10-08
4370
你干了一辈子信息化,可能你都不了解信息化的本质
因为要连接,所以你要被迫开放你想和别人连接的那部分,否则别人怎么连你。我是不认可全部开放的。
JKXQJ
2018-10-08
8680
java面试必备之ThreadLocal
按照传统的经验,如果某个对象是非线程安全的,在多线程环境下对象的访问需要采用synchronized进行同步。但是模板类并未采用线程同步机制,因为线程同步会降低系统的并发性能,此外代码同步解决线程安全问题的挑战很大,可能会增加好几倍的实现难度。那么模板类到底采用什么方法来解决线程安全的难题呢?答案就是ThreadLocal。
JKXQJ
2018-07-24
5160
MQTT学习笔记
MQTT是一个C/S架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽非常昂贵。
JKXQJ
2018-07-24
1.6K0
Redis集群方案怎么做?大牛给你介绍五种方案!
Redis数据量日益增大,而且使用的公司越来越多,不仅用于做缓存,同时趋向于存储这块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架构,大部分都是采用分片技术,解决单实例内存增大带来的一系列问题。
JKXQJ
2018-07-24
1.6K0
docker实战入门(6)在docker中安装和使用kafka
下载镜像 这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像,在hub.docker.com中可以搜索到。 1、docker pull wurstmeister/zookeeper 2、docker pull wurstmeister/kafka 启动 1、启动zookeeper docker run -d --name zookeeper -p 2181 -t wurstmeister/zookeeper 2、启动kafka docker run
JKXQJ
2018-04-18
3.2K2
docker实战入门(3)基本概念
Docker Client 客户端 / Docker Daemon 守护进程 docker是CS架构,Docker Daemon守护进程即为服务端 客户端向守护进程发起请求,既可以在本地也可以在远
JKXQJ
2018-04-18
7840
docker实战入门(2)在linux下安装docker
本文选择ubuntu16.04 服务器作为演示的linux服务器 检查内核版本和驱动 uname -a 命令查看linux内核版本是否高于3.13,如果低于就要升级linux内核版本 ls -l /sys/class/misc/device-mapper 命令检查存储驱动是否安装 安装docker ubuntu下软件的安装方式一般是apt-get ,但是由于ubuntu维护的docker版本较久,所以我们建议安装docker官方维护的最新版本。 检查APT的https支持,查看 /usr/lib/a
JKXQJ
2018-04-18
7940
docker实战入门(1)为什么要使用 Docker?
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。 更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。 更快速的启动时间 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的
JKXQJ
2018-04-18
6080
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档