java
java基础
孤独的背影
这个作者很懒,什么都没留下…
展开
-
JVM调优
1、标记清除:分为两个阶段:标记、清除, 首先,gc会从根root开始标记对象,如果没有引用的对象,会在清除阶段进行回收,这种算法适合于内存对象比较多的情况,适合于老年代 缺点:因为仅仅是标志,没有对内存进行整理,造成内存碎片,针对内存空间,扫描了两次,第一次是对对象进行标记,第二次是对为标志的对象进行回收。3、标记-压缩算法:从根节点标记存活对象,然后把这些对象压缩到内存的另外一侧,然后清除边界外的内存,这种回收算法一般是出于老年代,避免了内存碎片。-Xms4096m //最大堆设置。...原创 2022-08-11 15:27:04 · 102 阅读 · 0 评论 -
【无标题】
锁,俗称悲观锁,锁的粒度比较大JVM,在了解锁之前,前提条件是先了解对象的构成。原创 2022-07-15 10:40:58 · 78 阅读 · 0 评论 -
dubbo负载策略与容错策略
负载均衡策略对应的包:com.alibaba.dubbo.rpc.cluster(1):random loadbalance认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。(2):roundrobin loadbalanceroundrobin loadbalance,这个的话默认就是均匀地将流量打到各个机器上去,但是如果各个机器的性能不一样,容易导致性原创 2022-07-13 15:39:13 · 103 阅读 · 0 评论 -
Redis线程模式
前端查询数据很慢,而且针对某个业务场景,查询次数比较多,查询条件等信息几乎不变每次查询的时候,页面都要等4-7秒时间才能查询结果考虑应用redis缓存,现在来剖析一下redis快的原因以及模型1、redis采用reactor模型:监听Socket事件,当有Socket事件过来时交个对应的Handler处理2、redis单线程模型效率快的原因是:1)纯内存操作2)核心是基于非阻塞的IO多路复用机制3)单线程反而避免了多线程的频繁上下文切换问题(百度)......原创 2022-07-12 14:37:24 · 199 阅读 · 0 评论 -
ES查询原理:倒排索引
前端数据搜索:针对各种查询条件,需要快速、准确的响应数据结果。但是底层数据表很大,如果按照正常逻辑直接去表查询,这样查询效率很慢,而且是关联多表进行查询。针对这样的情况,项目中引入了ES,那为什么ES查询效率就这么快呢,下面就剖析一下ES查询原理ES倒排索引1、每个文档对应一个docId,文档内容会被切割成多个关键词,每个关键词都会记录在文档中的次数与位置,可以参考下图2、有了倒排索引,这样的话,就会很快的相应数据请求,比如前端要搜索 XXX,根据倒排索引可以很快的定位到某个文档,然后直接去文档get原创 2022-07-12 09:29:22 · 1998 阅读 · 0 评论 -
Elasticsearch分布式架构原理
1、一个索引拆分是多个shard,每个shard存放部分数据,分布在不同的节点上。每个shard又分为主shard与副本,是存放在不同节点上的这样的话,就保证数据的高可用2、一个索引类似于mysql中的一个表,type:分类,比如index分为两类,一个是实物订单,一个是虚拟订单,一个index包含多个type3、type下面是对应mapping,类似数据表结构4、数据存放在document,类似数据库表中的一行数据...原创 2022-07-11 15:25:11 · 553 阅读 · 0 评论 -
消息队列满了以后该怎么处理?
什么情况下会造成消息积压:可能是消费端宕机、或者消费端消费能力更不上生产者的速度解决方案:1、增加资源,新建一个topic,增加partiton个数,比如原来是3个,那现在扩容30个,然后新增30个消费者进行消费,等到积压消息处理完了,再改回原本的消费者中2、如果长时间没有进行数据消费导致磁盘满了,同时又不能扩容,那只能丢失部分数据。 或者新建一个消费者,把数据存到另外一个地方...原创 2022-07-11 11:21:12 · 2112 阅读 · 0 评论