分布式事务解决方案及实现
摘要:一、事务的ACID原则 数据库事务的几个特性:原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily),简称就是ACID。 原子性:操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指
阅读全文
posted @
2019-10-31 07:11
kosamino
阅读(31061)
推荐(4) 编辑
MYSQL学习之安装、主从复制、读写分离原理解析以及详细配置(MySQL5.7)
摘要:一、Linux下mysql彻底卸载 1、查看mysql的安装情况 rpm -qa | grep -i mysql 2、删除上图安装的软件 rpm -ev mysql-community-libs-5.7.27-1.el6.x86_64 --nodeps 3、都删除成功之后,查找相关的mysql的文件
阅读全文
posted @
2019-10-30 18:03
kosamino
阅读(1020)
推荐(0) 编辑
MySQL常见问题集锦及注意事项
摘要:一、表设计上的坑 1、字段设计 1.1 字段类型设计 尽量使用整型表示字符串: `INET_ATON(str)`,address to number `INET_NTOA(number)`,number to address 1.2 定长和非定长数据类型的选择 1、decimal不会损失精度,存储空
阅读全文
posted @
2019-10-30 02:50
kosamino
阅读(492)
推荐(0) 编辑
MySQL学习之索引机制详解(B+树)
摘要:一、索引是什么? 索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。而且是实现了高级查找算法的数据结构,索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作。 二、为什么要使用索引? 索引能极大的减少存储引擎需要扫描的数据量。 索引可以把随机IO变成顺序IO。 索引可以帮助我们在
阅读全文
posted @
2019-10-29 19:28
kosamino
编辑
最全排序算法原理解析、java代码实现以及总结归纳
摘要:算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较
阅读全文
posted @
2019-10-29 05:25
kosamino
阅读(944)
推荐(0) 编辑
B+树Java代码实现以及测试
摘要:M阶B+树的定义: B+树是对B树的一种变形树,它与B树的差异在于: 有k个子结点的结点必然有k个关键码; 非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。 树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。 如下图,是一个B+树: 下图是B+树的插入动画: 代码如下:
阅读全文
posted @
2019-10-26 04:28
kosamino
阅读(3182)
推荐(2) 编辑
TreeMap核心源码实现解析
摘要:TreeMap实现了SotredMap接口,它是有序的集合。而且是一个红黑树结构,每个key-value都作为一个红黑树的节点。如果在调用TreeMap的构造函数时没有指定比较器,则根据key执行自然排序,如果指定了比较器则按照比较器来进行排序。 一、数据结构 1、继承关系 2、实现接口 3、基本属
阅读全文
posted @
2019-10-25 04:57
kosamino
阅读(666)
推荐(0) 编辑
B树Java代码实现以及测试
摘要:B树定义 B 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下: 根节点至少有两个孩子 每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子。 每个非根节点至少有M/2-1(上取整)个关键字,至多有M-1个关键字。并以升序排列。 key[i]和key[i+1]之间的孩子节点的值介于k
阅读全文
posted @
2019-10-25 04:07
kosamino
阅读(3086)
推荐(1) 编辑
二叉树BinaryTree构建测试(无序)
摘要:此测试仅用于二叉树基本的性质测试,不包含插入、删除测试(此类一般属于有序树基本操作)。
阅读全文
posted @
2019-10-24 18:22
kosamino
阅读(470)
推荐(0) 编辑
HashMap、HashTable差异详解
摘要:HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。 代码版本 JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 10.0.1。 1. 时间 HashTable产生于JDK
阅读全文
posted @
2019-10-24 13:00
kosamino
阅读(519)
推荐(0) 编辑
TreeMap源码实现类中文全解析
摘要:/** * 基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序, * 或者根据创建映射时提供的Comparator 进行排序,具体取决于使用的构造方法。 * * 此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销。 * 这些算法是 Cormen、Leiserson和 Rivest
阅读全文
posted @
2019-10-24 12:16
kosamino
阅读(379)
推荐(0) 编辑
注解Annotation原理详解及其应用示例
摘要:一、什么是注解 注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。 「java.lang.annotation.Annotation」接口中有这么一句话,用来
阅读全文
posted @
2019-10-23 21:32
kosamino
阅读(977)
推荐(2) 编辑
SpringCloud之Config配置中心+BUS消息总线原理及其配置
摘要:一、配置中心作用 在常规的开发中,每个微服务都包含代码和配置。其配置包含服务配置、各类开关和业务配置。如果系统结构中的微服务节点较少,那么常规的代码+配置的开发方式足以解决问题。当系统逐步迭代,其微服务会越来越复杂,慢慢演化成网状依赖结构,这个时候常规的代码+配置的开发方式就并不合适了,因为还要考虑
阅读全文
posted @
2019-10-22 16:57
kosamino
阅读(6969)
推荐(2) 编辑
在浏览器输入 URL 回车之后发生了什么
摘要:注意:本文的步骤是建立在,请求的是一个简单的 HTTP 请求,没有 HTTPS、HTTP2、最简单的 DNS、没有代理、并且服务器没有任何问题的基础上。 大致流程 一、URL 解析 地址解析: 首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等
阅读全文
posted @
2019-10-18 13:41
kosamino
阅读(345)
推荐(1) 编辑
SpringCloud之Zuul网关原理及其配置
摘要:Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。 Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。 Z
阅读全文
posted @
2019-10-18 04:46
kosamino
阅读(110038)
推荐(38) 编辑
Redis学习之Redis数据结构详解(RedisObject、SDS)
摘要:redis是一个key-value储存系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型) redis字符串:在redis-Client中执行以下命令:
阅读全文
posted @
2019-10-16 18:29
kosamino
阅读(1540)
推荐(0) 编辑
Redis二进制安全概念
摘要:二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,如果被攻击,能够及时检测出来。 二进制安全包含了密码学的一些东西,比如加解密、签名等。 举个例子,你把数据11110000加密成10001000,然后传给我,就是一种二进制安全的做法。 redis中的二进制安全 C字符串
阅读全文
posted @
2019-10-16 18:13
kosamino
阅读(3227)
推荐(0) 编辑
理解 HTTPS 工作原理(公钥、私钥、签名、数字证书、加密、认证)(转)
摘要:本文摘录参考: 细说 CA 和证书(主要讲解 CA 的使用) 数字签名是什么?(简单理解原理) 深入浅出 HTTPS 工作原理(深入理解原理) HTTP 协议由于是明文传送,所以存在三大风险: 1、被窃听的风险:第三方可以截获并查看你的内容 2、被篡改的危险:第三方可以截获并修改你的内容 3、被冒充
阅读全文
posted @
2019-10-16 17:46
kosamino
阅读(3125)
推荐(0) 编辑
SpringCloud之RabbitMQ消息队列原理及配置
摘要:本篇章讲解RabbitMQ的用途、原理以及配置,RabbitMQ的安装请查看SpringCloud之RabbitMQ安装 一、MQ用途 1、同步变异步消息 场景:用户下单完成后,发送邮件和短信通知。 运用消息队列之后,用户下单完之后,下单信息写入数据库,再写入消息队列,发送邮件和发送短信各自去消息队
阅读全文
posted @
2019-10-15 18:21
kosamino
阅读(30665)
推荐(7) 编辑
SpringCloud之RabbitMQ安装
摘要:本文介绍Linux以及MAC OS下的RabbitMQ安装及配置: 一、Linux环境下的RabbitMQ安装(CentOS) 1、安装ErLang Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活
阅读全文
posted @
2019-10-14 20:42
kosamino
阅读(2250)
推荐(0) 编辑
SpringBoot之Redis访问(spring-boot-starter-data-redis)
摘要:依赖注入: 配置文件 application.yml: Redis 对应配置文件 application-redis.yml: 覆写替换系统默认redisTemplete: 启动类: 程序接口: 此处抽离出一个公用RedisUtil:
阅读全文
posted @
2019-10-12 18:29
kosamino
阅读(8735)
推荐(0) 编辑
Spring之Redis访问(Spring-data-redis)
摘要:Spring-data-redis,是spring-data框架中,比较常用的,基于key-value键值对的数据持久层框架。Spring-data-redis,是一个基于Template模板开发的数据访问层框架。都是基于配置+template方法调用,实现redis数据CRUD操作的。 没有Spr
阅读全文
posted @
2019-10-12 18:04
kosamino
阅读(5233)
推荐(0) 编辑
SpringCloud之Hystrix容错保护原理及配置
摘要:1 什么是灾难性雪崩效应? 如下图的过程所示,灾难性雪崩形成原因就大致如此: 造成灾难性雪崩效应的原因,可以简单归结为下述三种: 服务提供者不可用。如:硬件故障、程序BUG、缓存击穿、并发请求量过大等。 重试加大流量。如:用户重试、代码重试逻辑等。 服务调用者不可用。如:同步请求阻塞造成的资源耗尽等
阅读全文
posted @
2019-10-10 20:03
kosamino
阅读(12967)
推荐(7) 编辑
SpringCloud之Feign声明式调用原理及配置
摘要:1 什么是Feign Feign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)。声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求。 Spring Cloud的声明式调用, 可以做到使用 HTTP请求远程服务时能就像调用本地方法一样
阅读全文
posted @
2019-10-03 02:25
kosamino
阅读(18818)
推荐(0) 编辑