- 浏览: 60542 次
- 性别:
- 来自: 上海
最新评论
文章列表
参考: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 ...
mq消息队列的应用与思考点
- 博客分类:
- MQ
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将地址赋给变量(将引用指向存储空 ...
基础总结: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
专利总结
- 博客分类:
- Core java1
无界阻塞队列,
生产者:创建订单时,存入队列信息,包括最终时间,订单ID,
消费者:一个线程while循环,获取队列超时元素方法,当队列没有数据时,此方法阻塞(poll)。
服务器宕机,容灾能力,可写入mq。
基于redis实现超时任务调度
基于redis优雅的实现超时任务调度
现有方式,使用job任务轮询检索数据库,检索出符合条件的数据进行业务处理,但如果时间短且数据量大时,
1. 不断查询数据库,对数据库压力增加,影响数据库性能。
2.一次查询出上万条,导致内存溢出,即使分页取数据效率不高。
通过redis有序集合(sorted set)存放和处理数据。
基本思路是,生产者:创建数据到 ...
问题总结
- 博客分类:
- Core java1
https://572327713.iteye.com/admin/blogs/2389759
https://572327713.iteye.com/admin/blogs/2407978
ThreadPoolExecutor 7个参数作用 newCachedThreadPool特点,使用场景;
https://572327713.iteye.com/admin/blogs/2427908
核心线程数:默认开启线程数
最大线程数:最多开启线程数
超时时间:当启动的线程数大于核心线程数时,如果某个线程空闲超过超时时间时,进行关闭。
时间单位:
队列属性:如无界有界阻塞队列等
执行策略:线程满时 ...
redis 在业务代码应用
- 博客分类:
- 数据库+缓存
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限制
连续几次放小黑屋,连续进小黑屋后进大黑屋