- 博客(34)
- 收藏
- 关注
原创 SpringMVC (3)
Spring 会根据参数名称自动绑定到对象的各个属性上, 如果某个属性未传递, 则赋值为null(基本类型则赋值为默认初识值, ⽐如int类型的属性, 会被赋值为0。简单来说:JSON就是⼀种数据格式, 有⾃⼰的格式和语法, 使⽤⽂本表⽰⼀个对象或数组的信息, 因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换.如果⽅法参数名称和需要绑定的URL中的变量名称⼀致时, 可以简写, 不⽤给@PathVariable的属性赋值, 如上述例⼦中的id变量。
2025-02-28 16:18:33
1053
原创 SpringMVC (2)
是 Spring Web MVC 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的.表示服务收到请求时, 路径为 /user/m1 的请求就会调⽤ m1 这个⽅法的代码.路由映射: 当用户访问⼀个 URL 时, 将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射.既然已经可以达到我们的⽬的了, 我们为什么还要加呢?Spring会对所有的类进⾏扫描, 如果类加了注解, Spring才会去看这个类⾥⾯的⽅法有没有加这个注解, 当然他的作⽤不⽌这⼀点, 后⾯再详细讲。
2025-01-17 14:23:31
1065
原创 SpringMVC (1)
MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分View(视图)指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源Model(模型)是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型总而言之,MVC 是⼀种架构设计模式。
2025-01-15 23:44:36
1119
原创 MySQL数据库 - 索引(下)
目录1. 创建索引1.1 自动创建索引1.2 手动创建索引1.2.1 主键索引1.2.2 唯一索引1.2.3 普通索引2. 查看索引3. 删除索引3.1 删除主键索引3.2 删除普通索引4. 查看执行计划4.1 不加条件,查询所有4.2 使用主键查询4.3 子查询中使用索引4.4 使用普通索引4.5 使用复合索引5. 创建索引的注意事项方式一:建表的时候创建主键查看表结构:方式二:创建表时单独指定主键列方式三:修改表中的列为主键先指定 student_id 列为主键,然后再把主键列设置为自
2024-11-26 15:23:42
1968
原创 JavaEE-网络编程(2)
即使客户端与服务器断开了连接,服务器也依旧在运转,等待连接下一个客户端,也就是说,clientSocket 并没有伴随整个进程的始终。对于 TCP 服务器也是如此,一旦进行连接,就可以发送一个或者多个请求,直到想结束了,再断开连接。当前这个程序,有客户端连接上,就创建一个新的线程。客户端断开,就销毁一个线程。连接可以理解为打电话,客户端给服务器打电话,当电话打通了,就是建立了连接。一旦打通了电话,就可以说话,说话可以说一句就挂断,也可以说很多句再挂断。服务器必须与客户端连接上了,才能够给客户端提供服务。
2024-11-18 18:21:49
876
原创 JavaEE-网络编程(1)
面向数据报:读写数据的时候,以一个数据报为单位(不是字符),一次必须读写一个数据报,不能是半个。A 和 B 通信,A 和 B 先建立连接,让A 保存 B 的信息,B 保存 A 的信息。在计算机中,“文件” 通常是一个“广义的概念”,文件可以代指电脑上的软件,也能代指一些。此处的有连接/无连接是一个抽象的概念,指的是逻辑上的连接,而不是物理上的连接(网线)这两个协议的差别非常大,编写代码的时候也是不同的风格。(操作系统管理硬件设备,也是抽象成文件,统一管理的)网络上,数据是非常容易出现丢失的情况的(丢包),
2024-11-17 19:29:41
712
原创 数据结构-二叉搜索树(Java语言)
个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即。在最后删除target节点的时候,要判断target节点是在targetparent的左边还是右边。同时用parent节点记录cur的父节点,最终用parent的val与key作比较,,用它的值填补到被删除节点中,再来处理该结点的删除问题。如果cur节点val==key,返回该节点。
2024-11-15 00:56:41
1044
原创 JavaEE-多线程初阶(5)
当多个线程竞争同一把锁的时候,获取到锁的线程如果释放了,下一个拿到锁的线程是哪一个,这是不确定的,取决于操作系统的调度(随机)。当三个线程启动的时候,这三个线程都处于 wait(阻塞)状态,需要在 mian 线程使用 notify 唤醒。notify 的这个线程,没有副作用(notify 唤醒一个没有 wait 的线程,不会报错)现有两个线程t1和t2,两个线程内部分别对locker对象加锁,并且在内部进行 wait 操作。其中某个线程,先加上锁,开始执行,另一个线程因为加锁失败,再次阻塞等待。
2024-11-14 13:10:58
1152
原创 JavaEE-多线程初阶(4)
当一个线程循环进行上述读取变量操作的时候,就会把主内存中的数据,拷贝到该线程的工作内存中。现有两个线程,一个int型成员变量flag,线程t1进行条件为flag==0的while循环,当while循环结束时,线程t1结束。对于上述循环而言,flag的改变取决于用户的输入(System.in),而这段时间对于计算机来说是很长的(在用户输入值的这段时间内,while循环已经执行了很多很多次了)如果序号小的锁被占用了,就阻塞等待,直到序号小的锁被释放,才拿起第一把锁(序号小的)最后再拿起第二把锁(序号大的)
2024-11-06 23:39:40
780
原创 JavaEE-多线程初阶(3)
t1的寄存器和t2的寄存器都读取了内存的初始值0,最终执行完两次count++后count的值为1。对于上述例子的count++操作,它并非是原子的,此时就可以使用锁,把刚才不是原子的count++由于线程执行的过程中有可能(大概率)会发生上述的错误情况,因此代码的执行结果总是
2024-11-04 15:59:26
1148
原创 JavaEE-多线程初阶(2)
先看一个案例:while(!try {System.out.println("线程结束...");});t1.start();i < 3;i++) {如果不用成员变量,而是把isInterrupted定义在main里面(作为局部变量),再执行代码就会报错:首先解释一下这个变量该如何修改正确:1.用final修饰isInterrupted变量:isInterrupted不能被修改。
2024-10-31 15:37:21
794
原创 JavaEE-多线程初阶(1)
线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对⽤户层提供了⼀些 API 供⽤户使⽤(例如 Linux 的 pthread 库).⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏着多份代码.⼀个进程挂了⼀般不会影响到其他进程. 但是⼀个线程挂了, 可能把同进程内的其他线程⼀起带走(整个进程崩溃).为了让业务更快的办理好,张三⼜找来两。位同事李四、王五⼀起来帮助他,三个⼈分别负责⼀个事情,分别申请⼀个号码进⾏排队,⾃此就有。
2024-10-29 21:22:09
1040
原创 Java语言-异常
Java中虽然已经内置了丰富的异常类但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构.例如我们实现一个用户登陆功能:LogInprivateStringuserName"admin";
2024-10-28 00:15:38
658
原创 Java语言-接口(下)
Object是Java默认提供的一个类。Java里面除了Object类,所有的类都是存在继承关系的。默认会继承Object父类。即所有类的对象都可以使用Object的引用进行接收。范例:使用Object接收所有类的对象Object类中包含了很多方法。本次学习中,我们主要学习这几个方法:toString()方法,equals()方法,hashcode()方法。
2024-10-24 21:17:15
785
原创 Java语言-接口(上)
以上接口中的四个方法的类型都是public abstract抽象方法,但是实际上更推荐methodD的写法,这样代码会更简洁。中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。原因:接口中的方法都默认为public static,而实现接口时。如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类。接口中的方法是不能在接口中实现的,只能由实现接口的类来实现。接口中可以含有变量,但是接口中的变量会被隐式的指定为。在现实生活中,接口的例子比比皆是,比如:笔记本上的。
2024-10-18 11:53:44
841
原创 MySQL数据库 - 索引(上)
MySQL的索引是一种数据结构,它可以帮助数据库高效地查询、更新数据表中的数据。索引通过一定的规则排列数据表中的记录,使得对表的查询可以通过对索引的搜索来加快速度。MySQL索引类似于书籍的目录,通过指向数据行的位置,可以高速定位和访问表中的数据,比如汉语字典中的目录(索引)页,我们可以按笔画、偏旁部首、拼音等排序的目录(索引)快速查找到需要的字。
2024-10-10 21:23:22
697
原创 MySQL表的增删改查(进阶)
指示某列不能存储NULL值。保证某列的每行必须有唯一的值。规定没有给列赋值时的默认值。- NOT NULL和UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。保证一个表中的数据匹配另一个表中的值的参照完整性。保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。作用:创建表时,可以指定某列不为空示例,创建一个学生表,使id字段不为空:指定sn。
2024-09-19 20:49:48
757
3
原创 MySQL表的增删改查(基础)
C-Create 新增R-Retrieve 检索,查询U-Update 更新D-Delete 删除语法:insertinto 表名 [(字段1,字段2,...)]values(值,值,...);与表名后括号内的一一对应,否则会报错。,就像示例中的'张三'一样。
2024-08-31 00:16:08
1402
1
原创 MySQL数据库基础
MySQL是一个关系型数据库关系型数据库是指采用了关系模型来组织数据的数据库,简而言之,关系模型就是一个二维表格模型。关系型数据库就是由二维表格以及他们之间的联系所组成的一个数据组织。(如下图)
2024-08-30 20:00:13
1401
1
原创 Java语言-类的多态详解
我上述的代码中,eat方法形参是Animal,传参是Dog或者Cat类,此时发生的就是一个典型的动态绑定,即:编译期间无法确定方法的行为,需要等到程序运行时看看传入的实参是谁(Dog还是Cat)才能确定调用哪个方法。将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转换。也就是说子类能够根据需要实现父类的方法。,即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。
2024-07-17 15:15:20
1399
1
原创 JAVA语言-类的继承详解
由于设计不好,或者因场景需要,子类和父类中可能会存在相同名称的成员,如果要在子类方法中访问父类同名成员时,该如何操作?总结:成员方法没有同名时,在子类方法中或者通过子类对象访问方法时,则优先访问自己的,自己没有时再到父类中找,如果父类中也没有则报错。说明变量名相同时,子类会优先调用子类的成员变量。通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到则访问,否则编译报错。当子类和父类存在相同的变量名的时候,子类访问的是子类的成员变量还是父类的成员变量呢?
2024-06-05 14:03:51
949
2
原创 JAVA语言-类和对象详解(2万字超详解!!!)
/名字publicStringcolor;//颜色//狗的属性publicvoidbarks() {Systemoutprintlnname":旺旺旺~~~"//狗的行为publicvoidwag() {Systemoutprintlnname":摇尾巴~~~"2.3.2定义一个学生类StudentpublicStringname;public。
2024-05-27 21:00:21
1213
原创 数组详解-JAVA语言
数组的概念:数组可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。在java中,包含6个整形类型元素的数组,就相当于上图中连在一起的6个空间,从上图中可以看到:1. 数组中存放的元素其类型相同2. 数组的空间是连在一起的3.每个空间有自己的编号,其实位置的编号为0,即数组的下标。那在程序中如何创建数组呢?
2024-05-17 13:03:34
1147
原创 单链表详解
上一篇博客我讲了一种线性表:顺序表。而这篇博客,我将为大伙带来第二种线性表——链表的详细讲解。有问题的请多多在评论区发言哈!目录前言编辑1.链表的概念及结构2.实现单链表2.5 SLFind2.8 其他接口函数3.链表的分类3.1 单向或者双向3.2带头或者不带头3.3循环或者不循环3.4 总结虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构:单链表和双向带头循环链表1.无头单向非循环链表:结构简单,⼀般不会单独用来存数据。实际中更多是作为其他数据结。
2024-04-24 17:40:05
845
原创 顺序表详解
顺序表是咱学习数据结构时接触到的第一种数据结构。在学习顺序表之前,我们需要先弄明白一个问题:何为数据结构?数据结构,单从字面上来讲就是数据的结构。设想一下,内存中有一大堆数据(假设这些数据是数字1、2、3...等等)然后我们想在这堆数据中找到并拿出其中一个数据 “3” ,要怎么找呢?这时候就需要用到数据结构的知识——将数据有序的存储起来(排序),接着就只需要访问对应的序列就能找到该数据了。1.能够储存数据2.储存的数据方便查找(删除、或者修改)
2024-04-15 20:39:46
1049
2
原创 C语言内存函数
之前我写过一篇字符函数与字符串函数的博客,这些函数都属于库函数。今天这篇博客要介绍的也是库函数——内存函数。(拜托啦,这对我真的很重要!目录前言1. memcpy使用和模拟实现2. memmove使用和模拟实现3. memset函数的使用4. memcmp函数的使用注意:以下函数使用之前都需要包含头文件1. memcpy使用和模拟实现voidmemcpyvoidconst void* source,size_tnum );函数会从source指针指向位置开始往后拷贝。
2024-04-03 10:30:00
1094
1
原创 编译和链接
在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令(⼆进制指令)。第2种是执行环境,它⽤于实际执行代码。接下来分别我将介绍两个环境。
2024-04-01 13:22:14
1995
1
原创 文件操作详解
函数名功能适用于fgetc字符输入函数所有输入流fputc字符输出函数所有输出流fgets文本输入函数所有输入流fputs文本输出函数所有输出流fscanf格式化输入函数所有输入流fprintf格式化输出函数所有输出流fread二进制输入文件输入流fwrite二进制输出文件输出流上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输入流和其他输入流(如文件输⼊流);所有输出流⼀般指适⽤于标准输出流和其他输出流(如文件输出流)。
2024-03-29 18:37:26
2039
1
原创 结构体详解
结构体是一些数据的集合,这些数据被称为成员,而每个成员可以是不同类型的变量。而我们可以用结构体自定义一个类型来使用。struct STU//char数组类型成员int age;//int类型成员//结构体类型成员1.结构体类型的声明struct STUint age;;//👈分号不能少定义一个结构体,描述好结构体内的成员类型,就是结构体的声明。2. 结构体变量的创建和初始化我们知道:char占一个字节,int占4个字节。
2024-03-23 11:18:56
2117
1
原创 数据在内存中的存储
这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第⼀位的1,⽽是还原为0.xxxxxx的⼩数。这样做的⽬的,是节省1位有效数字。②对于64位的浮点数(double),最⾼的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。①对于32位的浮点数(float),最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。
2024-03-20 19:07:17
947
1
原创 字符函数与字符串函数
⽐较str1和str2的前num个字符,如果相等就继续往后⽐较,最多⽐较num个字⺟,如果提前发现不⼀ 样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。功能:strcmp函数会将str1与str2从头到尾逐个字符进行字符大小(ASCII码)的比较,若两个字符相同则跳过,直到找到第一个不同的字符进行比较并返回值说明。如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾。
2024-03-19 21:04:26
1150
1
原创 深入理解指针(1)
2.指针的类型(函数指针、数组指针)1.1 理解指针变量我们知道,要存储int型数据就需要创建一个int型变量对其进行赋值,例如int a=10;要存储char型数据就需要创建一个char型变量对其进行赋值,例如 char a=’A’;由此可推理出一个结论:要存储一个什么类型的数据就要创建与其相对的变量。
2024-03-09 19:55:37
975
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人