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

【Spring基础3】- Spring的入门程序

目录

    • 3-1 Spring的下载
    • 3-2 Spring的 jar 包
    • 3-3 第一个 Spring程序
      • 第一步:添加spring context的依赖,pom.xml配置如下
      • 第二步:添加junit依赖
      • 第三步:定义bean:User
      • 第四步:编写spring的配置文件:beans.xml。该文件放在resource文件夹(类的根路径)下。
        • Spring bean 标签的两个重要属性
      • 第五步:编写测试程序
      • 第六步运行测试
    • 3-4 第一个Spring程序详细剖析
      • bean标签的id属性可以重复吗?
      • 底层是怎么创建对象的,是通过反射机制调用无参数构造方法吗?
      • 把创建好的对象存储到一个什么样的数据结构当中了呢?
      • Spring配置文件的名字必须叫做 beans.xml 吗?
      • 像这样的 beans.xml 文件可以有多个吗?
      • 在配置文件中配置的类必须是自定义的吗,可以使用JDK中的类吗,例如:java.util.Date?
      • getBean()方法调用时,如果指定的id不存在会怎样?
      • getBean()方法返回的类型是Object,如果访问子类的特有属性和方法时,还需要向下转型,有其它办法可以解决这个问题吗?
      • ClassPathXmlApplicationContext是从类路径中加载配置文件,如果没有在类路径当中,又应该如何加载配置文件呢?
      • ApplicationContext 的超级父接口 BeanFactory
      • Spring的 Bean 对象是调用 getBean 的时候创建的吗?
    • 3-5 Spring引入 Log4j


3-1 Spring的下载

官网地址:https://spring.io/

下载地址:https://repo.spring.io/ui/packages


3-2 Spring的 jar 包

打开libs目录,会看到很多jar包:

spring-core-5.3.9.jar:字节码(这个是支撑程序运行的jar包

spring-core-5.3.9-javadoc.jar:代码中的注释

spring-core-5.3.9-sources.jar:源码

我们来看一下spring框架都有哪些jar包:

JAR文件描述
spring-aop-5.3.9.jar这个jar 文件包含在应用中使用Spring 的AOP 特性时所需的类
spring-aspects-5.3.9.jar提供对AspectJ的支持,以便可以方便的将面向切面的功能集成进IDE中
spring-beans-5.3.9.jar这个jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion ofControl / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI 支持,引入spring-core.jar 及spring-beans.jar 文件就可以了。
spring-context-5.3.9.jar这个jar 文件为Spring 核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。
spring-context-indexer-5.3.9.jar虽然类路径扫描非常快,但是Spring内部存在大量的类,添加此依赖,可以通过在编译时创建候选对象的静态列表来提高大型应用程序的启动性能。
spring-context-support-5.3.9.jar用来提供Spring上下文的一些扩展模块,例如实现邮件服务、视图解析、缓存、定时任务调度等
spring-core-5.3.9.jarSpring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
spring-expression-5.3.9.jarSpring表达式语言。
spring-instrument-5.3.9.jarSpring3.0对服务器的代理接口。
spring-jcl-5.3.9.jarSpring的日志模块。JCL,全称为"Jakarta Commons Logging",也可称为"Apache Commons Logging"。
spring-jdbc-5.3.9.jarSpring对JDBC的支持。
spring-jms-5.3.9.jar这个jar包提供了对JMS 1.0.2/1.1的支持类。JMS是Java消息服务。属于JavaEE规范之一。
spring-messaging-5.3.9.jar为集成messaging api和消息协议提供支持
spring-orm-5.3.9.jarSpring集成ORM框架的支持,比如集成hibernate,mybatis等。
spring-oxm-5.3.9.jar为主流O/X Mapping组件提供了统一层抽象和封装,OXM是Object Xml Mapping。对象和XML之间的相互转换。
spring-r2dbc-5.3.9.jarReactive Relational Database Connectivity (关系型数据库的响应式连接) 的缩写。这个jar文件是Spring对r2dbc的支持。
spring-test-5.3.9.jar对Junit等测试框架的简单封装。
spring-tx-5.3.9.jar为JDBC、Hibernate、JDO、JPA、Beans等提供的一致的声明式和编程式事务管理支持。
spring-web-5.3.9.jarSpring集成MVC框架的支持,比如集成Struts等。
spring-webflux-5.3.9.jarWebFlux是 Spring5 添加的新模块,用于 web 的开发,功能和 SpringMVC 类似的,Webflux 使用当前一种比较流程响应式编程出现的框架。
spring-webmvc-5.3.9.jarSpringMVC框架的类库
spring-websocket-5.3.9.jarSpring集成WebSocket框架时使用

注意:

如果你只是想用Spring的IoC功能,仅需要引入:spring-context即可。将这个jar包添加到classpath当中。

如果采用maven只需要引入context的依赖即可。

<!--Spring6的正式版发布之前,这个仓库地址是需要的-->
<repositories><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository>
</repositories><dependencies><!--spring context依赖:使用的是6.0.0-M2里程碑版--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.0-M2</version></dependency>
</dependencies>

3-3 第一个 Spring程序

前期准备

  • 打开IDEA创建Empty Project:spring6

  • 设置JDK版本17,编译器版本17

  • 设置IDEA的Maven:关联自己的maven

  • 在空的工程spring6中创建第一个模块:spring6-001-first

第一步:添加spring context的依赖,pom.xml配置如下

  • 当引入了 spring-context 依赖之后,表示引用了 Spring 的基础依赖

当加入spring context的依赖之后,会关联引入其他依赖:

  • spring aop:面向切面编程
  • spring beans:IoC核心
  • spring core:spring的核心工具包
  • spring jcl:spring的日志包
  • spring expression:spring表达式
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.powernode</groupId><artifactId>spring6-001-first</artifactId><version>1.0-SNAPSHOT</version><!--打包方式jar,学习Spring,项目可以不是web项目,普通的java项目即可。--><packaging>jar</packaging><!--配置多个仓库--><repositories><!--spring里程碑版本的仓库--><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository></repositories><dependencies><!--spring context依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.0-M2</version></dependency></dependencies><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties></project>

第二步:添加junit依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.powernode</groupId><artifactId>spring6-001-first</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><repositories><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository></repositories><dependencies><!--spring context依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.0-M2</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties></project>

第三步:定义bean:User

  • 在当前项目中创建一个包,同时新建一个 User 类

这是一个Bean,封装了用户的信息。Spring可以帮助我们创建User对象吗?

  • 如果想让 Spring 帮我们管理 User 这个 bean 文件,我们需要写 xml 配置文件
package com.powernode.spring6.bean;/*** 这是一个Bean,封装了用户的信息。Spring可以帮助我们创建User对象吗?* @version 1.0* @className User* @since 1.0**/
public class User {// Spring是怎么实例化对象的?// 默认情况下Spring会通过反射机制,调用类的无参数构造方法来实例化对象。// 实现原理如下:// Class clazz = Class.forName("com.powernode.spring6.bean.User");// Object obj = clazz.newInstance();public User() {System.out.println("User的无参数构造方法执行。");}public User(String s){}
}

第四步:编写spring的配置文件:beans.xml。该文件放在resource文件夹(类的根路径)下。

上图是使用IDEA工具自带的spring配置文件的模板进行创建。

  • 配置文件中进行bean的配置。
    • IDEA工具为我们提供了这个文件的模板,一定要使用这个模板来创建
    • 这个文件名不一定叫做spring.xml,可以是其它名字
    • 这个文件最好是放在类路径当中,方便后期的移植
    • 放在resources根目录下,就相当于是放到了类的根路径下
    • 配置bean,这样spring才可以帮助我们管理这个对象
Spring bean 标签的两个重要属性

bean的id和class属性:

  • id属性:代表对象的唯一标识。可以看做一个人的身份证号。(不可以重复)
  • class属性:用来指定要创建的java对象的类名,这个类名必须是 全限定类名(带包名)。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="userBean" class="com.powernode.spring6.bean.User"/>
</beans>

第五步:编写测试程序

  • 第一步: 获取 Spring 容器对象
  • 第二步:根据 bean 的 id 从 Spring 容器中获取对象
  • 第一步:获取Spring容器对象。
  • ApplicationContext 翻译为:应用上下文。其实就是Spring容器。
    • ApplicationContext 是一个接口。
    • ApplicationContext 接口下有很多实现类。其中有一个实现类叫做:ClassPathXmlApplicationContext
    • ClassPathXmlApplicationContext 专门从类路径当中加载spring配置文件的一个Spring上下文对象。
  • 这行代码只要执行:就相当于启动了Spring容器,解析spring.xml文件,并且实例化所有的bean对象,放到spring容器当中。
package com.powernode.spring6.test;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Spring6Test {@Testpublic void testFirst(){// 第一步:获取Spring容器对象。// ApplicationContext 翻译为:应用上下文。其实就是Spring容器。// ApplicationContext 是一个接口。// ApplicationContext 接口下有很多实现类。其中有一个实现类叫做:ClassPathXmlApplicationContext// ClassPathXmlApplicationContext 专门从类路径当中加载spring配置文件的一个Spring上下文对象。// 这行代码只要执行:就相当于启动了Spring容器,解析spring.xml文件,并且实例化所有的bean对象,放到spring容器当中。// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring6.xml");// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring6.xml", "beans.xml");ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");// 根据id获取bean对象Object userBean = applicationContext.getBean("userBean");System.out.println(userBean);}
}

第六步运行测试


3-4 第一个Spring程序详细剖析

bean标签的id属性可以重复吗?

  • 在spring的配置文件中id是不能重名。
package com.powernode.spring6.bean;/*** @author 动力节点* @version 1.0* @className Vip* @since 1.0**/
public class Vip {
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="userBean" class="com.powernode.spring6.bean.User"/><bean id="userBean" class="com.powernode.spring6.bean.Vip"/>
</beans>

运行测试程序:

通过测试得出:在spring的配置文件中id是不能重名。


底层是怎么创建对象的,是通过反射机制调用无参数构造方法吗?

  • 默认情况下,Spring 会通过反射机制,调用类的无参构造方法来实例化对象
  • spring是通过调用类的无参数构造方法来创建对象的,所以要想让 spring 给你创建对象,必须保证无参数构造方法是存在的。

Spring是如何创建对象的呢?原理是什么?

实现原理代码:(通过反射返回一个实例对象)

// 反射机制,实现对对象的创建
Class clazz = Class.forName("com.powernode.spring6.bean.User");
Object obj = clazz.newInstance();

package com.powernode.spring6.bean;/*** bean,封装用户信息。* @version 1.0* @since 1.0*/
public class User {public User() {System.out.println("User的无参数构造方法执行");}
}

在User类中添加无参数构造方法,如上。

运行测试程序:

通过测试得知:创建对象时确实调用了无参数构造方法。

如果提供一个有参数构造方法,不提供无参数构造方法会怎样呢?

package com.powernode.spring6.bean;/*** bean,封装用户信息。* @author 动力节点* @version 1.0* @since 1.0*/
public class User {/*public User() {System.out.println("User的无参数构造方法执行");}*/public User(String name){System.out.println("User的有参数构造方法执行");}
}

运行测试程序:

通过测试得知:spring是通过调用类的无参数构造方法来创建对象的,所以要想让spring给你创建对象,必须保证无参数构造方法是存在的。


把创建好的对象存储到一个什么样的数据结构当中了呢?

  • 实际上对 bean 的管理存在一个 Map 集合中


Spring配置文件的名字必须叫做 beans.xml 吗?

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

通过以上的java代码可以看出,这个spring配置文件名字是我们负责提供的,显然spring配置文件的名字是随意的。


像这样的 beans.xml 文件可以有多个吗?

  • 通过测试得知,spring的配置文件可以有多个,在ClassPathXmlApplicationContext构造方法的参数上传递文件路径即可。

再创建一个spring配置文件,起名:spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="vipBean" class="com.powernode.spring6.bean.Vip"/>
</beans>
package com.powernode.spring6.test;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Spring6Test {@Testpublic void testFirst(){// 初始化Spring容器上下文(解析beans.xml文件,创建所有的bean对象)ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml","spring.xml");// 根据id获取bean对象Object userBean = applicationContext.getBean("userBean");Object vipBean = applicationContext.getBean("vipBean");System.out.println(userBean);System.out.println(vipBean);}
}

运行测试程序:

  • 通过测试得知,spring的配置文件可以有多个,在ClassPathXmlApplicationContext构造方法的参数上传递文件路径即可。这是为什么呢?通过源码可以看到:


在配置文件中配置的类必须是自定义的吗,可以使用JDK中的类吗,例如:java.util.Date?

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="userBean" class="com.powernode.spring6.bean.User"/><!--<bean id="userBean" class="com.powernode.spring6.bean.Vip"/>--><bean id="dateBean" class="java.util.Date"/>
</beans>
package com.powernode.spring6.test;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Spring6Test {@Testpublic void testFirst(){// 初始化Spring容器上下文(解析beans.xml文件,创建所有的bean对象)ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml","spring.xml");// 根据id获取bean对象Object userBean = applicationContext.getBean("userBean");Object vipBean = applicationContext.getBean("vipBean");Object dateBean = applicationContext.getBean("dateBean");System.out.println(userBean);System.out.println(vipBean);System.out.println(dateBean);}
}
  • 运行结果

通过测试得知,在spring配置文件中配置的bean可以任意类,只要这个类不是抽象的,并且提供了无参数构造方法。


getBean()方法调用时,如果指定的id不存在会怎样?

运行测试程序:

  • 通过测试得知,当id不存在的时候,会出现异常。

getBean()方法返回的类型是Object,如果访问子类的特有属性和方法时,还需要向下转型,有其它办法可以解决这个问题吗?

运行测试程序:

  • 不想强制类型转换,可以使用以下代码(通过第二个参数来指定返回的bean的类型。)
User user = applicationContext.getBean("userBean", User.class);//Object nowTime = applicationContext.getBean("nowTime");
//Date nowTime = (Date) applicationContext.getBean("nowTime");
// 不想强制类型转换,可以使用以下代码(通过第二个参数来指定返回的bean的类型。)
Date nowTime = applicationContext.getBean("nowTime", Date.class);

ClassPathXmlApplicationContext是从类路径中加载配置文件,如果没有在类路径当中,又应该如何加载配置文件呢?

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="vipBean2" class="com.powernode.spring6.bean.Vip"/>
</beans>
ApplicationContext applicationContext2 = new FileSystemXmlApplicationContext("d:/spring6.xml");
Vip vip = applicationContext2.getBean("vipBean2", Vip.class);
System.out.println(vip);
  • 没有在类路径中的话,需要使用 FileSystemXmlApplicationContext 类进行加载配置文件。
  • 这种方式较少用。一般都是将配置文件放到类路径当中,这样可移植性更强。

ApplicationContext 的超级父接口 BeanFactory

BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring.xml");
Object vipBean = beanFactory.getBean("vipBean");
System.out.println(vipBean);
  • BeanFactory 是 Spring 容器的超级接口。ApplicationContext 是 BeanFactory 的子接口。
  • Spring IoC 的实现,底层使用了工厂模式,底层原理是 : XML解析 + 工厂模式 + 反射机制

Spring的 Bean 对象是调用 getBean 的时候创建的吗?

  • 注意:不是在调用 getBean() 方法的时候创建对象,执行以下代码的时候,就会实例化对象。
// 注意:不是在调用getBean()方法的时候创建对象,执行以下代码的时候,就会实例化对象。
new ClassPathXmlApplicationContext("spring6.xml");

3-5 Spring引入 Log4j

从Spring5之后,Spring框架支持集成的日志框架是Log4j 如何启用日志框架:

  • 1- 第一步:引入Log4j2的依赖
<!--log4j2的依赖-->
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.19.0</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j2-impl</artifactId><version>2.19.0</version>
</dependency>
  • 2- 第二步:在类的根路径下提供log4j2.xml配置文件(文件名固定为:log4j2.xml,文件必须放到类根路径下。)
<?xml version="1.0" encoding="UTF-8"?><configuration><loggers><!--level指定日志级别,从低到高的优先级:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF--><root level="DEBUG"><appender-ref ref="spring6log"/></root></loggers><appenders><!--输出日志信息到控制台--><console name="spring6log" target="SYSTEM_OUT"><!--控制日志输出的格式--><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/></console></appenders></configuration>
  • 3- 第三步:使用日志框架
Logger logger = LoggerFactory.getLogger(FirstSpringTest.class);
logger.info("我是一条日志消息");

相关文章:

【Spring基础3】- Spring的入门程序

目录 3-1 Spring的下载3-2 Spring的 jar 包3-3 第一个 Spring程序第一步&#xff1a;添加spring context的依赖&#xff0c;pom.xml配置如下第二步&#xff1a;添加junit依赖第三步&#xff1a;定义bean&#xff1a;User第四步&#xff1a;编写spring的配置文件&#xff1a;bea…...

golang学习笔记22-面向对象(四):接口【重要】

本节也是GO核心部分&#xff0c;很重要。 注&#xff1a;由于导包语句已经在19讲&#xff08;笔记19&#xff1a;面向对象的引入&#xff09;展示过了&#xff0c;所以这里就不展示了。 一、定义与实现 (1)接口中可以定义一组方法&#xff0c;但不需要实现&#xff0c;不需要…...

SpringBoot技术栈:打造下一代网上租赁系统

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

Vue-Lecture1-Notes

渐进式框架 Vue 被称为“渐进式框架”&#xff0c;是因为它允许开发者根据项目的需求逐步引入和使用其功能&#xff0c;而不需要一次性使用整个框架。简单来说&#xff0c;Vue 提供了从简单到复杂的功能层次&#xff0c;可以灵活选择使用。 按需使用&#xff1a;Vue 的核心功能…...

网上租赁系统开发:SpringBoot实践与应用

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

User-Agent在WebMagic爬虫中的重要性

对于需要从网站上抓取数据的开发者来说&#xff0c;WebMagic是一个强大的工具。它是一个简单灵活的Java爬虫框架&#xff0c;用于抓取网页数据。在爬虫技术中&#xff0c;User-Agent&#xff08;用户代理&#xff09;是一个关键的HTTP请求头&#xff0c;它告诉服务器关于客户端…...

如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法

一、介绍 MCR(Miscrosoft Container Registry) 加速器&#xff0c;助你在中国大陆急速下载 netcore 相关的 docker 镜像。二、解决办法。     1、如何使用       至少三种方法进行加速&#xff1a;         使用 docker-mcr &#xff08;推荐&#xff09;  …...

网络编程,端口号,网络字节序,udp

前面一篇我们讲了网络的基础&#xff0c;网络协议栈是什么样的&#xff0c;数据如何流动传输的&#xff1b;接下来这篇&#xff0c;我们将进行实践操作&#xff0c;真正的让数据跨网络进行传输&#xff1b; 1.网络编程储备知识 1.1 初步认识网络编程 首先我们需要知道我们的…...

Android入门

下载Android studio&#xff0c;创建第一个项目 模板可以选择empty views Activity 在这个界面可以修改&#xff0c;使用语言&#xff0c;项目名字&#xff0c;存储路径以及适用版本 完成后&#xff0c;得到一个最初始的Android 项目&#xff0c;红色标记的两个文件&#xf…...

二叉树深搜专题篇

目录 计算布尔二叉树的值 求根节点到叶节点数字之和 二叉树剪枝 验证二叉搜索树 二叉搜索树中第K小的元素 二叉树的所有路径 计算布尔二叉树的值 题目 思路 这道题其实是比较简单的&#xff0c;对二叉树来一次后序遍历即可&#xff0c;当遇到叶子结点直接返回叶子节点中…...

堆【数据结构C语言版】【 详解】

目录-笔记整理 一、思考二、堆概念与性质三、堆的构建、删除、添加1. 构建2. 删除3. 添加 四、复杂度分析4.1 时间复杂度4.2 空间复杂度 五、总结 一、思考 设计一种数据结构&#xff0c;来存放整数&#xff0c;要求三个接口&#xff1a; 1&#xff09;获取序列中的最值&#…...

初识React

在最新写需求的时候&#xff0c;我遇到了一个需求&#xff0c;这个需求改后端改的不算多&#xff0c;而且也比较简单&#xff0c;但是在改前端的时候&#xff0c;很复杂。因为我们这个项目用的是React做前端的&#xff0c;而我对于前端知识没有了解&#xff0c;所以理解很多代码…...

VUE 开发——AJAX学习(三)

一、async函数和await async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为&#xff0c;而无需刻意地链式调用Promise async写在函数声明的前面&#xff1b;在async函数内&#xff0c;使用await关键字&#xff0c;获取Promise对象“成功状态”结果值 &…...

C++杂项

作业&#xff1a; 将之前实现的顺序表、栈、队列都更改成模板类 顺序表 #include <iostream>using namespace std;template<typename T>class SeqList { private:T *ptr;int size; //总长度int len 0; //当前顺序表实际长度public://初始…...

Gelatinous Cube Sphere - Bonus Files 2 - Atavism

这是Gelatinous Cube & Sphere Pack的奖励文件包。 奖励文件&#xff1a; ⭐ 概念艺术 也可在Monster Bundle #2中使用。 下载&#xff1a;​​Unity资源商店链接资源下载链接...

锐捷—NAT地址映射+IPsec隧道

任务目标 在出口路由器R3上将R5私网地址1对1映射的公网地址与R1建立IPsec隧道&#xff0c;使得R4在访问R5的映射公网地址时&#xff0c;可以进行IPsec隧道的转发 要求&#xff1a; 1、R4和R5可通过NAT转换正常访问互联网地址&#xff08;R2的lo0&#xff09; 2、R5的私网地…...

index.html 调用 ajax

index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>AJAX 请求示例</title><script>// 封装 Ajax 为公共函数&#xff1a;传入回调函数 success 和 failfunction myAjax (url, suc…...

uniapp学习(003-1 vue3学习 Part.1)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第11p-第p14的内容 文章目录 vue3使用介绍插值表达式例子时间戳随机数输出函数的值 ref响应式数据变量v-bind 绑…...

计算机毕业设计 基于深度学习的短视频内容理解与推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

JavaScript网页设计案例深度解析:从理论到实践

前言 在现代前端开发中&#xff0c;JavaScript 是赋予网页生命的关键技术。静态的 HTML 和 CSS 虽然能创建美观的页面&#xff0c;但当我们需要增强用户交互和页面响应时&#xff0c;JavaScript 无疑成为最得力的工具。从程序员的角度来看&#xff0c;JavaScript 设计不仅仅是…...

spark-sql建表数据同步到hive

1、基础环境 组件版本备注hadoop3.4.0官方下载hive3.1.3自编译sparkspark-3.5.3-bin-hadoop3官方下载&#xff0c;需要内置hive的jar相关内容paimon0.9.0Maven官方下载jdk1.8.0_41maven3.9.6固定版本 2、停止服务、清理日志 先停止&#xff0c;清理数据 sudo kill -9 $(ps -ef…...

Django上下文处理器

1创建 &#xff08;如frontend目录下&#xff09;category_processors文件&#xff1a; def categories(request):from backend.models import Categorycategory_list Category.objects.all()return {category_list:category_list}这里&#xff0c;必须返回一个字典。 2&…...

旭升集团携手纷享销客,构建全方位客户关系管理平台

宁波旭升集团股份有限公司&#xff08;以下简称“旭升集团”&#xff09;自2003年成立&#xff0c;总部位于中国宁波&#xff0c;集团设有压铸、锻造、挤压、集成四大事业部&#xff0c;在亚洲、欧洲、美洲等地均设立研发中心及制造基地&#xff0c;产品主要覆盖新能源汽车的电…...

uniapp 知识点

自定义导航 在page.json navigationstyle":"custom"navigateTo传参 页面传参只能onLoad(option)里面拿 px和upx的关系 在750设计图中&#xff0c;1px1upx 路由 navigateBack返回上一页 重定向 其实就是把当前页面干掉了 公共组件和页面共同点 computed,watc…...

慢病中医药膳养生食疗管理微信小程序、基于微信小程序的慢病中医药膳养生食疗管理系统设计与实现、中医药膳养生食疗管理微信小程序的开发与应用(源码+文档+定制)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

解决 Android WebView 无法加载 H5 页面常见问题的实用指南

目录 1. WebView 简介 2. 常见问题 3. 网络权限设置 4. 启用 JavaScript 5. DOM Storage 的重要性 6. 处理 HTTPS 问题 7. 设置 WebViewClient 8. 调试工具 9. 其他调试技巧 10. 结论 相关推荐 1. WebView 简介 Android WebView 是一种视图组件&#xff0c;使得 And…...

Ollama本地部署大模型及应用

文章目录 前言一、下载安装1.Mac2.Windows3.linux4.docker5.修改配置&#xff08;可选&#xff09;1.linux系统2.window 系统3.mac系统 二、Ollama使用1.命令2.模型下载3.自定义模型4.API 服务 三、Open WebUI 使用四、Dify使用 前言 Ollama 是一个专注于本地部署大型语言模型…...

读代码UNET

这个后面这个大小怎么算的&#xff0c;这参数怎么填&#xff0c;怎么来的&#xff1f; 这是怎么看怎么算的&#xff1f; 这些参数设置怎么设置&#xff1f;卷积多大&#xff0c;有什么讲究&#xff1f;...

【java】前端RSA加密后端解密

目录 1. 说明2. 前端示例3. 后端示例3.1 pom依赖3.2 后端结构图3.3 DecryptHttpInputMessage3.4 ApiCryptoProperties3.5 TestController3.6 ApiCryptoUtil3.7 ApiDecryptParamResolver3.8 ApiDecryptRequestBodyAdvice3.9 ApiDecryptRsa3.10 ApiCryptoProperties3.11 KeyPair3…...

机器学习 | Scikit Learn中的普通最小二乘法和岭回归

在统计建模中&#xff0c;普通最小二乘法&#xff08;OLS&#xff09;和岭回归是两种广泛使用的线性回归分析技术。OLS是一种传统的方法&#xff0c;它通过最小化预测值和实际值之间的平方误差之和来找到数据的最佳拟合线。然而&#xff0c;OLS可以遭受高方差和过拟合时&#x…...

怎么做网站呢/windows优化大师功能

题目&#xff1a;本题目为谭浩强版C语言教材第11章《结构体和共用体》的课后习题第2题。要求&#xff1a;定义一个结构体变量&#xff08;包括年、月、日&#xff09;&#xff0c;由主函数传递年月日到一个函数&#xff0c;计算出该日在本年度中是第几天。注意闰年与否。 解决方…...

wordpress 视频压缩/深圳seo公司助力网络营销飞跃

0引言 课程设计是本科阶段大学生应用实践课程的重要组成部分&#xff0c;课程设计报告是对课程设计的结果进行整理、总结&#xff0c;是课程设计的重要组成部分。认真编写则会加深对所学知识的体会和理解&#xff0c;否则是纯粹的在浪费资源。为了让大家编写好课程设计报告&am…...

烟台建网站公司哪家好/谷歌浏览器 安卓下载2023版

我有一个Manager类,该类将数据保存在SQL表中,并从SQL表中获取结果并测试这些数据.当我运行程序时,将显示一个获取ID和密码的框架,如果它们正确,则另一个框架将但是我不知道为什么它只是测试SQL表的最后一行&#xff1f;我的意思是如果我用除最后一行以外的其他ID和密码设置那些…...

做视频背景音乐网站/最新今日头条

1.题目 2.思路 明确题目的路径定义后&#xff0c;知道有4种路径&#xff1a; &#xff08;1&#xff09;单一结点 &#xff08;2&#xff09;某个结点及其左子树组成的路径 &#xff08;3&#xff09;某个结点及其右子树组成的路径 &#xff08;4&#xff09;某个各节点及其左…...

shopify做全品类网站/百度快照官网

5月12日&#xff0c;英国、意大利、俄罗斯等多个国家爆发勒索病毒攻击&#xff0c;国内校园网也出现大面积感染。 这并不是勒索病毒首次发威。近几年来&#xff0c;勒索病毒已经多次出现爆发的情况。黑客利用Windows漏洞传播病毒后&#xff0c;感染病毒的计算机会将用户的文件加…...

wordpress位置/营销软文是什么

NEW关注Tech逆向思维视频号最新视频→【做核酸&#xff1f;打疫苗&#xff1f;3分钟假期安全出行攻略】出品&#xff5c;刺猬公社文&#xff5c; 张展编辑 | 石灿星星点灯&#xff0c;照亮前程。在咖啡的舞台上&#xff0c;我们习惯把目光聚焦于那些咖啡明星——门店总数突破53…...