自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 浅谈RR、RC事物隔离级别下MVCC的应用

mvcc:事物多版本并发控制,为了读取数据时不加锁提高读取性能和并发性的一种手段。在快照读的基础上,通过undo log版本链和read view实现的。RR:读已提交隔离级别,只允许当前事物只能读取到其他事物已经提交的数据。不会产生脏读,但会有不可重复读或幻读的问题。RC:可重复读隔离级别,在同一个事物内,多次读取同一行数据,结果一致。不会产生脏读、不可重复读,但是会有幻读的问题。

2023-09-17 20:58:00 343

原创 非确定有限状态机解决数据库冷热数据分离

热库最新数据误删除,冷库存放脏数据:热库数据迁移到冷库,然后已经进行了数据校验,并且通过,但是还没有生成归档记录,这时更新了热库,那么节点会走到删除节点,会把热库最新更新的记录给删除掉,冷库会一直存在脏数据。冷热不一致:热库数据迁移到冷库,还未进行数据校验(没有归档记录),写请求会直接打到热库,这样流程会卡在数据校验节点,后面定时任务回滚节点到上一状态,也解决不了,这样冷热数据会一直不一致。并发问题: 冷库召回更新发生在归档删除之前,导致找回且更新的数据被删除,导致数据丢失。

2023-09-12 11:48:25 126

原创 确定有限状态机解决数据库冷热数据分离

随着线上数据库的数据持续增长,仅仅通过添加合理的已经不能够满足数据库的性能要求。单表的日增量上千万,单表的读写性能会大幅度降低,且数据库的存储成本也会越来越高。所以采取数据的冷热分离设计提高数据库的性能。

2023-09-09 17:37:31 180

转载 事务日志~redo log保证事务的持久性

文章目录 redo log保证事务的持久性01. 事务的四大特性02. 什么是 Buffer Pool03. 什么是 redo log04. redo log 的好处05. redo log 的组成06. redo log 刷盘时机07. redo log ...

2022-05-02 16:58:50 2516

原创 Rocketmq-顺序消息底层原理

Rocketmq只能保证局部顺序,不能保证全局顺序消息在RocketMQ中提供了基于队列(分区)的顺序消费。RocketMQ中顺序性主要指的是消息顺序消费。RocketMQ 中每一个消费组一个单独的线程池并发消费拉取到的消息,即消费端是多线程消费。而顺序消费的并发度等于该消费者分配到的队列数。RokcetMQ的完成顺序性主要是由3把琐来实现的。下图是RocketMQ顺序消费的工作原理:1、消费端在启动时首先会进行队列负载机制,遵循一个消费者可以分配多个队列,但一个队列只会被一个消..

2021-05-14 13:18:16 840

原创 电商系统之策略模式的使用

策略模式定义:策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。简单来说就是就定义一个策略接口,子类策略去实现该接口去定义不同的策略。然后定义一个环境(Context,也就是需要用到策略的对象)类,以策略接口作为成员变量,根据环境来使用具体的策略。优点:1、算法可以自由切换。2、避免使用多重条件判断。3、扩展性良好。缺点:1、策略类会增多。2、所有策略类都需要对外暴露。使用场景 多个类只有算法或行为上稍有不同的场景 算法需要自由切换.

2021-02-19 14:04:53 380

原创 MySQL 关于表时间的设计以及边界处理

数据类型 范围 时间精度 date '1000-01-01'to'9999-12-31' 只有日期部分,没有时间部分 datetime '1000-01-01 00:00:00'to'9999-12-31 23:59:59' 时间格式为YYYY-MM-DD hh:mm:ss,默认精确到秒 timestamp '1970-01-01 00:00:01'UTC to'2038-01-19 03:14:07'UTC 同上,默认精确到秒 ...

2021-01-29 12:58:46 470

原创 MySQL-Rank、Dense_Rank()、Row_Number() 区别和使用

函数名 关键词 作用 主要适用场景 rank() 跳跃、 不连续 按照某字段的排序结果添加排名,但它是跳跃的、间断的排名,例如两个并列第一名后,下一个是第三名 在并列结果中,每个并列成绩都要占用一个名额 dense_rank() 连续 排序数字是连续的、不间断。当有相同的分数时,它们的排名结果是并列的 当排序结果存在并列成绩时,需要下一个名次于上一个名次是连续整数的情况 row_number() 行号 它是

2021-01-29 12:23:04 472

原创 Feign发送请求时参数的传递和返回值

1.SpringCloud中微服务之间的调用,传递参数时需要加相应的注解。用到的主要是三个注解@RequestBody,@RequestParam(),@PathVariable()2.get和post请求中对于传递单个引用类型的参数,比如String,Integer....用@RequestParam(),括号中一定要有值(参数的别名)。调用方需要加注解,被调用方不需要加。当然加上也不会出错。被调用方的参数名和调用方的别名保持一致即可。3.post请求中对于javaBean,map,list类型的

2020-12-12 17:30:31 2765

转载 Rocketmq 双主双从,同步复制

配置域名 1 2 192.168.241.101 paascloud-rocketmq-001 192.168.241.102 paascloud-rocketmq-002 下载 1 2 wget http://ftp.jaist.ac.jp/pub/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-rel...

2020-12-01 15:25:46 376

转载 Sentinel

Sentinel 是什么随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。Sentinel 的历史2012 年,Sentinel 诞生,主要功能为入口流量控制。 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。 20

2020-11-11 10:45:25 404

转载 nacos集群启动出现的问题(nacos启动失败或者启动个数不满足预期)

原创:https://blog.youkuaiyun.com/qq_41989047/article/details/105295098问题概述:在尝试虚拟机上启动三个nacos做集群的时候,实际上启动成功的只有2个,查看集群中启动的个数命令如下: ps -ef|grep nacos|grep -v grep|wc -l1解决方案一:笨方法,调整分配给虚拟机的内存大小(我这里提到4G)。而后使用free命令查看内存情况,结果如下:解决方案二(修改前先备份)修改bin/startup.sh,

2020-11-02 14:32:01 3269 1

转载 SpringBoot的配置文件bootstrap与application的作用以及区别

原创:https://blog.youkuaiyun.com/snow_7/article/details/88391192SpringBoot中有以下两种配置文件bootstrap (.yml 或者 .properties),application (.yml 或者 .properties)1.加载顺序上的区别bootstrap.yml(bootstrap.properties)先加载application.yml(application.properties)后加载bootstrap.yml 用于应用程序

2020-10-30 21:20:21 754

原创 《进程间通信》

一、管道管道分为匿名管道和命名管道管道是一种两个进程间进行单向通信的机制。 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。管道又分为匿名管道和命名管道。管道有如下特质:(1)其本质是一个伪文件(实为内核缓冲区)(2) 由两个文件描述符引用,一个表示读端,一个表示写端。(3) 规定数据从管道的写端流入管道,从读端流出。匿名管道:匿名管道的特征:(1)只能进行单向通信;(2)只适用于有血缘关系之间的进程;(3)

2020-07-12 21:00:44 143

原创 Synchronized原理解析(字节码文件)

Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步方法块,锁是括号里面的对象Moniter为了解决线程安全的问题,Java提供了同步机制、互斥锁机制,这个机制保证了在同一时刻只有一个线程能访问共享资源。这个机制的保障来源于监视锁Monitor。每一个Object对象中内置了一个Monitor对象。(对象头的MarkWord中的LockWord指向monitor的起始地址)p.

2020-07-09 22:32:15 274

原创 Java对象头

Java对象保存在内存中时,由以下三部分组成:1,对象头2,实例数据3,对齐填充字节对象头java的对象头由以下三部分组成:1,Mark WordMark Word记录了对象和锁有关的信息,当这个对象被synchronized关键字当成同步锁时,围绕这个锁的一系列操作都和Mark Word有关。Mark Word在32位JVM中的长度是32bit,在64位JVM中长度是64bit。Mark Word在不同的锁状态下存储的内容不同,在32位JVM中是这么存的:.

2020-07-09 22:16:27 285

原创 Java注解底层原理---实现一个简单的注解

import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;public class Test01{ //定义注解生命周期 @Retention(RetentionPolicy.RUNTIME) static @interface wyf{ String name() default "一帆"; String sex() default "男.

2020-06-27 19:44:15 888 1

原创 AQS-抽象同步队列

一、AQS-锁的底层支持

2020-06-08 13:28:50 349

原创 ArrayList的线程不安全性之CopyOnWriteArrayList

ArrayList:当进行add操作时出现线程不安全ArrayList的add()源码 public boolean add(E e) { ensureCapacityInternal(size + 1); elementData[size++] = e; return true; }ArrayList 的不安全主要体现在两个方面。1. elementData[size++] = e;2.elementData[si...

2020-06-03 22:33:39 297

原创 InnoDB之LRU的改进

为什么不采用朴素的LRU算法,直接将读取的页放入到LRU列表的首部呢?因为若直接读取到的页放入到LRU的首部,那么某些SQL操作可能会使缓冲池中的页被刷新出,从而影响缓冲池的效率。常见的这类操作为索引或数据的扫描操作。这类操作需要访问表中的许多页,甚至是全部的页,而这些页通常来说又仅在这次查询操作中需要,并不是活跃的热点数据。如果页被放入LRU列表的首部,那么非常可能将所需要的热点数据页从LRU列表移除,而在下一次需要读取该页时,InnoDB存储引擎需要再次访问磁盘。解决方案:InnoDB存储引擎引

2020-06-02 23:46:59 346

原创 JDK1.8新增的原子操作类 LongAdder

AtomicLong的弊端:对于AtomicLong,在高并发下大量线程会同时去竞争更新同一个原子变量,但是由于同时只有一个线程的CAS操作会成功,这就造成了大量线程竞争失败后,会通过无线循环不断进行自旋尝试CAS的操作,而这会白白浪费CPU资源。LongAdder的思想:把一个变量分解为多个变量,让同样多的线程去竞争多个资源使用LongAdder时,则是在内部维护多个Cell变量,每个Cell里面有一个初始值为0的long型变量,这样,在同等并发量的情况下,争夺单个变量更新操作的线程量会减少,

2020-06-02 14:23:17 402

原创 双亲委派模型+线程上下文类加载器

类加载器的双亲委派模型的好处:1. 可以确保Java核心库的类型安全:所有的Java应用都至少会应用java.lang.Object类,也就是说再运行期,java.lang。Object这个类会被加载到Java虚拟机中;如果这个加载过程是由Java应用自己的类加载器所完成的,那么很可能就会再JVM中存在多个版本的java.lang.Object类,而且这些类之间还是不兼容的,相互不可见的。借助于双亲委派模型,Java核心库中的类的加载工作都是由启动类加载器来统一完成,从而确保了Java应用所使用的都

2020-05-17 15:34:23 206

原创 ThreadLocal实例以及底层原理

public class ThreadLocalTest { public static ThreadLocal<String> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { Thread thread_1=new Thread(new Runnable() { @Override public v.

2020-05-16 21:12:19 387

原创 ClassLoader源码分析和实例解析

Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链接并初始化该类文件。1.1 加载:类由此组件加载。启动类加载器 (BootStrap class Loader)、扩展类加载器(Extension class Loader)和应用程序类加载器(Application class Loader) 这三种类加载器帮助完成类的加载。1. 启动类加载器 – 负责从启动类路径中加载类,无非就是rt.jar。这个加载器会被赋予最高优先级。2. 扩展类加载器...

2020-05-16 14:41:46 245

转载 SpringMVC中的常用注解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2020-03-07 11:57:53 188

原创 蓝桥杯 小数第n位 题解报告~

问题描述  我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。  如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。  本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。输入格式  一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0&lt;a,b,n&lt;1000000000)输出格式  一行...

2020-03-03 21:32:16 144

原创 Java的泛型和通配符

泛型:1.泛型类 class A&lt;T&gt;{ }2.在创建实例时,需要为其类型变量赋值3.泛型方法 class A&lt;T&gt;{ public T fun1(){} public void fun2(T t){} //以上两个都不是泛型方法,他们是泛型类里面的一个方法 //发现方法要求需要在...

2020-03-03 21:29:44 102

原创 codeforces 1131D 题解~(并查集/tarjan缩点+拓扑排序)

题意:有个人吃了两天饭,第一天吃了n个菜,第二天吃了m个菜,然后给出一个矩阵,矩阵上第i行第j列对应着第1天的第i道菜和第二天的第j道菜的关系。有n*m个大小关系d ea &gt; &lt;b &gt; &gt;c = &lt;表示 a&gt;d,a&lt;e,b&gt;d,b&gt;e,c=d,c&lt;...

2020-03-03 21:28:29 100

原创 进制转换 2-36

#include &lt;iostream&gt;#include &lt;string.h&gt;4#include &lt;cstdio&gt;using namespace std;int main(){ int result[20] = {0}; int M, N, length, i; long long num = 0; ...

2020-03-03 21:27:08 110

原创 将真分数分解为埃及分数

示例输入8/11输出1/2+1/5+1/55+1/110贪心算法:设某个真分数的分子为a,分母为b;把c=(b/a+1)作为分解式中第一个埃及分数的分母;将a-b%a作为新的a;将b*c作为新的b;如果a等于1,则最后一个埃及分数为1/b,算法结束;如果a大于1但是a能整除b,则最后一个埃及分数为1/(b/a),算法结束;否则重复上面的步骤。import java.uti...

2020-02-24 01:06:48 478

转载 带权并查集!!!

普通的并查集仅仅记录的是集合的关系,这个关系无非是同属一个集合或者是不在一个集合。而带权并查集,不仅记录集合的关系,还记录着集合内元素的关系或者说是元素连接线的权值。这里用三个例题讲解一下吧。How Many Answers Are Wrong (HDU - 3038)题目大意: 给你一系列区间和,判断...

2019-04-16 19:11:27 199

转载 JavaSE - 注解(Annotation)

Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注...

2019-01-18 15:33:45 157

原创 Divisors UVA - 294(素因数分解+快速线性筛预处理)

题目:Mathematicians love all sorts of odd properties of numbers. For instance, they consider 945 to be an interesting number, since it is the first odd number for which the sum of its divisors is larg...

2018-12-02 19:47:19 360

原创 (F - Colossal Fibonacci Numbers! UVA - 11582 )斐波那契数列求循环节!!!

题目:The i’th Fibonacci number f(i) is recursively defined in the following way:      • f(0) = 0 and f(1) = 1      • f(i + 2) = f(i + 1) + f(i) for every i ≥ 0 Your task is to compute some values ...

2018-12-02 14:26:20 243

原创 Subset sequence HDU - 2062 解题报告(康拓展开思想)

题目:Consider the aggregate An= { 1, 2, …, n }. For example, A1={1}, A3={1,2,3}. A subset sequence is defined as a array of a non-empty subset. Sort all the subset sequece of An in lexicography order....

2018-12-02 14:10:44 364

翻译 容斥原理(UVA 10325---The Lottery) 解题报告

题目:The Sports Association of Bangladesh is in great problem with their latest lottery `Jodi laiga Jai'. Thereare so many participants this time that they cannot manage all the numbers. In an urgent...

2018-12-02 13:48:01 463

空空如也

空空如也

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

TA关注的人

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