自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

八角塘塘主的博客

分享学习过程中的知识,共享

  • 博客(78)
  • 资源 (1)
  • 收藏
  • 关注

原创 Seata原理

三篇文章读懂Seata1、核心https://www.cnblogs.com/DKSL/p/fescar.html2、概览https://github.com/seata/seata/wiki/概览3、示例https://yq.aliyun.com/articles/698995

2019-07-01 10:50:24 4148

原创 Synchronized

https://www.cnblogs.com/pureEve/p/6421273.html https://blog.csdn.net/javazejian/article/details/72828483

2018-04-07 15:24:01 1557 1

原创 Voliate

1、voliate的理论作用: A、保证可见性 B、保证指令不重新排2、可见性原理:a.保证写后的数据马上回写到系统内存b。根据缓存一致性协议,保证写后,数据在总线声明为过期,其他已经读取过这个变量的处理器会通过嗅探技术,发现自己的数据内存被修改,声明无效,如果要修改,则会重新去读取,但是,如果不修改,则不会去读取c.不能保证原子性代码:while(i==1){i++; }...

2018-04-07 12:03:34 3922

原创 JVM垃圾回收器总结

1、垃圾回收器种类 2、回收算法 标记–清除: 原理:内存进行GC时,先把需要回收的对象标记出来,然后删除对象 缺点:效率低,回收后内存不连续 标记–复制–清除: 原理:内存分为Eden+From+To=8:1:1,先标记需要回收的对象,然后把需要保留的对象复制到From区, 最后删除回收对象 优点:内存连续,适用于频繁回收对象,因此新生代堆回收一般使用此方法 标记–整理:

2017-07-12 12:47:03 650

原创 缓存穿透缓存击穿缓存雪崩

缓存击穿:热点数据key,因为失效导致大批量的访问请求访问数据库,该数据可能存在也可能不存在。缓存雪崩:大批量缓存key有效期到期,导致大批量访问请求访问数据库。缓存穿透:确认数据库不存在的数据,缓存也没有,导致频繁访问数据库。解决方案一:设置防穿透标记,5分钟过期,降低访问数据库请求数量。解决方案二:布隆过滤器,key的数量少时候可以用用。一文读懂缓存穿透、缓存击穿、缓存雪崩及其解决方法。解决方案一:过期时间打散,定时更新数据有效期。解决方案二:定时刷新有效期,续命。解决方案一:设置永久有效。

2023-04-15 17:36:29 113

原创 记一次FullGC排查过程

因为使用占用到100%,就很明显了。

2023-04-15 17:31:18 642

原创 记一次FullGC排查过程

因为使用占用到100%,就很明显了。

2023-04-15 17:30:25 2084

原创 一次wireshark工具分析问题记录

我们的项目中会有一个获取任务执行状态的功能使用 HttpClient,一秒钟请求一次,经常会出现 Conection Reset 异常。经过分析发现,问题是出在 HttpClient 的每次请求都会新建一个连接,当创建连接的频率比关闭连接的频率大的时候,就会导致系统中产生大量处于 TIME_CLOSED 状态的连接,这个时候使用连接池复用连接就能解决这个问题。本次记录一条数据的传输过程。**信号:[SYN, ACK] Seq=0 Ack=1 ****信号:[ACK] Seq=1 Ack=1 **

2023-04-15 17:29:33 1251

原创 Redis知识体系

2022-01-26 18:10:42 1074

原创 一次SQL优化过程

一次SQL优化过程场景第一步:发现问题一个页面列表接口,耗时 6.98s。我认为一个前端接口耗时超过1s就是耍流氓。第二步:定位问题使用arthas神器打印接口耗时。arthas的部署及使用方法可以参见:arthas独家心得如果不会使用arthas的开发,我不认为他是一个高级开发。可见问题在 mapper那里出问题了,我一直猜想是拉列表后因为循环拉取详情导致的慢,看来我的经验不对,所以碰到问题,先从本质核实问题的原因,是程序员解决问题的第一步,而不是瞎猜,惊慌失措。第三步:找出问题,

2022-01-20 17:50:31 658

原创 Kafka-结构-原理-高性能

看下面这个PPT就可以了,还是很简洁的。感谢浙江百世的分享。kafka技术分享.pptx1、PageCache:数据缓存在PageCache,不用进入JVM,减少GC。回收方便2、顺序IO减少磁头频繁移动3、零拷贝一般一次读,都是经过公共内存,再到用户内存。kafka直接将内存4、压缩5、发送消息会进行批量堆积后再存储...

2020-07-31 10:38:32 189

原创 redis-Sentinel-哨兵模式

1、结构:多个哨兵–多个主机器–多个从机器2、一个机器失联的大致经过A、一个sential主观发现一台机器失联B、询问其他sential,客观失联C、选举主sentialD、选举主机器C、故障迁移,失联机器置为从节点B:主观选举setial1、主观发现机器节点失联的sential会向其他sential进行询问,叫他们选自己2、其他sential如果没有接受其他sential的选举要求,就会选举这个sential3、选举信息返回主观sential,超过半数,则选举成功。C、主节点选举:

2020-07-29 19:09:07 170

原创 Redis-主从模式

1、主从没有选举的说法,从服务器指定主服务器即可2、主从同步可以分以下2大类:主从全量同步:1、RDB同步过去2、增量命令同步过去增量复制,主机具备一个缓存积压区:固定FIFO的队列。主从增量同步:注意下结构:从机器发送同步命令:<主机ID,offset>先看主机的ID和之前的主机ID是否一致,一致,再看断流的offset是否存在于缓存积压区,存在,则直接在断流的offset进行重新复制。如果:主机变更了,全量同步一次offset不在缓存积压区,也进行一次全量同步缓存积压

2020-07-29 17:26:57 111

原创 面试战略经验

核心:边面试边准备,面试前只要准备好简历即可,简历主要是提炼自己在项目中的价值。因为面试不会一下子就找好,可能需要经历多次被拒,或者多次选择才会有满意的offer。1、准备简历:项目一句话描述清楚。自己的工作总结,你在项目中承担的责任,作用域。2、...

2020-07-17 18:39:25 112

原创 面试盲点总结

1、AutoWired和Resource的区别AutoWird:按照byType匹配,如果想byName.需要借助 @QualifierResource:指定了name或者type就按照指定来匹配,如果没有指定,则默认按照byName,匹配不上就byType.AQS里面的ws属性1、结构:int state=0;FIFO双端队列队列节点是:线程ID,线程状态=ws2、流程先CAS抢占 state抢占成功,节点放置,状态设置抢占失败,则进行竞争:tryAcqure获取独占锁失败则

2020-07-14 12:22:21 133

原创 MYSQL-索引长度与区分度

背景索引长度越长,不利于查询,因此索引尽量长度短一些。区分度越低,不利于查询,因此索引尽量区分度高一些。但是两者不能兼得。那么怎么办呢?公式如下:键 的 distinct 数量 / 总量=趋近于1,则更好。select distinct( left(key,n) ) / count(*) from table;...

2020-07-09 19:17:52 390

原创 Dubbo

一、配置优先级方法级优先,接口级次之,全局配置再次之。如果级别一样,则消费方优先,提供方次之。文件级别:启动参数 -D > .xml > .properties立即初始化:<dubbo:reference … init=“true” />...

2020-07-07 17:25:07 76

原创 Dubbo-原理

一、提供服务二、消费服务三、细节1、从ServiceConfig配置到实际类的价值-DubboSPISPI:通过替换不同的jar包,来实现不同接口类的多态2、流程自我理解:1、先通过@SPI注解,将类名找到2、类名再通过配置文件,找到实现类的完整类名3、通过完整类名+指定文件夹下,加载类class信息4、通过反射实例化Bean5、针对Bean里面的属性bean,也是通过反射setter方法来注入依赖对象其中,对象是通过see特然方法截取到对象名,然后将依赖对象名通过Object

2020-07-07 17:24:48 111

原创 Dubbo-负载均衡

一、背景负载均衡是为了减少某台机器承载大部分流量压力,将流量平均分配至各个机器的一种分配算法,近的如Nginx.二、dubbo的算法前提前提是该服务有多台机器提供,有多个invoker。权重会随着上线时间,才会慢慢和配置的权重一致。这个叫预热三、四种算法1、权重随机算法ABC三台机器,配置权重50%,30%,20%。将(0,5],(5,8],(8,10]分配给这三台机器,随机生成0到10的随机数,落在哪里就调用哪台机器2、最小活跃数加权算法最小活跃数:有调用,活跃数+1。调用退出,活跃数-

2020-07-06 17:18:32 910

原创 load高

1、cpu高cpu高查看下占用最多的Java线程top 查找CPU最高的进程top -H -I pidpringtf ‘%x’ xid 16进制转换jstack pid2、load高load代表runing和wait的线程平均数,如果过多。既然是这两种状态的,那就看系统的CPU高,一般是配置的线程池多,开销大IO大,是不是内存存取数据大。...

2020-07-06 15:25:47 134

原创 什么是RPC

一、RPC是什么?RPC是解决两台服务器通信问题。远程,单机或集群。3个问题:1、网络协议:数据能够再网络中传输,双方能够接受。打开网络连接和维持2、内容序列化:发送前需要序列化成二进制,服务端收到信息需要反序列化成可识别内容3、客户端和服务端要能相互识别,并且保持心跳。需要一个中间节点二、一个RPC的基础架构...

2020-07-02 15:25:06 211

原创 RocketMQ-总结

一、MQ的作用1、削峰填谷:高峰流量时,进行缓冲。降低QPS,TPS压力。2、系统解耦:系统交互不再进行强依赖,上下游各自处理系统业务。避免系统之间因一个调用导致整个系统链路垮掉。3、提升性能:一个消息对应多个系统业务处理,可以多次订阅,各个下游子系统可以各自处理业务相互不影响。二、各种MQ选型,比对比对的原则:1、使用场景如Kafka就适用日志系统,使用大量的数据处理,为了提高实时性,丢掉了一些可靠性。稳定性上,RocketMQ和RabiteMQ就可以满足,都有技术去保障。2、可顺

2020-07-02 11:12:38 295

原创 Spring-总结

一、IOC与AOPIOC是工厂模式的实现,对Bean进行的初始化和使用进行解耦。减少初始化,增加Bean对象的复用率。AOP是代理模式的实现AOP是切片,是为了对功能进行前后增强二、Bean的生命周期可以直观的就是4个周期,在这之间会加载一些扩展。1.实例化2.属性赋值3.初始化4.销毁具体点文字描述:1.实例化对象;2.填充属性值及引用;3.调用 BeanNameAware 的 setBeanName(String name) 设置 bean 的 id;4.调用 Bea

2020-06-30 15:51:03 3652

原创 怎么做技术方案

一、技术方案的要求技术方案的要求:1、思路清晰,一目了然。让执行者知道自己要做什么,怎么做。2、有计划,有结果。什么人,什么节点,应该拿到什么结果,中间会出现的风险二、技术方案的模板一、背景什么业务场景存在什么问题怎么解决这些问题拿到什么目标这里很多人在啰里啰嗦,能少字就少字,直接说清楚要解决什么问题。这里在介绍业务场景的时候,可以加一张运用全局的架构图,表明我们的项目处于什么位置。二、技术选型(可选)这一步很多业务型方案可能不需要,一般在只有从0~1的过程会用到。1、先说结

2020-06-22 11:42:34 1745

原创 ZOOKEEPER

Zookeeper一、zookeeper有什么用?分布式协调服务满足:一致性原子性可靠性最终一致性角色与状态角色1、leader:领导者2、follower:追随者,参与选举3、observer:观察者,不参与选举,主要是用来扩大读的能力状态:LOOKINGLEADINGFOLLOWING二、选举机制触发选举的场景:1、启动时2、Leader掉线3、Leader与一半以上的follower失联选举的投票信息:【SID,ZXID】=【服务器唯一标识,最后一个事务I

2020-06-19 12:04:02 176

原创 AQS原理

AQS是JUC里的原理核心,因此有必要搞清楚。天梯图:

2020-06-18 16:01:24 97

原创 CAS

为什么要CAS?1、synchronzied 太重,需要切换上下文,开销大2、线程会刮起,被阻塞3、voliate 不能保证原子性CAS作用基于哪里?基于JVM,操作硬件。原理:乐观锁的一种。(V,A,B)V:旧值A:当前读取到的值,必须V==A才行B:新值CAS的问题:1、ABA问题:解决:加版本,AtomicStampedReference 这个类,版本是时间戳。有个数组做标记【引用,标记】2、原子性:只能保障一个变量将多个变量合成一个变量3、自旋开销大好处vol

2020-06-17 12:02:57 94

原创 性能优化

一、优化弄清楚哪里慢:1、准确的日志2、Arthas大法:trace+watch3、异步线程怎么统计四个方向优化:1、SQL优化1、走索引2、基础优化:select *, join,3、一条查询,拆开成多次查询4、强制索引2、缓存优化合理加入缓存,注意影响,降低3、业务优化1、相同的线路,可以去重,减少落库的数据量4、线程优化合理增加线程,合理使用forkjoin5、JVM优化合理调整CPU及内存分配代码优化:设计模式...

2020-06-11 20:10:28 92

原创 线程池

参考:https://www.jianshu.com/p/125ccf0046f3一、为什么创建线程池二、参数三、执行原理四、线程配置原则

2020-06-08 20:45:04 83

原创 二叉树-平衡二叉树-红黑树-B-树-B+树-B*树

一、二叉树解决问题:查询排序二、平衡二叉树(AVL)解决问题:深度太深,会导致查询效率很低,因为查询复杂度为O(n),n为深度。因此要降低深度,保持平衡三、红黑树解决问题:通过红黑规则,对平衡进行一种妥协,可以认为是一个弱平衡,降低旋转次数,提高效率。好处:插入最多两次旋转,删除最多三次旋转,场景:搜索,插入,删除操作较多的情况下,我们就用红黑树。四、B-树一个节点不再是一个,可以是M个节点。主要是适用在磁盘文件存储。外部查找是指在辅助设备空间进行数据查找。如在计算机中内存的大小是

2020-05-21 17:50:46 211

原创 菜鸟学到的知识

菜鸟学到的知识:1、经常性的总结自己的技术,总结用图来展示,文字描述不清晰,记不住2、出方案—>设计代码–>操作手册。每做一个项目模块,都应该遵循这个流程,要有方案落地能力,要有方案交接能力3、定计划,出方案,不能留有模糊概念设计,方案设计具体到接口名,参数4、汇报工作:什么问题(价值),什么方案,为什么这个方案,现在的结果是什么? 遵循: 问题--方案--结果 的...

2019-08-06 11:46:23 91

原创 RocketMQ

1、学习书籍A、RockectMQ 技术内幕——技术基础的原理及实践B、RockectMQ实战与原理解析—从代码层面解读原理-可以做深入研究

2019-08-06 10:27:04 152

原创 Java8新特性

1、Lambda表达式interface MathOperation {int operation(int a, int b);}MathOperation addition = (int a, int b) -&gt; a + b;2、Java 8 方法引用方法引用使用一对冒号 :: 。 cars.forEach(Car::repair);...

2019-03-14 17:35:39 122

原创 什么情况触发FullGC

1、system.gc()2、老年代内存不足3、老年代采用CMS,内存足够但是不连续,当一次性分配大的数组对象时候,因为一次性分配不足,出现 conrent error 并发错误,提前触发一次full GC4、永久带不足...

2019-03-14 15:14:57 534 1

原创 Object所有方法及重写equals和hashCode()方法

第一节: object 的方法1.hashcode() 内存地址机器位,理解成内存地址即可。每个对象唯一2、equals() 原生的是判断是否属于同一个对象public boolean equals(Object obj) {return (this == obj);}可以看到如果equals()如果没有被重写的话,比较的是对象的地址,String,Integer等包装类里面都重写了...

2019-03-14 15:08:35 322

原创 ThreadLocal

Thread原理jdk1.3之前threadLocal在堆中(全局变量),然后维护一个MAP,MAP中,key为线程ID,value为线程设定的值jdk1.3之后到现在:threadLocal还是在堆中,线程的栈中,维护着一个threadLocals变量,这个变量是threadLocalMap类,这个MAP中,key为threadLocal的弱引用,值为线程设定值1、为什么要改成这种...

2018-09-23 11:08:08 1593 2

原创 redis-总结

Redis知识总结看完《redis设计与实现》后,结合自己实际开发中的经验,做些知识点的总结:redis 5大对象 1、String对象 2、List对象:双向列表 3、HashMap对象:rehash问题,双hashTable,hash计数 4、set对象:集合 5、sort_set:有序集合对象,hash表和跳跃表的结合,指针指向真实对象,hash保证查询的速度,跳...

2018-08-05 14:02:41 238

转载 Http协议

https://www.cnblogs.com/ranyonsue/p/5984001.html

2018-07-26 16:39:46 158

转载 spring循环依赖

https://blog.csdn.net/u010853261/article/details/77940767构造器循环依赖无法解决属性循环依赖可以解决bean的实例化过程: instance(调用构造器进行构造这个对象) populateBean:(属性注入) ...

2018-07-23 18:03:56 384

翻译 B+树

1、B+树索引快的原因 首先B+树的结构: 中间节点都是关键字,叶子节点才是关键字+行内容,叶子节点是顺序,并且维护了一条链表索引快的原因: 1、查询稳定:查询都是从根节点到叶子节点,再从叶子节点获取行信息 2、I/O减少:查询读取I/O读取的是关键字,不含行信息,因此相对I/O读取一次更多中间节点 3、支持随机查询和顺序查询: 叶子节点维护后,就是一个有序链表,因此从左往右读取,...

2018-04-24 16:05:08 136

Python与微信交流

一个测试token验证,对于新手不太好上手,建议不要下载,有点小瑕疵

2015-04-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除