Spring学习(一)——Sping-XML

一、Spring的概述

(一)什么是Spring?

        Spring是针对bean对象的生命周期进行管理的轻量级容器。提供了功能强大IOC、AOP及Web MVC等功能。Spring框架主要由七部分组成:分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。

        官网:https://spring.io/

(二)Spring核心功能

Spring框架可以和任意框架进行整合。

  • IOC——控制反转

  • DI——依赖注入

  • AOP——面向切面

(三)Spring的好处

  • 高内聚低耦合

    • 高内聚:让方法责任更加单一,更加纯粹,最大程度的保证内聚以及责任单一

    • 低耦合:减少代码之间的关联,即一个类对另外一个类的依赖程度,极可能让类与类之间的关联降到最低

    • 原则:

      • 责任单一原则:需要用整个编程生涯来贯彻

      • 最少知道原则:禁止跨级调用;让一个类认识/调用最少的类

  • 简化事务:仅仅使用一个注解,就能让事务生效

  • 集成了Junit,方便测试

  • 简化了开发

  • 方便集成各种框架:使用Spring去管理所有的框架

二、IOC(控制反转)

(一)IOC的概念

        控制权从应用程序代码转移到外部容器,由容器负责管理对象的创建和依赖关系。

(二)创建Spring项目

添加依赖

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.9.RELEASE</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency></dependencies>

创建spring配置文件:spring1.xml

编辑spring.xml来管理bean

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--当前的Student类交给了Spring容器去创建--><bean id="stu" class="com.javatest.demo.Student"/>
</beans>

创建Student类

@Getter
@Setter
public class Student {private Integer id;private String name;private Integer age;
}

测试类

private static void test1() {// 从类加载路径中,加载配置文件spring1.xml// 读取配置文件中的内容// 解析xml标签// 创建一个bean的集合,new一个对象,存入bean的集合等待调用// applicationContext 实际上就是Spring容器对象// 不论是否调用bean对象,在Spring容器初始化的时候,都会创建bean对象ClassPathXmlApplicationContext applicationContext =new ClassPathXmlApplicationContext("spring1.xml");// 从Spring容器中,寻找id=stu的bean对象Student stu= (Student) applicationContext.getBean("stu");// 赋值stu.setId(100);stu.setName("张三");stu.setAge(11);System.out.println(stu);
}

运行结果:

----------Student创建了-------------
Student(id=100, name=张三, age=11)

(三)Spring的启动原理

        程序启动 → 读取xml文件 → 解析xml配置文件 → 读取了bean标签的内容 → 通过反射,初始化bean对象(new对象) → bean对象 存入Spring容器,等待调用。

代码实现:

public static void main(String[] args) throws Exception {test4();
}
private static void test4() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {Student student = (Student) test3("stu");student.setId(10);student.setName("张三");student.setAge(30);System.out.println(student);// Student(id=10, name=张三, age=30)
}
private static Object test3(String id) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {Map<String, Object> map = test2();Object o = map.get(id);return o;
}
private static Map<String, Object> test2() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {String id = "stu";String className = "com.javatest.demo.Student";Class<?> aClass = Class.forName(className);Object o = aClass.getConstructor().newInstance();Map<String, Object> springApplication = new ConcurrentHashMap<>();springApplication.put(id, o);return springApplication;
}

运行结果:

---------------Student对象被创建了---------------
Student(id=10, name=张三, age=30)

 (四)Spring中获取bean的三种方式

Studen类:

@Getter
@Setter
//@ToString
public class Student {private Integer id;private String name;private Integer age;public Student(){System.out.println("---------------Student对象被创建了---------------");}
}

spring1.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--当前的Student类交给了Spring容器去创建--><bean id="stu" class="com.javasm.demo.Student"/>
</beans>

Spring获取bean的三种方式: 

public class Test2 {static ClassPathXmlApplicationContext applicationContext =new ClassPathXmlApplicationContext("spring1.xml");public static void main(String[] args) throws Exception {test1();}/*** 获取bean的方式*/private static void test1() {// 根据id获取Student student = (Student) applicationContext.getBean("stu");System.out.println(student);// 根据类型获取Student student1 = applicationContext.getBean(Student.class);System.out.println(student1);// 根据id+类型获取Student student2 = applicationContext.getBean("stu", Student.class);System.out.println(student2);}
}

运行结果:

----------Student创建了-------------
com.javatest.demo.Student@6989da5e
com.javatest.demo.Student@6989da5e
com.javatest.demo.Student@6989da5e

(五)bean别名

<!--别名,不常用-->
<alias name="stu" alias="s"/>
Student s = context.getBean("s", Student.class);

(六)Spring创建bean的几种方式

1.无参构造(最常用)

<bean id="stu" class="com.javatest.demo.Student"/>

2.静态工厂创建bean对象

<bean id="xiaoming" class="com.javatest.demo.StudentStaticFactory" factory-method="getStudent"/>
public class StudentStaticFactory {public static Student getStudent() {Student student = new Student();student.setName("小明");return student;}
}
private static void test3() {Object xiaoming = applicationContext.getBean("xiaoming");System.out.println(xiaoming);// Student(id=null, name=小明, age=null)
}

3.实例工厂创建bean对象

<bean id="stuFactory" class="com.javatest.demo.StudentFactory"/>
<bean id="xiaohong" factory-bean="stuFactory" factory-method="getStudent"/>
public class StudentFactory {public Student getStudent() {Student student = new Student();student.setName("小红");return student;}
}
private static void test4() {Object xiaohong = applicationContext.getBean("xiaohong");System.out.println(xiaohong);// Student(id=null, name=小红, age=null)
}

4.Spring工厂创建bean对象

<bean id="huowang" class="com.javatest.demo.StudentSpringFactory"/>
public class StudentSpringFactory implements FactoryBean<Student> {@Overridepublic Student getObject() throws Exception {//返回的对象是什么,Spring容器中存什么Student student = new Student();student.setName("李火旺");return student;}@Overridepublic Class<?> getObjectType() {return Student.class;}@Overridepublic boolean isSingleton() {//是否是单例//true:单例//false:多例//默认是truereturn true;}
}
private static void test5() {Object huowang = applicationContext.getBean("huowang");System.out.println(huowang);Object huowang1 = applicationContext.getBean("huowang");System.out.println(huowang1);// com.javatest.demo.Student@489115ef// com.javatest.demo.Student@489115ef
}

(七)单例

Spring的bean对象,在默认情况下,都是单例的

<bean id="teacher" class="com.javasm.demo.Teacher" scope="prototype"/>

单例:Spring启动 → 加载解析XML文件 → 创建Bean对象 →bean保存到容器 →随着容器关闭销毁

多例:Spring启动→加载解析XML文件→先把解析的内容记录下来→调用的时候创建bean

(八)懒加载 

不使用不创建对象

仅仅对单例生效:

<bean id="teacher1" class="com.javasm.demo.Teacher" lazy-init="true"/>

全局配置:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"default-lazy-init="true"
>

(九)初始化&销毁

@Getter
@Setter
public class Teacher {private Integer id;private String name;public Teacher(Integer id, String name) {this.id = id;this.name = name;}public Teacher() {System.out.println("------------Teacher---------");}public void test1() {System.out.println("我是Test1-----------初始化");}public void test2() {System.out.println("我是Test2=============销毁");}
}
<bean id="teacher2" class="com.javatest.demo.Teacher" init-method="test1" destroy-method="test2"/>
private static void test7() {Object teacher2 = applicationContext.getBean("teacher2");System.out.println(teacher2);applicationContext.close();
}

执行顺序:

  • 构造方法
  • 初始化方法
  • 正常调用方法
  • ---销毁
  • 关闭容器 

三、DI(依赖注入)

(一)DI的概念 

        通过外部容器将依赖的对象传递给类,而不是让类自己创建或查找依赖,从而实现松耦合。

(二)代码实现

1.实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Game {private Integer id;private String name;private Double price;//公司private Company company;//英雄列表private String[] heros;//关卡private List<String> levels;//背包private Map<Integer, String> items;//成就private Set<String> achievements;//游戏配置private Properties gameConfig;//玩家列表private List<Player> playerList;
}
@Data
public class Company {private String name;private String address;
}
@Data
public class Player {private Integer id;private String nickname;
}

2.spring2.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="game" class="com.javatest.demo2.Game"><property name="id" value="1000"/><property name="name" value="黑神话·悟空"/><property name="price" value="648.88"/><!--公司--><property name="company" ref="company"/><!--英雄列表--><property name="heros"><array><value>孙悟空</value><value>杨戬</value><value>哪吒</value></array></property><!--关卡列表--><property name="levels"><list><value>黑风寨</value><value>黄风岭</value><value>小西天</value></list></property><!--背包列表--><property name="items"><map><entry key="1001" value="金箍棒"/><entry key="1002" value="三尖两刃刀"/><entry key="1003" value="定风珠"/></map></property><!--成就列表--><property name="achievements"><set><value>借刀杀人</value><value>顺手牵羊</value><value>万箭齐发</value></set></property><!--游戏配置列表--><property name="gameConfig"><props><prop key="maxPlayer">100</prop><prop key="maxLevel">120</prop></props></property><!--玩家列表--><property name="playerList"><list><bean class="com.javatest.demo2.Player"><property name="id" value="1001"/><property name="nickname" value="玩家1"/></bean><ref bean="player2"/></list></property></bean><bean id="company" class="com.javatest.demo2.Company"><property name="name" value="游戏科学"/><property name="address" value="杭州"/></bean><bean id="player2" class="com.javatest.demo2.Player"><property name="id" value="1002"/><property name="nickname" value="玩家2"/></bean>
</beans>

3.测试类

public class Test {static ClassPathXmlApplicationContext applicationContext =new ClassPathXmlApplicationContext("spring2.xml");public static void main(String[] args) {test1();}private static void test1() {Game game = applicationContext.getBean("game", Game.class);System.out.println(game);}
}

4.运行结果 

Game(id=1000, name=黑神话·悟空, price=648.88, 
company=Company(name=游戏科学, address=杭州), 
heros=[孙悟空, 杨戬, 哪吒], 
levels=[黑风寨, 黄风岭, 小西天], 
items={1001=金箍棒, 1002=三尖两刃刀, 1003=定风珠}, 
achievements=[借刀杀人, 顺手牵羊, 万箭齐发], 
gameConfig={maxLevel=120, maxPlayer=100}, 
playerList=[Player(id=1001, nickname=玩家1), Player(id=1002, nickname=玩家2)])

(三)自动装配

<!--autowire 自动装配:byType 根据属性的类型,去Spring容器中寻找对应的bean对象,如果找到了,自动赋值给对应的属性-->
<bean id="g2" class="com.javatest.demo2.Game" autowire="byType"/>
<!--autowire 自动装配:byName 根据属性的名字,去寻找id和属性名一样的bean-->
<bean id="g3" class="com.javatest.demo2.Game" autowire="byName"/>

全局配置:

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"default-autowire="byName"
>

(四)构造方法的注入

Music类:

@Data
public class Music {private Integer id;private String name;private String time;private Company company;public Music(Integer id, String name, String time, Company company) {this.id = id;this.name = name;this.time = time;this.company = company;}
}

spring3.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="company" class="com.javatest.demo2.Company"><property name="name" value="酷狗音乐"/><property name="address" value="北京"/></bean><!--index:构造方法第几个参数name: 构造方法的参数名称推荐使用index配置参数--><bean id="music" class="com.javatest.demo3.Music"><constructor-arg name="id" value="100" type="java.lang.Integer"/><constructor-arg index="1" value="云顶天宫"/><constructor-arg index="2" value="10mins"/><constructor-arg index="3" ref="company"/></bean>
</beans>

四、Spring中常见异常

1.bean的id写错了,没有找到名字是stu1的bean对象

2.根据类型,从Spring容器中获取bean对象,但是容器中有两个bean对象,是相同类型的,所以报错
因为要找1个bean,但是发现了2个 

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--当前的Student类交给了Spring容器去创建--><bean id="stu" class="com.javatest.demo.Student"/><bean id="stu1" class="com.javatest.demo.Student"/>
</beans>

---------------Student对象被创建了---------------
---------------Student对象被创建了---------------
com.javatest.demo.Student@6989da5e
Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: 
No qualifying bean of type 'com.javatest.demo.Student' available: 
expected single matching bean but found 2: stu,stu1at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1144)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:411)at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:344)at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:337)at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1123)at com.javatest.demo.Test2.test1(Test2.java:29)at com.javatest.demo.Test2.main(Test2.java:18)

3.类中没有无参构造,报错
要养成一个习惯,只要写有参构造,不论是否需要无参构造,都要写一个 

12月 20, 2024 9:50:48 下午 org.springframework.context.support.AbstractApplicationContext refresh
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teacher' defined in class path resource [spring1.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.javatest.demo.Teacher]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.javatest.demo.Teacher.<init>()
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teacher' defined in class path resource [spring1.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.javatest.demo.Teacher]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.javatest.demo.Teacher.<init>()at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1303)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1197)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)at com.javatest.demo.Test2.<clinit>(Test2.java:14)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.javatest.demo.Teacher]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.javatest.demo.Teacher.<init>()at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:83)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1295)... 13 more
Caused by: java.lang.NoSuchMethodException: com.javatest.demo.Teacher.<init>()at java.base/java.lang.Class.getConstructor0(Class.java:3349)at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2553)at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:78)... 14 moreProcess finished with exit code 1

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

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

相关文章

用 gdbserver 调试 arm-linux 上的 AWTK 应用程序

很多嵌入式 linux 开发者都能熟练的使用 gdb/lldb 调试应用程序&#xff0c;但是还有不少朋友在调试开发板上的程序时&#xff0c;仍然在使用原始的 printf。本文介绍一下使用 gdbserver 通过网络调试开发板上的 AWTK 应用程序的方法&#xff0c;供有需要的朋友参考。 1. 下载 …

树莓派换源

查询自己版本&#xff1a; lsb_release -a bullseye可以理解为树莓派的系统代号&#xff08;10&#xff0c;11&#xff0c;12都不同&#xff0c;一定要看好自己系统是什么版本&#xff09; 查询架构 uname -a aarch64的地方就是代表系统架构的&#xff0c;我的是aarch64的架…

MySQL索引-索引的结构和原理

索引原理 查找算法 顺序查找 数组链表 二分查找 B树跳表 散列查找 Hash表 DFS 树图 BFS 树图 分块查找 海量数据 Hash结构 Hash索引可以方便的提供等值查询&#xff0c;但是对于范围查询就需要全表扫描了。 Hash索引在MySQL 中Hash结构主要应用在InnoDB 自适应哈希索引。…

【Linux探索学习】第二十三弹——理解文件系统:认识硬件、探索文件在硬件上的存储问题

Linux学习笔记&#xff1a;https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 我们前面讲过了文件的组成是由文件内容和文件属性两者组成的&#xff0c;但是我们前面接触的文件都是系统中的文件&#xff0c;都是已经在进…

深度学习中的并行策略概述:2 Data Parallelism

深度学习中的并行策略概述&#xff1a;2 Data Parallelism 数据并行&#xff08;Data Parallelism&#xff09;的核心在于将模型的数据处理过程并行化。具体来说&#xff0c;面对大规模数据批次时&#xff0c;将其拆分为较小的子批次&#xff0c;并在多个计算设备上同时进行处…

分布式专题(10)之ShardingSphere分库分表实战指南

一、ShardingSphere产品介绍 Apache ShardingSphere 是一款分布式的数据库生态系统&#xff0c; 可以将任意数据库转换为分布式数据库&#xff0c;并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus&#xff0c;旨在…

帧缓存的分配

帧缓存实际上就是一块内存。在 Android 系统中分配与回收帧缓存&#xff0c;使用的是一个叫 ION 的内核模块&#xff0c;App 使用 ioctl 系统调用后&#xff0c;会在内核内存中分配一块符合要求的内存&#xff0c;用户态会拿到一个 fd&#xff08;有的地方也称之为 handle&…

vue3+vite一个IP对站点名称的前端curd更新-会议系统优化

vue3-tailwind-todo https://github.com/kgrg/vue3-tailwind-todo 基于这个项目,把ip到sta的映射做了前端管理. 核心代码是存储和获得的接口,需要flask提供. def redis2ipdic():global ipdicipdic.clear()tmdiccl.hgetall(IPDIC_KEY)for k in tmdic.keys():ipdic[k.decode() …

Elasticsearch-脚本查询

脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能&#xff0c;ES支持多种脚本语言&#xff0c;如painless&#xff0c;其语法类似于Java,也有注释、关键字、类型、变量、函数等&#xff0c;其就要相对于其他脚本高出几倍的性…

golang LeetCode 热题 100(动态规划)-更新中

爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a;输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…

【每日学点鸿蒙知识】Charles抓包、lock文件处理、WebView组件、NFC相关、CallMethod失败等

1、HarmonyOS系统中如何使用Charles抓包&#xff1f; 在HarmonyOS操作系统中&#xff0c;使用Charles进行抓包的步骤如下&#xff1a; 在Charles中设置代理。 首先&#xff0c;在Charles的菜单栏上选择“Proxy”→“Proxy Settings”&#xff0c;然后填入代理端口&#xff0…

抓取手机HCI日志

荣耀手机 1、打开开发者模式 2、开启HCI、ADB调试 3、开启AP LOG 拨号界面输入*##2846579##* 4、蓝牙配对 5、抓取log adb pull /data/log/bt ./

WebAPI编程(第一天,第二天)

WebAPI编程&#xff08;第一天&#xff0c;第二天&#xff09; day01 - Web APIs 1.1. Web API介绍 1.1.1 API的概念1.1.2 Web API的概念1.1.3 API 和 Web API 总结 1.2. DOM 介绍 1.2.1 什么是DOM1.2.2. DOM树 1.3. 获取元素 1.3.1. 根据ID获取1.3.2. 根据标签名获取元素1.3.…

windows下Redis的使用

Redis简介&#xff1a; Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库&#xff0c;并提供多种语言的 API。 Redis通常被称为数据结构服务器&#xff0c;因为值&#xff08;value&#xff…

【贪吃蛇小游戏 - JavaIDEA】基于Java实现的贪吃蛇小游戏导入IDEA教程

有问题请留言或私信 步骤 下载项目源码&#xff1a;项目源码 解压项目源码到本地 打开IDEA 左上角&#xff1a;文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件&#xff0c;点击确定 选择“从现有项目创建项目”。点击“下一步” 点击下一步&a…

RTOS下的任务管理

2.3 RTOS下的任务管理(***) RTOS的任务管理主要是进行哪些功能&#xff1f; RTOS的任务管理的多任务管理是怎样进行与实现的&#xff1f; 任务管理中FreeRTOS如何给每个任务分配CPU时间&#xff1f; 文章目录 2.3 RTOS下的任务管理(***)2.3.0 任务概述2.3.1任务的创建与删除2.3…

深度学习——神经网络中前向传播、反向传播与梯度计算原理

一、前向传播 1.1 概念 神经网络的前向传播&#xff08;Forward Propagation&#xff09;就像是一个数据处理的流水线。从输入层开始&#xff0c;按照网络的层次结构&#xff0c;每一层的神经元接收上一层神经元的输出作为自己的输入&#xff0c;经过线性变换&#xff08;加权…

【初阶数据结构与算法】八大排序算法之归并排序与非比较排序(计数排序)

文章目录 一、归并排序二、非比较排序之计数排序三、归并排序和计数排序的性能测试 一、归并排序 归并排序&#xff08;MERGE-SORT&#xff09;是建⽴在归并操作上的⼀种有效的排序算法,该算法是采⽤分治法&#xff08;Divide andConquer&#xff09;的⼀个⾮常典型的应⽤   …

window安装TradingView

目录 下载安装包 修改文件后缀&#xff0c;解压 将K线换成国内涨红跌绿样式 下载安装包 https://www.tradingview.com/desktop/ 下载完成后是.msix格式文件 &#xff08;我在win10和win11的系统中尝试运行msix都没有成功&#xff0c;所以放弃直接双击运行msix&#xff…

FPGA多路MIPI转FPD-Link视频缩放拼接显示,基于IMX327+FPD953架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案我这里已有的FPGA图像缩放方案本博已有的已有的FPGA视频拼接叠加融合方案 3、本 MIPI CSI-RX IP 介绍4、详细设计方案设计原理框图IMX327 及其配置FPD-Link视频…