摘要:
添加生成元数据信息的依赖 配置类 作为自动化配置项, [启动@EnableConfigurationProperties] 在resources/META-INF/spring.factories下配置自动注入类 最后一步打包成jar,放到私服上.供其他项目引用 注意,打包时会在spring.fac 阅读全文
摘要:
一, 第一个待注入类 方法一, 实现接口ImportSelectort 方法二, 实现接口ImportBeanDefinitionRegistrar, 自定义Enable注解, 将CacheService, LoggerService加载到Spring-boot项目中 阅读全文
摘要:
一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。 具体说: 物理层:网卡,网线,集线器,中继器,调制解调器 数据链路层:网桥,交换机 网络层:路由器 网关工作在第四层传输层及其以上 物理层: 利用传输介质为数据链 阅读全文
摘要:
进程间通信方式有哪些 为什么使用Executor框架? 使用Executor线程池框架的优点 1、能复用已存在并空闲的线程从而减少线程对象的创建从而减少了消亡线程的开销。 2、可有效控制最大并发线程数,提高系统资源使用率,同时避免过多资源竞争。 3、框架中已经有定时、定期、单线程、并发数控制等功能。 阅读全文
摘要:
转自: https://www.jianshu.com/p/d8eeb31bee5c 前言 在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),内部实现 阅读全文
摘要:
Condition主要是为了在J.U.C框架中提供和Java传统的监视器风格的wait,notify和notifyAll方法类似的功能。 AQS等待队列与Condition队列是两个相互独立的队列 await()就是在当前线程持有锁的基础上释放锁资源,并新建Condition节点加入到Conditi 阅读全文
摘要:
重入锁的特性, 避免死锁, 如果有锁的话, 不用重新加锁, 直接增加锁的次数.. Synchronize, ReentrantLock都是重入锁. 读写锁, ReentrantReadWriteLock里面有两把锁, 读锁和写锁,适用于读多写少的情景. 读->读会共享 读->写 互斥 写->写 互斥 阅读全文
摘要:
为什么会有内存屏障 每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一个变量的缓存值不同。 用volatile关键字修饰变量可以解决上述问题,那么volat 阅读全文
摘要:
MESI协议中的状态 CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示): M: 被修改(Modified) 该缓存行只被缓存在该CPU的缓存中,并且是被修改过的(dirty),即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其它CPU 阅读全文
摘要:
synchronized 的基本认识 在多线程并发编程中 synchronized 一直是元老级角色,很 多人都会称呼它为重量级锁。但是,随着 Java SE 1.6 对 synchronized 进行了各种优化之后,有些情况下它就并不 那么重,Java SE 1.6 中为了减少获得锁和释放锁带来的 阅读全文