自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 内存操作和内存屏障

在 Java8 中,引入了 3 个内存屏障的函数,它屏蔽了操作系统底层的差异,允许在代码中定义、并统一由 JVM 来生成内存屏障指令,来实现内存屏障的功能。)的小伙伴们应该清楚,运行中的线程不是直接读取主内存中的变量的,只能操作自己工作内存中的变量,然后同步到主内存中,并且线程的工作内存是不能共享的。如果你是一个写过 C 或者 C++ 的程序员,一定对内存操作不会陌生,而在 Java 中是不允许直接对内存进行操作的,对象内存的分配和回收都是由 JVM 自己实现的。基于读内存屏障,我们也能实现相同的功能。

2024-10-30 19:41:54 1063

原创 Shiro会话管理

Shiro是一个强大且易于使用的Java安全框架,它提供了认证、授权、加密和会话管理等多种安全功能。

2024-10-29 07:57:44 822

原创 Java 值传递详解

通过上面例子,我们已经知道了一个方法不能修改一个基本数据类型的参数,而对象引用作为参数就不一样,请看案例 2。引用传递看似很好,能在方法内就直接把实参的值修改了,但是,为什么 Java 不引入引用传递呢?看到这里,相信你已经知道了 Java 中只有值传递,是没有引用传递的。实际上,并不是的,这里传递的还是值,不过,这个值是实参的地址罢了!函数中对形参的修改,可以影响到实参的值。的副本,副本的内容无论怎么修改,都不会影响到原件本身。的互换只是拷贝的两个地址的互换罢了,并不会影响到实参。

2024-10-28 18:44:48 607

原创 Maven最佳实践

通过遵循这些最佳实践和技巧,我们可以优化 Maven 的使用并改善我们的 Java 开发体验。Maven Wrapper 可以确保构建过程使用正确的 Maven 版本,非常方便。Maven Wrapper 是一个用于管理和使用 Maven 的工具,它允许在没有预先安装 Maven 的情况下运行和构建 Maven 项目。Maven Wrapper 是一种简单的方法,可以确保 Maven 构建的用户拥有运行 Maven 构建所需的一切。这样,Maven 就会使用 Java8 的编译器来编译你的项目。

2024-10-25 18:58:02 927

原创 Gradle核心概念总结

Groovy 是运行在 JVM 上的脚本语言,是基于 Java 扩展的动态语言,它的语法和 Java 非常的相似,可以使用 Java 的类库。Gradle 的构建是基于 Task 进行的,当你运行项目的时候,实际就是在执行了一系列的 Task 比如编译 Java 源码的 Task、生成 jar 文件的 Task。我们可以称 Gradle Wrapper 为 Gradle 包装器,它将 Gradle 再次包装,让所有的 Gradle 构建方法在 Gradle 包装器的帮助下运行。

2024-10-24 19:23:31 785

原创 Shiro授权(Authotization)总结

Shiro作为一个功能强大的Java安全框架,在授权方面提供了丰富的功能和灵活的配置选项。

2024-10-24 08:50:48 418

原创 Git核心概念总结

分布式版本控制系统可以不用联网就可以工作,因为每个人的电脑上都是完整的版本库,当你修改了某个文件后,你只需要将自己的修改推送给别人就可以了。有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。集中化的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

2024-10-23 20:01:13 940

原创 Maven核心概念总结

依赖调解第一原则不能解决所有问题,比如这样的依赖关系:A->B->Y(1.0)、A-> C->Y(2.0),Y(1.0)和 Y(2.0)的依赖路径长度是一样的,都为 2。我们保留了 1.5 版本的 X,但是这个版本的 X 删除了 1.0 版本中的某些类。如果高版本修改了低版本的一些类或者方法的话,这个时候就能直接保留高版本了,而是应该考虑优化上层依赖,比如升级上层依赖的版本。这个网站上找到几乎所有可用的构件,如果你的项目使用的是 Maven 作为构建工具,那这个网站你一定会经常接触。不过,你也可以发现。

2024-10-22 18:42:05 1051

原创 MySQL索引详解

MySQL 的 InnoDB 存储引擎不直接支持常规的哈希索引,但是,InnoDB 存储引擎中存在一种特殊的“自适应哈希索引”(Adaptive Hash Index),自适应哈希索引并不是传统意义上的纯哈希索引,而是结合了 B+Tree 和哈希索引的特点,以便更好地适应实际应用中的数据访问模式和性能需求。正因如此,红黑树的查询效率稍有下降,因为红黑树的平衡性相对较弱,可能会导致树的高度较高,这可能会导致一些数据需要进行多次磁盘 IO 操作才能查询到,这也是 MySQL 没有选择红黑树的主要原因。

2024-10-21 19:27:48 955

原创 MySQL日期类型选择建议

时间戳的定义是从一个基准时间开始算起,这个基准时间是「1970-1-1 00:00:00 +0:00」,从这个时间开始,用整数表示,以秒计时,随着时间的流逝这个时间整数不断增加。这样一来,我只需要一个数值,就可以完美地表示时间了,而且这个数值是一个绝对数值,即无论的身处地球的任何角落,这个表示时间的时间戳,都是一样的,生成的数值都是一样的,并且没有时区的概念,所以在系统的中时间的传输中,都不需要进行额外的转换了,只有在显示给用户的时候,才转换为字符串格式的本地时间。毕竟简单直白,容易上手。

2024-10-17 19:49:56 767

原创 Redis内存碎片详解

当程序申请的内存最接近某个固定值时,jemalloc 会给它分配相应大小的空间,就比如说程序需要申请 17 字节的内存,jemalloc 会直接给它分配 32 字节的内存,这样会导致有 15 字节内存的浪费。举个例子:操作系统为你分配了 32 字节的连续内存空间,而你存储数据实际只需要使用 24 字节内存空间,那这多余出来的 8 字节内存空间如果后续没办法再被分配存储其他数据的话,就可以被称为内存碎片。值就是内存碎片的大小!方法(Redis 自己实现的内存分配方法)进行内存分配的时候,除了要分配。

2024-10-16 19:36:29 1045

原创 Redis持久化机制详解

具体方法是采用 base(全量数据)+inc(增量数据)独立文件存储的方式,彻底解决内存和 IO 资源的浪费,同时也支持对历史 AOF 文件的保存管理,结合 AOF 文件中的时间信息还可以实现 PITR 按时间点恢复(阿里云企业版 Tair 已支持),这进一步增强了 Redis 的数据可靠性,满足用户数据回档等需求。的数字来验证 AOF 文件。因此,Redis 在启动时会比较计算出的校验和与文件末尾保存的校验和(计算的时候会把最后一行保存校验和的内容给忽略点),从而判断 AOF 文件是否完整。

2024-10-14 20:02:17 923

原创 3种常用的缓存读写策略详解

综上所述,缓存读写是缓存技术中的重要组成部分,通过合理的读写策略选择,可以提高系统的性能和可靠性。

2024-10-11 16:57:37 1086

原创 Redis 5 种基本数据类型的后三个详解

你可以基于 Set 轻易实现交集、并集、差集的操作,比如你可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。当你需要存储一个列表数据,又不希望出现重复数据时,Set 是一个很好的选择,并且 Set 提供了判断某个元素是否在一个 Set 集合内的重要接口,这个也是 List 所不能提供的。Redis 中的 Hash 是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接修改这个对象中的某些字段的值。比如优先级任务队列。

2024-10-10 21:05:35 919

原创 Redis 5 种基本数据类型的前两个详解

这 5 种数据类型是直接提供给用户使用的,是数据的保存形式,其底层实现主要依赖这 8 种数据结构:简单动态字符串(SDS)、LinkedList(双向链表)、Dict(哈希表/字典)、SkipList(跳跃表)、Intset(整数集合)、ZipList(压缩列表)、QuickList(快速列表)。String 是一种二进制安全的数据类型,可以用来存储任何类型的数据比如字符串、整数、浮点数、图片(图片的 base64 编码或者解码或者图片的路径)、序列化后的对象。Redis 的 List 的实现为一个。

2024-10-09 19:59:26 1272

原创 Shiro认证(Authentication)

Apache Shiro是一个强大且易用的Java安全框架,提供了认证、授权、会话管理、加密等功能。它不仅适用于JavaSE环境,也适用于JavaEE环境。Shiro的核心功能点包括Authentication(认证)、Authorization(授权)、Session Manager(会话管理)和Cryptography(加密),这些被Shiro框架的开发团队称为应用安全的四大基石。Shiro的认证功能是指身份验证的过程,即证明一个用户实际上是不是他们所说的他们是谁。

2024-10-08 08:32:11 968

原创 JPA+Thymeleaf增删改查

通过以上总结,你可以更好地理解如何使用JPA和Thymeleaf在Web应用中实现CRUD操作,并遵循最佳实践来编写高质量、可维护的代码。

2024-09-26 08:24:36 474

原创 Web开发:Thymeleaf模板引擎

Thymeleaf是一个流行的Java模板引擎,广泛用于Web开发中,特别是与Spring框架结合使用时。它提供了丰富的标签库和表达式语言,使得在HTML、XML、JavaScript、CSS等文件中嵌入动态内容变得简单而直观。

2024-09-21 08:22:28 522

原创 Web开发:基础Web开发的支持

在Web开发中,RESTful架构通过HTTP协议的原生方法(如GET、PUT、POST、DELETE)来实现对资源的操作,从而简化了Web服务的开发和使用。测试可以涉及多个方面,包括功能测试、界面测试、性能测试、安全性测试等。综上所述,基础Web开发的支持涵盖了前端开发、后端开发、数据库管理、数据交换格式、RESTful架构、测试以及JSP整合等多个方面。此外,前端开发还常使用各种框架和库,如React.js、Angular、Vue.js等,它们提供了组件化、响应式等特性,简化了复杂的界面开发。

2024-09-14 08:32:42 482

原创 数据访问:MyBatis-Plus&Druid数据源

MyBatis-Plus 和 Druid 是 Java 开发中非常实用的两个库,它们分别解决了数据库操作和数据库连接池管理的问题。通过合理的配置和使用,可以极大地提高开发效率和系统性能。

2024-09-11 15:28:19 446

原创 数据访问:JPA关联&MyBatis

在Java开发中,数据访问层(DAO层)是连接应用程序与数据库的关键部分。JPA(Java Persistence API)和MyBatis是两种流行的数据访问技术,它们各自有不同的特点和适用场景。下面将分别介绍JPA关联映射和MyBatis的基本使用,并比较它们之间的区别。

2024-09-05 08:37:20 329

原创 【无标题】

通过JPA注解定义实体类,映射到数据库中的表。

2024-09-03 08:22:29 343

原创 第1章 Spring Boot入门

Spring Boot是由Pivotal团队提供的全新框架,其设计初衷是为了简化Spring应用的初始搭建以及开发过程。它使用了特定的配置方式,使得开发人员不再需要定义样板配置。Spring Boot本身并不提供Spring框架的核心特性及扩展功能,而是用于快速敏捷地开发新一代基于Spring框架的应用程序。Spring Boot作为Spring框架的延伸和扩展,为开发者提供了更加便捷和高效的开发方式。通过Spring Boot,开发者可以更加专注于业务逻辑的实现,而无需过多关注框架的配置和整合。

2024-08-29 08:22:40 569

原创 第十二章 Spring MVC 框架扩展和SSM框架整合

SSM框架是Spring、Spring MVC和MyBatis的整合,它结合了Spring的IoC和AOP特性、Spring MVC的Web处理能力以及MyBatis的数据持久化能力。通过以上步骤,可以成功地将Spring、Spring MVC和MyBatis整合在一起,构建出高效、稳定的应用程序。在实际开发中,还需要根据具体需求进行适当的扩展和定制。Spring MVC框架提供了丰富的扩展点,允许开发者根据具体需求进行定制和扩展。

2024-08-09 14:23:53 399

原创 第11章 框架升级之数据校验及文件上传

在SpringMVC框架升级过程中,数据校验和文件上传是两个重要的功能点,它们分别用于提升用户输入数据的准确性和实现文件上传功能。

2024-08-05 08:45:53 540

原创 第十章 框架升级之单例模式及统一异常处理

单例模式是一种常用的软件设计模式,其主要目的是确保一个类仅有一个实例,并提供一个全局访问点来获取这个实例。这种设计模式在配置文件读取、数据库连接、线程池等场景中非常有用。

2024-08-05 08:43:25 517

原创 第九章 SpringMVC框架

定义SpringMVC是Spring框架提供的基于MVC架构并继承了Servlet API的Web开发框架。它遵循MVC模式的原则,提供了一套完整的开发流程和特性。MVC(Model-View-Controller)设计模式是一种将应用程序的逻辑分离成三个独立组件的方法:模型(Model)、视图(View)和控制器(Controller)。特点松耦合:SpringMVC采用松耦合的设计模式,允许开发者使用不同的组件,如视图解析器、数据绑定器等,实现高度灵活的Web开发。可扩展性。

2024-08-05 08:41:38 953

原创 第八章 Spring框架配置扩展

通过利用这些配置扩展机制,你可以高度定制和扩展Spring框架的行为,以满足你的特定需求。无论是通过XML、Java配置还是其他方式,Spring都提供了丰富的选项来配置和管理你的应用程序。

2024-07-24 20:25:21 274

原创 第七章 Spring框架整合MyBatis框架

Spring框架整合MyBatis框架是一个常见的需求,特别是在Java企业级应用中。这种整合可以充分利用Spring的依赖注入(IoC)和面向切面编程(AOP)功能,以及MyBatis在数据持久化方面的优势。

2024-07-24 20:20:13 354

原创 第六章 Spring框架深入学习

Spring框架是一个开放源代码的Java应用程序框架,由Rod Johnson发起,是一个轻量级的容器(lightweight container),主要用于管理bean的生命周期。Spring解决了开发者在Java EE开发中遇到的许多常见问题,提供了功能强大的IOC(控制反转)、AOP(面向切面编程)及Web MVC等功能。

2024-07-24 20:14:49 806

原创 第五章初识Spring框架

1. 定义与起源定义:Spring框架是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,它提供了一整套解决方案,帮助开发者更加轻松地创建和管理企业级应用程序。起源:Spring框架最初由Rod Johnson在2002年开发,目的是为了解决传统Java EE开发框架的问题,特别是EJB的复杂性和低效性。2. 主要特点轻量级:Spring框架的轻量级体现在其大小和开销上,完整的Spring框架可以在一个大小只有几MB的JAR文件中发布,且所需的处理开销也微不足道。

2024-07-15 17:38:47 519

原创 第四章Redis

Redis 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与位图(bitmaps)、超日志(hyperloglogs)和地理空间(geospatial)索引半径查询。Redis 具备丰富的特性集,这些特性使得 Redis 能够应对各种用例场景。

2024-07-12 15:08:19 762

原创 第三章设计模式

1.设计模式是人们在长期的软件开发中对一些经验的总结,是对某些特定问题经过实践检验的特定解决方法。2.设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术方案总结成设计模式,也会使其他开发者更加容易理解其设计思路。设计模式是可复用的面向对象软件的基础。帮助开发者做出有利于系统复用的选择,避免损害系统复用性的设计。3.目前所说的设计模式通常是指GoF设计模式。

2024-07-08 15:47:46 956

原创 第二章 XML

在实际应用中,经常需要对XML文档进行各种操作。

2024-07-01 15:03:13 1307

原创 第一章 反射

在计算机领域,反射指一种能力,能够自描述和自控制,即运行状态中,动态获取类信息及动态调用实例方法的能力。

2024-07-01 10:06:46 1247

原创 Mybatis框架多态SQL

①.首先在接口里面创建一个方法。

2024-06-26 20:53:20 1134

原创 第二章SQL映射文件详细

①mapper:SQL映射文件的根元素。只有一个属性namespace,用于区分不同的mapper,必须全局唯一。②cache:为给定命名空间中的配置缓存。③cache-ref:引用其他命名空间中的缓存配置。④resultMap:用来描述查询结果集中的字段和java实体类属性的对应关系。⑤sql:定义可重用的SQL语句块.可以在其他语句映射中引用,提高编写和维护SQL语句的效率。⑥insert:映射insert语句。⑦update:映射update语句。⑧delete:映射delete语句。

2024-06-21 20:21:56 316

原创 第一章初识MyBatis框架

初识MyBatis框架总结

2024-06-19 19:23:03 274 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除