自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springboot-响应接收与ioc容器控制反转、Di依赖注入

5.即使这样分层架构,各层之间仍然有耦合性,比如我更改service实现类的名字,那么我就需要在controller层创建对象的时候改代码,这样不利于后期维护;扫描格式:@ConponentScan({"dao", "com.itheima"}) 小括号包书名号,书名号内写包名,之间用逗号隔开;@Autowired默认是根据类型进行注入的,如果有多个相同类型的bean,则可以使用@primary进行解决;想要声明的bean生效,还需要进行扫描,使用注解@ConponentScan;

2025-06-01 16:33:49 629

原创 tomcat服务器以及接受请求参数的方式

2.事实上服务器和客户端进行交互的过程中,有一个前端控制器在中间运作,这个控制器为DispatcherServlet,它负责将客户端请求的信息包装成HttpServletrequest对象,同时负责将服务器所传回的响应信息包装成HttpServletresponse对象.通过json传递参数必须要用post请求方式,要把参数写在请求体中:同时用实体类接受,实体类的属性名和键名一致:但要注意形参名前要加@RequestBody。默认为true,表示必须传入,否则报400错误,显示请求异常;

2025-05-31 23:10:23 900

原创 javaweb-maven以及http协议

(3)无状态:对于事务没有记忆能力,每次请求-响应都是独立的,速度很快的同时,多次相应不能共享数据;浏览器发起/hello请求,服务器给浏览器返回字符串hello world;(2)default:核心工作:编译、测试、打包、安装、部署。(1)get:请求参数在请求行,没有请求体;请求行:第一行,包括请求方式、请求路径、协议版本。(2)post:请求参数在请求体,请求大小无限制。请求体:在post请求中用来存储请求参数。(3)site:生成报告,发布站点等。(2)基于请求:一次请求一次相应。

2025-05-31 19:21:22 832

原创 servlet-服务器内部转发以及客户端重定向

客户端向服务器发送请求,服务器内部进行转发,让其他的servlet来执行;客户端向服务器发送请求,服务器返回一个响应,让其给其他servlet发送请求;

2025-05-24 22:32:02 382

原创 http协议和session会话

对于一次请求,service方法中会调用request的getSession方法来确定该客户端是否是第一次发送请求,若为第一次,则分配一个sessionid号,若不为第一次,则该方法会获取到该客户端的sessionid;请求行:协议的版本(http1.1)请求的方式(post get) 请求url。响应行:协议版本(http1.1) 响应状态(ok) 响应编码(200)响应头:服务器的一些信息,内容的一些信息(内容媒体类型,编码,内容长度)session.isNew()判断是否为新的。

2025-05-24 20:05:05 356

原创 Servlet的继承关系和生命周期

(2)默认情况下,收到请求后开始实例化,初始化,并开始服务,后面只是开启服务,调用service方法;这种方式的启动速度很快,但是响应速度,特别是第一个用户的响应速度很慢,我们可以通过设置<load-on-startup>数字<load-on-startup>来设置servlet的启动先后顺序,这样设置后启动服务器时会耗时更多,因为启动即创建实例,初始化,但后续的响应速度很快,而且很公平;(1)servlet的生命周期对应三个方法 init() service() destroy()

2025-05-23 22:49:39 506

原创 JDBC-java操作数据库

ResultSet executeQuery(sql)执行DQL语句(数据查询语句:进行数据的查询) 返回结果集。③Statement作用:执行sql语句 int executeUpdate(sql)执行DML(数据操作语句:数据进行操作)、DDL(数据定义语句:操作数据库对象的结构) 返回影响的行数。②Connectiong作用:获取执行sql的对象:createStatement() prepareStatement(sql)参数:int 列的编号 String:列的名称。

2025-05-23 22:26:52 421

原创 javaweb-html

浏览器向服务器发送http请求,服务器对浏览器进行回应,并发送字符串,浏览器能对这些字符串(html代码)进行解释;input type=“text” 表示文本框,name值必须指定,否则这个文本框的数据将来不会发送给服务器。type 值有:circle(圆圈) square(实心方块) disc(默认的,实心圆)子标签:<tr> 一行 双标签(子标签 <td> 一个单元格)(6)<u>下划线 <b>粗体 <i>斜体 双标签。(3)<h1> 到<h6>表示标题 双标签。

2025-05-21 11:24:38 776

原创 java基础-异常

在编写程序时,往往需要检测分母为0、数据为空、输入的数据类型等等是否符合要求,会使用if-else语句进行检测,但太多的该语句会导致代码臃肿,可以采用异常处理机制;实际应用中:像数据库连接、输入输出流、网络编程Socket等资源,JVM不能自动回收,我们需要手动进行资源释放,一般声明在finally中,因为声明在其他地方有不被执行的风险;throws写在方法的声明处,当方法体中出现了与之对应的异常对象,就会停止运行下面代码,将异常抛出给调用者;当try中的语句发生异常时,就会跳出该代码块;

2025-05-20 20:12:29 348

原创 java基础-内部类

(1)成员内部类:一方面作为类的成员(①可以调用外部类结构②可以被4种权限修饰符修饰③可以被static修饰),另一方面作为一个类(①内部可以定义类的结构②可以被abstract和final修饰)我们可以在非静态内部类的方法中调用Person类中的方法(省略Person.this.eat()),但是静态类中不行;1.java中,允许在一个类中定义另一个类,一个为内部类,另一个为外部类;因为不同类占据不同的内存空间,内部类中使用的是该局部变量的副本。(2)局部内部类:在方法内、代码块或构造器等中定义的类。

2025-05-20 13:01:29 435

原创 java基础-接口

另一方面:必须从几个类中抽取出一些共同的行为特征,他们之间没什么关系,只是有相同的行为特征,:比如鼠标、键盘、打印机等都有USB连接的功能。②如果父类和接口中定义了同名同参数的方法,那么子类优先调用父类的方法-类优先原则。接口就是规范,定义一组规则,继承是一个是不是的关系,接口实现的是能不能的关系。System.out.println("这是接口");接口的本质是契约,标准,规范,就像法律,指定后大家要遵守。①类可以重写接口中的默认方法,调用时是重写后的方法。2.接口的使用:使用interface来定义。

2025-05-20 09:32:55 877

原创 java基础-抽象类和抽象方法

System.out.println("呼吸新鲜的空气");System.out.println("吃健康的食物");abstract不能用来修饰私有方法、静态方法、final方法、final的类。形式上与父类匿名对象创建相似,但是需要后接大括号进行重写抽象方法;子类必须重写父类的所有抽象方法才能实例化,否则也是抽象类。抽象类一定有构造器,便于子类实例化时调用;2.抽象类的匿名子类的对象创建。有抽象方法的类一定得是抽象类。只有方法的声明,没有方法体。(2)修饰方法:抽象方法。

2025-05-19 21:02:32 226

原创 java基础-关键字:static、单例模式

由于单例模式只产生一个实例,减少了系统性能开销,当一个对象产生需要比较多资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时产生一个单例对象,然后永久驻留内存的方式来解决;同时多个,则按顺序执行。1.例如:我们创造一个人的类,我们希望他是中国人类,所以我们希望所有对象都共有中国人的属性;(1)static修饰属性:多个对象共用一个,修改一个,会导致其他对象的该属性改变。①静态变量随着类的加载而加载,可以通过“类.静态变量”的方式调用;①随着类的加载而加载,可以通过“类.静态方法”的方式进行调用;

2025-05-19 18:56:05 1027

原创 java基础-多态性

通过传入不同java中定义的Connection的子类对象,实现多态,各大数据库厂商通过改写父类中java定义的方法,来实现各自数据库的操作;编译时e为person对象,而方法的调用是在运行时确定的,所以调用的是Student类的方法。也就是说,多态情况下,我们只能调用父类中存在的方法,然而实际运行时,运行的是子类中的方法;而自己创造的类,调用根父类未重写的equals方法,他的判断相当于==,是判断的地址值;2.虚拟方法调用:当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法;

2025-05-19 16:52:34 863

原创 java基础-方法的重写、super关键字

我们可以在子类的构造器中使用super(形参列表)的方式,调用父类中声明的制定构造器,必须写在构造器的首行,你不写的话就默认用super()空参构造器,也就是说,你子类中只要有构造器,那肯定会调用其他构造器,可能是this(),可能是super();在这串代码中,子类调用了父类的构造器,并初始化了父类的属性,初始化完成后,再初始化子类自己的属性,最终传入的值是赋给了创建的子类对象的继承的属性,1.定义:子类可以根据需要改写从父类那继承来的方法,执行时,子类的方法会覆盖父类的方法。

2025-05-13 18:37:58 619

原创 java面向对象-继承性

(3)一个类若没显式继承其他类,则默认继承java.lang.Object类,也就是说,所有类都直接或间接继承java.lang.Object类。特别的:父类中private的结构,认为子类获取了相应结构,但由于封装性,子类不能调用该结构。(1)一个子类只能有一个父类,但可以有多个间接父类,子类获得父类和间接父类的所有结构和方法。体现:一旦子类A继承了父类B以后,子类A就获取了父类B中声明的结构:属性、方法。B:父类、超类、superclass。(2)一个类可以被多个类继承。(3)为多态性提供了前提。

2025-05-13 10:50:36 228

原创 java基础-package关键字、MVC、import关键字

(7)当在import和包类名之间加一个static,就可以导入指定类或接口的静态结构:静态属性和静态方法;(4)如果使用的类或接口是java.lang包下定义的,或者是本包下定义的,就可以省略import。(5)当在源文件中使用不同包中的同名类或接口时,则必须至少有一个类需要以全类名的方式显示。(3)可以使用“XXX.*”的方式来导入包中所有的结构,不包括子包;(1)功能:在源文件中显示使用import来导入指定包中的类或接口。(2)声明类或接口所属的包,声明在源文件首行。

2025-05-13 10:36:42 532

原创 java基础-JavaBean和this关键字

在类的方法中,我们可以使用this.属性和this.方法的方式来调用对象的属性和方法,但一般情况下我们选择省略;但是当方法的形参和类的属性同名时,我们必须使用this.变量的方法来区分属性和局部变量(在构造器中使用this同理)规定:this(形参列表)必须位于当前构造器的首行;ps:当在方法内部需要调用方法的对象时,就用this;它在构造器内部使用,表示该构造器正在初始化的对象。它在方法内部使用,即这个方法所属对象的引用。(3)属性有对应的get和set方法;(2)有一个无参的公共的构造器。

2025-05-12 09:21:08 154

原创 java基础-面向对象

这行代码,会触发空指针异常,因为仅仅定义数组,里面默认初始化值为null,需要为其new一个对象(学生数组里存的是地址);因为调用完swap后里面的局部变量会被当做垃圾回收,打印的是main方法中定义的m和n;(2)从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类;(1)在同一个类中,允许一个以上的同名方法,只要他们的参数个数和参数类型不同即可;(1)如果没有显式的定义类的构造器的话,则系统会默认提供一个空参的构造器;System.out.println("发送邮件");

2025-05-12 08:23:45 671

原创 java基础-数组

当程序试图在一个值为null的引用上调用方法、访问属性或者进行数组操作时,就会抛出该异常;(5)二分查找:前提是数组必须是有序的;返回的是查找值的下标;(3)这个是将数组中的所有元素都替换为给定值。(2)情况二:(数组未初始化就调用方法)(3)情况三:(null对象调用方法)(我们这里先只针对数组);2.数组的内存简化结构;

2025-05-07 17:04:51 424

原创 java基础语法

然而没有char对应的获取方法,可以使用next()方法配合字符串的charAt(index)方法;ps:输入的数据类型与方法要求的类型不匹配时,会报异常:InputMisMatchException。注意:可以为空,可以为空格,也可以为单个字符;第二行中,先进行字符的相加操作,加的是该字符的Unicode值;十六进制:以0x开头,0-9、a-f,这里的a-f不区分大小写;(2)作用域:一个变量的作用域为大括号内;在作用域内是有效的;当+的操作对象之一为String,那么这个运算符为连接运算,

2025-04-29 11:45:50 497

原创 计算机一些基础知识以及doc操作系统一些简单命令

原理:只需要运行java应用程序的操作系统上,先安装一个java虚拟机(JVM)即可。C/S架构模式:用户先在本地安装客户端软件,通过客户端向服务器发送请求,服务器处理后返回数据,客户端负责解析和展示;(3)跨平台性:通过java语言编写的应用程序在不同的系统平台都可以运行。相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法;(1)编写:我们将编写的java代码保存在以“.java”结尾的源文件中。变量名、方法名:多单词时,第一个单词小写,以后单词首字母都为大写;

2025-04-29 10:07:29 265

原创 数据结构与算法-二叉树

(3)对于任何的非空二叉树,n0表示叶节点的个数,n2表示度为2的结点个数,那么两者1满足关系n0 = n2 + 1。(1)遇到一个节点,就把他压栈,并去遍历他的左子树(进入左子树的最深层,直到左子树为空)(3)遍历二叉树(注意:遍历有多种方式如:先序,中序,后续,层次遍历等等);(8)子孙结点:一结点的子树中所有结点都是这一结点的子孙。(2)深度为k的二叉树有最大结点总数为:2的k次方-1。(5)兄弟节点:具有同一父结点的结点彼此是兄弟节点;(4)父结点:有子树的结点是其子树根节点的父节点;

2025-04-24 14:13:57 304

原创 java基础:日期类和日历类

而包装类的用双等号比较的话,可能会超出缓存区范围,那么就会重新new出数据,那么可能与真实情况不相同,所以包装类用equals好一点;要进行相等判断,基本数据类型一般用双等号,而字符串比较用equals好一点,因为比较内存地址没有意义,我们一般想要比较的应该是内容;可能会出现异常的代码,如果出现异常,那么JVM会将异常进行封装,形成一个具体的异常类,然后将这个异常抛出;(1)工具类不应该创建对象才能使用,也就意味着,可以直接使用类中的属性和方法,一般都声明为静态的;//将日期传进来,让日历指向日期;

2025-03-30 10:13:54 415

原创 java基础:常见类和对象

if (j >= (row - 1) - i && j <= (row - 1) + i){ //从中间向两侧顺延同时满。9.concat方法:是String的一个实例方法,它用于将指定的字符串连接到当前字符串的末尾,并返回一个新的字符串对象,原字符串对象不会被改变;//创建一个二维数组;9.字符串的拼接:可以用+号进行操作,但必须保证加号的一端是字符串,只要一个对象是字符串,那默认把另一个对象转换为字符串进行拼接;

2025-03-29 20:17:42 646

原创 Java基础——面向对象

首先定义了USB接口的规则,然后分别让supply和receive分别继承该规则,然后让计算机和台灯分别满足对应规则,计算机中定义两个usb接口,定义能源提供的方法;创建一个me对象,然后调用sayhello方法,传入一个Zhangsan类的对象,他是改写的抽象类Person的所以将对象传进去,打印hello+name;类的对象需要遵循接口,在Java中,这个遵循,称之为实现(implements),类需要实现接口,而且可以实现多个接口;System.out.println("使用飞行器飞翔");

2025-03-28 21:38:14 411

原创 java基础知识和语法

当把子类中的sum类型去掉后,方法具体的实现在子类中没有,那么去父类中寻找,父类的sum实现时,默认使用的是this属性,也就是父类中的属性,所以结果为20;ddd是CCC类型,所以应该看CCC中有没有sum方法,有,那么能使用,但具体的实现过程是依靠DDD中的sum方法,所以输出结果为40;这串代码中,首先运行sum,在子类中没办法实现,最终要落回父类,再执行geti方法,这个需要子类中的方法进行实现,所以最终打印30;上面的p1和p2都是person类型,所以可以引用person的功能;

2025-03-28 18:49:49 383

原创 java基础(7天)

键盘输入->产生源代码(.java)->编译器(javac)->字节码(.class)->JVM(java)->OS(计算机系统)->中心处理器(CPU)->OS->console。当CPU中运行代码println时,会向内存中读取数据。18.对于一个类中的属性,如果没有初始化,则会在构造对象时候默认初始化,而默认初始化的值取决于属性的类型;小范围的值可以转换为大范围的值:(大范围的值不能转换为小范围的值,但可以用括号强制转换);特殊的对象:空对象(null),没有引用的对象,称之为空对象,关键字对象。

2025-03-27 15:18:35 529

原创 python-列表的操作以及切片

a = [1, 2.1, 'hello', Ture, [1, 2, 3], (1, 2, 3), print] 啥都能放。4.列表元素的添加 方法有这几种:+ += append() extend() insert()a = a + [10] //只能加列表,不能加字符串 __add__ 魔法方法。id(a) //地址不变,对原来列表添加10 所以一般+=优于+b = list('hello') //字符串转换成列表。a[-1]('hello') //打印hello。

2025-03-18 22:24:39 499

原创 python-数据类型字符串和列表

print('大家好,我的名字是{n},我今年{a}岁了,身高{h}cm'.format(n = name, a = age, h = height))print(f'大家好,我的名字是{name.title()},我今年{age+10}岁了,身高{height}cm') #title方法,变大写。print('大家好,我的名字是{1},我今年{0}岁了,身高{2}cm'.format(name, age, height))print('大家好,我的名字是,我今年岁了,身高cm')

2025-03-16 21:06:39 335

原创 数据结构---堆栈和列

这是一个不带头结点的队列,实际上,front指向的头结点一般为辅助结点(不是空节点),它不存储实际数据,只是为了方便后续插入、删除操作;注意:第一个赋值语句,是让firstcell指向s->next指向的位置,所以firstcell指向的是要删除的结点;队列的顺序存储结构通常由一个一维数组和一个记录队列头元素的变量front以及一个记录队列尾元素位置的变量rear组成;注意:其中的(ptrq->rear+1) % maxsize代表的是在顺环中,rear元素对应的下一个元素的位置下标;

2025-03-15 16:26:36 366

原创 存入一个学生成绩表格,并打印出平均成绩,判断出最好成绩

void Avone(struct stud arr[], int a) //用结构体指针接收。

2025-03-12 23:18:30 379

原创 数据结构-如何实现两个多项式的加法和乘法

1.求解思路2.多项式表示链式表:3.主程序框架:4.读多项式:5.将两个多项式相加:6.相乘。

2025-03-08 15:23:35 192

原创 广义表和多重链表

补充:共用体(union)基本概念:与结构体(struct)不同,结构体的每个成员都有自己独立的内存空间,而共用体的所有成员共享同一块内存空间。这意味着在同一时间,共用体只能存储一个成员的值,修改一个成员的值会覆盖其他成员的值。赋值操作见上图;同一时间只有一个数据有效;1.广义表(1)广义表是线性表的推广(2)对于线性表来说,n个元素都是基本的单元素(3)广义表中,这些元素不仅可以是单元素也可以是另一个广义表。int tag;//用来标记结点中是单元数还是广义表。

2025-03-08 15:14:02 492

原创 数据结构链式表

/令s中的传递指针指向原第i个元素的传递传递指针。//非删除起始位置,先找到i-1的位置。else if(p->next == NULL) //i-1的位置存在,但i位置不存在。//不在起始位置,先找到i-1的位置。list delete(int i, list ptrl) //删除对象的序号传入。//修改p(第i-1个结点)的传递指针。//修改起始位置指针。if(p == NULL) //如果i-1位置不存在,那i的位置一定不存在。if(i == 1) //考虑放在起始位置的情况。

2025-03-08 11:13:32 1000

原创 数据结构——多项式问题(顺序存储结构or链式存储结构)

void Insert(ElementType X, int i, List Ptrl) //实现插入功能;int Find(ELementType X, List Ptrl) //实现查找功能;if(Ptrl->Last == MAXSIZE - 1) //达到最大内存,无法插入。

2025-03-07 22:45:17 818

原创 c语言操作符

首先,我们写的程序.c文件是源程序,它经过编译时,执行了sizeof指令,然后表达式就消失了,之后再进行链接,成为可执行程序.exe文件,这时进行执行的时候才进行表达式的计算。表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度;//此为下标引用操作符,他的操作数有两个,一个为5,一个为arr;因此,即使两个char类型的相加,在CPU执行时实际上也是要先转换为CPU内整型操作符的标准长度;

2025-03-07 10:18:08 1052

原创 python基础

a的内存地址会改变,原来的那个内存会继续存10,但一段时间后会启动内存清除机制,将原来内存中的10清除;(5)不建议使用函数命名,这样虽然可以命名成功,但会使函数失去作用;这表示输出1-6的数字,数字之间用‘,’隔开,末尾加空字符;:非零数字、非空序列、非空字典、非空集合等会被转换为。print(bool(10)),返回结果为ture。print(hex(10)) 十六进制。m = input("请输入m的值:")n = input("请输入n的值:")print(bin(10)) 二进制。

2025-03-04 20:03:48 259

原创 c语言数组和结构体

以上输出函数的两种形式的结果都是对数组的第三个元素进行打印,原因是无论哪种位操作符使用,都是将其转化成*(arr+2)来实现结果的,根据交换律,可以使用2【arr】这种形式。允许指向数组元素的指针与指向数组最后一个元素之后的位置的指针进行比较,但不允许与指向第一个数组元素之前的内存位置的指针进行比较;10.写两个不同类型的函数来打印s的内容,并比较传值和传值的优缺点:(注意代码规范,先定义结构体,再定义使用结构体的函数);这里的p就是一个野指针,因为p是一个局部变量,一个未初始化的局部变量,默认为随机值;

2025-03-02 17:34:50 766

原创 c语言数组和时间函数

/定义start和stop两个变量,变量类型是 clock_t,这个变量的单位是时钟打 //点数.int arr2[2][4] = {1, 2, 3, 4, 5, 6, 7, 8};//不完全,剩余空间自动填充0;

2025-02-28 22:03:18 596

空空如也

空空如也

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

TA关注的人

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