自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM学习二

JVM垃圾收集器serial垃圾收集器是什么? 收集算法是内存收到的⽅法论,垃圾回收器是内存回收的具体实现。 Serial是⼀个单线程的垃圾收集器 serial垃圾收集器的特点 “Stop The World”,它进⾏垃圾收集时,必须暂停其他所有的⼯作线程,直到它收集结束。 在⽤户不可⻅的情况下把⽤户正常⼯作的线程全部停掉 使⽤场景:多⽤于桌⾯应⽤,Client端的垃圾回收器 桌⾯应⽤内存⼩,进⾏垃圾回收的时间⽐较短,只要不频繁发⽣停顿就可以接受

2022-08-05 09:32:18 128 1

原创 JVM学习一

jvm内存模型方法区和堆是线程共享的,其他是线程私有的程序计算器是什么? 程序计数器是⼀块较⼩的内存空间,它可以看作是当前线程所执⾏的字节码的⾏号指示器 线程是⼀个独⽴的执⾏单元,是由CPU控制执⾏的 字节码解释器⼯作时就是通过改变这个计数器的值来选取下⼀条需要执⾏的字节码指令,分⽀、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成 为什么? 为了线程切换后能恢复到正确的执⾏位置,每条线程都需要有⼀个独⽴的程序计数器,各条 线程之间计数器

2022-07-25 09:28:26 108

原创 mysql分库分表-shardingJDBC学习二(分片策略)

分片策略<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <spring.boot.version>2.5.5</spring.boot.version> <mybatisplu

2022-07-19 15:48:51 292

原创 mysql分库分表-shardingJDBC学习一(概念和问题)

为什么分库分表解决数据库本身瓶颈连接数,mysql默认的连接数是100,可以修改,最大为16384数据库分表可以解决单表海量数据的查询性能问题数据库分库可以解决单台数据库的并发访问压力问题解决系统本身IO,CPU瓶颈磁盘读写IO瓶颈,热点数据太多,尽管使用的数据库本身缓存,但是依旧有大量IO,导致sql执行速度慢网络IO瓶颈,请求数据多,数据传输大,网络带宽不够,链路响应时间变长CPU瓶颈,尤其是在基础数据量大单机复杂sql计算,sql语句执行占用CPU使用率高,也有扫描行数

2022-07-19 15:47:46 661

原创 Mybatis源码学习六(MetaObject)

MetaObject基本架构MetaObject获取属性值流程源码分析MetaObject获取属性值public class MetaObjectTest { @Test public void test1(){ Object blog = new Blog(); Configuration configuration = new Configuration(); MetaObject metaObjec...

2022-05-05 14:48:21 1022

原创 Mybatis源码学习五(嵌套查询及循环依赖问题的解决)

ResultMap结果集映射association和collection代码示例association作用于1对1collection作用于1对多<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><ma.

2022-04-25 13:03:52 1964 1

原创 Mybatis源码学习四(StatementHandler及参数处理)

StatementHandler定义StatementHandler架构图StatementHandler流程图

2022-04-12 09:33:27 342

原创 Mybatis源码学习三(二级缓存)

数据查询的流程二级缓存架构图

2022-04-06 13:51:18 304

原创 Mybatis源码学习二(一级缓存)

一级缓存流程一级缓存有效的因素一级缓存有效测试public class User { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName().

2022-03-28 09:47:49 735

原创 Mybatis源码学习一(Executor)

Executor架构Caching Executor的作用就是实现二级缓存,使用的是装饰者模式。装饰者模式:在不改变原有类继承结构的情况下,新建一个对象来扩展原有功能。Executor具体实现maven依赖<dependency> <groupId> org.mybatis </groupId> <artifactId> mybatis </artifactId> <version&...

2022-03-19 15:26:29 743

原创 记录一次高并发情况下批量更新数据的问题

需求简介:1.用户领用优惠券接口开发2.优惠券包领取:一个券包里有多种优惠券,领取一次券包,即券包中的所有券都领取一次。需求2解决思路:1.通过循坏调用1接口,来实现接口2。效率会根据券包中券数量成倍增加。2.将数据组合,批量操作。数据库层面批量新增,批量更新。问题:1.思路1的方式出现死锁情况原因:更新的数据量比较多,耗时比较久,并且更新的数据没有顺序,导致在不同事务中出现互相锁定循环等待情况。比如:事务A:更新数据id为(1,3,9,4),事务B:更新数据id为(8,

2022-03-11 13:42:25 1421

原创 Mysql学习-锁

Mysql锁是什么?锁有哪些类别?锁定义同⼀时间同⼀资源只能被⼀个线程访问 update test set a=a-1 where id=100 and a> 0;在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争⽤以外,数据也是⼀种供许多⽤户共享的资源。如何保证数据并发访问的⼀致性、有效性是所有数据库必须解决的⼀个问题,锁冲突也是影响数据库并发访问性能的⼀个重要因素。锁的分类从对数据操作的类型分法(读或写) 读锁(共享锁):针

2022-03-07 13:46:50 187

原创 Mysql学习-事务

mysql事务概念及特性讲解3个W原则What:事务(Transaction)是并发控制的基本单位。所谓的事务,它是⼀个操作序列,这些操作要么都执⾏,要么都不执⾏,它是⼀个不可分割的⼯作单位。 Why :事务是数据库维护数据⼀致性的单位,在每个事务结束时,都能保持数据⼀致性,如积分总表和积分详情表要么⼀起更新、新增成功要么⼀起失败 How :start transaction,step 1,step2,commit/rollback...

2022-03-03 17:22:59 388

原创 Mysql学习-索引

索引是什么?索引的概念:索引是⼀种特殊的⽂件(InnoDB数据表上的索引是表空间的⼀个组成部分),它们包含着对数据表⾥所有记录的引⽤指针。更通俗的说,数据库索引好⽐是⼀本书前⾯的⽬录,能加快数据库的查询速度索引的作用:索引的⽬的在于提⾼查询效率,使原始的随机全表扫描变成快速顺序锁定数据索引高性能的保证:把查询过程中的随机事件变成顺序事件数据保存在磁盘上,⽽为了提⾼性能,每次⼜可以把部分数据读⼊内存来计算,访问磁盘的...

2022-02-22 09:38:48 369

原创 RabbitMQ学习二(消息的可靠性传递与延迟队列)

消息的可靠性传递+消费⽣产者-->交换机->队列->消费者确保消息在这几个过程中正常传递生产者到交换机:通过confirmCallback交换机到队列:通过returnCallback建议:开启了消息确认机制,保证了消息的准确送达,但是由于频繁的确认交互,整体效率变低,因此实际生产者并不建议开启用消息确认机制开发实战springboot依赖版本<dependency> <group...

2022-02-16 11:14:47 518

原创 RabbitMQ学习一(快速认知和初步使用)

什么是MQ消息中间件及使用场景全称MessageQueue,主要是⽤于程序和程序直接通信,异步+解耦+削峰异步:用户注册-》发送邮件(注册活动)解耦:订单系统-》物流系统削峰:秒杀,日志处理JMS与AMQP什么是JMS: Java消息服务(Java Message Service),Java平 台中关于⾯向消息中间件的接⼝ JMS是⼀种与⼚商⽆关的API,⽤来访问消息收发系统 消息,它类似于JDBC(JavaDatabaseConnectivity)。 这⾥,JDBC 是..

2022-02-14 10:19:55 880

原创 Kafka快速学习三(进一步了解及实战开发)

消息队列的常见问题如何保证消息队列的高可用? 如何保证消息不被重复消费? 如何保证消息不丢失? 如何保证消息的消费顺序?kafka怎么解决这些问题1.kafka高可用kafka可以搭建集群,生成者发送消息到topic,topic内的partition分为learder和多个follower,分别在不同的broker节点,leader所在的broker节点挂了,follower会自动升为leader与producer和consumer交互。数据完全一致。2.避免消息重复消费...

2022-01-28 16:30:56 2229

原创 Kafka快速学习二(生产者和消费者开发)

producer发送消息的分区策略1.默认策略 DefaultPartitioner发送消息时指定分区,优先级最高发送消息时指定key,会根据key值hash取模发送消息时没有指定分区和key。会随机发送到任意分区2.自定义分区策略,需实现Partitioner接口的partition方法producer参数配置bootstrap-servers:broker地址,ip:port# 消息重发的次数retries: 1# 提...

2022-01-28 16:30:24 367

原创 kafka学习一(快速认知和初步使用)

kafka简介kafka是一个分布式流处理平台,是三大MQ中间件之一。是一种高吞吐量的分布式发布订阅消息系统。快速认知概念Broker: kafka的服务端程序,可以认为一个mq节点就是一个broker。Topic: 每条发布到mq的消息都有一个类别,称为topic,主题的意思。Producer: 生产者,创建消息发送给mq的topicConsumer: 消费者,消费队列中的消息Partition: 是Topic的实际存储空间,一个Topic有一个或多个Partition。Par

2022-01-28 16:29:39 1805

空空如也

空空如也

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

TA关注的人

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