当前位置: 首页 > news >正文

【JavaWeb】复习重点内容

在这里插入图片描述

✅✅作者主页:🔗孙不坚1208的博客
🔥🔥精选专栏:🔗JavaWeb从入门到精通(持续更新中)
📋📋 本文摘要:本篇文章主要分享JavaWeb的学习重点内容。

💞💞觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论💬支持博主🤞
👉 👉你的一键三连是我更新的最大动力❤️❤️

JavaWeb复习重点

      • 一、问答题7个左右,共40分
        • 1.Servlet的定义、配置(使用xml或注解)
        • 2.重定向与请求转发的区别,使用API完成重定向和转发
        • 3.重定向与请求转发的优缺点
        • 4.给出了Servlet的代码实现,让大家用JSP来实现该功能
        • 5.JavaBean的规范,应该详细掌握
        • 6.给出了Servlet的代码实现,让大家用JSTL来实现该功能
        • 7.过滤器的概念,写出一个过滤器类
        • 8.JPA中实体类、以及实体关系映射,一对一、一对多
        • 9.Spring控制器的类的编写、路径的配置、注入组件、返回Json数据
      • 二、编程题4个题,共60分
        • 1.题目给出了数据库、表等信息,要求使用JDBC完成增删改查这些操作,可能需要事务
        • 2.编写Servlet接收请求参数,并保存到某个作用域
        • 3.JPA的编程题,题目给出数据库和表,让大家使用JPA完成实体类及使用EntityManager完成增删改查操作
        • 4.JSP+Servet+JavaBean开发模式完成系统功能

javaweb期末题型有2大类:问答题、编程题

一、问答题7个左右,共40分

1.Servlet的定义、配置(使用xml或注解)

Servlet是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。

Servlet的配置有xml和注解两种方式

xml方式:

<servlet><servlet-name>demo1</servlet-name><!--全类名--><servlet-class>web.servlet.ServletDemo</servlet-class>
</servlet><servlet-mapping><servlet-name>demo</servlet-name><!--url访问的资源名--><url-pattern>/index</url-pattern>
</servlet-mapping>

注解方式:在类上使用注解@WebServlet注解配置

@WebServlet("/demo")
public class ServletDemo implements Servlet {// 实现Servlet接口
}

2.重定向与请求转发的区别,使用API完成重定向和转发

重定向(Redirect)和请求转发(Forward)是两种不同的HTTP请求处理机制。

重定向是在接收到请求后,服务器向客户端返回一个特殊的响应,指示客户端重新向指定的url发送请求,这个过程是完全由客户端完成的,客户端会发送一个新的请求到指定的url,并接收新的响应。重定向经常被用来处理资源的移动,url的更改,或者是需要访问其他网站的情况。

请求转发则是在服务器端将请求转发给另一个资源进行处理,这个过程是在服务器内部完成的。客户端发送请求到服务器,服务器会将请求转发到另一个资源进行处理,然后将处理结果返回给客户端。请求转发经常被用来组合多个资源进行处理,例如在JSP中使用include指令将多个JSP页面组合在一起。

重定向:

response.sendRedirect("http://www.example.com");

转发:

RequestDispatcher dispatcher = request.getRequestDispatcher("/example.jsp");
dispatcher.forward(request, response);

在以上示例代码中,responserequestjavax.servlet.http.HttpServletResponsejavax.servlet.http.HttpServletRequest的实例对象。重定向通过调用sendRedirect()方法并传入要重定向到的URL字符串来实现。请求转发则通过创建一个RequestDispatcher对象,该对象通过getRequestDispatcher()方法获取,并传入要转发到的资源的路径,然后调用forward()方法来实现。在请求转发中,requestresponse对象被传递给了要转发到的资源。

需要注意的是,重定向会向客户端发送一个新的请求,因此客户端的URL会发生改变,而请求转发是在服务器内部完成的,客户端的URL不会改变。

3.重定向与请求转发的优缺点

重定向的优点:

  1. 简单易用:使用response.sendRedirect()方法非常简单,可以很容易地将客户端重定向到其他URL。
  2. 安全性高:重定向会向客户端发送一个新的请求,因此客户端的URL会发生改变,可以避免某些安全漏洞,比如在表单提交后刷新页面导致的重复提交等。

重定向的缺点:

  1. 频繁网络请求:重定向会向客户端发送一个新的请求,会导致网络请求的增加,影响性能。
  2. 无法访问原始请求对象:重定向会生成一个新的请求对象,因此无法访问原始请求对象,如原始的HTTP请求头等。

请求转发的优点:

  1. 性能高:请求转发是在服务器内部完成的,不会向客户端发送新的请求,因此不会增加网络请求,性能比较高。
  2. 可以访问原始请求对象:请求转发可以访问原始请求对象,如原始的HTTP请求头等。

请求转发的缺点:

  1. 不适用于跨域请求:由于请求转发只能转发到同一Web应用程序中的资源,因此不能用于跨域请求。
  2. 不支持修改URL:请求转发是在服务器内部完成的,客户端无法感知,也无法修改URL。

4.给出了Servlet的代码实现,让大家用JSP来实现该功能

这个参考课本

使用JSP实现重定向和请求转发的示例代码:

重定向:

<%response.sendRedirect("http://www.example.com");
%>

请求转发:

<jsp:forward page="/example.jsp" />

5.JavaBean的规范,应该详细掌握

JavaBean是一种符合Java语言规范的特殊类,通常用于存储和操作数据。JavaBean类应该遵循以下规范:

  1. 应该提供一个无参的构造方法:JavaBean的构造方法应该是无参的,这样可以方便地在其他类中创建JavaBean的实例。无参构造方法可以通过手动编写或者使用编译器自动生成的方式实现。
  2. 所有属性应该私有化:JavaBean的属性应该使用private修饰符进行私有化,通过提供公共的getter和setter方法来访问属性。
  3. getter和setter方法的命名应该符合JavaBean命名规范:JavaBean的getter和setter方法应该遵循一定的命名规范。getter方法的名称应该以“get”开头,setter方法的名称应该以“set”开头,后面跟着属性名的首字母大写的形式。
  4. 应该提供默认的toString方法:JavaBean应该提供一个默认的toString方法,以便在调试和日志记录时方便查看JavaBean的属性值。
  5. 应该提供其他有用的方法:除了getter和setter方法以外,JavaBean还可以提供一些其他的有用方法,例如校验方法、计算方法等。

6.给出了Servlet的代码实现,让大家用JSTL来实现该功能

这个参考课本

JSTL(JavaServer Pages Standard Tag Library)是一个标准的JSP标签库,提供了一些常用的标签,可以方便地实现一些常见的操作,包括重定向和转发。以下是使用JSTL实现重定向和转发的示例代码:

重定向:

<c:redirect url="http://www.example.com" />

以上代码中,<c:redirect>标签用于实现重定向,url属性指定要重定向到的URL字符串。

请求转发:

<c:forward page="/example.jsp" />

以上代码中,<c:forward>标签用于实现请求转发,page属性指定要转发到的JSP页面的路径。

7.过滤器的概念,写出一个过滤器类

过滤器(Filter)是Java Web应用程序中的一个重要组件,可以拦截客户端请求和服务器响应,对它们进行预处理和后处理,实现一些通用的功能,例如日志记录、权限控制、字符编码转换等。

一个过滤器类必须实现javax.servlet.Filter接口,并重写其中的doFilter()方法。以下是一个简单的过滤器类的示例代码,实现了字符编码转换的功能:

import javax.servlet.*;
import java.io.IOException;@WebFilter(filterName = "CharacterEncodingFilter", urlPatterns = "/*")
public class CharacterEncodingFilter implements Filter {private String encoding;public void init(FilterConfig config) throws ServletException {// 读取初始化参数,设置字符编码encoding = config.getInitParameter("encoding");}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 设置请求和响应的字符编码request.setCharacterEncoding(encoding);response.setCharacterEncoding(encoding);// 调用后续的过滤器或Servlet/JSP处理请求chain.doFilter(request, response);}public void destroy() {// 释放资源}
}

以上代码中,使用@WebFilter注解配置了过滤器的名称和URL模式。filterName属性指定过滤器的名称,urlPatterns属性指定需要过滤的URL模式。在此示例中,过滤器会拦截所有的请求。

以上代码中,CharacterEncodingFilter类实现了javax.servlet.Filter接口,并重写了其中的init()doFilter()destroy()方法。init()方法在过滤器初始化时被调用,读取初始化参数并设置字符编码;doFilter()方法用于实现过滤功能,设置请求和响应的字符编码,并调用后续的过滤器或Servlet/JSP处理请求;destroy()方法在过滤器销毁时被调用,释放资源。

需要注意的是,过滤器配置除了注解的这种方式也可以在Web应用程序的web.xml文件中,通过过滤器链(Filter Chain)的方式实现多个过滤器的协同工作。过滤器的顺序可以通过<filter-mapping>元素中的<url-pattern>子元素来指定。

8.JPA中实体类、以及实体关系映射,一对一、一对多

在 JPA 中,实体类是指映射到数据库表的 Java 类。实体类通常具有以下特点:

  1. 实体类使用 @Entity 注解进行标记。
  2. 实体类的每个实例对应数据库表中的一行数据。
  3. 实体类的属性对应数据库表中的列。

JPA 中的实体关系映射用于描述实体类之间的关联关系,包括一对一、一对多、多对一和多对多关系。其中,一对一和一对多是较为常见的关系类型。

一对一关系映射示例:

@Entity
public class Person {@Idprivate Long id;private String name;@OneToOne(cascade = CascadeType.ALL)private Address address;
}@Entity
public class Address {@Idprivate Long id;private String street;private String city;private String country;@OneToOne(mappedBy = "address")private Person person;
}

上述代码中,PersonAddress 分别是两个实体类。它们之间的关系是一对一,通过 @OneToOne 注解进行映射。Person 实体类中的 address 属性使用 @OneToOne 注解,表示它与 Address 实体类是一对一关系。Address 实体类中的 person 属性也使用了 @OneToOne 注解,但是它的 mappedBy 属性指向了 Person 实体类的 address 属性,表示这是一个双向关联,并且由 Person 实体类来维护关系。

一对多关系映射示例:

@Entity
public class Department {@Idprivate Long id;private String name;@OneToMany(mappedBy = "department", cascade = CascadeType.ALL)private List<Employee> employees;
}@Entity
public class Employee {@Idprivate Long id;private String name;private String email;@ManyToOneprivate Department department;
}

上述代码中,DepartmentEmployee 分别是两个实体类。它们之间的关系是一对多,通过 @OneToMany@ManyToOne 注解进行映射。Department 实体类中的 employees 属性使用了 @OneToMany 注解,表示它与 Employee 实体类是一对多关系。Employee 实体类中的 department 属性使用了 @ManyToOne 注解,表示它与 Department 实体类是多对一关系,并且它的 department 属性指向了 Department 实体类的 employees 属性,表示这是一个双向关联,并且由 Department 实体类来维护关系。

需要注意的是,上述示例中使用了 JPA 中的级联操作(CascadeType.ALL),表示当父实体被删除时,子实体也将被删除。这种级联操作可能会对数据产生不可逆的影响,因此需要谨慎使用。

9.Spring控制器的类的编写、路径的配置、注入组件、返回Json数据

在 Spring 中,控制器是指负责处理请求和响应的组件,通常由一个 Java 类实现。以下是 Spring 控制器类的编写、路径配置、注入组件和返回 JSON 数据的示例:

@Controller
@RequestMapping("/api/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")@ResponseBodypublic User getUserById(@PathVariable Long id) {return userService.getUserById(id);}@PostMapping("/")@ResponseBodypublic User createUser(@RequestBody User user) {return userService.createUser(user);}@PutMapping("/{id}")@ResponseBodypublic User updateUser(@PathVariable Long id, @RequestBody User user) {return userService.updateUser(id, user);}@DeleteMapping("/{id}")@ResponseBodypublic void deleteUser(@PathVariable Long id) {userService.deleteUser(id);}}

在上述示例中,我们定义了一个名为 UserController 的控制器类,并使用 @Controller 注解标记它。@RequestMapping 注解用于配置控制器类的路径前缀,即 /api/users。这意味着,当请求的路径以 /api/users 开头时,Spring 将会把请求交给该控制器类来处理。

在控制器类中,我们使用了 @Autowired 注解来自动注入一个名为 userService 的组件。这里假设 UserService 是一个已经定义好的服务组件,可以使用 @Service 注解标记它。

控制器类中的方法使用了不同的 HTTP 方法注解,包括 @GetMapping@PostMapping@PutMapping@DeleteMapping,用于定义请求的 HTTP 方法类型。这些注解后面跟随的路径参数用于定义具体的请求路径。例如,@GetMapping("/{id}") 表示可以处理 /api/users/{id} 这样的 GET 请求。

在方法中,我们使用了 @ResponseBody 注解来表示将方法的返回值直接作为响应内容返回给客户端。这里,我们返回的是一个 User 类型的对象,Spring 会将它自动转换为 JSON 格式并返回给客户端。需要注意的是,为了能够让 Spring 自动完成 JSON 转换,我们需要在项目中引入相应的 JSON 库,例如 Jackson。

总的来说,Spring 控制器类提供了方便的方式来处理 HTTP 请求和响应,可以通过注解配置路径和 HTTP 方法,并且支持自动注入组件和返回 JSON 数据等常用功能。

二、编程题4个题,共60分

1.题目给出了数据库、表等信息,要求使用JDBC完成增删改查这些操作,可能需要事务

使用 JDBC 完成增删改查操作通常需要以下步骤:

  1. 加载数据库驱动。
  2. 建立数据库连接。
  3. 创建 Statement 或 PreparedStatement 对象。
  4. 执行 SQL 语句。
  5. 处理查询结果。
  6. 释放资源。

以下是一个使用 JDBC 实现增删改查操作的示例:

public class UserDao {private Connection conn;public UserDao(Connection conn) {this.conn = conn;}public void createUser(User user) throws SQLException {String sql = "INSERT INTO users(name, email, password) VALUES (?, ?, ?)";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, user.getName());stmt.setString(2, user.getEmail());stmt.setString(3, user.getPassword());stmt.executeUpdate();stmt.close();}public void updateUser(User user) throws SQLException {String sql = "UPDATE users SET name=?, email=?, password=? WHERE id=?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, user.getName());stmt.setString(2, user.getEmail());stmt.setString(3, user.getPassword());stmt.setLong(4, user.getId());stmt.executeUpdate();stmt.close();}public void deleteUser(long id) throws SQLException {String sql = "DELETE FROM users WHERE id=?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setLong(1, id);stmt.executeUpdate();stmt.close();}public User getUserById(long id) throws SQLException {String sql = "SELECT id, name, email, password FROM users WHERE id=?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setLong(1, id);ResultSet rs = stmt.executeQuery();User user = null;if (rs.next()) {user = new User();user.setId(rs.getLong("id"));user.setName(rs.getString("name"));user.setEmail(rs.getString("email"));user.setPassword(rs.getString("password"));}rs.close();stmt.close();return user;}}

上述代码中,我们定义了一个 UserDao 类,用于操作名为 users 的数据库表。其中的四个方法分别实现了创建用户、更新用户、删除用户和根据用户 ID 查询用户的功能。在这些方法中,我们使用了 PreparedStatement 对象来执行 SQL 语句,并通过设置占位符的方式传递参数。通过这种方式,可以有效避免 SQL 注入等安全问题。

如果需要使用事务,可以将上述方法放到一个事务中执行。以下是一个示例:

public void createUserWithTransaction(User user) throws SQLException {conn.setAutoCommit(false);try {createUser(user);conn.commit();} catch (SQLException e) {conn.rollback();throw e;} finally {conn.setAutoCommit(true);}
}

在这个方法中,我们通过将 autoCommit 属性设置为 false,来启用手动事务。在执行完所有操作后,我们可以选择提交或回滚事务。同时,为了保证代码的健壮性,需要在 finally 块中将 autoCommit 属性设置回 true

2.编写Servlet接收请求参数,并保存到某个作用域

@WebServlet("/example")
public class ExampleServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");String email = request.getParameter("email");String password = request.getParameter("password");// 将参数保存到 session 作用域HttpSession session = request.getSession();session.setAttribute("name", name);session.setAttribute("email", email);session.setAttribute("password", password);// 将参数保存到 request 作用域request.setAttribute("name", name);request.setAttribute("email", email);request.setAttribute("password", password);// 将参数保存到 application 作用域ServletContext context = getServletContext();context.setAttribute("name", name);context.setAttribute("email", email);context.setAttribute("password", password);// 重定向到结果页面response.sendRedirect(request.getContextPath() + "/result.jsp");}}

在上述代码中,我们在 doPost 方法中,分别将参数保存到 session、request 或 application 作用域中。在 session 中保存参数的方式与之前的示例类似,使用 request.getSession() 方法获取 HttpSession 对象,并调用其 setAttribute 方法将参数保存到 session 作用域中。

request 作用域中保存参数的方式也很类似,只需要使用 request.setAttribute 方法将参数保存到 request 作用域中即可。

application 作用域中保存参数也非常简单,只需要使用 getServletContext() 方法获取 ServletContext 对象,并调用其 setAttribute 方法将参数保存到 application 作用域中即可。

需要注意的是,在将参数保存到不同作用域中时,需要使用不同的对象来调用 setAttribute 方法。除此之外,其他代码与之前的示例相同,最终通过 response.sendRedirect 方法重定向到结果页面。

3.JPA的编程题,题目给出数据库和表,让大家使用JPA完成实体类及使用EntityManager完成增删改查操作

假设有一个表名为 user,包含以下字段:

FieldType
idINT
nameVARCHAR(100)
ageINT
emailVARCHAR(100)
passwordVARCHAR(100)

接下来,我们需要使用 JPA 完成实体类及使用 EntityManager 完成增删改查操作。

首先,我们需要定义一个实体类 User,对应 user 表中的一条记录:

@Entity
@Table(name = "user")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;private String name;private Integer age;private String email;private String password;// getters and setters
}

在上述代码中,我们使用 @Entity 注解表示这是一个实体类,使用 @Table 注解指定了实体对应的表名为 user。同时,我们在类中定义了实体对应的属性,并使用 @Id@GeneratedValue 注解表示该属性为实体的唯一标识,并指定了该属性的生成策略为自增长。

接下来,我们可以使用 EntityManager 对实体进行增删改查操作。以下是一个示例:

public class UserDao {@PersistenceContextprivate EntityManager entityManager;// 添加用户public void addUser(User user) {entityManager.persist(user);}// 根据 id 查询用户public User getUserById(Integer id) {return entityManager.find(User.class, id);}// 更新用户信息public void updateUser(User user) {entityManager.merge(user);}// 根据 id 删除用户public void deleteUserById(Integer id) {User user = entityManager.find(User.class, id);entityManager.remove(user);}}

在上述代码中,我们使用 @PersistenceContext 注解将 EntityManager 注入到 UserDao 类中。接着,我们定义了几个方法,分别用于添加、查询、更新和删除用户。

addUser 方法中,我们使用 EntityManagerpersist 方法将用户对象保存到数据库中。

getUserById 方法中,我们使用 EntityManagerfind 方法根据用户的唯一标识 id 查询用户信息,并将查询结果返回。

updateUser 方法中,我们使用 EntityManagermerge 方法将修改后的用户对象保存到数据库中。

deleteUserById 方法中,我们使用 EntityManagerremove 方法将根据用户的唯一标识 id 查询到的用户对象从数据库中删除。

需要注意的是,为了使用 EntityManager,我们需要将 JPA 的实现框架(如 Hibernate)配置到项目中,并在 persistence.xml 配置文件中配置数据源等信息。

4.JSP+Servet+JavaBean开发模式完成系统功能

JSP + Servlet + JavaBean 开发模式是一种经典的 Web 开发模式,它的核心是将前端页面(JSP)与后端业务逻辑(JavaBean)分离开来,通过 Servlet 充当中间层,完成两者之间的交互和协作。

以下是一个简单的示例:

1.首先,创建一个JavaBean来表示系统中的一个实体。例如,我们创建一个名为User的JavaBean来表示系统中的用户:

public class User {private String username;private String password;// getter and setter methods
}

2.接下来,创建一个Servlet来处理用户提交的数据。例如,我们创建一个名为LoginServlet的Servlet来处理用户登录请求:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");User user = new User();user.setUsername(username);user.setPassword(password);// 将User对象保存到Session作用域中request.getSession().setAttribute("user", user);// 转发到登录成功页面request.getRequestDispatcher("/success.jsp").forward(request, response);}
}

在Servlet中,我们首先获取用户提交的用户名和密码,然后创建一个User对象,并将其保存到Session作用域中。最后,我们使用请求转发将用户重定向到登录成功页面。

3.在Servlet中,我们首先获取用户提交的用户名和密码,然后创建一个User对象,并将其保存到Session作用域中。最后,我们使用请求转发将用户重定向到登录成功页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录成功</title>
</head>
<body><h1>欢迎您,${user.username}!</h1>
</body>
</html>

在JSP页面中,我们使用EL表达式来显示用户登录成功后的信息,例如用户的用户名。

4.最后,我们可以在Web应用程序中部署和运行这个示例,访问/login路径,提交用户名和密码,然后会被重定向到success.jsp页面,页面中显示登录成功后的信息。

这就是使用JSP+Servlet+JavaBean开发模式完成系统功能的基本流程。开发人员可以根据具体的业务需求进行修改和扩展。

相关文章:

【JavaWeb】复习重点内容

✅✅作者主页&#xff1a;&#x1f517;孙不坚1208的博客 &#x1f525;&#x1f525;精选专栏&#xff1a;&#x1f517;JavaWeb从入门到精通&#xff08;持续更新中&#xff09; &#x1f4cb;&#x1f4cb; 本文摘要&#xff1a;本篇文章主要分享JavaWeb的学习重点内容。 &a…...

基于粒子群改进的灰色神经网络的时间序列预测,PSO-GNN模型,神经网络案例之20

目标 灰色模型原理 神经网络原理 灰色神经网络原理 粒子群算法的原理 粒子群改进灰色神经网络原理 粒子群改进灰色神经网络的代码实现 效果图 结果分析 展望 灰色模型 基本思想是用原始数据组成原始序列(0),经累加生成法生成序列(1),它可以弱化原始数据的随机性,使其呈现…...

Java中的反射使用

1、获取Class对象的三种方式 1、对象调用Object类的getClass()方法&#xff08;对象.getClass()&#xff09; 2、调用类的class属性&#xff08;类名.class&#xff09; 3、调用Class类的静态方法&#xff08;Class.forName(“包名.类名”)&#xff09;常用 Student类 package…...

urho3d工具

AssetImporter 加载开放资源导入库支持的各种三维格式(http://assimp.sourceforge.net/)并保存Urho3D模型、动画、材质和场景文件。有关支持的格式列表&#xff0c;请参阅http://assimp.sourceforge.net/main_features_formats.html. Blender的另一种导出路径是使用Urho3D插件…...

HashMap数据结构

HashMap概述 HashMap是基于哈希表的Map接口实现的&#xff0c;它存储的是内容是键值对<key,value>映射。此类不保证映 射的顺序&#xff0c;假定哈希函数将元素适当的分布在各桶之间&#xff0c;可为基本操作(get和put)提供稳定的性能。 HashMap在JDK1.8以前数据结构和存…...

BFC的含义以及应用

什么是BFC? BFC全称是Block Formatting context&#xff0c;翻译过来就是块级格式化上下文。简单来说&#xff0c;BFC是一个完全独立的空间。让空间里的子元素不会影响到外面的布局。&#x1f603;&#x1f603;&#x1f603; 如何触发BFC呢&#xff1f; mdn给了如下方式&a…...

电脑技巧:分享8个Win11系统必备小技巧

目录 1、让任务栏显示“右键菜单” 2、任务栏置顶 3、还原经典右键菜单 4、Win11版任务管理器 5、新版AltTab 6、开始菜单不再卡 7、为Edge浏览器添加云母效果 8、自动切换日/夜模式 Win11在很多地方都做了调整&#xff0c;但由于涉及到诸多旧有习惯&#xff0c;再加上…...

C/C++每日一练(20230226)

目录 17. 电话号码的字母组合 37. 解数独 51. N 皇后 52. N皇后 II 89. 格雷编码 90. 子集 II 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电…...

Vue 3第二章:Vite文件目录结构及SFC语法

文章目录1. Vite 文件目录结构2. Vue3 SFC 语法规范介绍1. Vite 文件目录结构 Vue3 并没有强制规定文件目录结构&#xff0c;开发者可以按照自己喜欢的方式组织代码。不过&#xff0c;通常情况下&#xff0c;我们会按照以下方式组织文件目录&#xff1a; ├── public │ …...

Leetcode 剑指 Offer II 016. 不含重复字符的最长子字符串

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长…...

TCP 的演化史-sack 与 reordering metric

就着 TCP 本身说事&#xff0c;而不是高谈阔论关于它是如何不合时宜&#xff0c;然后摆出一个更务虚的更新。 从一个 case 开始。 按照现在 Linux TCP(遵守 RFC) 实现&#xff0c;以下是一个将会导致 reordering 更新的 sack 序列&#xff1a; 考虑一种情况&#xff0c;这两个…...

【Spring6】| Spring的入门程序、集成Log4j2日志框架

目录 一&#xff1a;Spring的入门程序 1. Spring的下载 2. Spring的jar文件 3. 第一个Spring程序 4. 第一个Spring程序详细剖析 5. Spring6启用Log4j2日志框架 一&#xff1a;Spring的入门程序 1. Spring的下载 官网地址&#xff1a;https://spring.io/ 官网地址&…...

包子凑数(完全背包)

小明几乎每天早晨都会在一家包子铺吃早餐。 他发现这家包子铺有 N 种蒸笼&#xff0c;其中第 i种蒸笼恰好能放 Ai 个包子。 每种蒸笼都有非常多笼&#xff0c;可以认为是无限笼。 每当有顾客想买 X 个包子&#xff0c;卖包子的大叔就会迅速选出若干笼包子来&#xff0c;使得这若…...

Spring超级全家桶,学完绝对是惊艳面试官的程度

前言Spring框架自2002年诞生以来一直备受开发者青睐&#xff0c;它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解决方案。有人亲切的称之为&#xff1a;Spring 全家桶。很多研发人员把spring看作心目中最好的java项目&#xff0c;没有之一。所以这是重点…...

Redis主要数据类型

Redis 是一个数据结构服务器。 Redis 的核心是提供一系列本机数据类型&#xff0c;可帮助您解决从缓存到队列再到事件处理的各种问题Redis主要数据类型&#xff1a;String&#xff08;字符串&#xff09;&#xff0c;Lists&#xff08;列表&#xff09;&#xff0c;Sets&#x…...

【Linux | ELK 8.2】搭建ELKB集群Ⅰ—— 实验环境说明和搭建Elasticsearch集群

目录1. 实验环境1.1 实验工具1.2 操作系统1.3 架构版本、IP地址规划与虚拟机配置要求1.4 拓扑图1.5 其他要求2. 实验步骤2.1 安装Elasticsearch&#xff08;单节点&#xff09;&#xff08;1&#xff09;检查系统jdk版本&#xff08;2&#xff09;下载elasticsearch&#xff08…...

不同情况下*p和*p的区别(指针)

一说到指针&#xff0c;不少同学就会觉得云里雾里。首先要明白&#xff0c;指针和地址是一个概念&#xff1b;然后明白指针和指针变量的区别。先理解地址和数据&#xff0c;想象内存里面是一个个的小盒子&#xff0c;每个盒子对应一个编号&#xff0c;这个编号就是地址&#xf…...

Vuex基础语法

Vuex vuex官网 文章目录Vuexvuex的工作原理图2.vuex的环境搭建3.vuex的使用1.actons2. mutations3.getters4.vuex中的map映射属性4.1 mapState和mapGetters4.2 mapMutations和mapActions5.vuex多组件通信1.通过计算属性获得2.通过mapState获得6.vuex模块化和命名空间6.1模块化…...

刚上岸字节测试开发岗,全网最真实的大厂面试真题

首先我来解释一下为什么说是全网最真实的面试题&#xff0c;相信大家也发现软件测试面试题在网上流传也已不少&#xff0c;但是经过仔细查看发现了两个很重要的问题。 第一&#xff0c;网上流传的面试题的答案并不能保证百分百正确。也就是说各位朋友辛辛苦苦花了很多时间准备…...

Mac监控键盘输入并执行动作

最新内容在我的另一个博客&#xff1a;Mac监控键盘输入并执行动作 背景 电脑的安全是非常重要的&#xff0c;特别是里面的敏感数据&#xff0c;若是被有心之人利用&#xff0c;那后果不堪设想。 所以我们部门定下了一个规矩&#xff0c;谁离开工位要是不锁屏&#xff0c;就可以…...

Transformer输出张量的值全部相同?!

Transformer输出张量的值全部相同&#xff1f;&#xff01;现象原因解决现象 输入经过TransformerEncoderLayer之后&#xff0c;基本所有输出都相同了。 核心代码如下&#xff0c; from torch.nn import TransformerEncoderLayer self.trans TransformerEncoderLayer(d_mode…...

港科夜闻|全国政协副主席梁振英先生率香港媒体高管团到访香港科大(广州)...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、全国政协副主席梁振英先生率香港媒体高管团到访香港科大(广州)。2月21日下午&#xff0c;在全国政协副主席、广州南沙粤港合作咨询委员会顾问梁振英先生的带领下&#xff0c;香港20余家媒体的高管及知名媒体人士到访香港科大…...

XML调用 CAPL Test Function

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…...

Linux网络配置(NAT)

在搭配好一台虚拟机的时候想要下载&#xff0c;安装些什么但一直失败这个时候就可以检查一下网络是否连接这里我们使用centos7举例子使用命令——ifconfig由此可见我们的系统中目前有3个网卡ens33——用于接入外网&#xff0c;该网卡默认关闭lo——用于访问本地网络&#xff0c…...

数据结构——第二章 线性表(8)——线性表总结

线性表总结 线性表是线性结构的基本形式&#xff0c;用于描述一组同类型而具有1:1线性关系的数据对象。将此类数据对象存放在计算机的内存中时&#xff0c;必须考虑数据元素的存放和数据元素之间关系的存放。常用的存储结构有顺序存结构和链式结构。 顺序表存储特点是用一维数…...

3.7寸按键翻页工牌

产品参数 产品型号 ESL_BWR3.7_BLE 产品尺寸 (mm) 62.51066.5 显示技术 E ink 显示区域 (mm) 47.32(H)81.12(V) 分辨率 (像素) 280480 像素尺寸(mm) 0.1690.169 150dpi 显示颜色 黑/白 视觉角度 180 工作温度 0℃ - 50℃ 电池 500mAh ( Type-C 充电…...

西北工业大学大学物理(II)选填解析2019-2020期末

2 又是考查“一个电子和一个光子具有相同的波长&#xff0c;则二者动量相等。”4 斯特恩盖拉赫实验&#xff0c;原子的自旋磁矩取向量子化。7 通常我们感受不到电子的波动性。因为其波长短&#xff0c;其实也就是粒子运动速率高。10 考查无限长直导线周围B分布。常见的模型要记…...

[计算机网络(第八版)]第一章 概述(章节测试/章节作业)

随堂作业 练习版(无答案版) 1.2 因特网概述 1【单选题】因特网的前身是1969年创建的第一个分组交换网 A、internetB、InternetC、NSFNETD、ARPANET 2【单选题】因特网采用的核心技术是 A、TCP/IPB、局域网技术C、远程通信技术D、光纤技术 1.3 三种交换方式&#xff1a;电路…...

华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典

文章目录2023 年用 Python 语言解华为 OD 机试题&#xff0c;一篇博客找全。华为 OD 机试题清单&#xff08;机试题库还在逐日更新&#xff09;2023 年用 Python 语言解华为 OD 机试题&#xff0c;一篇博客找全。 在 2023 年&#xff0c;Python 已成为广泛使用的编程语言之一&…...

电子科技大学数据库与软件工程三

适用于网工和物联网专业 目录 一、实验目的 二、实验内容 三、实验软件 四、实验步骤及数据记录 1.子查询 2. 伪列 3.数据库对象 4. 块、存储过程和触发器 五、实验结论及思考题 实验结论&#xff1a; 思考题&#xff1a; 六、总结及心得体会 七、对本实验过程及方…...