自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注做分享

分享存储领域与Golang相关知识

  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 需要我怎么帮你?关于维护Nutsdb开源社区的思考

随着之前小伙伴陆陆续续的不再维护这个项目,我开始思考,有一天我或许也不会再活跃在这个项目上,趁着这个时间,我可以再努力一把,争取可以把这个项目做成一个百年老店的样子。所以。如果对这个项目感兴趣的话,可以联系我喔。找到我的时候,我认为可以这样,每个人对做一件事都是想要得到什么,这个是内在驱动力。你不妨告诉我,你想要什么,需要我怎么帮你?

2023-07-17 22:22:12 273

原创 封装实验环境,助力观察MySQL binlog事件

维多利亚女王时代是聚积的年代;不仅仅是物质财富的聚积,而且是每一个国家能增强国力的所有因素与要素的增加和聚积。教育惠及社会各个阶层。科学打开大自然的无限宝库。宝库之门一扇一扇被打开。阴暗而神秘的宝库一个个被照亮,一个个被开发,任何人都可自由进入——每进入一个宝库,人们都会发现这个宝库至少又通向了另外两个宝库。每天早晨,人们一睁开眼,总能发现某种新机器开始了运转。每天晚上,当人们吃完晚饭之后,机器依旧在运转。在所有人进入梦乡之后机器也不会停止。--《第一世界大战回忆录》温斯顿丘吉尔。

2023-07-16 18:21:59 255

原创 谈谈在Bitcask中用读写锁实现并发控制的性能表现

可以看到,对于存储引擎,IO才是最大的瓶颈。那么为什么MySQL要实现MVCC呢。MySQL一般是读多写少,所以做MVCC收益比较大。另外MySQL是有数据缓存在内存的,可能对于大多数读取操作来说,根本不需要磁盘IO去读取。这样一来,又是一大波优化。但是当我们把目光拉会到bitcask,读写操作都需要经过磁盘,批次写只是延迟写入,我认为这样只是降低了写操作的比例,因为几个写操作合并成一个写入磁盘了。本质上没多大差别。所以这也符合了我一开始心中的想法,读写锁,也没那么不堪。

2023-07-16 11:47:42 152

原创 机缘巧合,实现nutsdb事务状态管理机制

在看代码的时候要带着问题去看,他为什么这么实现的,会不会有什么潜在的问题。要是这部分让我来实现应该会怎么做。看代码的时候内心要始终持有一个想法,我们不是在看标准答案,只是在看一个参考实现,参考实现可能有错,甚至错误百出。另外有想法了也应该去验证它,在验证自己的想法之前,你永远不知道是自己错了还是代码错了。

2023-07-16 11:46:06 169

原创 如何做一份干净的git提交记录

如何做一份干净的git提交记录

2023-06-24 09:24:09 1016

原创 从Commiter到Maintainer,这一年我和nutsdb的故事

这篇文章主要是总结我从nutsdb commiter成长为maintainer的故事。

2023-03-04 16:58:34 128

原创 关于slice扩容性能损耗的探究

探究slice扩容对性能的影响

2023-03-04 10:44:56 382

原创 同样是1亿数据,为什么nutsdb扛不住,而badgerdb可以?

这篇文章将讲述为什么同样是1亿数据,Hash索引的代表Nutsdb扛不住了,而LSM的代表badgerdb却可以?

2022-12-18 11:12:21 944

原创 如何从0到1实现一个基于bitcask的kv存储引擎

保姆级教程带你从0到1实现基于bitcask的kv存储引擎

2022-11-20 12:35:39 975

原创 记录在一次bufio.Reader的错误使用中引起的思考

记录一次bufio.Reader的错误使用引起的思考

2022-10-22 12:53:57 444

原创 nutsdb启动速度优化之旅

​ 做性能优化的感觉就像和计算机对话,依照自己现有的知识去想方案, 然后写出来之后做实验求证。做这个的思路是让他慢慢的变好,而不是上来就追求完美主义,完美主义是不靠谱的,反而会让你陷入到纠结之中,能优化一点是一点,我们要看到一个变好的趋势,然后在这个趋势上面不断的基于上一次的结果去猜想下一次怎么优化,也就是所谓的“小步快跑”。在做这个的过程中会往各个方向去脑爆,一些背景知识不是很清楚的时候需要翻越各种资料。整体来说是一次很不错的成长体验。

2022-09-24 12:54:12 516

原创 如何根据mysql表生成结构体|一个开源小工具的探索之旅

根据指定的mysql的表生成go结构体

2022-07-05 03:26:08 691

原创 如何写好测试用例以及go单元测试工具testify简单介绍

如何写好测试用例以及go单元测试工具testify简单介绍。

2022-06-26 21:29:17 531

原创 bitcask存储模型介绍 & 如何通过缓存fd的方式提升nutsdb接近20倍读取性能

bitcask存储架构详解与缓存fd获取大幅度性能提升原理介绍。

2022-06-01 02:29:49 443 2

原创 自然常数e的由来以及计算机为什么是二进制

背景​ 昨晚我在看一本书,叫《数学极客》,看到第六章《e:不自然的自然数》,这个数最早开始接触应该是高一的时候,那时候问老师,这个数是怎么来的,老实说,和圆周率一样,是一个常数,然后就没有然后了,后面这个问题就随着我的好奇心一起沉睡了,直到昨晚这个尘封许久的问题又一次浮上我的心头,庆幸的是这次我有了打破砂锅问到底的想法和行动。特意写下这篇文章纪念这一次探索之旅。e是怎么来的?​ 这个数其实来源于1683年瑞士数学家雅各布·伯努利以及他所研究的复利问题。复利问题是这样的,如果你有a元,存进银行里,银行一

2022-05-20 03:58:18 2430 1

原创 go int64类型传递到前端导致溢出问题排查

go int64类型传递到前端导致溢出问题排查

2022-05-06 20:52:48 1900

原创 计算11的N次方,N非常大

计算11的N次方

2022-03-08 19:45:55 1615

原创 Designing Access Methods: The RUM Conjecture 论文翻译【机翻】

ABSTRACT​ 四十多年来,数据库研究社区一直在构建存储、访问和更新数据的方法。在用于访问数据的结构和技术的演变过程中,访问方法适应不断变化的硬件和工作负载要求。 今天,即使是工作负载或硬件的微小变化也会导致访问方法的重新设计。 随着数据生成和工作负载多样化呈指数级增长,以及硬件进步带来了更高的复杂性,对新设计的需求一直在增加。 新应用程序的出现引入了新的工作负载需求,数据由越来越复杂和异构的硬件组成的大型系统管理。 因此,开发应用感知和硬件感知访问方法变得越来越重要。​ 每个研究人员、系统架构师或

2022-01-23 20:55:03 433

原创 《The Tail At Scale》论文详细解读

简介​ 用户体验与软件的流畅程度是呈正相关的,所以对于软件服务提供方来说,保持服务耗时在用户能接受的范围内就是一件必要的事情。但是在大型分布式系统上保持一个稳定的耗时又是一个很大的挑战,这篇文章解析的是google发布的一篇论文《The Tail At Scale》,里面讲述的是google内部的一些长尾耗时优化相关的经验,以及我个人的一些思考。服务耗时为什么会产生抖动​ 在目前大规模的分布式系统中,服务与服务之间的调用关系可以呈现为下图的形式,服务A,B都有多个实例,服务A实例通过服务发现模块找到下

2022-01-16 14:31:18 944

原创 The Tail At Scale & HotRing 论文分享

简介在分布式系统中会存在耗时过长的请求,或者服务本身也需要进行相关的耗时优化,本期给大家带来的是两篇耗时优化相关的论文,《The Tail At Scale》是Google发布的关于分布式系统中关于在不可靠的系统中打造一个可靠的整体耗时模型的论文,《HotRing》是阿里发布的关于服务本地缓存优化的论文。The Tail At Scale论文简介在下游众多的系统中,由于我们无法预测下游正在发生或者将要发生的事情,有的时候会因为下游服务的一些异样操作而导致耗时上涨,即便这个比例是很低的,但是在大

2021-12-18 16:06:11 1138

原创 如何在go中执行shell命令

本文将探讨在go中运行shell脚本命令及源码分析

2021-12-12 15:41:56 4505 3

原创 如何在go中执行python3代码

go-python3使用指南与踩坑记录简介​ 好久没有更新博客了,笔者毕业一年多了,在国内某大厂工作,最近在工作过程中接到了一个颇有挑战感的活,在解决过程中发现网上对这方面的学习资料还是有所欠缺,所以特地记录。没错,就是使用go调用python3的一些实践和探索。众所周知,go是静态类型的语言,python是动态类型的语言,要在静态类型的语言上调用动态语言,期间的翻译工作其实是十分繁杂的,其中充满了很多不确定性,下面由笔者带大家一起看看这个探索的历程。环境搭建​ github上有现成的go调用pyt

2021-11-21 15:36:37 5826 1

原创 java对象模型,一段代码引发的思考

大家好,笔者最近在看juc包下原子类的源码,发现了这么一段代码 // setup to use Unsafe.compareAndSwapInt for updates private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long valueOffset; stat...

2019-07-31 13:34:11 205

原创 vue-router踩坑日记Unknown custom element router-view

今天笔者在研究vue-router的时候踩到了一个小坑,这个坑是这样的笔者的具体代码如下:router.jsimport Home from '@/components/Home.vue';import Component1 from '@/components/component1.vue';const routes = [ { path: '/component1', n...

2018-11-06 18:56:51 28222 3

原创 hibernate高级工具类(含分页)

最近笔者在研究一套系统(jeeCMS)的源码,看到他对于hibernate的封装,顿时生出一种惊为天人的感觉,特与诸君分享。这里面用到了两个基础知识,笔者在这里列一下,对于hibernate不熟悉读者可以先看下面两几篇博客:hibernate基本操作:https://www.cnblogs.com/jack1995/p/6952704.htmlhibernate Criteria查询操作:h...

2018-11-02 10:55:50 1283

原创 js到vueJs,数据绑定的故事

时钟走到六点,A公司前端程序员老王准备收拾一下东西溜了,突然公司的后台工程师叫住了他,“哎,老王,我这里有一个REST接口,返回数据的形式是这样子的: [ {name:"shayla", age:18, sex:"female", salary:4396}, {name:"Elliot", age:20, sex:"male",salary:2200}

2018-10-15 23:35:12 1278

原创 nodeJs初探及简单的前后台交互

我们都知道js是脚本语言,本身依赖于浏览器的环境运行,而nodeJs的诞生就是为了让js脱离浏览器来运行.. 值得一提的是js是解释型语言,而nodeJs是需要编译的….下面让我们来看一组简单的nodeJs代码…..以上这张图上面只有一行简单的代码,就是在控制台上输出hello node.js,那么我们的node.js是怎么执行这段代码的呢….我说了nodejs是需要编译的..所以我...

2018-06-23 12:57:11 6028 1

原创 beaninfo封装,实现javabean与map的双向转化

我们知道,反射是Java的灵魂,笔者最近做一个javase的小项目时,需要用到java反射的知识,所以封装了一套小的工具类,目的是实现javabean到map的自由转化;好了,废话不多说,我们直接上代码吧….**工具类代码:**package utils;import java.beans.BeanInfo;import java.beans.Introspectio...

2018-02-25 01:45:39 624

原创 Jquery+boostrap打造分页组件升华版

在上一篇博客中,笔者做了一个简易的分页组件,这次做了一个逻辑比较全的..相对来说优化了一下…..下面我们来看代码.. html代码:html> head> meta charset="utf-8" /> title>title> script type="text/javascript" src="js/Jquery1.91.js"

2018-01-28 20:21:30 407

原创 Jquey+bootstrap打造简单的分页组件

博主最近都在写前端,总监来了一个将数据分页显示的需求,我想了想,反正这东西后面也要用到,不如把它弄成一个组件,封装起来,那以后岂不是美滋滋??好了,废话不多说,直接上代码了….html代码: (其实HTML部分的代码平平无奇,只是将bootstrap和jquery引进来…..)body> div id="page"> div>

2018-01-20 12:02:42 530

原创 java游戏编程学习笔记(一)--获取鼠标点击事件

public class Action1 extends JFrame{ private static final long serialVersionUID = 1L; static JButton b1 = new JButton("红色"); static JButton b2 = new JButton("黄色"); static JButton b3 =

2018-01-14 13:21:38 1350

原创 jdbc的简单封装(使用map处理结果集)

在上一片篇博客中,我们在查询的时候,是采用实现IResultSetHandler这个类的handle方法来处理查询返回的数据的,但是这样做有一个缺点,查询不同的表,每次都要实现这个handle方法,增大了工作量,而且用起来也差强人意,所以这次使用map对象来处理返回的数据:工具类的代码如下:package JDBCUtils;import java.sql.Connection;import ja

2017-11-08 19:39:42 6453

原创 jdbc的简单封装(使用properties文件)

在前面两篇博客preparedstatement简单操作和statement简单造作中,我们会发现很明显的一个问题就是,jdbc的Driver,connection的url,mysql的username和password具体的值都写在了java文件之中,这样子是不利于我们维护的,比如说,我们做项目的时候是使用本地的数据库进行测试,当我们项目做完了,交接的时候自然要用客户自己的数据库,难道要让客户深入

2017-11-02 00:22:33 3576

原创 jdbc实现简单的增删查改(preparedstatement)

上一篇博客讲到statement容易被sql注入…preparedstatment会对sql语句进行预处理,相对而言比较安全….下面我用preparedstatement进行简单的增删查改操作的源代码….public class JDBCTest2 { //数据库驱动 private static String jdbc_driver = "com.mysql.jdbc.Dri

2017-11-01 19:04:08 1155

原创 jdbc进行简单的增删查改(statement)

jdbc(Java DataBase Connectivity,java数据库连接),是一门基础的持久层技术….下面我用jdbc实现对数据的增删查改(这里是statement版本的,statement主要是使用字符串拼接的方式拼凑出sql语句,然后将sql字符串作为参数传入statement中执行,这样做比较危险,因为十分容易被sql注入….,preparedstatement会对sql语句进行预处

2017-10-31 15:00:40 511

原创 layer.iframe父子页面之间的数据交互(1)

layer弹出层弹出一个HTML页面是很常用的,父子页面之间的页面交互是很重要的一项小技术,下面我就简单的阐述一下我对这个小技术的一点小心得…..一,父页面传值到子页面,两种方式,1.layer的弹出层打开之后,会回调一个success的方法,我们自定义这个方法,将我们要传递的数据渲染到子页面上..(实际上是在父页面上完成对子页面的数据渲染)下面是父页面源代码: 下面是子页面源代码: 下面的效果

2017-10-30 16:00:32 12837 13

原创 layer--在开发之中的简单应用

layer是最近比较流行的弹出层框架,在开发之中我主要有以下两个方面的应用。1.弹出层的内容是一段html代码,代码如下:上面代码的效果如下: 2.弹出层是一个HTML的页面,就是一个iframe层,这个方面应用比较多,多用于父子页面之间的数据传递,关闭子页面刷新父页面之类的(这个下一篇博客会讲)。以下是源代码: 下面是效果:

2017-10-30 15:52:22 420

原创 表单验证-从js原生代码到Jquery validate

从事前端工作,表单验证是逃不掉了,小编这次给大家展示js原生代码的验证和是使用jquery框架的插件validate的验证..首先我写了一个粗劣的表单...没有什么好看的样式在上面,大家见谅.....表单代码如下...注册账号:密码:再次输入密码:手机号:email:提交效果如图:下面编写我们的

2017-10-26 07:40:09 808

原创 hibernate在用注解设置字段的默认值时遇到的问题

今天小编在用hibernate设置字段的默认值的时候遇到的一个小问题,特意分享一下,以免后来人继续犯错。。小编的pojo层的代码是这样写的。。package com.Shayla.pojo;import java.io.Serializable;import javax.persistence.Column;import javax.persistenc

2017-09-02 19:16:39 4803 2

jdbc驱动包

jdbc的驱动包,在使用jdbc编程的时候必须要用到的......

2017-10-31

java四大名著之 --Effective Java

Effective Java的pdf文档,高清下载,谁下谁知道。。。。

2017-10-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除