- 博客(18)
- 收藏
- 关注
原创 JAVA项目知识储备--spring mvc framework
MVC模型全称称Model View Controller,用来设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分:案例:在web.xml中配置前端控制器DispatcherServlet编写SpringMVC核心配置文件springmvc.xml,该文件和Spring配置文件写法一样编写控制器使用tomcat插件启动项目,访问网址** SpringMVC执行流程**SpringMVC的组件组件的工作流程** SpringMVC参数获取_封装为简单
2025-08-02 16:43:37
859
原创 JAVA项目知识储备--MyBatisPlus(一)
由于有了逻辑删除字段,那么向数据库插入数据时候,都需要设置deleted=0,而每次插入数据时都要设置该值十分繁琐,于是MyBatisPlus提供了自动填充功能。可以使用SQL注入器自定义全局方法,注入到全局中,这样所有的Mapper类都能使用该方法,接下来我们自定义一个deleteAll方法。乐观锁:在数据进行提交更新的时候才会正式对数据的冲突与否进行检测,如果冲突,则返回用户异常信息,让用户决定如何去做。为避免误删除的数据无法找回,采用逻辑删除的方式,即不会真正删除,而是用一个变量代表它被删除。
2025-07-17 20:17:55
543
原创 JAVA学习--多线程
这时同一个对象下 synchronized 方法在多线程中执行时,该方法是同步的,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,就算对象下有多个synchronized方法,也要等一个线程执行完指定的synchronized方法后别的线程才能调用当前对象下的synchronized方法。注意:线程的优先级,不是说哪个线程优先执行,如果设置某个线程的优先级高。线程A在中可以调用线程B的join()方法,让线程B和线程A联合,线程A必须等待线程B执行完毕后,才能继续执行。
2025-06-10 21:49:21
597
原创 JAVA学习-Spring框架学习(四)
作用:将方法的返回值对象放入Spring容器中。例子:想将jdba链接对象放入容器,无法修改源码添加@Component,此时就需要@Bean。作用:从容器中查找符合属性类型的对象自动注入属性中。注解配置和xml配置对于spring的IOC要实现的功能是一样的,只是配置形式不同。注意:@Bean修饰的方法如果有参数,spring会根据参数类型从容器中查找可用对象。作用:如果配置过多,有多个配置类,该注解可以为主配置类导入其他配置类。作用:在按照类型注入对象的基础上,再按照bean的id注入。
2025-05-11 16:40:23
914
原创 JAVA学习-Spring框架(三)
控制反转时由Spring创建对象,但是对象可能依赖与其他对象。例:service类中要有dao类属性,称service依赖于dao。而使用Spring后,Spring管理Service对象和Dao对象,此时能够为Service对象注入依赖的Dao属性值。此时,当StudentService想使用StudentDao 的另一个实现类时就需要修改Java源码,造成代码的可维护性降低。是从容器去中找到相应的对象设置为属性值,不需要< bean >标签中添加其他标签注入属性值。
2025-05-05 10:35:48
428
原创 JAVA学习-Spring框架(二)
虽然使用类型获取不需要强转,但如果容器中有一个接口的多个实现类,获取时会报错,此时需要使用该方法获取。destroy-method:配置销毁对象时执行的方法。init-method:配置创建对象时执行的方法。1. 创建工厂类,工厂提供创建对象的静态方法。可以看到适用类型获取不需要强转。
2025-04-08 22:10:40
822
原创 JAVA学习-Spirng(一)
是一个开源框架,以IOC(控制反转)和AOP(面向切面)为思想内核,提供控制层SpringMVC、数据层SpringData、服务层师傅管理等众多技术。
2025-04-01 23:36:09
382
原创 JAVA学习-常用类(一)
假设数据在-128~127,在类加载是就已经为每个数值创建了对象,并将这256个对象存放到叫cache的数组中。自动装箱时就会判断数据是否在该区间,在就直接获取数组中对应的包装类对象的引用,不在就通过new调用包装类的构造方法创造对象。Number 类属于 java.lang 包,所有的包装类(如 Double、Float、Byte、Short、Integer 以及 Long)都是抽象类 Number 的子类。substring()是对字符串的截取,本质是读取源字符串的内容生成了新的字符串。
2025-02-25 21:29:01
1621
原创 JAVA学习-异常机制(二)
调试器列出断点处,当前线程运行方法,每个方法对应一个“栈帧”。最上面是当前断点所处方法。列出了断点处所在方法的相关变量值。可以查看变量值的变化。
2025-02-22 10:51:19
215
原创 JAVA学习--异常机制(一)
try-with-resource可以自动关闭实现了AutoClosable接口的类,实现类需要实现close()方法(在继承AutoClosable接口的类中定义close()方法)。try-with-resource声明,将try-catch-finally简化为try-catch,在编译时仍然会进行转化为try-catch-finally语句。当范围中语句异常时,就会跳过该范围,执行范围外的语句。方法重写中声明异常原则:子类重写父类时如果父类方法有声明异常,那子类异常范围不会超过父类声明范围。
2025-02-19 23:19:47
561
原创 JAVA学习:构造方法的重载
注:如果方法构造中形参名与属性名相同时,需使用this关键字区分属性与形参:this.id是属性id;根据调用的对象中输入的形参来判断创建了哪个构造器中创建的对象。构造方法重载(创建不同用户对象)
2025-01-21 20:16:10
256
原创 JAVA内存学习(二)
堆中每个对象都引用一个引用计数器,当有引用指向该对象时,计数器加一,指向该对象引用失效时(引用变为null),引用计数器减一,当为零的时候,JAVA回收器会认为该对象是无用对象并回收。年轻代目标是尽可能快速收集掉生命周期短的对象,对应的是Minor GC,每次Minor GC会清理年轻代的内存,采用赋值算法,频繁的操作,会浪费内存空间。程序把所有的引用关系看作一张图,从一个节点开始,寻找对应的引用节点,找到该节点后继续寻找这个节点的引用节点,当所有引用节点寻找完毕,剩余节点则认为是无用节点。
2025-01-12 16:09:48
1334
原创 JAVA内存学习(一)
每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)JAVA虚拟机内存分为三个区域:栈stack、堆heap、方法去method area。2.JVM为每个线程创建一个栈,存放该线程执行方法的信息(实际参数、局部变量等)4.堆被所有线程共享,堆上区域会被垃圾回收期进一步划分,例如新生代、老生代。5.栈是系统自动分配,速度快,且是一个连续内存空间。1.堆用于存储创建好的对象和数组(数组也是对象)3.堆是一个不连续内存空间,分配灵活,速度慢。2.JVM只用一个堆,被所有的线程共享。
2025-01-11 14:29:30
319
原创 工作学习记录(一):getSession使用方法
当访问服务器某个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。这个浏览器指的是浏览器窗口,或者是浏览器的子窗口,意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。HttpSession是接口,不能直接用new创建对象,会话对象是容器创建的,使用HttpServletRequest中的方法获得会话对象。:获取当前访问服务器的对象,即产品对象。
2024-12-18 11:05:03
314
原创 微软算法题刷题记录(一)
2、可以使用栈的思路,当凑成一对时出栈,所有元素出完栈后若还有剩余的元素则返回false否则为true。给定一个只包括’(‘,’)‘,’[‘,’]‘,’{‘,’}'的字符串s,判断该字符串是否有效。1、在中位数位置时相邻的两个括号必为一对,否则返回flase。3.每个右括号都有一个对应的相同类型的左括号。1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。微软算法题刷题记录(一)
2024-12-15 17:26:02
144
原创 2021-01-10
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>#define NULL 0typedef struct mdf{//MDF结构体char username[20];//用户名char filename[20];//文件名struct mdf *next;}MDF;typedef struct ufd{//UFD结构体char filen
2021-01-10 20:51:51
278
原创 用循环队列模拟银行窗口排队
用循环队列模拟银行窗口排队#define SIZE 6#include#include<stdlib.h>using namespace std;typedef int ElemType;typedef struct{ElemType *base;int front,rear;}SqQueue;void Init(SqQueue &Q){Q.base=(ElemType )malloc(SIZEsizeof(ElemType));if(!Q.base){exi
2020-11-01 20:24:25
1651
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人