redis基本数据结构

redis面试系列:数据结构 本文参考了《redis设计与实现》第二版 1. 数据类型 常见数据类型 string 字符串(简单动态字符串[sds],int整数) list 列表(链表[linkedlist],压缩表[ziplist]) hash 哈希(字典[hashtable],压缩表[ziplist]) set 集合(字典[hashtable], 整数...

阅读全文

mysql索引

mysql索引准备- 数据库与表 12345678910111213CREATE DATABASE demo;CREATE TABLE `t_test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `x` varchar(50) DEFAULT NULL, `a` varchar(50) DEFAU...

阅读全文

go内存管理

GO内存管理What ?内存的分配,回收,释放的过程。go的内存分配基于TCMalloc的原理实现。通常我们说内存管理指的是堆(Heap)内存管理,因为栈(Stack)不需要我们关心。 关于tcmalloctcmalloc是一个内存管理库,全称Thread-Cache Malloc,理解为带缓存的内存管理,其实就是为每一个线程创建一个缓存,每次为线程分配内存...

阅读全文

现代语言的内存管理模型

揭开现代语言内存管理的神秘面纱–译自:Deepu K Sasidharan,如果你对Deepu K Sasidharan的内容感兴趣可以在twitter上面关注他,随时获取最新动态。 Part1 什么是内存管理?其实内存管理就是控制和协调应用程序访问计算机内存的过程。这是一个严肃的话题,令人困惑,因为对于很多人而言它是一个黑盒子,让人捉摸不透。 What i...

阅读全文

闭包

初识闭包闭包是一种能访问当前作用域外变量的函数。 简单来说就是:使用某个函数时,依赖于该函数作用域外的环境,该函数称之为闭包。 判断一下情况是否是闭包? A 123456func f() { name := "Jane" func() { fmt.Println("My name is ", n...

阅读全文

go单例模式

单例模式go最大的优势之一在于在语言层面通过goroutine实现了并发编程,提高了执行效率;但是并发随之带来的事就如何保证线程安全。通过我们会使用单例模式来保证线程安全,即在程序中我们只需要某个“类”实例化一次即可,保证一个“类“仅有一个实例,并提供一个获取实例的方法。 小刀初试123456789101112131415// Instance ...typ...

阅读全文

go-channel

Golang中channel总结 golang里面倡导的是“通过通信来共享内存”,简单来说channel是groutine之间通信的桥梁。 1. 基本操作 声明 123456789101112// 无缓冲channel// 方式一ch := make(chan DataType)// 方式二var ch chan DataType// 有缓冲channel...

阅读全文

常见网络知识总结

1.osi模型与五层架构模型 2.五层架构模型中各层对应的网络协议 层 协议 应用层 HTTP,SMTP 传输层 TCP, UPD 网络层 IP, ICMP 数据链路层 PPP 物理层 IEEE802.3 3.TCP三次握手和四次握手三次握手(建立连接) TCP是一种面向连接的协议,在发送数据之前,双方必须建立一条可信任的连接。...

阅读全文

Docker环境实现基于keepalived双主高可用MySQL

背景最近在公司(博主在一家云计算公司工作)主要做MySQL数据库产品,说白了就是给用户提供一个高可用的MySQL数据库, 我们为用户提供了一个具备服务高可用,数据一致性的运维平台。 在方案的选择中我们最开始想到的是[利用Keepalived构建高可用MySQL双主自动切换,但是数据同步只能选择双主半同步,无法保证数据的强一致性,参考率市场上常见的方案之后,任...

阅读全文

Docker安装配置LNMP环境

  最近准备自己写一点东西,但是进场因为线上环境和本地开发环境不一致,弄得晕头转向。所以在windows里面部署vm虚拟机,在虚拟机中运行ubuntu16.04环境,然后起docker,在docker中运行lnmp集成环境。避免麻烦其实我是使用的github上大牛已经集成好的docker-compose 项目,一键执行就可...

阅读全文