- 博客(33)
- 收藏
- 关注
原创 RabbitMQ入门(上篇)
本文介绍RabbitMQ的入门使用,分为同步/异步通讯对比和基础消息队列实现两部分。同步通讯实时响应但存在耦合度高、性能瓶颈等问题,而异步通讯通过Broker解耦,具有吞吐量高、故障隔离等优势。RabbitMQ作为消息中间件,包含生产者、消费者、交换机、队列等核心概念。通过Java代码示例演示了基本消息队列的实现:生产者建立连接后发送消息到指定队列,消费者订阅队列并处理消息。基础消息队列模型是RabbitMQ最简单的使用方式,为后续高级功能奠定基础。
2025-11-11 19:00:00
963
原创 知识点迭代器回顾
Java迭代器使用指南 本文介绍了Java集合框架中迭代器的基本用法和常见问题。迭代器通过iterator()方法获取,初始指向集合第0个元素。主要方法包括hasNext()判断是否有元素、next()获取当前元素并移动指针、remove()删除元素。文章通过实例演示了正确使用方法: 必须先用hasNext()检查再调用next() remove()必须在next()之后调用 避免手动多次调用next()导致越界 推荐使用while循环安全遍历 常见错误包括:空集合直接调用next()、未调用next()就
2025-07-10 14:15:40
432
原创 java中的递归及快速排序
本文回顾了Java中的递归概念及其应用。递归是通过方法调用自身来解决复杂问题,将其分解为更小的相似问题。文章通过计算1到n的和、阶乘等示例展示了递归的基本原理和工作方式。此外还介绍了递归的衍生应用,如上楼梯问题和快速排序算法。快速排序通过递归将数组分区排序,体现了递归在算法中的高效应用。文中包含代码示例和示意图,帮助理解递归的执行过程。
2025-07-10 11:36:57
337
原创 按照最新政策 根据身份证号计算退休年龄
/男性原退休年龄60岁//女性原退休年龄55岁/*** 根据最新政策计算退休年龄* @param idCard 18位身份证号* @return*///1.1校验身份证阶段,对身份证进行严格校验//1.2身份证校验完成,如果成功的话,进行下一步,截取我们需要用到的内容if (!throw new RuntimeException("身份证校验失败");//1.3根据身份证第17位判断男女,获取性别。
2025-07-09 14:58:17
470
原创 若依基本功能
若依是一款基于RBAC权限模型的后台管理系统,提供单体、前后端分离和微服务三种架构版本。系统采用Shiro框架实现权限控制,通过注解方式管理角色和权限。核心功能包括:代码生成器自动生成CRUD代码、AOP记录系统操作日志、数据权限过滤SQL、多数据源动态切换、防重复提交拦截以及基于Quartz的定时任务管理。系统内置部门数据权限控制,可通过注解实现不同级别的数据过滤。整体设计采用AOP和拦截器实现功能扩展,支持快速开发企业级后台管理系统。
2025-07-07 17:56:41
1071
原创 生产环境中如何防止rm -ef 删库操作?
它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清除回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。是一个开源软件用来替代不太安全的rm,可以在/etc/safe-rm.conf中配置路径黑名单,定义哪些不能被safe-rm删除。在一个风和日丽的下雨天,某猿带着还未从睡梦中醒来的脑子,打开了服务器,完成了一套华丽的rm -ef操作.可以异地远程备份重要的数据,采用dump的增量备份机制,LVM快照,虚拟化环境中的快照、raid5等等。
2024-08-05 14:04:41
855
原创 ElasticSearch安装与集群部署
很多小伙伴第一次接触ElasticSearch的时候是一脸愁容,这个东西他怎么用啊,不知道从哪里安装,那我们今天就着重从哪里下载?怎么下载?怎么安装?来研究一下吧!
2024-08-05 09:58:46
1138
原创 HashMap内存地址,一个不小心就会踩坑的小细节
hashmap是一种基于哈希表的数据结构,它通过计算键的哈希值来确定键值对在内存中的存储位置。在内存中,hashmap通常使用数组来存储数据,每个数组元素都是一个桶(bucket),每个桶中可以存储一个或多个键值对。当我们需要在hashmap中查找、插入或删除键值对时,hashmap会根据键的哈希值来定位到相应的桶,并在该桶中进行操作。HashMap是基于数组来实现Hash表的,数组就像是内存空间,它的每一个index就是一个内存的地址,即数组的下标就好比代表了一个内存地址。没错,正如你所想他没错。
2024-08-02 08:44:14
269
原创 Java面试题(java高级面试题)
我们的系统中是使用的基于MQ的异步双写来实现数据同步的,具体来说,当mysql数据发生变化的时候,会向MQ中发一个消息,然后我们的搜索服务会接收这个消息,根据消息中的数据Id构造出完整的数据,然后同步到ES中。客户端点击导出按钮以后,服务端记录一个日志,状态是待处理,给客户端返回日志的id,然后服务端异步做excel的导出,完成以后,把excel上传到oss,把下载的url地址记录到日志,并把日志的状态改成已完成。// 从MQ收消息,下单,SQL中要加上stock>0的判断,防止把库存扣成负数。
2024-01-12 23:11:07
1355
1
原创 Java中的原子类-枚举-类加载器
Java中的原子类提供的这些方法都是线程安全的,不会被其他线程中断或干扰。读取方法get():获取当前值修改方法set():设置当前值lazySet():延迟设置当前值。与set()不同的是,它不保证其他线程立即看到修改后的值,而是在可能的情况下延迟更新值,从而提高性能。:比较并设置。如果当前值等于预期值(expected),则设置新值(update)并返回true;否则返回false。:弱比较并设置。
2024-01-10 11:29:15
1002
原创 分享一个idea插件MyBatisX的Bug
这个错误表明 MyBatis 插件 (com.baomidou.plugin.idea.mybatisx) 在保存设置时遇到了问题,并且已被禁用。要解决这个问题,您可以尝试以下几个步骤:重启 IntelliJ IDEA: 按照错误消息中的建议,尝试重新启动 IntelliJIDEA。有时候重新启动可以解决临时性的配置问题。检查插件版本: 确保您使用的 MyBatis 插件是最新版本。在 IntelliJ IDEA 中,您可以转到 “File” ->“Settings” -> “Plugins”,然后找到
2024-01-05 09:53:28
2683
1
原创 Java中的迭代器
Java中的迭代器是一种用于遍历数据结构的对象。它提供了一种简单的方式来访问集合中的元素,而不需要显式地指定位置或索引。以下是Java中的迭代器的几个重要特征:迭代器接口:在Java中,迭代器实现了Iterator接口,这个接口定义了遍历集合中元素的方法,例如next()和hasNext()。遍历方式:Java中的迭代器可以从前到后依次遍历集合中的元素。可通过remove()删除元素:Java的迭代器还提供了一个remove()方法,用于删除它最后返回的元素。
2023-12-30 21:26:24
648
1
原创 java有关时间的整理
返回当前时间的毫秒数。new Date():获取当前日期和时间的对象。:用于格式化日期和时间,可将日期和时间转换为不同的字符串格式,或将字符串解析为日期和时间对象。:获取日历对象实例,可进行日期和时间的计算、比较和格式化等操作。:获取当前日期和时间的毫秒数。:判断当前日期是否在给定日期之前。:判断当前日期是否在给定日期之后。:比较两个日期的先后顺序。:获取指定字段的值,如年、月、日、时、分、秒等。:设置指定字段的值,如年、月、日、时、分、秒等。
2023-12-29 16:47:05
1034
1
原创 ECharts基本使用(入门)
Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。1). 柱形图2). 饼形图3). 折线图**总结:**不管是哪种形式的图形,最本质的东西实际上是数据,它其实是对数据的一种可视化展示。
2023-12-28 08:39:23
735
1
原创 Java中利用Redis,ZooKeeper,数据库等实现分布式锁(遥遥领先)
在我们进行单机应用开发涉及并发同步的时候,我们往往采用synchronized或者ReentrantLock的方式来解决多线程间的代码同步问题。但是当我们的应用是在分布式集群工作的情况下,那么就需要一种更加高级的锁机制,来处理种跨机器的进程之间的数据同步问题,这就是分布式锁。分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。
2023-12-27 16:23:11
1474
1
原创 Java中Collections工具类和Map集合
Map集合是Java中的一种数据结构,用于存储键-值对(Key-Value Pair)。Map集合的特点如下:存储方式:Map集合以Key-Value的方式存储数据,Key和Value可以是任何类型的Java对象,但是一个Key只能对应一个Value,而一个Value可以对应多个Key。可以包含null:Map可以存储null值的键和值,但是要注意空指针异常。实现方式:Java中常用的Map实现类有HashMap、TreeMap、LinkedHashMap和Hashtable。
2023-12-27 08:52:13
625
1
原创 Java中的单元测试
单元测试是指在软件开发中对软件的最小可测试单元进行测试和验证的过程。最小可测试单元通常是指函数、方法或者类,单元测试可以保证开发人员的代码正确性,同时也方便后期维护和修改。单元测试的主要目的是检测代码的正确性,确保单个函数或方法的输入和输出正确无误,同时减少开发中的错误和错误的影响。单元测试还可以帮助程序员理解代码的调用和流程,提高程序员的开发效率。单元测试可以自动化执行,提高测试效率和准确性,同时减少手动测试的工作量。
2023-12-26 09:19:28
2710
1
原创 Java回调方法和动态代理
动态代理是一种在运行时动态生成代理类的机制。代理类继承了被代理类的接口,并且拥有相同的方法名和参数。在 Java 中,动态代理可以通过类和接口来实现。具体流程如下:创建一个实现 InvocationHandler 接口的类,该类中实现了 invoke 方法,该方法会在代理类的每个方法被调用时被执行。使用 Proxy 类的方法创建一个代理类实例,该方法需要传入三个参数:类加载器、代理类要实现的接口以及代理类对应的 InvocationHandler 实例。
2023-12-25 09:56:56
1107
1
原创 精选JAVA:50道面试题
Java虚拟机(Java Virtual Machine,缩写为JVM)是Java程序的运行环境。它负责执行Java程序编译后的字节码,并提供了内存管理、垃圾回收、安全检查等功能。Java程序可以在任何安装了Java虚拟机的计算机上运行,而不必担心不同操作系统、不同硬件平台的兼容性问题。多态性指的是一个对象可以以不同的形态表现出来,即同一类型的对象,在不同的情况下可以有不同的表现形式和功能。
2023-12-22 13:23:05
995
转载 路由器服务器修改密码,TP-Link TL-WR842N路由器设置密码
(3)、新版本的TL-WR842N路由器,是没有默认的用户名和密码的,这种新款的TL-WR842N路由器,是第一次设置这台路由器时,由用户自己创建的管理员密码(也就是登录密码)。如果已经忘记了TL-WR842N路由器的登录密码,老版本的TL-WR842N路由器可以尝试用默认密码:admin登录;(1)、TL-WR842N路由器目前有V1、V2、V3、V4、V5、V6、V7几个版本,不同版本的TL-WR842N路由器,登录界面、设置页面也会有些不同。2、修改TL-WR842N路由器的WiFi密码。
2023-12-21 16:55:24
1655
1
原创 AOP的理论及实践
Component@Aspect //声明该bean是一个切面bean 找到切入点+添加通知(增强动作)@Slf4j// "execution(* com.heima.tlias.service.impl.DeptServiceImpl.*(..))" 找到切入点// @Before做通知增强 buildLu() 增强的功能log.info("开始修路....");log.info("帮助卖 销售....");
2023-12-20 14:05:03
986
原创 解放双手生产力强劲工具,阿里通义灵码安装教程
下载完安装包后,打开 Visual Studio Code 后,单击扩展,单击更多按钮,在下拉菜单中单击 从 VSIX 安装,选择下载的 VSIX 文件后安装;下载完安装包后,打开 IntelliJ IDEA 后,打开设置,在插件管理的设置下拉菜单中单击从本地安装插件,选择下载的 zip 文件后安装。重启 Visual Studio Code 后,单击侧边导航的通义灵码,在通义灵码助手的窗口单击登录按钮。重启 IntelliJ IDEA 后,单击侧边导航的通义灵码,在通义灵码助手的窗口单击登录按钮。
2023-12-20 12:47:11
2740
原创 Gitee保姆级教程
Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。本地仓库:开发人员自己电脑上的 Git 仓库远程仓库:远程服务器上的 Git 仓库解释说明:commit:提交,将本地文件和版本信息保存到本地仓库push:推送,将本地仓库文件和版本信息上传到远程仓库pull:拉取,将远程仓库文件和版本信息下载到本地仓库。
2023-12-19 16:18:46
3422
1
原创 分享一个自己用的Linux中自动化部署脚本:一键启动、停止、重启Java应用
在脚本中,我们定义了两个变量,JAR_NAME 表示要运行的Java应用的路径,LOG_PATH 表示应用的日志路径。脚本中定义了四个方法,分别是启动(start)、停止(stop)、查看状态(status)和重启(restart)。这些方法通过操作 ps 命令和 kill 命令来实现相应的功能。# 启动方法start() {# 重新获取一下pid,因为其它操作如stop会导致pid的状态更新$JAR_NAME# -z 表示如果$pid为空时执行then$JAR_NAMEecho ""else。
2023-12-19 10:33:51
1703
1
原创 Java常用API总结
包括基本数据类型的包装类、String类、Object类等。:包括List、Set、Map等。常用的有ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等。:包括字节流和字符流的API,常用的有InputStream、OutputStream、Reader、Writer等。:包括Socket和ServerSocket等。:包括多线程编程的API,如Thread、Runnable、Executor、Semaphore等。
2023-12-18 16:44:36
1496
原创 单例模式概述与示例
单例模式是一种创建型设计模式,它保证一个类在任何情况下都只有一个实例,并提供了全局访问点。在Java中,单例模式通常会使用一个私有的构造方法来限制该类的实例化,然后通过一个静态方法来获取该类的唯一实例。在多线程环境下,需要考虑线程安全的问题,可以使用“双重检查锁定”或者是静态内部类的方式来实现。单例模式常用于需要频繁使用的对象,如日志工具、数据库连接池等。确保一个类只有一个实例,避免了重复创建对象的开销。提供了全局访问点,方便其他对象调用该类的方法和属性。
2023-12-18 16:35:38
658
原创 关于Stream流io流实用小整理
read(byte[] b): 从输入流中读取一些字节数,并将它们存储到字节数组 b中 ,返回读取的长度,如果没有数据,返回-1。对象 . listFiles();格式为new FileWriter(“qqqqqq.txt”, Charset.forName(“utf-8”));wirte(String[])写入一个字符串或者字符串数组,可以指定字符串数组开始写入的位置和结束。wirte(char[])写入一个字符或者字符数组,可以指定字符数组开始写入的位置和结束位置。
2023-12-14 11:06:26
1000
原创 教你学会Docker的使用
*数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。
2023-11-28 11:41:43
1442
原创 ruoyi-Vue前后端分离版本,生成代码404问题
2、在ruoyi-test业务模块下新建pom.xml文件以及src\main\java,src\main\resources目录。在ruoyi-test业务模块添加com.ruoyi.test包,新建TestService.java。在ruoyi-admin新建测试类,调用helloTest成功返回hello代表成功。4、根目录pom.xml模块节点modules添加业务模块。5、ruoyi-admin目录pom.xml添加模块依赖。1、新建业务模块目录,例如:ruoyi-test。
2023-11-20 11:17:51
1270
1
原创 SpringBoot原理详解
SpringBoot的自动配置就是当Spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。比如,我们要进行事务管理、要进行AOP程序的开发,此时就不需要我们再去手动的声明这些bean对象了,我们直接使用就可以从而大大的简化程序的开发,省去了繁琐的配置操作。运行SpringBoot启动类可以看到有两个CommonConfig,在第一个CommonConfig类中定义了一个bean对象,bean对象的名字叫reader。
2023-11-01 15:39:45
313
原创 什么是加密?浅谈MD5加密
加密解密是一种通过使用密码算法对信息进行转换,以使其在传输或存储过程中变得不可读或难以理解,从而保护信息的安全性和隐私性的过程。加密是将明文(原始文本)转换为密文(加密后的文本)的过程。在加密过程中,使用密钥和特定的算法来改变原始文本的形式,使其在未经授权的情况下无法理解。只有持有正确密钥的人才解密是将密文转换回明文的过程。数字摘要算法(Digital Digest Algorithm)是一种加密算法,用于将任意长度的数据转换为固定长度的摘要(也称为哈希值)。
2023-11-01 09:33:53
640
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅