• 0720~放假自习


    spring boot自动装配原理?

    springboot有一个最重要的注解,@SpringbootApplication,点进去查看,它是一个组合注解,里面有三个注解,@Spring boot Configuration、@ComponentScan、@EnbleAutoConfiguration,其中@EnbleAutoConfiguration最为重要,点进去它里面有一个@Import的注解,里面有一个类,有一个方法selectImports,里面会读取META-INFO下面spring.factories所有需要自动装配的文件,然后会通过META-INFO下面的auto configuration-metadata.properties进行过滤,最后返回的才是需要自动装配的一些对象;

    自定义stater操作成功!

     操作步骤:

    1.模仿其他依赖,首先导入springboot两个相关的依赖,

    2.编写业务,然后交给ioc容器;

    3.在resources文件下新建META-INFO文件夹并在META-INFO下面新建spring.factories文件,配置文件的全限定名;

    4.最后install打成jar包,在其他依赖中导入即可使用;

     1.模仿其他依赖,首先导入springboot两个相关的依赖,

    1. <parent>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-parentartifactId>
    4. <version>2.0.5.RELEASEversion>
    5. parent>
    6. <dependencies>
    7. <dependency>
    8. <groupId>org.springframework.bootgroupId>
    9. <artifactId>spring-boot-starterartifactId>
    10. dependency>
    11. dependencies>

     2.编写业务,然后交给ioc容器;

    1. //业务类
    2. public class Print {
    3. public void myPrint(String msg){
    4. System.out.println("这是我自定义打印的信息:"+msg);
    5. }
    6. }
    7. -----------------------------------------------------------------------
    8. //配置类
    9. @Configuration
    10. public class PringConfig {
    11. @Bean
    12. public Print print(){
    13. return new Print();
    14. }
    15. }

     3.在resources文件下新建META-INFO文件夹并在META-INFO下面新建spring.factories文件,配置文件的全限定名;

    4.最后install打成jar包,在其他依赖中导入即可使用;

     


    在其他类中导入,测试即可!!!

     


    CAS(比较并交换):自旋锁,也是属于一种乐观锁;

    属于JUC包,一个do while 优雅的解决了并发的问题;底层代码如下:

    1. public final int getAndAddInt(Object var1, long var2, int var4) {
    2. int var5;
    3. do {
    4. var5 = this.getIntVolatile(var1, var2);
    5. } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
    6. return var5;
    7. }

    参数描述:

    var1:该对象本身;

    var2:该对象值的引用地址;

    var4:需要增加或者修改的变量;

    var5:用var1和var2再内存中找到的真实的值;


    this.compareAndSwapInt(var1, var2, var5, var5 + var4);

    把var1和var2与var5进行比较,如果相同则返回var5+var4;

                                                   如果不同则继续取值再比较,直到相等为止;

    乐观锁会出现的问题:ABA问题;

    如果A是 AUser1对象,进行比较交换后换成了BUser1对象,又比较交换成了AUser2,对象,此时AUser2对象就不是之前那个AUser1对象了,这就是常见的ABA问题;

    解决方法:加版本号;在每次更新的时候把版本号加一,例如A B A-->A1 B2 A3;

  • 相关阅读:
    vue v-model与.sync详解
    基于深度学习的中文情感分析系统python flask
    fatal error C1083: 无法打开包括文件: “stdafx.h”: No such file or directory
    随笔一
    这个软件可无限制免费领取金币,领取后即可自由实现AI文生图,AI Chat及其AI文生PPT等AI功能
    《花雕学AI》13:早出对策,积极应对ChatGPT带来的一系列风险和挑战
    数组复制之System.arraycopy
    Codeforces Round #476 (Div. 2)——D. Single-use Stones(二分做法)
    linux系统通过docker安装python的jieba,如何找到jieba路径替换分词文件
    【一条命令搞定rabbitmq的安装与配置】
  • 原文地址:https://blog.csdn.net/m0_67574688/article/details/125892074