- 博客(65)
- 收藏
- 关注
原创 SSM项目服务器部署流程
服务器部署和本地部署区别不太大 本地可能使用的是Windows系统 而服务器上一般使用的都是Linux系统,这里来详细操作一下SSM项目的服务器部署流程。
2026-01-09 16:24:35
459
原创 虚拟机加载机制
Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。这个过程就是虚拟机的类加载机制。类加载器不仅仅是加载代码的工具,更是Java实现类隔离、层次划分和动态热部署的基石。双亲委派模型通过“向上委派”保证了Java核心库的安全与统一,而通过打破这一模型(如SPI和OSGi),Java获得了强大的灵活性和动态扩展能力。
2026-01-09 15:52:11
479
原创 ssm项目本地部署
打包完成后会出现一个target文件夹 点击进去 里面会有一个war包一般是(项目.war)这我我修改了打包的名称 在build标签里面 添加一个<finalName>标签进行配置。虽然只启动一个黑窗口(JVM进程),但配置容易出错,且内存共享,一个项目内存溢出(OOM),两个端口都会挂掉。:所有 Web 应用的默认配置(比如定义了默认的欢迎页 index.html,定义了 session 过期时间)。:你有两个独立的 Tomcat 文件夹,分别配置不同的端口,分别启动。这是最“笨”但最有效的方法。
2026-01-08 22:43:40
356
原创 JVM-1
1.类加载子系统 (Class Loader Subsystem)对应图中左上角的黄色方框。.class这是 JVM 的内存部分,也是面试最常问的地方。根据图中颜色和分布,我们可以分为两类:A. 线程共享区域(图中绿色部分)B. 线程私有区域(图中红色部分)对应图中底部的蓝色长方框。对应图中橙色部分。什么是JVM。
2025-12-30 00:14:22
632
原创 JVM 高频面试题全解析
JMM 是一组规范,定义了多线程之间共享变量的可见性以及如何在工作内存和主内存之间同步数据。内存结构是物理/逻辑上的数据存储划分(堆、栈等);JMM是并发编程相关的抽象模型(原子性、可见性、有序性)。解释volatile关键字在 JMM 中的作用(保证可见性、禁止指令重排)以及 Happens-Before 原则。核心回答:当一个类加载器收到加载请求时,它首先不会自己去尝试加载,而是把请求委派给父类加载器,依次向上,直到启动类加载器。只有当父类加载器反馈无法完成加载时,子类加载器才会尝试自己加载。
2025-12-29 23:14:40
624
原创 HashMap详解
性能优化:如果 $n$ 是 2 的幂,那么 $(n-1)$ 的二进制全为 1(例如 $16-1=15$,二进制1111位运算的效率远高于取模运算。分布均匀:当 $(n-1)$ 为全 1 时,进行运算能最大程度保留hash值的位特征。如果 $n$ 不是 2 的幂,$(n-1)$ 某些位为 0,会导致数组中的某些位置永远无法被随机存取,造成严重的空间浪费和冲突。
2025-12-28 20:33:00
587
原创 transferManager为什么在工作中禁止使用 (怎么进行优化 怎么避免多线程的堵塞)
永远不要使用默认的线程池。为传输任务创建一个独立的。
2025-12-25 23:20:26
574
原创 java中的反射详解
反射是Java的核心特性之一,它允许程序在运行状态中,动态的获取任何一个类的所有属性和方法,并能调用这些属性和方法。这种动态性使得反射成为框架开发(如 Spring、MyBatis)、注解处理、动态代理等场景的基石通常情况下,我们是“通过类创建对象”,而反射是“通过对象反向获取类的信息”。
2025-12-25 23:19:16
870
原创 java中的代理详解
代理模式(Proxy Pattern)为其他对象提供一种代理以控制对这个对象的访问。简单来说,你不再直接调用“目标对象”,而是调用“代理对象”。代理对象就像一个“中间商”,它可以在不修改目标对象代码的前提下,为目标对象增强功能(如加日志、权限控制、事务管理等)。
2025-12-25 23:17:22
567
原创 ==和equals的区别和使用场景
(这是一个强制契约,否则 HashMap 会失效)。(如果 inputName 为 null 会报错)因为它们没有对象概念,直接存值,所以只能用。只要两个字符串字符序列相同,结果就是。验证两个引用是否指向同一个单例实例。相同,我们就认为他们是同一个用户。等集合时会产生不可预期的 Bug。比较字符串常量时,把常量写在前面。不仅性能高,而且是线程安全的。在逻辑上是否代表相同的信息。主要用于判断两个变量是否。来判断元素是否重复。,否则你的对象在放入。,这是最常见的用法。
2025-12-25 11:08:15
248
原创 jdk1.8相比之前新增的语法
这些特性显著提升了 Java 的表达能力和开发效率,特别是 Lambda 表达式和 Stream API 为函数式编程风格提供了支持。
2025-11-25 15:11:25
163
原创 过滤器和拦截器的区别以及具体实现
特性Servlet 过滤器 (Filter)Spring MVC 拦截器 (Interceptor) 的一部分,是标准。 的一部分,是 Spring 特有的。不依赖任何框架,只要是 Web 应用就能用(即使不是 Spring)。完全依赖 Spring MVC 框架和 Spring 容器。非常广。过滤所有进入容器的请求,包括但不限于:静态资源(JS/CSS/图片)、JSP、以及 Spring MVC 控制的 Controller 等。较窄。,即只针对 Controller 的请求。
2025-11-25 11:54:28
454
原创 Restful风格总结 以及 jsp中表单发送put请求解决方案
设计理念差异GET 请求:遵循传统 MVC 模式,主要用于数据查询和页面导航,天然支持页面跳转和视图渲染PUT 请求:遵循 RESTful 风格,主要用于资源更新,默认期望返回操作结果(数据)而非页面PUT请求在Spring MVC中默认被当作RESTful API请求处理,期望返回数据而非页面跳转。而GET请求默认支持传统的MVC页面跳转模式。
2025-11-25 10:32:36
701
原创 文件上传-java
这是目前 Java Web 开发中最主流、最推荐的方式。Spring 对文件上传做了高度封装,使用起来非常简洁。这是最常见的场景,用户通过浏览器表单上传文件到你的 Java Web 应用。: 功能相对基础,需要自己处理文件名冲突、文件大小限制(需在。在 Controller 的方法参数中直接使用。这是最基础、最直接的方式,无需任何第三方库。在 Spring 配置中定义一个。: 标准 API,无需额外依赖。在 Servlet 的。将文件保存到服务器磁盘。
2025-11-24 16:46:12
244
原创 springMVC(3)学习
SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,拦截器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器就会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有区别 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。 拦截器是SpringMVC框架独有的。 过滤器配置了/*,可以拦截任何资源 拦截器只会对控制器中的方法进行拦截拦截器也是AOP思想的一种实现方式。
2025-11-15 22:38:43
760
1
原创 SpringMVC(2)学习
第一种方法使用@DateTimeForemat注解的方法@Data// 生日// 2000-1-1格式的日期不能进行转换了 开发使用比较多 比较简单// 引用对象// list集合然后修改配置文件Spring.xml添加下面代码是 Spring MVC 中的一个重要配置,它的作用是启用 Spring MVC 的默认配置并注册所需的组件。如果不添加这个配置注册下面三个组件注册核心组件处理器映射器处理器适配器异常解析器功能是否受影响影响程度注解完全失效严重注解。
2025-11-14 20:59:15
600
1
原创 SpringMVC(1)学习
是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。SpringMVC在三层架构中的位置。
2025-11-13 17:32:02
484
原创 Spring中的IOC容器和DI注入
单例模式是oop(面向对象编程)语言的一种概念 顾名思义 就是一个类只能有一个实例化对象单例模式分为两种:1 懒汉式加载 2 饿汉式加载 他们又分别有传统实现和优化的推荐实现spring框架创建对象就是单例模式IOC – Inverse of Control,控制反转,将对象的创建权力反转给Spring框架!!控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。解决问题:使用IOC可以解决的程序耦合性高的问题。
2025-11-02 14:17:43
904
原创 创建对象中的单例模式
单例模式是oop(面向对象编程)语言的一种概念 顾名思义 就是一个类只能有一个实例化对象单例模式分为两种:1 懒汉式加载 2 饿汉式加载 他们又分别有传统实现和优化的推荐实现spring框架创建对象就是单例模式。
2025-11-02 14:15:46
996
原创 mysql常识和jdbc工具类的进化以及连接池思想
总结: 原来:需要自己创建连接和销毁连接,这样是比较消耗时间,资源的 现在:有一些连接池 已经创建好了一些连接 现在可以从连接池中获取到 这样就节省创建时间 直接使用这些连接 归还到连接池中 节省创建连接与释放连接 性能消耗 连接池中连接起到复用的作用 提升程序性能连接池(池参数,如果不指定,有默认值)初始大小:10个* 最小空闲连接数:3个* 增量:一次创建的最小单位(5个)* 最大空闲连接数:12个* 最大连接数:20个* 最大的等待时间:1000毫秒。
2025-11-02 14:13:47
1095
原创 ssm面试题梳理
核心结论一级缓存会话级缓存,默认开启,作用域为同一个SqlSession。在同一个会话中,相同的查询只会执行一次 SQL。二级缓存应用级缓存,需要手动开启,作用域为同一个namespace(Mapper 接口)。跨SqlSession共享缓存数据。为了更直观地理解这两级缓存的作用域与生命周期,下图展示了它们的核心区别:特性一级缓存二级缓存作用域SqlSessionMappernamespace生命周期会话结束即销毁与应用生命周期相同(可配置)默认状态开启关闭,需手动配置共享性不能跨会话共享。
2025-11-01 23:28:27
608
原创 最细Maven教程以及Maven私服搭建
里声明需要什么“零件”(比如:“我需要一个版本为 5.1.47 的 MySQL 驱动包”),Maven 就会自动从中央仓库(可以理解为一个巨大的网上图书馆)帮你下载,并且会把它依赖的其他“零件”也一并下载好。此用户名和密码用于私服校验,因为私服需要知道上传的账号和密码是否和私服中的账号和密码一致。对于更大的项目,我们可能需要创建自己的库并在不同的部分使用它的项目。<optional> 这样你的A项目在导入B项目的时候 不会在导入C项目。但B项目依赖C项目 你的A项目在依赖B项目是也会导入C项目。
2025-10-26 17:55:07
871
原创 gitlab搭建教程以及操作
环境 centos虚拟机软件 gitlab-ce-10.8.4GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
2025-10-20 23:21:41
952
原创 git中tag标签远程管理
新建标签,标签有两种:轻量级标签(lightweight) 与带有附注标签(annotated)git push origin --delete tag 标签1 标签2…创建标签记在HEAD指针所指向的提交点创建tag(就是当前所在分支)git push origin :refs/tags/标签名。把刚才创建的标签 推送到远程。可以把所有标签推送到远程。创建一个带有附注的标签。创建一个轻量级标签。
2025-10-20 22:54:01
322
原创 git推送本地仓库到远程 以及 模拟多人协作
此时我们提交我们的修改后在查看git status,我们可以发现我们的本地master分支领先了1次提交。从分支的详细信息中我们可以看到远程分支的提交版本和master的提交版本不同,本地领先了。注意如果在创建仓库的时候同时创建了.gitignore文件以及readme文件需要先拉去远程仓库的两个文件在进行推送。发现克隆下来的仓库和远程仓库一致 进入仓库可以看到.git的配置文件和远程代码。这时我们可以创建本地的develop分支,此刻我们也可以修改本地分支的名字。
2025-10-20 22:40:53
1062
原创 git连接远程仓库并拉去推送以及克隆命令
Git是一个分布式版本控制系统,远程仓库则是存储在服务器上的代码仓库,常见的远程仓库平台有GitHub、GitLab、Gitee等。通过Git与远程仓库的交互,我们可以实现团队协作和代码备份。通过本文的学习,你应该已经了解了Git连接远程仓库、克隆、拉取和推送的完整流程。这些是Git使用中最基础也是最重要的操作,掌握它们将为你的开发工作打下坚实基础。记得多实践,熟能生巧!
2025-10-18 20:46:57
1099
原创 git分支管理介绍和stash命令
git的默认分支就是master。你所做的commit会在master分支上自动移动。在多次提交操作之后,master分支指向最后那个commit object(提交对象链),master跟其他分支没有区别,但是每个仓库几乎都有一个master,是因为 git init 默认创建他。
2025-10-18 20:18:36
310
原创 sql中连接方式
在sql中,主要有五种连接类型,每种连接在处理表之间的关系时有不同的行为。一下是详细的解释和比较。1. INNER JOIN(内连接) 直接join默认也是内连接描述:返回两个表中匹配的行结果:只返回两个表中共用的记录图示:两个集合的交集部分2. LEFT JOIN (左连接)描述:返回左表的所有行+右表的匹配行结果:左表所有记录+匹配的右表记录(无匹配则为NULL)图示:左表全集+右表交集部分3. RIGHT JOIN(右连接)描述:返回右表的所有行+左表的匹配行。
2025-10-16 16:02:26
500
原创 git简介与常见命令
简介git特点git命令git配置.gitignore文件Git是目前世界上最先进的的分布式控制系统(没有之一)。很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。
2025-10-13 20:04:16
805
原创 【Spring MVC终极指南】一文掌握请求处理与响应!从Servlet原生方式到SpringMVC高效优雅写法
方式优点缺点适用场景灵活,可传数据代码稍显繁琐传统Spring MVC项目原生Servlet API灵活性极高代码繁琐,耦合度高需要精细控制请求响应的场景Spring MVC简化方式代码简洁,优雅功能相对受限大多数Spring MVC项目JSON处理方便需要配置转换器RESTful API开发通过本文的学习,相信大家对Spring MVC的各种请求处理方式有了更深入的理解。从原生Servlet API到Spring MVC的高级特性,我们可以看到框架的演进带来的便利性。
2025-09-24 10:04:37
480
原创 Spring MVC入门到精通:手把手带你实现高效Web开发
通过本文的学习,你应该掌握了:Spring MVC环境搭建和基本配置控制器的各种写法与参数绑定方式Thymeleaf视图解析器的整合与使用表单数据绑定的实战技巧常见问题的解决方案Spring MVC通过注解驱动的方式,极大简化了Web开发流程。掌握好参数绑定和视图解析这两个核心功能,就能够应对大多数Web开发场景。
2025-09-21 14:23:11
289
原创 【Spring AOP】保姆级教程:一文搞懂两种方式实现AOP切面编程,附完整代码示例!
特性基于XML配置基于注解配置优点配置与代码分离,结构清晰配置简单快捷,代码直观缺点编写繁琐,表达式易写错耦合性稍高,需修改源码适用场景大型项目,需要集中管理配置中小型项目,快速开发以上就是Spring AOP的两种实战方式。建议大家亲手敲一遍代码,感受一下不同通知的执行顺序和差异。AOP是解耦业务逻辑与通用功能(日志、事务、安全等)的利器,用好了能让你的代码level提升一个档次!
2025-09-20 21:46:27
298
原创 Spring注解驱动开发:从XML到注解的完美蜕变
传统的Spring框架依赖XML配置文件来管理Bean和依赖关系,但随着项目规模扩大,XML配置变得臃肿且难以维护。Spring 2.5引入的注解驱动开发彻底改变了这一局面,让代码更加简洁、直观。本文将基于实际代码示例,带你全面掌握Spring注解开发的核心技巧!Spring注解驱动开发带来了巨大的便利:简化配置:告别繁琐的XML配置提高可读性:注解与代码在一起,直观清晰增强可维护性:修改方便,不易出错促进解耦:依赖注入彻底解耦组件间的依赖关系。
2025-09-20 15:16:25
535
原创 【MyBatis保姆级教程】从CRUD到高级查询,一文搞定企业级开发!
特性#{}${}SQL注入安全,预编译不安全,直接拼接参数类型任意简单类型只能用value或@Param指定字符串处理自动加引号需要手动加引号使用场景值传递动态表名、列名<if>:条件判断<where>:智能添加WHERE关键字<set>:智能更新字段<foreach>:遍历集合:多条件选择通过本文的实战示例,相信你已经掌握了MyBatis在企业级开发中的核心应用。从基础的CRUD操作到复杂的高级查询,从动态SQL到批量处理,这些技巧都是实际项目中经常用到的。
2025-09-20 15:04:38
222
原创 Java反射机制全解析:从入门到精通,掌握动态编程的核心技术!
反射是Java提供的一种动态机制,能够在运行时获取类的信息(如字段、方法、构造方法等),并动态操作对象。简单来说,反射让Java具备了“自我观察”和“动态行为”的能力。核心特点运行时获取类信息动态创建对象、调用方法突破访问权限限制(如调用私有方法)反射是Java高级编程的基石,合理使用能极大提升代码的灵活性。但切记:“能力越大,责任越大”,避免滥用反射导致性能和安全问题!
2025-08-28 14:35:02
400
原创 深入理解Java内部类:从基础到实战,一篇搞定所有内部类用法!
内部类(Inner Class)就是定义在另一个类内部的类。成员内部类(非静态内部类)静态内部类局部内部类匿名内部类内部类是Java中一个强大而灵活的特性,合理使用可以让我们的代码更加优雅和高效。希望通过本文,你能全面掌握内部类的各种用法。如果有任何问题,欢迎在评论区留言讨论! 😊。
2025-08-27 11:37:42
350
原创 Java接口(Interface)超全详解:从入门到精通,这些细节90%的新手都不知道!
接口是Java面向对象编程的重要特性,掌握好接口的使用,能让你的代码更加灵活、可扩展。记住:"面向接口编程"是Java设计模式的基础!。
2025-08-27 11:33:30
436
原创 Java抽象类深度解析:从入门到精通,这些细节你掌握了吗?
抽象类是用abstract关键字修饰的类,它可以包含抽象方法(没有具体实现的方法)和普通方法。示例代码:// 抽象方法// 普通方法System.out.println("动物在睡觉");// 抽象方法public void breathe() { // 普通方法System.out.println("呼吸中...");•抽象类 vs 接口:抽象类更侧重于代码复用和模板设计,而接口更侧重于行为规范。•合理使用抽象类。
2025-08-27 11:28:53
426
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅