面试题007-Java-Spring
面试题007-Java-Spring
目录
- 面试题007-Java-Spring
- 题目自测
- 题目答案
- 1. 简单介绍一下Spring?
- 2. Spring有哪些模块?
- 3. 什么是Spring IoC ?
- 4. 什么是依赖注入?有哪几种方式可以进行依赖注入?
- 5. 什么是Spring AOP ?
- 6. 什么是Spring Bean ? 说一下Bean的生命周期?
- 7. Spring中Bean的作用域有哪些?
- 8. 什么是Spring中的代理(Proxy)?JDK动态代理和CGLIB代理有什么区别?
- 9. Spring是怎么解决循环依赖的?
- 10. 说一下你对Spring MVC的理解?Spring MVC的工作原理?
- 11. Spring中是如何实现事务管理的?
- 12. 拦截器和过滤器了解吗?
- 参考资料
题目自测
- 1. 简单介绍一下Spring?
- 2. Spring的核心模块有哪些?
- 3. 什么是Spring IoC ?
- 4. 什么是依赖注入?有哪几种方式可以进行依赖注入?
- 5. 什么是Spring AOP ?
- 6. 什么是Spring Bean ? 说一下Bean的生命周期?
- 7. Spring中Bean的作用域有哪些?
- 8. 什么是Spring中的代理(Proxy)?JDK动态代理和CGLIB代理有什么区别?
- 9. Spring是怎么解决循环依赖的?
- 10. 说一下你对Spring MVC的理解?Spring MVC的工作原理?
- 11. Spring中是如何实现事务管理的?
- 12. 拦截器和过滤器了解吗?
题目答案
1. 简单介绍一下Spring?
答:Spring一款开源的轻量级的Java应用框架,它的主旨是为了简化Java企业级应用开发。Spring提供的核心功能主要是 IoC 和 AOP。并且它提供了全面的基础设施支持,可以很方便地对数据库进行访问、集成第三方组件(任务、调度、缓存等)。使开发人员能更能专注业务逻辑开发,而无需处理繁琐的底层细节。
Spring官方:Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterprise environment.
2. Spring有哪些模块?
答:Spring的模块主要有:
- Core Container(核心容器):
- spring-core:Spring框架的核心工具类,如控制反转和依赖注入等。
- spring-beans:提供Bean的创建、配置和管理功能的支持。
- spring-context:提供对国际化、事件传播、资源加载等功能的支持。
- AOP(面向切面):
- spring-aspects:该模块为与 AspectJ 的集成提供支持。
- spring-aop:提供了面向切面的编程实现。
- Data Access/Integration(数据访问/集成):
- spring-jdbc:提供了对数据库访问的抽象JDBC。
- spring-orm:提供对 Hibernate、JPA、iBatis 等 ORM 框架的支持。
- spring-tx:提供了对事物的支持。
- Web:
- spring-web:对 Web 功能的实现提供一些最基础的支持。
- spring-mvc:提供了基于模型-视图-控制器(MVC)设计模式的Web框架。
- spring-webflux:提供了基于响应式编程模型的Web框架。
3. 什么是Spring IoC ?
答:IoC即控制反转的意思,它是一种创建和获取对象的技术思想,依赖注入(DI)是实现这种技术的一种方式。传统开发过程中,我们需要通过new关键字来创建对象。使用IoC思想开发方式的话,我们不通过new关键字创建对象,而是通过IoC容器来帮我们实例化对象。 通过IoC的方式,可以大大降低对象之间的耦合度。
4. 什么是依赖注入?有哪几种方式可以进行依赖注入?
答:依赖注入是一种设计模式,依赖注入用于实现控制反转一种方式。在依赖注入模式下,依赖对象的创建和管理不再由使用该对象的类负责,而是由外部容器(Spring IoC容器)负责,并在需要的时候将这些依赖对象注入到需要他们的类中。实现依赖注入的方式主要有三种,如下
-
构造方法注入:通过对象的构造函数来注入依赖。
public class MyClass { private MyDependency myDependency; public MyClass(MyDependency myDependency) { this.myDependency = myDependency; } }
-
setter方法注入:通过对象的Setter方法来注入依赖。
public class MyClass { private MyDependency myDependency; public void setMyDependency(MyDependency myDependency) { this.myDependency = myDependency; } }
-
接口注入:通过对象实现一个特定的接口来注入依赖。
public interface DependencyInjector { void injectDependency(MyClass myClass); } public class MyClass implements DependencyInjector { private MyDependency myDependency; @Override public void injectDependency(MyDependency myDependency) { this.myDependency = myDependency; } }
5. 什么是Spring AOP ?
答:AOP是面向切面编程的意思,用于将横切关注点与业务逻辑代码分离,横切关注点通常指的是分散在多个类中的公共行为,如日志记录、事物管理、权限管理等。通过把这些横切关注点进行封装成独立的模块形成切面,并在运行时动态地将他们植入到应用程序中的普通业务逻辑中。通过Spring AOP可以实现代码的复用和解耦,从而提高代码的可维护性和可扩展性等。
- AOP的具体应用-日志记录
// 日志注解 @Target({ElementType.PARAMETER,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Log {/*** 描述*/String description() default "";/*** 方法类型 INSERT DELETE UPDATE OTHER*/MethodType methodType() default MethodType.OTHER; }// 日志切面 @Component @Aspect public class LogAspect {// 切入点,所有被 Log 注解标注的方法@Pointcut("@annotation(com.zouhuu.annotation.Log)")public void webLog() {}/*** 环绕通知*/@Around("webLog()")public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {// 省略具体的处理逻辑}// 省略其他代码 } /*** 通过注解实现日志记录*/ public class MyController() {@Log(description = "method1",methodType = MethodType.INSERT)public CommonResponse<Object> method1() {// 业务逻辑xxService.method1();// 省略具体的业务处理逻辑return CommonResponse.success();} }
6. 什么是Spring Bean ? 说一下Bean的生命周期?
答:简单来说Spring Bean是指被Spring IoC容器所管理的对象。Spring容器负责Bean的创建、初始化、配置以及销毁。我们可以通过XML文件或注解等方式去定义Bean。Bean可以是任意类型的Java对象,比如数据访问对象DAO、业务服务对象等。
Bean的生命周期可以分为定义、属性设置、初始化、生存、销毁这五个阶段。
- Bean的定义阶段:Spring容器会读取Bean配置(XML文件、Java配置类),然后通过Java的反射机制来创建Bean实例。
- Bean的属性设置阶段:Spring容器根据配置文件中定义的信息,设置Bean的属性,包括注入其他Bean和属性值等。
- Bean的初始化阶段:
- 首先会检查Aware接口的相关实现,Aware接口是为了让Bean有和Spring容器交互的能力。
- 调用BeanPostProcessor的前置处理方法(postProcessBeforeInitialization)。
- 调用Bean的初始化方法(afterPropertiesSet和custom init-method)。
- 调用BeanPostProcessor的后置处理方法(postProcessAfterInitialization)。
- Bean的生存阶段:经过初始化的Bean可以被应用程序使用。
- Bean的销毁阶段:当Bean的生命周期结束时(如Spring容器关闭),那么Spring会调用其destroy()方法,如果有自定义的销毁方法,则调用自定义的销毁方法。
7. Spring中Bean的作用域有哪些?
答:Bean的作用域定义了其生命周期内的可见范围,Spring中Bean的作用域默认都是单例的(Singleton)。
- 单例 Singleton:Spring容器中每个bean只有唯一一个实例,无论被注入多少次,都是返回的同一个实例。
- 原型 Prototype:每次获取都会创建一个新的bean。
- 请求 Request:仅在Web应用中有效,每次HTTP请求都会创建一个新的bean实例,请求结束后销毁。
- 会话 Session:仅在Web应用中有效,每个HTTP会话创建时都会创建一个新的Bean实例,会话结束后销毁。
- 应用 Application:仅在Web应用中有效,整个Web应用共享一个Bean实例,类似于Servlet上下文。
- WebSocket:仅在WebSocket应用中有效。每个WebSocket会话创建时都会创建一个新的Bean实例,结束后销毁。
8. 什么是Spring中的代理(Proxy)?JDK动态代理和CGLIB代理有什么区别?
答:在Spring中代理是一种设计模式,主要用于实现诸如AOP(面向切面编程)这样的功能。代理模式允许在不修改原有对象的前提下,通过创建一个代理对象来包装原始对象,从而增加额外的功能,如日志记录、权限检查、事务管理等。
- JDK动态代理:基于Java反射机制实现,要求目标类必须实现一个或多个接口。
- CGLIB代理:是一个字节码生成库,它允许在运行时动态生成类。CGLIB代理用于那些没有实现接口的类。
9. Spring是怎么解决循环依赖的?
答:循环依赖是指两个Bean或多个Bean相互依赖,从而形成循环。如当 Spring 创建 A 之后,发现 A 依赖了 B ,又去创建 B,B 依赖了 A ,又去创建 A。
class A {// 使用了 Bprivate B b;
}
class B {// 使用了 Aprivate A a;
}
为了解决这个问题,Spring引入了三级缓存的机制来解决循环依赖。如果发生循环依赖的话,就去 三级缓存 singletonFactories 中拿到三级缓存中存储的 ObjectFactory 并调用它的 getObject() 方法来获取这个循环依赖对象的前期暴露对象(虽然还没初始化完成,但是可以拿到该对象在堆中的存储地址了),并且将这个前期暴露对象放到二级缓存中,这样在循环依赖时,就不会重复初始化了。
- 三级缓存:
- 一级缓存(singletonObjects):已经完全初始化并可供使用的单例Bean的缓存。
- 二级缓存(earlySingletonObjects):存放早期单例对象bean,已经实例化但尚未初始化完成的bean。
- 三级缓存(singletonFactories):存放正在创建中的Bean的工厂方法引用,用于创建代理对象。
10. 说一下你对Spring MVC的理解?Spring MVC的工作原理?
答:MVC是一种设计模式,它提供了一种分离业务逻辑,用户界面,控制流程方式。Spring MVC是实现MVC模式的框架,它可以帮我们以更简洁和模块化的方式构建Web应用。它包含三个核心注解,如下所示:
- 模型(Model):负责应用程序的数据和业务逻辑。
- 视图(View):负责展示数据,即用户界面。
- 控制器(Controller):负责处理用户请求,协调模型和视图之间的交互。
Spring MVC的工作原理:
- 用户通过浏览器或其他客户端发送HTTP请求。
- 请求首先会到达DispatcherServlet(前端控制器),DispatcherServlet根据请求信息调用HandlerMapping,通过HandlerMapping找到对应的处理器,也就是我们Controller。
- 找到处理器后,DispatcherServlet会调用HandlerAdapter执行处理器中的方法。
- 处理器中的方法执行完成后,会返回一个ModelAndView对象给DispatcherServlet。
- DispatcherServlet会根据视图解析器,找到对应的视图。
- 视图通过对应的数据进行渲染。
- 然后将渲染的结果返回给用户。
11. Spring中是如何实现事务管理的?
答:Spring为事物提供了编程式和声明式两种方式来管理事务。通过事务可以确保数据操作的原子性、一致性、隔离性和持久性(ACID)。在Spring中,主要围绕PlatformTransactionManager(事务管理器接口,用于管理和协调事务的生命周期和执行),TransactionDefinition(事务定义接口,定义事物的传播行为和隔离级别),TransactionStatus(事务状态接口)来管理事务。
-
编程式事务管理:通过TransactionTemplate或者TransactionManager手动管理事务
@Service public class UserService {@Autowiredprivate UserRepository userRepository;@Autowiredprivate PlatformTransactionManager transactionManager;public void createUser(User user) {TransactionDefinition def = new DefaultTransactionDefinition();TransactionStatus status = transactionManager.getTransaction(def);try {userRepository.save(user);transactionManager.commit(status);} catch (Exception e) {transactionManager.rollback(status);throw e;}} }
-
声明式事务管理:主要是通过@Transactional注解的形式
@Service public class UserService {@Autowiredprivate UserRepository userRepository;@Transactionalpublic void createUser(User user) {userRepository.save(user);}@Transactional(readOnly = true)public User getUser(Long id) {return userRepository.findById(id).orElse(null);} }
12. 拦截器和过滤器了解吗?
答:拦截器和过滤器都是Java Web开发中常用的技术,用于对请求和响应进行处理。可以用于实现身份验证、日志记录、数据转换等功能。
-
拦截器:拦截器是Spring中一种基于AOP思想的组件,其生命周期由Spring容器所管理。用于请求到达控制器之前和请求完成之后进行处理。主要用于处理业务逻辑相关的,如权限验证等处理。
/*** 实现一个拦截器需要实现HandlerInterceptor接口*/ public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {// 处理请求前System.out.println("Pre-handle");return true; // 返回false将终止请求处理}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// 处理请求后但在视图渲染之前System.out.println("Post-handle");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {// 完成请求处理后的清理工作System.out.println("After completion");} }/*** 在Spring中注册和配置拦截器*/ @Configuration public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");} }
-
过滤器:属于Servlet规范等一部分,用于在请求到达目标资源(如Servlet、JSP页面)之前和响应返回给客户端之后进行预处理和后处理。主要用于处理通用的,与Servlet规范相关的逻辑,如字符编码设置,安全检查等。
/*** 实现Filter接口*/ public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化代码}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 处理请求前System.out.println("Request received at filter");chain.doFilter(request, response);// 处理请求后System.out.println("Response returned at filter");}@Overridepublic void destroy() {// 销毁代码} }
参考资料
- JavaGuide
- 牛客网-Java面试宝典
- Spring源码解析
- Spring官方文档
- ChatGPT
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
面试题007-Java-Spring
面试题007-Java-Spring 目录 面试题007-Java-Spring题目自测题目答案1. 简单介绍一下Spring?2. Spring有哪些模块?3. 什么是Spring IoC ?4. 什么是依赖注入?有哪几种方式可以进行依赖注入?5. 什么是Spring AOP ?6. 什…...
![](https://i-blog.csdnimg.cn/direct/db3f70a2395f4bd9b791f1dcd4f18a8b.png)
后端之路——登录校验前言(Cookie\ Session\ JWT令牌)
前言:Servlet 【登录校验】这个功能技术的基础是【会话技术】,那么在讲【会话技术】的时候必然要谈到【Cookie】和【Session】这两个东西,那么在这之前必须要先讲一下一个很重要但是很多人都会忽略的一个知识点:【Servlet】 什么是…...
![](https://i-blog.csdnimg.cn/direct/04936c2f018044499b2f08ab8df6175a.jpeg)
【蓄势·致远】 同为科技(TOWE)2024年年中会议
2024年7月2日-8日,同为科技(TOWE)召开2024年年中工作会议。会议回顾上半年总体工作情况,分析研判发展形势,规划部署下半年工作。 为期一周的工作会议,由同为科技(TOWE)创始人、董事长…...
![](https://i-blog.csdnimg.cn/direct/46375c7d495344e28b3c330badc5512b.png)
通过git将文件push到github 远程仓库
1.先git clone 代码地址 git clone htttp://github.com/用户名/test.git 2. 添加文件 例如:touch 1.txt 3.将文件添加到暂存区 git add 1.txt 4.提交 git commit -m "commit 1.txt" 5.与远程仓库建立关联 git remote add 远程仓库名 远程仓库…...
![](https://www.ngui.cc/images/no-images.jpg)
如何判断服务器是否被攻击
如何判断服务器是否被攻击 一、异常流量模式 一种判断服务器是否遭到攻击的方法是监控网络流量。异常的流量模式,例如流量突然剧增或减少,都可能是攻击的迹象。通常,大量的入站流量表明分布式拒绝服务(DDoS)攻击的可能…...
![](https://i-blog.csdnimg.cn/direct/9e37bb6e03ec42ce9ea9827583c0f588.png)
泽众一站式性能测试平台P-One监控指标的意义
在当今数字化和信息化高度发展的时代,企业把保障系统稳定运行、优化业务流程和提升用户体验摆在首要位置。然而,在现如今复杂的分布式系统中,各个组件和服务之间的交互频繁且紧密,当系统出现性能瓶颈时,传统的监测手段…...
![](https://i-blog.csdnimg.cn/direct/140a79a09bd644b4b41816d5880d14d3.png)
前端Canvas入门——一些注意事项
创建渐变的三种方法: createLinearGradient() - 线性渐变 createRadialGradient() - 径向渐变(放射性渐变) createConicGradient() - 锥形渐变 这三种的核心观点都是: 创建一个gradient对象,然后调用addColorStop()方法…...
![](https://www.ngui.cc/images/no-images.jpg)
移动互联安全扩展要求测评项
安全物理环境-无线接入点的位置选择 应为无线接入设备的安装选择合理位置,避免过度覆盖和电磁干扰。 无线接入设备的安装位置选择不当,易被攻击者利用,特别是攻击者会通过无线信号过度覆盖的弱点进行无线渗透攻击,因此要选择合理…...
![](https://i-blog.csdnimg.cn/direct/1defae163a134d999a8987b169a7f749.png)
【代码随想录】【算法训练营】【第64天】 [卡码117]软件构建 [卡码47]参加科学大会
前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 64,周三,继续ding~ 题目详情 [卡码117] 软件构建 题目描述 卡码117 软件构建 解题思路 前提: 思路: 重点: 代码实现 C语言 [卡码…...
![](https://i-blog.csdnimg.cn/direct/137866553cc44313a40646180cdf1675.png)
【python算法学习1】用递归和循环分别写下 fibonacci 斐波拉契数列,比较差异
问题: fibonacci 斐波拉契数列,用递归和循环的方法分别写,比较递归和循环的思路和写法的差别 最直接的思路,是写递归方法 循环方法的稍微有点绕,我觉得问题主要是出在,总结循环的通项公式更麻烦,难在数学…...
![](https://i-blog.csdnimg.cn/direct/342e2a92e8bb4004b90b01d99a3917da.png)
【邀请函】庭田科技邀您第五届中国国际复合材料科技大会
第五届中国国际复合材料科技大会暨第七届国际复合材料产业创新成果技术展示(ICIE7-新疆)将于7月25-27日在新疆乌鲁木齐-国际会展中心举行。上海庭田信息科技有限公司将携多款仿真模拟软件亮相本次大会,诚挚欢迎各位到场咨询了解! …...
![](https://i-blog.csdnimg.cn/direct/1b291e0eb1164dc3a2c6dada357f5574.png)
win32:第一个窗口程序-应用程序入口点(part.6)
第一个窗口程序的最后一部分:应用程序入口函数wWinMain;这是Windows应用程序的主函数,负责初始化应用程序、注册窗口类、创建主窗口并进入消息循环处理消息。 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInst…...
![](https://i-blog.csdnimg.cn/direct/45fe0b3f435348a989c6e2bc6e625ab9.png)
c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决
有需求需要对。多边形 获取中心点方法,绝大多数都是 puthon和java版本。立体几何学中的知识。 封装函数 point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() < 2)return point();auto Area [](point p0, point p1, p…...
![](https://i-blog.csdnimg.cn/direct/cd0cbf4c45f842ce8be14b40d5e9ca6f.png)
ext_errno:拓展errno
类似于C库的errno机制,报告错误发生的原因以及所在的位置,通过查询来获取。...
![](https://i-blog.csdnimg.cn/direct/9ae6c9439d054a5fb83120cd6b0001a5.png)
【CUDA】 Trust基本特性介绍及性能分析
Trust简介 Thrust 是一个实现了众多基本并行算法的 C 模板库,类似于 C 的标准模板库(standard template library, STL)。该库自动包含在 CUDA 工具箱中。这是一个模板库,仅仅由一些头文件组成。在使用该库的某个功能时,包含需要的头文件即可。该库中的所有类型与函数都在命名空…...
![](https://i-blog.csdnimg.cn/direct/6ea2758f3bdb4b5593db13c65c12dc4f.jpeg)
颈肩肌筋膜炎中医治疗
颈肩肌筋膜炎,又称颈肩肌纤维织炎或肌肉风湿症,是一种涉及筋膜、肌肉、肌腱和韧带等软组织的无菌性炎症。以下将分别从症状和治疗两方面进行详细介绍。 一、颈肩肌筋膜炎的症状 颈肩肌筋膜炎的主要症状包括: 1、肩背部疼痛:患者…...
![](https://www.ngui.cc/images/no-images.jpg)
Java 通配符 在短信发送之中 通配符参数动态获取解决方案
目录 1、通配符应用场景 2、实现方案分析 2.1、可能针对不同模板中核定参数硬编码到程序之中写死 2.2、通配置模板之中动态获得对应的参数 3、通过正则表达式验证与替换参数${}参考示例 4、参考文章 1、通配符应用场景 我们在使用通配符场景,主要是应用于短信…...
![](https://www.ngui.cc/images/no-images.jpg)
Mybatis-Plus中LambdaQueryWrapper
基本用法 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; // 假设有一个 User 实体类 LambdaQueryWrapper<User> queryWrapper new LambdaQueryWrapper<>(); // 添加查询条件 queryWrapper.eq(User::getName, "John&quo…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ 入门05:类和对象
往期回顾: C 入门02:控制结构和循环-CSDN博客C 入门03:函数与作用域-CSDN博客C 入门04:数组与字符串-CSDN博客 一、前言 在前面文章的学习中,我们了解了 C 的基本结构、变量、输入输出、控制结构、循环、函数、作用域…...
![](https://i-blog.csdnimg.cn/direct/960e97475609476a934f6b425040c75d.png)
4G LTE教程
整体架构 物理层(第 1 层) 物理层通过空中接口传输来自 MAC 传输信道的所有信息。负责 RRC 层的链路自适应 (AMC)、功率控制、小区搜索(用于初始同步和切换目的)和其他测量(LTE 系统内部和系统之间)。 介…...
![](https://i-blog.csdnimg.cn/direct/c50d4c849a8f4d5d9a0d821ab3d389de.png)
C++:哈希表
哈希表概念 哈希表可以简单理解为:把数据转化为数组的下标,然后用数组的下标对应的值来表示这个数据。如果我们想要搜索这个数据,直接计算出这个数据的下标,然后就可以直接访问数组对应的位置,所以可以用O(1)的复杂度…...
![](https://i-blog.csdnimg.cn/direct/e0c6ebf26fda484fbf7cb4b50f05b0ec.png)
自己动手写一个滑动验证码组件(后端为Spring Boot项目)
近期参加的项目,主管丢给我一个任务,说要支持滑动验证码。我身为50岁的软件攻城狮,当时正背着双手,好像一个受训的保安似的,中规中矩地参加每日站会,心想滑动验证码在今时今日已经是标配了,司空…...
![](https://www.ngui.cc/images/no-images.jpg)
keepalive脑裂
keepalive脑裂 调度器的高可用 vip地址主备之间的切换,主在工作时,p地址只在主上,主停止工作,ip飘移到备服务器。 在主备的优先级不变的情况下,主恢复工作,vip会飘回到主服务器。 1、配优先级 2、配置…...
![](https://i-blog.csdnimg.cn/direct/e9fcef18247e40c78c13d0ab880c7cbc.png#pic_center)
STM32Cubemx配置生成 Keil AC6支持代码
文章目录 一、前言二、AC 6配置2.1 ARM ComPiler 选择AC62.2 AC6 UTF-8的编译命令会报错 三、STM32Cubemx 配置3.1 找到stm32cubemx的模板位置3.2 替换文件内核文件3.3 修改 cmsis_os.c文件3.4 修改本地 四、编译对比 一、前言 使用keil ARM compiler V5的时候,编译…...
![](https://www.ngui.cc/images/no-images.jpg)
Perl基础入门指南:从零开始掌握Perl编程
Perl是一种功能强大且灵活的编程语言,广泛应用于系统管理、Web开发、网络编程和文本处理等领域。如果你是编程新手或者想学习一种新的编程语言,Perl是一个不错的选择。本文将带你了解Perl的基础知识,并通过简单的示例代码帮助你快速入门。 什…...
![](https://www.ngui.cc/images/no-images.jpg)
Mybatis SQL注解使用场景
MyBatis 提供了几种常用的注解,主要用于简化 XML 映射文件的编写,使得 SQL 查询和操作可以直接在 Java 接口中定义。下面列出了主要的注解以及它们在被调用时的写法示例: 1. Select Select 注解用于执行查询操作,并将查询结果映…...
![](https://i-blog.csdnimg.cn/direct/b6d8d2ef20ba428dbe66ad02b05f9c1d.png#pic_center)
Dataset for Stable Diffusion
1.Dataset for Stable Diffusion 笔记来源: 1.Flickr8k数据集处理 2.处理Flickr8k数据集 3.Github:pytorch-stable-diffusion 4.Flickr 8k Dataset 5.dataset_flickr8k.json 1.1 Dataset 采用Flicker8k数据集,该数据集有两个文件ÿ…...
![](https://img-blog.csdnimg.cn/6e6eedab00b6492e988e963ff638fd17.png)
近期matlab学习笔记,学习是一个记录,反复的过程
近期matlab学习笔记,学习是一个记录,反复的过程 matlab的mlx文件在运行的时候,不需要在文件夹路径下,也能运行,但是需要调用子函数时,就需要在文件所在路径下运行 那就先运行子函数,把路径换过来…...
![](https://www.ngui.cc/images/no-images.jpg)
Elasticsearch7.5.2 常用rest api与elasticsearch库
目录 一、rest api 1. 新建索引 2. 删除索引 3. 插入单条数据 4. 更新单条数据 5. 删除单条数据 6. 查询数据 二、python elasticsearch库 1. 新建索引 一、rest api 1. 新建索引 请求方式:PUT 请求URL:http://ip/(your_index_nam…...
![](https://i-blog.csdnimg.cn/direct/8e10339dec044e04900ce56f326aa374.png)
Autosar Dcm配置-0x28服务ComControl-基于ETAS软件
文章目录 前言DcmDcmDsdDcmDspBswMBswMModeRequestPortBswMModeConditionBswMLogicalExpressionBswMActionBswMActionListBswMRule总结前言 0x28服务主要用来控制非诊断报文的通讯,一般在刷写预编程过程中,用来禁止APP的通信报文,可以减少总线负载率,提高刷写成功率。本文…...
![](https://img-blog.csdnimg.cn/c6403051f3a840c08f1135fe3b265667.png)
东营网站备案代理公司/北京高端网站建设
文章目录rabbitmq 从入门到精通消息队列介绍1.1 介绍1.2 MQ解决什么问题应用解耦流量消峰消息分发异步消息1.3 常见消息队列及比较Rabbitmq安装2.1 服务端原生安装2.2 服务端Docker安装2.3 客户端安装2.4 设置用户和密码基于Queue实现生产者消费者模型基本使用(生产…...
![](https://img-blog.csdnimg.cn/def00240e43840c5abed5b33bf7b763b.png)
wordpress4.9升级失败/网络营销的推广
目录一,后端部署1,项目打包1.1,引入插件1.2,maven打包1.3,修改项目版本号1.4,验证1.5,生成配置文件2,服务器环境搭建2.1,安装JDK1)下载2)tar包安装…...
资讯网站的好处/软件培训机构
点击下载所需插件资源 密码:h6j5 eclipse安装插件方式一:直接将所需插件放在eclipse安装目录的plugins路径里 方式二:将插件单独存放在一个地方 然后在eclipse的dropins目录下面新建一个连接文件指向插件的路径 插件所在路径…...
![](https://img-blog.csdnimg.cn/img_convert/248fd692a0e45a10628965841582e289.png)
wordpress中添加登陆页面/推广文章
用javascript 写个函数返回一个页面里共使用了多少var reg /]*>/gi;var html document.body.innerHTML;var map {};while(reg.exec(html)){ var key RegExp.$1.toLowerCase(); if(map[key] null){ map[key] 1; }else { map[key]; }}console.log(map);分别是哪些&#…...
![](images/avatar2.png)
做网站推广邢台/深圳推广公司排行榜
摘要: 简单的实现聊天功能阿玛准设计客服发送var listdocument.getElementsByTagName(ul)[0];var btndocument.getElementsByTagName(button)[0];var textdocument.getElementsByName(text)[0];var sum;btn.οnclickfunction(){if(text.value.length 0){ale…...
![](https://img-blog.csdnimg.cn/20190703160828645.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE0OTA0OQ==,size_16,color_FFFFFF,t_70)
自助网站开发/百度关键词推广工具
Unity的PlayerSetting的OtherSettings里面有两个选项 Optimize Mesh Data和Vertex Compression Optimize Mesh Data官方文档对其的解释很有限 需要引用其他链接来查看详细含义 https://www.bbsmax.com/A/n2d99G3YdD/ 这里列出坑 其具体含义可以在官方文档或者百度找 这些选项对…...