摘要: Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准备就绪的运行环境。其中 Bean 缓存池为 HashMap 实现 BeanDefiniti 阅读全文
posted @ 2022-07-19 23:08 花心大萝卜li 阅读(15) 评论(0) 推荐(0)
摘要: 直接赋值复制 直接赋值。在 Java 中,A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是说 a1 和 a2 指向的是同一个对象。因此,当 a1 变化的时候,a2 里面的成员变量也会跟着变化。 浅拷贝(复制引用但不复制引用的对象) 创建一个新对象,然后将当前对象的非静态字段复制到该新 阅读全文
posted @ 2022-07-19 22:51 花心大萝卜li 阅读(54) 评论(0) 推荐(0)
摘要: 保存(持久化)对象及其状态到内存或者磁盘 Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时, 这些对象才可能存在,即,这些对象的生命周期不会比 JVM 的生命周期更长。但在现实应用中, 就可能要求在JVM 停止运行之后能够保存(持久化)指定的对象, 阅读全文
posted @ 2022-07-19 22:48 花心大萝卜li 阅读(238) 评论(0) 推荐(0)
摘要: 静态内部类,成员内部类,局部内部类,匿名内部类四种 静态内部类 定义在类内部的静态类,就是静态内部类。 public class Out { private static int a; private int b; public static class Inner { public void pr 阅读全文
posted @ 2022-07-19 22:41 花心大萝卜li 阅读(72) 评论(0) 推荐(0)
摘要: 在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法; 并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java 语言的反射机制。 反射的应用场合 编译时的类型由声明对象时实用的类型来决定,运行时的类型由实际赋值给 阅读全文
posted @ 2022-07-19 22:31 花心大萝卜li 阅读(22) 评论(0) 推荐(0)
摘要: 位置不同 1.throws 用在函数上,后面跟的是异常类,可以跟多个;而 throw 用在函数内,后面跟的是异常对象。 功能不同: 2.throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw 抛出具体的问题对象,执行到throw,功能就已经结束了,跳转到调 阅读全文
posted @ 2022-07-19 22:18 花心大萝卜li 阅读(55) 评论(0) 推荐(0)
摘要: CAS当且仅当内存值等于预期值时,才会将内存值值设为新值 当多个线程同时使用 CAS 操作一个变量时,只有一个会胜出,并成功更新,其余均会失败。失败的线程不会被挂起,仅是被告知失败,并且允许再次尝试,当然也允许失败的线程放弃操作。基于这样的原理, CAS 操作即使没有锁,也可以发现其他线程对当前线程 阅读全文
posted @ 2022-07-19 22:16 花心大萝卜li 阅读(166) 评论(0) 推荐(0)
摘要: 减小锁粒度 减小锁粒度是指缩小锁定对象的范围,从而减小锁冲突的可能性,从而提高系统的并发能力。减小锁粒度是一种削弱多线程锁竞争的有效手段,这种技术典型的应用是 ConcurrentHashMap(高性能的 HashMap)类的实现。对于 HashMap 而言,最重要的两个方法是get 与set 方法 阅读全文
posted @ 2022-07-19 22:05 花心大萝卜li 阅读(267) 评论(0) 推荐(0)
摘要: 两者的共同点: 1.都是用来协调多线程对共享对象、变量的访问 2.都是可重入锁,同一线程可以多次获得同一个锁 3.都保证了可见性和互斥性 两者的不同点: 1.ReentrantLock 显示的获得、释放锁,synchronized 隐式获得释放锁 2.ReentrantLock 可响应中断、可轮回, 阅读全文
posted @ 2022-07-19 22:01 花心大萝卜li 阅读(1657) 评论(0) 推荐(0)
摘要: ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。 ThreadLocalMap(线程的一个属性) 1.每个线程中都有一 阅读全文
posted @ 2022-07-19 21:58 花心大萝卜li 阅读(71) 评论(0) 推荐(0)
摘要: Java 语言提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程。volatile 变量具备两种特性,volatile 变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile 类型的变量时总会返回最新写入的值。 变量可见性 其一是保证 阅读全文
posted @ 2022-07-19 21:52 花心大萝卜li 阅读(112) 评论(0) 推荐(0)
摘要: CountDownLatch(线程计数器 ) CountDownLatch 类位于java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执行,此时就可以利用 CountDownLatch 来实现这种功能了。 Cyc 阅读全文
posted @ 2022-07-19 20:24 花心大萝卜li 阅读(54) 评论(0) 推荐(0)
摘要: 1.corePoolSize:指定了线程池中的线程数量。 2.maximumPoolSize:指定了线程池中的最大线程数量。 3.keepAliveTime:当前线程池数量超过 corePoolSize 时,多余的空闲线程的存活时间,即多次时间内会被销毁。 4.unit:keepAliveTime 阅读全文
posted @ 2022-07-19 20:20 花心大萝卜li 阅读(98) 评论(0) 推荐(0)
摘要: 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为 别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新), 如果失败则要重复读-比较-写的操作 阅读全文
posted @ 2022-07-19 20:06 花心大萝卜li 阅读(71) 评论(0) 推荐(0)
摘要: 1.对于sleep()方法,我们首先要知道该方法是属于 Thread 类中的。而 wait()方法,则是属于Object 类中的。 2.sleep()方法导致了程序暂停执行指定的时间,让出 cpu 该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 3.在调用 sleep 阅读全文
posted @ 2022-07-19 19:39 花心大萝卜li 阅读(77) 评论(0) 推荐(0)
摘要: 1.新建状态(NEW) 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配 内存,并初始化其成员变量的值 。 2.就绪状态(RUNNABLE) 当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和 程序计数器,等待调度运 阅读全文
posted @ 2022-07-19 19:34 花心大萝卜li 阅读(62) 评论(0) 推荐(0)
摘要: newCachedThreadPool:创建可缓存的线程池,如果线程池中的线程在60秒未被使用就将被移除,在执行新的任务时,当线程池中有之前创建的可用线程就重用可用线程,否则就新建一条线程 newFixedThreadPool:创建可重用且固定线程数的线程池,如果线程池中的所有线程都处于活动状态,此 阅读全文
posted @ 2022-07-19 19:30 花心大萝卜li 阅读(119) 评论(0) 推荐(0)
摘要: 1我们先克隆当前的虚拟机 修改ip地址 2 在idea中编写yml语句 #3.8.5-management-alpine 带图形化界面 体积小适合开发环境 #在搭建rabbitMQ集群时 必须保证 cookie必须一直 值随便 #5272 是通信端口 15272是图形化界面 4369 集群之间交互端 阅读全文
posted @ 2022-07-19 13:05 花心大萝卜li 阅读(145) 评论(0) 推荐(0)
摘要: 基于消费者 reject requeue设置为false 消息进入死信队列 # 应用名称 spring.application.name=rabbitmq # 应用服务 WEB 访问端口 server.port=8080 spring.rabbitmq.host=192.168.1.137 spri 阅读全文
posted @ 2022-07-19 10:55 花心大萝卜li 阅读(46) 评论(0) 推荐(0)