![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础篇
文章平均质量分 77
java基础篇包括框架介绍,框架搭建,项目运行,项目部署等
拽着尾巴的鱼儿
The harder you work, the luckier you are
展开
-
面试篇-微服务-1-Spring-cloud+服务的主从与发现+服务雪崩+服务降级+服务熔断+服务限流+CAB和Base+分布式事务
你们项目中有使用过Spring-cloud 框架进行微服务的治理吗,你都用过Spring-Cloud 的哪些组件;你知道服务雪崩,服务降级,服务熔断吗;你们的服务限流措施怎么做的;你了解过CAB和BASE理论吗。本文重点对面试的问题进行介绍,祝愿每位程序员都能顺利上岸!!!本文对微服务架构下,常用的组件面试题进行总结。原创 2024-07-12 14:11:58 · 968 阅读 · 0 评论 -
面试篇-Java-5+设计模式
你在项目开发中都用到过什么设计模式,你是在哪些场景下使用的。本文重点对面试的问题进行介绍,祝愿每位程序员都能顺利上岸!!!责任链模式:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式的角色抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。原创 2024-07-12 14:09:42 · 814 阅读 · 0 评论 -
面试篇-Java-4+jvm垃圾回收+jvm 调优
你知道什么对象会被称只为垃圾对象,垃圾对象又是怎么进行回收的。本文重点对面试的问题进行介绍,祝愿每位程序员都能顺利上岸!!!本文档对JVM 的垃圾对象确定,以及垃圾回收算法,垃圾回收器,jvm 的调优 面试题进行总结。原创 2024-07-12 14:09:28 · 782 阅读 · 0 评论 -
面试篇-Java-3+类加载+JVM 内存划分
你知道类的加载过程吗,你了解过jvm 吗。本文重点对面试的问题进行介绍,祝愿每位程序员都能顺利上岸!!!本文对jvm 类加载,以及jvm 内存结构常见面试题进行汇总。原创 2024-07-12 14:09:06 · 859 阅读 · 0 评论 -
面试篇-Java-2+线程池+ThreadLocal
你们项目中使用过线程池吗,它的工作过程是怎样的;你了解过ThreadLocal吗,你知道它的底层原理吗。本文重点对面试的问题进行介绍,祝愿每位程序员都能顺利上岸!!!项目中我们通过 ThreadPoolExecutor 来定义一个线程池,进行任务的提交;固定线程数的线程池单线程化的线程池,它只会用唯一的工作线程来执行任 务,保证所有任务按照指定顺序(FIFO)执行.按需分配的线程池以一定的频率进行任务调度的线程池。原创 2024-07-12 14:08:33 · 703 阅读 · 0 评论 -
面试篇-Java-1+锁+AQS+死锁
你们在项目中高并发时你都用过哪些锁,它的原理是什么;你知道类加载的过程,双亲委派机制吗;你们有用到过线程池吗,它的工作过程是怎样的。本文重点对面试的问题进行介绍,祝愿每位程序员都能顺利上岸!!!全称是 AbstractQueuedSynchronizer,即抽象队列同步器。它是构建锁或者其他同步组件的基础框架AQS与Synchronized的区别本文对Java 中进程内经常使用的锁,以及原理面试题进行汇总。原创 2024-07-12 14:08:14 · 657 阅读 · 0 评论 -
面试篇-Mysql-1+慢sql+索引
你们项目都使用过哪些关系型数据库,Mysql 用过吗,针对线上慢查询你们是怎么排查的,索引是什么,你们是怎么使用索引进行优化的。本文重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!本位对线上慢sql 的排查及优化,以及索引的一些面试问题进行总结。原创 2024-07-12 14:05:53 · 925 阅读 · 0 评论 -
面试篇-Redis-3+分布式锁+集群部署
你们项目中使用过Redis 作为分布式锁吗,你们是怎么实现的,锁过期怎么办,redis 脑裂怎么办,Redis 真能保证一致性吗,本文重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!。本文对Redis 的主从,哨兵,分片三种集群部署进行介绍,并对Redis 分布式锁的使用问题进行概括。原创 2024-07-04 18:43:16 · 834 阅读 · 0 评论 -
面试篇-Redis-2+持久化+过期key删除+内存淘汰
本文对Redis Rdb和Aof 的持久化,及过期key 和内存淘汰进行介绍,重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!使用allkeys-lru(挑选最近最少使用的数据淘汰)淘汰策略,留下来的都是经常访问的热点数据;本文对Redis 的两种持久化,及过期key 删除和内存淘汰进行总结。原创 2024-07-04 18:41:57 · 826 阅读 · 0 评论 -
面试篇-Redis-1缓存三兄弟+数据一致性
本文对Redis的使用场景及使用过程中遇到的问题进行总结,重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!本位对Redis 常见的缓存穿透,缓存击穿,缓存雪崩,数据库和缓存数据一致性进行总结。原创 2024-07-04 18:40:34 · 1209 阅读 · 0 评论 -
源码篇--Nacos服务--前章
在阿里云轻量服务器–Docker–nacos 集群部署中我们了解了怎么搭建一个nacos集群;在工具篇–Nacos 源码启动 & jmenv.tbsite.net 错误分析,我们了解了nacos 源码的启动;在框架篇–springboot 客户端 整合& Nacos 版本问题我们了解了 怎么整合到springboot 中;在Idea+maven+spring-cloud项目搭建系列–3整合Nacos中我们可以了解cloud的整合和使用;本文对Nacos 的架构及相关概念进行介绍;原创 2024-03-29 09:03:24 · 724 阅读 · 0 评论 -
JAVA数据篇-队列Queue使用
在 Java 中,队列(Queue)是一种用于存储和管理元素的线性数据结构,遵循先进先出(FIFO)的原则,即最先进入队列的元素最先被取出。Java 中提供了多种队列的实现类,常用的包括 LinkedList、ArrayDeque 和 PriorityBlockingQueue 等。。Java 中的队列 (Queue) 是一种先进先出 (FIFO) 的数据结构,用于存储元素并按照它们被添加的顺序进行访问。原创 2024-03-29 09:00:46 · 1061 阅读 · 0 评论 -
Spring大白话--三级缓存解决循环依赖问题
在使用Spring 开发过程中,我们需要对定义后的bean 通过构造方法,或者bean 注入的方式注入到某个类中进而使用改bean 对应的方法,在此过程中就会出现一个类中注入了n多个bean,几个类中bean 相互注入,出现 A 依赖B,B依赖C,C又依赖A/B 这种循环情况的出现。提示:以下是本篇文章正文内容,下面案例可供参考。原创 2023-09-27 15:19:02 · 915 阅读 · 0 评论 -
工具篇-EasyExcel-web行列合并导入
本文介绍excel 存在行列合并项的数据,进行web导入。根据自身业务完成定义@ExcelProperty(value = "序号") private Integer rowNum;@ExcelProperty(value = "指标类型") private String dictType;@ExcelProperty(value = "指标所属航道") private String channel;原创 2023-07-26 09:30:25 · 944 阅读 · 0 评论 -
工具篇-EasyExcel-web普通导入
EasyExcel web 导入excel 数据。提示:以下是本篇文章正文内容,下面案例可供参考根据业务自行定义即可@Data@ ExcelProperty("指标名称") // @ExcelProperty(index = 0) private String name;@ ExcelProperty("指标类型") // @ExcelProperty(index = 1) private String dictType;原创 2023-07-26 09:27:33 · 201 阅读 · 0 评论 -
工具篇--4.1RabbitMq--常用配置参数详解
控制使用一个 RabbitMQ 连接创建的 channel 数量,即 RabbitMQ 连接池中缓存连接时每个连接中的 channel 的数量,缓存的目的是减少连接和销毁的开销。sring.rabbitmq.cache.channel.checkout-timeout 是 Spring Boot 集成 RabbitMQ 客户端连接工厂(ConnectionFactory)的一个属性,用于设置缓存的通道(channel)请求超时时间。如果系统的性能要求比较高,可以考虑关闭重试功能,或者调整重试参数的值。原创 2023-06-14 09:28:14 · 8038 阅读 · 1 评论 -
工具篇--4 消息中间件-RabbitMq 模型介绍
在这种情况下,如果开启了 mandatory 参数,那么无法匹配到队列的消息就会被视为不可路由,从而触发 ReturnCallback,同时也会在消息到期后被重新路由到延迟队列中,如果在ReturnCallback 方法中重写进行消息的发送,最终会有两条相同的消息,导致该消息被重复消费,这就是同时收到延迟消息和路由失败消息的原因。RabbitMQ 提供了可靠的消息传递机制,能够保证消息的可靠性和可靠传输,同时还支持消息的路由与转发,能够实现灵活的消息处理模式。对于高并发的情况,建议使用该模式。原创 2023-06-13 14:20:13 · 1079 阅读 · 0 评论 -
Spring架构篇--2.7.6 远程通信基础--Netty流程总结
Netty 中除了NioEventLoopGroup 的创建和ServerBootstrap 的初始化工作之外,其余的工作都交由bind() 方法进行处理,所以bind 方法 可以说是了解 Netty 流程的重中之重;前言:虽然netty 内部的流程比较复杂,但是对于用户来说还是非常友好的,我们只需要进行必要的参数设置,以及添加处理业务的handler 即可;本文对netty 进行阶段性的回顾。:改图包含了服务器端与客户端连接的建立,消息的收发;原创 2023-06-12 13:13:15 · 589 阅读 · 0 评论 -
Spring架构篇--2.7.5 远程通信基础--Netty原理write 事件处理
前言:之前的分析中我们知道了服务端对于客户端accept 以及read 事件的处理,那么客户端/服务端 进行数据写入时 数据流又是怎么传递的,本文继续对 write 探究;在调用writeAndFlush 进行数据的写出时,netty 会依次寻找outboard的handler 处理器,依次调用write 方法进行业务逻辑的处理;**2 数据的写出流程:**数据流的写出是按照handler 一定规则,进行数据传递的一个过程;原创 2023-06-12 13:14:34 · 491 阅读 · 0 评论 -
Spring架构篇--2.7.4 远程通信基础--Netty原理--bind实现客户端accept&read事件处理
在客户端进行写数据后,进入到服务端的:NioEventLoop 中的processSelectedKey 方法然后读取事件:随后进入到AbstractNioByteChannel 中的read 方法得到客户端的数据并调用pipeline.fireChannelRead(byteBuf)方法依次调用服务端的hadler 处理器;完成对新的SocketChannel 进行初始化方法的调用,进入自己业务中的ChannelInitializer 的initChannel 方法:进行handler 的添加;原创 2023-06-09 14:50:30 · 802 阅读 · 0 评论 -
Spring架构篇--2.7.3 远程通信基础--Netty原理--bind实现端口的绑定
前言:在对ServerBootstrap 进行属性赋值之后,通过bind 方法完成端口的绑定,并开始在NioEventLoop中进行轮询进行事件的处理;(4)NioServerSocketChannel 的config 初始化:在完成了对NioServerSocketChannel 对象的创建并初始化pipeline和设置其为非阻塞流之后;到这里我们看到了NioServerSocketChannel 对象的初始化,以及非阻塞属性的设置,已经最终对管道accept 事件 的注册;原创 2023-06-07 16:40:53 · 1035 阅读 · 0 评论 -
Spring架构篇--2.7.2 远程通信基础--Netty原理--ServerBootstrap
以上步骤都是初始化和赋值操作,没有socket 端口的绑定,以及时间监听的处理,那么这些处理就只剩在bind(this.port).sync() 进行处理,由于bind 方法嵌套较深,所有放在下一篇继续探究;前言:已经初始化了NioEventLoopGroup 的boosGroup 和 workerGroup ,那么ServerBootstrap的作用是干嘛的呢 ,本文在。可以看到ServerBootstrap 的对象做了一系列的配置后最终 通过 bind(this.port).sync() 进行启动;原创 2023-06-07 16:38:45 · 910 阅读 · 0 评论 -
Spring架构篇--2.7.1 远程通信基础--Netty原理--NioEventLoopGroup
从类名字来看它是一个Nio 流的事件轮询器组,既然是一组顾名思义这个组里应该存放了同一种类型的字对象;从类图看它是继承Executor 它是Java 线程池的顶级类,说明它是具有创建线程执行线程的能力;前言:在使用Netty 时不管是服务端还是客户端都需要 new NioEventLoopGroup 对象进行工作,NioEventLoopGroup的作用是什么呢;RejectedExecutionHandlers.reject():拒绝的策略直接抛出了RejectedExecutionException。原创 2023-06-06 16:11:56 · 413 阅读 · 0 评论 -
分布式全局唯一id实现-1DB步长&Mybatis-plus雪花算法优化
但是请注意,由于机器数的id 是通过轮询段区间的方式进行了生成,加入段区间为0-49 ,相同服务的实例个数为5,则极端情况下,其中一个服务始终没有进行过重启,另外4个服务最多支持((49-5)/4)11次的启动,如果多于11次 则会造成生成的机器数id 和 始终没有经过重启服务的机器数id 重复的问题,从而造成全局id 可能重复问题;既然是由于10位的机器位id 相同造成了id 的重复,那么就需要优化来使得 多个实例之间获取到的 workId 不相同,从而避免id 的重复问题;原创 2023-05-23 13:27:29 · 1456 阅读 · 0 评论 -
Mybatis-Plus 自动属性填充与自定义Insert into语句顺序
可以看到在创建MybatisParameterHandler 对象时,boundSql 已经完成了sql 的解析和拼接,然后在this.processParameter(parameter) 方法完成了主键id 和 属性的自动填充,从构造方法可以看到,boundSql 的拼接是先于processParameter(parameter) 属性填充的方法的,这就解释了为什么我们明明已经为改属性进行了填充,为什么 最终自定义的insert into 语句 标签判断是空的,本质就是因为两者的顺序问题;原创 2023-05-19 16:17:12 · 2721 阅读 · 0 评论 -
JAVA并发编程--7 延时队列DelayQueue
延时队列DelayQueue原创 2023-04-01 21:22:08 · 1617 阅读 · 0 评论 -
Spring架构篇--2.6.1 远程通信基础--Rpc-Socket实战进阶篇--通过注解完成远程通信
Socket实战进阶篇--通过注解完成远程通信原创 2023-02-24 09:37:37 · 292 阅读 · 0 评论 -
Spring架构篇--2.6 远程通信基础--Rpc-Socket实战篇
远程通信基础--Socket实战篇原创 2023-02-24 09:37:07 · 409 阅读 · 0 评论 -
Spring架构篇--2.5.4 远程通信基础--Select 源码篇--selector.close()&总结
Select 源码篇--selector.close()&总结原创 2023-02-22 13:37:35 · 266 阅读 · 0 评论 -
Spring架构篇--2.5.3 远程通信基础Select 源码篇--window-- selector.select()
Select 源码篇--window-- selector.select()原创 2023-02-22 13:35:54 · 396 阅读 · 0 评论 -
Spring架构篇--2.5.2 远程通信基础Select 源码篇--window--sokcet.register
Select 源码篇--window--sokcet.register原创 2023-02-22 13:29:36 · 429 阅读 · 0 评论 -
Spring架构篇--2.5 远程通信基础Select 源码篇--window--Select.open()
Select 源码篇--window--Select.open()原创 2023-02-22 13:21:12 · 440 阅读 · 0 评论 -
Spring架构篇--2.4 远程通信基础--Socket通信
远程通信基础--Socket通信原创 2023-02-22 11:12:35 · 1054 阅读 · 0 评论 -
Spring架构篇--2.3 远程通信基础--IO多路复用select,poll,epoll模型
IO多路复用select,poll,epoll模型原创 2023-02-22 11:00:25 · 620 阅读 · 0 评论 -
Spring架构篇--2.2 远程通信基础--Java--BIO,NIO,AIO
远程通信基础--Java--BIO,NIO,AIO原创 2023-02-22 10:53:04 · 344 阅读 · 0 评论 -
Spring架构篇--2.1 远程通信基础--序列化
远程通信基础--序列化原创 2023-02-22 10:51:52 · 118 阅读 · 0 评论 -
JAVA工具篇--java.awt.Robot模拟微信批量添加好友
java.awt.Robot模拟微信批量添加好友原创 2023-02-04 12:33:10 · 1373 阅读 · 0 评论 -
JAVA并发编程工具篇--1.1理解Future获取线程执行结果
理解Future获取线程执行结果原创 2023-01-06 20:42:41 · 1479 阅读 · 0 评论 -
JAVA并发编程工具篇--1理解线程池任务的执行和线程的销毁
理解线程池任务的执行和线程的销毁原创 2023-01-06 19:08:42 · 2536 阅读 · 0 评论 -
JAVA数据结构篇--14集合汇总篇
集合汇总篇原创 2023-01-02 11:47:54 · 523 阅读 · 0 评论