JAVA
文章平均质量分 68
java
程序员诚哥
开源项目ruoyi-wms、ruoyi-mall、ruoyi-fast-service作者
展开
-
netty和websocket的区别
Netty是一个底层网络框架,提供了灵活、异步的网络通信能力,可以支持多种协议,包括 WebSocket。WebSocket是一个应用层协议,专注于在浏览器与服务器之间提供低延迟、全双工的通信。原创 2024-09-06 08:21:26 · 1496 阅读 · 0 评论 -
时常在面试中被问到的多线程问题:下篇
你也可以实现自己的拒绝策略,通过实现接口并覆盖方法。// 自定义处理逻辑 System . out . println("Task " + r . toString() + " rejected from " + executor . toString());// 可以记录日志,或者执行其他处理措施 } }原创 2024-06-28 18:29:32 · 881 阅读 · 0 评论 -
时常在面试中被问到的多线程问题:上篇
进程:进程是一个程序在其自身的地址空间中运行的实例。每个进程都有自己的内存空间、数据段、代码段和系统资源(如文件描述符、设备等)。线程:线程是进程中的一个执行路径。一个进程可以包含多个线程,所有线程共享进程的资源(如内存、文件描述符等)。所属类Object类。用途:使当前线程等待,直到其他线程调用该对象的notify()或方法。锁机制:必须在同步块或同步方法中使用,即调用wait()方法的线程必须持有该对象的监视器锁。当调用wait()方法时,线程会释放锁并进入等待状态,直到被唤醒。所属类。原创 2024-06-28 18:29:11 · 1247 阅读 · 0 评论 -
final、finally 和 finalize 有什么区别?
【代码】final、finally 和 finalize 有什么区别?原创 2024-04-12 15:01:18 · 204 阅读 · 0 评论 -
面试官:关于int 和 Integer的面试题都在这里了!
这种情况下会出现不可靠的情况,是因为这种缓存机制并不是 Java 语言规范的一部分,而是某些 JVM 实现(比如 OpenJDK)的优化措施。类型的对象,会在编译期间对常量进行优化,将特定范围内的整数常量缓存起来以提高性能。对象的值在这个范围内,且是通过自动装箱创建的,那么它们可能会引用相同的对象,导致。,例如在集合类中,因为集合类不能直接存储基本数据类型,需要使用包装类。比较的是对象的引用是否相同,而不是对象的值是否相等。泛型不能直接使用基本数据类型,但可以使用对应的包装类。在使用时,可以直接使用。原创 2024-04-12 13:06:36 · 521 阅读 · 0 评论 -
为什么重写 equals 时,必须重写 hashCode?
方法返回的值)来确定元素在集合中的位置。当我们向哈希集合中添加元素时,集合会首先计算元素的哈希值,然后根据哈希值找到元素在集合中的位置。方法中使用的字段来生成哈希值。通常情况下,可以将对象中每个用于比较相等性的字段的哈希值合并起来生成一个新的哈希值。方法中被认为是相等的,则它们必须具有相同的哈希值,以确保它们能够被正确地处理。对象将具有相同的哈希值,因此被哈希集合视为同一个对象。)视为不同的对象,最终导致集合中包含了两个相等的对象。对象具有不同的哈希值,因此被哈希集合(方法,导致两个相等的。原创 2024-04-03 16:15:30 · 405 阅读 · 0 评论 -
java中 == 和 equals 有什么区别?
是一个操作符,用于比较两个对象的引用是否相同。如果两个对象引用同一个内存地址,则。是一个方法,用于比较两个对象的内容是否相等。通常情况下,如果类没有重写。的作用是相同的,即比较对象的引用是否相同。否则返回 false。在比较基本数据类型时,方法来改变比较的方式,使其比较对象的内容而不是引用。的默认实现就是比较对象的引用。比较的是它们的值是否相等。原创 2024-04-03 15:57:59 · 284 阅读 · 0 评论 -
规避mybaties全表更新风险
MyBatis Plus 提供了 BlockAttackInnerInterceptor (阻断攻击Sql解析器) 插件,该插件可以阻止全表更新和删除操作。在一定程度上,保证了数据库数据的安全。标签中做了if判断,id如果为null,if语句自动去掉,相当于使用了不带条件的更新语句。版本要求:MyBatis Plus 3.4.0 版本以上。标签中使用了不带条件的更新语句。原创 2024-03-22 09:00:49 · 313 阅读 · 2 评论 -
若依ruoyi-vue中的参数验证
创建注解:首先创建一个注解类,用于标记需要进行校验的字段或方法。注解类通常使用@Target和@Retention注解指定其作用目标和生命周期。创建校验器:创建一个校验器类,实现ConstraintValidator接口,并在该类中编写校验逻辑。校验器类通常需要指定两个泛型参数,第一个参数是自定义注解的类型,第二个参数是要校验的字段或方法的类型。应用校验器:在需要校验的字段或方法上使用自定义注解,并指定校验器类。处理校验结果。原创 2024-03-19 17:47:04 · 948 阅读 · 0 评论 -
若依ruoyi-vue中的的DTO、VO、BO、PO、DO、POJO
POJO的定义是无规则简单的对象,在日常的代码分层中pojo会被分为VO、BO、 PO、 DTO。原创 2024-03-18 17:21:09 · 1113 阅读 · 0 评论 -
idea运行程序报错 java 程序包org.junit不存在
如果还不行,尝试一下File->Invalidate Caches,再返回第二步操作。目录,确保其已正确标记为"Test Sources"或"Tests"类型。如果发现该目录被误设为了其他类型,请修正配置,将其指定为测试源代码目录。(对于Gradle项目),以确保JUnit库已被正确包含。在弹出的“Project Structure”窗口中,定位到“Modules”部分,并选择你的目标项目模块。通过上述排查与修复措施,应当能够解决因JUnit包缺失或项目结构配置不当引起的报错问题。原创 2024-02-02 09:54:17 · 2555 阅读 · 0 评论 -
Netty如何解决粘包以及半包问题,以及目前最常用的LengthFieldBasedFrameDecoder
要自定义,你需要创建一个继承自该解码器的子类,并覆盖其中的方法,以满足你的特定需求。// 构造函数需要设置参数,这里假设我们使用的是大端字节序 public MyLengthFieldBasedFrameDecoder(int maxFrameLength , int lengthFieldOffset , int lengthFieldLength , int lengthAdjustment , int initialBytesToStrip) {原创 2024-02-01 17:29:03 · 1693 阅读 · 0 评论 -
redis有哪些数据类型并用java代码实现一下
使用Jedis库(Redis的Java客户端)操作Redis中的不同数据类型。包括操作字符串、哈希表、列表、集合和有序集合。你可以根据自己的需求进一步扩展和调整这些示例。原创 2023-09-28 13:35:29 · 120 阅读 · 0 评论 -
介绍一下java的final关键字
在Java中,`final`是一个关键字,它可以用于修饰类、方法、变量以及实例。`final`关键字的主要作用是增加代码的可读性、可维护性和安全性。通过使用`final`,可以确保某些代码元素不会被意外修改,从而减少了潜在的错误和不必要的复杂性。原创 2023-09-28 09:42:55 · 102 阅读 · 0 评论 -
linkedlist和arraylist的区别
`LinkedList`和`ArrayList`都是常见的数据结构,用于存储和操作集合元素,如果需要频繁进行插入和删除操作,`LinkedList`可能更适合。如果需要快速随机访问和较小的内存占用,`ArrayList`可能更合适。原创 2023-09-28 09:33:22 · 694 阅读 · 0 评论 -
java中避免使用“isSuccess“作为变量名的原因和解决方法
通过抛出异常,可以更好地表达程序的意图和状态,同时也提供了更多的灵活性和可读性。异常可以提供更详细的错误信息,方便调试和处理错误,同时也避免了需要手动检查布尔字段的逻辑。通过抛出异常来指示错误,可以提高代码的清晰度和可维护性,并将错误处理逻辑集中在异常处理代码中。这样的命名更符合Java的命名习惯,提高了代码的可读性,并且更容易与其他开发人员共享代码。这样可以避免依赖一个布尔类型的字段来判断是否出现问题,而是通过异常来明确地表示错误的发生。原创 2023-06-20 17:27:25 · 605 阅读 · 0 评论 -
若依源码解析:代码生成ruoyi-generator
若依的代码生成器模块(ruoyi-generator)可以根据数据库表的设计信息和配置的模板,自动生成相应的Java代码文件。代码生成器使用Velocity作为模板引擎,根据模板文件中的占位符和变量替换规则,将元数据信息嵌入到生成的代码中,生成具体的代码文件。通过导入表结构和生成代码两个后端接口,实现了快速导入数据库表结构和生成代码的功能。原创 2023-05-29 09:49:25 · 10463 阅读 · 0 评论 -
Springboot中拦截器和过滤器的区别
虽然拦截器和过滤器的功能有些重叠,但它们的应用场景不同。拦截器用于拦截请求并执行某些任务,而过滤器用于过滤和修改请求或响应。原创 2023-05-30 09:28:30 · 1019 阅读 · 0 评论 -
若依源码解析:图片验证码生成
若依通过合理的验证码生成流程和相应的代码实现,为应用程序提供了生成图片验证码和基于数学运算的验证码文本的功能,以增加系统的安全性和防护能力。本文讨论了若依(Ruoyi)生成图片验证码的过程以及相关代码。首先,我们了解了生成图片验证码的基本步骤,包括生成随机字符串、创建图片对象、绘制背景和文本、添加干扰线等。接下来,我们分析了若依中的验证码生成控制器,它根据配置的验证码类型,在后台生成对应类型的验证码,并将验证码图片以Base64编码的形式返回给前端页面。原创 2023-05-28 11:20:03 · 3257 阅读 · 0 评论 -
面试官:java中Date与LocalDateTime的区别
本文探讨了Java中Date和两个日期和时间类的区别。Date是Java早期引入的日期和时间类,而是Java 8中引入的新日期和时间类。Date是可变类,容易引发线程安全问题,而是不可变类,更加可靠和可维护。Date考虑系统时区,而不带时区信息,如果需要处理时区,可以使用类。Date精确到毫秒级别,但设计存在问题,容易出错。提供了更好的精确度,可表示纳秒级别的时间。Date的API设计相对较旧,不够直观,部分方法已过时。的API设计更现代化、易于使用,并提供了方便的方法来处理日期和时间。原创 2023-05-16 10:59:29 · 3045 阅读 · 0 评论 -
准备了一些面试官常问的springboot问题,快来看看吧
本文主要介绍了如何在 Spring Boot 中实现常用的 Web 开发功能,包括 RESTful 接口、缓存、文件上传下载、定时任务和跨域处理。通过本文的学习,读者可以了解到 Spring Boot 的基本用法以及如何使用 Spring Boot 开发 Web 应用。本文提供了清晰的代码示例和详细的操作步骤,希望能够帮助读者更好地使用 Spring Boot 进行 Web 开发。} }以上是处理异常的几种方式,具体使用哪种方式需要根据实际情况进行选择。原创 2023-04-15 23:01:13 · 842 阅读 · 0 评论 -
面试官:Springboot中@Bean 与 @Component 的不同,以电商为例,说说他们的使用
Bean。原创 2023-03-13 17:02:22 · 569 阅读 · 0 评论 -
面试官:用电商系统为例介绍一下领域驱动设计DDD
领域驱动设计(Domain-driven Design,DDD)是一种软件设计方法,该方法的核心思想是将业务领域作为设计和开发的中心,强调对业务领域的深入理解、业务语言的建模以及领域对象的设计和实现。这样可以更好地将软件设计和业务需求紧密结合起来,从而提高软件的可维护性、可扩展性和可重用性,使得软件更加贴近业务需求。原创 2023-03-12 14:29:31 · 1660 阅读 · 0 评论 -
面试官:SpringBoot 在打包部署的时候打包成 jar 和 war 有什么不同?
在可执行jar中,Spring Boot会自动配置内嵌的Web服务器,将应用程序打包成一个独立的、可执行的jar文件,包含了应用程序及其所有依赖的库。war文件(Web Archive)是Web应用程序的打包格式,通常包含web.xml文件、JSP文件、Servlet类、HTML、JavaScript、CSS等文件和相关的配置文件和第三方库等。可执行JAR文件中的应用程序和内嵌的Web服务器共享同一个JVM进程,因此可以更好地控制应用程序的内存和CPU使用,从而获得更好的性能表现。原创 2023-03-12 13:44:38 · 1502 阅读 · 0 评论 -
面试官:如何提高MyBatis 进行批量插入的效率
可重复批量操作是一种特殊的批量操作模式,可以在多次执行相同 SQL 语句时,避免重复编译和解析 SQL 语句,从而提高效率。并且,查阅相关资料可知,values的增长与所需的解析时间,是呈指数型增长的。如果需要插入的数据量非常大,可以考虑使用多线程并发批量操作的方式,将数据分成多个批次进行插入。在进行批量插入时,建议使用 SQL 语句的 VALUES 关键字,将多个实体对象的值一次性插入到数据库中。可以考虑减少一条 insert 语句中 values 的个数,最好能达到上面曲线的最底部的值,使速度最快。原创 2023-03-12 13:20:28 · 1850 阅读 · 0 评论 -
解析@ControllerAdvice、@ExceptionHandler和@RestControllerAdvice在Spring中的应用:如何优雅地处理Spring 全局异常
本文探讨Spring框架中的@ControllerAdvice、@ExceptionHandler和@RestControllerAdvice三个关键注解的应用,这些注解可以帮助开发人员高效地处理应用程序中的异常情况。我们将详细讲解这些注解的用法和示例,并介绍如何通过它们来处理全局异常和控制器层面的异常。阅读本文,你将了解如何优雅地处理异常,提高应用程序的健壮性和稳定性。原创 2023-02-20 18:08:20 · 1015 阅读 · 0 评论 -
通过程序ssh远程调用shell文件出现nohup java -jar失败
由于我们有多台服务器,只有部分服务器会这样,对比了linux版本和jdk版本。测试下来,oracle jdk会有这种情况,而openjdk不会有这种情况。如果是一定要用oracle jdk,nohup java -jar …命令前,先执行了一把 source /etc/profile 即可。原创 2023-02-02 16:04:06 · 2453 阅读 · 3 评论 -
windows上mvn install:install-file 报:no POM in this directory
【代码】windows上mvn install:install-file 报:no POM in this directory。原创 2023-01-17 15:33:18 · 856 阅读 · 0 评论 -
CannotAcquireLockException处理
最近项目里面频繁报:CannotAcquireLockException。原创 2022-12-09 15:29:34 · 7886 阅读 · 0 评论 -
JAVA进程突然消失怎么办
综上所述,正确回答是。先翻dump文件,dump如果没有,翻hs_err_pid.log日志。如果还没有,翻内核日志。原创 2022-12-09 15:27:59 · 2095 阅读 · 0 评论 -
开源了一套wms系统,支持lodop和网页打印入库单、出库单。
若依wms是一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单。毫无保留给个人及企业免费使用。原创 2022-11-08 12:29:21 · 2249 阅读 · 1 评论 -
同一个Class中方法调用Spring事务不起作用
开发中避免不了会对同一个类里面的方法调用,比如有一个类Test,它的一个方法A,A再调用本类的方法B(不论方法B是用public还是private修饰),但方法A没有声明注解事务,而B方法有。则外部调用方法A之后,方法B的事务是不会起作用的。这也是经常犯错误的一个地方。这是由于使用Spring AOP代理造成的,因为只有当事务方法被当前类以外的代码调用时,才会由Spring生成的代理对象来管理。原创 2022-11-02 15:36:03 · 383 阅读 · 0 评论 -
因为一次服务器卡顿,再来好好理解Spring事务传播
在某天的一个下午,突然用户报系统使用特别卡顿。有些操作不能执行。查看数据库发现运行的线程数开始增加,每秒执行的事务次数也开始增加。数据库运行的线程数开始增加每秒执行的事务次数也开始增加。原创 2022-10-28 14:40:27 · 1170 阅读 · 0 评论 -
bug记录:spring手动事务没能关闭导致的系统崩溃
spring手动事务没能关闭,而spring默认的事务传播机制是:PROPAGATION_REQUIRED,支持当前事务;如果不存在,创建一个新的。导致后面的Spring事务都往这个事务里面去,还一直提交不了,导致系统崩溃。原创 2022-10-28 10:41:13 · 692 阅读 · 0 评论 -
解决MyBatis-Plus updateById方法更新不了空字符串或null
在用mybatis-plus封装的updateById方法来更新数据时,想把一个字段设置为null值,但是发现更新后数据没有为null还是原来的值,这是因为mybatis-plus在更新的时候做了null判断,默认不更新为null的传参。可以在配置文件中设置update-strategy为ignored来全局处理,也可以在字段上设置注解来单个处理:@TableField(updateStrategy = FieldStrategy.IGNORED)。原创 2022-09-16 20:38:04 · 6104 阅读 · 0 评论 -
记录最近两次java内存过高的分析
最近出现java程序突然挂了的情况,查看日志发现是内存突然暴增导致,于是使用jmap和jstack分析。原创 2022-09-01 14:43:25 · 759 阅读 · 0 评论