技术周总结 2024.05.20~05.26 (Java架构师 数据库理论 MyBatis)

文章目录

  • 一、 问题01 在数据库理论的阿姆斯特朗公理中的自反性规则指什么
      • 自反性(Reflexivity)详细解释
        • 自反性规则的形式化描述
        • 自反性规则的具体含义
        • 示例
      • 总结
  • 二、问题02: 数据库理论中的笛卡尔联结和自然联结区别
      • 笛卡尔联结(Cartesian Join)
      • 自然联结(Natural Join)
      • 区别总结
  • 三、 问题03 怎么成为java高级架构师
      • 1. 精通Java编程语言
      • 2. 掌握常用的框架和工具
      • 3. 学习设计模式和架构模式
      • 4. 获取数据库和SQL技能
      • 5. 了解分布式系统和中间件
      • 6. 学习DevOps和CI/CD
      • 7. 强化软技能
      • 8. 获取实践经验
      • 9. 持续学习和认证
      • 10. 社交和网络
  • 四、 问题04 数据库的三范式要怎么理解?
      • 第一范式(1NF)
      • 第二范式(2NF)
      • 第三范式(3NF)
      • 总结
  • 五、 问题05 Mybatis中的SqlSession的使用
      • `SqlSession` 的主要功能和作用
      • `SqlSession` 的使用示例
        • 1. 配置 MyBatis
        • 2. 创建 SqlSessionFactory
        • 3. 使用 SqlSession
      • 事务管理
      • 总结
  • 六、 问题06 数据库理论中的元组演算表达式
      • 基本概念
      • 元组关系演算(Tuple Relational Calculus, TRC)
      • 示例解释
      • 总结

一、 问题01 在数据库理论的阿姆斯特朗公理中的自反性规则指什么

在阿姆斯特朗公理中的自反性规则里,用到的符号代表的是关系模式中的属性集合。具体来说:

  • X、Y、Z:这些符号代表属性集合。属性集合是一组属性(字段),用来描述数据库关系中的数据。例如,若有一个关系 ( R(A, B, C) ),其中 ( A )、( B ) 和 ( C ) 是属性,那么 ( X )、( Y ) 或 ( Z ) 可以是这些属性的任意子集,例如 ({A, B}) 或 ({C})。

自反性(Reflexivity)详细解释

自反性(Reflexivity)是阿姆斯特朗公理中的一个基本规则,它描述了属性集合的一个子集总是由该属性集合决定的。

自反性规则的形式化描述
  • 形式化描述:如果 ( Y \subseteq X ),则 ( X \rightarrow Y )。
    • ( X ):属性集合
    • ( Y ):属性集合,且 ( Y ) 是 ( X ) 的子集
    • ( \rightarrow ):表示函数依赖
自反性规则的具体含义
  • 如果一个属性集合 ( Y ) 是另一个属性集合 ( X ) 的子集,那么 ( X ) 可以函数依赖地确定 ( Y )。
  • 直观理解:集合 ( X ) 包含的所有属性自然也包括 ( Y ) 中的属性,因此 ( X ) 可以唯一确定 ( Y )。
示例

考虑一个关系模式 ( R(A, B, C) ):

  • 如果我们有属性集合 ( X = {A, B} ),那么 ( {A, B} ) 自然包含 ( {A} ),因此根据自反性,( {A, B} \rightarrow {A} )。
  • 同样,如果我们有属性集合 ( X = {A, B, C} ),它包含 ( {A, C} ),因此 ( {A, B, C} \rightarrow {A, C} )。

总结

  • (X):表示一个属性集合,可以包含一个或多个属性。
  • (Y):表示 (X) 的子集。
  • (\subseteq):表示子集关系。
  • (\rightarrow):表示函数依赖关系。

自反性规则通过定义子集关系中的函数依赖,帮助我们理解和应用属性集合中的依赖关系。这是阿姆斯特朗公理中推导和操作函数依赖的基础之一。

二、问题02: 数据库理论中的笛卡尔联结和自然联结区别

在数据库理论中,笛卡尔联结(Cartesian Join)和自然联结(Natural Join)是两种不同的联结操作,它们在使用方式和结果上有显著的区别。以下是详细解释:

笛卡尔联结(Cartesian Join)

定义

  • 笛卡尔联结也称为笛卡尔积(Cartesian Product),是两个关系的所有可能元组的组合。它将关系 (R) 和 (S) 中的每个元组配对,生成一个新关系,其中包含 (R) 和 (S) 中所有元组的组合。

语法

  • 笛卡尔联结通常表示为 (R \times S)。

特点

  • 结果关系的元组数量是两个原关系元组数量的乘积。

  • 结果关系的属性是两个原关系属性的并集。

  • 笛卡尔联结通常会生成大量无意义的组合,因此在实际使用中很少直接使用。

示例

假设有两个关系:

  • (R(A, B)):

    
    A  B----1  23  4
  • (S(C, D)):

    
    C  D----5  67  8

笛卡尔联结 (R \times S) 的结果为:


A  B  C  D-----------1  2  5  61  2  7  83  4  5  63  4  7  8

自然联结(Natural Join)

定义

  • 自然联结是一种特殊的等值联结(Equi-Join),它根据两个关系中同名的属性进行联结,自动去除重复的属性列。

语法

  • 自然联结通常表示为 (R \bowtie S)。

特点

  • 自动根据同名的属性进行匹配,并将这些属性值相等的元组合并到结果关系中。

  • 结果关系中同名的属性只保留一份,去除重复的属性列。

示例

假设有两个关系:

  • (R(A, B, C)):

    
    A  B  C------1  2  34  5  6
  • (S(C, D)):

    
    C  D----3  76  8

自然联结 (R \bowtie S) 的结果为:


A  B  C  D-----------1  2  3  74  5  6  8

区别总结

  • 笛卡尔联结(Cartesian Join)

    • 结果为两个关系的所有可能元组的组合。

    • 不要求属性名匹配。

    • 结果可能包含大量无意义的组合。

    • 结果的属性是两个关系属性的并集。

  • 自然联结(Natural Join)

    • 根据同名属性进行匹配,自动去除重复的属性列。

    • 结果只包含同名属性值相等的元组组合。

    • 更常用,结果更有意义,避免了无意义的组合。

    • 结果的属性是两个关系属性的并集,但同名属性只保留一份。

理解这些区别有助于在数据库设计和查询优化中选择合适的联结操作,以确保查询结果的正确性和效率。

三、 问题03 怎么成为java高级架构师

成为一名Java高级架构师需要丰富的知识和经验,包括对Java编程语言的深刻理解、广泛的技术技能、优秀的设计模式知识以及良好的沟通和领导能力。以下是详细的步骤和建议:

1. 精通Java编程语言

  • 掌握基础:确保对Java基础知识有扎实的理解,包括面向对象编程(OOP)原理、数据结构和算法、异常处理、文件I/O、多线程和并发编程等。
  • 深入学习高级特性:熟悉Java的高级特性,如反射、泛型、lambda表达式、Stream API、JVM优化、垃圾回收机制等。

2. 掌握常用的框架和工具

  • Spring Framework:深入学习Spring Core、Spring Boot、Spring MVC、Spring Data、Spring Security等模块。
  • ORM框架:熟悉Hibernate、JPA等对象关系映射框架。
  • 构建工具:掌握Maven、Gradle等项目构建工具的使用。
  • 测试框架:熟悉JUnit、Mockito等测试框架,了解测试驱动开发(TDD)和行为驱动开发(BDD)。
  • 其他工具:了解常用的开发工具和IDE,如 IntelliJ IDEA、Eclipse。

3. 学习设计模式和架构模式

  • 设计模式:深入理解常见的设计模式,如单例模式、工厂模式、观察者模式、策略模式、装饰器模式等。
  • 架构模式:了解常用的架构模式,如微服务架构、服务化架构、事件驱动架构、CQRS(Command Query Responsibility Segregation)等。
  • SOLID原则:掌握SOLID设计原则,确保代码的可维护性和可扩展性。

4. 获取数据库和SQL技能

  • 关系型数据库:熟悉常见的关系型数据库,如MySQL、PostgreSQL、Oracle,了解SQL查询优化、事务管理等。
  • NoSQL数据库:了解NoSQL数据库,如MongoDB、Cassandra、Redis,了解其应用场景和使用方法。

5. 了解分布式系统和中间件

  • 分布式系统:理解分布式系统的基本原理,如CAP定理、一致性算法(如Paxos、Raft)、分布式事务等。
  • 消息队列:熟悉常用的消息队列中间件,如RabbitMQ、Kafka、ActiveMQ,了解消息传递、异步处理等。
  • 服务注册与发现:掌握如Eureka、Consul、Zookeeper等工具。

6. 学习DevOps和CI/CD

  • 持续集成和持续交付:了解Jenkins、GitLab CI、Travis CI等工具,熟悉CI/CD流程。
  • 容器化:掌握Docker、Kubernetes等容器技术,了解容器编排和管理。
  • 自动化部署:熟悉Ansible、Chef、Puppet等配置管理工具。

7. 强化软技能

  • 沟通能力:具备良好的沟通和协作能力,能够与开发团队、产品经理和其他利益相关者有效沟通。
  • 领导能力:能够领导技术团队,制定技术路线图,指导和培训初级开发人员。
  • 解决问题的能力:具备强大的分析和解决问题的能力,能够在复杂的技术环境中做出明智的决策。

8. 获取实践经验

  • 项目经验:通过参与或领导多个复杂项目,积累实际开发和架构设计经验。
  • 开源项目:参与开源项目,贡献代码,通过实际项目锻炼技能。
  • 实习和工作:寻找与架构设计相关的实习或工作机会,积累实践经验。

9. 持续学习和认证

  • 学习资源:保持对最新技术和趋势的关注,通过书籍、在线课程、技术博客等不断学习。
  • 技术认证:考虑获取一些权威的认证,如Oracle Certified Professional Java SE Programmer (OCPJP)、Certified Kubernetes Administrator (CKA) 等。

10. 社交和网络

  • 技术社区:参与技术社区活动,加入Java用户组,参加技术会议和研讨会。
  • 分享和交流:通过写博客、发表技术文章、做技术演讲等方式分享知识,提升自身影响力。

通过上述步骤和持续努力,逐步提升自己的技术水平和实践经验,你将能够成为一名优秀的Java高级架构师。

四、 问题04 数据库的三范式要怎么理解?

数据库的三范式(Third Normal Form, 3NF)是数据库设计中的一种规范化过程,旨在减少数据冗余和避免更新异常。理解数据库的三范式需要从第一范式(1NF)到第三范式(3NF)逐步学习。以下是详细的解释和示例:

第一范式(1NF)

定义

  • 第一范式要求所有字段的值都是原子的,不可再分的,即每个字段只能包含一个值,而不是一组或一个重复的组。

要求

  • 每列中的值是单一值(原子值)。
  • 每列中的值是相同类型的数据。
  • 每列必须有唯一的名称。
  • 列的顺序无关紧要。

示例
考虑一个包含学生信息的表:

学生ID学生姓名电话号码
1张三123456, 789012
2李四345678

这个表不符合1NF,因为“电话号码”列包含了多个电话号码。为了满足1NF,我们需要把每个电话号码分成单独的行:

学生ID学生姓名电话号码
1张三123456
1张三789012
2李四345678

第二范式(2NF)

定义

  • 第二范式在满足第一范式的基础上,要求每个非主属性完全依赖于主键,消除部分依赖。

要求

  • 表必须满足1NF。
  • 表中的非主属性必须完全依赖于主键。

部分依赖

  • 部分依赖是指非主属性依赖于主键的一部分(仅适用于复合主键)。

示例
考虑一个学生选课表:

学生ID课程ID学生姓名课程名
1101张三数学
2102李四英语

在这个表中,主键是(学生ID, 课程ID)。然而,学生姓名仅依赖于学生ID,课程名仅依赖于课程ID,这是部分依赖。为了满足2NF,我们需要将表分解:

学生表

学生ID学生姓名
1张三
2李四

课程表

课程ID课程名
101数学
102英语

学生选课表

学生ID课程ID
1101
2102

第三范式(3NF)

定义

  • 第三范式在满足第二范式的基础上,要求非主属性不传递依赖于主键,消除传递依赖。

要求

  • 表必须满足2NF。
  • 表中的非主属性必须直接依赖于主键,不能有传递依赖。

传递依赖

  • 传递依赖是指非主属性依赖于另一个非主属性,而这个非主属性又依赖于主键。

示例
考虑一个员工信息表:

员工ID员工姓名部门ID部门名
1张三10销售部
2李四20技术部

在这个表中,部门名依赖于部门ID,而部门ID依赖于员工ID,这是一个传递依赖。为了满足3NF,我们需要将表分解:

员工表

员工ID员工姓名部门ID
1张三10
2李四20

部门表

部门ID部门名
10销售部
20技术部

总结

  • 第一范式(1NF):所有字段的值都是原子的,不可再分。
  • 第二范式(2NF):在满足1NF的基础上,消除部分依赖,所有非主属性完全依赖于主键。
  • 第三范式(3NF):在满足2NF的基础上,消除传递依赖,所有非主属性直接依赖于主键。

通过逐步规范化,可以减少数据冗余,避免更新、插入和删除异常,确保数据的完整性和一致性。

五、 问题05 Mybatis中的SqlSession的使用

MyBatis 是一款优秀的持久层框架,它简化了 JDBC 的使用,并且在执行 SQL、存储过程和高级映射等方面提供了很大的灵活性。在 MyBatis 中,SqlSession 是一个非常重要的接口,负责与数据库交互。

SqlSession 的主要功能和作用

SqlSession 提供了一些基本的方法来执行 SQL 命令,并对数据库进行增删改查操作。以下是 SqlSession 的主要功能和作用:

  1. 执行 SQL 语句

    • 提供了执行 SQL 语句的方法,包括 select, insert, update, delete 等。
  2. 管理事务

    • 可以手动管理事务,提供了 commitrollback 方法。
  3. 获取 Mapper 接口的实现

    • 提供了获取 Mapper 接口实例的方法,使得可以通过接口的方式调用 SQL 语句。

SqlSession 的使用示例

1. 配置 MyBatis

首先,我们需要配置 MyBatis。通常使用 XML 配置文件(如 mybatis-config.xml)或 Java 配置类来配置 MyBatis。

XML 配置文件示例

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mydb"/><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments><mappers><mapper resource="com/example/mapper/UserMapper.xml"/></mappers>
</configuration>

Mapper XML 文件示例 (UserMapper.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.mapper.UserMapper"><select id="selectUser" parameterType="int" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select>
</mapper>
2. 创建 SqlSessionFactory
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.Reader;public class MyBatisUtil {private static SqlSessionFactory sqlSessionFactory;static {String resource = "mybatis-config.xml";try (Reader reader = Resources.getResourceAsReader(resource)) {sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getSqlSessionFactory() {return sqlSessionFactory;}
}
3. 使用 SqlSession
import com.example.mapper.UserMapper;
import com.example.model.User;
import org.apache.ibatis.session.SqlSession;public class UserService {public User getUserById(int id) {try (SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);return userMapper.selectUser(id);}}public void insertUser(User user) {try (SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);userMapper.insertUser(user);sqlSession.commit();  // 提交事务}}public void updateUser(User user) {try (SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);userMapper.updateUser(user);sqlSession.commit();  // 提交事务}}public void deleteUser(int id) {try (SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);userMapper.deleteUser(id);sqlSession.commit();  // 提交事务}}
}

事务管理

通过 SqlSession,可以手动控制事务的提交和回滚:

try (SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 执行数据库操作userMapper.updateUser(user);// 提交事务sqlSession.commit();
} catch (Exception e) {// 回滚事务sqlSession.rollback();e.printStackTrace();
}

总结

  • SqlSession 是 MyBatis 的核心接口,用于执行 SQL 命令、管理事务和获取 Mapper 接口的实现。
  • 通过 SqlSessionFactory 创建 SqlSession 实例。
  • 使用 SqlSession 进行数据库操作时,记得在操作完成后关闭 SqlSession,这可以使用 try-with-resources 语句来简化。
  • 通过 SqlSession 手动管理事务的提交和回滚,以确保数据一致性。

六、 问题06 数据库理论中的元组演算表达式

元组演算(Tuple Calculus)是一种描述查询语言,用于关系数据库理论中。它以数学逻辑为基础,提供了一种从关系中选择元组的方法。元组演算表达式使用谓词逻辑来描述查询条件。

基本概念

元组演算主要包括两种形式:

  1. 元组关系演算(TRC, Tuple Relational Calculus)
  2. 域关系演算(DRC, Domain Relational Calculus)

在这里,我们主要介绍元组关系演算。

元组关系演算(Tuple Relational Calculus, TRC)

在元组关系演算中,一个查询的结果是满足特定条件的元组的集合。每个元组演算表达式可以表示为:

[ { t \mid P(t) } ]

其中:

  • ( t ) 是结果元组。
  • ( P(t) ) 是关于 ( t ) 的谓词(条件)。

示例解释

假设有一个关系 Student,其模式为 (ID, Name, Age, Major)

例子 1:查询所有学生的名字和专业

元组演算表达式:

[ { t \mid \exists s (Student(s) \land t.Name = s.Name \land t.Major = s.Major) } ]

解释:

  • ( t ) 是结果元组。
  • ( s ) 是一个在 Student 关系中的元组。
  • 条件 Student(s) 表示 ( s ) 属于 Student 关系。
  • t.Name = s.Namet.Major = s.Major 表示结果元组 ( t ) 包含所有学生的名字和专业。

例子 2:查询所有年龄大于20岁的学生的ID和名字

元组演算表达式:

[ { t \mid \exists s (Student(s) \land s.Age > 20 \land t.ID = s.ID \land t.Name = s.Name) } ]

解释:

  • ( t ) 是结果元组。
  • ( s ) 是一个在 Student 关系中的元组。
  • 条件 Student(s) 表示 ( s ) 属于 Student 关系。
  • s.Age > 20 表示我们只选择年龄大于20岁的学生。
  • t.ID = s.IDt.Name = s.Name 表示结果元组 ( t ) 包含这些学生的ID和名字。

总结

  • 元组关系演算(TRC) 使用谓词逻辑描述查询条件,生成满足条件的元组的集合。
  • 表达式形式为 ({ t \mid P(t) }),其中 ( t ) 是结果元组,( P(t) ) 是谓词。
  • TRC 表达式更接近于自然语言描述,强调“是什么”。

通过理解这些概念和示例,你可以更好地掌握元组关系演算,并在关系数据库的查询中应用它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习300问】98、卷积神经网络中的卷积核到底有什么用?以边缘检测为例说明其意义。

卷积核是用于从输入数据中提取特征的关键工具。卷积核的设计直接关系到网络能够识别和学习的特征类型。本文让我以边缘检测为例&#xff0c;带大家深入理解卷积核的作用。 一、卷积核的作用 卷积核&#xff0c;又称为过滤器&#xff0c;本质上是一个小的矩阵&#xff0c;其元素…

微信小程序毕业设计-智慧旅游平台系统项目开发实战(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【算法】二分算法——山脉数组的峰顶索引

该题用二分算法解“山脉数组的峰顶索引”&#xff0c;有需要借鉴即可。 目录 1.题目2.总结 1.题目 题目链接&#xff1a;LINK 暴力求解很简单&#xff0c;这里不再提及。 这个可以根据峰顶值分为两部分&#xff0c;因而具有“二段性”&#xff0c;可以用二分算法&#xff0c…

Java抽象类

明确设计思想 子类越来越具体&#xff0c;父类需要越来越通用 父类和子类保证能够共享特征 父类的设计有时非常抽象&#xff0c;以至于它没有具体的实例 抽象类和抽象方法 abstract关键字修饰一个类&#xff0c;这个类叫做抽象类 abstract关键字修饰一个方法&#xff0c;…

git命令新建远程仓库

今天记录一下使用git命令新建远程分支的操作&#xff0c;因为公司的代码管理仓库界面没找到新建分支的操作界面&#xff0c;无奈只能通过git命令来新建分支。 1、新建本地分支 首先&#xff0c;你的至少应该已经有了一个master分支&#xff0c;然后你再master分支下面执行下面…

默认路由实现两个网段互通实验

默认路由实现两个网段互通实验 **默认路由&#xff1a;**是一种特殊的静态路由&#xff0c;当路由表中与数据包目的地址没有匹配的表项时&#xff0c;数据包将根据默认路由条目进行转发。默认路由在某些时候是非常有效的&#xff0c;例如在末梢网络中&#xff0c;默认路由可以…

React中的使用ref 操作Dom

跟vue 中的类似 也有ref 操作dom 由于 React 会自动更新 DOM 以匹配渲染输出&#xff0c;因此组件通常不需要操作 DOM。但是&#xff0c;有时可能需要访问由 React 管理的 DOM 元素——例如聚焦节点、滚动到此节点&#xff0c;以及测量它的尺寸和位置。React 没有内置的方法来执…

Postgresql源码(133)优化器动态规划生成连接路径的实例分析

物理算子的生成分为两步&#xff0c;基表的扫描路径生成set_base_rel_pathlists&#xff1b;连接路径生成&#xff08;make_rel_from_joinlist动态规划&#xff09;。本篇简单分析实现。看过代码会发现&#xff0c;“基表的扫描路径生成”其实就是作为连接路径生成dp计算的第一…

【Mac】MWeb Pro(好用的markdown编辑器) v4.5.9中文版安装教程

软件介绍 MWeb Pro for Mac是一款Mac上的Markdown编辑器软件&#xff0c;它支持实时预览&#xff0c;语法高亮&#xff0c;自动保存和备份等功能&#xff0c;并且有多种主题和样式可供选择。此外&#xff0c;MWeb还支持多种导出格式&#xff0c;包括HTML、PDF、Word、ePub等&a…

栈和队列的经典例题,LeetCode 括号匹配问题;栈实现队列;队列实现栈;队列带环问题

1.前序 又有很久没有更新文章了&#xff0c;这次带你们手撕几道基础题&#xff1b;真的就和康纳吃饭一样简单&#xff01;&#xff01;&#xff01; 如果还不会队列和栈的可以去看看之前写的博客&#xff1b; 栈的实现 队列概念以及实现 <- 快速传送 目录 1.前序 …

HTML中 video标签样式铺满全屏

video标签默认不是铺满的&#xff0c;即使手动设置宽高100%也不会生效&#xff0c;所以当需要video铺满div时&#xff0c;需要加上一个css样式 <videocontrolsstyle"width: 100%; height: 100%; object-fit: fill"autoplay:src"item.video" ></v…

自定义全局变量3

变量删除 语法 unset var_name演示 自定义常量 介绍 就是变量设置值以后不可以修改的变量叫常量, 也叫只读变量 语法 readonly var_name演示 自定义全局变量 父子Shell环境介绍 例如: 有2个Shell脚本文件 A.sh 和 B.sh 如果 在A.sh脚本文件中执行了B.sh脚本文件, 那么A.…

【Web】CISCN 2024初赛 题解(全)

目录 Simple_php easycms easycms_revenge ezjava mossfern sanic Simple_php 用php -r进行php代码执行 因为ban了引号&#xff0c;考虑hex2bin&#xff0c;将数字转为字符串 php -r eval(hex2bin(16进制)); 注意下面这段报错&#xff0c;因为加不了引号&#xff0c;开…

链表-设计LRU缓存结构

题目描述&#xff1a; 代码实现&#xff1a;这里记录了根据LRU算法原理最直接理解的代码实现。 import java.util.*;//存储输入内容&#xff0c;记录访问权值 class CounterInfo {int key;int value;int times;//代表key对应的权值&#xff0c;值越小优先级越高public Counter…

【第2章】SpringBoot配置文件

文章目录 前言一、编写配置信息1. properties2. yml 二、获取配置信息1.直接获取2.配置类形式 总结 前言 SpringBoot工程创建后&#xff0c;会为我们提供一个默认的配置文件(application.properties)&#xff0c;配置文件主要用于那些可能发生变化且经常改变的属性值。 一、编…

Autodesk 3DS Max v2025 解锁版安装教程 (3D 建模软件)

前言 Autodesk 3ds Max 是一款功能强大的 3D 建模和动画解决方案&#xff0c;游戏开发人员、视觉效果艺术家和平面设计师使用它来创建庞大的世界、令人惊叹的场景和引人入胜的虚拟现实 (VR) 体验。 Autodesk 3DS MAX是业界使用最广泛的3D建模和动画软件程序之一&#xff0c;它…

盲盒小程序开发,数字化发展下的优势

近年来&#xff0c;盲盒经济得到了快速发展&#xff0c;不少人开始加入到盲盒大军中&#xff0c;盲盒市场规模不断扩大。 盲盒最大的特点就是能够给消费者带来拆盒的刺激性和惊喜感。盲盒商品大多是动漫手办、周边等&#xff0c;具有较大的收藏价值&#xff0c;因此深深吸引着…

虚拟主机安装modstart

郑重说明!!!&#xff1a;虚拟主机通常无法绑定运行目录到子目录&#xff0c;因此部署时会出现太多的安全隐患&#xff0c;配置比较繁琐&#xff0c;我们强烈不推荐&#xff01;此方法只给技术爱好者作为测试参考&#xff0c;不再提供额外技术支持。 以免费云服务器&#xff0c;…

OpenAI模型GPT-4o、GPT-4、Gemini 1.5性能比较

大家好&#xff0c;OpenAI最新推出的GPT-4o&#xff0c;标志着人工智能语言模型和交互方式迈入了新纪元。最引人注目的是&#xff0c;GPT-4o支持实时互动和流畅的对话切换&#xff0c;让交流更加自然。 本文将对比分析GPT-4o、GPT 4以及谷歌的Gemini和Unicorn模型&#xff0c;…

Redis批量删除指定前缀的key

在redis-cli中键入命令&#xff0c;批量删除前缀为business_login_tokens:的key&#xff1a; eval "return redis.call(del, unpack(redis.call(keys, ARGV[1])))" 0 business_login_tokens:*在Redis中&#xff0c;EVAL命令用于执行Lua脚本。这个特定的命令是用来批…