框架部分面试题学习
IOC容器,AOP
- IOC :依赖反转,将对象的创建,组装,管理的控制权限从应用程序反转到IOC容器中。由springboot的来实现对象的自动装配和注入。
- 当某个类使用了@Componnet 注解后,标记为一个组件。那么这个类在项目启动的时候,会自动执行Bean装配,生成一个Bean对象到依赖池中。
- 当在其他的类中使用了@Auotwired 注解后,会执行bean加载(依赖注入),将依赖池中的对象拿出来。
- IOC装配·Bean 的详细流程为:
- 创建一个BeanFactory ,加载配置文件。根据配置文件,创建BeanDefination 对象。
- 将BeanDefination 对象注册到 Bean工厂中 ,根具 BeanDefination 信息,进行Bean实例化,得到空的Bean 实例。
- 使用@Auotwired 自动将依赖注入到Bean实例中。
- 进行Bean的初始化,得到可用的bean实例,检查依赖关系,添加到依赖池中。
- AOP :面向切面编程。 在不修改原来的代码的基础上,在目标方法中增加新的功能或者拦截原有的功能实现。解决代码的耦合度与代码复用的问题。
- 底层使用了JDK+CGLIB的动态代理方式实现。
- 定义切面: 首先的定义i一个切面类,使用@Component 、@Aspect 注解。
- @Pointcut 在切面中,定义一个切入点:定位到想要去拦截或添加功能的位置方法上。
- @Before :定义切入点到目标方法执行前的方法。
- @AfterReturning :目标方法执行无异常结束后执行。
- @After :目标方法执行出现异常后执行
- @AfterThrowing :目标方法出现异常时执行的方法
- @Around ():环绕通知,使用rtry-catc的方法实现,方法的执行前后的通知。
- 最后使用切点定位目标方法的过程叫做织入,会生成一个代理对象,执行切面的方法。
/*** 切⾯
*
切⼊点和通知的抽象 (与⾯向对象中的 类 相似)
*
定义 切⼊点和通知 (切⼊点定义了要拦截哪些类的哪些⽅法,通知则定义了拦截过⽅法后要做什么)
*/@Component // 将对象交给IOC容器去实例化
@Aspect // 声明当前类是⼀个切⾯
public class LogCut {/***
*
*
切⼊点:
匹配规则。规定什么⽅法被拦截、需要处理什么⽅法
定义切⼊点
* @Pointcut("匹配规则")** Aop 切⼊点表达式简介
* 1. 执⾏任意公共⽅法:
*
execution(public *(..))* 2. 执⾏任意的set⽅法
*
execution(* set*(..))*
* 3. 执⾏com.xxxx.service包下任意类的任意⽅法
execution(* com.xxxx.service.*.*(..))
* 4. 执⾏com.xxxx.service 包 以及⼦包下任意类的任意⽅法
*
execution(* com.xxxx.service..*.*(..))**
*
注:表达式中的第⼀个* 代表的是⽅法的修饰范围
可选值:private、protected、public (* 表示所有范围)
*/@Pointcut("execution (* com.xxxx.service..*.*(..) )")public void cut(){}/*** 声明前置通知 并将通知应⽤到定义的切⼊点上
* ⽬标类⽅法执⾏前 执⾏该通知
**/@Before(value = "cut()")public void before() {System.out.println("前置通知.....");}/*** 声明返回通知 并将通知应⽤到定义的切⼊点上
* ⽬标类⽅法(⽆异常)执⾏后 执⾏该通知
**/@AfterReturning(value = "cut()")public void afterReturn() {System.out.println("返回通知.....");}/*** 声明最终通知 并将通知应⽤到定义的切⼊点上
* ⽬标类⽅法(⽆异常或有异常)执⾏后 执⾏该通知
**/@After(value = "cut()")public void after() {System.out.println("最终通知.....");}/***
*
*
/*** 声明异常通知 并将通知应⽤到定义的切⼊点上
* ⽬标类⽅法出现异常时 执⾏该通知
*/@AfterThrowing(value="cut()",throwing = "e")public void afterThrow(Exception e) {System.out.println("异常通知....." + " 异常原因:" + e.getCause());}
声明环绕通知 并将通知应⽤到切⼊点上
⽅法执⾏前后 通过环绕通知定义相应处理
需要通过显式调⽤对应的⽅法,否则⽆法访问指定⽅法 (pjp.proceed();)
* @param pjp* @return*/@Around(value = "cut()")public Object around(ProceedingJoinPoint pjp) {System.out.println("前置通知...");Object object = null;try {object = pjp.proceed();System.out.println(pjp.getTarget() + "======" + pjp.getSignature());// System.out.println("返回通知...");}
catch (Throwable throwable) {throwable.printStackTrace();System.out.println("异常通知...");}System.out.println("最终通知...");return object;}}
Bean对象的循环依赖问题是什么,怎么解决
- 当两个类相互注入时,当spring尝试创建其中一个对象,发现依赖于另一个,先去创建其对象。
- 解决:
- 使用了springboot得的二,三级缓存,将没有完全实例化好的对象存储在二级缓存中,当出现循环依赖时,会在二级缓存中找到未实例化好的对象。
- 的当出现AOP的循环依赖问题,三级缓存中存在多对多每个Bean都beanFactory ,通过getObject()可以获得未完全实例化好得到bean .存到二级缓存中。
AOP的使用场景有哪些,如果让你去模拟一个怎么进行实现
- 日志打印、性能分析、安全控制、事务处理、
- @EnableAspectJAutoProxy 在启动类上添加注解选择代理模式。用于开启基于 AspectJ 的自动代理功能
- 写一个切面类(日志打印),@component @Aspect标记该切面类中 。
- 在切面类中 定义切点@pointcut(“execution()”)找到目标方法。(通过@interface 去实现自定义注解,匹配规则中,写下先自定义注解的全路径,通过自定义注解找到对应的目标方法)
- 切面中实现@before (“切入点”) @After() @AfterThrowing() @AfterRunner @Around()
Spring事务回滚流程
- spring事务通过Aop 来实现,先创建一个代理对象,根据aop的流程执行具体的逻辑操作。但是不通过aop的通知实现核心操作,而通过transacationlnterceptor来实现,调用invoker()方法实现具体的逻辑。
- 具体流程可以描述为:
- 先做准备工作,解析@Transaction注解的目标方法上的事务相关的属性,根据属性或者根据配置文件 中的事务管理器 (DataSourceTransactionManager)启动事务。当事务启动,其他的sq会等待事务结束在执行。
- 当开启事物,获取数据库连接,将数据库的自动提交模式设置为false.
- 执行具体的业务逻辑操作。如果执行成功,将自动提交模式设置为true ,释放数据库连接资源。
- 当操作执行失败,抛出异常,如果异常是一个runTimeException或error 通过completeTransaction 完成事务的回滚。否则不回滚事务。除非@Transaction()中指定提交指定了rollbackfor 。 具体是通过doRollBack实现。
- 事务执行完成后,通过cleanupTransaction清除相关事务操作。
什么情况下事务会失效
- @Transactionnal 注解只能使用public的方法使用。
- 非public方法可能无法抛出或捕获异常。
- 访问权限,无法被外部方法调用。
- 事务是同过aop 代理方式实现,非public 的方法可能不能被拦截。
- 通过类 内部普通方法对 @Transactional注解的方法进行调用。
- 事务的开始结束,在service的最外层,内部发生可能导致,事务的范围不准确。
- 导致事务的隔离级别不正确。
- 异常未正确处理的不能正常回滚。
- 导致数据库连接异常。事务不能正确进行。
- 并发异常。
- 数据库不支持事务。
- 使用了Myisam 。
- @transactional 默认只处理运行时的异常,进行回滚。通过rollbackFor 和norollbackFor 指定哪些异常需要回滚。
- 事务的传播属性设置不正确。以never 、not_supported 不生效
- Required :默认的传播机制,存在支持当前的事务,不存在创建一个新的。
- Supports:事务存在支持事务,不存在,支持非事务。
- Mandatory:在正常的事务内执行,否则抛出异常。
- Requires_new:不管存不存在,直接开启一个新事务。
- Not_supported:只能以非事物执行。
- Never:只能以非事物执行。存在事物抛异常。
- Nested :不存在,开启事务,存在事务,运行一个嵌套事务。
- 捕获异常未抛出。导致事务终止。
- 捕获异常后未回滚、提交
- 捕获异常后未记录日志或通知。
- 捕获异常后未处理或重新抛出。
- Bean没有被Spring容器管理。
- 事务的方法内启动新线程来进行异步操作。
- 新线程异步操作在事务提交之前,导致事务不能提交。
- 新线程的一部操做在事务的内部,并且事务的传播机制未supprot_new,会开启新的事物,与原事物无关。
- 新线程的异步操作出现异常未处理,原事物订单不能回滚。
怎么证明你这个Controller方法是单例的
- 对控制器的构造方法使用日志打印,发起多次请求后,发现打印的日志只有一条。
// 创建LOgger对象,调用logger.info()打印日志。@SpringBootApplicationpublic class Starter {private static Logger logger = LoggerFactory.getLogger(Starter.class);}public static void main(String[] args) {logger.info("SpringBoot 应用开始启动...");SpringApplication.run(Starter.class);}
- 对该方法打断点,多次发起请求,查看对象是否是同一个。
Spring的七大核心组件分别是哪些
- spring core :核心容器创建和管理bean的容器。
- springcontext :spring上下文配置文件,向spring提供上下文信息。
- spring Aop
- spring dao 用于访问数据的对象
- spring orm : 对象关系映射,解决对象与数据库不匹配的问题。
- spring web : 为基于web的应用程序提供上下文。
- spring mvc :spring 内置的MVC 框架。解决了web开发常见的问题,参数接受、文件上传。支持restful 风格的URL 请求路劲。
IOC和AOP理解
一二三级缓存分别存储什么信息
- concurrentHashMap 存储完整创建的实例Bean ,当需要用时可以快速获取。
- ConcurrentHashMap 暂时未完成创建好的bean 对象。循环依赖中出现。
- concurrentHashMap 三级存储了一个bean工厂,在需要创建bean的时候来创建bean 对象。
详细的日志信息怎么得到
- springboot默认使用LogBack 日志系统。在yml 或 properties 文件中将日志输出的级别提高到Debug。
logging.level.root=DEBUG
- 配置其他的日志系统–Log4J。
拦截器是怎么实现拦截的
- 首先先创建一个拦截器对象。实现interceptror 是接口,重写他的三个方法 preHandel()hostHandel()afterComletion()。
- 配置拦截器:实现WebMvcConfiguration 接口。通过重写addinterceptors() 方法添加多个拦截器,的使用拦截器对象的addpathpatterns(“/”)添加拦截路经。
Spring中配置过滤器
- 实现Filter接口,重写三个方法 init() 、dofilter()、destroy(),在实现类上使用@webFilter注解定义过滤路劲。
- 在启动类上添加@ServeltCompenetScan 进行自动配置。
Cookie,Session,Token三者的区别与使用
- cookie:存储在客户端的小文本数据 。安全性较低,cokie可以被直接获取。存储一些非敏感、与用户会话相关的小量信息当客户端访问服务器,服务器会发送给cookie到客户端存储,当下次访问时会带着cookie一起访问。服务器会响应对应的数据。
- session:存储在服务器中,当客户端访问服务器,服务器存储客户端的数据,返回一个session ID 到客户端。客户端带着这个id 访问服务器 ,服务器通过id找到对应的session,就能给出这个session 对应的客户端数据。安全性较高,存储用户的相关信息。
- token: 存储在客户端,通常是一个包含用户信息和签名的字符串.
- 客户端带着token 到服务器,服务器验证token ,返回true,则返回客户端数据。安全性主要看加密强度强弱。存储用户的权限标识。
MVC执行流程
- 用户发出请求->被前端控制器(dispatcherServlet)拦截。,调用处理器映射器(handerMapping)
- 处理器映射器去找到的具体的处理器(xml配置或注解),生成处理器对象、处理器拦截器,返回给前端控制器。
- 前端控制器调用处理器适配器(handerAdapter)去调用具体的处理器(handler\controller )
- 具体的处理器执行返回ModelAndView 视图对象给处理器适配器。再返回给前端控制器。
- 前端控制器将视图给视图解析器(ViewReslover)解析,将解析的结果 View 返回给前端控制器。
- 前端控制器将视图进行渲染后返回给用户。
Controller层有哪些常用的注解,前端传给后端的数据应该通过哪些注解接收的
- 前端到后端的数据:
- @RequestBody() : 解析json 格式,并将其转换为相应的java格式
- @Requestparmar /@modelTribute /@RequestPart 接收前端传来的参数绑定到java 对象上。
- @PathVariable :接收URL路劲上的参数.
- @RequestHeader :获取请求头上的某个字段。
- @XmlrootElement: 处理Xml数据与java对象之间的转换
前端发送到后端的对象是如何变成一个实体类的,后端返回给前端的实体类又是如何变成JSON字符串
- 前端将对象序列化为jon字符串,这个字符串中包含了对象的属性与值。
- 后端使用@RequestBody 注解标识实体,内置的解析器将json字符串中的属性与值通过反射来设置该对象。
- springboot 默认使用jackson 来处理序列化。当controller 返回数据时,自动调用jackson 序列化数据。使用阿里提供的–fastjson
SSM中涉及到哪些设计模式
- spring :
- BeanFactory就是简单工厂模式的体现,用来创建对象的实例;
单例模式:Bean默认为单例模式。
代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;
模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。
观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现–ApplicationListener。
- BeanFactory就是简单工厂模式的体现,用来创建对象的实例;
- springMVC :
- 组合模式:
- 责任链模式:过滤器链
- 策略模式:
- 适配器模式
- mybatis :
- 建造者模式 :
例如 SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;
- 建造者模式 :
工厂模式 :
例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;
单例模式 :
例如ErrorContext和LogFactory;
代理模式 :
Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;
组合模式 :
例如SqlNode和各个子类ChooseSqlNode等;动态SQL like、trim等
模板方法模式 :
例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler;
适配器模式 :
例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现;
装饰者模式 :
例如cache包中的cache.decorators子包中等各个装饰者的实现;
迭代器模式 :
例如迭代器模式PropertyTokenizer;
简述mybatis中#与$区别
- #{} ¥{} 都是当访问maapper 接口时,传递给方法的形参值。
- 区别:
- 执行过程:#{}:将读取到的参数用?来占用,编译sql ,用得到的值替换? ${}:直接将读取的值替换参数。 参数如果是字符串:#{} 不需要手动添加 ’ ’ ${}需要,否则报错
- sql注入:#{} 预编译先用?替换参数,再用值替换?不出现sql注入。 ${}会出现。
- 传递关键字:使用#{} 会自动添加’ ’ 会报错,${}不会。
mybatis在什么场景使用,mybatis出现取代了什么,没有mybatis的时候怎么处理
- 需要频繁操作数据库,复杂的业务场景编写原生sql ,与多种数据库兼容,灵活的对象映射。
- 取代了传统的JDBC,开启jdbc,执行sql语句,关闭数据库连接等操作。
- mybatis 只需要在maper 文件中写好对应的sql,创建对应的接口。mybatis 会自动处理数据库的连接和释放。
- 使用纯JDBC封装。里面编写JDBC的连接、执行、释放等方法。 使用其他的ORM 框架。 数据库的存储过程和视图。
mybatis接收返回值类型怎么设置,有哪些
- 输入返回值类型:paremetertype :别名或者 全类名。
- _基本类型 : _int
- 引用类型:大写转小写。包装类、string ,list 、hashmap。实体类、封装的POJO类。
- 多个参数时,可以通过@Param 注解实现多个参数的接收,接受的时候封装为hashmap
- 输出返回值类型:resultType:
- 类型:_基本类型 : _int
- 引用类型:大写转小写。包装类、string ,list 、map、 实体类、封装的POJO类。
- resultMap: 自定义的返回类型。当出现数据库的映射出错问题。为字段名起别名。
<resultMap id="empDeptMapResultMapOne" type="Emp"><id property="eid" column="eid"></id><result property="empName" column="emp_name"></result><result property="age" column="age"></result><result property="sex" column="sex"></result><result property="email" column="email"></result><result column="did" property="dept.did"></result><result column="dname" property="dept.dname"></result></resultMap><select id="getEmpAndDept" resultMap="empDeptMapResultMapTwo">select emp.*,dept.* from emp left join dept on emp.did = dept.did where emp.eid = #{eid}
</select>
Mapper的映射如何设置
- 在dao接口定义方法。在mapper.xml文件中实现sql方法。在全局配置文件中映入mappper.xml路经,配置数据库。
Mybatis如何实现多表中实体映射关系
- 一对一:存在两张表,将查询的字段封装为一个POJO类
<resultMap id="" type = ""><id = "" column="" property=""><id = "" column="" property=""><association property="" javaType=""><id column = "" property=""><result column="" property=""><result column="" property=""><result column="" property=""></association>
</resultMap>
<select id=“” RequestMap="">编写sql </select>
<select id=“” ResultType="">编写sql </select>
- 一对多/多对多:存在两张表以上:
<resultMap id="" type = ""><id = "" column="" property=""><id = "" column="" property=""><collection property="" oftype=""><id column = "" property=""><result column="" property=""><result column="" property=""><result column="" property=""></collection>
</resultMap>
<select id=“” RequestMap="">编写sql </select>
SpringBoot核心注解
- @SpringBootConfiguration : 将类申明为配置类,将当前类中所有以@Bean 标记的方法的实例放到spring 容器中。
- @ComponentScan:自动扫描写好的当前路径下的包使用@Component @Controller 、@Service @Repository 注解标记的类。作为 bean 加载到spring容器中。
- @EnableAutoConfiguration :自动配置的入口,springBoot更据添加的 jar 包进行项目的配置。
SpringBoot加载Web运用程序的流程
- @SpringBootApplication 注解的 启动类 启动时调用 SpringApplication.run() 启动应用程序。
- springBoot根据配置好的依赖,进行自动配置,生成web环境需要的Bean.(负责处理web的请求和响应)
- springBoot 内置的TomCat会作为默认的 Servlet 容器 ,自动启动。
- springBoot自动注册、初始化 前端控制器(DispatcherServlet) 类。、
- Spring Boot 会扫描并初始化应用程序中定义的 Web 控制器类(带有
<font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">@Controller</font>
或<font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">@RestController</font>
注解的类)。
- 前端控制器(DispatcherServlet)根据控制器类的方法上的 URL 映射注解(@RequestMapping、@GetMapping 等)来处理 Web 请求
- 如果控制器返回的是一个逻辑视图名,DispatcherServlet 会使用配置好的 视图解析器(ViewResolver) 来解析并渲染该视图。
- 最终,处理完请求后的响应数据会通过 Tomcat 容器返回给客户端。
SpringBoot自动装配原理
- springboot 提供了一系列的相关起步依赖,里面包含了一组相关的依赖,保证满足spring Boot 的使用·
- 大量的自动配置类:它们包含了用于配置 Spring 容器中各种组件的逻辑。在
springbootautoconfigure
模块的META - INF
目录下有一个spring.factories
文件,这个文件中定义了一系列的自动配置类的全路径名。当 Spring Boot 启动时,会读取这个文件,找到所有需要加载的自动配置类。 - Spring Boot 大量使用条件注解来决定自动配置类是否应该被应用。自动判度是否需要创建自动配置类。
- Spring Boot 通过
@AutoConfigureOrder
注解来控制自动配置类的加载顺序,自动配置类是相互关联的。这个注解是一个整数,数字越小,优先级越高。
SpringBoot的启动流程?
- 通过main方法使用springApplication .run()创建springApplication 对象,、
- 运行这个springApplication对象,会开始加载环境变量,配置文件、系统属性。将信息存放在
Environment
对象 中。 - 选择合适的上下文。annotationConfigurSpringConText() 或XmlwebConfigurSpringContext ()。然后通过@SpringBootApplication 去扫描对应的组件,注册到上下文环境当中。
- 进行自动配置,@EnableAuotConfigurtion 根据配置和依赖去配置相关的组件(配置类)。
- 如果是web应用程序,那么会自动去启动内置的tomcat服务器。去配置文件中设置对应的参数。
- 前端发送请求,springboot将请求传递到前端控制器。通过这个URL路劲找到对应的映射注解标记的控制器方法,控制器去调用service层的方法执行业务逻辑。控制器返回视图给前端控制器,前端控制器调用视图解析器,解析视图返回给服务器,服务器将数据响应到客户端。
springboot打成的jar包和普通项目打成的jar包有什么区别
- springBoot :
- 内置了tomcat、jetty 的服务器,jar包可以单独运行。
- 将所有的依赖都打成一个jar包,当部署项目时,只需要一个jar包就可以运行。
- 简单的运行jar包命令-java - jar .jar 便可以启动。
- 在运行时,会自动根据配置文件自动配置组件。
相关文章:
![](https://i-blog.csdnimg.cn/img_convert/028ebd72f284dfab26bfbcdbc268f584.png)
框架部分面试题学习
IOC容器,AOP IOC :依赖反转,将对象的创建,组装,管理的控制权限从应用程序反转到IOC容器中。由springboot的来实现对象的自动装配和注入。 当某个类使用了Componnet 注解后,标记为一个组件。那么这个类在项…...
![](https://i-blog.csdnimg.cn/direct/f06b4cb459e943c7b5c24afe214fc9fb.png)
tdengine数据库使用java连接
1 首先给你的项目添加依赖 <dependency> <groupId>com.taosdata.jdbc</groupId> <artifactId>taos-jdbcdriver</artifactId> <version>3.4.0</version> <!-- 表示依赖不会传递 --> </dependency> 注意&am…...
![](https://www.ngui.cc/images/no-images.jpg)
Java 模板变量替换——字符串替换器(思路Mybatis的GenericTokenParser)
Java 模板变量替换——字符串替换器(思路Mybatis的GenericTokenParser) 思路字符串替换器 思路 模板变量替换无非是寻找出字符串(模板)中的特殊标记,用对应的变量进行字符串替换。 提到变量替换,大家第一能…...
![](https://img-blog.csdnimg.cn/img_convert/5502c5deb203c2b21843929077ea1190.jpeg)
跨界融合:人工智能与区块链如何重新定义数据安全?
引言:数据安全的挑战与现状 在信息化驱动的数字化时代,数据已成为企业和个人最重要的资产之一。然而,随着网络技术的逐步优化和数据量的爆发式增长,数据安全问题也愈变突出。 数据安全现状:– 数据泄露驱动相关事件驱…...
![](https://i-blog.csdnimg.cn/direct/7c4d38272f154529898fd0196bd04ed0.png#pic_center)
android 自定义SwitchCompat,Radiobutton,SeekBar样式
纯代码的笔记记录。 自定义SwitchCompat按钮的样式 先自定义中间的圆球switch_thumb_bg.xml <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"android:shape"oval&q…...
![](https://www.ngui.cc/images/no-images.jpg)
计算机网络的定义与发展历程
计算机网络的定义 计算机网络是指通过通信设备和传输介质将分布在不同地点的计算机及其相关设备(如打印机、服务器等)连接起来,按照一定的通信协议进行数据交换与资源共享的系统。计算机网络的基本功能包括:信息的传输、资源共享…...
![](https://www.ngui.cc/images/no-images.jpg)
对比学习 (Contrastive Learning) 算法详解与PyTorch实现
对比学习 (Contrastive Learning) 算法详解与PyTorch实现 目录 对比学习 (Contrastive Learning) 算法详解与PyTorch实现1. 对比学习 (Contrastive Learning) 算法概述1.1 自监督学习1.2 对比学习的优势2. 对比学习的核心技术2.1 正样本对与负样本对2.2 对比损失函数2.3 数据增…...
![](https://i-blog.csdnimg.cn/direct/ce7f9dcbd03d41499dc53d0b0aa56178.png)
DBeaver执行本地的sql语句文件避免直接在客户端运行卡顿
直接在客户端运行 SQL 语句和通过加载本地文件执行 SQL 语句可能会出现不同的性能表现,原因可能包括以下几点: 客户端资源使用: 当你在客户端界面直接输入和执行 SQL 语句时,客户端可能会消耗资源来维护用户界面、语法高亮、自动完…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ 的 pair 和 tuple
1 std::pair 1.1 C 98 的 std::pair 1.1.1 std::pair 的构造 C 的二元组 std::pair<> 在 C 98 标准中就存在了,其定义如下: template<class T1, class T2> struct pair;std::pair<> 是个类模板,它有两个成员&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
Zookeeper 集群安装
Zookeeper 集群 主机 IP SoftWare Port OS Myidnode1 192.168.230.128 apache-zookeeper-3.7.1 2181 Centos 7 1 node2 192.168.230.129 apache-zookeeper-3.7.1...
![](https://i-blog.csdnimg.cn/direct/dadbf0fb3b30419ca6cfafa5cd9ffa82.png)
git merge与rebase区别以及实际应用
在 Git 中,merge 和 rebase 是两种将分支的更改合并到一起的常用方法。虽然它们都可以实现类似的目标,但它们的工作方式和效果有所不同。 1. Git Merge 定义:git merge 是将两个分支的历史合并在一起的一种操作。当你执行 git merge 时&…...
![](https://i-blog.csdnimg.cn/direct/f9ae0e188f5b4d98be488a85d82cf0ed.png)
kvm虚拟机出现应用程序无法正常启动报0xc0000142错误
场景:我的是window10虚拟机,在运行我的软件的时候,出现0xc0000142错误,原因可能是cpu型号问题,某些虚拟cpu可能没有特定的指令,只需要修改虚拟机配置文件以下参数即可...
![](https://www.ngui.cc/images/no-images.jpg)
Redis 安装与 Spring Boot 集成指南
安装 Redis 和将其与 Spring Boot 应用集成是构建高效缓存解决方案的常见步骤。以下是详细的指南,帮助你在本地环境中安装 Redis,并在 Spring Boot 项目中配置和使用它。 1. 安装 Redis Windows 环境 Redis 官方并不直接支持 Windows,但你…...
![](https://www.ngui.cc/images/no-images.jpg)
Flink集成TDEngine来批处理或流式读取数据进行流批一体化计算(Flink SQL)拿来即用的案例
Flink 以其流批一体化的编程模型而备受青睐。它支持高吞吐、低延迟的实时流计算,同时在批处理方面也表现出色。Flink 提供了丰富的 API,如 DataStream API 和 DataSet API,方便开发者进行数据处理操作,包括转换、聚合、连接等,使得开发者能够轻松构建复杂的数据处理逻辑。…...
![](https://www.ngui.cc/images/no-images.jpg)
【STM32】利用SysTick定时器定时1s
1.SysTick简单介绍 SysTick定时器是一个24位的倒计数定时器,当计数到0时,将从RELOAD寄存器中自动重装载定时初值,开始新一轮计数。 SysTick定时器用于在每隔一定的时间产生一个中断,即使在系统睡眠模式下也能工作。 关于SysTic…...
![](https://www.ngui.cc/images/no-images.jpg)
Python中的format格式化、填充与对齐、数字格式化方式
文章目录 一、format语法二、format格式化的用法2.1、按照先后顺序替换{}2.2、按照索引进行匹配替换{0}2.3、按关键字索引进行匹配替换2.4、通过列表索引格式化字符串2.5、使用元组2.6、通过字典设置格式化字符串2.7、混合使用 三、字符串填充与对齐3.1、左对齐及填充3.2、右对…...
![](https://i-blog.csdnimg.cn/direct/9123f7352ec74d94951fa6a5cd29bf79.gif)
winform第三方界面开源库AntdUI的使用教程保姆级环境设置篇
1. AntdUI 1.1. 导入项目 1.1.1. 首先新建一个空白的基于.net的Winfrom项目1.1.2. 复制AntdUI中src目录到我们的解决方案下面1.1.3. 解决方案下添加现有项目1.1.4. 添加项目引用 1.2. 编写代码 1.2.1. 改写Form1类,让其继承自public partial class Form1 : AntdUI.W…...
![](https://www.ngui.cc/images/no-images.jpg)
如何使用Yarn Workspaces实现Monorepo模式在一个仓库中管理多个项目
Yarn Workspaces是Yarn提供的一种依赖管理机制,它支持在单个代码仓库中管理多个包的依赖。这种机制非常适合需要多个相互依赖的包的项目,能够减少重复依赖,加快依赖安装速度,并简化依赖管理。下面将详细介绍如何使用Yarn Workspac…...
![](https://i-blog.csdnimg.cn/direct/ef58403755634d819206da2e25521a35.png)
SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门
本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现,并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架,帮助你快速开发可扩展、高效的分布式系统。 目录 前言 服务注册和发现 服务注册 编辑 …...
![](https://www.ngui.cc/images/no-images.jpg)
物联网:七天构建一个闭环的物联网DEMO
我计划用七天的时间, 基于开源物联网平台, 打造一款物联网案例的闭环。 为了增加感观体验,欢迎大家与我保持亲密的沟通。 我们来看一段代码: Slf4j Component public class MqttSendManager {Resourceprivate MqttSendHandler m…...
![](https://i-blog.csdnimg.cn/direct/9e02eb20e85146ea92dd6d38ac9eb34b.png)
景联文科技提供高质量多模态数据处理服务,驱动AI新时代
在当今快速发展的AI时代,多模态数据标注成为推动人工智能技术进步的关键环节。景联文科技作为行业领先的AI数据服务提供商,专注于为客户提供高质量、高精度的多模态数据标注服务,涵盖图像、语音、文本、视频及3D点云等多种类型的数据。通过专…...
![](https://www.ngui.cc/images/no-images.jpg)
c#13新特性
C# 13 即 .NET 9 按照计划会在2024年11月发布,目前一些新特性已经定型,让我们来预览一个比较大型比较重要的新特性。 正文 扩展类型 Extension types 在5月份的微软 Build 大会中的 What’s new in C# 13 会议上,两位大佬花了很长的篇幅来…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode LCP17速算机器人
速算机器人:探索字符指令下的数字变换 在编程的奇妙世界里,我们常常会遇到各种有趣的算法问题,这些问题不仅考验我们的逻辑思维,还能让我们感受到编程解决实际问题的魅力。今天,就让我们一同探讨一个关于速算机器人的…...
![](https://i-blog.csdnimg.cn/img_convert/78742b5d3a318d5c5baf88e8b2543c4a.png)
杭州铭师堂的云原生升级实践
作者:升学e网通研发部基建团队 公司介绍 杭州铭师堂,是一个致力于为人的全面发展而服务的在线教育品牌。杭州铭师堂秉持“用互联网改变教育,让中国人都有好书读”的使命,致力于用“互联网教育”的科技手段让更多的孩子都能享有优…...
![](https://www.ngui.cc/images/no-images.jpg)
计算机网络之---MAC协议
MAC协议的作用 在数据链路层中,MAC(媒介访问控制)协议负责控制设备如何访问共享的通信介质(如以太网、无线电波等),确保在多台设备共享同一传输媒介时能够有效地进行数据传输,避免冲突、控制流…...
![](https://i-blog.csdnimg.cn/direct/73b821d03f534538895701b62e782177.png)
微服务面试相关
Spring Cloud Spring Cloud五大组件 注册中心:Eureka、Nacos Ribbon负载均衡、负载均衡策略、自定义负载均衡 Ribbon负载均衡流程 Ribbon负载均衡策略 自定义负载均衡 服务雪崩、熔断降级 微服务监控-skywalking 业务相关 微服务限流(令牌桶、漏桶算法…...
![](https://i-blog.csdnimg.cn/img_convert/8f0e311f26ad591c8f06036668550c21.png)
Google发布图像生成新工具Whisk:无需复杂提示词,使用图像和人工智能将想法可视化并重新混合
Whisk 是 Google Labs 的一项新实验,可使用图像进行快速而有趣的创作过程。Whisk不会生成带有长篇详细文本提示的图像,而是使用图像进行提示。只需拖入图像,即可开始创建。 whisk总结如下: Whisk 是 Google 实验室最新的生成图像实…...
![](https://i-blog.csdnimg.cn/direct/ad6f2a4bcb644df6b982b2386291d018.png)
docker pull(拉取镜像)的时候,无法下载或者卡在Waiting的解决方法
docker pull的时候,卡在Waiting的解决方法 一般情况(大部分镜像都可以拉取)更换镜像源 进一步(如es等拉取不到)在镜像同步站搜索详细步骤 还可以在挂载的时候,让其下载对应的版本 一般情况(大部…...
![](https://i-blog.csdnimg.cn/img_convert/1d7febcf7482e814782a75775c7a60c8.png)
51c~Pytorch~合集4
我自己的原文哦~ https://blog.51cto.com/whaosoft/12311033 一、Pytorch~训练-使用 这里介绍了Pytorch中已经训练好的模型如何使用 Pytorch中提供了很多已经在ImageNet数据集上训练好的模型了,可以直接被加载到模型中进行预测任务。预训练模型存放在Pytorch的…...
![](https://www.ngui.cc/images/no-images.jpg)
windows下,golang+vscode+delve 远程调试
1 先在远程服务器安装golang和delve golang的安装,通过官网直接下载安装包安装接口 go install github.com/go-delve/delve/cmd/dlvlatest 如果dlv和golang版本不匹配,这里把latest换成匹配的版本,比如1.20.0 2 编译带调试信息的程序 go bu…...
![](https://img-blog.csdnimg.cn/img_convert/501a97f7fce82c7bb4e86903fed026a2.png)
网盘做网站空间/网站做外链平台有哪些
系统集成是指通过结构化的综合布线系统和计算机网络技术,将各个分离的设备(如个人电脑)、功能和信息等集成到相互关联的、统一和协调的系统之中,使资源达到充分共享,实现集中、高效、便利的管理,以发挥整体…...
![](/images/no-images.jpg)
windows 做网站服务器/抖音seo是什么
再有五六天就开学了,查找有关搜索引擎排名,以下这篇文章还是比较不错的,先赞一个^_^!搜索引擎排名定义: 在搜索引擎里输入一个关键字,通常得到很多搜索结果,这些搜索结果的排名有先后之分,这…...
如何查看一个网站是什么程序做的/网络推广推广
有时候莫名其妙的就出现那种错误了T_T,我还要练习SQL呢,而且我已经因为它重新装过一次mysql了,讨厌的10061.在电脑--管理--服务里查看居然没有mysql 服务(我想应该是360“帮我”关闭了服务)于是以管理员身份进入命令行…...
![](https://img-blog.csdnimg.cn/img_convert/75f456e49d893d81176e2069b0074046.png)
做盗链电影网站怎么样/个人免费开发app
类型:便捷生活大小:101.2MB评分:10平台:ofo共享单车貌似出了点问题!今天很多朋友都无法登录、显示网络错误,还无法结算,这是怎么回事,又该怎么办呢?来看看吧!…...
![](https://img-blog.csdnimg.cn/img_convert/5b691368bf41a9ad8284bbbf01d6d4a6.png)
徐州网站关键词排名/广州网站快速优化排名
“最遥远的距离,也抵挡不了听同一首歌。”还记得之前给大家分享的网易云音乐7.1.8内测嘛?想必大家对网易云音乐7.1.8里面的我的耳机分你一半情有独钟,那么前几天正式版也更新了,但是好像内有加入一起听的功能!近日&…...
![](https://img-blog.csdnimg.cn/20210818112348835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4NDAzNTkw,size_16,color_FFFFFF,t_70)
梅州头条新闻今天头条新闻/全国分站seo
这里的场景为1对1,就是A发送B接收。 而【不是1对多】,A发送、B、C接收 首先在springBoot程序下pom导入相关依赖,activemq的、以及提升效率的连接池的。 <dependency><groupId>org.springframework.boot</groupId><art…...