`
文章列表
参考:https://www.cnblogs.com/yelongsan/p/9405914.html 参考带图:https://www.wengbi.com/thread_94416_1.html 技术内幕四维图:https://blog.csdn.net/tanliqing2010/article/details/81509539 看起来好像啥都知道,但让你说的时候可能就GG了: Mysql支持Hash索引和B+树索引两种,具体说说看? 使用索引为什么可以加快数据库的检索速度啊? 为什么说索引会降低插入、删除、修改等维护任务的速度。 因为要保持平衡树 索引的最左匹配原则指的是什么? Hash ...
rabbitMq: 1.如何保证顺序接收的消息 采用单机一个一个消费 多机场景,需要状态验证,验证失败返回mq接收失败,让其后续重发。 2.如何保证消费者挂掉重启后,不去再重复做消费的业务处理,比如重复下单 1.业务处理记录mq传来的唯一标识id,每次先校验此id是否处理成功 2.业务处理可以是redis.set,set处理只会覆盖key 3.采用第三方中介件,比如redis每次保存记录消息中标识id,进入时校验id 2.2 分布式系统中的事务问题,如果A调用B,如何保证B不被重复消费,因为B可能超时,A会不断重试, 扣库存扣一个库存,客户端可能多次重试。扣库存B超时了,A重试一次,实际下游B ...
参考:https://www.cnblogs.com/yelongsan/p/9405914.html 参考带图:https://www.wengbi.com/thread_94416_1.html 技术内幕四维图:[url]https://blog.csdn.net/tanliqing2010/article/details/81509539 [/url] 什么是数据库死锁: 1.阻塞现象 程序在执行的过程中,点击确 ...
volatile优点:可见性,防止指令重排序,那如何理解指令重排序呢 从一问题开始Object object = new Object();object不为null,如何理解与解释呢 答:类加载过程分为:加载,验证,准备,解析,初始化。其中在准备阶段是给类分配内存,赋予默认值,后续进行初始化,这时object指向内存地址,是不为空的,只是地址所在的内存实际值是空。 object = new Object()分为三布: 1分配空间内存, mem = 空间; 2创建对象new Object(),调用构造初始化对象 ctorSingleton(instance); 3将地址赋给变量(将引用指向存储空 ...

jvm基础

    博客分类:
  • jvm
基础总结:https://572327713.iteye.com/admin/blogs/2405671/edit 引用 Java HotSpot(TM) 64-Bit Server VM (25.60-b23) for linux-amd64 JRE (1.8.0_60-b27), built on Aug  4 2015 12:19:40 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8) Memory: 4k page, physical 8027744k(2874184k free), swap 1048572 ...
zuul的主要任务是两个,一是请求分发,动态过滤。 请求分发、动态过滤: 实现很多filter   token、session、黑名单等等,都可在这里实现,只要是针对每个服务的通用控制 也可以:服务降级、访问控制 zuul校验黑名单,有权限继续访问注册中心的服务(反向代理,负载均衡) Eureka&CAP原理: https://blog.csdn.net/gaofeng2001_ren/article/details/78895795
这个链接图片总结到位 https://blog.csdn.net/tolcf/article/details/50925145

专利总结

无界阻塞队列, 生产者:创建订单时,存入队列信息,包括最终时间,订单ID, 消费者:一个线程while循环,获取队列超时元素方法,当队列没有数据时,此方法阻塞(poll)。 服务器宕机,容灾能力,可写入mq。 基于redis实现超时任务调度 基于redis优雅的实现超时任务调度 现有方式,使用job任务轮询检索数据库,检索出符合条件的数据进行业务处理,但如果时间短且数据量大时, 1. 不断查询数据库,对数据库压力增加,影响数据库性能。 2.一次查询出上万条,导致内存溢出,即使分页取数据效率不高。 通过redis有序集合(sorted set)存放和处理数据。 基本思路是,生产者:创建数据到 ...

问题总结

https://572327713.iteye.com/admin/blogs/2389759 https://572327713.iteye.com/admin/blogs/2407978 ThreadPoolExecutor 7个参数作用 newCachedThreadPool特点,使用场景; https://572327713.iteye.com/admin/blogs/2427908 核心线程数:默认开启线程数 最大线程数:最多开启线程数 超时时间:当启动的线程数大于核心线程数时,如果某个线程空闲超过超时时间时,进行关闭。 时间单位: 队列属性:如无界有界阻塞队列等 执行策略:线程满时 ...
1.查库存 public class IndexDatasourceRedis { public static void mainSelect(String[] args) { // 从主缓存获取 // 判断是否主缓存存在 if(true) { // lock锁 // 从数据库获取 // 更新主缓存 // 更新备份缓存 } else { // 备份缓存获取 ...
以下实现注意,并没有用到最大线程数参数max import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; public class IndexDatasourceController { private static AtomicInteger taskCount = new Atomi ...
notify和notifyAll有什么区别: https://www.cnblogs.com/zhuhongchang/p/8468032.html Matrix海子博客 https://www.cnblogs.com/dolphin0520/
package com.pingan.haofang.agent.saas.util.cache.redis; import com.pingan.haofang.agent.saas.common.utils.Log; import com.pingan.haofang.agent.saas.common.utils.RedisUtils; import org.apache.log4j.Logger; import org.springframework.data.redis.core.RedisTemplate; import java.beans.PropertyD ...
package com.pingan.haofang.agent.saas.util.cache.daemon; import java.util.HashMap; import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; /** * 增强型本地缓存 */ public class DaemonCache<K,V> { private static final Logger log = Logger.getLogger(DaemonCache.class); ...
1.被动缓存 被动缓存: 当取service服务数据redis有值,从redis取得;redis没有值从db取得再放入redis中(下次使用)。 使用@Cacheable 注解实现service层redis被动缓存效果 50台 5分30秒分散超时 2.主动缓存 直接对redis删除,添加 3.主动被动结合 4.DaemonCache jvm缓存 solr放jvm中 20%从jvm取,80%取solr取 5.cdn 前端缓存 6.小黑屋 ip限制 连续几次放小黑屋,连续进小黑屋后进大黑屋
Global site tag (gtag.js) - Google Analytics