自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 OLAP与OLTP

OLAP的工作重点是分析和决策,因此对于处理大数据量时需要更长的时间,会占用更多的系统资源,包括更高的存储要求和处理能力。相反,OLTP是指在线事务处理(Online Transaction Processing),是一种计算机处理数据的方式,主要用于处理企业级的常规业务操作,如公司的采购、销售、存储、支付等。OLAP通常使用复杂的查询方式,可以基于不同的维度和度量值进行分析和查询,从而满足特定的分析和需求。相反的,OLTP处理的数据是实时的、明细的、实时性的、可变性数据,主要用于常规业务操作。

2023-11-24 09:45:11 156

转载 B树和B+树的区别

B树和B+树的区别

2022-08-15 21:44:31 2682

转载 MDC:诊断上下文映射

通常我们可能会有大量的任务需要提交提交到线程池执行,但是此时如果不对日志添加唯一标识进行区分的话回到错乱一坨无法进行查看。因此可以对每一天日志添加唯一的标识下文。

2022-08-11 21:26:18 379

转载 MVCC之ReadView

MVCC (Multi-Version Concurrency Control) ,即多版本并发控制,利用记录的版本链和ReadView,来控制并发事务访问相同记录时的行为。ReadView即一致性视图,用来判断版本链中的哪个版本是当前事务可见的。...

2022-08-02 21:37:40 3182

原创 在线库存设计

库存设计

2022-08-01 21:35:08 1208 1

原创 AQS总结

前言本文是对之前AQS系列文章的一个小结,首先看看以下几个问题:1、ReentrantLock和ReentrantReadWriteLock的可重入特性是如何实现的?2、哪个变量控制着锁是否被占用?3、多个线程竞争一个排它锁时,未抢到锁的线程是如何阻塞的?4、读读真的可以一直共享不阻塞吗?正文1、可重入性的实现(针对排它锁)-问题1 可重入性是通过exclusiveOwnerThread和state一起实现的。在AQS的父类AbstractOwnableSynchron..

2021-11-04 11:42:08 252

原创 Redis高可用技术解决方案

一、常见使用方式Redis的几种常见使用方式包括: Redis单副本; Redis多副本(主从); Redis Sentinel(哨兵); Redis Cluster; Redis自研。 二、各种使用方式的优缺点1、Redis单副本Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点: 架构简单,部署方便; 高性价比:缓存使用

2021-11-03 10:23:08 196

原创 linux常用命令总结

1、统计磁盘整体情况,包括磁盘大小,已使用,可用。命令“df”命令"df -lh"使用这个命令会更清楚磁盘使用情况;命令"df -a"是全部的文件系统的使用情况;命令"df -i"显示inode信息;命令"df -k"已字节数显示区块占用情况;查看当前目录df -h,统计每个目录下磁盘的整体情况;查看指定目录,在命令后直接放目录名,比如查看“usr”目录使用情况:df -h /usr/,统计了指定目录一使用情况,及分配的最大空间2、具体查看文件夹的占用情况查看当前目录每个文件

2021-07-12 11:50:45 644

原创 Linux 文件描述符详解

lsof简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对.

2021-07-12 11:35:30 417

原创 Gitlab项目和profile中添加sshKey的坑

GitLab: Deploy keys are not allowed to push code.fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.如果你push的时候遇到这个提示,那么恭喜你,你遇到gitlab最坑逼的圈套了。故事是这样的,有一天你老老实实的用git bash(对,你得用git .

2021-06-29 10:40:12 608

转载 接口设计六大原则

作者:Java架构成长之路链接:https://zhuanlan.zhihu.com/p/110130347来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。六大设计原则六大设计原则主要是指:单一职责原则(Single Responsibility Principle); 开闭原则(Open Closed Principle); 里氏替换原则(Liskov Substitution Principle); 迪米特法则(Law of Demeter),又.

2021-06-01 17:12:50 16215

转载 【MySql:当前读与快照读】

当前读与快照读  MVCC (Multi-Version Concurrency Control) (基于锁的并发控制,Lock-Based Concurrency Control)。MVCC最大的好处,读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加系统的并发性能。  MVCC保存了数据资源在不同时间点上的多个快照。根据事务开始的时间不同,每个事务看到的数据快照版本是不一样的。  InnoDB中的MVCC实现:存储引擎全局维护了一个系统版本号,每开启一个新的

2021-05-19 21:14:12 6855 4

转载 SQL执行顺序(以MySQL为准)

书写顺序:​ select->distinct->from->join->on->where->group by->having->order by->limit​ 必须字段:select、from​ 可选字段:distinct、join、on、where、group by、having、sum、count、max、avg、order by、limit执行顺序​ from->on->join->where->g

2021-05-19 20:48:10 207

原创 InnoDb存储引擎执行流程

缓冲池 buffer pool会把一些磁盘上的数据加载到该内存当中 查询数据的时候不从磁盘查,从该内存里查undo log逻辑日志,可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录 用于数据回滚 实现mvccredo log存储引擎层日志 物理日志(类似于“对哪个数据页中的什么记录,做了个什么修改”) 记录对数据做了什么修改,防止已提交事务的数据丢失。因为数据不是实时刷盘的

2021-05-18 22:09:56 354

原创 Java中反射机制和【Class.forName、实例对象.class(属性)、实例对象getClass()的区别】【符号引用及实例引用】

一、Java的反射机制每个Java程序执行前都必须经过编译、加载、连接、和初始化这几个阶段,后三个阶段如下图:其中i、加载是指将编译后的java类文件(也就是.class文件)中的二进制数据读入内存,并将其放在运行时数据区的方法区内,然后再堆区创建一个Java.lang.Class对象,用来封装类在方法区的数据结构。即加载后最终得到的是Class对象,并且更加值得注意的是:该Java.lang.Class对象是单实例的,无论这个类创建了多少个对象,他的Class对象时唯一的!!!!。而...

2021-05-16 21:00:40 298

转载 JVM运行时数据区域

参考《深入了解Java虚拟机第三版》对JVM内存区域划分做个小结1、程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里[1],字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 由于Java虚拟机的多线程是通过...

2021-05-16 12:18:34 199

原创 java‘锁’事

前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。

2021-05-12 10:15:22 123

原创 Hystrix中资源隔离区别

Hystrix的隔离策略有两种:分别是线程隔离和信号量隔离。THREAD(线程隔离):使用该方式,HystrixCommand将会在单独的线程上执行,并发请求受线程池中线程数量的限制。SEMAPHORE(信号量隔离):使用该方式,HystrixCommand将会在调用线程上执行,开销相对较小,并发请求受信号量的个数的限制。配置:hystrix.command.default.execution.isolation.strategy 隔离策略,默认是Thread, 可选Thread|Semaphor

2021-05-10 15:34:02 427

原创 阻塞队列ArrayBlockingQueue、LinkedBlockingQueue的使用区别

相同:1、LinkedBlockingQueue和ArrayBlockingQueue都实现了BlockingQueue接口;2、LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的队列  内部都是使用ReentrantLock和Condition来保证生产和消费的同步;  当队列为空,消费者线程被阻塞;当队列装满,生产者线程被阻塞;使用Condition的方法来同步和通信:await()和signal()不同:1、由上图可以看出,他们

2021-05-07 14:25:08 474

转载 NIO和BIO异同及实践

NIO和BIO对比NIO(non blocking I/O)非阻塞I/O,jdk1.4引入的新I/O,平时接触的文件的I/O操作是BIO,即阻塞I/OBIO API使用具体流程:A.测试accept()方法的阻塞public void testAccept() throws IOException{ ServerSocket ss = new ServerSocket(); ss.bind(new InetSocketAddress(9999)); Socket sk = s

2021-05-06 23:19:21 203

原创 HTTP状态码

状态码是来告诉客户端,发生了什么事情。状态码为客户端提供了一种理解事务处理结果的便捷方式。状态码位于响应的起始行中比如,在行 HTTP/1.0 200 OK 中,状态码就是200客户端向一个 HTTP 服务器发送请求报文时,会遇到很多意想不到的情况,请求不一定能够成功完成。服务器可能会告诉你无法找到所请求的资源,你没有访问资源的权限,或者资源被移到了其他地方状态码是在每条响应报文的起始行中返回的。会返回一个数字状态和一个可读的状态。数字码便于程序进行差错处理,而原因短语则便于人们理解原因短语

2021-04-29 17:03:00 1680

原创 oracle 使用decode函数实现行转列

核心概念为:decode函数、并且使用行值数据来表达列值的别名----创建测试表create table student_score( name varchar2(20), subject varchar2(20), score number(4,1));-----插入测试数据insert into student_score (name,subject,score)values('张三','语文',78);insert into student_sc...

2021-04-29 15:07:33 1208

原创 Nacos 服务注册与发现原理

概括性来说有6个步骤:0、服务容器负责启动,加载,运行服务提供者。1、服务提供者在启动时,向注册中心注册自己提供的服务。2、服务消费者在启动时,向注册中心订阅自己所需的服务。3、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。4、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。5、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。Nacos 服务注册

2021-04-28 16:58:31 1099

原创 Hystrix断路器部分解析

本人基于《springcloud微服务架构进阶》这本书摘选hystrix个别章节做个小结,有兴趣的可以看看这本书,相信会对你有所帮助1、断路器时序图和状态图2、服务降级时序图3、资源隔离示意图:分为信号量隔离策略:TryableSemaphore和线程隔离策略:HystrixThreadPool4、执行流程示意图5、hystrix的命令模式:commandExecutor根据MethodHolder中ExecutionType执行类型不同,选择同步执行、异步执行还是异

2021-04-28 11:44:41 183

原创 springboot配置多个Filter

自定义几个过滤器类:order是过滤器执行的顺序,越小越早执行@Order(1)@WebFilter(urlPatterns = "/*")public class LogFilter implements Filter { @Override public void destroy() { } @Override public void init(FilterConfig filterConfig) throws ServletException

2021-04-26 15:12:17 973

原创 Redis查找所有key的方法比较

问题:假如Redis里面有1亿个key,其中有100w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?keys指令:keys * 、keys id:* 分别是查询全部的key以及查询前缀为id:的key优点:速度快缺点:会阻塞进程,导致线上服务卡顿,不可用scan指令:SCAN cursor [MATCH pattern] [COUNT count]命令解释:scan 游标 MATCH <返回和给定模式相匹配的元素> count 每次迭代所返回的元素数量SCA

2021-04-23 09:55:51 1228

原创 SpringBoot中常用的starter

spring-boot-starter-web :提供 Spring MVC + 嵌入式的 Tomcat 、web开发一整套mybatis-spring-boot-starter :提供 MyBatis持久层操作数据库spring-boot-starter-test:提供完备的测试功能spring-boot-starter-thymeleaf:提供Thymeleaf模板视图整合spring-boot-starter-actuator:提供生产级监控、健康检查spring-boot-starter.

2021-04-22 11:19:18 726

原创 基于SkyWalking的Logback日志

##依赖引入<dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>6.2.0</version> </dependency>##logback.

2021-04-21 17:00:56 1703

原创 常用git命令

常用git命令备忘录##git配置git config --global user.name "name"git config --global user.email "email"git config -l 查看所有的配置信息,依次是系统级别、用户级别、仓库级别git config --system -l 查看系统配置git config --global -l 查看用户配置git config --local -l 查看仓库配置##ssh秘钥生成ssh-keygen -t rsa

2021-04-21 14:22:27 212

原创 后序遍历还原搜索二叉树

public static Node process3(int[] posArr, int L, int R) { if (L > R) { return null; } // L<=R // [L...R] [R]为头结点 Node head = new Node(posArr[R]); if (L == R) { return head; } int M = -1; // L<R.

2020-10-21 20:23:07 318

转载 数据库垂直拆分

一、缘起当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表:user(uid bigint,name varchar(16),pass varchar(16),age int,sex tinyint,flag tinyint,sign varchar(64),intro varchar(256)…);水平切分是指,以某个字段为依据(例如uid),按照一定规则(例如取模),将一个库(表)上的数据拆分到多个库(表)

2020-09-14 13:36:46 520

空空如也

空空如也

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

TA关注的人

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