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

spring基础总结

先修知识:依赖注入,反转控制,生命周期

IDEA快捷键

Ctrl + Alt+m:提取方法,设置trycatch

通用快捷键:

  • Ctrl + F:在当前文件中查找文本。
  • Ctrl + R:在当前文件中替换文本。
  • Ctrl + Z:撤销上一步操作。
  • Ctrl + Y:删除当前行或选中的行。
  • Ctrl + D:复制当前行或选中的内容,并插入到光标下方。
  • Ctrl + W:递进式选择代码块,连续按可扩展选中范围。
  • Ctrl + E:显示最近打开的文件列表。
  • Ctrl + N:根据类名查找类文件。
  • Ctrl + Shift + N:根据文件名查找文件。
  • Ctrl + Alt + L:格式化代码。
  • Ctrl + Alt + O:优化导入的类。
  • Ctrl + Alt + T:包裹选中的代码块。
  • Ctrl + Alt + B:跳转到方法或变量的实现处。
  • Ctrl + Alt + F7:显示当前类或方法的使用情况。
  • Ctrl + Alt + S:打开系统设置。
  • Ctrl + Alt + F1:在项目视图中定位当前文件。
  • Ctrl + Alt + F12:切换到当前文件的工具窗口。

编辑相关:

  • Ctrl + /:对当前行或选中的代码进行行注释或取消注释。
  • Ctrl + Shift + /:对当前代码块进行块注释或取消注释。
  • Ctrl + Shift + J:将下一行合并到当前行。
  • Ctrl + Shift + U:切换选中内容的大小写。
  • Ctrl + Shift + V:从剪贴板历史中粘贴内容。
  • Ctrl + Shift + I:快速查看光标所在的定义。
  • Ctrl + Shift + F:在项目中查找文本。
  • Ctrl + Shift + R:在项目中替换文本。
  • Ctrl + Shift + A:查找并执行操作。

调试相关:

  • F7:进入方法内部。
  • F8:跳过当前行。
  • F9:恢复程序运行。
  • Shift + F7:智能步入。
  • Shift + F8:跳出当前方法。
  • Alt + F8:评估表达式。
  • Ctrl + F8:切换断点。
  • Ctrl + Shift + F8:查看断点。

导航相关:

  • Ctrl + BCtrl + 鼠标左键:跳转到方法或变量的定义处。

  • Ctrl + Alt + 左/右箭头:在编辑器中前进或后退。

  • Ctrl + G:跳转到指定行号。

  • Ctrl + F12:显示文件结构。

  • Ctrl + Shift + F12:最大化或恢复编辑器窗口。

  • Ctrl + Tab:在打开的文件之间切换。

  • Ctrl + Shift + Tab:反向切换打开的文件。

  • Ctrl + Alt + F1:在项目视图中定位当前文件。

  • Ctrl + Alt + F12:切换到当前文件的工具窗口。

  • IntelliJ IDEA 常用快捷键讲解(Win + Linux)

  • IDEA快捷键大全(Windows)

  • IDEA Windows + Mac 快捷键(全)

http请求的组成

HTTP 请求是客户端(如浏览器、APP)向服务器发送数据的一种规范格式,由 请求行、请求头、空行、请求体 四部分组成。以下是详细内容和示例:

一、HTTP 请求的组成

1. 请求行(Request Line)
  • 格式请求方法 + URL + HTTP版本
  • 示例
    GET /api/users?id=123 HTTP/1.1
    POST /api/login HTTP/1.1
    
  • 核心字段
    字段说明
    请求方法GET(查询)、POST(提交)、PUT(更新)、DELETE(删除)等。
    URL资源路径,可能包含查询参数(如 ?id=123)。
    HTTP 版本通常为 HTTP/1.1HTTP/2
2. 请求头(Request Headers)
  • 格式键: 值

  • 常见请求头

    请求头说明
    Host目标服务器域名(如 Host: example.com)。
    User-Agent客户端标识(如浏览器、操作系统)。
    Content-Type请求体的数据类型(如 application/jsontext/html)。
    Cookie客户端存储的会话信息。
    Authorization身份验证凭证(如 Bearer token)。
    Accept客户端能接受的响应格式(如 Accept: application/json)。
  • 示例

    Host: api.example.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
    Content-Type: application/json
    
3. 空行(Empty Line)
  • 作用:分隔请求头和请求体,必须存在(即使没有请求体)。
  • 示例
    (此处是一个空行)
    
4. 请求体(Request Body)
  • 作用:携带客户端提交的数据(如表单、JSON)。
  • 适用场景POSTPUTPATCH 等需要传递数据的请求。
  • 示例(JSON 格式):
    {"username": "deepseek","password": "123456"
    }
    

二、HTTP 请求示例

1. GET 请求
GET /search?q=http+request HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html
Cookie: session_id=abc123
(空行)
2. POST 请求(表单提交)
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 29username=deepseek&password=123
3. POST 请求(JSON 数据)
POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 56{"name": "DeepSeek","email": "contact@deepseek.com"
}

三、关键总结

组成部分内容示例或说明
请求行方法 + URL + HTTP 版本GET /index.html HTTP/1.1
请求头客户端和服务器的元数据Content-Type: application/json
空行分隔请求头和请求体必须存在!
请求体提交的数据(可选)POST 请求的 JSON、表单数据等。

四、注意事项

  1. GET 与 POST 的区别

    • GET:数据通过 URL 查询参数传递(长度有限制)。
    • POST:数据通过请求体传递(支持更大数据量)。
  2. Content-Type 的重要性

    • 服务器根据 Content-Type 解析请求体数据。
    • 常见值:
      • application/json:JSON 格式。
      • application/x-www-form-urlencoded:表单数据(键值对)。
      • multipart/form-data:文件上传。
  3. 无请求体的情况

    • GETHEADDELETE 等请求通常没有请求体。

spring与http

HTTP请求与Spring框架的关联可以通过其组成部分逐一对应到Spring的处理机制上,以下是详细的解析:

一、HTTP请求的组成

1. 请求行(Request Line)
  • 组成方法 + URI + HTTP版本
    示例:GET /api/users HTTP/1.1
  • 关键元素
    • 方法:GET、POST、PUT、DELETE等。
    • URI:资源路径,可能包含查询参数(如/users?id=1)。
    • 协议版本:如HTTP/1.1或HTTP/2。
2. 请求头(Headers)
  • 作用:传递元数据,如内容类型、认证信息等。
  • 常见头字段
    • Content-Type:请求体格式(如application/json)。
    • Authorization:认证令牌(如JWT)。
    • User-Agent:客户端信息。
    • Accept:客户端期望的响应格式。
3. 请求体(Body)
  • 适用方法:POST、PUT、PATCH等。
  • 数据格式
    • 表单数据(application/x-www-form-urlencoded)。
    • JSON/XML(application/json)。
    • 文件上传(multipart/form-data)。

二、Spring框架如何处理HTTP请求

1. 入口:DispatcherServlet
  • Spring MVC的核心控制器,接收所有HTTP请求并分发给对应的处理器(Controller)。
  • 配置:在web.xml或通过WebApplicationInitializer注册。
2. 映射请求到Controller
  • 注解驱动
    • @Controller:标记类为请求处理器。
    • @RequestMapping:定义URI映射(可细化到@GetMapping@PostMapping等)。
    @RestController
    @RequestMapping("/api")
    public class UserController {@GetMapping("/users/{id}")public User getUser(@PathVariable Long id) {// 处理逻辑}
    }
    
3. 参数绑定
  • URL参数
    • @RequestParam:获取查询参数。
    @GetMapping("/users")
    public List<User> getUsers(@RequestParam(required = false) String name) { ... }
    
  • 路径变量
    • @PathVariable:绑定URI中的变量。
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) { ... }
    
  • 请求体
    • @RequestBody:将JSON/XML反序列化为Java对象。
    @PostMapping("/users")
    public User createUser(@RequestBody User user) { ... }
    
  • 请求头
    • @RequestHeader:获取特定请求头。
    @GetMapping("/info")
    public String getInfo(@RequestHeader("User-Agent") String userAgent) { ... }
    
  • Cookie和Session
    • @CookieValue:获取Cookie值。
    • HttpSession:直接注入Session对象。
4. 处理请求体数据
  • 表单数据
    • 自动绑定到POJO或通过@RequestParam获取。
  • JSON/XML
    • 使用@RequestBody + HttpMessageConverter(如Jackson库)反序列化。
  • 文件上传
    • MultipartFile类型接收上传文件。
    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) { ... }
    
5. 生成响应
  • 直接返回对象
    • @RestController@ResponseBody自动序列化返回值为JSON/XML。
  • 自定义响应
    • ResponseEntity:控制状态码、响应头、响应体。
    @GetMapping("/notfound")
    public ResponseEntity<User> handle404() {return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
    }
    
  • 视图渲染
    • 返回视图名(如return "home";),由ViewResolver解析为HTML页面。
6. 处理异常
  • @ExceptionHandler:在Controller内处理特定异常。
  • @ControllerAdvice:全局异常处理。
@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(ResourceNotFoundException.class)public ResponseEntity<String> handleNotFound(ResourceNotFoundException ex) {return ResponseEntity.status(404).body(ex.getMessage());}
}

三、Spring与HTTP请求的关联示例

1. 处理RESTful请求
@RestController
@RequestMapping("/api/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getUser(@PathVariable Long id) {return userService.findById(id);}@PostMappingpublic ResponseEntity<User> createUser(@RequestBody User user) {User savedUser = userService.save(user);return ResponseEntity.created(URI.create("/api/users/" + savedUser.getId())).body(savedUser);}
}
2. 文件上传
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {if (!file.isEmpty()) {String fileName = file.getOriginalFilename();// 保存文件到磁盘return "上传成功: " + fileName;}return "上传失败";
}
3. 内容协商(返回不同格式)
@GetMapping(value = "/data", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
public Data getData() {return dataService.getData();
}

四、关键组件支撑

  1. HandlerMapping:将请求映射到Controller方法。
  2. HandlerAdapter:执行Controller方法并处理参数绑定。
  3. ViewResolver:解析视图名称到具体页面(如JSP、Thymeleaf)。
  4. HttpMessageConverter:处理请求/响应的序列化与反序列化(如JSON ↔ Java对象)。
  5. Interceptor:在请求处理前后执行逻辑(如日志、鉴权)。

总结

  • HTTP请求的每一部分(方法、URI、头、体)均在Spring中有对应处理机制。
  • Spring通过注解和组件(如@GetMapping@RequestBodyDispatcherServlet)将HTTP请求解构并映射到Java方法。
  • 开发者关注业务逻辑,Spring处理底层HTTP协议细节(如参数绑定、内容协商、状态码管理)。

spring和servlet

Spring 框架与 Servlet 技术是 基础与扩展 的关系。Servlet 是 Java EE 的底层规范,负责处理 HTTP 请求和响应;而 Spring(特别是 Spring MVC)是基于 Servlet 构建的高层框架,通过封装和抽象简化了 Web 开发。以下是二者的核心关联和区别:

一、Servlet 是什么?

  1. 核心角色

    • Servlet 是 Java 的服务器端组件,用于处理 HTTP 请求(service() 方法)并生成响应。
    • 每个 Servlet 需继承 javax.servlet.http.HttpServlet 并重写 doGet()doPost() 等方法。
    • 生命周期由 Servlet 容器(如 Tomcat、Jetty)管理:init()service()destroy()
  2. 局限性

    • 手动处理请求参数:需从 HttpServletRequest 中提取参数。
    • 视图渲染复杂:需手动拼接 HTML 或集成 JSP。
    • 代码冗余:多个 Servlet 需重复编写异常处理、权限校验等逻辑。

二、Spring 如何基于 Servlet 工作?

Spring MVC 的底层依赖 Servlet,但通过抽象和封装简化了开发流程,核心组件如下:

1. 核心入口:DispatcherServlet
  • 角色:Spring MVC 的前端控制器,接收所有 HTTP 请求并分发给对应的处理器(Controller)。
  • 配置
    • web.xml 中定义,拦截指定 URL(如 /*):
      <servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-mvc.xml</param-value></init-param>
      </servlet>
      <servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern>
      </servlet-mapping>
      
    • 或通过 Java Config 动态注册(Spring Boot 自动完成)。
2. 关键组件协作流程
HTTP Request → DispatcherServlet → HandlerMapping → Controller → ModelAndView → ViewResolver → HTTP Response
  • HandlerMapping:将请求 URL 映射到具体的 Controller 方法(如 @RequestMapping)。
  • HandlerAdapter:执行 Controller 方法,处理参数绑定(如 @RequestParam@RequestBody)。
  • ViewResolver:解析视图名称(如返回的 "home")为实际视图(如 JSP、Thymeleaf 模板)。
3. 对比 Servlet 与 Spring MVC 的代码
  • 原生 Servlet 处理请求
    public class UserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) {String id = req.getParameter("id");User user = userService.findById(id);resp.setContentType("application/json");resp.getWriter().write(new Gson().toJson(user));}
    }
    
  • Spring MVC 实现相同功能
    @RestController
    @RequestMapping("/users")
    public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getUser(@PathVariable String id) {return userService.findById(id);}
    }
    
  • 优势
    • 自动参数绑定(无需手动调用 req.getParameter())。
    • 自动序列化响应(无需手动写 JSON)。
    • 依赖注入(@Autowired 替代手动实例化对象)。

三、Servlet 在 Spring 中的直接使用场景

尽管 Spring 封装了大部分 Servlet 细节,但在某些场景仍需直接操作 Servlet API:

1. 访问原生 Servlet 对象
  • 在 Controller 方法中注入 HttpServletRequestHttpServletResponse
    @GetMapping("/info")
    public String getInfo(HttpServletRequest request) {String userAgent = request.getHeader("User-Agent");return "User-Agent: " + userAgent;
    }
    
2. 过滤器(Filter)
  • 实现 javax.servlet.Filter,用于日志、权限校验、跨域处理等:
    @Component
    public class LogFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {System.out.println("Request URL: " + ((HttpServletRequest) request).getRequestURL());chain.doFilter(request, response);}
    }
    
  • 通过 @ServletComponentScan 或配置类注册。
3. 文件上传
  • 使用 MultipartFile(Spring 封装)或直接操作 HttpServletRequest
    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) {// Spring 方式
    }
    

四、Spring Boot 对 Servlet 的进一步简化

Spring Boot 通过内嵌 Servlet 容器(Tomcat/Jetty)和自动配置,进一步隐藏 Servlet 细节:

  1. 无需 web.xml:通过 @SpringBootApplication 启动应用。
  2. 自动配置 DispatcherServlet:默认映射 /,可通过 application.properties 调整。
  3. 简化部署:打包为可执行 JAR(内嵌 Tomcat),无需外部容器。

五、对比总结

维度ServletSpring MVC
角色底层请求处理规范基于 Servlet 的 MVC 框架
开发复杂度需手动处理参数、视图、异常通过注解和组件自动处理
配置方式XML 或 @WebServlet 注解注解驱动(@Controller@GetMapping
依赖管理需手动管理 Service/DAO 依赖依赖注入(@Autowired@Component
可扩展性需手动实现拦截器、AOP 等提供拦截器(HandlerInterceptor)、AOP

注解

在 Spring 框架中,注解(Annotation)Bean 是核心概念,二者紧密结合,共同实现依赖注入(DI)和面向切面编程(AOP)。以下是它们的详细解析及关联:

一、什么是 Bean?

Bean 是 Spring 容器管理的对象,是 Spring 应用的构建单元。

  • 特点
    • 由 Spring IoC(控制反转)容器实例化、装配和管理。
    • 默认是单例(Singleton)模式,但支持其他作用域(如 Prototype)。
    • 通过依赖注入与其他 Bean 协作。

在这里插入图片描述


二、注解在 Bean 管理中的作用

注解简化了 Bean 的定义、装配和配置过程,替代了传统的 XML 配置方式。


1. 定义 Bean 的注解

以下注解标记类为 Spring Bean,并交由容器管理:

(1)通用注解
  • @Component
    标记一个类为通用 Bean,Spring 会自动扫描并注册到容器中。

    @Component
    public class UserService {// ...
    }
    
  • @Repository
    专用于数据访问层(DAO),继承自 @Component,支持数据库异常转换。

    @Repository
    public class UserDao {// ...
    }
    
  • @Service
    专用于业务逻辑层,继承自 @Component,无特殊功能,仅标识语义。

    @Service
    public class UserService {// ...
    }
    
  • @Controller
    专用于 Web 层的控制器,处理 HTTP 请求。

    @Controller
    public class UserController {// ...
    }
    
  • @Configuration + @Bean
    在 Java 配置类中定义 Bean(适用于第三方库的类或需要动态配置的场景)。

    @Configuration
    public class AppConfig {@Beanpublic DataSource dataSource() {return new HikariDataSource();}
    }
    

(2)高级注解
  • @Scope
    指定 Bean 的作用域(如 singletonprototyperequestsession)。

    @Component
    @Scope("prototype")
    public class PrototypeBean { ... }
    
  • @Lazy
    延迟初始化 Bean(默认单例 Bean 在容器启动时初始化)。

    @Component
    @Lazy
    public class LazyBean { ... }
    
  • @Primary
    当存在多个同类型 Bean 时,优先注入标记 @Primary 的 Bean。

    @Component
    @Primary
    public class PrimaryService implements MyService { ... }
    

2. 注入 Bean 的注解

依赖注入(DI)通过以下注解实现:

(1)@Autowired

自动按类型注入 Bean。支持字段、构造方法、Setter 方法注入。

@Component
public class OrderService {@Autowiredprivate UserService userService;  // 字段注入@Autowiredpublic OrderService(UserService userService) {  // 构造方法注入this.userService = userService;}
}
(2)@Qualifier

指定注入的 Bean 名称(解决多个同类型 Bean 的歧义)。

@Component
public class PaymentService {@Autowired@Qualifier("alipayProcessor")private PaymentProcessor processor;
}
(3)@Resource

按名称注入 Bean(属于 JSR-250 规范,非 Spring 特有)。

@Component
public class OrderService {@Resource(name = "userService")private UserService userService;
}
(4)@Value

注入简单类型或配置文件中的值。

@Component
public class EmailService {@Value("${email.smtp.host}")private String smtpHost;
}

3. 条件化配置 Bean 的注解

根据条件动态决定是否注册 Bean:

(1)@Conditional

基于自定义条件(实现 Condition 接口)控制 Bean 的注册。

@Bean
@Conditional(DataSourceExistsCondition.class)
public DataSource dataSource() { ... }
(2)Profile 相关注解

通过 @Profile 指定 Bean 在特定环境下生效。

@Bean
@Profile("dev")
public DataSource devDataSource() { ... }
(3)@ConditionalOnProperty

根据配置文件中的属性值决定是否注册 Bean(Spring Boot 特有)。

@Bean
@ConditionalOnProperty(name = "cache.enabled", havingValue = "true")
public CacheManager cacheManager() { ... }

4. Bean 生命周期相关注解

管理 Bean 的初始化和销毁:

  • @PostConstruct
    在 Bean 初始化后执行(替代 InitializingBean 接口)。

    @Component
    public class MyBean {@PostConstructpublic void init() {System.out.println("Bean 初始化完成");}
    }
    
  • @PreDestroy
    在 Bean 销毁前执行(替代 DisposableBean 接口)。

    @Component
    public class MyBean {@PreDestroypublic void cleanup() {System.out.println("Bean 即将销毁");}
    }
    

三、注解与 Bean 的关联总结

场景注解作用
定义通用 Bean@Component标记类为 Spring 管理的 Bean
定义分层 Bean@Repository/@Service/@Controller标识不同层次的 Bean(如 DAO、Service、Controller)
Java 配置类定义 Bean@Configuration + @Bean在配置类中显式定义 Bean
注入 Bean@Autowired/@Resource自动或按名称注入依赖
解决依赖冲突@Qualifier指定具体注入的 Bean
配置 Bean 作用域@Scope定义 Bean 的作用域(如单例、原型)
条件化注册 Bean@Conditional/@Profile根据条件动态注册 Bean
生命周期管理@PostConstruct/@PreDestroy控制 Bean 初始化和销毁行为

四、常见问题

  1. @Component vs @Bean 的区别?

    • @Component 标记类为 Bean,由 Spring 扫描并自动注册。
    • @Bean 用于方法,显式定义第三方库的 Bean(需配合 @Configuration)。
  2. 如何解决多个同类型 Bean 的冲突?

    • 使用 @Qualifier 指定名称。
    • 使用 @Primary 标记优先注入的 Bean。
  3. 为什么推荐使用构造方法注入?

    • 保证依赖不可变(字段注入易被修改)。
    • 便于单元测试(无需反射设置字段)。

相关文章:

spring基础总结

先修知识&#xff1a;依赖注入&#xff0c;反转控制&#xff0c;生命周期 IDEA快捷键 Ctrl Altm:提取方法&#xff0c;设置trycatch 通用快捷键&#xff1a; Ctrl F&#xff1a;在当前文件中查找文本。Ctrl R&#xff1a;在当前文件中替换文本。Ctrl Z&#xff1a;撤销…...

基础相对薄弱怎么考研

复习总体规划 明确目标 选择专业和院校&#xff1a;根据你的兴趣、职业规划和自身实力&#xff0c;选择适合自己的专业和院校。可以参考往年的分数线、报录比、复试难度等。了解考试科目&#xff1a;不同专业考试科目不同&#xff0c;一般包括&#xff1a; 公共课&#xff1a…...

代码随想录36 动态规划

leetcode 343.整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 1…...

p5r预告信生成器API

p5r预告信生成器API 本人将js生成的p5r预告信使用go语言进行了重写和部署&#xff0c;并开放了其api&#xff0c;可以直接通过get方法获取预告信的png。 快速开始 http://api.viogami.tech/p5cc/:text eg: http://api.viogami.tech/p5cc/persona5 感谢p5r风格字体的制作者和…...

React图标库: 使用React Icons实现定制化图标效果

React图标库: 使用React Icons实现定制化图标效果 图标库介绍 是一个专门为React应用设计的图标库&#xff0c;它包含了丰富的图标集合&#xff0c;覆盖了常用的图标类型&#xff0c;如FontAwesome、Material Design等。React Icons可以让开发者在React应用中轻松地添加、定制各…...

说说Redis的内存淘汰策略?

大家好&#xff0c;我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助&#xff1b; 说说Redis的内存淘汰策略? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 提供了多种内存淘汰策略&#xff0c;用于在内存达到限制时决定如何…...

【C语言】自定义类型讲解

文章目录 一、前言二、结构体2.1 概念2.2 定义2.2.1 通常情况下的定义2.2.2 匿名结构体 2.3 结构体的自引用和嵌套2.4 结构体变量的定义与初始化2.5 结构体的内存对齐2.6 结构体传参2.7 结构体实现位段 三、枚举3.1 概念3.2 定义3.3 枚举的优点3.3.1 提高代码的可读性3.3.2 防止…...

机器学习8-卷积和卷积核1

机器学习8-卷积和卷积核1 卷积与图像去噪卷积的定义与性质定义性质卷积的原理卷积步骤卷积的示例与应用卷积的优缺点优点缺点 总结 高斯卷积核卷积核尺寸的设置依据任务类型考虑数据特性实验与调优 高斯函数标准差的设置依据平滑需求结合卷积核尺寸实际应用场景 总结 图像噪声与…...

3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...

三、 实现&#xff1b; 三&#xff0e;三、编写应用程序&#xff1b; 此文主要是实现应用的主要编码工作。 1、 分层&#xff1b; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示&#xff1b;Helper主要是链接UI和数据库操作的中间层&#xff1b;DAL为对数据库的操…...

PHP 中 `foreach` 循环结合引用使用时可能出现的问题

问题背景 假设你有如下 PHP 代码&#xff1a; <?php $arr array(1, 2, 3, 4);// 使用引用遍历并修改数组元素 foreach ($arr as &$value) {$value $value * 2; } // 此时 $arr 变为 array(2, 4, 6, 8)// 再使用非引用方式遍历数组 foreach ($arr as $key > $val…...

go gin配置air

一、依赖下载 安装最新&#xff0c;且在你工作区下进行安装&#xff0c;我的是D:/GO是我的工作区&#xff0c;所有项目都在目录下的src&#xff0c; go install github.com/air-verse/airlatest 如果出现类似报错&#xff1a; 将图中第三行 github.com/air-verse/air 替换最…...

在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别

在 Spring Boot 项目中&#xff0c;bootstrap.yml 和 application.yml 是两个常用的配置文件&#xff0c;它们的作用和加载顺序有所不同。以下是它们的详细说明&#xff1a; 1. bootstrap.yml 作用&#xff1a; bootstrap.yml 是 Spring Cloud 项目中的配置文件&#xff0c;用于…...

Excel中Address函数的用法

Excel中Address函数的用法 1. 函数详细讲解1.1 函数解释1.2 使用格式1.3 参数定义1.4 要点 2. 实用演示示例2.1 函数需求2.2 公式编写2.3 计算过程 3. 注意事项4. 文档下载5. 其他文章6. 获取全部Excel练习素材快来试试吧&#x1f970; 函数练习素材&#x1f448;点击即可进行下…...

游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...

智能家居监控系统数据收集积压优化

亮点&#xff1a;RocketMQ 消息大量积压问题的解决 假设我们正在开发一个智能家居监控系统。该系统从数百万个智能设备&#xff08;如温度传感器、安全摄像头、烟雾探测器等&#xff09;收集数据&#xff0c;并通过 RocketMQ 将这些数据传输到后端进行处理和分析。 在某些情况下…...

Zabbix7.0安装(Ubuntu24.04+LNMP)

1.选择版本 下载Zabbix 2.安装虚拟机 这里选择在Ubuntu24.04上安装Zabbix. 安装链接https://blog.csdn.net/weixin_58189050/article/details/145446065 配置源 vim /etc/apt/sources.list deb https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multive…...

SpringBoot+Dubbo+zookeeper 急速入门案例

项目目录结构&#xff1a; 第一步&#xff1a;创建一个SpringBoot项目&#xff0c;这里选择Maven项目或者Spring Initializer都可以&#xff0c;这里创建了一个Maven项目&#xff08;SpringBoot-Dubbo&#xff09;&#xff0c;pom.xml文件如下&#xff1a; <?xml versio…...

6种MySQL高可用方案对比分析

大家好&#xff0c;我是 V 哥&#xff0c;关于 MySQL 高可用方案&#xff0c;在面试中频频出现&#xff0c;有同学在字节面试就遇到过&#xff0c;主要考察你在高可用项目中是如何应用的&#xff0c;V 哥整理了6种方案&#xff0c;供你参考。 V 哥推荐&#xff1a;2024 最适合入…...

CLK敏感源和完整GND平面

SPI Flash芯片辐射发射&#xff08;RE&#xff09;问题: 某款产品在3米法电波暗室进行辐射&#xff08;RE&#xff09;发射测试时,发现多个频点余量不满足6dB管控要求. 通过频谱分析仪近场探头分析定位到干扰频点来自于SPI Flash时钟信号的高次谐波干扰&#xff0c;深入分析发…...

团体程序设计天梯赛-练习集——L1-034 点赞

前言 20分的题目题目不难&#xff0c;理解也不难&#xff0c;做起来有点问题 L1-034 点赞 微博上有个“点赞”功能&#xff0c;你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签&#xff0c;而你点赞的博文的类型&#xff0c;也间接刻画了你的特性。本…...

独立成分分析 (ICA):用于信号分离或降维

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 独立成分分析 (Independent Component Analysis, ICA) 是一种用于信号分离和降维的统计方法&#xff0c;常用于盲源分离 (Blind Source Separation, BSS) 问题&#xff0c;例如音频信号分离或脑电信号 (EEG) 处理。…...

【EdgeAI实战】(2)STM32 AI 扩展包的安装与使用

【EdgeAI实战】&#xff08;1&#xff09;STM32 边缘 AI 生态系统 【EdgeAI实战】&#xff08;2&#xff09;STM32 AI 扩展包的安装与使用 【EdgeAI实战】&#xff08;2&#xff09;STM32 AI 扩展包的安装与使用 1. STM32Cube.AI 简介1.1 STM32Cube.AI 简介1.2 X-CUBE-AI 内核引…...

【Java】MyBatis动态SQL

在MyBatis中使用动态SQL语句。 动态SQL是指根据参数数据动态组织SQL的技术。 生活中的案例&#xff1a; 在京东上买东西时&#xff0c;用户搜索商品&#xff0c;可以选择筛选条件&#xff0c;比如品牌&#xff0c;价格&#xff0c;材质等&#xff0c;也可以不使用筛选条件。这时…...

Spring Boot篇

为什么要用Spring Boot Spring Boot 优点非常多&#xff0c;如&#xff1a; 独立运行 Spring Boot 而且内嵌了各种 servlet 容器&#xff0c;Tomcat、Jetty 等&#xff0c;现在不再需要打成 war 包部署到 容器 中&#xff0c;Spring Boot 只要打成一个可执行的 jar 包就能独…...

深入理解Node.js_架构与最佳实践

1. 引言 1.1 什么是Node.js Node.js简介:Node.js是一个基于Chrome V8引擎的JavaScript运行时,用于构建快速、可扩展的网络应用。Node.js的历史背景和发展:Node.js最初由Ryan Dahl在2009年发布,旨在解决I/O密集型应用的性能问题。随着时间的推移,Node.js社区不断壮大,提供…...

使用mockttp库模拟HTTP服务器和客户端进行单元测试

简介 mockttp 是一个用于在 Node.js 中模拟 HTTP 服务器和客户端的库。它可以帮助我们进行单元测试和集成测试&#xff0c;而不需要实际发送 HTTP 请求。 安装 npm install mockttp types/mockttp模拟http服务测试 首先导入并创建一个本地服务器实例 import { getLocal } …...

响应式编程_02基本概念:背压机制 Backpressure

文章目录 Pre流流的处理模型拉模式推模式 流量控制产者生产数据的速率小于消费者的场景生产者生产数据的速率大于消费者消费数据无界队列有界丢弃队列有界阻塞队列 背压机制响应式流规范响应式流的核心接口PublisherSubscriberSubscription 响应式流的技术生态圈 小结 Pre 响应…...

Jason配置环境变量

jason官网 https://jason-lang.github.io/ https://github.com/jason-lang/jason/releases 步骤 安装 Java 21 或更高版本 安装 Visual Studio Code 根据操作系统&#xff0c;请按照以下具体步骤操作 视窗 下载 Jason 的最新版本&#xff0c;选择“jason-bin-3.3.0.zip”…...

[ESP32:Vscode+PlatformIO]新建工程 常用配置与设置

2025-1-29 一、新建工程 选择一个要创建工程文件夹的地方&#xff0c;在空白处鼠标右键选择通过Code打开 打开Vscode&#xff0c;点击platformIO图标&#xff0c;选择PIO Home下的open&#xff0c;最后点击new project 按照下图进行设置 第一个是工程文件夹的名称 第二个是…...

java开发面试自我介绍模板_java面试自我介绍3篇

java 面试自我介绍 3 篇 java 面试自我介绍篇一&#xff1a; 我叫赵&#xff0c;我的同学更都喜欢称呼我的英文名字&#xff0c;叫&#xff0c;六月的 意思&#xff0c;是君的谐音。我来自安徽的市&#xff0c;在 21 年我以市全市第一名 的成绩考上了大学&#xff0c…...

intra-mart实现简易登录页面笔记

一、前言 最近在学习intra-mart框架&#xff0c;在此总结下笔记。 intra-mart是一个前后端不分离的框架&#xff0c;开发时主要用的就是xml、html、js这几个文件&#xff1b; xml文件当做配置文件&#xff0c;html当做前端页面文件&#xff0c;js当做后端文件&#xff08;js里…...

2025最新软件测试面试大全

前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些面试题…...

JDK17主要特性

JDK 17&#xff0c;也被称为Java 17或Java Platform, Standard Edition 17&#xff0c;是Java编程语言的第十七个主要版本&#xff0c;由Oracle公司在2021年9月发布。Java 17是一个长期支持&#xff08;LTS&#xff0c;Long-Term Support&#xff09;版本&#xff0c;这意味着它…...

基于SpringBoot的在线远程考试系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Android Studio:Application 和 Activity的区别

Application 和 Activity 是 Android 中非常重要的两个组件&#xff0c;它们分别负责不同的生命周期管理和应用的不同层次的操作。 Application 是应用级别的生命周期管理&#xff0c;它在整个应用运行时只有一个实例&#xff0c;负责应用的全局初始化和资源管理。Activity 是…...

GAN(生成对抗网络,Generative Adversarial Network)

https://www.bilibili.com/video/BV1mp4y187dm/?spm_id_from333.788.recommend_more_video.2&vd_source35b06c13f470dff84c947fa3045bafc3...

大模型Dense、MoE 与 Hybrid-MoE 架构的比较

在大模型架构设计中&#xff0c;Dense&#xff08;全连接&#xff09;、MoE&#xff08;混合专家&#xff09;和Hybrid-MoE&#xff08;混合式MoE&#xff09;是三种主流的参数组织方式&#xff0c;它们在模型容量、计算效率和应用场景上存在显著差异。以下从核心原理、技术特点…...

Java进阶学习之路

Java进阶之路 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 Java进阶之路前言一、Java入门 Java基础 1、Java概述 1.1 什…...

Django 多数据库

django 支持项目连接多个数据库 DATABASES = {default: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxxx,HOST: xxxx,PORT: 3306,},bak: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxx,HOST: xxx…...

Vue 中如何嵌入可浮动的第三方网页窗口(附Demo)

目录 前言1. 思路Demo2. 实战Demo 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 1. 思路Demo 以下Demo提供思路参考&#xff0c;需要结合实际自身应用代码 下述URL的链接使用百度替代&#xff01; 方式 1…...

6-图像金字塔与轮廓检测

文章目录 6.图像金字塔与轮廓检测(1)图像金字塔定义(2)金字塔制作方法(3)轮廓检测方法(4)轮廓特征与近似(5)模板匹配方法6.图像金字塔与轮廓检测 (1)图像金字塔定义 高斯金字塔拉普拉斯金字塔 高斯金字塔:向下采样方法(缩小) 高斯金字塔:向上采样方法(放大)…...

【学Rust写CAD】4 相对坐标系详解与实现要素概览

相对坐标系&#xff08;Relative Coordinate System, RCS&#xff09;是一个强大且灵活的工具&#xff0c;尤其在绘图、三维建模等领域中发挥着重要作用。以下是对相对坐标系的详细解析&#xff0c;包括其定义、应用、特性、与绝对坐标的区别、在CAD中的应用以及实现方式。 一…...

win编译openssl

一、perl执行脚本 1、安装perl脚本 perl安装 2、配置perl脚本 perl Configure VC-WIN32 no-asm no-shared --prefixE:\openssl-x.x.x\install二、编译openssl 1、使用vs工具编译nmake 如果使用命令行nmake编译会提示“无法打开包括文件: “limits.h”“ 等错误信息 所以…...

Kafka 使用说明(kafka官方文档中文)

文章来源:kafka -- 南京筱麦软件有限公司 第 1 步:获取 KAFKA 下载最新的 Kafka 版本并提取它: $ tar -xzf kafka_{{scalaVersion}}-{{fullDotVersion}}.tgz $ cd kafka_{{scalaVersion}}-{{fullDotVersion}} 第 2 步:启动 KAFKA 环境 注意:您的本地环境必须安装 Java 8+。…...

PyTorch数据建模

回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()...

Node.js与嵌入式开发:打破界限的创新结合

文章目录 一、Node.js的本质与核心优势1.1 什么是Node.js?1.2 嵌入式开发的范式转变二、Node.js与嵌入式结合的四大技术路径2.1 硬件交互层2.2 物联网协议栈2.3 边缘计算架构2.4 轻量化运行时方案三、实战案例:智能农业监测系统3.1 硬件配置3.2 软件架构3.3 核心代码片段四、…...

CVPR | CNN融合注意力机制,芜湖起飞!

**标题&#xff1a;**On the Integration of Self-Attention and Convolution **论文链接&#xff1a;**https://arxiv.org/pdf/2111.14556 **代码链接&#xff1a;**https://github.com/LeapLabTHU/ACmix 创新点 1. 揭示卷积和自注意力的内在联系 文章通过重新分解卷积和自…...

Markdown转换器中间件

目录 需求 文本编码检测 Markdown→HTML 注意 实现 需求 Markdown是一种文本格式&#xff1b;不被浏览器支持&#xff1b;编写一个在服务器端把Markdown转换为HTML的中间件。我们开发的中间件是构建在ASP.NET Core内置的StaticFiles中间件之上&#xff0c;并且在它之前运…...

https是如何保证安全的,又是如何保证不被中间人攻击的?

HTTPS如何保证安全&#xff0c;以及如何防止中间人攻击 保护用户隐私和数据安全已经成为了一个不可忽视的问题。随着网络攻击的不断升级&#xff0c;HTTPS&#xff08;超文本传输安全协议&#xff09;成为了我们在网络上交流时的一道重要防线。以下是HTTPS是如何保证安全的&am…...

2025.2.5

Web [SWPUCTF 2021 新生赛]ez_unserialize: 这个题先了解一下反序列化&#xff1a;反序列化是序列化的逆过程。序列化是将对象或数据结构转换为可以存储或传输的格式&#xff08;如JSON、XML或二进制格式&#xff09;的过程。反序列化则是将这个格式的数据转换回原始的对象或…...