SpringBoot期末知识点大全

一、学什么
IoC
AOP:面向切面编程。 
事物处理
整合MyBatis
Spring框架思想!
二、核心概念
问题:类之间互相调用/实现,导致代码耦合度高。
解决:使用对象时,程序中不主动new对象,转换为由外部提供对象。
思想:ioc(inversion of control) 控制反转,对象的 创建控制权由程序 转移到 外部
做法:spring提供了 ioc容器,充当思想中的 外部 负责对象的创建、初始化,被创建的对象在容器中称为 Bean。
思想:DI(dependence injection) 依赖注入。在容器中 建立bean与bean之间的依赖关系的整个过程。
目标:充分解耦。使用ioc容器管理bean,在ioc容器内将有依赖关系的bean进行关系绑定。
三、ioc入门思路
1.管理什么?    Service与Dao。
2.如何将被管理的对象告诉ioc容器?    配置文件。
3.如何将对象交给ioc容器?    接口。
4.如何从容器中获取bean?    接口方法。
5.使用spring导入哪些坐标?    pom.xml。     
· 先在xml导入spring坐标spring-context。
· 在resources创建配置文件。
· 配置bean:<bean id="" class=""/>
· 获取ioc容器:applicationcontext ctx = new classpathxmlapplicationcontext("之前创建的配置文件")
获取bean:对象类 对象名 = ctx.getbean("配置bean的id")
四、DI入门思路
· 把new对象的部分删除,只保留定义部分。
· 提供对应的set方法。(给容器执行)
· 配置 依赖关系。在bean的配置内。
<bean>< property name="对象定义的属性名(在这里定义的对象看作是一个 属性)" ref="对象在bean配置中的id"/><bean/> 
五、bean配置
1.别名配置
<bean id="" name="别名1 别名2" class="">
id和name是同等意思。
2.bean的作用范围
bean默认是单例对象,即一个类的多个对象是一个地址。每个对象只用造一次,但是可以多次使用。可以用 scope在bean中配置为 非单例

六、bean的实例化方式    1 3最常用
1.spring创建bean调用它的 无参构造方法。使用bean的普通配置。
2.用静态工厂类的方法(static)创建对象。bean的配置为:<bean id="" factory-method=" 工厂方法" class=" 工厂类"/>
3.实例工厂

七、bean的生命周期控制 
创建后到销毁前做一些事情。
1.bean配置中新增属性:init-method="方法名", destory-method="方法名"
2.bean对应的类实现接口initializingbean, disposablebean.重写方法。

八、依赖注入方式
1.setter注入    最常用
给要创建bean的类的属性/依赖的bean赋值。
先给属性提供set方法
再配置<property name="" ref/value="ref赋值引用数据类型,value赋值简单类型">
2.构造器注入
先生成对属性的构造方法
再bean中配置<constructor-arg name="构造方法的形参名"/index=""/type="" ref="bean id"/>

九、依赖自动装配
ioc容器根据bean所依赖的资源在 容器中自动查找并注入到bean中。
方式:
1.按类型:!!
<bean id="" class="" autowire="byType"/>
2.按名称
<bean id="" class="" autowire="byName"/>

十、纯注解开发!

原来的配置文件不用了。新建一个config.springconfig文件,添加@configuration, @componentScan("要扫描的包",如有多个包在大括号内添加)包内的类只要加了相应注解的,都会被加载为bean。

应用程序中获取容器的方法要改,applicationcontext ctx = new annotationconfigapplicationcontext(新配置类 ***.class)

类名 对象名 = ctx.getbean(类.class)

在要创建bean的类上,添加注解。用于给配置类去扫描。

十一、注解开发bean的作用范围和生命周期控制

类加注解:@scope("prototype")

。。控制不用再实现接口,直接自己写方法,但是加注解:

@postconstruct 代表是创建之后执行。

@predestroy 代表销毁前执行。

并且应用程序要改为

anotationconfigapplicationcontext ctx = new annotationconfigapplicationcontext(新配置类 ***.class)

才能调用生命周期方法ctx.close() ctx.init()

十二、注解开发依赖注入:自动装配

引用类型注入:

连set方法都不用了,加注解@Autowired。!

当使用@autowired注解时,你不需要再去写getter和setter方法了。

 没啥用

简单类型注入:@value

用property文件内的值注入

总结注解开发:

一、AOP面向切面编程思想

在不改变原始设计的基础上进行功能增强。

将程序的共性功能抽取,在通知类中定义通知方法,方法里写共性功能。

将需要执行通知的方法,定义为切入点。而连接点是所有方法。切面表示在哪个切入点执行哪个通知。

切入点一定在连接点中。

二、AOP入门

1.pom.xml坐标导入

2.springconfig配置文件

加入@enableaspectjautoproxy。其他接口和实现类不变。

3.

4.

5.

6.

三、AOP工作流程

切入点表达式:

四、AOP通知类型

1.@before("pt()")

2.@after("pt()")

3.@around("pt()")

切入点无返回值:

切入点有返回值:

  

AOP获取数据没听。

spring事务

spring事务角色

Datasource

SpringMVC

1.

, 实现了Model,View和Controller之间的职责解耦

比servlet简单快捷。

2.入门

  

Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。

创建配置文件 加载控制类bean。只管理controller包的bean。

加载springmvc环境。

加载spring容器配置和springmvc的写法一样。

3.总结

4.流程

单次请求过程!!!

5.spring加载的bean和springmvc加载bean如何分开管理呢

· 一个是用大括号,把要扫描的包写详细。!!!

· 用filter写明要过滤的部分。

总结

6.postman

7.请求映射路径

在类上加@requestmapping。

8.get与post请求

· get

问号后写参数,用&连接。

参数在形参内接收。

· post 表单传参

请求体。

配置文件加

9.响应

跳转页面,没加responsebody

返回字符串  默认情况

返回json对象

返回json集合

10.REST风格 不是规范

路径名写成模块名的复数。

删除的写法,id写在路径后面,方法里要加@注释。

其他的写法要去改访问路径,再写method。

json和路径比较常用。

11.简化 以后用这个写

· @requestmapping和@responsebody直接 抽取到类上方。
· 同时@controller和@responsebody可以合并为 @restcontroller。
· requestmapping里的method简化为: 

12.整体思路
· 定义配置类等等
· 定义MVC的controller类,写好类上的注释,如restcontroller,requestmapping,responsebody等。
· 定义MVC里的操作,在方法上加REST风格对应路径。
· 在前端界面中,发起相应的请求,请求路径写为MVC中相应controller类的路径。mvc会根据请求类型和请求路径找到对应的操作。
整合Mybatis
0.导入坐标

1.程序入口

数据源

2. 配置类 !!

3.程序入口
从容器中获取Dao层的操作,调用方法。
SSM
1.      

就是先建数据库,定义实体类 类里面包含表的属性和getset方法。
再定义dao层接口和实现类,里面写增删改查的操作数据的方法。接口中通过代理的方法,用注解绑定sql语句。实现类里做自动注入。
controller中

Spring+Mybatis
学校讲的还有什么映射文件 iuserdao iuserdao.xml,全限定类名? 
注意:
· 映射文件所在的包和接口文件所在的包名一样。
· 映射文件名称和接口名称一致。
· 映射文件中mapper的namespace必须和接口的包名一致。
· 增删改查的 id必须和接口 函数名一致。 
· mapper接口方法不能重载。
顺序:
· 实体类属性对应数据库表的列。
· mapper接口写增删改查方法。
· mapper.xml写具体sql语句,通过delete、select、update、insert标签和id和resultType(只有查询才有返回值)绑定到具体方法上。每个标签对应接口中一个方法的实现。
· mybatis.config写数据库的连接内容和mapper.xml的位置。
· mybatisTest去调用,重点是sqlsessionfactory和 getmapper方法。

Mapper映射文件中只定义方法 和接口一样。在这个 xml文件里只写sql语句,mb框架能让我们更专注于语句的编写,而不是其他细节。

配置文件中写明数据库连接信息和mapper映射信息。

测试文件。

这下面的和学校讲的不太一样。这个是根据注解开发的。学校是根据配置文件开发的。
顺序:
· 配置jdbc数据库连接、spring、mybatis
· 实体类,定义数据库字段。
· dao层接口,定义数据库操作方法,用注解绑定sql语句。
· service接口,定义和dao接口一样的方法。
· 但是在 service实现类里,重写时是通过dao层接口调用带有sql语句的方法(MyBatis 内部运用了动态代理技术,生成接口的实现类,从而完成接口的相关功能。 没有接口实现也能用实现类的方法
· 应用类里,用service接口调实现类的方法。 即application-->service-->dao的调用关系。同样使用了上述的代理技术。

  
Controller获取实例的过程:使用@Autowired,程序在spring的容器中查找类型是BookService的bean,刚好找到有且只有一个此类型的bean,即BookServiceImpl,所以就把BookServiceImpl自动装配到了Controller的实例BookService中。
问:如果一个接口有多个实现类时,通过注解获取实例时怎么知道应该获取的是哪一个实现类serviceImpl呢?
1.通过指定bean的名称来明确到底要实例哪一个类
@Autowired需要结合@Qualifier
@Autowired
@Qualifier( "testServiceImpl2")
private TestService testService;

Spring+SpringMVC

  
springmvc会将接受到的json数据自动装配到book对象中。
@ RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。

表现层数据封装:

拦截器

总结:
  • IOC,即“控制反转”(Inversion of Control)
    • 将控制权从应用程序代码中转移到框架或容器中
    • 对象的创建、组装和管理都由框架来完成
    • 依赖注入
      • 将一个对象的依赖关系传递给另一个对象
      • 构造函数注入(Constructor Injection)
        • 通过类的构造函数传入依赖对象。对象在实例化时必须提供其依赖项。
        • 保证了在创建对象时必须提供依赖项
      • 属性注入(Property/Setter Injection)
        • 通过类的属性或 setter 方法注入依赖对象。对象实例化后可以通过公开的属性或者 setter 方法设置依赖。
      • 接口注入(Interface Injection)
      • 方法注入(Method Injection)
  • aop
    • 是一种编程范式
    • 将横切关注点(cross-cutting concerns)从核心业务逻辑中分离出来,横切关注点指的是影响应用程序多个部分的功能,比如日志记录、安全性、事务管理等。
    • • 切面(Aspect): 包含了横切关注点的模块或类。
    • • 连接点(Join Point): 在程序执行过程中可以插入切面的点,
    • • 通知(Advice): 切面在连接点上执行的动作
    • • 切点(Pointcut): 匹配连接点的表达式,确定在哪些连接点应用通知。
    • • 织入(Weaving): 将切面应用到目标对象并创建新的代理对象的过程。
    • @Component @Aspect @Pointcut @Before @After @AfterReturning @AfterThrowing @Around
  • 注解 springmvc
    • 用于简化和控制控制器(Controller)和请求处理的方式
    • @Controller
      • 用于标记类为Spring MVC的控制器,处理HTTP请求
    • @RequestMapping
      • 用在类级别和方法级别,用来定义URL路径和请求方法
      • @GetMapping、@PostMapping、@PutMapping、@DeleteMapping:** 分别用于处理GET、POST、PUT和DELETE请求,是@RequestMapping的缩写形式。
    • @RequestParam
      • 从请求中获取参数值,将 HTTP 请求中的参数与方法中的参数进行绑定
    • @PathVariable 变量
      • 将URL中的模板变量绑定到方法参数
    • @RequestBody 请求
      • 将HTTP请求的body部分绑定到方法参数,处理JSON或XML格式的数据
    • @ResponseBody 回应
      • 将方法的返回值直接作为HTTP响应的body部分返回,用于返回JSON或XML格式的数据。
    • @ModelAttribute 模型属性
      • 将方法返回的对象添加到模型中,用于在视图中渲染表单。
    • @ExceptionHandler 处理程序
      • 处理特定类型的异常
    • @InitBinder
      • 初始化数据绑定器,用于定制数据绑定过程
  • 软件开发中常见的三层架构各种注解的作用
    • 表现层(Presentation Layer)
      • 用于处理用户请求和渲染视图
      • @Controller
      • @RequestMapping
      • @RequestParam
      • @ModelAttribute
    • 业务逻辑层(Business Logic Layer)
      • 用于处理业务逻辑
      • @Service
        • 标记类为服务层组件,在业务逻辑层中处理业务逻辑
      • @Transactional
        • 声明方法或类的事务行为,管理数据库事务
    • 持久层(Persistence Layer)
      • 用于与数据库交互
        • @Mapper
      • @Repository 存储库
        • 标记类为数据访问层组件(DAO),负责与数据库交互
      • @Entity、@Table、@Column
        • JPA和Hibernate中用于实体映射的注解,用于将Java类映射到数据库表和字段
      • @Id、@GeneratedValue 生成值
        • 指定实体的主键和生成策略
  • mybais 最原始的开发方式四个统一
    • 1.映射文件名和接口名一致(除扩展名)
    • 2.映射文件的名称空间(namespace) 必须是该接口的全限定类名
    • 3.查询id (select) 必须跟接口内方法名一致
    • 4.包结构必须完全一致
  • Mybatis——关联映射
    • 是一个用 Java 编写的持久层框架
    • <association> 标签表示一对一关系
    • <resultMap> 定义了主表和相关表的映射关系,使用 <collection> 标签表示一对多关系和多对多关系
  • Spring MVC阶段测试
    • 静态资源文件 C、src/main/resources/static
    • Web的模板文件 D.src/main/resources/templates
    • application.properties存放的目录 C、src/main/resources
    • ModelAndView类使用addObject方法存储数据
    • 实现重定向到“main.html”页面B@RequestMapping("/login") public String login( ){ return "redirect:/ main.html"; }
    • 自定义拦截器 C、HandlerInterceptor
      • preHandle(在处理器执行前调用)、
      • postHandle(在处理器执行后调用但在视图渲染之前)、
      • afterCompletion(在视图渲染之后调用)
    • 注册拦截器
      • @Configuration
      • @Override public void **(5)addInterceptors**
      • InterceptorRegistration ir=registry.addInterceptor(**(6)new Interceptor1( )** );
      • // 拦截interceptor路径下所有请求 ir.addPathPatterns("(7)/interceptor/*");
  • U+代码
    • Spring IoC属性注入使用set方法注入
      • <property name ="bookname" value="数据结构"/>
    • 使用有参数构造注入
      • <constructor-arg name ="bookname" value="数据结构"/>
    • 注入对象类型属性
      • < property name ="userDao" ref ="userDao"/>
    • 注解注入属性
      • @Autowired @Override
    • 注解用于处理请求地址映射
      • @RequestMapping("/hello1")
    • 响应为JSON数据集
      • @ResponseBody (3)@PathVariable("id")
    • 按bookId查询,查询bookId的值为“001”的图书,显示结果JSON格式
      • * 请写出URL地址: http://localhost:8080/**book/getById?bookId=001
    • 上传文件JSP /WEB-INF/jsp/file/upload.jsp
      • form method="**(1)post**"action="/upload /multipart" enctype="**(2)multipart/form-data**"> <input type="file" name="photo" value="请选择上传的文件" /> <input type="submit" value="提交" />
    • 文件上传控制器
      • @Controller @PostMapping("/upload/multipart") public **(5)@ResponseBody** Map<String, Object> upload((6)@RequestParam ("photo") **(7)MultipartFile** photo)return **(8)dealResultMap**(false, "上传失败"); } return **(9)dealResultMap**(true, "上传成功");
      • 处理上传文件结果 return **(10)result **
    • 通过控制类访问index.html
      • **(1)@Controller **
    • 处理请求的控制类LoginController
      • **(2)@Controller **
      • @PostMapping("**(3)/login**")
      • public ModelAndView login(**(4)@RequestParam**("loginName") String loginName,**(5)@RequestParam**("password") String password,ModelAndView mv)
    • 处理请求的控制类 MainController
      • @Controller
      • @RequestMapping("**(6)/main**")
    • *部门表和员工表
      • private **(1)Dept** dept; //定义员工和部门的关系 dept为成员变量
      • private **(2)List&lt;Emp&gt**; emps; //定义部门和员工的关系,emps为成员变量
  • 实验一
    • .applicationContext.xml 文件中属性注入(采用<property>元素)
    • 、IoC实现—基于注解方式
      • 添加注解@Repository 存储库 @Service @Autowired 自动装配
    • AOP实现_注解方式
  • 实验二:MVC框架技术应用——URL映射及方法参数的使用
    • Spring MVC 是基于Spring 基础框架派生出来的Web框架
      • 围绕DispatcherServlet 而工作 调度员
    • 。Spring MVC一开始就定位于一个较为松散的组合,展示给用户的视图(View)、控制器返回的数据模型(Model)、定位视图的视图解析器(ViewResolver)和处理适配器(HandlerAdapter)等内容是独立的。
    • Spring MVC 全流程
      • HTTP Request
      • HandlerMapping
        • HandlerExecutionChain
      • HandlerAdapter
      • ModelAndView
      • ViewResolver
      • View
    • 网页
      • div 组织内容,设置样式
      • table 展示行和列的二维数据
      • <tr 定义表格中的行
      • <td> 定义表格中的数据单元格
      • <c:out 在 JSP 页面中输出内容。它用于避免简单的字符串拼接可能导致的一些问题
      • <input> 是 HTML 中用于创建输入字段的标签。用户可以在这些字段中输入文本、选择选项或提交表单数据。
      • c:forEach 方便地遍历集合或数组中的每个元素,并对每个元素执行相应的操作
    • :JSON 视图是没有视图解析器的定位视图的,因为它不是一个逻辑视图,只是需要将数据模型(这里是User对象)转换为JSON而已
      • @RequestMapping
      • 使用@RequestParam获取参数
      • // 此处需要告知传递参数类型为JSON,不能缺少
        • contentType : "application/json",
      • // 将JSON转化为字符串传递
        • data : JSON.stringify(params),
      • 通过@RequestBody注解得到JSON参数
      • //访问模型层得到数据
        • List<User> users=userService.findAllUser();
      • //模型和视图
        • ModelAndView mv=new ModelAndView();
      • //定义模型视图
        • mv.setViewName("user/details1");
      • //加入数据模型
        • mv.addObject("users", users);
      • //返回模型和视图
        • return mv;
    • 通过URL传递参数
      • 通过处理器映射和注解@PathVariable的组合获取URL参数。
      • /@PathVariable 通过参数名称获取参数
      • //获取提交参数
        • @PostMapping("/format/commit")
        • @ResponseBody
  • 实验三:MVC框架技术应用 ——Spring Boot文件上传及@ModelAttribute注解的使用
    • Spring MVC提供MultipartFile接口作为参数来处理文件上传
      • getOriginalFilename 获取上传的文件名字
      • getInputStream 获取一个InputStream
      • getSize 上传文件的大小
      • isEmpty 文件上传内容为空,或者没有文件上传
    • 单个文件上传
      • @PostMapping("/upload/multipart")
      • @ResponseBody
      • @RequestParam("photo") MultipartFile photo
      • <input type="file" name="photo" value="请选择上传的文件" />
      • #指定默认上传的文件夹
        • spring.servlet.multipart.location=d:/temp1/
      • #限制单个文件最大大小
        • spring.servlet.multipart.max-file-size=5242880
      • #限制所有文件最大大小,这里设置为20MB
        • spring.servlet.multipart.max-request-size=20MB
      • 使用@RequestParam注解来限制上传文件的类型。
    • 批量文件上传
      • @RequestParam("photo") MultipartFile[] photos
      • 使用数组来接收多个上传的文 件
      • form method="post" action="./multipart1" enctype="multipart/form-data">
      • <input type="file" name="photo" value="请选择上传的文件" /><p>
      • <input type="file" name="photo" value="请选择上传的文件" /><p>
      • <input type="submit" value="提交" />
    • 文件上传控制器
      • @GetMapping("/upload/page1")
      • @PostMapping("/upload/multipart1")
      • @ResponseBody
  • 实验四:Spring Boot 整合Mybatis
    • MyBatis 框架是一个 Java 持久层的框 架,,它几乎可以替代 JDBC,同时提供了接口编程,只需要一个接口和XML(或者注解)
      • 1)封装JDBC 操作
      • 2)利用反射打通Java类和sql语句之间的关系
    • MyBatis 框架包括两种类型的XML文件
      • 一类是配置文件,即mybatis-config.xml
        • 包含了<mappers></mappers>节点,这里就是MyBatis 映射器
      • 一类是映射文件,例如XXXMapper.xml等
    • MyBatis 映射器分为三类
      • 1)纯XML映射器,利用SqlSession的各种方法实现增删改查
      • (2)XML映射器+接口映射器的混合类型
        • 其中xml映射器的namespace应该对应接口映射器的类名
        • MyBatis 内部运用了动态代理技术,生成接口的实现类,从而完成接口的相关功能
      • (3)注解+接口映射器的混合形式
    • // 注入用户服务类
      • @Autowired
    • // 1.通过URL传递参数
      • @GetMapping("/{id}")
    • // 相应为JSON数据集
      • @ResponseBody
    • // @PathVariable 通过参数名称获取参数
      • public User get(@PathVariable("id") Integer id)
    • // 访问模型层得到数据
      • List<User> users = userService.findAllUser();
    • @MapperScan
  • 实验五:Spring Boot 整合Mybatis——关联映射(
    • 一对一
      • 在<resultMap>元素中包含一个<association>子元素
        • property - 对象属性的名称 ,用来指定关联属性
        • column - 所对应的外键字段名称
        • javaType - 对象属性的类型
        • select –指定映入嵌套查询的子SQL语句,即使用另一个查询封装的结果。
      • //一名员工只能在一个部门
        • private Dept dept;
    • 一对多
      • 在<resultMap>元素中包含一个<collection>子元素
        • ofType 属性与javaType 属性对应用于指定实体对象中集合类属性所包含的元素类型。
      • //一个部门有多名员工
        • private List<Emp>emps;
    • 多对多可以表示为两个一对多
    • 嵌套查询
      • 通过执行另外一个SQL 映射语句来返回预期的复杂类型
  • 实验六:Spring Boot整合Mybatis——注解方法
    • @Select 注解映射查询
    • /@Results用于映射对象属性和数据库列,常用于对象属性和数据库列不同名情况
      • @Result
    • 使用注解映射无需编写映射文件,只需在接口的方法上使用注解实现对SQL语句的映射,从而简化程序的开发
    • 引用id=“userResult”的Results
      • @ResultMap("userResult")
    • .基于注解的一对一关联映射
      • @One
    • //根据id查询班级信息
      • public Sclass findClassById(Integer id);
    • 、基于注解的一对多关联映射
      • @Many
    • DeptController 类
      • @Controller
      • @RequestMapping("dept")
      • @Autowired
      • 通过URL传递参数
        • @GetMapping("/{deptno}")
      • 相应为JSON数据集
        • @ResponseBody
      • @PathVariable 通过参数名称获取参数
        • public Dept getDeptByDeptno(@PathVariable("deptno") Integer deptno)
DAO:data access object,数据访问对象。

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

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

相关文章

QT模型/视图:自定义代理类型

简介 在模型/视图结构中&#xff0c;代理的作用就是在视图组件进入编辑状态编辑某个项时&#xff0c;提供一个临时的编辑器用于数据编辑&#xff0c;编辑完成后再把数据提交给数据模型。例如&#xff0c;在 QTableView 组件上双击一个单元格时&#xff0c;代理会提供一个临时的…

llm 深度宽度决定了llm 的什么属性

FoxLLM 论文中提到的“深度决定了推理能力&#xff0c;宽度决定记忆能力”的观点&#xff0c;实际上反映了神经网络架构设计中的一个重要原则。这一原则并非FoxLLM模型独有&#xff0c;而是基于大量研究和实验结果得出的一般性结论。接下来&#xff0c;我们将详细探讨这一观点背…

ubuntu中使用ffmpeg库进行api调用开发

一般情况下&#xff0c;熟悉了ffmpeg的命令行操作&#xff0c;把他当成一个工具来进行编解码啥的问题不大&#xff0c;不过如果要把功能集成进自己的软件中&#xff0c;还是要调用ffmpeg的api才行。 ffmpeg的源码和外带的模块有点太多了&#xff0c;直接用官网别人编译好的库就…

Chrome扩展插件案例:单词查询

Chrome扩展插件案例&#xff1a;单词查询 在页面内选中单词&#xff0c;右键菜单中显示词典连接&#xff0c;自动将选中单词发送至该词典查询 创建项目文件夹&#xff0c;在文件夹内创建一下文件 manifest.json: {"manifest_version":2,//版本号&#xff0c;由goo…

Leetcode SQL 刷题与答案-基础篇

数据科学家 算法工程师 面试准备 全套-github.com/LongxingTan/Machine-learning-interview 1050. 合作过至少三次的演员和导演 SELECT actor_id, director_id FROM ActorDirector GROUP BY actor_id, director_id HAVING COUNT(*) > 3;1076. Project Employees II SELEC…

实现 DataGridView 下拉列表功能(C# WinForms)

本文介绍如何在 WinForms 中使用 DataGridViewComboBoxColumn 实现下拉列表功能&#xff0c;并通过事件响应来处理用户的选择。以下是实现步骤和示例代码。 1. 效果展示 该程序的主要功能是展示如何在 DataGridView 中插入下拉列表&#xff0c;并在选择某一项时触发事件。 2.…

Docker Compose实战一( 轻松部署 Nginx)

通过过前面的文章&#xff08;Docker Compose基础语法&#xff09;你已经掌握基本语法和常用指令认识到Docker Compose作为一款强大工具的重要性&#xff0c;它极大地简化了多容器Docker应用程序的部署与管理流程。本文将详细介绍如何使用 Docker Compose 部署 Nginx&#xff0…

【免费】如何考取HarmonyOS应用开发者基础认证和高级认证(详细教程)

HarmonyOS应用开发者认证考试PC网址 基础&#xff1a;华为开发者学堂 高级&#xff1a;华为开发者学堂 注&#xff1a;免费认证&#xff0c;其中基础认证有免费的课程&#xff0c;浏览器用Edge。 (新题库有点懒&#xff0c;不更新了&#xff0c;点赞收藏后找我要新题库 2024…

解决ThreadLocal在项目中的线程数据共享问题

目录 ThreadLocal 简介 问题描述 为什么会有这个问题 解决方案 1. 使用请求作用域存储 2. 使用 HTTP Session 存储 3. 使用 Spring Security 4. 确保 ThreadLocal 的正确使用 5.通常解决方法 结论 在多线程环境中&#xff0c;ThreadLocal 是一种非常有用的工具&#…

瑞芯微开发板 烧写固件问题

自用rk3568-firefly-itx-3568q核心板fpga自研底板&#xff0c;因底板所需外设、功能与原厂有较大差异&#xff0c;故裁剪相应sdk&#xff0c;编译新的内核进行烧写。然而在更改设备树过程中kernel/drivers/media/i2c/fpga.c中的像素格式MEDIA_BUS_FMT_YUYV8_2X8误改成MEDIA_BUS…

photoblog解题过程

本题要求&#xff1a;通过sql注入&#xff0c;找到数据库中的账号密码&#xff0c;并成功登录。登录后利用文件上传&#xff0c;将一句话木马上传到数据库中&#xff0c;然后并对网站进行控制。 解题过程 1、通过在靶机中输入ifconfig&#xff0c;查到ip为192.168.80.153&…

QT获取tableview选中的行和列的值

查询数据库数据放入tableview&#xff08;tableView_database&#xff09;后 QSqlQueryModel* sql_model new QSqlQueryModel(this);sql_model->setQuery("select * from dxxxb_move_lot_tab");sql_model->setHeaderData(0, Qt::Horizontal, tr("id&quo…

「Mac玩转仓颉内测版46」小学奥数篇9 - 基础概率计算

本篇将通过 Python 和 Cangjie 双语实现基础概率的计算&#xff0c;帮助学生学习如何解决简单的概率问题&#xff0c;并培养逻辑推理和编程思维。 关键词 小学奥数Python Cangjie概率计算 一、题目描述 假设有一个袋子中有 5 个红球和 3 个蓝球&#xff0c;每次从袋子中随机…

Face2QR:可根据人脸图像生成二维码,还可以扫描,以后个人名片就这样用了!

今天给大家介绍的是一种专为生成个性化二维码而设计的新方法Face2QR&#xff0c;可以将美观、人脸识别和可扫描性完美地融合在一起。 下图展示为Face2QR 生成的面部图像&#xff08;第一行&#xff09;和二维码图像&#xff08;第二行&#xff09;。生成的二维码不仅忠实地保留…

电子商务人工智能指南 1/6 - 搜索、广告和发现

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

Python快速入门二:Python3 基础语法

一、编码 默认情况下&#xff0c;Python 3 源码文件以 UTF-8 编码&#xff0c;所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码&#xff1a; # -*- coding: cp-1252 -*-上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码&#xff0c;对应适…

nextcloud云盘的部署

借鉴链接&#xff1a;https://blog.csdn.net/guigenyi/article/details/126692747 创建自定义 Docker 网络 docker network create nextcloud-network 创建mysql的账号密码都是root 并将其连接到自定义网络 docker run --name mysql-container --network nextcloud-network -e…

图(dfs与bfs)算法1

开辟新专题&#xff01;不擅长的图它来了来了&#xff01;&#xff08;莫名激动 进度&#xff1a;10/100 另&#xff1a;没想到给自己挖了个坑&#xff0c;可以用dfs的基本上也可以用bfs&#xff0c;看来要双线并行了。 补&#xff1a;图算法是我近期得有30%的焦虑来源了&am…

Ruby On Rails 笔记3——表的增删改查

1.Migration Migrations是一种便利的方法,能以重现的方式随时间推移改变数据库schema. 使用Ruby Domain Specific Language (DSL),因此你不用手写SQL,进而使你的schema和changes与数据库独立。 可以把每次migration看作是数据库的一个新“版本”。A schema开始时什么都没有…

一、测试工具LoadRunner Professional脚本编写-录制前设置

设置基于URL的脚本 原因:基于HTML的脚本会导致login接口不能正确录制 设置UTF-8 原因:不勾选此项会导致脚本中文变为乱码