
java基础
文章平均质量分 72
java基础知识
酱学编程
系统架构师,软件设计师
展开
-
redis 延迟双删
延迟双删是一种折中方案,在保证数据一致性和系统性能之间取得平衡。实际应用中需结合业务需求选择策略,并通过监控和测试验证效果。当更新数据库时,如果未及时删除或更新缓存,可能导致后续读请求仍从缓存中读取旧数据,造成数据不一致。Redis延迟双删是一种用于解决。原创 2025-04-10 20:52:28 · 522 阅读 · 0 评论 -
java中的单元测试的使用以及原理
注解的核心原理是利用**Spring 框架和 Spring Boot 的自动配置机制,在测试类执行前启动一个 Spring 应用程序上下文,然后根据等注解将上下文中的 Bean 注入到测试类中。**这样做可以让你的测试代码方便地使用 Spring 管理的资源和服务,确保测试环境与实际应用环境的一致性,同时充分利用 Spring 的依赖注入功能,使测试更加方便和可靠。此外,你可以通过该注解的各种属性来进一步定制测试环境,以满足不同的测试需求,如测试不同的配置场景、不同的 Web 环境等。原创 2025-01-22 23:14:48 · 1592 阅读 · 0 评论 -
日志系统实践
Logback是一个功能强大且广泛使用的Java日志框架,用于控制Java应用中日志的输出格式、级别以及输出目标等方面。,说明在每条日志记录后面会添加换行符,使每条日志在控制台输出时各占一行,便于查看和区分不同的日志记录。及以上级别的日志输出到控制台,并且对日志的时间戳、JSON格式的具体样式等做了相应的规范设置。,也就是按照年-月-日 时:分:秒.毫秒这样精确到毫秒的格式来记录日志产生的时间。,则输出的JSON会有缩进等美化排版,方便查看,但会占用更多空间)。标签定义了时间戳的格式,设置为。原创 2025-01-14 23:02:02 · 820 阅读 · 0 评论 -
ES搜索原理
搜索引擎的检索过程是通过倒排索引来实现的,这个过程可以分为几个关键步骤,让我们逐步解析搜索引擎如何利用倒排索引进行检索,并强调倒排索引在快速定位相关文档方面的高效性。遍历每个文档,对于文档中的每个关键词,将其映射到文档的唯一标识符(文档ID)。遍历每个文档,对于文档中的每个关键词,将其映射到文档的唯一标识符(文档ID)。如果查询包含多个关键词,搜索引擎会对这些关键词的倒排列表进行交集操作,得到包含所有关键词的文档ID列表。将词语还原为其词干形式,去除词尾,以便将相关的词汇映射到同一词根,减少索引的大小。原创 2024-12-21 11:11:36 · 1208 阅读 · 0 评论 -
【java】全文索引,普通索引,以及ES搜索引擎组件的关系
MySQL 中的全文索引是一种特殊的索引类型,用于对文本列进行高效的全文搜索。基于相似度的查询倒排索引charvarchartextMATCHAGAINSTkeyword,会根据相关性对结果进行排序,相关性由多个因素决定,如关键词在文档中出现的次数、在索引列中的数量、多少个文档包含该关键词等。keyword1keyword2idCHARVARCHARTEXT=、<、>、INageLIKELIKEcontent普通索引的数据结构通常是B - 树(B - Tree)或者B + 树(B+ Tree全文索引。原创 2024-12-21 11:08:44 · 893 阅读 · 0 评论 -
【java】使用AOP做功能增强的实践
在 Spring AOP 中,切入点表达式不是一定要写的,具体取决于使用的方式。如果使用注解的方式,在某些情况下仍然可能需要写切入点表达式,或者至少需要理解其背后的原理。仅使用注解的情况当使用@Before@Around等通知注解,并结合自定义的注解(如前面提到的)来标记需要应用通知的方法时,可以不直接写切入点表达式。例如,,这里通过引用自定义注解作为切入点,而没有直接使用传统的切入点表达式语法。@Before:在目标方法执行之前执行通知逻辑。表示在。原创 2024-12-19 20:44:03 · 784 阅读 · 0 评论 -
【java】规则引擎
通过 Easy Rules 引入规则引擎的主要优点是解耦业务规则和代码逻辑无需修改代码,只需更新数据库中的规则即可。提供灵活、可扩展和可维护的方式处理复杂业务逻辑。Easy Rules 支持多种形式定义规则,这里以为例,使用 YAML 文件定义规则。原创 2024-12-19 20:36:31 · 307 阅读 · 0 评论 -
【java】spring中事件机制以及与MQ对比
Spring 事件机制是观察者模式的一种实现,支持事件的发布和订阅,解耦组件之间的逻辑。Spring 事件机制简单易用,适合单体应用内部的轻量级事件处理。更适合解耦应用内部的模块之间的业务逻辑。消息队列(MQ)功能强大,适合分布式、高并发和高可靠性场景。更适合跨系统通信、大规模消息传递以及严格的事务需求。选择使用哪种机制,应根据实际的业务场景需求进行权衡。原创 2024-12-19 20:30:52 · 1289 阅读 · 0 评论 -
【java】BIO,NIO,多路IO复用,AIO
BIO:适合连接数较少的场景。NIO:适用于中等并发的场景,提高了资源利用率。IO多路复用:适合大量并发连接的场景,特别是在服务器端。AIO:适用于高并发场景,真正实现了异步操作。选择哪种模型取决于具体的应用场景和需求。例如,对于需要处理大量并发连接的服务器,IO多路复用和异步I/O可能是更佳的选择。而对于简单的、单线程的应用,阻塞I/O可能就已经足够。原创 2024-07-24 23:06:12 · 1281 阅读 · 0 评论 -
【java基础】java中配置文件格式以及读取方式
在Java中,配置文件可以采用多种格式,每种格式都有其特定的使用场景和优势。原创 2024-07-24 00:04:57 · 671 阅读 · 0 评论 -
【java基础】spring中使用到的设计模式
通过这些设计模式的运用,Spring框架不仅提供了强大的功能,还保持了良好的可扩展性和可维护性。这些模式的选择和应用体现了Spring的设计哲学,即关注分离(Separation of Concerns)、松耦合(Loose Coupling)、依赖注入(Dependency Injection)和面向切面编程(AOP)。Spring框架在其设计和实现中使用了多种设计模式,这些模式帮助Spring框架保持灵活性、可扩展性和易于集成的特点。原创 2024-07-24 00:01:14 · 671 阅读 · 0 评论 -
【java基础】spring springMVC springboot 的区别
是一个全面的框架,提供了许多模块,涵盖了从数据访问到Web应用的各种功能。Spring MVC是 Spring Framework 的一部分,专注于Web应用的MVC模式实现。则是在 Spring Framework 上的一个进一步封装,提供了简化配置和快速启动的能力,特别适合于构建微服务。在实际开发中,Spring Boot 内部已经包含了 Spring Framework 和 Spring MVC 的功能,因此使用 Spring Boot 时,你几乎不需要单独配置或引入这两个框架。原创 2024-07-23 23:58:56 · 576 阅读 · 0 评论 -
【java基础】进程和线程的区别
线程(Thread)和进程(Process)是操作系统中管理和调度的基本单位,它们在概念上有显著的区别,但又紧密相关。原创 2024-07-23 23:57:03 · 244 阅读 · 0 评论 -
【java基础】线程状态转化
在Java中,线程有六种基本状态,这些状态反映了线程在其生命周期中的不同阶段。线程的状态转换是由操作系统和JVM(Java虚拟机)调度机制共同控制的。值得注意的是,Java线程的状态转换是高度依赖于JVM和操作系统调度器的,因此,除了通过调用。等方法外,开发者通常无法直接控制状态转换的具体时机。原创 2024-07-23 23:54:53 · 262 阅读 · 0 评论 -
【java基础】创建线程的主要方式
这种方式的好处是可以避免由于Java的单继承限制带来的问题,因为你可以同时实现多个接口。每种方法都有其适用场景,选择合适的方式取决于你的具体需求,如是否需要返回结果、是否需要避免类的单继承限制等。,它们允许你创建线程池来管理线程的生命周期,这对于处理大量并发任务非常有用。此外,现代Java开发中,创建线程的另一种常见方式是使用。方法可以返回一个结果,并且它可以抛出异常。这是最传统的创建线程的方式。如果你想从线程中返回一个结果,可以使用。方法中定义线程的行为。类的构造函数,创建并启动线程。原创 2024-07-23 23:53:25 · 960 阅读 · 0 评论 -
Mybatis-plus分页插件PageHelper的两种不同使用方式
最近在写需求的过程中接触到许多的分页,但是对于不同情况下会有不同的分页方法选择,由于目前使用得比较多的是mybatis-plus里面的分页插件,因此通过本文详细了解一下pageHelper的使用。分页最终都是在sql中通过limit完成,原创 2024-01-03 23:48:26 · 6616 阅读 · 0 评论 -
JDK序列化与JSON序列化
在实际开发中,根据需求和场景的不同,开发人员可以选择适合的序列化方式。JDK序列化适用于Java内部数据传输和持久化存储,而JSON序列化则更适合于跨平台数据交换和前后端数据交互。选择适合的序列化方式是至关重要的,这有助于提高应用程序的效率和可扩展性。原创 2023-12-30 22:34:38 · 1128 阅读 · 0 评论 -
了解OAuth 2.0以及社交登录认证授权流程
目前在写一个电商项目,可以通过手机号进行注册登录,为了方便用户使用本平台的系统,引入社交登录功能,这里使用的是gittee。当谈到网络安全和身份验证时,OAuth 2.0(开放授权 2.0)是一个重要的协议。它是一种用于授权的开放标准,允许用户授权第三方应用程序访问其受保护的资源,而无需直接分享其凭证(如用户名和密码)。OAuth 2.0 在如今的互联网世界中广泛应用,提供了一种安全、灵活和标准化的方式,以确保用户数据和隐私得到保护。原创 2023-12-25 22:59:17 · 1177 阅读 · 0 评论 -
文件拷贝常用方法
文件拷贝是java里面比较基础的知识,在面试中面试官也经常要求进行手写,本人最近就在面试中遇到,写得不是很好,于是总结了一下java文件复制的方法。原创 2023-03-17 15:45:09 · 181 阅读 · 1 评论 -
Java 中 String 类的常用 API 方法
/ 输出:13(最后一次出现的位置)lastIndexOf() 方法返回指定字符或子串最后一次出现的位置索引。如果没有找到指定字符或子串,则返回 -1。原创 2023-12-14 13:09:13 · 1182 阅读 · 1 评论