- 博客(37)
- 收藏
- 关注
原创 web乱码和路径问题
后拼接src属性值(../../../static/img/logo.png),其中 ../可以抵消一层路径,正好是目标资源正常获取的url(绝对路径情况3:web/WEB-INF/views/view1.html中引入web/static/img/logo.png。相对路径情况2:web/a/b/c/test.html中引入web/static/img/logo.png。绝对路径情况2:web/a/b/c/test.html中引入web/static/img/logo.png。
2024-12-06 11:14:30 935
原创 Servlet
通过生命周期测试我们发现Servlet对象在容器中是单例的容器是可以处理并发的用户请求的,每个请求在容器中都会开启一个线程多个线程可能会使用相同的Servlet对象,所以在Servlet中,我们不要轻易定义一些容易经常发生修改的成员变量load-on-startup中定义的正整数表示实例化顺序,如果数字重复了,容器会自行解决实例化顺序问题,但是应该避免重复。
2024-12-06 10:58:18 1263
原创 JavaWeb,XML,HTTP的学习
1.创建SAXReader对象2. 解析XML获取Document对象: 需要传入要解析的XML文件的字节输入流3. 获取文档的根标签4. 获取标签的子标签//获取所有子标签//获取指定标签名的子标签List<Element> sonElementList = rootElement.elements("标签名");5. 获取标签体内的文本6. 获取标签的某个属性的值String value = element.attributeValue("属性名");HTTP 超文本传输协议。
2024-12-01 14:15:10 1214
原创 JAVAWeb之javascript学习
1. 内嵌式:在head中,通过一对script标签引入JS代码;cript代码放置位置有一定的随意性,一般放在head标签中;2.引入外部js文件 在head中,通过一对script标签引入外部JS代码;注意:1.一个html文件中可以有多个script标签2.一对script标签不能在引入外部js文件同时定义内部脚本3.script标签如果用于外部js文件,中间不要有任何字符包括空格和换行。
2024-12-01 13:38:14 568
原创 JAVAWeb之CSS学习
CSS,层叠样式表(Cascading Style Sheets),能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有网页对象和模型样式编辑的能力,简单来说,美化页面。
2024-12-01 12:51:03 773
原创 javaWeb之HTML学习
meta charset = '字符集'/> 告诉浏览器用什么字符集对文件解码。通常用UTF-8字符集,定义在头标签内部。
2024-12-01 12:30:16 1029
原创 MySQL之触发器
触发器是由事件来触发某个操作,这些事件包括INSERTUPDATEDELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。
2024-11-29 23:14:24 888
原创 MySQL变量、流程控制与游标
SET @用户变量 = 值;或SET @用户变量 := 值;使用DECLARE语句定义一个局部变量。作用域:只在BEGIN和END中间有效。定义条件是事先定义程序执行过程中可能遇到的问题,处理程序定义了在遇到问题时的处理方式,并且保证存储过程或存储函数在遇到警告时能继续执行。定义条件就是给MySQL中的错误码命名,有助于存储的程序代码更清晰。定义条件将一个错误名字和指定的错误条件关联起来。这个名字可以随后被用在处理程序的DECLARE HANDLER语句中。
2024-11-29 23:05:03 1009
原创 MySQL之存储过程与函数
1.2说明1、参数前面的符号的意思IN:当前参数为输入参数,也就是表示入参;存储过程只是读取这个参数的值。如果没有定义参数种类,默认就是IN,表示输入参数。OUT:当前参数为输出参数,也就是表示出参;执行完成之后,调用这个存储过程的客户端或者应用程序就可以读取这个参数返回的值了。INOUT:当前参数既可以为输入参数,也可以为输出参数。:说明存储过程执行体是由SQL语句组成的,当前系统支持的语言为SQL。5、需要设置新的结束标记因为MySQL默认的语句结束符号为分号。
2024-11-29 22:34:05 591
原创 MySQL之视图
通常情况下,小型项目的数据库可以不使用视图,但是在大型项目中,以及数据表比较复杂的情况下,视图的价值就凸显出来了,它可以帮助我们把经常查询的结果集放到虚拟表中,提升使用效率。将经常使用的查询操作定义为视图,可以使开发人员不需要关心视图对应的数据表的结构、表与表之间的关联关系,也不需要关心数据表之间的业务逻辑和查询条件,而只需要简单地操作视图即可,极大简化了开发人员对数据库的操作。数据库中如果存在复杂的查询逻辑,则可以将问题进行分解,创建多个视图获取数据,再将创建的多个视图结合起来,完成复杂的查询逻辑。
2024-11-29 21:59:09 827
原创 MySQL之约束
(2)建表后1.5 删除非空约束举例(2)建表后指定唯一键约束举例:4.5 关于复合唯一约束3.5 删除唯一约束5 PRIMARY KEY 约束举例 列级约束表级约束(2)建表后增加主键约束举例:5.5 关于复合主键举例:5.6 删除主键约束举例:6. 自增列:AUTO_INCREMENT6.1 作用
2024-11-29 21:42:06 839
原创 MySQL之数据处理之增删改
*3.1 数据操作语言[插入]语法全列插入[不推荐]insert into 表名 values | value (值,值,值...)值的数量要等于表的所有列的数量值的类型和顺序要和表的类的类型和顺序一一对应指定列插入[推荐]insert into 表名 (列名,列名...) values | value (值,值,值...)值的数量要等于表的指定的列的数量值的类型和顺序要和[指定列的]顺序一一对应多行插入。
2024-11-29 20:46:38 843
原创 MySQL之创建和管理表
数据库的创建创建数据库create database 数据库名;判断在创建数据库create database if not exists 数据库名;创建数据库指定字符集create database 数据库名 character set 字符集;创建数据库指定排序方式create database 数据库名 collate 排序方式;创建数据库指定字符集和排序方式create database 数据库名 character set 字符集 collate 排序方式;
2024-11-29 20:29:49 794
原创 MySQL子查询
子查询的基本语法结构:子查询(内查询)在主查询之前一次执行完成。子查询的结果被主查询(外查询)使用。子查询要包含在括号内将子查询放在比较条件的右侧单行操作符对应单行子查询,多行操作符对应多行子查询。
2024-11-29 19:19:19 754
原创 MySQL之单行函数
函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在SQL中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地提高用户对数据库的管理效率。操作数据对象接受参数返回一个结果可以嵌套参数可以是一列或一个值。
2024-11-29 14:25:26 570
原创 MySQL多表查询
连接n个表至少需要n-1个连接条件。比如,连接三个表,至少需要两个连接条件UNION:会执行去重操作UNION ALL:不会执行去重操作1.UNION(只有一份相交(即相同的数据)的数据)2.UNION ALL (多了一份重复的数据)结论:如果明确知道合并数据后的结果数据不存在重复数据,或者不需要去除重复的数据,则尽量使用UNION ALL语句,以提高数据查询的效率。
2024-11-29 14:10:08 1082
原创 MySQL数据库排序与分页
使用LIMIT的好处约束返回结果的数量可以减少数据表的网络传输量,也可以提升查询效率。如果我们知道返回结果只有1 条,就可以使用LIMIT 1,告诉SELECT语句只需要返回一条记录即可。这样的好处就是SELECT不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。
2024-11-29 13:28:49 342
原创 MySQL运算符
LIKE运算符也可以匹配指定的字符串,但与REGEXP不同,LIKE匹配的字符串如果在文本中间出现,则找不到它,相应的行也不会返回。REGEXP在文本内进行匹配,如果被匹配的字符串在文本中出现,REGEXP将会找到它,相应的行也会被返回。OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。)运算符将给定的值的二进制数的所有位右移指定的位数。)运算符将给定的值的二进制数的所有位左移指定的位数。
2024-11-29 13:15:16 882
原创 MySQL之基本的SELECT语句
这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。主要的语句关键字包括CREATEDROPALTER等。
2024-11-29 12:29:09 617
原创 javaFile 类与 IO 流
处理流之三/四:数据流、对象流7.1数据流:DataOutputStream、DataInputStream作用– DataOutputStream:允许应用程序将基本数据类型、String 类型的变量写入输出流中– DataInputStream:允许应用程序以与机器无关的方式从底层输入流中读取基本数据类型、String 类型的变量。7.2对象流 DataInputStream① 自定义类需要实现接口:Serializable。
2024-11-28 11:44:26 847
原创 Java数据结构
自定义链表自定义单向链表/*单链表中的节点。节点是单向链表中基本的单元。每一个节点 Node都有两个属性:一个属性:是存储的数据。另一个属性:是下一个节点的内存地址。*/// 存储的数据// 下一个节点的内存地址Node next;/*链表类(单向链表)*/// 头节点// 向链表中添加元素的方法(向末尾添加)// 创建一个新的节点对象// 让之前单链表的末尾节点 next 指向新节点对象。// 有可能这个元素是第一个,也可能是第二个,也可能是第三个。
2024-11-27 12:36:46 808
原创 java泛型(Generic)
优点类型安全:泛型确保了集合只能存储特定类型的对象,从而避免了类型转换错误。代码重用:通过使用泛型,可以编写一个通用的集合类,适用于多种类型的对象,而不需要为每种类型编写单独的集合类。简洁性:泛型使代码更加简洁,不需要显式地声明类型参数,从而减少了代码量。缺点类型擦除:Java中的泛型是使用类型擦除实现的,这意味着在运行时泛型类型信息会被擦除。这可能导致在集合中无法进行某些类型特定的操作。性能开销:由于类型擦除,泛型集合在运行时可能需要进行额外的类型检查,这可能会带来一定的性能开销。复杂性。
2024-11-27 10:51:31 1149
原创 java集合及源码
数组在内存存储方面的特点– 数组初始化以后,长度就确定了。数组中的添加的元素是依次紧密排列的,有序的,可以重复的。– 数组声明的类型,就决定了进行元素初始化时的类型。不是此类型的变 量,就不能添加。arr[0] = 1;//编译报错– 可以存储基本数据类型值,也可以存储引用数据类型的变量• 数组在存储数据方面的弊端:– 数组初始化以后,长度就不可变了,不便于扩展– 数组中提供的属性和方法少,不便于进行添加、删除、插入、获取元素个数等操作,且效率不高。
2024-11-26 22:56:25 1042
原创 常用类和基础 API
(1)频繁的针对于字符串进行增、删、改等操作,建议使用StringBuffer或StringBuilder替换String. 因为使用String效率低。(2) 如果不涉及到线程安全问题,建议使用StringBuilder替换StringBuffer。因为使用StringBuilder效率高(3)如果需要大体确定要操作的字符的个数,建议使用带int capacity参数的构造器。因为可以避免底层多次扩容操作,性能更高。效率从高到低排列:/*
2024-11-25 22:39:56 599
原创 java异常
① 继承于现有的异常体系。通常继承于RuntimeException \ Exception② 通常提供几个重载的构造器③ 提供一个全局常量,声明为:static final long serialVersionUID;throw new MyException("人数为负值,不合理", 3);elseSystem.out.println("登记人数" + num);try {System.out.print("登记失败,出错种类" + e.getId());
2024-11-25 19:39:30 572
原创 面对对象高阶
抽象的类、方法abstract修饰类,此类称为抽象类抽象类不能实例化。抽象类中是包含构造器的,因为子类对象实例化时,需要直接或间接的调用到父类的构造器。抽象类中可以没有抽象方法。有抽象方法所在的类,一定是抽象类。abstract修饰方法此方法即为抽象方法抽象方法只有方法的声明,没有方法体。抽象方法其功能是确定的(通过方法的声明即可确定),只是不知道如何具体实现(体现为没有方法 体)子类必须重写父类中的所有的抽象方法之后,方可实例化。否则,此子类仍然是一个抽象类。
2024-11-25 18:43:08 887
原创 面对对象中阶
自下而上:定义了类B,C,D等,发现B、C、D有类似的属性和方法,则可以考虑将相同的属性和方法进行抽取, 封装到类A中,让类B、C、D继承于类A,同时,B、C、D中的相似的功能就可以删除了。继承的好处• 继承的出现减少了代码冗余,提高了代码的复用性。• 继承的出现,更有利于功能的扩展。• 继承的出现让类与类之间产生了 is-a 的关系,为多态的使用提供了前提。– 继承描述事物之间的所属关系,这种关系是:is-a 的关系。即父类 更通用、更一般,子类更具体。
2024-11-25 11:29:27 664
原创 面对对象初阶
类的实例化等价描述:类的实例化 创建类的对象 创建类的实例格式:类类型 对象名 = 通过new创建的对象实体举例: Phone p1 = new Phone();类的定义使用关键字:class。格式如下:修饰符class类名属性声明;方法声明;修饰符public:公共的protected:受保护的缺省(没有使用权限修饰符)private:私有的(以后常使用的)需要使用get(传输数据)与set(设置/修改/输入数据)方法//属性。
2024-11-25 01:15:49 379
原创 JAVA基础笔记3(选择结构+循环结构)
if-else 语句与 switch-case 语句比较• 结论:凡是使用 switch-case 的结构都可以转换为 if-else 结构。反之,不成立。• 开发经验:如果既可以使用 switch-case,又可以使用 if-else,建议使用 switchcase。因为效率稍高。• 细节对比:– if-else 语句优势• if 语句的条件是一个布尔类型值,if 条件表达式为 true 则进入分支,可以用于范围的判断,也可以用于等值的判断,使用范围更广。
2024-10-22 00:55:25 854
原创 JAVA基础笔记2(基本数据类型2+运算符)
*一.string基本理解1.string类:引用数据类型,俗称字符串2.String类型变量,可以使用“”赋值。3.String声明的字符串内部,可以包含0个或1个或多个字符二.string与基本数据类型变量之间的运算1.基本数据类型包含boolean在内的8种数据类型2.基本数据类型与string之间的运算,称为连接运算,使用“+”表示,结果为string类型。注意,必须是string与其他数据类型运算*///输出为s1//""里可以没有字符串。
2024-10-16 19:21:53 1155
原创 JAVA基础笔记1(变量与运算符+基本数据类型)
/定义圆周率赋值3.14//3个半径为1.2,2.5,6//求面积System.out.println("圆1的半径为 " + radius1 + ",面积为 " + area1);System.out.println("圆2的半径为 " + radius2 + ",面积为 " + area2);System.out.println("圆3的半径为 " + radius3 + ",面积为 " + area3);//字符类型:// char (2字节)
2024-10-11 23:46:01 1313
原创 使用C语言进行猜数
猜数是生活中会进行的一个小游戏,今天让我们一起来探索一下如何使用C语言实现猜数字。函数是程序的入口点。它首先初始化随机数生成器,然后进入一个循环,循环中会显示菜单并等待玩家输入。根据玩家的选择,调用相应的函数。首先生成一个1到100之间的随机数,然后让玩家不断猜测这个数字,直到猜对为止。代码中没有对用户输入进行验证,如果用户输入的不是数字,程序可能会崩溃。游戏结束后,程序会退出循环,但不会自动清理随机数生成器的状态。生成的随机数范围是1到100,如果需要生成其他范围的随机数,可以调整这个表达式。
2024-10-05 16:36:26 479
原创 使用C语言判断平年和闰年
平年和闰年的主要区别在于一年的天数和2月份的天数。平年有365天,其中2月份有28天;而闰年有366天,2月份有29天。这是为了弥补地球绕太阳公转的实际时间与公历规定的时间之间的差异。
2024-10-03 11:08:52 1437
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人