Day019

本文探讨了JSP中动态include与静态include的区别,分析了它们在代码融合、编译指令处理及变量包含等方面的差异。此外,还介绍了数据库连接池的概念及其如何提升数据库操作性能,最后对比了HashMap与Hashtable的不同之处。

JSP

JSP 中动态 include 与静态 include 的区别?

1)静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体的servlet;而动态导入则在servlet中使用include方法来引入被导入页面的内容。

2)静态导入时被导入的页面的编译指令会起作用,而动态导入时被导入的页面的编译指令则失去作用,只是插入被导入页面的body内容。

3)动态包含可以包含相同变量,而静态包含不行。

4)如果被包含文件经常变动,则应该使用动态包含,而使用静态包含时,改变被包含文件后,有可能不能及时更新

Java

什么是数据库连接池?

数据库连接是一种有限的昂贵的资源, 数据库连接影响到程序的性能指标。 数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、
管理和释放数据库连接, 它允许应用程序重复使用一个现有的数据库连接, 而再不是重新建立一个;
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数 据库连接而引起的数据库连接遗漏。 这项技术能明显提高对数据库操作的性能。

Java

HashMap 和 Hashtable 的区别?

1 HashMap不是线程安全的

        HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null

key和null value,而hashtable不允许。

2 HashTable是线程安全。

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap
就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差

package com.main; import org.junit.jupiter.api.*; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvFileSource; import org.mockito.InjectMocks; import org.mockito.Mock; import java.util.function.Predicate; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.when; class NextDate019Test { @BeforeEach void setUp() { } @AfterEach void tearDown() { } @Mock private IParamVerify iParamVerify; @InjectMocks NextDate019 nextDateMock019; @ParameterizedTest @CsvFileSource(resources = "/com/main/nextDay.csv", numLinesToSkip = 1) @DisplayName("参数化测试&Mockito-@CsvFileSource-Csv格式文件提供数据") void nextDateVerifyParaWithMockitoAndParameter(String year, String month, String day) { // 定义一个 Predicate,根据是否抛出异常返回 true/false Predicate<String> intCheck = s -> { try { // 可能抛出异常的操作(例如校验逻辑) //转换为整数 Integer.parseInt(s); return true; // 无异常返回 true } catch (Exception e) { return false; // 捕获异常返回 false } }; //年是否为整数 if (intCheck.test(year)) { when(iParamVerify.IsInt(year)).thenReturn(true); //正式开始测试自己的东西 assertEquals("201", nextDateMock019.NextDateVerifyPara(year, month, day)); } else { when(iParamVerify.IsInt(year)).thenReturn(false); //正式开始测试自己的东西 assertEquals("201", nextDateMock019.NextDateVerifyPara(year, month, day)); } //月是否为整数 if (intCheck.test(month)) { when(iParamVerify.IsInt(month)).thenReturn(true); //正式开始测试自己的东西 assertEquals("201", nextDateMock019.NextDateVerifyPara(year, month, day)); } else { when(iParamVerify.IsInt(year)).thenReturn(false); //正式开始测试自己的东西 assertEquals("201", nextDateMock019.NextDateVerifyPara(year, month, day)); } //日是否为整数 if (intCheck.test(day)) { when(iParamVerify.IsInt(month)).thenReturn(true); //正式开始测试自己的东西 assertEquals("203", nextDateMock019.NextDateVerifyPara(year, month, day)); } else { when(iParamVerify.IsInt(day)).thenReturn(false); //正式开始测试自己的东西 assertEquals("203", nextDateMock019.NextDateVerifyPara(year, month, day)); } } }
03-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值