08 2022 档案
摘要:##缓存一致性 数据库与缓存 这个问题是个坑,无论是先操作数据库还是缓存都不可能100%保证一致性,一般都是先操作数据库,后删除缓存,缓存操作比较快, 不一致时间窗口会小很多,有订阅binlog的也一样不能保证100%一致性。 但任何问题都可以通过中间层解决,在上方再去抽象出单独的锁资源,下游完成之
阅读全文
摘要:kafka + zookeeper kafka官网:https://kafka.apache.org/documentation/#brokerconfigs_offsets.commit.required.acks kafka生产环境配置详解 JVM配置:建议6G 环境变量 某公司生产环境配置 k
阅读全文
摘要:##Kafka 概念解释 topic:队列 producer:生产者,指发送消息端 consumer:消费者,消息消费端 consumer group:消费者组,消息会发给每个消费者组,每个消费者对应一个消费者组 border:kafka服务器 partition:分区 replication-fa
阅读全文
摘要:##分布式事务一致性 CAP,BASE理论,到一致性模型,再到分布式事务。 BASE理论 基本可用(Basically Available):指分布式系统在出现故障时,允许损失部分的可用性来保证核心可用。 软状态(Soft State):指允许分布式系统存在中间状态,该中间状态不会影响到系统的整体可
阅读全文
摘要:CAP选型 一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。 P一定要满足,P是指在众多服务中某一服务出现故障,就叫做P,保障C还是A。 其实选型就是选 是否是CP 也就是说在系统
阅读全文
摘要:##熔断 概念 熔断,当服务在一段时间内失败此次数达到一定比例时,熔断该服务,返回默认消息(降级)。 防止服务雪崩,保证系统整体的健康,提高可靠性,可用性。 三种状态:半开,开启,关闭 开启之后会直接走降级方法,一段时间就会变为半开,放一些请求如果成功就为关闭状态,失败则继续变为开启状态。一直断时间
阅读全文
摘要:##限流概念 先聊一下生态系统,一个生态系统的能力是有限的,比如说只能容纳多少生物,多少物质消耗,生态系统才能维持平衡。 微服务集群相当于生态系统,限流阈值是当前系统所能处理的最大能力,所以限流是为了系统稳定性。 个性化一点就是,某些接口,动态修改,实现从入口限制住流量。 常见限流:线程池,接口调用
阅读全文
摘要:###Java 架构师之路 -不积小流,无以成江海。 Idea插件集合 下载官网 工欲善其事 必先利其器 MyBatisCodeHelperPro 可以在Mapper接口的方法和xml实现之间自由跳转等 RestfulToolkit 可以根据URL跳转到对应的接口方法中去,内置了HTTP请求工具,对
阅读全文
摘要:JAVA线上故障排查全套路 线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jma
阅读全文
摘要:>软件开发流程 - 生命周期 可行性研究:了解用户需求,和运行环境 需求分析 概要设计 详细设计 编码 测试 部署交付 运维 死亡 >软件开发模式 - 原型化方法 需求采集和细化 快速设计 建造原型 客户评价模型 原型加工 产生样品 >软件项目管理 成本估算 风险分析 进度管理 人员管理 质量管理
阅读全文
摘要:jvm调优 目的:减少STW(停止世界) FULL GC 几个小时几周正常 GC ROOT 可达性分析(本地方法栈JNI引用,局部变量,静态变量) 垃圾收集 为什么要设计STW机制? gc root 如果寻找非垃圾不停顿,当确定线程对象为非垃圾之后,线程执行完毕,但是这个时候已经把无用的对象赋值了。
阅读全文
摘要:吞吐量优先的并行收集器 注意事项:64位系统理论上可以设置为无限大,但是一般设置为4G,因为如果再大,JVM进行垃圾回收出现的暂停时间会比较长,这样全GC过长,影响JVM对外提供服务,所以不能太大。一般设置为4G。 注意事项:-Xmn2g:设置年轻代大小为2G。 整个堆大小=年轻代大小+年老代大小+
阅读全文
摘要:运行模式 Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化。 org.apache.coyote.http11.Http11Protocol:BIO org.apache.coyote.http11.Http11NioProtocol:NIO org.apach
阅读全文
摘要:软件设计原则 概述: 软件开发过程中,为了提高系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员应该尽量遵循7大原则来开发程序,从而提高软件开发效率,节约软件开发成本和维护成本。 7大设计原则,侧重点不同 开闭原则是总纲,对扩展开放,对修改关闭。 里氏替换原则,不要破坏类的继承。 依赖倒置
阅读全文
摘要:#Java单位 对象大小相关 1M=1024kb 1kb=1024byte 1byte=8bit 8个二进制是一byte int 4个字节(byte) long--8个字节(byte) double--8个字节(byte) float--4个字节(byte) short--2个字节(byte) ch
阅读全文
摘要:类加载 Person.java文件 javac Person.java 生产 Person.class javap -p -v Person.class 进行类加载: 是要将class文件转换为机器码 实现跨平台(不同的jdk) 加载-链接(验证-准备-解析)-初始化-使用-卸载 >加载:字节码文件
阅读全文
摘要:安装 yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake yum -y install wget httpd-tools vim Nginx 特性 和 优点 1.IO多路复用 epoll (多个IO复用一个) 相对于se
阅读全文
摘要:Nginx 常见问题 1.相同server_name 多个虚拟主机优先级访问 按照nginx读取配置文件显示顺序读取 location 优先级匹配 1.= 进行普通字符精确匹配 也就是完全匹配 精确匹配优先级最高 2.^~ 表示普通字符匹配 使前缀匹配 3.~ \~* 表示执行一个正则匹配 try_
阅读全文
摘要:动静分离演示 通过正则规则 来判断动静分离规则 通过nginx把 动态资源和静态资源进行分离 Rewrite 场景: 1.url访问跳转 支持开发设计 ,兼容性设计(新老接口都要支持),效果展示。 2.SEO优化 伪静态改写 实现搜索引擎的录入 3.维护 后台维护 浏览转发 4.安全 语法: reg
阅读全文
摘要:概念 Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例 缓存、生命周期管理、 Bean 实例代理、事件发布
阅读全文
摘要:概念 使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核 心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点 的多处,而各处基本相似,比如权限认证、日志、事物。AOP 的作用在于分离系统中的各种关注点,将 核心关注
阅读全文
摘要:数据库事务二阶段提交(更新丢失问题)问题复现和解决 数据埋点 t_amout userId userName Amount 0001 张三 100 0002 李四 500 事务A业务:0001向0002转账30元,返回异常情况 1.余额不足 2.系统异常 事务A业务:0001向0002转账50元,返
阅读全文
摘要:问题描述,在工作中一次请求 请求接口一 ,将request保存到了ThreadLocal,调用接口二,而接口二也存入了ThreadLocal,接口二完成之后将ThreadLocal romove 了,在此回到接口一时数据已经没有了,导致了问题. 然后就把接口二的 ThreadLocal.remove
阅读全文
摘要:数据库事务请看<a href="https://www.cnblogs.com/li-xiaotian/p/16594372.html">[深入理解数据库事务]</a> 首先应该向 IOC容器注册 数据库Bean 和 transactionManager Bean 将事务交给Spring管理 代码示
阅读全文
摘要:动态代理是由静态代理发展而来. 类加载:加载-链接-初始化-使用-卸载. 动态代理就是在加载阶段完成的,类加载可以从指定文件,网络 等加载class文件到运行时数据区 java.lang.class. 静态代理:A需要让C做一件事件,但是只有B能联系到C,那我就交给B让他帮忙代理即可。 动态代理是在
阅读全文
摘要:ACID,是用来声明数据库事务的四大特性,即原子性 (Atomicity)、 一致性(Consistency)、隔离性(Isolation) 和 持久性(Durability).原子性: 既然谈到原子性,首先确定的是数据库引擎和事务已经开始了,在工作中事务一般是一组操作的集合,而原子性想要表达的就是
阅读全文
摘要:说一说为什么写博客吧? 工作三年了,在工作中也记录了一些笔记,但是记载不够详细,遇到问题时心理是清晰地,时间一长就有点忘记了。 写博客本身是督促自己学习吧,想把问题思路描述清晰就一定要对问题有很深入的理解。 希望通过博客能达到对个人的提升,也能顺便听大家的意见。因为每个人的思路是不一样的,能集思广益
阅读全文