自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 RocketMQ 底层原理

RocketMQ底层原理

2025-03-27 17:56:12 694

原创 RocketMQ 使用手册

下单后向队列中写入一条延时消息,消费者拿到消息后先判断是否已支付,已支付就忽略,没支付就取消。在一个消费者组内,多个消费者协同消费同一个topic中的消息,每个消费者负责一部分消息。为了提高发送消息的性能,可以将多条消息打包成一份批量发送,操作的位置在发送端。进行消息生产的时候,设置一些标签或属性,在消费时使用这些标签和属性实现过滤。消息的生产、消费在仅在一个消息队列内有序,可以有多个消息队列。在一个消费者群组内,每一条消息都被每一个消费者消费一遍。消息的生产、消费全局有序,只有一个消息队列。

2025-03-26 18:17:44 966

原创 Java中的锁

AQS就是AbstractQueuedSynchronizer类,是JUC包下的一个基类。JUC包下的很多工具都是基于AQS实现了部分功能。比如ReentrantLock、ThreadPoolExecutor、BlockingQueue、CountDownLatch、Semaphore、CyClicBarrier等。AQS提供了一个由volatile修饰,并且使用CAS方式修改的int类型state变量。AQS中维护了一个双向链表,由head、tail,每个节点都是Node对象。AQS的核心属性。

2025-03-25 20:35:47 879

原创 并发编程的三大特性

一个操作是不可分割、不可中断的,一个线程执行时,另一个线程不会影响到它。比较和替换,是一条CPU的并发原语。数据可见性问题出现在CPU级别。由于CPU执行速度非常快,所以对于CPU而言,每次操作数据都从内存中取出数据太慢了。所以CPU为了提高执行效率,在CPU的内部内存中设置了三级缓存,每次写数据都写到CPU内部的缓存中。但是随着CPU的内核数量增多,数据在CPU内部互相不可见,就导致临界资源操作混乱。CPU 的三级缓存// 无法读取flag的最新的值,进入无限循环。

2024-12-19 09:34:46 842

原创 分布式-事务

X/Open DTP定义的:事务协调者与数据库之间的接口规范(即接口函数),事务协调者用它通知数据库事务的开始、结束、提交、回滚等。XA接口函数由数据库厂商提供。类似于JDBC,大家都遵守这个规则。在2PC的执行逻辑中,如果服务A在执行的时候异常了,还需要事务协调者主持回滚,整体做了一次无用功,造成性能的浪费。3PC在此基础上做了一个优化,只有服务判断自己可以执行业务时才开始做业务逻辑,减少了出错的步骤。can commit:检查是否可执行,只有所有服务都返回yes才能开始做业务逻辑。

2024-11-12 07:50:46 840

原创 分布式-锁

在多线程环境下,针对一些共享资源往往会出现线程安全问题,需要加锁校准程序执行过程。

2024-11-11 18:53:56 438

原创 三、Kafka集群

高并发、高可用、动态扩展。主备数据架构、双活节点、灾备数据中心。如果是服务的地理范围过大也可以使不同的集群节点服务不同的区域,降低网络延迟。

2024-11-03 17:37:31 1524 2

原创 二、kafka生产与消费全流程

在上面的demo中,由于消息的key和value都是String类型的,就可以使用kafka.client提供的String序列化器,如果想要发送其他自定义类型的对象,可以手动编写一个序列化器和反序列化器,实现Serializer接口,将对象和byte数组互相转换即可。提交最后一次消费消息的偏移量,下一次消费就从上次提交的偏移量开始,如果一个新的消费者群组消费一个主题的消息,可以根据不同的配置来指定起始的偏移量。群组之间的消费是互不干扰的,比如群组A的消费者和群组B的消费者可以同时消费同一个分区的消息。

2024-09-26 18:00:52 1795 1

原创 一、Kafka入门

双十一秒杀、春节12306场景有流量洪峰,但是后端服务器短时间内无法处理大量请求,使用消息中间件可以缓存涌入进来的大量请求,后端服务慢慢消费这些请求,尽最大努力处理请求。在群组消费者群组场景下,每个分区的消息只能由一个消费者消费,但是一个消费者可以消费多个分区的消息。由于消费消息相对于生产消息很慢,可以增加分区去提高消费的并发度,从而平衡生产和消费的速度。进入kafka的bin目录,编写两个启动脚本,一个启动zookeeper,一个启动kafka。:比较依赖网络,网络的吞吐量对kafka集群的影响很大。

2024-09-24 16:51:03 961

原创 分布式框架 - ZooKeeper

是一个分布式程序的协调服务,是Hadoop和Hbase的重要组件。提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2024-09-20 10:18:40 1448

原创 九、Redis 的实际使用与Redis的设计

在线上系统中,一定不会单纯的只部署一个Redis集群,而是使用Redis结合其他的多级缓存应用进行架构。使用多级缓存架构的优点就是可以使不同类型的数据分布在不同的应用中,比如redis的热点key可以存储到nginx本地缓存、服务集群的本地缓存,进而分散单应用的服务压力。

2024-09-13 18:59:26 1014

原创 八、Redis缓存运用问题

如果缓存里的数据和数据库里的数据不一致,那么应用程序从缓存读取的数据是一个错误的数据。

2024-09-09 16:18:41 648

原创 设计模式-1 概念 & 创建型模式

用工厂类创建service类的对象。

2024-08-23 07:57:36 646

原创 JavaSE 集合

调用空构造器时初始化 Object[] elementData 数组,长度为10;初始化 size 属性,值为0;当elementData 数组中的10个位置都有元素后,添加第11个元素时数组扩容;扩容长度为原数组的1.5倍;扩容逻辑是创建一个长度为 15 的数组,将旧数组的数据拷贝到新数组中。

2024-08-20 21:02:43 734

原创 JavaSE 反射

在java字节码文件(.class文件)中,存放了一个Class类的实例,通过这个实例,可以拿到字节码文件里面的信息:包括构造器、字段、方法等。

2024-08-20 09:29:33 282

原创 JavaSE 线程

如果未来的另一个线程调用了相同对象的notify()、notifyAll()方法,等待池中的线程就会被唤醒,可以重新进入锁池争抢该对象的锁;①、wait()和notify()方法,必须放在同步代码块/同步方法中才能生效(因为在同步的基础上进行线程的通信才是有效的)②、sleep()和wait()方法的区别是:sleep()不会放弃对锁的占有权,wait()会放弃对锁的占有权;-- 伴随线程:皇上 --> 驾崩 --> 妃子陪葬;-- 底层逻辑:相当于调度这个线程的时候,给他的时间是整块的,不是分片的;

2024-08-20 09:20:17 563

原创 JavaSE I/O流

Java 基础流的用法

2024-08-20 08:47:19 204

原创 七、Redis的高并发 & 高可用(集群)

由于Redis集群的性能消耗不低,难以维护,使用限制太多。所以一般情况下在生产环境单台Redis或者主从 + 哨兵可以应对数据缓存,就不会搭建Redis集群。原理都讲清楚了,接下来我们搭建一个Redis集群玩一玩吧。

2024-07-27 21:02:40 1487

原创 六、Redis的高并发 & 高可用(主从+哨兵)

Redis高并发 & 高可用

2024-07-26 10:18:09 879

原创 三、Redis高级特性和应用

RTT:往返时间,数据花在网络上的时间;将所有的指令组装成pipeline,减少RTT;节约网络开销做批量处理;都执行或者都不执行Redis的事务是弱事务不推荐使用Redis做事务只有语法错误的时候才会做回滚,非法操作不会做回滚本质是一个脚本语言,类似存储过程。

2024-07-22 17:50:06 1088

原创 二、Redis高级数据类型

Redis高级数据类型

2024-07-22 17:15:44 274

原创 一、Redis基础

Redis基础知识

2024-07-22 16:38:39 552

原创 五、Redis底层原理 - 分布式锁

redis分布式锁

2024-07-22 15:53:19 998

原创 八、MySQL系统库

学习笔记

2024-04-12 17:39:15 665

原创 七、MySQL体系架构

学习笔记

2024-04-12 17:09:53 1951

原创 六、MySQL8新特性

学习笔记

2024-04-12 15:55:59 913

原创 四、Redis底层原理 - 持久化

Redis持久化机制

2024-04-09 11:31:08 495

原创 五、MySQL中的锁

学习笔记

2024-04-09 11:25:57 467

原创 四、MySQL 事务和事务隔离级别

学习笔记

2024-04-09 11:16:02 877

原创 三、MySQL调优

学习笔记

2024-04-09 10:53:49 1710

原创 二、MySQL中的索引

学习笔记

2024-04-09 10:44:11 934

原创 一、MySQL 数据库基础知识

学习笔记

2024-04-09 10:35:12 1843

原创 Java SE 反射

在java字节码文件(.class文件)中,存放了一个Class类的实例,通过这个实例,可以拿到字节码文件里面的信息:包括构造器、字段、方法等;

2024-04-09 10:29:58 413

原创 Java SE 线程

System.out.println("生产者生产了" + this.getBrand() + "-----" + this.getName());System.out.println("生产者生产了" + this.getBrand() + "-----" + this.getName());-- 如果未来的另一个线程调用了相同对象的notify()、notifyAll()方法,等待池中的线程就会被唤醒,可以重新进入锁池争抢该对象的锁;注意是沿着wait方法之后;

2024-04-09 10:02:19 927

原创 Java SE I/O流

字节流字符流输入流Reader输出流Writer。

2024-04-09 09:47:18 123

原创 NoSuchMethodError: ‘byte[] org.apache.poi.util.IOUtils.toByteArray(java.io.InputStream, int, int)‘

poi导出excel表提示方法不存在?new XSSFWorkBook报错?

2023-11-24 10:12:30 2132 1

04940B40-C8CB-4242-86A7-0F52AE3FEB49.java

04940B40-C8CB-4242-86A7-0F52AE3FEB49.java

2022-02-11

空空如也

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

TA关注的人

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