Sraft (一)
今天开始算是正式编写Sraft这个库, 开发的原因有两个: 我需要通过这次开发来熟悉Raft这个协议.(以后面试或者和人攀谈也更有底气) 我的微服务框架的服务中心需要一个能达成分布式一致性的功能. 语言采用的是Go, 目前的编程模型大概也完成了, 下面我来介绍: ...
今天开始算是正式编写Sraft这个库, 开发的原因有两个: 我需要通过这次开发来熟悉Raft这个协议.(以后面试或者和人攀谈也更有底气) 我的微服务框架的服务中心需要一个能达成分布式一致性的功能. 语言采用的是Go, 目前的编程模型大概也完成了, 下面我来介绍: ...
目前还是个5月份刚毕业的应届生, 今年还是撞到了疫情这个时间口上, 工作真是相当的难找, 6月到7月的样子, 我去尝试去考驾照, 目前还在科目二这边卡着, 中间有空也是各种找单位去面试. 比较幸运, 我在8月初的时候收到了来自安恒信息的面试通知, 他们是一家上市公司, 规模也不小, 我也是被别人内推才有这个面试资格的, 面试一共三轮, 前两轮技术面试, 最后一轮综合面试, 第一轮技术面试大概就是问了我一些JVM原理, 以及编码思路, 还有一些我比较擅长的分布式存储的问题. 第一轮过的呢也还算惊险. 第二轮是在几天后, 问的内容基本上是一些JDK源码, 数据结构, 还有一些框架问题.我回答的还算是流畅, 也算是过了.可惜,最后一轮面试之前,因为安恒不招收985,211以外的应届生, 所以我被淘汰了. ...
以前一些小白经常问我的问题. Q: 我想自己建立一个网站, 我应该使用什么技术? A: Ruby on Rails. ROR是一款老牌的WEBMVC框架, 到现在有10多年的历史了. 在中国, ROR使用的并不多, 这并不能说明它不优秀, ROR拥有非常多的功能模块, 几乎没有ROR做不到的. 论开发效率,ROR绝对能满足你, Ruby这个语言, 如果你有去学过, 会发现他的语法非常的随意. 自己造一个语法Ruby都能支持, 我认为, Ruby是在所有语言中开发体验最好的语言. 良好的开发体验加上优秀的开发效率, ROR是值得你去使用的. ...
其实很早就想写一篇 iBatis 的源码分析了, 不过有段时间去学习 Go 了, Java 就放下了, 最近 重新捡起 Java 就把以前没填的坑,填一下. Init 现在开始正片. 首先是 iBatis 的初始化工作.我们看下面的代码: 1// `BlogDataSourceFactory`的主要作用: 通过你的配置文件, 初始化一个DataSource 2DataSource dataSource = BlogDataSourceFactory.getBlogDataSource(); 3// JdbcTransactionFactory一个New就能得到, 没什么依赖条件 4TransactionFactory transactionFactory = new JdbcTransactionFactory(); 5// Environment要你交出数据源和事务工厂还有你的环境是开发还是生产 6Environment environment = new Environment("development", transactionFactory, dataSource); 7// Configuration有基本上你所有的配置 8Configuration configuration = new Configuration(environment); 9// 添加你的mapper到配置列表中, 等会我们去分析它 10configuration.addMapper(BlogMapper.class); 11// 通过你的配置类,让我们初始化一个SqlSessionFactory! 我们终于进入正题了!! 12// 可能你觉得很快... 其实本人在这里面分析还是花了很长时间 13SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); 好, 上文有说configuration.addMapper(BlogMapper.class)这个方法, 现在我们来分析一下它. ...
今天在看Sentinel-golang源码的时候发现sentinel在内部使用了sync.Pool该结构体.看到Sync和Pool的我第一反应想到应该是线程池之类的东西.在实际看过原理之后发现并不是这样的. ...
这篇文章以数据库存储的数据结构来引出本文的重点B树,以及后面还有另一种数据结构B+树. 试想, 如果你想持久化大量的数据在硬盘上, 同时还希望能高效的查询和修改他们, 你会怎么做, 使用哪种数据结构. 数组和链表, 他们的缺点很明显, 我们寻找数据需要遍历整个数据结构, 试想一下你的数据库中有50PB的数据, 这个开销是我们无法接受的. ...
这几天修改了这个Blog的主题, 加载速度应该是更快了, 而且优化了整个项目的自动部署. 取消了双仓库的部署策略, 在部署任务的执行上也用上了异步. 现在每次修改完成后的生成以及部署的速度比以前快了大概40%左右.但是访问Github Page的速度还是一如既往的的满.
先说说线程池本身, 由于线程资源本身在计算机中比较昂贵, 创建和销毁都有相当的开销, 所以在一些处理简单但是并发量大的场景使用一个请求对应一个线程的是不明智的选择. ThreadPoolExecutor是Java中线程池的一种实现. 构造函数如下: ...
比较Raft算法和Paxos算法之后,确实能感受到Raft算法更加接近正常人的思维逻辑, Paxos反而比较专业? 本文会说一些Raft算法实现上的一些考量, 我目前还没有正式开始开发Raft的实现. 文中所有的内容仅供参考. ...

有一段时间没有玩过GALGAME了. 所以就去尝试玩了Kanon. 总之就是, 非常后悔.