- 博客(24)
- 收藏
- 关注
原创 dubbo
框架设计理念实战服务端必须配置的 serviceConfig appcationConfig protocolConfig客户端必须配置的 referenceConfig appcationConfigdubbo 依赖 自带包总结timeout 优先级 由低到高
2022-03-07 23:44:04 630
原创 zk 源码
Zkserver:zkClient分布式事务ACID|2pc 3pc 二阶段 三阶段分布式cap 理论CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。Paxos算法:共识算法,选举分布式一致性算法:最终一致性:DNS GOSSIP cassandra强一致性:Paxos(实现非常复杂)
2022-03-07 21:32:24 1964
原创 分布式入门
默认是 持久类型语法 create -s 持久排序 create -e 临时Zk 默认节点就是zookeeperZk 可以存储对象(序列化) 可以存储图片 byte[]Dubbo 就是用的临时节点(session 会话) 不能重复的创建 要动态的注册于发现Session会话 客户端来创建一个和zk服务端的连接的句柄 状态分为connecting,connected,closeWatcher : 客户端注册(getdata get childDate,exist) 服务端触发 (c..
2022-03-07 21:30:14 169
原创 Rocket Mq
一 服务搭建细节二 Rocket Mq 特性详解broker 里面每个topic 都是有四个队列;RocketMQ推荐了几种Broker集群方式,这里的Slave不可写,但可读,类似于Mysql主备方式1. 单个Master这是一种风险比较大的集群方式,因为一旦Borker重启或宕机期间,将会导致这个服务不可用,因此是不建议线上环境去使用的。2. 多个Master一个集群全部都是Master,没有Slave,它的优点和缺点如下:优点:配置简单,单个Master宕机或者是重启维护对应
2022-03-06 23:15:52 971
原创 jedis 客户端详解和源码分析
一,客户端,快速入门1.pom依赖2.jedis 连接二,API 介绍具体看代码jedis .set(“key”,“value”), jedis .append(“key”,“111”), 字符串拼接jedis mset (‘key1,‘value1’,’key2,‘value2’)支持批量操作jedis mget (‘key1,’key2’)支持批量操作三 .源码分析...
2022-03-06 15:44:26 143
原创 redis
一 . redis 基础数据结构和核心原理1.redis 五种基础数据结构string(字符串) list(列表) set(集合) hash (hash) zset(有序集合)原子计数器(单线程) 可以做分布式锁(incrby xxx谁是1谁获取锁,用完释放 decr XXX)redis 存储键值对实际使用的是 hashtable的数据结构(和 hashMap存储一样)二, redis 核心原理RDB 持久化 ,单独fork() 一个子线程 把父线程数据 复制一份,放到文
2022-03-06 00:08:27 321
原创 jvm 类加载器和jvm 性能调休监控工具
一.类加载String 类加载去 加载不了的原因 是c++ 写的 ,类似native 方法全盘负责委托记载机制: 如果一个加载起 加载类A 那么A 类引用的所有类 都是这个加载器加载;双亲委派机制: 一个类加载,首先委托父类加载,找不到的情况下 再自己 去自己路径查找加载. (目的 是为了防止重复加载,防止 篡改)二.jdk 性能调优...
2022-03-04 23:57:02 542
原创 java虚拟机 (JVM)
一.JVM 内存模型jvm 分为三部曲 :类加载 -> 运行数据区->执行引擎堆和方法区属于共享区域程序计数器,本地方法栈,java栈 独享栈,每个java 线程都有一套(a).java 栈栈内部解析:方法栈帧,局部变量表,操作数栈,动态连接(实现类连接接口),方法出口堆:分为年代代(1/3):老年代(2/3):永久代(直接内存,jdk1.8之后叫做元空间 单独的一块虚拟机内存)GC 分为轻GC(年轻代) 和FullGC(老年代) ,java 调优目的让fullGC
2022-03-03 23:59:50 554
原创 mysql 锁
1.表锁(便读)表锁偏向于MYSAIM 存储引擎,开销小,加锁块 无思索,锁的颗粒度大,发生锁冲突的概率高,并发最低手动增加表锁lock table 表名称 read(write) ,表名称2read(write)查看表加过的锁show open tables;删除表锁unlock tables;总结读锁加上之后只能读 ,其他session 可以读 ,但是session 写入会报错;一般用来做表数据迁移;写锁加上之后本 session 可以curd ,但是其他session curd
2022-03-02 23:38:17 192
原创 mysql索引实战篇
索引会自动优化(但是尽量按照顺序写)顺序使用索引 范围查询 后面索引会失效由于非顺序使用索引 索引会自动优化 重新排序可能是表数据量小,也可能值不存在总结
2022-03-02 22:44:14 244
原创 并发BlockingQueue
一.阻塞队列 和并发队列1.什么是队列一种支持先进先出(FIFO)的线性数据结构2.如果让你设计一个线程安全的队列 你会怎么做?可以用锁,消费者 生产者模式,状态变更 condition注意去判断的时候要用while (因为等待线程有很多个,你倍唤醒之后不一定是执行成功,可能再次等待)等待之后 唤醒所有线程去抢(1)arrayBockingQueue 一把锁要么能取 要么放a.数组b.从哪里取的指针c.从哪里放指针d. 现有数量c.锁d. 队列状态 是否空(condition
2022-02-27 23:50:23 82
原创 JMM和Lock
一 .**CPUCPU怎么保证并发控制(1) 关中断(2)缓存一致性协议 每个硬件厂商 协议不同 常见的interl 的 MESI 通过四种状态 判断如上图CPU的速度和内存的速度(100 :1)这里的速度值得是ALU访问寄存器的速度比访问内存的速度快100倍为了充分利用CPU的计算能力,在CPU和内存中间引入缓存的概念(工业上的妥协,考虑性价比)现在的工业实践,多采用三级缓存的架构缓存行:一次性读取的数据块程序的局部性原理:空间局部性 时间局部性如果缓存行大:命中率高,但读取效率低
2022-02-23 23:55:26 337
原创 线程thread
什么是线程 什么是进程答:进程 相当于一个加载到内存当中静态资源文件, 线程 是进程中的某个实体 是cup 调度和分派的基本单位并发属于逻辑性定性,并行属于物理级别线程的实现方式 ()Runable 接口 Thread 类 ,callable 接口callable&& Future 能有返回值是因为 Futuretask 实现 RunnableFuture 接口 会去执行 run 方法用 volatile 修饰的 state 这个状态值 去判断执行操作(4中流程 看..
2022-02-20 22:43:57 284
原创 proxy 代理
proxy动态代理 demo//接口public interface Student {void getStudentName();void getStudentAge();}//实行接口public class JuniorStudent implements Student {public void getStudentName() {System.out.println(“my name is king”);}public void getStudentAge() {Sy.
2022-02-20 01:20:35 211
原创 spring aop
spring 事物底层原理分析a. 数据库事物的基本特性 ACID原子性 atomicity 事物中的各项操作 要么全做 要么全不做,任何一项操作的失败都会导致食物的失败一致性 consitency 事物结束后系统状态是一致的隔离性 isolationv 并发执行的事物无法看到对方的中间状态持久性 durabilit 事物完成者之后所由的改动都会被持久化 即使发生灾难性的失败b 隔离级别在高并发的情况下 要完全保证其ACID特性是非常困难的,除非把所有的事物串行话执行,但带来的负面的影.
2022-02-16 09:19:28 224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人