摘要:
HashMap 类结构 继承AbstractMap<K,V> 实现Map<K,V> Map基本方法 实现Cloneable 浅克隆 实现Serializable 序列化 成员变量 // 默认初始化容量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 阅读全文
摘要:
ArrayListy 类结构 继承AbstractList 实现List list基本方法 实现RandomAccess 支持随机访问(下标) for效率高于迭代器(对比LinkedList) 实现Cloneable 浅克隆 实现Serializable 序列化 成员变量 默认容量 private 阅读全文
摘要:
AQS AQS可以重写的方法 // 排他锁 protected boolean tryAcquire(int arg) { return super.tryAcquire(arg); } protected boolean tryRelease(int arg) { return super.try 阅读全文
摘要:
河北王校长JVM Class文件 文件结构 魔数(Magic Number):class文件的前4个字节是固定的魔数,用于标识文件类型为class文件。魔数的值为0xCAFEBABE。 版本信息:紧随魔数后的4个字节表示class文件的次版本号和主版本号。Java的版本号从45开始,每个新版本增加1 阅读全文
摘要:
volatile 作用 保障可见性(线程嗅探、MESI) 将当前处理器缓存行的数据写回到系统内存 使在其他CPU里缓存了该内存地址的数据无效 防止指令重排 在每个volatile写操作的前面插入一个StoreStore屏障。禁止volatile写之前写 在每个volatile写操作的后面插入一个St 阅读全文
摘要:
【IT老齐043】线上JVM OOM排查 基本信息 # 锁定进程pid jps # 查看空间占用 1秒1次 10次 jstat -gcutil pid 1000 10 Arthas curl -O https://arthas.aliyun.com/math-game.jar java -jar m 阅读全文
摘要:
【IT老齐042】生产环境JVM参数与垃圾回收GC 最大堆和最小堆大小 GC收集器 新生代(年轻代)大小 JVM选项规则 +代表开启/-代表关闭 java -version 标准选项,任何版本JVM/任何平台都可以使用 java -Xms10m 非标准选项,部分版本识别 java -XX:+Prin 阅读全文
摘要:
【IT老齐040】MySQL自增主键 业务主键更浪费空间 业务主键无顺序,可能会造成写入数据时需要更长组织索引 业务主键如果是字符串,在分库分表时,无法直接取模运算 阅读全文
摘要:
【IT老齐039】应用发布与持续集成(CI) 阅读全文
摘要:
【IT老齐038】MQ中间件实现可靠性投递 可靠性保证 发送阶段,遇到高延迟,Producer会多次重发消息,直到Broker ack确认,过程中Broker会自动去重,超时Producer产生异常,应用进行捕获提示。 存储阶段,Broker先刷盘再ack确认,即便ack失败消息不会丢失,多次重试直 阅读全文
摘要:
【IT老齐037】禁用JDK序列化 兼容性差,不支持异构系统 安全性,未经过加密,易被篡改 性能差,占用空间大 其他方案 第三方的序列化方法能解决复杂对象的循环引用问题:要现在本地解决循环引用再考虑序列化问题。Gson碰到循环引用直接报错,Jackson可以设置迭代层级,但会导致对象关系不完整 Sp 阅读全文
摘要:
【IT老齐036】MySQLS索引选择性陷阱 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决 说明:索引文件具有 B-Tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引 索引选择性陷阱 命中的索引值超过总量25%,就可能产生索引选择性陷阱,导致全表扫描 以Explain执 阅读全文
摘要:
【IT老齐035】蓝绿、红黑、灰度发布 尽可能减少服务停机时间 控制新版本带来的质量风险 全量发布 蓝绿部署 红黑部署 与蓝绿部署相比,红黑部署可以充分利用了云计算的弹性伸缩优势,从而获得了两个收益:简化了流程;避免了在升级的过程中,由于只有一半的服务器提供服务,而可能导致的系统过载问题 增量发布 阅读全文
摘要:
【IT老齐033】Docker一键发布Nginx-Tomcat-MySQL应用集群 创建虚拟网段 docker network create -d bridge my-bridge MySQL容器 docker run -p 3306:3306 --network my-bridge --name 阅读全文
摘要:
【IT老齐032】Docker容器化 镜像: 镜像是文件,是只读的,提供了运行程序完整的数据是应用程序的集装箱 容器: 镜像的运行环境,迷你的linux操作系统,由Docker负责创建,容器之间彼此隔离 阅读全文
摘要:
【IT老齐031】微服务架构设计 分布式架构的发展过程 什么是微服务架构 所谓微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并以轻量级的机制(通常是HTTP RESTful API)的方式进行通信,这些服务围绕着业务能力所建立的,并且可以由完全自动化的部署 阅读全文
摘要:
【IT老齐030】MySQL MVCC机制 在MySQLInnoDB存储引擎下,RC、RR基于MVCC(多版本并发控制) 进行并发事务控制 MVCC是基于“数据版本”对并发事务进行访问 场景 UNDO_LOG版本链 UNDO LOG版本链不是立即删除,MySQL确保版本链数据不再被“引用”后再进行删 阅读全文
摘要:
【IT老齐029】MySQL脏读、幻读、不可重复读 讲解脏读、不可重复读、幻读的区别与出现场景 脏读指读取到其他事务正在处理的未提交数据 不可重复读指并发更新时,另一个事务前后查询相同数据时的数据不符合预期 幻读指并发新增、删除这种会产生数量变化的操作时,另一个事务前后查询相同数据时的不符合预期 通 阅读全文
摘要:
【IT老齐028】Redis Cluster集群模式 Cluster模式是Redis3.0开始推出 采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接 官方要求:至少6个节点才可以保证高可用,即3主3从;扩展性强更好做到高可用 各个节点会互相通信,采用gossip协议交换节 阅读全文
摘要:
【IT老齐027】经典Web高可用架构 dns解析域名轮询到nginx服务器来保证资源高利用率 vip+keepalived实现ip漂移来保证高可用 nginx负载均衡到tomcat实现高可用 DNS轮询的缺点 只负责IP轮询获取,不保证节点可用 DNSIP列表变更有延时 外网IP占用严重 阅读全文