国内最全的Spring Boot系列之六

news2024/11/26 10:16:29

在新的一年祝大家兔年大吉,兔耳冲天,动如脱兔!

2022年就这么过去了,闭上眼回首2022年发生的事情,犹如过眼云烟 —— 一事无成的感觉。

2022年到底都发生了什么事情,坚持了什么?于是我闭上眼睛,认真的思考起来……

上半年的时间主要是在杭州,在一家互联网公司承担着技术总监的身份,带领着一个团队在作战。在5月份的时候,由于疫情对公司的影响,领导决定把公司从杭州搬到宁波(因为宁波也有一家公司)。这个决策就导致了团队的不稳定,由于这个阶段项目和技术框架已经处于稳定,团队大部分都离开,就不需要管理,我也在这个时机选择了离开(在这个公司也奉献了整整4年的青春)。

离开之后,我就回到了厦门,找了一家公司,让我出差到杭州的分部去组件团队,这一去又是几个月… 后面又发生了很多的波折,在这里不一一列出。

纵观2022年值得拿出来说的几个事情,在这里和大家做个分享:

(1)健身:每周2-3次会去健身房运动和游泳,以此来保持自己的身心健康和良好状态。

(2)出书:出了一本设计模式的书,原本取名是《大话设计模式之爱你一万年》,但由于出版社要求比较严格,这个书名不见得能下来,目前的阶段是终审完成,书号下来了。剩下更多的事情就是出版社那边的,出版社那边也是需要很多的时间才能印刷,所以离书的面世还有很长一段时间。

(3)坚持写博客:坚持每周写一篇博客,并且发布到各大平台和微信公众号。

(4)看书:看书也是这么多年来一直坚持的习惯,在2022年由于比较折腾,所以断断续续的断过一些日子。养成习惯需要很久,但3天就有可能破坏习惯,所以好的习惯一定要坚持。

(5)羽毛球:在厦门的时候,连续几个星期每周二下班去打羽毛球,让我捡起了大学训练的羽毛球技术,感觉良好,体力也是直线飙升,从原来2个小时到后来可以打3个小时,羽毛球也是我比较喜欢的一项运动,希望在2023年能够当做一项重要的事情进行培养。

(6)技术成长:除了博客的技术输出,还会花一些时间在自我技术的成长上面,比如了解新的技术以及新的赛道的技术web3、区块链、NFT等等。

(7)51CTO的课程合作:和51CTO平台合作了两个课程《JVM性能调优原理与实战》和《JVM类加载机制剖析与GC算法》。

(8)机会的探索:这个事情我虽然放在偏后面,但是我觉得这个很重要,选择一个好的方向、好的机会,是你一直要思考的事情。经常会和一些思维比较活跃,有天马行空的朋友交流沟通,另外就是关注一些趋势行业。成长也要,技术也要,为什么不一起?

还有其它一些细小的事情,就不在这里一一罗列了,接下来,把过去2022年的文章给大家汇总下,方便大家进行寻找和学习。

一、Spring Boot历史系列集合

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

二、文章集合

2.1 Lambda表达式

Spring Boot 2.0有很多新的特性,但是这些特性是依赖JDK的版本是jdk 8+才能进行使用的,因此我们有必要先了解下Java8的新特性。

你真的学会了Lambda表达式了吗?一篇让你学废了不香么 - 第417篇

当你的Stream遇上Lambda就爱上了,超级无敌酷酷!- 第418篇

java8+lambda+Stream api实战案例学彻底透学废 - 第419篇

Java8新特性:Lambda表达式:小试牛刀

Java8新特性:Lambda表达式:过关斩将:使用场景

Java8新特性:Lambda表达式:摸摸里面

2.2 YApi和EasyYapi

API接口在设计时往往需要编写大量的文档,而且编写完成后往往需要根据实际情况经常改动文档,这使得文档编写维护工作量相对较大,让很多的开发者都很头疼。

此外,伴随着接口版本的迭代开发,接口文档也需要同步更新。而且接口开发完成以后,做接口测试会十分不方便,要是遇上接口数量多、参数负载的情况,那不仅不方便,测试工作量会重上加重。

为提高接口管控效率,一个非常好用的接口管理平台-YAPI应运而生,让我们一起来看,YAPI有多么的优秀。

接口管理平台YApi坑死我了(超级详细实操教程) - 421篇

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi - 第422篇

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇

2.3 thymeleaf布局

在搭建一个网页的时候,一般的会分为header、content、footer,也就是导航部分、中间的内容部分、以及底部。对于header和footer这两个部分一般的是很多页面公用的,那么这时候,我们会把公共的部分进行抽离出来,这就是所谓的thymeleaf布局。

SpringBoot使用thymeleaf实现布局方案一,不懂就out了(循序渐进的超级详细讲解方式) - 第424篇

SpringBoot使用thymeleaf实现布局方案二,方案在手说走就走 - 第425篇

2.4 扩展点系列以及扩展点实战系列

第一篇扩展点文章发表于2022-05-16,至今到这一篇文章耗时5个月左右

一方面是总结之前的文章,本文主要是对于这系列的扩展点概念和实战做个汇总。

对于Spring扩展点的系列文章,全网独有一份,绝对良心出品,如有雷同,请@我。

所有集合:

5个月的精华:Spring/SpringBoot扩展点手册:手册在手,编码无忧:全网独一份 - 第451篇

扩展点概念系列:

01.《SpringBoot/Spring扩展点系列之初出茅庐ApplicationContextInitializer》

https://mp.weixin.qq.com/s/rXxeWhGEvhDf2__Nk2_f8A

典型的应用场景是web应用中需要编程方式对应用上下文做初始化。比如,注册属性源(propertysources)或者针对上下文的环境信息environment激活相应的profile。

02.《SpringBoot/Spring扩展点系列之略有小成BeanDefinitionRegistryPostProcessor》

https://mp.weixin.qq.com/s/JNXOKfWnwCH5--QYqiqj4g

使用场景:动态注册bean,举例:

(1)mybatis-spring就是通过此扩展向spring容器中加入我们mapper的实现类的。(2)Feign远程调用实现。

03.《SpringBoot/Spring扩展点系列之叱咤风云BeanFactoryPostProcessor》

https://mp.weixin.qq.com/s/_gGNZlJ4ARkTr1w1AcetDA

使用场景:

(1)对敏感信息的解密处理

数据库的连接配置中,用户名和密码都是明文配置的,这就存在泄漏风险,还有redis的连接配置、shiro的加密算法、rabbitmq的连接配置等等,凡是涉及到敏感信息的,都需要进行加密处理,信息安全非常重要。

配置的时候以密文配置,在真正用到之前在spring容器中进行解密,然后用解密后的信息进行真正的操作。

(2)Spring中占位符的处理

04.《SpringBoot/Spring扩展点系列之使用InstantiationAwareBeanPostProcessor模拟AOP实现》

https://mp.weixin.qq.com/s/r4F61PkVmZ3rTZOdTg8mAQ

BeanPostProcessor典型的应用场景时在AOP生成代理对象的时候,AOP代理需要创建被代理类的对象,才能对对象进行代理。根据代理的特点,通过在BeanPostProcessor#postProcessAfterInitialization方法执行的时候,对被代理对象进行增强,这样就可以生成新的代理对象。

05.《SpringBoot/Spring扩展点系列之SmartInstantiationAwareBeanPostProcessor确定执行哪一个构造方法》

https://mp.weixin.qq.com/s/cpOin3A9JF5yz17_JWft5Q

当一个bean中有两个构造方法的时候,一个无参构造方法,一个有参构造方法,那么spring在进行bean初始化的时候回默认调用无参的构造方法。

06.《SpringBoot/Spring扩展点系列之ApplicationContextAwareProcessor普通类获取Spring Bean》

https://mp.weixin.qq.com/s/UjSfjyR2epIlB6VH33QHZw

6个扩展点:

(1)EnvironmentAware:用于获取Enviroment的一个扩展类,这个变量非常有用, 可以获得系统内的所有参数。当然个人认为这个Aware没必要去扩展,因为Spring内部都可以通过注入的方式来直接获得。

(2)EmbeddedValueResolverAware:用于获取StringValueResolver的一个扩展类, StringValueResolver用于获取基于String类型的properties的变量,一般我们都用@Value的方式去获取,如果实现了这个Aware接口,把StringValueResolver缓存起来,通过这个类去获取String类型的变量,效果是一样的。

(3)ResourceLoaderAware:用于获取ResourceLoader的一个扩展类,ResourceLoader可以用于获取classpath内所有的资源对象,可以扩展此类来拿到ResourceLoader对象。

(4)ApplicationEventPublisherAware:用于获取ApplicationEventPublisher的一个扩展类,ApplicationEventPublisher可以用来发布事件,结合ApplicationListener来共同使用,下文在介绍ApplicationListener时会详细提到。这个对象也可以通过spring注入的方式来获得。

(5)MessageSourceAware:用于获取MessageSource的一个扩展类,MessageSource主要用来做国际化。

(6)ApplicationContextAware:用来获取ApplicationContext的一个扩展类,ApplicationContext应该是很多人非常熟悉的一个类了,就是spring上下文管理器,可以手动的获取任何在spring上下文注册的bean,我们经常扩展这个接口来缓存spring上下文,包装成静态方法。同时ApplicationContext也实现了BeanFactory,MessageSource,ApplicationEventPublisher等接口,也可以用来做相关接口的事情。

07.《SpringBoot/Spring扩展点系列之初始化之@PostConstruct、init-method、InitializingBean》

https://mp.weixin.qq.com/s/hHwlvtaUK2C5hE_I-eYEog

对于初始化数据常用的有3种实现方式:

(1)使用JSR-250规范定义的@Postconstruct注解。

(2)使用Spring提供的@Bean init-method标签。

(3)实现InitializingBean接口,实现afterPropertiesset()方法。

08.《SpringBoot/Spring扩展点系列之FactoryBean让你不在懵逼》

https://mp.weixin.qq.com/s/Q_dvZEM1FjRnLt1avy8BFw

FactoryBean在Spring中最为典型的一个应用就是用来创建AOP的代理对象:AOP实际上是Spring在运行时创建了一个代理对象,也就是说这个对象,是我们在运行时创建的,而不是一开始就定义好的,这很符合工厂方法模式。更形象地说,AOP代理对象通过Java的反射机制,在运行时创建了一个代理对象,在代理对象的目标方法中根据业务要求织入了相应的方法。这个对象在Spring中就是——ProxyFactoryBean。

09.《SpringBoot/Spring扩展点系列之SmartInitializingSingleton》

https://mp.weixin.qq.com/s/Mf4ovRiGtE_0x6aX7NGzZw

主要应用场合就是在所有单例bean创建完成之后,可以在该回调中做一些事情。

10.《SpringBoot/Spring扩展点系列之CommandLineRunner和ApplicationRunner实现缓存预热》

https://mp.weixin.qq.com/s/DEeO33DVQsAYLAcYYBjzkQ

用于应用服务启动时,加载一些数据和执行一些应用的初始化动作。举例说明:

(1)删除临时文件。

(2)缓存预热:项目启动时热加载数据库数据至缓存。

(3)清除缓存信息。

(4)读取配置文件信息。

(5)打印日志用于标识服务启动成功或者标识某些属性加载成功。

(6)设置属性值或者启动组件,例如开启某些组件的开关、一些应用级别缓存的加载、启动定时任务等等。

(7)需要使用main方法的入参。

11.《SpringBoot/Spring扩展点系列之初始化和销毁的3种办法》

https://mp.weixin.qq.com/s/JZAgefKuLcKV43KbSh4Ijg

(1)第一种,通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁 bean 之前进行的操作。

(2)第二种,通过 在xml中定义 init-method和  destory-method 方法。

(3)第三种,通过bean实现 InitializingBean和DisposableBean 接口。

扩展点实战系列:

01.《观察者模式实际应用场景「扩展点实战系列」》

https://mp.weixin.qq.com/s/ijO9lAAcjg9tsPRVt5wBGg

扩展点,ApplicationListener可以监听某个事件的event,触发时机可以穿插在业务方法执行过程中,用户可以自定义某个业务事件。

02.《服务信息上报+记录请求信息+监听项目运行状态还能这么玩🐴「扩展点实战系列」》

https://mp.weixin.qq.com/s/6GwVy4LH_GEs9GRxYoB8xg

对于ApplicationListener是事件监听,那么事件的定义就会很重要,对于Spring框架提供了几个事件ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent、RequestHandledEvent。另外对于我们可以通过继承抽象类ApplicationEvent来自定义事件。对于自定义事件,那么需要事件的发布。

03.《配置类信息赋值为Java静态变量「扩展点实战系列》」》

https://mp.weixin.qq.com/s/2y3VoFCeUGf6h5R7nnnd6Q

对于配置文件application.properties或者application.yml中的配置属性,希望封装成一个Java对象。耶,这个看起来很简单呢,@Value不就可以实现了吗?那如果我在加一个条件,就是这个属性是静态属性呢?对于这样的情况具体怎么玩呢?

04.《3种方案扩展RestTemplate让其具备负载均衡(超级详细)「扩展点实战系列」》

https://mp.weixin.qq.com/s/pxYIsTzkSiTVSwS7Wluh-Q

三种负载均衡的方案:

(1)根据不同的算法获得url,然后使用RestTemplate进行请求。

(2)在构造RestTemplate的时候,注入拦截器拦截请求,根据不同的算法重新构建请求。

(3)使用注解和Spring的扩展点,RestTemplate创建的时候,注入拦截器拦截请求,根据不同的算法重新构建请求。

05.《一个注解@LoadBalanced就能让RestTemplate拥有负载均衡的能力?「扩展点实战系列」》

https://mp.weixin.qq.com/s/zQPkdbD6y0yoMaBeRSiuag

利用Spring的扩展点SmartInitializingSingleton,在该方法执行的核心逻辑,就是添加自定义的拦截器,拦截RestTemplate的请求,从而对于请求地址进行特殊的处理以此来实现负载均衡。

06.《Spring注解@Qualifier的详细用法你知道几种「扩展点实战系列」》

https://mp.weixin.qq.com/s/VVXaCw_eTENAEnqPQqY_Yw

(1)@Qualifier是一个限定符号,用来限定注入类以及筛选注入对象。

(2)当一个项目中存在多个同类型的Bea你的时候,避免报required a single bean, but 2 were found的方案有如下几种:

①方案1:通过名称来自动注入,定义的变量名称和注入的bean的名称是一样的。

②方案2:使用@Qualifier限定符号,在类上添加@Qualifier注解限定注入类。

③方案3:使用@Primary定义首选项,只需要在注入Bean上添加@Primary定义首选项,那么该Bean就会作为首选进行注入。

07.《利用Spring扩展点模拟FeignClient实现远程调用(干货满满)「扩展点实战系列」》

https://mp.weixin.qq.com/s/Y6sjVA7vahDGSAudx50uQA

用过MyBatis的注解编程和@FeignClient,是不是有一点好奇,我们写的代码都是接口,也没有具体的实现类,接口怎么能执行呢?底层到底发生了事情?

08.《深入FeignClient源码吃透Spring扩展点「扩展点实战系列」》

https://mp.weixin.qq.com/s/9Gq1XJwFMaxQyPtuau5s_w

增加@EnableFeignClients注解开始,当我们启动应用的时候,系统就会扫描所有的包里面带有@FeignClient接口的类,并为此生成代理对象,这个代理对象会设置我们写的各种配置与拦截器,并最终注入到Spring的IOC容器中,当我们调用@FeignClient接口的类的方法时,其实是调用生成的代理类的方法。

09.《SpringBoot配置文件内容加密,实现敏感信息保护「扩展点实战系列」》

https://mp.weixin.qq.com/s/iV1zWfrq9M9IFV8-KcvPKw

配置文件中,其实包含着大量与安全相关的敏感信息,比如:数据库的账号密码、一些服务的密钥等。这些信息一旦泄露,对于企业的重要数据资产,那是相当危险的。所以,对于这些配置文件中存在的敏感信息进行加密,是每个成熟开发团队都一定会去的事。

10.《利用Spring扩展点对敏感信息加密解密,一文集齐n多知识点「扩展点实战系列」》

https://mp.weixin.qq.com/s/z4TAaroiRHrcN5bjuLjBdg

使用到的扩展点是BeanFactory的后处理器BeanFactoryPostProcessor。

11.《利用Spring扩展点模拟MyBatis的注解编程「扩展点实战系列」》

https://mp.weixin.qq.com/s/i1Buu9PfU8ApM1_Fjya2mQ

接口没有使用Spring注解标识,如何被注册成为Spring Bean?答案:利用Spring的扩展点ImportBeanDefinitionRegistrar动态注册Bean定义。

12.《走进MyBatis源码一探Spring扩展点「知识点多多」「扩展点实战系列」》

https://mp.weixin.qq.com/s/yt7PeOuyqvNJ6njI_QkUcw

涉及到的Spring扩展点:

(1)@Import用于导入普通类到Spring中,实现扩展点ImportBeanDefinitionRegistrar,核心的方法是registerBeanDefinitions。

(2)

BeanDefinitionRegistryPostProcessor:BeanDefinitionRegistryPostProcessor这个接口继承了BeanFactoryPostProcessor。从名字上来看, 这个接口是BeanDefinitionRegistry的后处理器, 我们先介绍下BeanDefinitionRegistry。

(3)InitializingBean:在Spring Bean初始化后自动做一些事情。

(4)ApplicationContextAware:用来获取ApplicationContext的一个扩展类,ApplicationContext应该是很多人非常熟悉的一个类了,就是spring上下文管理器,可以手动的获取任何在spring上下文注册的bean。

(5)BeanNameAware:BeanNameAware接口是为了让自身Bean能够感知到,获取到自身在Spring容器中的id或name属性。

Spring自动调用。并且会在Spring自身完成Bean配置之后,且在调用任何Bean生命周期回调(初始化或者销毁)方法之前就调用这个方法。换言之,在程序中使用BeanFactory.getBean(String beanName)之前,Bean的名字就已经设定好了。

执行顺序上,先执行BeanNameAware接口的setBeanName方法,再执行ApplicationContextAware接口的setApplicationContext方法。

(6)FactoryBean:FactoryBean 就是一个工厂Bean,相当于将工厂类放到了Spring中管理、当获取此Bean的时候返回的是此工厂生成的Bean。

13.《走进SpringBoot源码吃透Spring扩展点「扩展点实战系列」》

https://mp.weixin.qq.com/s/Rj0v-tm3wYwuN-Ivy7Q0_A

走进Spring Boot源码,来看一下这些扩展点都是在Spring Boot的哪个地方被调用的。

2.5 外部jar包及打包

(1)如何添加外部jar包?

(2)如何打包外部jar包?

SpringBoot添加外部jar包及打包(亲测有效) - 第452篇
SpringBoot引入外部jar包,项目打包成war包发布(亲测有效) - 第453篇

开发工具中SpringBoot使用外置Tomcat启动 (亲测有效)-第458篇
 

三、视频集合

对于我自身,今年并没有出新的视频,有些视频的版本有点老了,在意的就不要拍了,有些视频技术是和版本无关的,比如《大话设计模式之爱你一万年》、《分布式事务解决方案》更多的是一种思维上和方案上的,一通百通。

大话设计模式之爱你一万年

大话设计模式之爱你一万年:https://dwz.cn/wqO0MAy7

JVM内存模型调优实战

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring从入门到精通

Spring入门到精通:https://t.cn/A6bFcDh4

权限管理之Spring Secuirty

通过该课程可以学习到:

(1)、基于内存的认证和角色授权;

(2)、基于MySQL的认证和权限控制;

(3)、基于URL的动态权限控制;

(4)、自定义Filter/动态权限刷新;

(5)、Remember-Me方案讲解;

(6)、动态刷新权限的n中方案;

SpringSecurity5.0视频:http://t.cn/EwlLjHh

分库分表解决方案实战

通过该课程可以学习到:

(1)、了解Sharding-JDBC以及分库分表基本概念;

(2)、在SpringBoot使用Sharding-JDBC;

(3)、读写分离;

(4)、绑定表-笛卡尔积;

(5)、分页优化方案;

(6)、强制分片路由;

(7)、广播表;

(8)、数据脱敏;

Sharding-JDBC分库分表实战:http://t.cn/E4lpD6e

最后祝大家2023年,在新的一年里:多一点欢笑,少一点烦恼:

我要赚钱钱,我要暴富富

我要超帅超牛超酷酷,我要钱多多

我要买车车,我要带小姐姐兜风去唱歌

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

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

相关文章

2023-1-16 刷题情况

子相似性 III 题目描述 一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,“Hello World” ,“HELLO” ,“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英文字母。…

K8s 如何通过 ConfigMap 来配置 Redis ?

1、创建 ConfigMap YAML 配置文件 cat <<EOF >./example-redis-config.yaml apiVersion: v1 kind: ConfigMap metadata:name: example-redis-config data:redis-config: "" EOF2、创建 ConfigMap 资源 kubectl apply -f example-redis-config.yaml创建完成…

VMware 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作的解决方法

在电脑上安装VMWare&#xff0c;运行虚拟机发现提示无法执行64位操作。本人系统是windows10,64位系统。错误提示&#xff1a; 已将该虚拟机配置为使用 64 位客户机操作系统。但是&#xff0c;无法执行 64 位操作。 此主机支持 Intel VT-x&#xff0c;但 Intel VT-x 处于禁用状态…

HTML的body元素

&#xff08;1&#xff09;HTML的body元素 body是一个简单的HTML稳定最基本的必需元素。 <body> 标签定义文档的主体。 <body> 元素包含文档的所有内容&#xff08;比如文本、超链接、图像、表格和列表等等&#xff09;。 &#xff08;2&#xff09;HTML 网页结…

HTML零基础教程,九大知识点带你玩转前端(上)

博主&#xff1a;冰小九&#xff0c;新人博主一只&#xff0c;欢迎大佬前来指导 冰小九的主页喜欢请给个三连加关注呀&#xff0c;谢谢&#x1f337;&#x1f337;&#x1f337;三连加关注&#xff0c;追文不迷路&#xff0c;你们的支持就是我最大的动力&#xff01;&#xff0…

【自学Docker 】Docker管理命令大全(上)

文章目录Docker create命令Docker create命令概述Docker create命令语法Docker create命令参数列表案例创建容器运行容器Docker create命令总结Docker exec命令Docker exec命令概述Docker exec命令语法Docker exec命令参数列表案例查看文件创建文件进入容器Docker exec命令总结…

Dubbo 自适应SPI

Dubbo 自适应SPI 1. 原理 在 Dubbo 中&#xff0c;很多拓展都是通过 SPI 机制进行加载的&#xff0c;比如 Protocol、Cluster、LoadBalance 等。有时&#xff0c;有些拓展并不想在框架启动阶段被加载&#xff0c;而是希望在拓展方法被调用时&#xff0c;根据运行时参数进行加…

录屏软件无水印免费,分享一款功能强大且免费的录屏软件

市面上多数录屏软件&#xff0c;只能试用版录制几分钟的视频&#xff0c;且带有水印。想要长时间录制电脑屏幕、录制无水印的录屏&#xff0c;需要解锁才可以。那有没有一款录屏软件试用版就能无水印&#xff1f;当然有啦。小编今天给大家分享一款不限制录制时长&#xff0c;且…

springboot整合Freemarker模板引擎

2.2 模板引擎 2.2.1 什么是模板引擎 根据前边的数据模型分析&#xff0c;课程预览就是把课程的相关信息进行整合&#xff0c;在课程预览界面进行展示&#xff0c;课程预览界面与课程发布的课程详情界面一致&#xff0c;保证了教学机构人员发布前看到什么样&#xff0c;发布后…

【Win11 + VSCode配置OpenCV C++一站式开发调试环境教程】

Win11 VSCode配置OpenCV C一站式开发调试环境教程1 下载1.1 版本介绍&#xff1a;1.2 对应三个软件的连接&#xff1a;2 环境配置3 编译1 下载 需要下载三个软件&#xff1a;OpenCV 、MInGW、CMake 1.1 版本介绍&#xff1a; 打开 OpenCV-MinGW-Build&#xff1a;OpenCV-4.…

Android启动流程源码分析(基于Android S)

从上图我们可以清楚的看到Android系统的启动分为以下几个步骤 启动电源以及启动系统 当我们按下电源键时, 引导芯片代码开始从预定义的地方(固化在ROM)开始执行, 加载引导程序到RAM, 然后执行 引导程序 引导程序是在Android操作系统开始运行前的一个小程序. 引导程序是运行的…

图片转PDF怎么弄?这几个方法值得你试一试

PDF是一种特殊的文件格式&#xff0c;它可以在任何设备和平台上进行传输&#xff0c;并且能够保证文件版式不被修改&#xff0c;此外&#xff0c;还可以兼容不同的系统&#xff0c;因为它的这些优势&#xff0c;大多数的人就喜欢将自己编辑好的WORD、PPT、EXCEL、图片等文件转换…

MySQL InnoDB的MVCC实现机制

MySQL InnoDB的MVCC实现机制1.MVCC概述2.MVCC的实现原理隐式字段undo日志Read View(读视图)RR隔离级别的Read View方案1.MVCC概述 什么是MVCC&#xff1f; MVCC&#xff0c;即多版本并发控制。MVCC是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对…

YOLOV8——快速训练指南(上手教程、自定义数据训练)

概述 本篇主要用于说明如何使用自己的训练数据&#xff0c;快速在YOLOV8 框架上进行训练。当前&#xff08;20230116&#xff09;官方文档和网上的资源主要都是在开源的数据集上进行测试&#xff0c;对于算法“小白”或者“老鸟”如何快速应用到自己的项目中&#xff0c;这…

操作系统IO控制方式

操作系统I&O控制方式 视频地址&#xff1a;https://www.bilibili.com/video/BV1YE411D7nH?p64 I&O设备按照信息交换的单位可以分为以下两类&#xff1a; 块设备 数据传输的基本单位是块&#xff0c;传输速率较高&#xff0c;可寻址&#xff0c;可随机读写任意一块。…

78.循环神经网络(RNN)

1. 潜变量自回归模型 2. 循环神经网络 计算损失是比较ot和xt之间来计算损失&#xff0c;但是xt是用来更新ht&#xff0c;使得其挪到下一个单元。 用一个额外的whh来存时序信息。 3. 使用循环神经网络的语言模型 4. 困惑度&#xff08;perplexity&#xff09; 5. 梯度剪裁 g表…

《Stealth秘密行动》游戏开发记录

游戏开发的学习记录项目&#xff1a;Stealth秘密行动开始时间&#xff1a;2022.12.30一、新学到的&#xff1a;二、遇到的问题&#xff1a;三、成品部分展示&#xff1a;游戏开发的学习记录⑧ 项目&#xff1a;Stealth秘密行动 开始时间&#xff1a;2022.12.30 &#xff08;…

数据分析-深度学习Pytorch Day6

卷积神经网络如何运用到图片分类问题感受野 Receptive Field步长Stride填充Padding参数共享share parameter最大池化MaxPoolingCNN全过程仅个人理解学习引言CNN卷积神经网络最初主要是用于计算机视觉和图像处理中&#xff0c;比如图像分类&#xff1a;最终的分类数绝对维度&…

【代码随想录】哈希表-golang

哈希表 from 代码随想录 hash表解法可以是slice,map…&#xff0c;目的是将时间复杂度降为O(1) 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 排序 思路&#xff1a;直接重新声明字符的字节形式&#xff0c;然后对其进行…

Vue的依赖收集和性能问题

什么是依赖收集Vue能够实现当一个数据变更时&#xff0c;视图就进行刷新&#xff0c;而且用到这个数据的其他地方也会同步变更&#xff1b;而且&#xff0c;这个数据必须是在有被依赖的情况下&#xff0c;视图和其他用到数据的地方才会变更。 所以&#xff0c;Vue要能够知道一个…