Canal数据同步中间件初探

MySQL本身是支持主从模式(Master/Slave)的,Master产生的日志(binary log)中记录了所有增删改语句,将日志发送到Slave执行即可完成数据库的增量数据同步操作。 Canal是阿里巴巴开源的一个中间件,他的作用就是解析binary log来完成数据同步的。 源……

阅读全文

SpringBoot与Vue前后端分离最佳实践

前后端分离的开发模式大家都很清楚了,甚是麻烦: 前端启动webpack-dev-server 后端启动接口服务 开启代理服务器,前端通过代理服务器请求后端接口(解决跨域问题) 但是这些东西对于后端来说,太麻烦了,直接把前端打包好的dist文件丢到后端静态服务器里面就好了。 至于前端的web……

阅读全文

Kotlin杀手级特性-空安全

Kotlin相对于Java来说,有一个显著的特点,就是它致力于消除空引用所带来的危险,在Java中,为了避免NullPointerException的出现,我们需要不厌其烦的使用if (value != null) {} 来处理这种问题(虽然在JDK8之后有了更好的方式) 在Kotlin中很好解决了这个问题,下面……

阅读全文

Golang实现HTTP请求限流

在高并发应用场景中,为保证业务高峰期系统的稳定性或抵御CC攻击,最有效的方案为(缓存、降级、限流) 本文以限流为例,在Golang中示例如何通过中间件实现httpserver限流。 依赖 首先安装一个基本的限流算法包,然后为了方便,直接使用gin作为httprouter(后面会用到它的……

阅读全文

macOS自动化神器Hammerspoon

Hammerspoon 是 macOS 上一个强大的自动化工具,是一款开源软件,但安装之后 Hammerspoon 默认什么功能也没有,所有的功能都在 Lua 脚本中,需要用户自己编写。Hammerspoon 可以让用户通过 Lua 脚本直接调用 macOS 提供的 API,能做的事情既有自定义快捷键这种简单操作,也能实现连上家里 Wi-Fi 后自动打开某视频网站、到办公室后自动……

阅读全文

GraphQL::为API而生的查询语言

概述 GraphQL是Facebook开源的API查询语言,类似于数据库中的SQL。作为比较,RESTful API依赖于后端隐式的被动的数据约定,GraphQL更加显式,在获取数据和更新数据时更加主动,所见即所得。 详见官网:http://graphql.cn/ 谁在使用? Github……

阅读全文

Golang实现有序遍历Map

Go的map元素遍历顺序(使用range关键字)是随机的,而不是遵循元素的添加顺序,为解决这一问题,可使用下面的遍历方式。 package main import ( "fmt" "sort" ) func main() { map1 := map[int]string{ 0: "java", 1: "golang", 2: "python", } var keys []int for key := range map1 { keys = append(keys, name) } sort.Ints(keys) for _, key := range keys { fmt.Printf("%st%dn", key, map1[key]) } } 可以看到,其关键思路就是先把所有Key拿出来排序,再按照排序后的……

阅读全文

Golang-Modules包管理之道

golang原始的包管理方式非常low,然终于在go version 1.1.1之后,官方推出了模块概念,但是目前该功能还在试验阶段,有些地方还需要不断的进行完善。在官方正式宣布之前,打算不断修正这种支持。到时候就可以移除对GOPATH和go get命令的支持。 初始化 目前modules机制仍在早期……

阅读全文

Golang-全平台交叉编译

Golang的交叉编译要保证golang版本在1.5以上,我的环境是go1.11.5 darwin/amd64 交叉编译 ### mac上编译linux和windows二进制 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go ### linux上编译mac和windows二进制 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go ### windows上编译mac和linux二进制……

阅读全文

Golang二叉树遍历实现

二叉树的几种遍历方式 1)先序遍历 1)访问根节点;2)采用先序递归遍历左子树;3)采用先序递归遍历右子树; (注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”) 2)中序遍历 1)采用中序遍历左子树;2)访问根节点;3)采用中序遍历右子树; 3)后序遍历 1)采用后序递归遍历左子树;……

阅读全文