分布式数据库系列——(一)强一致性


​对于分布式系统而言,一致性是探讨当前系统内的一份逻辑数据存在多个物理的数据副本时,对其执行读写操作会产生什么样的结果。在数据库领域,“一致性”与事务密切相关,又进一步细化到ACID(原子性、一致性、隔离性和持久性)四个方面。 ​ 分布式存储系统为了避免设备与网络的不可靠带来额的影响,通常会存储多个数据副本。逻辑上的一份数据同时存储在多个物理副本上,当同时存在读操作和写操作时就带来了数据一致性问题,所以多个副本数据上的一组读写策略被称为“一致性模型”,本文提到了状态一致性和操作一致性两个概念。 1. 状态一致性:数据的实际状态所体现的一致性; 2. 操作一致性:外部用户通过协议约定的操作,能够读取到的数据一致性,即用户感受到一致性,实际存储并不一定具有一致性。 从状态一致性视角看,在任何情况下数据只有两种状态,所有副本一致或者不一致。在某些条件下不一致的状态是暂时的,还会转换到一致的状态,那么这种不一致称为“弱一致性”,变更操作后数据一直是一致的则称为“强一致性”。

汇编入门-寄存器介绍以及汇编基础指令


汇编指令是机器指令的助记符,与机器指令一一对应。汇编存在多种形式,8086CPU目前主流的有AT&T和INTEL两种,Windows使用INTEL语法,UNIX平台的编译器一直使用AT&T语法。本文以8086CPU为例,主要介绍AT&T语法的基础汇编指令。1. 寄存器CPU由

图算法之无权最短路径 - 基于Neo4j实现


本文基于Neo4j 3.5版本,采用嵌入式的方法开发,neo4j本身其实已经实现了最短路径算法,本文虽然基于neo4j实现,但是更多的是做算法思想的记录,同时本文讲解的最短路径为无权最短路径。 - 无权最短路径与带权最短路径不同,带权最短路径可能权重最小的路径并不是路径最短的路径。而无权最短路径,仅按路径长短来衡量,所以求最短路径最合适的方法为广度遍历。 - 一般网上描述的找最短路径的方法为,从起始点开始广度遍历,找到终止点时停止,这个方法并不是性能最高的方法,本文要说明的是从起始点和终止点双向开始进行广度遍历的算法(双向广搜),可以极大提升找最短路径效率。

JVM原理(一)——JVM概述


JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行,文章从虚拟机底层讲解虚拟机的设计与实现。

通过javadoc生成文档


一、pom.xml 添加插件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId>

python中logger的使用


正文# 日志名称:syslogger = logging.getLogger("sys")# 配置日志打印的级别,打印格式logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s %(message)s')

linux下的计划任务crontab

运维 

一、计划任务基本命令# 设定某个用户的cron服务crontab -u# 列出cron服务的详细内容crontab -l# 删除cron服务crontab -r# 编辑cron服务crontab -e# 启动服务service crond start# 关闭服务service crond stop#

Maven打包项目、SpringBoot项目打包成jar和war


本文环境IntelliJ 2019.21.Maven项目打包<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId>

SpringBoot使用Java修改端口、项目打包


本文环境1.SpringBoot 2.2.62.jdk 1.8.0_241一、使用java修改端口通过实现WebServerFactoryCustomizer<ConfigurableWebServerFactory>接口实现,springboot2.X之前的版本会有所不同。@Sprin

Springboot关闭默认的日志输出


本文环境springboot 2.2.6jdk 1.8.0_241一、配置application.yml在resources目录下新建application.yml文件(或:application.properties),添加如下内容:logging.level.[包名]: OFF# 例如,OFF可

Apache ignite笔记(一)——集群:集群发现、配置监听端口、对等类


本文环境Apache ignite 2.8.0jdk 1.8.0_241一、集群发现1.1 基于静态ip集群可采用xml或java两种方式配置。xml配置方式:<beans xmlns="http://www.springframework.org/schema/beans"

TigerGraph集群说明


1.使用前准备修改本地时间,关闭自动同步,因为授权码过期;准备tigerGraph企业版官方文档地址:http://docs.tigergraph.com.cn/admin/admin-guide/installation-and-configuration/installation-guide2.

neo4j集群说明以及算法包安装


1.neo4j高可用集群(HA)1.1 准备准备三台机子,ip如下:192.168.2.24(master)192.168.2.26192.168.2.271.2 安装Neo4j# 解压neo4j安装包tar xzf neo4j-enterprise-3.5.4-unix.tar.gz1.3 集群配

JanusGraph集群文档


本文用到的东西Ubuntu 16.04.1Java Jdk 1.8.0_191zookeeper 3.4.14hadoop 2.6.0hbase 2.2.4janusgraph 0.3.21.准备准备三台主机,主机信息如下:主机名IPcldev-701-37192.168.2.77cldev-701

使用LDBC SNB测试neo4j性能


图数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息,一般在使用它时数据量都非常庞大,图数据库的性能至关重要。本文描述了怎么使用LDBC SNB来对主流图数据库之一的neo4j进行性能测试。