自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java-消息队列(中间件)

指已经成功消费的消息,由于业务上的需求需要进行重新消费,在RocketMQ中,broker在向Comsumer投递成功消息后,消息仍需保留,可以按照时间维度回退消费进度如何保证高性能读写?零拷贝技术mmap,是一种内存映射文件的方法,简单来说就是内核缓冲区和应用缓冲区共享,宠儿减少从读缓冲区到用户缓冲区的一个CPU拷贝sendfile也是减少一次CPU拷贝,同时减少两次上下文切换。

2025-09-03 14:17:41 854

原创 java-并发-线程池

线程池就是管理一系列线程的资源池。当有任务需要处理时,直接从线程池中获取线程进行处理,处理完成后不会销毁,而是等待下一个任务。

2025-08-11 20:59:54 766

原创 java-Raft协议

是什么?有啥用(应用)?集群架构通常会面临维护多个副本进行容若,提高系统可用性的要求。要实现这个目标就必须解决最核心的问题那就是一致性。而Raft就是为了实现这一目标指定的协议,他将一致性协议的核心内容拆分成几个关键阶段,包括领导人选举,日志复制和安全性保证。

2025-08-06 22:33:25 202

原创 java-Nginx

如果没有过期,则将信息直接返回回去,如果过期了,则将请求发送到服务端,此时request的头信息中带着ETag和Last-Modified信息,responose头信息中也带着这两个参数,如果一致,则表示要访问的资源没有发生改变,直接返回304,如果不一致,则表明资源改变,会请求服务端,返回200。4.fair(第三方插件):需要安装upstream_fire模块,相对于权重,iphash来说,fire的负载均衡算法更加智能,可以根据页面的大小和加载时长进行负载均衡,响应时间短的优先分配。

2025-08-06 16:17:05 494

原创 java-IO网络模型

用户线程发起IO请求(传递的信息包含描述符,缓冲区指针,和read相同的参数及文件的偏移),内核立马返回表示接收到请求了,不会对用户线程产生任何阻塞,后面的事全部由内核独自完成,内核在数据准备就绪后,将数据直接拷贝至用户线程,然后再给用户线程发送一个信号,告知它IO操作已经完成,可以直接使用数据了。用户进程不断的询问内核数据是否准备就绪,如果没有内核返回error,如果准备就绪就会立马把数据拷贝之用户进程,用户进程不会放弃CPU的占用,是一种极其浪费资源的操作,很少使用。典型就是BIO,socket。

2025-07-30 15:53:00 338

原创 java基础-常用知识点

什么时volitile关键字?修饰变量以保证变量的可见性(不同线程)和有序性(禁止指令重排序)。那么什么是可见性和有序性呢?这就不得不聊一下JMM(java内存模型)了。JMM是什么呢?JMM也就是java内存模型,是为了解决各自硬件和操作系统的内存访问差异,让java程序在各种平台上都能达到一致得到内存访问效果。简单来说就是为了解决cpu快内存访问慢的问题。JMM规定所有的变量都是存在主存中的,类似于普通内存,每个线程又有自己的工作内存。

2025-07-23 10:42:38 526

原创 java基础-jvm

G1收集器:垃圾优先的收集器,JDK7正式使用,JDK9默认使用,出现是为了替代CMS收集器,G1最大的变化就是分代概念,它只是逻辑分代,物理结构上已经不再分代,他将java堆划分成多个大小不等的Region,每个Region扮演根据需要扮演Eden区,Survivor区,或者老年代,G1对扮演不同分区的Region使用不同的回收算法进行回收?引用计数法:在对象中添加一个引用计数器,每引用一次计数器加一,每取消一次引用计数器就减一,当计数器为0时,说明对象不再被引用,此时就可以将对象回收了。

2025-07-15 00:27:35 718

原创 java基础-数据结构

每个元素存储再一个单独的小内存中,知道后一个元素的地址就是单项链表,知道前后元素的地址就是双向链表。3.再hash:当发生hash冲突时使用一个新的hash函数计算出新的哈希值存放在新的桶里。vector:是基于数组array的一个list,时同步线程(syn)都是基于数组的,但是ArrayList是线程不安全的,所以性能会好一些。arraylist是基于数组的linkedlist是基于链表的。查询慢,插入和修改速度快,存储空间不连续,不浪费资源。linkedlist:基于链表,增删快,查询慢。

2025-05-28 22:43:07 293

原创 java基础-锁

syn是java语言关键字,用于实现同步控制,基于JVM实现,底层实现较为复杂,设计互斥锁(mutex),AQS是java并发包中的一个抽象类(队列的管理和唤醒实现)用于构建锁和其他同步组件的基础框架,syn较为简单且性能低,AQS性能好且可定制。如果被请求的资源是空闲状态那么,请求线程获取资源并将资源设置为锁状态,若被请求资源处于锁状态,那么就需要一套线程阻塞等待和唤醒的机制,这个机制是AQS通过CLH队列(三个发明队列人的首字母)来实现的,即暂时获取不到资源的线程加入队列中。

2025-05-28 00:58:06 722

空空如也

空空如也

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

TA关注的人

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