关于盒子模型
盒子模型的种类有几种?
标准盒子模型和IE盒子模型。
分别是什么?
标准盒子模型的尺寸由元素的内容区域(content)、内边距(padding)、边框(border)和外边距(margin)组成,内边距和边框都在内容区域之内。
IE盒子模型的尺寸由元素的内容区域(content+padding+border)和外边距(margin)组成,内边距和边框在内容区域之外。
容器中使用display属性有几种值?都是什么意思?
容器中使用display属性的值有以下几种:
- block:将元素显示为块级元素,即独占一行,可以设置宽度、高度、边距等。
- inline:将元素显示为行内元素,即不独占一行,宽度、高度、边距等由内容决定。
- inline-block:将元素显示为行内块级元素,即既可以设置宽度、高度、边距等,也可以设置块级元素的特性。
- none:元素不会显示,不占用任何空间。
- table:将元素显示为表格,即可以设置宽度、高度、边距等,但不能设置浮动。
- table-row:将元素显示为表格行,即可以设置宽度、高度、边距等,但不能设置浮动。
- table-cell:将元素显示为表格单元格,即可以设置宽度、高度、边距等,但不能设置浮动。
这些值的作用是用来控制元素在页面上的位置和布局方式。
弹性盒子属性flex-direction的值有几种?都是什么意思?
弹性盒子属性flex-direction的值有以下几种:
- row:水平方向排列,主轴为水平方向。
- row-reverse:水平方向倒序排列,主轴为水平方向。
- column:垂直方向排列,主轴为垂直方向。
- column-reverse:垂直方向倒序排列,主轴为垂直方向。
这些值的作用是用来控制弹性盒子中子元素的排列方式,主轴的方向决定了子元素的排列方向。
如何使用原生JS让第二个span呢内容变为红色
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
请点击json按钮,查看语义结果!原生JS获取第二个span元素,并修改其样式属性color为红色。
const div = document.querySelector('div');
const span2 = div.querySelector('span:nth-child(2)');
span2.style.color = 'red';
解释:
- 首先使用
document.querySelector
方法获取第一个div
元素。 - 然后使用
:nth-child
伪类选择第二个span
元素。 - 最后使用
span.style.color
修改其样式属性color为红色。
数据库中的锁包括什么?
数据库中的锁包括排它锁和共享锁,排它锁又称为写锁,共享锁又称为读锁。
排他锁(写锁)
排它锁是一种锁的类型,也称为写锁。当一个事务对一个数据对象加上排它锁时,它将阻止其他事务对该数据对象进行任何操作,直到该事务释放该锁。这意味着,排它锁可以防止其他事务修改或删除该数据对象,从而确保事务的一致性和完整性。
共享锁(读锁)
共享锁是一种锁的类型,也称为读锁。当一个事务对一个数据对象加上共享锁时,它将阻止其他事务对该数据对象进行任何操作,直到该事务释放该锁。这意味着,共享锁可以防止其他事务修改或删除该数据对象,但允许其他事务读取该数据对象。共享锁可以提高并发性能,因为它允许多个事务同时读取同一个数据对象,而不会互相干扰。
编写一个编程,将a.txt文件中的单词与b.txt文件中的单词交替输出到控制台
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
public class AlternateFileReader {
public static void main(String[] args) {
try (BufferedReader fileReaderA = new BufferedReader(new FileReader("a.txt"));
BufferedReader fileReaderB = new BufferedReader(new FileReader("b.txt"))) {
String line;
String[] wordsA = new String[100];
String[] wordsB = new String[100];
// 读取文件中的单词到数组中
while ((line = fileReaderA.readLine()) != null) {
wordsA[line.length()] = line;
}
while ((line = fileReaderB.readLine()) != null) {
wordsB[line.length()] = line;
}
// 使用Arrays.sort()函数对数组进行排序
Arrays.sort(wordsA);
Arrays.sort(wordsB);
// 交替输出两个数组中的单词
int indexA = 0;
int indexB = 0;
while (indexA < wordsA.length || indexB < wordsB.length) {
if (indexA < wordsA.length && indexB < wordsB.length) {
System.out.print(wordsA[indexA] + " " + wordsB[indexB] + " ");
} else if (indexA < wordsA.length) {
System.out.print(wordsA[indexA] + " ");
} else if (indexB < wordsB.length) {
System.out.print(wordsB[indexB] + " ");
}
indexA++;
indexB++;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
给你一组字符串如:7i8hy4jjnb2.让你编程输出里面的数字:7842
public class FilterChar {
public static void main(String[] args) {
String s = "7i8hy4jjnb2";
String newStr = s.replaceAll("[a-z]", "");
System.out.println(newStr);
}
}
HashMap和 HashTable的区别
HashMap和HashTable的区别在于HashMap是非线程安全的,而HashTable是线程安全的。此外,HashMap不保证映射的顺序,而HashTable保证映射的顺序。
请写出遍历HashMap<String,0bject>的代码
public static void main(String[] args){
Map<String,String> map = new HashMap<String,String>;
map.put("小明","小红");
map.put("小白","小青");
//因为HashMap的底层是由多个entry组成的,所以使用entry来接map.entrySet()
for(Map.Entry<String,String> entry : map.entrySet()){
//这里就可以打印对应的key和value
System.out.println("方法一对应的key:"+entry .getKey()+"值"+entry.getValue());
}
spring的两种代理JDK和CGLIB的区别
1、JDK代理使用的是反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
CGLIB代理使用字节码处理框架ASM,对代理对象类的class文件加载进来,通过修改字节码生成子类。
2、JDK创建代理对象效率较高,执行效率较低;
CGLIB创建代理对象效率较低,执行效率高。
3、JDK动态代理机制是委托机制,只能对实现接口的类生成代理,通过反射动态实现接口类;
CGLIB则使用的继承机制,针对类实现代理,被代理类和代理类是继承关系,所以代理类是可以赋值给被代理类的,因为是继承机制,不能代理final修饰的类。
简述 spring 创建Bean的生命周期
创建Bean的生命周期可以分为以下几个阶段:
- 实例化Bean:通过反射或者CGLib生成Bean的实例对象。
- Bean属性赋值:将Bean的属性值赋值给实例对象。
- Bean后置处理器初始化:Bean后置处理器可以对Bean进行一些初始化操作,比如数据源初始化、事务管理初始化等。
- Bean初始化前处理:Bean初始化前处理可以对Bean进行一些自定义的初始化操作,比如调用Bean的构造函数、初始化缓存等。
- Bean初始化:将Bean的属性值设置为指定值,比如将Bean的属性值设置为从数据库中获取的数据。
- Bean后置处理器处理:Bean后置处理器可以对Bean进行一些后置处理操作,比如数据源关闭、事务管理提交等。
- Bean销毁前处理:Bean销毁前处理可以对Bean进行一些自定义的销毁操作,比如释放资源、回滚事务等。
- Bean销毁:将Bean从内存中清除,释放资源。
- Bean后置处理器销毁:Bean后置处理器可以对Bean进行一些后置销毁操作,比如关闭资源、回滚事务等。
需要注意的是,Spring的Bean生命周期是可配置的,可以通过配置文件或者注解来控制Bean的生命周期。同时,Spring还提供了一些扩展点,可以通过扩展来实现自定义的Bean生命周期。
Mybatis修改一个对象时,部分字段为空时不修改,怎么编写SQL语句(动态SQL语句)
<update id="updateUser" parameterType="User">
UPDATE user SET
<if test="username != null">username=#{username},</if>
<if test="password != null">password=#{password},</if>
<if test="email != null">email=#{email},</if>
<if test="phone != null">phone=#{phone},</if>
<if test="address != null">address=#{address},</if>
WHERE id=#{id}
</update>
SpringAOP代理中有几种方式,分别是什么,有什么特点?
什么叫事务传播行为? Spring支持几种事务传播行为?都是什么
两种代理模式
一种是jdk动态代理,另外一种是cglib代理。
JDK动态代理是JDK原生的,不需要任何依赖即可使用
使用CGLib代理的类,不需要实现接口,因为CGLib生成的代理类是直接继承自需
要被代理的类;
什么叫事务传播行为? Spring支持几种事务传播行为?都是什么?(10分)
事务传播行为指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何运行.
7种:(required / supports / mandatory / requires_new /
not supported / never / nested)