关闭

MySQL与MariaDB基于GTID的主从同步

MySQL与MariaDB基于GTID的主从同步最近在做数据库同步,主要业务场景是同步目前中间件分库分表的库表至单库单表中做OLAP。前期的同步是基于binlog filename和pos的,前几天DBA告知了一个可能的风险,仔细想想也的确是的,假如主节点挂了,从节点提升为主,那么其实主从的binlog pos是不一致的,那么继续注册上从同步肯定会有问题,再加之目前db使用的是vip,切换可能无感知...
阅读(560) 评论(0)

Raft一致性算法

Raft一致性算法今天和明天都得值班,基本主要是看监控,趁着空闲时候大概看了会raft算法,以前比较粗略的了解了一下,今天仔细的学习了会,在这里做个笔记吧。在分布式系统中,一致性是个很棘手的问题,单节点没有这个问题,但是为了保证高可用,往往会多机房部署,这样每个服务的一致性就必须得保证,raft一致性算法就是为了解决这个问题。在Raft中,每个服务都有三个角色: Follower Candidate...
阅读(213) 评论(0)

TCP头部的ACK与SEQ

TCP头部的ACK与SEQ这几天临近过年了,很多人都回去了,趁着闲着,把TCP/IP协议详解大概过了一过,有些以前似懂非懂的,现在貌似还是似懂非懂,不过至少比以前理解的好一点儿了,不过对于TCP的发包与回应之间的确认序号有点儿搞懵了,于是大概看了下,顺便在这里做了个笔记。之前的工作大概都属于上层工作吧,至少在协议之上,各种操作系统的IO模型,倒是底层没怎么去看,只知道大概的三次握手啊之类的,还是得对...
阅读(647) 评论(0)

C++11中的右值引用

C++11中的右值引用C++11中新的标准比较多,牵扯到的概念也比较多,有些一开始听上去好玄乎,但是了解了它的产生是有道理的后就能比较好的理解了。首先,右值引用这个概念感觉很难理解,它和引用有啥关系呢?其实和引用一样,只是有点儿差异:右值引用它是引用了一个临时变量的(大部分情况下),当然你也可以把某个对象变成右值引用。右值引用是为了解决深拷贝带来的消耗问题的。大家都知道,一个对象拷贝给另一个对象的时...
阅读(224) 评论(0)

c遍历lua中table的方法

c遍历lua中table的方法遍历一个table,肯定是不知道table的每个key的,所以lua_getfield肯定是不可行的。要遍历table,最主要的是lua_next函数,该函数主要接受一个int参数,代表当前table所在的索引,索引之上应该需要一个key,每次lua_next都会从当前的key遍历下一个key,于是我们想要得到第一个key,则只需要压入一个nil就行了。当lua_nex...
阅读(892) 评论(0)

简析DNS解析过程

简析DNS解析过程以前对于DNS的流程,以前也只停留在域名->IP的简单理解上,今天想看下cdn的原理,于是发现DNS貌似没那么简单,于是在网上收集了点资料,自己做了点理解,顺便做个简单的笔记。首先,以gocode.cc做个例子,这个是我另外一个博客,从最开始来梳理下解析到IP地址的过程,当然,HOST文件、DNS缓存什么都不考虑,只考虑从头至尾的大概流程。1.一般是请求ISP的DNS服务器,DNS...
阅读(236) 评论(0)

简析令人头大的定义 void (*(*f[])())()

简析令人头大的定义 void (*(*f[])())()解析在v2ex闲逛发现有人在谈怎么学习c语言,有人推荐tcpl,然后写了个反人类的变量定义 void (*(*f[])())(),这么复杂的定义在c++实际的项目中其实也不常见,反正我喜欢研究下到底是什么,就花了点时间去看看这个定义,其实复杂的变量定义在csdn有一个人详细的解读过,不过凭着三脚猫的功底,我还是按着自己的理解去解读下吧。首先提取...
阅读(419) 评论(0)

VSCODE golang环境配置

VSCODE golang环境配置 准备 安装好vscode后,安装golang插件,可以使用ctrl+shift+p或者f1呼出命令面板,输入extensions,输入关键词Go然后安装然后将一个文件夹拉入VSCODE中,然后通过文件->首选项->工作区设置来做工作区设置的任务。我们在工作区的配置文件settings.json中,需要设置的是go.gopath{ "go.gopath":...
阅读(2777) 评论(0)

对libevent中bufferevent的深入理解

对libevent中bufferevent的深入理解在libevent 2.x.x中,新增了bufferevent来封装了socket操作,用来简化编码操作。当前项目有个点实在是有点儿绕,我自己在libevent基础上做了一个网络引擎的wrapper,未来打算替换,在实现的过程中,发现了一些问题,于是这些日子在空闲的时候阅读了下libevent的实现以及从前没有接触过的epoll模型,心里也算是有点...
阅读(2552) 评论(0)

网络编程中的阻塞,非阻塞、同步,异步概念

网络编程中的阻塞,非阻塞、同步,异步概念网络编程中,我们常常接触阻塞,非阻塞,同步,异步等概念,有些概念可能交叉使用,比如异步非阻塞,同步非阻塞,同步阻塞等等,这些概念看似相似,却往往又有着不同的概念,也往往很绕。刚刚查了点资料总结了一下,通过结合具体的网络模型来给这些概念做个笔记。阻塞阻塞是最容易理解的,对应于各种阻塞的api,recv send等等都是阻塞的API,这些API的特性就是在内核的数...
阅读(1054) 评论(0)

使用redis写一个简单的分布式锁

对于一个进程来说,内部的资源锁有很多的实现方式,也都很高效,对于同一个机器的不同进程做同步的话,也有很多的方式去实现,对于不同机器上部署的程序来说,假如要进行同步,则比较麻烦。最简单的方式可能就是使用redis了,redis的实现是所有的操作放入单线程中处理的,所以对于并发的请求,都有先后顺序,那么对于实现分布式锁来说有着得天独到的优势。其实所谓的分布式锁,就是在某个共享节点上做一个资源的标记,当标...
阅读(550) 评论(0)

使用nsqlookupd来推送消息

使用nsqlookupd来推送消息其实有点儿文不对题,不是使用nsqlookupd来推送的,最终还是使用nsqd来进行推送。nsq的golang客户端中,consumer实现了从nsqlookupd中动态拉取服务列表,并进行消费,但是producer中没有实现这个,假设有N个nsqd节点,某一个不可用了,那么不就完蛋了?于是今天自己封装了一个producer,用来实现从nsqlookupd中拉取ns...
阅读(892) 评论(0)

Golang中的覆盖率测试

Golang中的覆盖率测试golang中提供了不少工具链,可以使用它们方便的进行单元测试、分析性能瓶颈,提供运行时信息等,总而言之是非常有用的。go test这个工具大家用的应该比较多,之前我使用也大多是用来做单元测试的,go中做单元测试非常的方便,然而我忽视了覆盖率测试。单元测试覆盖了多少代码呢?golang的go test工具其实还支持显示覆盖率,最简单的用法就是执行go test -c -co...
阅读(2367) 评论(0)

A星寻路算法

A星寻路算法这几天实现了一个A*寻路算法,其实在刚毕业的时候就写了一个,算法不复杂,就是效率有点儿低,这些天趁着空闲时间,重新实现了一遍。算法其实也不复杂,首先有以下几个概念: 开启的节点表(OpenTable)存放着所有的待检测的节点(坐标),每次都会从其中寻找出符合某个条件的坐标。 关闭的节点表(ClosedTable)存放着所有不会被检测的节点(坐标),每次检测都会忽略它们。 首先,我们定义了...
阅读(896) 评论(0)

内存管理之分页

内存管理之分页昨晚读《go语言学习笔记》的时候,看到了内存管理这一章,提到了内存的分页。其实分段与分页在微机接口这课程也学过,只是一直在弄上层的东西,有点儿生疏了,今天有空查了点资料,做了点笔记。虚拟地址与物理地址首先假定平台为32位平台。首先从应用层谈起,在应用层,我们有一个4G的完整的内存空间,我们可以通过对变量的寻址来读写某个变量,对于应用这一层来说,底层的内存管理的确是不可见的,而且对于应用...
阅读(563) 评论(0)
76条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:155535次
    • 积分:2210
    • 等级:
    • 排名:第18843名
    • 原创:59篇
    • 转载:16篇
    • 译文:1篇
    • 评论:36条
    最新评论