Day015

本文介绍了如何使用DOM操作添加、移除等节点操作,并提供了SQL表创建与数据操作的具体实例,包括插入、更新和删除记录。

1.DOM 操作怎样添加、移除、移动、复制、创建和查找节点?

1、创建新节点

创建一个具体的元素: createElement()

创建一个文本节点:createTextNode()

2、添加、移除、替换、插入

添加:appendChild()

移除:removeChild()

替换:replaceChild()

插入:insertBefore() 在已有的子节点前插入一个新的子节点

3、查找

通过标签名称:getElementsByTagName()

通过元素的Name属性的值:getElementsByName()

通过元素Id:getElementById()

2.将下边的记录插入到 food 表中

idnamecompanypriceproduce_timevalidity_timeaddress
1AA饼干AA饼干厂2.520133北京
2CC牛奶CC牛奶厂3.520142河北
3EE果冻EE果冻厂1.520151北京
4FF咖啡FF咖啡厂2020025天津
5GG奶糖GG奶糖厂1420173广东

1.写出创建表的 SQL 语句;

CREATE TABLE food(
    id INT PRIMARY KEY NOT NULL UNIQUE AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    company VARCHAR(30) NOT NULL,
    price FLOAT,
    produce_time YEAR,
    validity_time INT,
    address VARCHAR(50)
);

2.将下边的记录插入到 food 表中

idnamecompanypriceproduce_timevalidity_timeaddress
1AA饼干AA饼干厂2.520133北京
2CC牛奶CC牛奶厂3.520142河北
3EE果冻EE果冻厂1.520151北京
4FF咖啡FF咖啡厂2020025天津
5GG奶糖GG奶糖厂1420173广东

INSERT  INTO  food  VALUES(NULL,'AA饼干','AA饼干厂', 2.5 ,'2013', 3 ,'北京');
INSERT  INTO  food  VALUES(NULL,'CC牛奶','CC牛奶厂', 3.5 ,'2014', 2 ,'河北');
INSERT  INTO  food  VALUES(NULL,'EE果冻','EE果冻厂', 1.5 ,'2015', 1 ,'北京');
INSERT  INTO  food  VALUES(NULL,'FF咖啡','FF咖啡厂', 20 ,'2002', 5 ,'天津');
INSERT  INTO  food  VALUES(NULL,'GG奶糖','GG奶糖', 14 ,'2017', 3 ,'广东');
3.将「CC牛奶厂」的厂址(address)改为「内蒙古」,并且将价格改为 3.2。

UPDATE food SET address='内蒙古',price=3.2 WHERE name='CC牛奶';

4.将厂址在北京的公司保质期(validity_time)都改为 5 年。

UPDATE food SET validity_time=5 WHERE address='北京';

5.删除过期食品的记录。若当前时间-生产年份(produce_time)>保质期(validity_time),则视为过期食品。

DELETE FROM food WHERE validity_time < (YEAR(NOW())-produce_time);

6.删除厂址为北京的食品的记录。

        DELETE FROM food WHERE address='北京';

3.将 100 元纸币兑换成 10 元、5 元和 1元纸币共 20 张,输出各种兑换法,并统计个数。
package demo03;
/**将 100 元纸币兑换成 10 元、5 元和 1元纸币共 20 张
 * ,输出各种兑换法,并统计个数。
 * @author 26966
 */
public class Day015 {
	public static void main(String[] args) {
		int x,y,z,count=0;
		//可以存在10元的张数
       for(x=0;x<=10;x++)
    	   //可以存在5元的张数
    	   for(y=0;y<=20;y++)
    		   //可以存在1元的张数
    		   for(z=0;z<=100;z++)
    			   //利用If语句挑出符合要求的张数
    			   if(x+y+z==20&&10*x+5*y+z==100) {
    				   //每找到一个符合条件的count加1
    				   count++;
    				   //输出每次符合要求的张数
    				   System.out.println("10元张数:" + x + ", 5元张数" + y + ", 1元张数:" + z);
    			   }
    	//输出最后的count  
       System.out.println("一共有" + count + "种兑换方法。");
	}
}

结果

10元张数:0, 5元张数20, 1元张数:0
10元张数:4, 5元张数11, 1元张数:5
10元张数:8, 5元张数2, 1元张数:10
一共有3种兑换方法。

SELECT * FROM ( <#assign year = startDate[0..3]?number> <#assign month = startDate[4..5]?number> <#assign day = startDate[6..7]?number> <#if month == 12 && day == 31> <#assign nextYear = year + 1> <#assign nextMonth = "01"> <#assign nextDay = "01"> <#else> <#assign nextYear = year> <#assign nextMonth = month> <#assign nextDay = day + 1> <#if (month == 1 && day == 31) || (month == 2 && day == 28) || (month == 2 && day == 29) || (month == 3 && day == 31) || (month == 4 && day == 30) || (month == 5 && day == 31) || (month == 6 && day == 30) || (month == 7 && day == 31) || (month == 8 && day == 31) || (month == 9 && day == 30) || (month == 10 && day == 31) || (month == 11 && day == 30) || (month == 12 && day == 31)> <#assign nextMonth = month + 1> <#assign nextDay = "01"> </#if> </#if> <#assign startYear = startDate[0..3]?number> <#assign endYear = nextDay[0..3]?number> ( SELECT '${startDate}' as startDate , '${nextDay}' as endDate,'cur' as year FROM dual <#list startYear..endYear as year> <#if !isFirst>union all</#if> select '${startDate}' as startDate , '${nextDay}' as endDate,'${year?c}' as year FROM dual </#list>)cc 2025-07-19 21:54:41.015 [http-nio-7001-exec-10] ERROR freemarker.runtime:60 - Error executing FreeMarker template freemarker.core._MiscTemplateException: Range end index 3 is out of bounds, because the sliced string has only 2 character(s). (Note that indices are 0-based). The blamed expression: ==> 0..3 [in template "template" at line 19, column 28] ----问题修复
最新发布
07-20
在 FreeMarker 模板中,当遇到类似 `StringIndexOutOfBoundsException: String index out of range` 的错误时,通常是因为尝试对一个字符串进行截取操作,而该字符串的长度不足,无法满足指定的索引范围。例如,尝试获取字符串的前 5 个字符,但字符串本身只有 3 个字符,这就会导致索引越界异常。 为了解决此类问题,可以在进行字符串截取之前,先检查字符串的长度是否满足要求。以下是一个 FreeMarker 模板中的示例代码,展示如何安全地进行字符串截取: ```ftl <#assign str = "example"> <#if str?length >= 5> ${str[0..4]} <#else> ${str} </#if> ``` 上述代码首先定义了一个变量 `str` 并赋值为 `"example"`。接着使用 `<#if>` 指令检查 `str` 的长度是否大于等于 5。如果条件成立,则使用 `str[0..4]` 截取前 5 个字符;否则,直接输出 `str` 的值。这样可以有效避免因字符串长度不足而导致的索引越界错误[^3]。 此外,确保在模板中处理的数据已经在业务逻辑层进行了充分的验证和清理,以减少模板中出现错误的可能性。例如,在将数据传递给 FreeMarker 模板之前,可以在 Java 代码中对字符串进行预处理,确保其长度符合预期。 对于依赖管理,确保项目中正确引入了 FreeMarker 的相关依赖,以便能够顺利使用其功能。如果使用的是 Spring Boot 项目,可以在 `pom.xml` 文件中添加以下依赖配置: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> ``` 通过这种方式,可以确保项目中所有必要的 FreeMarker 组件都被正确加载,从而避免因缺少依赖而导致的各种运行时错误[^2]。 最后,保持对 FreeMarker 模板语法的熟悉和理解,有助于更好地利用其提供的各种特性,同时也能更有效地排查和解决可能出现的问题。例如,了解如何正确使用条件语句、循环结构以及变量赋值等基本概念,都是编写高效、稳定的 FreeMarker 模板的基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值