Spring IOC源码深度剖析:Spring IoC循环依赖问题
循环依赖其实就是循环引⽤,也就是两个或者两个以上的 Bean 互相持有对⽅,最终形成闭环。⽐如A依赖于B,B依赖于C,C⼜依赖于A。
Spring Boot开发者工具:自动重启、LiveReload、远程开发、默认的开发时属性值
Spring Boot 1.3引入了一组新的开发者工具,可以让你在开发时更方便地使用Spring Boot,包括如下功能。
SpringBoot:结合 SpringBoot 与 Grails 3
Grails一直都是构建于Spring、Groovy、Hibernate和其他巨人肩膀之上的高阶框架。
SpringBoot:定制 Actuator
虽然Actuator提供了很多运行中Spring Boot应用程序的内部工作细节,但难免和你的需求有所偏差。也许你并不需要它提供的所有功能,想要关闭一些也说不定。或者,你需要对Actuator 稍作扩展,增加一些自定义的度量信息,以满足你对应用程序的需求。
MyCat分片:分片规则的十四种算法详细解读&代码实现(下)
一、应用指定算法 由运行阶段由应用自主决定路由到那个分片 , 直接根据字符子串(必须是数字)计算分片号 , 配置如下 :
MyCat分片:分片规则的十四种算法详细解读&代码实现(上篇)
MyCat的分片规则配置在conf目录下的rule.xml文件中定义 ;
Docker 常见手写面试题分享,给你安排的明明白白!
一、镜像相关1. 如何备份系统中所有的镜像?答首先, 备份镜像列表可以使用docker images | awk 'NR>l{prin七$1":"$2} ' | sort > images.list。导出所有镜像为当前目录下文件, 可以使用如下命令:while read img; do echo
MyCat分片:水平拆分实例解析和代码实现!
根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。
MySql 数据库 Schema 设计的性能优化:规范的对象命名
就像编程语言各自的一些不成文编码基本规范一样,虽然在最初使用的时候并看不错太多的利益,反而会被人认为是一种束缚,但是当每一个人在接手维护一段编写很不规范的代码的时候,我估计大部分人都会非常郁闷,甚至在心里暗骂当初的编写者。其实任何系统都一样,没有任何规范可循,完全一个天马行空的作风,只会给后人(甚至可能是自己)留下一个让人摸不着头脑的烂摊子,难以维护。
面试官:你如何利用 MySQL Cluster 实现整体高可用?
本文,主要是介绍一下如何利用 MySQL Cluster 的特性来提高我们系统的整体可用性。
MySql架构设计:如何合理利用第三方 Cache 解决方案?
使用较为成熟的第三方解决方案最大的优势就在于在节省自身研发成本的同时,还能够在互联网上面找到较多的文档信息,帮助我们解决一些日常遇到的问题还是非常有帮助的。目前比较流行的第三方 Cache 解决方案主要有基于对象的分布式内存 Cache 软件 Memcached 和嵌入式数据库编程库 Berkeley DB 这两种。下面我将分别
MyCat分片:垂直拆分实例解析和代码实现
一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分。 在业务系统中, 有以下表结构 ,但是由于用户与订单每天都会产生大量的数据, 单台服务器的数据存储及处理能力是有限的, 可以对数据库表进行拆分, 原有的数据库表:
同样工作十几年,为什么有的人成为大厂架构师,有的人失业?
在软件开发招聘中,“有多少年工作经验”是一个重要的招聘指标。但实际上,技术能力和工作年限并不是正相关的,特别是工作三五年以后,很多人的技术能力进步就几乎停滞了。
详解Java 虚拟机(第⑥篇)——内存分配与回收策略
一、Minor GC 和 Full GC Minor GC:回收新生代,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。Full GC:回收老年代和新生代,老年代对象其存活时间长,因此 Full GC 很少执行,执行速度会比 Minor GC 慢很多。 二、内存分配策略1. 对象优先在 Eden 分配 大多数情况下,对象在新生代 Eden 上分配
详解Java 虚拟机(第⑤篇)——垃圾收集
垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。 一、判断一个对象是否可被回收1. 引用计数算法 为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。 在两个对象出现循环引用的情况下,此时引用计数器
详解Java 虚拟机(第④篇)——8 种基本类型的包装类和常量池
Java 基本类型的包装类的大部分都实现了常量池技术, 即Byte,Short,Integer,Long,Character,Boolean; 这 5 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据, 但是超出此范围仍然会去创建新的对象。两种浮点数类型的包装类 Float , Double 并没有实现常量池技术。valueOf() 方法的实现比较简单,就是先判断值是否在
详解Java 虚拟机(第②篇)——HotSpot 虚拟机对象
一、对象的创建对象的创建步骤: 1. 类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用, 并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。 如果没有,那必须先执行相应的类加载过程。 2. 分配内存 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。 对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务
详解Java 虚拟机(第①篇)——运行时数据区域
一、程序计数器(Program Counter Register) 当前线程所执行的字节码行号指示器(逻辑)通过改变计数器的值来选取下一条需要执行的字节码指令和线程一对一的关系,即“线程私有”对 Java 方法计数,如果是 Native 方法则计数器值为 Undefined只是计数,不会发生内存泄漏 二、Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表
详解Java 容器(完结篇)——详解容器的设计模式、List、Map、并发容器
开门见山的说,本文就是对之前的关于Java容器的文章的一个总结;没有别的意思,简单做个笔记 概览详解Java 容器(第①篇)——概览 设计模式详解Java 容器(第②篇)——容器中的设计模式 源码分析——List详解Java 容器(第③篇)——容器源码分析 - List 源码分析——Map详解Java 容器(第④篇)——容器源码分析 - Map 并发容器详解Java 容器(第⑤篇)—
详解Java 容器(第⑤篇)——容器源码分析 - 并发容器
如果没有特别说明,以下源码分析基于 JDK 1.8。 CopyOnWriteArrayList1.读写分离 写操作在一个复制的数组上进行,读操作还是在原始数组中进行,读写分离,互不影响。 写操作需要加锁,防止并发写入时导致写入数据丢失。 写操作结束之后需要把原始数组指向新的复制数组。 public Boolean add(E e) { //加锁 final Ree