SpringBoot期末知识点大全

news2024/12/26 23:04:50
一、学什么
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.coloradmin.cn/o/2254376.html

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

相关文章

撰写技术文档的关键步骤和核心要点

编写项目的技术文档是一个重要且细致的任务&#xff0c;它不仅有助于项目的当前开发团队理解系统的结构和工作原理&#xff0c;还为未来的维护和扩展提供了宝贵的参考资料。以下是撰写技术文档时应遵循的几个关键步骤和组成部分&#xff1a; 1. 概述 项目简介&#xff1a;简要…

【人工智能】Transformers之Pipeline(二十八):视觉问答(visual-question-answering)

​​​​​​​ 目录 一、引言 二、视觉问答&#xff08;visual-question-answering&#xff09; 2.1 概述 2.2 dandelin/ViLT 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline对象返回参数 2.4 pipeline实战 2.5 模型…

【Vue3】详解Vue3的ref与reactive:两者的区别与使用场景

文章目录 引言Moss前沿AIVue 3响应式系统概述ref与reactive的基础概念ref与reactive的区别1. 数据类型2. 访问方式3. 响应式追踪机制4. 可变性5. 使用场景表格对比 ref与reactive的使用场景1. 选择ref的场景2. 选择reactive的场景 性能分析与优化建议1. 响应式系统的性能优势2.…

8. 一分钟读懂“代理模式”

8.1 模式介绍 代理模式是一种结构型设计模式&#xff0c;它通过提供一个代理对象来替代对另一个对象&#xff08;真实对象&#xff09;的访问。代理对象与真实对象实现相同的接口&#xff0c;并通过代理类对真实对象的访问进行控制&#xff0c;可以在调用前后执行附加操作&…

网络原理(HPPT/HTTPS)

应用层&#xff08;重点&#xff09; HTTP协议 HTTP 是⼀个⽂本格式的协议. 可以通过 Chrome 开发者⼯具或者 Fiddler 抓包, 分析 HTTP 请求/响应的细节. Fiddler 抓包 左侧窗⼝显⽰了所有的 HTTP请求/响应, 可以选中某个请求查看详情. • 右侧上⽅显⽰了 HTTP 请求的报⽂内容…

随时随地掌控数据:如何使用手机APP远程访问飞牛云NAS

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

计算机毕业设计Python+Spark医生推荐系统 医生门诊预测系统 医生数据分析 医生可视化 医疗数据分析 医生爬虫 大数据毕业设计 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

golang实现单例日志对象

原文地址&#xff1a;golang实现单例日志对象 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 介绍 golang有很多日志包&#xff0c;通过设置和修改都能实现日志轮转和自定义日志格式。例如&#xff1a;log、zap、golog、slog、log4go 等等。 …

SpringBoot该怎么使用Neo4j - 优化篇

文章目录 前言实体工具使用 前言 上一篇中&#xff0c;我们的Cypher都用的是字符串&#xff0c;字符串拼接简单&#xff0c;但存在写错的风险&#xff0c;对于一些比较懒的开发者&#xff0c;甚至觉得之间写字符串还更自在快速&#xff0c;也确实&#xff0c;但如果在后期需要…

【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)

文章目录 一、Calibre-Web和Calibre的区别是什么&#xff1f;使用场景分别是什么&#xff1f;二、服务器安装docker和docker-compose三、服务器安装Calibre-Web步骤1、安装完成后的目录结构2、安装步骤3、初始配置4、启动上传 四、安装Calibre五、docker-compose常用命令 最近想…

easyexcel 导出日期格式化

1.旧版本 在新的版本中formate已经被打上废弃标记。那么不推荐使用这种方式。 2.推荐方式 推荐使用另外一种方式【 Converter 】代码如下&#xff0c;例如需要格式化到毫秒【yyyy-MM-dd HH:mm:ss SSS】级别 创建一个公共Converter import com.alibaba.excel.converters.Conv…

ABAP - 系统集成之SAP的数据同步到OA(泛微E9)服务器数据库

需求背景 项目经理说每次OA下单都需要调用一次SAP的接口获取数据&#xff0c;导致效率太慢了&#xff0c;能否把SAP的数据保存到OA的数据库表里&#xff0c;这样OA可以直接从数据库表里获取数据效率快很多。思来想去&#xff0c;提供了两个方案。 在集群SAP节点下增加一个SQL S…

40分钟学 Go 语言高并发:【实战】分布式缓存系统

【实战课程】分布式缓存系统 一、整体架构设计 首先&#xff0c;让我们通过架构图了解分布式缓存系统的整体设计&#xff1a; 核心组件 组件名称功能描述技术选型负载均衡层请求分发、节点选择一致性哈希缓存节点数据存储、过期处理内存存储 持久化同步机制节点间数据同步…

w~视觉~合集27

我自己的原文哦~ https://blog.51cto.com/whaosoft/12715639 #视频AIGC~论文 1、Pix2Video: Video Editing using Image Diffusion 基于大规模图像库训练的图像扩散模型已成为质量和多样性方面最为通用的图像生成模型。它们支持反转真实图像和条件生成&#xff08;例如&…

MYSQL中的增删改查操作(如果想知道MYSQL中有关增删改查操作的知识,那么只看这一篇就足够了!)

前言&#xff1a;在 MySQL 中&#xff0c;增、删、改、查&#xff08;CRUD&#xff09;操作是基本的数据库操作&#xff0c;增操作&#xff08;INSERT&#xff09;用于插入数据&#xff0c;删操作&#xff08;DELETE&#xff09;用于删除数据&#xff0c;改操作&#xff08;UPD…

Ansible的yum和saltstack的哪个功能相似

Ansible的yum和saltstack的哪个功能相似 在 Ansible 和 SaltStack 中&#xff0c;Ansible 的 yum 模块 和 SaltStack 的 pkg 模块 功能相似。它们都用于管理软件包&#xff0c;支持安装、升级、删除和查询等操作。 Ansible 的 yum 模块 用途&#xff1a; 专门用于基于 Red Hat …

在做题中学习(76):颜色分类

解法&#xff1a;三指针 思路&#xff1a;用三个指针&#xff0c;把数组划分为三个区域&#xff1a; for循环遍历数组&#xff0c;i遍历数组&#xff0c;left是0区间的末尾&#xff0c;right是2区间的开头&#xff0c;0 1 2区间成功被划分 而上面的图画是最终实现的图样&…

Java版-速通数据结构-树基础知识

现在面试问mysql,红黑树好像都是必备问题了。动不动就让手写红黑树或者简单介绍下红黑树。然而&#xff0c;我们如果直接去看红黑树&#xff0c;可能会一下子蒙了。在看红黑树之前&#xff0c;需要先了解下树的基础知识&#xff0c;从简单到复杂&#xff0c;看看红黑树是在什么…

浙江工业大学《2024年828自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《浙江工业大学828自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题

【计算机网络】实验11:边界网关协议BGP

实验11 边界网关协议BGP 一、实验目的 本次实验旨在验证边界网关协议&#xff08;BGP&#xff09;的实际作用&#xff0c;并深入学习在路由器上配置和使用BGP协议的方法。通过实验&#xff0c;我将探索BGP在不同自治系统之间的路由选择和信息交换的功能&#xff0c;理解其在互…