自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (6)
  • 收藏
  • 关注

原创 线程

代码里如何实现读写分离Spring提供了AbstractRoutingDataSource类用于数据源的路由,重写其determineCurrentLookupKey方法,返回路由key,key对应就是数据源bean对象id实现切换数据源的方式有多种,本质上都是操作AbstractRoutingDataSource.determineCurrentLookupKey的返回值AOP切面,切入所有service层,加入判断,如当前调用方法类是在XXX包下则是主库,设置路由方法的返回值重写Mybat

2020-09-06 18:03:36 91

原创

redis hash大key怎么优化?怎么查找大key大key有两种情况,一种是hash结构key下面挂了很多的fileld和value,另一种是单纯的key很多这种属于分散操作第一种情况:用key的fileId的哈希值对一个容量取模,得到一个0到容量的数,然后再加拼接上key,得到新的key,并以新key设置,获取时候同样要先用fileld的哈希值取模newKey = key + hash(field) % 10000;hset(newKey, field, value);hget(newK

2020-09-06 18:02:20 179

原创 Aop

Spring AOPAOP相关所涉及到的概念连接点 程序执行过程中全部可植入逻辑的点,spring仅支持方法级别的连接点,所以连接点就指方法切点 切点用来选择连接点通知 具体执行逻辑切面 抽象概念,是连接点、切点、通知的包装织入 织入是个动作,就是在切点的引导下,将通知逻辑加到连接点上以XML配置形式为例,在配置<aop:config>标签时,已经包含了以上除"织入"外的所有信息!Spring初始化时,会将以上信息加载

2020-08-30 17:02:30 108

原创 redis事务、队列

Redis消息队列生产者/消费者模式(PUSH/POP)基于阻塞队列实现BRPOP key [key …] timeout 超时时间内,从队列右侧阻塞式弹出元素BLPOP key [key …] timeout(可先生产再消费,也可消费者先阻塞获取等待生产者入队)入队127.0.0.1:6379>RPUSH my_list “Spark” “hadoop”"hive"(integer) 3127.0.0.1:6379>LRANGE my_list 0 -11)“Spar

2020-08-30 16:57:58 229

原创 REDIS分布式锁

####锁的基本实现单Redis节点分布式锁加锁:使用 SET key value [EX seconds ][PX milliseconds][NX|XX] 命令EX second :设置键的过期时间为 second 秒。 SET key value EX second 。PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 。NX :只在键不存在时,才对键进行设置操作。 SET key va

2020-08-30 16:56:59 79

原创 REDIS

###缓存穿透指查询一个一定不存在的数据,缓存不命中走DB,大量请求落到DB上把数据库压垮解决方式上游限流,如网关限流,接口调用次数限制RateLimiter(guava令牌桶限流)可用在网关上,可用在获取缓存的公共方法上 public static T cacheHelper(String key, Supplier supplier)缓存空对象,这样可以请求不落DB,但业务层需要加上相应空值判断布隆过滤器,内部存储不存在的key,但是在新加key时要去除布隆过滤器里相应的

2020-08-30 16:56:26 303

原创 RateLimiter

2020-08-30 16:51:40 91

原创 ConcurrentHashMap

2020-08-30 16:50:07 72

原创 kafka

消息以主题(Topic)来分类,主题数据由多个Partition分区共同存储,根据分区策略写入不同的分区,分区以文件追加形式顺序写入,单个Parition内是保证消息有序。主题以消费组形式消费,一个主题可以被多个消费组消费,并且只会被组内某一个消费者消费,本质上是一个topic下的一个Partition只会被一个消费者消费,即分区是和消费组里的某个消费者绑定的!所以,当组内消费者数量大于分区数时,多出来那个就不会收到任何消息,消费者数量的增减、分区数的增减都会触发重新绑定(Reblance)同步策略

2020-08-30 16:47:51 121

原创 JVM

.class文件什么情况下会被加载?JVM启动进程后,会寻找程序入口,包含Main方法的类,Main方法执行过程里用到哪些类就加载哪些类正常的war程序如何加载的? Tomcat本身是一个java程序,Web程序只是他下面的子程序,目前不知道他的加载机制,Tomcat搞一个Main方法作为程序入口也不是不可以.class文件加载的过程加载主要分成3个部分加载将静态文件数据加载到方法区,同时在堆内存生成一个代表对应类的Class对象链接验证确保Class文件内容符合java规范

2020-08-30 16:47:05 112

原创 dubbo

dubbo协议dubbo负载均衡策略及实现方式Random 随机RoundRobin 轮循平均分布,但是存在请求累积的问题LeastActive 最少活跃,处理能力慢的服务接收更少的请求每个服务维护一个int类型活跃数计数器,开始处理时+1处理完成时-1。当A服务开始处理请求,计数器加1,此时A还未处理完成。而B服务接受到请求后很快处理完毕。那么A、B的活跃数分别是1、0。当又产生了一个新的请求,则选择B服务(B活跃数最小),减少慢服务收的请求ConstantHash 一

2020-08-30 16:44:24 91

原创 Disruptor

高性能内存队列-DisruptorDisruptor是基于环形数组的内存消息队列,相比JDK提供的阻塞队列效率更高应用场景更多,除基本的发布订阅/点对点模式外,还可实现消费者间依赖,实现更复杂业务一、为什么高效无锁化,普通阻塞队列ArrayBlockingQueue(为了防止生产者速度过快导致内存溢出,只能选择有界队列,同时为提高读取效率,JDK内只有它适合做队列),使用的是重量级锁Lock,生产者消费者put/take间是互斥关系,头尾指针竞争激烈,竞争将导致线程经常挂起,效率很低。D

2020-08-30 16:43:01 182

原创 职业理念

教育观素质教育的内涵素质教育以提高国民素质为根本宗旨素质教育是面向全体社会成员的,不仅适用于基础教育而且适用于高等教育、社会教育、终身教育素质教育是面向全体学生的教育素质教育观强调在教育中每个人都得到发展,而不是只注重一部分人,要求教师做到教育公正通过集体讨论的方式,分析表达观点,使每一位学生都认识到了自己的优缺点赵老师没有因某某原因就放弃问题儿童,反而对他格外关注,帮助他在各方面得到提升素质教育是促进学生全面发展的教育实施素质教育就是通过德智体美劳(五育)的有机融合,来实

2020-07-12 20:19:43 266

原创 杂七杂八

----------httpclient-----------```javapackage util;import java.util.List;import org.apache.http.Consts;import org.apache.http.HttpEntity;import org.apache.http.HttpStatus;import org.apache...

2019-10-20 10:28:58 131

原创 多级权限菜单遍历

单节点多级子节点public class Test { static List<Menu> menus = Arrays.asList( new Menu(1, null, "一级菜单"), new Menu(2, 1, "二级菜单_1"), new Menu(3, 1, "二级菜单_2"), new Menu(4, 3, "三级菜单_1"), ne...

2019-10-20 10:18:20 421

原创 ES API基础

ES基本使用package com.paic;import java.net.InetAddress;import java.text.MessageFormat;import java.util.Date;import java.util.Iterator;import java.util.Map;import org.elasticsearch.action.admin.in...

2019-10-07 18:56:21 251 1

ES安装文件

ES-windows安装文件

2019-10-07

标准文档上传,用于记录问题解决过程

上传文档标准文档上传,用于记录问题解决过程

2019-08-18

polysaas代码

polysaas代码

2018-06-13

sublime3 64位汉化破解版

sublime3 64位汉化破解版

2018-06-13

java NIO 视频教程

Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Java NIO: Non-blocking IO(非阻塞IO) Java NIO可以让你非阻塞的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。 Java NIO: Selectors(选择器) Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。

2017-09-25

最好的ibatis教程实例(内有注释)

本例以oracle为数据库 ,内有讲解,对ibatis做了详细的讲解

2014-03-04

空空如也

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

TA关注的人

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