03 2022 档案
摘要:一:hbase的存储形式 hbase的内部使用KeyValue的形式存在,其key是有rowkey:family:column:logTime,value是其存储的内容。 其在region的是大多以升序的形式排列,唯一的是logtime是以降序的形式进行排列。 所以,按照越靠近左边的信息越容易被检索
阅读全文
摘要:https://www.cnblogs.com/guoyaohua/p/8600214.html
阅读全文
摘要:如何保证消息不丢失 就我们市面上常见的消息队列而言,只要配置得当,我们的消息就不会丢。 先来看看这个图, 可以看到一共有三个阶段,分别是生产消息、存储消息和消费消息。我们从这三个阶段分别入手来看看如何确保消息不会丢失。 生产消息 生产者发送消息至Broker,需要处理Broker的响应,不论是同步还
阅读全文
摘要:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 第一范式1NF,原子性 第二范式2NF,消除部分依赖 第三范式3NF,消除传递依赖 1、范式 (1)第一范
阅读全文
摘要:在学习java多线程的过程中,我们能一定见过sleep和wait这两个方法,这两个方法都是多线程中经常使用的方法,并且它们都可以让当前线程停下来。可是你知道吗?这两个方法其实有很大的差别。 01多线程的状态 要想弄懂这两个方法的差别,我们可以先简单地看一下多线程的运行状态 1. New:初始状态,线
阅读全文
摘要:通常有点年纪的程序员或许都听说这样一个说法 (其中 N 代表 CPU 的个数) CPU 密集型应用,线程池大小设置为 N + 1 IO 密集型应用,线程池大小设置为 2N 这个说法到底是不是正确的呢? 其实这是极不正确的。那为什么呢? 首先我们从反面来看,假设这个说法是成立的,那我们在一台服务器上部
阅读全文
摘要:当客户端发送给mysql 服务器一条查询语句后,经过sql的优化器,会产生一个执行计划。执行计划使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MYSQL 是如何处理你的 sql 语句的。分析你的查询语句或是表结构的性能瓶颈。 语法: Explain + sql 执行计划
阅读全文
摘要:springboot是通过main方法下的SpringApplication.run方法启动的,启动的时候他会调用refshContext方法,先刷新容器,然后根据解析注解或者解析配置文件的形式祖册bean,而它是通过启动类的SpringBootApplication注解进行开始解析的,他会根据En
阅读全文
摘要:https://blog.csdn.net/u014352080/article/details/102716468 https://segmentfault.com/a/1190000014525138 Spring Boot、Spring MVC 和 Spring 有什么区别? 分别描述各自的特
阅读全文
摘要:问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。 问题前提:老系统,当时设计系统的人大概是大学没毕业,表设计和sql语句写的不仅仅是垃圾,简直无法
阅读全文
摘要:类的加载过程 加载过程介绍 如果 JVM 想要执行这个 .class 文件,我们需要将其装进一个类加载器 中,它就像一个搬运工一样,会把所有的 .class 文件全部搬进JVM里面来。 重点知识: Java文件经过编译后变成 .class 字节码文件 字节码文件通过类加载器被搬运到 JVM 虚拟机中
阅读全文
摘要:一、介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。 2.为什么要有索引呢? 索引在MySQL
阅读全文
摘要:1、起初 引入依赖 1 2 3 4 5 <!-- spring boot redis缓存引入 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis
阅读全文
摘要:问题描述: 用户支付完成会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库。由库存服务去维护库存数据库的信息。下图是系统结构图: 如何实现两个分布式服务(订单服务、库存服务)共同完成一件事即订单支付成功自动减库存,这里的关键是如何保证两个分布式服务的事务的一致性。尝试解决上边的需求
阅读全文
摘要:1.为什么要使用分布式锁? 我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美12的运行,毫无Bug! 注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个
阅读全文
摘要:这处图片引自老罗的博客。为了避免不必要的麻烦,首先声明我个人比较尊敬老罗的。至于为什么放这张图,自然是为本篇博文服务,接下来我自会说明。好了,可以开始今天的博文了。 Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。 我个
阅读全文
摘要:速度更快 代码更少(增加了新的语法 Lambda 表达式) 强大的 Stream API 便于并行 最大化减少空指针异常 Optional 其中最为核心的为 Lambda 表达式与Stream API 1 Lambda表达式 为什么使用 Lambda 表达式 Lambda 是一个匿名函数,我们可以把
阅读全文
摘要:ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的。
阅读全文
摘要:Redis 和 MySQL 数据不一致性# 参考地址 具体如何去解决还得结合业务去综合考虑。 下面几个方式可能比较通用 1. 双删法# 写流程 先删除缓存 写更新数据库 再次删除缓存 => 避免在第二步的时候有读请求访问数据库,然后把旧的值写入到缓存中 读流程 先读缓存 缓存没有就读数据库 更新缓存
阅读全文
摘要:最近在做性能优化的系列课程,其中MySQL数据优化部分用到了主从复制,在这里和大家分享下实现原理以及配置步骤。 概念 MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新
阅读全文
摘要:前言: 原理与思想 这里选用GTID主从复制模式Mysql主从复制模式,是为了更加确保主从复制的正确性、健康性与易配性。这里做的是两服务器A,B各有Mysql实例3310,两个实例间互为主从 主从复制模式采用GTID主从复制模式,在服务器A,B上配置keepalived负载均衡,通过VIP连接数据库
阅读全文
摘要:主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply 先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是thread.php?id=1 表示我要访问的是帖子id是1 的帖子~ 再来说说外键,当我们删除某个帖子的时
阅读全文
摘要:一、七大核心参数 1.corePoolSize 核心线程数 2.maximumPoolSize 最大线程池参数 3.keepAliveTime 任务结束后,线程存活此处指定时间后才会被释放 4.TimeUnit 上一个参数的单位,常用s,ms 5.BlockingQueue 队列,当核心线程用完时,
阅读全文
摘要:导图设计: 1.开闭原则 (Open Close Principle) - 对扩展开放,对更改关闭 -保证以前代码的准确性,使开发者更专注于新扩展的代码上 2.单一职责原则 (Single Responsibility Principle) - 一个类只负责一个功能领域的职责 -降低类的复杂度,当修
阅读全文
摘要:一,关于事务和一致性的理解 事务的产生,其实是为了当应用程序访问数据库的时候,事务能够简化我们的编程模型,不需要我们去考虑各种各样的潜在错误和并发问题.可以想一下当我们使用事务时,要么提交,要么回滚,我们不会去考虑网络异常了,服务器宕机了,同时更改一个数据怎么办对吧?因此事务本质上是为了应用层服务的
阅读全文
摘要:前言 最近在面试,有被问到,MySQL的InnoDB引擎是如何实现事务的,又或者说是如何实现ACID这几个特性的,当时没有答好,所以自己总结出来,记录一下。 事务的四大特性ACID 事务的四大特性ACID分别是,A-原子性(Atomicity),C-一致性(Consistency),I-隔离性(Is
阅读全文
摘要:1.简介 、 https://ifeve.com/java-8-features-tutorial/ 毫无疑问,Java 8是自Java 5(2004年)发布以来Java语言最大的一次版本升级,Java 8带来了很多的新特性,比如编译器、类库、开发工具和JVM(Java虚拟机)。在这篇教程中我们将会
阅读全文
摘要:主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply 先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是thread.php?id=1 表示我要访问的是帖子id是1 的帖子~ 再来说说外键,当我们删除某个帖子的时
阅读全文
摘要:pring事务管理可以分为两种:编程式以及声明式。其中编程式事务就是使用编写代码的方式,进行事务的控制。而声明式事务一般通过切面编程(AOP)的方式,注入到要操作的逻辑的前后,将业务逻辑与事务处理逻辑解耦。由于使用声明式事务可以保证业务代码逻辑不会受到事务逻辑的污染, 所以在实际的工程中使用声明式事
阅读全文
摘要:Spring事务管理我相信大家都用得很多,但可能仅仅局限于一个@Transactional注解或者在XML中配置事务相关的东西。不管怎么说,日常可能足够我们去用了。但作为程序员,无论是为了面试还是说更好把控自己写的代码,还是应该得多多了解一下Spring事务的一些细节。 这里我抛出几个问题,看大家能
阅读全文
摘要:一、RabbitMQ出现消息丢失的情况及其解决办法 如图所示,RabbitMQ丢失消息的情况可以发送在任何一个节点。 1.1 生产者没有成功把消息发送到MQ a、丢失的原因:因为网络传输的不稳定性,当生产者在向MQ发送消息的过程中,MQ没有成功接收到消息,但是生产者却以为MQ成功接收到了消息,不会再
阅读全文
摘要:一: 消费端保证消息不丢失: 消费端从broker取到消息以后, 先处理业务逻辑, 然后再手动提交, 这样就可以避免消费端消息丢失。 二: 生产端消息不丢失: 首先是设置每个消息分区的副本, 一本是几个broker就配置几个分区, 然后设置如下, 保证生产这生产的消息发送到broker时,不但lea
阅读全文
摘要:1.1 前言 在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。更多关于MySQL查询相关参照:http://www.cnblogs.com/clsn/p/8038964.html#_label
阅读全文
摘要:了Spring Boot与MyBatis的结合开发,并成功操作了数据库。众所周知,保证数据库一致性的操作,就是事务的控制。而Spring事务管理可以分为两种:编程式以及声明式。其中编程式事务就是使用编写代码的方式,进行事务的控制。而声明式事务一般通过切面编程(AOP)的方式,注入到要操作的逻辑的前后
阅读全文
摘要:聊聊spring事务失效的12种场景,太坑了 前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了。 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到spring事务。 确实
阅读全文