
Java
文章平均质量分 66
秃狼
VX:aitulang
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Execel文档批量替换标签实现方案
摘要:针对批量导出Excel文件时标题错误的问题,提出两种解决方案:重新导出(耗时10小时)或使用Java代码替换标签(仅需10分钟)。采用Apache POI库实现,通过读取模板样式、删除旧标签行并插入新模板行的方式快速修正。代码支持处理合并单元格和样式复制,对于仅含标签的空文件会提示手动处理。经测试成功处理上千个文件,将总耗时从10小时大幅缩短至10分钟,显著提升工作效率。原创 2025-07-25 17:49:18 · 323 阅读 · 0 评论 -
Aop +反射 实现方法版本动态切换
其实这个切换模式准确的来讲用到了:AOP + 反射 来实现的,因为目前就考虑两种数据库的方式,如果未来使用了其他的数据库,那基本上代码的实现思路基本没有变,最终我们只需要在apollo上切换设置就可以动态的实现不同版本的方法的切换。原创 2025-02-21 15:51:59 · 409 阅读 · 0 评论 -
JAVA接口机结构解析
在Java项目中,接口机通常指用于与外部系统进行数据交互的中间层,负责处理请求和响应的转换、协议适配、数据格式转换等任务。接口机的结构。原创 2025-02-07 10:40:00 · 964 阅读 · 0 评论 -
dubbo+Zookeeper微服务方案入门
比如现在有三个服务器,前一半服务器在做投票的时候都会将票投给事务id最大的那个服务器,第一个服务器会将票投给自己,但是呢,在第二个服务器做投票的时候,服务器一发现服务器二的事务id更大,就会将票投给服务器二,以此类推。:当发生网络波动的时候,master节点中的心跳没有被哨兵收到,此时哨兵就会认为其客观下线,会在从节点中选择新的master节点,此时就会导致旧的master中新的数据未被同步就丢失的情况,最终导致服务的脑裂。当有新的服务器节点进入时,会最自动变成从节点并和主节点做数据的同步。原创 2024-11-25 08:54:16 · 715 阅读 · 0 评论 -
解决mysql查询时条件字符串无法区分大小写
最近在修数据库数据的时候,业务上要求我们需要将用户身份证字段中尾号为x的数据,将其都转换成大写,为此我编写了一个sql语句。在查询结果的时候,会发现大写的X对应的数据也会被查询出来,这样子就会导致我们修改数据的时候变的非常的麻烦。我们只需要在查询的字段值之前加上关键字 BINARY即可。最终我们就可以查询到需要的数据。主要的原因:默认的编码格式是不区分大小写的,为此我们需要修改sql语句。原创 2024-11-15 11:03:10 · 445 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: kotlin/Result解决方案
在idea2021之后,kotlin都使用远程仓库(kotlinx-coeouties-core),会导致和我们导入的kotlin的内容冲突,最终找不到kotlin,在定位到问题发生出后,解决方案也就自然浮出水面了。在控制窗口上虽然报错是找不到对应的class,但是呢在我们导入kotlin的后,还是报相同的异常,在网上查找了各种资料,都没有解决方案。在setting中的Debugger中将 Disable coroutine agent,禁用远程库调用。原创 2024-10-09 13:49:10 · 1158 阅读 · 0 评论 -
若依使用(二次开发)
将生成的前后端代码复制到我们的前后端代码中。将main中的文件放到子项目中的main中,将vue中的代码存放到前端项目的views中。2.将设计好的数据库导出成sql文件,导入到对应的数据库中,启动若依项目并执行代码生成。将子项目的依赖添加到主pom.xml中或者添加到rouyi-admin的pom中。1.创建子项目到RouYi-springboot中,添加对应的依赖。,并将当前子项目的依赖添加到RouYi-admin中。添加到新建子项目中的pom.xml中。填写对应的参数,生成修改后的文件。原创 2024-10-05 17:35:18 · 896 阅读 · 0 评论 -
Error running Application.Command line is too long
本质上就是执行启动类Application的时候,执行的指令太长了,所以运行失败。3.勾选 Shorten command line。1.打开Edit Configuration。4.选择classpath file。2.点击Modify options。原创 2024-09-25 17:08:50 · 2544 阅读 · 2 评论 -
Circular dependency between the following tasks(gradle循环依赖的问题)
目前公司项目主要使用gradle而不是maven,所以对gradle的使用不是很清楚,遇到这个问题的时候一直在晚上查资料,但是解决方案基本都是安卓的,后续先前辈请教了一下,才找到解决方案。原创 2024-09-25 17:02:45 · 983 阅读 · 2 评论 -
面经学习(上海鑫玥轩信息)
Hash结构中,使用大key存储课表Id,课表用来关联userId和课程的Id,使用小key存储节Id,value存储观看位置的数据,在每次请求进来后直接修改Hash中的数据,并且每次发送一个延迟消息,使用Redis的死信发送一个延迟15秒消息,并且也是当前的节点去监听该消息,监听到消息后,使用监听到的观看位置和当前在Hash结构中的观看位置进行比较,如果发现二者的相同,说明在这15秒内没有再次进行观看了,这个时候就去修改数据库。反之,如果不相同的话,说明此时用户还在进行观看,我们就直接丢掉消息。原创 2024-09-22 22:31:04 · 549 阅读 · 0 评论 -
CQRS模型解析
CQRS中文意思为命令于查询职责分离,我们可以将其了解成读写分离的思想。分为两个部分 业务侧和数据侧,业务侧主要执行的就是数据的写操作,而数据侧主要执行的就是数据的读操作。当然两侧的数据库可以是不同的。目前最为常用的CQRS思想方式为事件驱动。CQRS模型也是未来微服务形态的一个趋势。原创 2024-09-22 22:23:56 · 629 阅读 · 0 评论 -
gradle入门
在项目中的使用还是和maven非常相似的,我们需要修改依赖的版本号或者修改插件都需要到build.gradle文本中修改。(例如:group='xxx.xxx.xxx',version='0.0.1')明显我们会发现gradle的配置明显少很多,gradle将依赖的引入格式为 groupId:artifactId:version。(需要注意的时候,因为Gradle和idea存在兼容问题,所以最好使用6.8版本以上的Gradle)2.plugin的配置和dependencies还是比较相似的。原创 2024-09-17 22:05:47 · 604 阅读 · 0 评论 -
面经学习(hbkj实习)
这次面试算是对我基础知识空缺的排查,有很多小知识点是我没有去复习到的,也是一次比较愉快的面试。原创 2024-09-05 15:30:59 · 961 阅读 · 0 评论 -
面经学习(越亮传奇实习)
的实习项目主要就是做C端的在线教育项目,并且呢,它采用的基于alibaba那套落地的微服务方案。可能也是因为我是实现生的源固,我没有负责黄金链路,从用户登录到用户下单再到用户观看视频的整个流程,我主要负责的就是负责辅助模块的开发。那我给您介绍一下我记得比较清楚的难点吧。原创 2024-07-19 15:51:59 · 809 阅读 · 0 评论 -
面经学习(厦门安全狗实习)
我的实习项目主要就是做C端的在线教育项目,并且呢,它采用的基于alibaba那套落地的微服务方案。可能也是因为我是实现生的源固,我没有负责黄金链路,从用户登录到用户下单再到用户观看视频的整个流程,我主要负责的就是负责辅助模块的开发。那我给您介绍一下我记得比较清楚的难点吧。原创 2024-07-19 14:42:27 · 1421 阅读 · 0 评论 -
面经学习(杭州实在智能实习)
当发现B中需要依赖A,此时将使用A的ObjectFactory生成A的代理对象,并将A的代理对象存放到二级缓存中,将A注入到B中,将完整的B存放到一级缓存中,此时回溯,将完整的B注入到A中,最终解决三级缓存的问题。Spring的实现方式主要就是使用Aop的来实现的,使用环绕通知,在执行方法的时候,开启事务,并对执行的方法使用Try/catch,如果捕获异常的话就进行回滚,如果执行完方法后就进行提交。解决这个问题的主要方案就是:增加我们的消费者个数,加快消费者的消费速度,对我们消息队列进行扩容。原创 2024-07-18 23:35:55 · 1057 阅读 · 0 评论 -
Java实习手册(小白也看得懂)
距离俺发布的学习路线已经六个月了,那我给小伙伴的学习周期是四五个月左右,我相信大多的小伙伴已经学习的差不多了。正好赶上暑期实习的阶段,在暑期找到实习就成为暑期的头等大事。实习经验在校招的起到决定性的作用,所以我们需要认真准备。原创 2024-07-05 22:46:10 · 3483 阅读 · 9 评论 -
物流项目实习话术(家政,二手回收项目通用)
我的实习项目呢,他是基于微服务框架体系的物流项目中,主要负责人,货,车三者之间的调度关系。主要的黄金链路就是用户下单 -> 快递员揽收->通过一系列的调度完成商品运单的运输->再到快递员派送商品->用户签收的整个流程。主要的模块主要就是调度模块,通过调度模块来异步的调度其他模块,包括运单模块,订单模块,路线规划模块等等。这个模块是物流微服务中最重要的就是调度微服务。其中主要就是包含订单转运单,运单合并,计算运力,司机出入库,快递员派件等流程。那我就按执行流程给您介绍一下调度微服务模块,您看行吗?订单转运单。原创 2024-05-01 17:39:19 · 1427 阅读 · 0 评论 -
在线影院项目话术(0.7w精选)
这个电影院项目不同于常见的基于会员限制用户观看范围的在线影院项目,主要就是按需购买片源来进行观看,用户就不会因高额的会员费而劝退。项目的主要实现就是:微服务的五大主键,数据库使用mysql,redis,中间件使用rabbitmq,xxl-job,工具使用skywalk和jenkins。项目的主要功能就是 片源的观看及购买及一些辅助用户的功能包括:签到积分,热门电源排行,优惠劵模块。简单的来说,用户登录并按规则下单->用户观看片源的整个流程。原创 2024-03-25 16:29:34 · 945 阅读 · 0 评论 -
在线教育项目话术(1W字精选)
我们考虑到此模块可能会存在高并发的场景,所以在原先涉及大量的DB操作旧方案上通过redis的数据结构和定时任务来优化。(面试官感兴趣就介绍优化方案)原创 2024-03-20 15:32:52 · 1261 阅读 · 0 评论 -
Redis的BitMap的使用
Redis的Bitmap不是一个独立的数据结构类型,而是基于字符串(String)类型实现的一种功能 ,存储的是二进制的文件,布隆过滤器就是基于BitMap实现的。原创 2024-03-06 16:53:12 · 568 阅读 · 0 评论 -
DelayQueue使用手册
DelayQueue是Java中的一个并发容器,它实现了Delayed接口,用于存储具有延迟时间的元素。DelayQueue内部使用PriorityQueue来存储元素,并根据元素的延迟时间进行排序。延迟时间指的是元素需要在指定的延迟时间之后才能被取出。目前主流的延迟对应的方案为:使用mq的延迟队列。而DalayQueue是java自带的延迟队列,我们可以根据需求去选择。使用创建一个队列元素去实现 Delayed 接口。@Data//携带的数据//延迟时间//元素在队列中的剩余时间。原创 2024-02-29 16:17:00 · 355 阅读 · 0 评论 -
前后端项目统一返回类型(配置即用)
此模板并非定死,可以根据前端的规则进行相应属性名的修改,及根据业务的实际情况添加或修改其中的属性。原创 2024-01-03 23:33:40 · 625 阅读 · 0 评论 -
jwt工具类(配置即用)
主要使用就是生成和解析的方法,我们可以在此方法上实现方法增强的相关操作。原创 2024-01-03 23:27:42 · 680 阅读 · 0 评论 -
网盘项目话术(0.5w字精选)
该项目主要就是对文件的操作,file表,file_share表。file表主要字段:id,用户id,父级目录id,文件的地址,文件的封面图片地址,创建和修改时间。file_share表主要字段:id,文件id,用户id,有效类型,创建和失效时间(用于定时任务)。基于RDAB的五张表:用户信息表,角色表,权限表,用户角色关联表(多对多关系),角色权限关联表(多对多关系)。基础设置表:id,邮箱标题,邮箱内容前缀,默认初始化空间大小。单点登录->双token三认证(迭代方案)原创 2023-12-28 21:59:28 · 1625 阅读 · 0 评论 -
物流项目话术(1.5w字精选)
用户在【用户端】下单后,生成订单系统会根据订单生成【取件任务】,快递员上门取件后成功后生成【运单】用户对订单进行支付,会产生【交易单】快件开始运输,会经历起始营业部、分拣中心、转运中心、分拣中心、终点营业部之间的转运运输,在此期间会有多个【运输任务】到达终点网点后,系统会生成【派件任务】,快递员进行派件作业最后,用户将进行签收或拒收操作原创 2023-12-19 22:42:57 · 2493 阅读 · 0 评论 -
线程池基础参数和执行流程
3.如果阻塞队列满了,就判断线程的总数是否大于核心线程的总数,如果大于,创建救急线程去执行任务。(当救急线程和核心线程处于空闲的时候就会去执行堵塞队列中的方法)DiscardOldestPolicy:丢掉在堵塞队列中存储最久的任务,将新的任务存储到队列中。1.在新的任务进来后,先判断核心线程是否已满,如果没满,直接创建个核心线程去执行任务。2.如果核心线程满了,就判断阻塞队列是否已满,如果没有满,直接存储到阻塞队列中。5.BlockingQueue:阻塞线程,存储哪些没有被核心线程执行的任务。原创 2023-12-07 11:29:07 · 660 阅读 · 0 评论 -
Synchronized关键字的底层原理
类是轻量级锁,但是在做锁的重入的时候不会使用CAS指令,而是直接判断thread的id是否相同,相同就表示没有竞争。2.如果锁记录中的MarkWord的值为null,说明这是一次锁重入操作,直接将锁记录中的指向对象的地址设置为null。3.如果锁记录中的MarkWord的值不为null,我们就通过CAS指令将锁对象中的MarkWord恢复成无锁状态。重量级锁主要使用在线程竞争的时候,且重量级锁涉及进程的上下文切换,效率比较低下,实现的,在对象的对象头中存储了MarkWord存储的就是Monitor的地址。原创 2023-12-04 12:02:14 · 661 阅读 · 1 评论 -
MVCC详解(小白也看得懂)
MVCC:多版本并发控制。原创 2023-12-02 16:38:18 · 644 阅读 · 0 评论 -
HashMap源码解析
4.在链表的插入中,我们通过循环找到链表的尾部,并创建一个节点,如果个数大于等于8则直接将链表转换为红黑树,插入值的链表中存在key相同的值则直接进行覆盖。3.如果存在的key的值和传入的key的值相同的话就直接进行覆盖。如果不相同并且节点是红黑树的时候就做红黑树的插入。反之则做链表的插入。1.判断判断HashMap中数组的长度是否为0,如果为0就使用resize方法进行扩容,且第一次扩容的大小为16。put方法需要返回对一个的hash值和key和value。默认的容量就是16,装载因子为0.75。原创 2023-11-29 15:11:06 · 513 阅读 · 0 评论 -
ArrayList的源码解析
3.参数构造 (传入一个集合): 将集合转为数组类型并判断其长度,如果长度小于0则直接报错,反之,判断集合的类型是否为ArryList类型,如果是则直接赋值,反之,调用Array.copyof方法得到对应的ArrayList进行赋值。2.参数构造(初始化长度):如果长度大于0直接创建一个对应长度的Object数组,如果长度为0则直接返回{}。当第一次添加数据的时候,此时ArrayList中的值为为{},扩容的长度就是10。如果新的容量大于当前的容量就进行扩容,反之则不扩容。1.无参构造:直接返回一个{}。原创 2023-11-27 21:14:51 · 553 阅读 · 0 评论 -
Java八股文(急速版)
单个redis节点的并发能力是有限的,所以为了提高并发能力,我们需要搭建redis集群,就比如:主从复制。主从复制的流程主从复制主要分为:全量同步和增量同步。全量同步:在salve请求数据同步的时候会携带application Id和offset,如果master判断出applid和自己的不一样,就认为slave是第一次进行同步,所以会进行全量同步。原创 2023-11-20 23:29:34 · 900 阅读 · 0 评论 -
gittee启动器
很多小伙伴反馈不是使用gitee,不会寻找好的项目,在拿到一个项目不知道从哪里入手。鼠鼠我呀就是宠粉,中嘞,老乡。整!!!原创 2023-11-18 22:15:29 · 779 阅读 · 0 评论 -
2025最新Java八股文(完整版)
单个redis节点的并发能力是有限的,所以为了提高并发能力,我们需要搭建redis集群,就比如:主从复制。主从复制的流程主从复制主要分为:全量同步和增量同步。全量同步:在salve请求数据同步的时候会携带application Id和offset,如果master判断出applid和自己的不一样,就认为slave是第一次进行同步,所以会进行全量同步。原创 2023-11-10 15:39:09 · 28935 阅读 · 3 评论 -
java八股文(基础篇)
由于一个集合同时被多个线程操作就可能出现fail-事件。fail-fast产生的原因线程A在对当前的集合进行遍历,此过程中线程B对集合进行修改操作,当在此过程中线程A再次访问集合是就会报ConcurrentModifactionException异常,产生fail-fast事件。解决fail-fast的方法尽量使用java.util.concurrent包中的类,减少使用java.util中的类。fail-fast的底层实现的概述。原创 2023-10-30 22:09:35 · 656 阅读 · 0 评论 -
分布式日志和链路追踪
可以在allMessage中显示字段。这里添加了level字段。原创 2023-10-26 10:06:44 · 1930 阅读 · 0 评论 -
美团Leaf使用
在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。美团Leaf就是用于生成对应公式的Id的工具。为什么我们要使用美图Leaf?UUID性能非常高:本地生成,没有网络消耗。性能非常高:本地生成,没有网络消耗。原创 2023-10-13 15:46:34 · 1098 阅读 · 0 评论 -
Java流式编程的使用
使用流式编程的步骤就是: 设置数据源, 设置数据处理的方式,设置收集结果的方式。原创 2023-09-21 13:41:53 · 510 阅读 · 0 评论 -
ffmpeg安装
FFmpeg是一个开源的音视频处理库,它提供了一系列的工具和API,可以用于处理音视频文件。你可以使用FFmpeg的命令行工具来执行各种音视频处理操作,比如转码、剪辑、合并等。FFmpeg的命令格式通常是:ffmpeg [全局选项] {[输入文件选项] -i 输入文件} ... {[输出文件选项] 输出文件} ... [1] [2] [3]。你可以根据具体的需求和参数来使用FFmpeg进行音视频处理。原创 2023-07-31 21:18:03 · 1352 阅读 · 0 评论 -
mysql表主键自增过大问题
最近在做项目时,发现我创建的每一个表的主键设置自增,在插入数据数据时会出现自增值过大的问题。原创 2023-07-16 21:06:03 · 2902 阅读 · 2 评论