CRCMS

高山仰止,景行行止,虽不能至,心向往之

大道至简


  1. Mysql8下GTID复制

    简述之前介绍了通过binlog Pos来进行主从复制,基于复制点(pos)来进行复制,在迁移或因故障未能及时同步等问题下必须重新定位复制点,非常麻烦,特别是对于多台mysql而言。而GTID就可以很好的解决这个问题。GTID自动检测二进制日志的位置。 什么是GTID?全局事务标识符(Global Transaction Identifier, GTID )是在程序中创建的唯一标识符,并与主库上提交的每个事务相关联。此标识符是唯一的,不仅在其主库上,在给定的复制设置中的所有数据库上,它都是唯一的。 …

    于  GTID复制, mysql, replication 继续阅读

  2. Mysql8下主从复制、主主复制、多源复制

    简述复制的原理如下:在主库上执行的所有DDL和DML语句都会被记录到二进制日志中,也就是binlog。这些日志由连接到它的从库提取。它们只是被复制到从库,并被保存为中继日志。这个过程由IO线程的线程负责。还有一个SQL线程,它按顺序执行中继日志中的语句。 主要步骤不管是主主,还是多源,其基础配置都和主从差不多,所以就列出主从的基本步骤: master 开启binlog 创建复制用户 设置 master 以及 slave 惟一的server_id 在 slave 上执行change master …

    于  mysql, replication, 主主复制, 主从复制, 多源复制 继续阅读

  3. Golang Ioc容器

    简介用惯了Laravel的Ioc,对象获取变得那么自然,初用Go,各struct,func都要自己解析一堆NewFunc,索性自己搞了个ioc参见Github(https://github.com/firmeve/firmeve) 对象绑定1f := NewFirmeve() 标量绑定1f.Bind(`bool`, false) 1f.Bind(`string`, "string") Struct 绑定假设我们有如下struct 1234567type Foo struct { …

    于  golang, ioc, reflect 继续阅读

  4. Redis基础数据类型和常用操作命令

    简述经常用的都是通过代码包装好的redis调用程式,时间有些常用命令又模糊了,故拿出来记录下。 基础数据类型StringAdd|Set SET key value [EX seconds|PX milliseconds] [NX|XX] NX:相当于SETNX值不存在时增加,XX值存在覆盖 MSET key value key value ... 一次设置多个值 SETNX key value 原子性操作,当key不存在设置成功返回1,否则返回0 STRLEN key 返回key的长度,不存在返 …

    于 继续阅读

  5. Golang 锁的简单使用

    简述Golang中的锁机制主要包含互斥锁和读写锁 互斥锁互斥锁是传统并发程序对共享资源进行控制访问的主要手段。在Go中主要使用sync.Mutex的结构体表示。 一个简单的示例: 123456func mutex() { var mu sync.Mutex mu.Lock() fmt.Println("locked") mu.Unlock()} 或者也可以使用defer来实现,这在整个函数流程中全部要加锁时特别有用,还有一个好处就是可以防止忘记Unlock 123456f …

    于  golang, lock, sync.mutex 继续阅读

  6. 单向链表优化

    说明在 Golang 单向链表 中是通过不断修改next来实现链表本章通过一个虚拟head方法来优化链表,其原理就是,创建时直接创建head和next,head第一个值始终是nil通过head的next来作为初始值,并且对原有链表进行相关优化 实现代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666 …

    于  golang, 数据结构算法, 链表 继续阅读

  7. Golang container/list 实现 简单stack

    基础实现方法1234567891011121314151617181920212223242526272829import "container/list"type Stack struct { list *list.List}func NewStack() *Stack { return &Stack{ list: list.New(), }}func (s *Stack) Push(value interface&#123 …

    于  golang, stack, 数据结构算法 继续阅读

  8. Leetcode刷题之有效的括号#20

    题目描述给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 解题思路由’(‘,’)’,’{‘,’}’,’[‘,’]’等一一对应,想到的应该是数据栈。 左侧结构的符号入栈,遇到右侧的出栈对比,这样即可一一对应。 代码1234567891011121314151617181920212223242526272829func IsValid( …

    于 继续阅读

  9. Golang 单向链表

    基础链表123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899// 一个简单的单向链表type Node struct { value string // 下一个节点 …

    于  golang, 数据结构算法, 链表 继续阅读

  10. Golang 二分法查找

    递归二分法查找123456789101112131415161718192021222324252627282930313233343536373839404142func BinarySearch(array []int, target int, params ...int) int { length := len(array) maxPoint := length-1 var point int if len(params) == 0 { point = int(max …

    于  golang, 二分法查找, 数据结构算法 继续阅读