自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 mybatis一级缓存踩坑记录

mybatis一级缓存踩坑记录坑分析处理方法mybatis一级缓存坑循环中用相同条件重复查询数据,并编辑查询结果返回的集合,导致查询结果重复分析mybatis一级缓存默认开启,重复查询使用同一条SqlSession会重复从一级缓存中读取数据返回的集合对象是个List,在处理往list集合中插入数据,等同于往一级缓存中插入数据导致再次查询时,从一级缓存中读取数据时,读取的数据是缓存中的脏数据处理方法不在循环中调用查询开启查询语句的一级缓存刷新机制mybatis一级缓存1、一

2021-01-15 13:58:51 507

原创 java static笔试题

class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int count2 = 0; private SingleTon() { count1++; count2++; } public static SingleTon getInstance() {

2020-05-21 15:58:07 351

原创 jvm & tomcat 类加载

jvmbootstrapextapp自定义当JVM运行过程中,用户需要加载某些类时,会按照下面的步骤(父类委托机制):  1 用户自己的类加载器,把加载请求传给父加载器,父加载器再传给其父加载器,一直到加载器树的顶层。  2 最顶层的类加载器首先针对其特定的位置加载,如果加载不到就转交给子类。  3 如果一直到底层的类加载都没有加载到,那么就会抛出异常ClassNotFoundException。因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相

2020-05-15 10:51:24 238

原创 gc回收算法及触发条件

minor gceden内存不足full gc元数据区内存不足老年代内存不足System.gc()方法的调用其他CMS GC时出现promotion failed和concurrent mode failure

2020-05-15 10:23:15 300

原创 业务拆分中的垂直与水平

程序拆分垂直拆分:按照应用场景对系统进行划分(商户支付、用户支付)水平拆分:按照业务对系统进行划分(支付中心)数据库拆分垂直拆分:分库、按字段分表水平拆分:分表(流水表)...

2020-05-15 10:02:57 1148

原创 jvm 内存区域划分

2020-05-15 09:32:39 109

原创 java自动拆装箱(Integer)

Integer a = 127;// 等价于 Integer a = Integer.valueOf(127);int b = a;// 等价于 int b = a.intValue();

2020-05-13 18:01:58 116

原创 Integer ==校验原理

现象Integer用==做校验时,只能支持-128~127public class IntegerTest { @Test public void test() { Integer a = 127, b = 127; Assert.assertTrue(a == b); a = 128; b = 128; Assert.assertFalse(a == b); a = -127;

2020-05-13 17:43:42 508

原创 分布式锁(redis,zookeeper)

redis分布式锁RedLock算法:这个场景是假设有一个redis cluster,有3个redis master实例。然后执行如下步骤获取一把锁:获取当前时间戳,单位是毫秒;跟上面类似,轮流尝试在每个master节点上创建锁,过期时间较短,一般就几十毫秒;尝试在大多数节点上建立一个锁,比如3个节点就要求是2个节点(n / 2 +1);客户端计算建立好锁的时间,如果建立锁的时间小于超时时间,就算建立成功了;要是锁建立失败了,那么就依次删除这个锁;只要别人建立了一把分布式锁,你就得不断轮询去

2020-05-12 17:40:25 177 1

原创 分布式session

tomcat + redis在tomcat的lib中添加tomcat-redis-session-manager相关jar包修改Context.xml<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

2020-05-12 17:19:51 118

原创 服务降级(dubbo-spring.cloud)

dubbo服务降级基于mock实现,在服务消费者配置配置mock,并在接口相同路径下实现接口的mock(命名规则:接口名称+Mock)<dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.basic.api.DemoService" mock="truel"/>springcloud服务降级//TODO...

2020-05-11 11:36:25 246

原创 windows命令

一小时后关机shutdown -s -t 3600

2020-03-08 15:13:27 88

原创 spring事务

spring事务传播行为@Transactional 注解控制事务失效数据库不支持事务数据源未启用事务类不被spring管理方法不是public参数设置不正确:propagation、rollback类内部调用,本类@Transactional 注解的方法...

2020-01-08 17:48:51 85

原创 spring默认单例bean

单例bean的优劣势单例bean的优势由于不会每次都新创建新对象所以有一下几个性能上的优势:减少了新生成实例的消耗新生成实例消耗包括两方面,第一,Spring会通过反射或者cglib来生成bean实例这都是耗性能的操作,其次给对象分配内存也会涉及复杂算法。减少jvm垃圾回收由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。可以快速获取到bean因为单例的获取bean...

2020-01-08 14:58:00 122

原创 dubbo 2.7.4负载均衡

dubbo负载均衡dubbo负载均衡器接口LoadBalance,提供了4种负载均衡实现:基于权重随机算法的 RandomLoadBalance基于最少活跃调用数算法的 LeastActiveLoadBalance基于 hash 一致性的 ConsistentHashLoadBalance基于加权轮询算法的 RoundRobinLoadBalance。AbstractLoadBal...

2019-12-27 15:46:08 275

原创 logback pattern

logback官网pattern

2019-12-26 17:55:13 276

原创 Dubbo的集群容错

Failover Cluster失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。Failfast Cluster快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。Failsafe Cluster失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。Failback Cluster失败自动恢复,后台记录失败请求,定时...

2019-12-24 10:21:32 222

原创 httpclient 4.5 超时设置

网上搜索httpclient超时设置:CloseableHttpClient httpClient = HttpClients.createDefault();HttpGet httpGet=newHttpGet("http://www.baidu.com");//HTTP Get请求(POST雷同)RequestConfig requestConfig = RequestConfig.cu...

2019-12-20 16:10:52 354

原创 java引用

java引用虚引用(PhantomReference)形同虚设,随时可能被垃圾回收器回收无法通过虚引用来获取一个对象的实例。为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知弱引用(WeakReference在gc时进行回收软引用(SoftReference)在内存空间不足时,进行回收强引用(StrongReference)内存...

2019-12-10 17:47:09 95

原创 spi机制(java,springboot,dubbo)

spi机制SPI的全名为Service Provider Interface,为某个接口寻找服务实现的机制。Java SPI约定在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。外部程序装配这个模块的时候,通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的...

2019-12-10 10:57:14 570

原创 java线程状态

java线程状态public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread...

2019-12-10 09:40:19 54

原创 基于springboot实现简单redis订阅消息

基于springboot实现简单redis订阅消息配置import com.ecolifr.reids.sub.listener.AListener;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import o...

2019-12-05 11:50:38 141

原创 springboot非web项目启动

问题想要写一个单纯的跟redis交互的demo,但是在springboot非web项目启动完成之后,项目直接关闭,且无异常抛错解决在网上搜索了集中解决方案修改webApplicationType写在配置文件中:spring: main: web-application-type: none写在启动类中 public static void main(Strin...

2019-12-05 11:17:38 4212 2

翻译 设置redis内存淘汰策略

设置redis回收策略在redis.conf 设置maxmemory-policy参数,可选参数如下:volatile-lru -> remove the key with an expire set using an LRU algorithm。删除最近最少使用到的具有过期时间的数据allkeys-lru -> remove any key according to the ...

2019-12-04 17:11:53 524

原创 spring aop初解

spring aopspring aop/iocspring ioc依赖注入对象为 原生 对象,经过spring aop切面对象为 代理 对象aop执行过程在aop中形成执行链,按逆序执行入下图正常aop执行过程around beforebeforearound afterafterafter returning在方法正常执行结束无异常时,@AfterThrowing方...

2019-11-28 17:21:02 122

原创 java retry

retrycontinue @Test public void continueRetry() { System.out.print("continue retry 1:"); // 设置for循环位置 retry: for (int i = 0; i < 2; i++) { for (...

2019-11-25 18:01:14 110

原创 synchronized锁升级+实现原理

同步代码块采用monitorenter、monitorexit指令显式的实现monitorenter每一个对象都有一个monitor,一个monitor只能被一个线程拥有。当一个线程执行到monitorenter指令时会尝试获取相应对象的monitor,获取规则如下:monitor的进入数为0该线程可以进入monitor,并将monitor进入数设置为1,该线程即为monitor的拥...

2019-11-22 15:23:44 210

原创 zk选举

基本概念服务器类型Leaderzk集群通过一个Leader选举过程来选定一台被称为LeaderLeader服务器为客户端提供读和写服务Follwer为客户端提供读服务Observer为客户端提供读服务Observer机器不参与Leader选举过程,也不参与写操作的过半写成功策略在不影响写性能的情况下提升集群的读性能当前服务器的$ZOOKEEPER_HOME...

2019-11-22 10:59:48 453

原创 mysql查询优化

减少扫描行数走区分度高的索引避免字段函数操作unionall代替or(or条件只有一个条件走索引)避免嵌套查询

2019-11-21 11:27:02 81

原创 java8新增特性

lambdastreamoptionaldate/timeLocal(本地) − 简化了日期时间的处理,没有时区的问题。Zoned(时区) − 通过制定的时区处理日期时间。函数式接口一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口接口默认实现接口可以有实现方法,而且不需要实现类去实现其方法,方法名前面加个 default 关键字方法引用构造器引用...

2019-11-21 10:15:21 77

原创 数组、链表、和哈希表(散列表)的区别

数组操作数据(增加): 是将原数组的数据复制一份,再加上增加的对应位置的数据,形成一个新的数组。所以较慢。查找数据:数组是有下标的,根据下标进行查找。链表一个链表的数据单元,结构是存储着一个数据,以及下一个链表单元数据的地址。如下所示。数据 下一个链表单元的地址操作数据(增加):如 a-b。在ab之间增加一个c,增加c这个单元,并修改c的“下一个链表单元的地址”为b的地址,并将a的“下...

2019-11-20 17:23:57 2601

原创 Java8 ConcurrentHashMap

ConcurrentHashMap初始化// 这构造函数里,什么都不干public ConcurrentHashMap() {}public ConcurrentHashMap(int initialCapacity) { if (initialCapacity < 0) throw new IllegalArgumentException(); ...

2019-11-20 16:42:00 89

转载 Java8 HashMap

HashMapJava8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其散列表是由数组+链表+红黑树组成。Java7 HashMap查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)O(n)O(n)。为了降低这部分的开销,在 Java8 中,当链表中的元素...

2019-11-20 15:34:24 60

原创 git合并本地提交记录 idea

idea git选择VersionController的log选择要操作的记录,右键选择interactivelyRebaseFromHere选择要操作的记录将其action改为squash,然后点击startRebasingpick:保留该commit(缩写:p)reword:保留该commit,但我需要修改该commit的注释(缩写:r)edit:保留该commit, 但我要...

2019-11-20 11:12:17 2919

原创 mysql请求执行流程

执行流程连接器1. 客户端发起一条Query请求,监听客户端的‘连接管理’接收请求2. 将请求转发到‘连接进/线程模块’3. 调用‘用户模块’来进行授权检查4. ‘连接进/线程’从‘线程连接池’中取出空闲的被缓存的连接线程和客户端请求对接,如果失败则创建一个新的连接请求查询缓存1. 检查Query语句是否完全匹配,接着再检查是否具有权限,都成功则直接取数据返回分析器1. 查询缓...

2019-11-20 10:40:05 396

原创 mysql数据库优化的思路

数据库优化的思路explaintype字段system→const→eq_ref→ref→range→index→allsystem \to const \to eq\_ref \to ref \to range \to index \to allsystem→const→eq_ref→ref→range→index→allsystem:表只有一行记录(等于系统表),这是const类型的...

2019-11-20 09:57:31 116

原创 mysql索引

索引索引类型primary: 唯一索引,不允许为null。normal: 普通非唯一索引。unique: 表示唯一的,不允许重复的索引,可以为null。fulltext: 表示全文搜索的索引。 FULLTEXT用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的INDEX 也可以。spatial: 空间索引。为什么使用默认B-Tree(B+Tree)...

2019-11-20 09:56:19 79

原创 数据库隔离级别

数据库隔离级别MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)。未提交读(READ UNCOMMITTED)。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)。提交读(READ COMMITTED)。本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会...

2019-11-20 09:55:31 96

原创 数据库范式

数据库范式第一范式(1NF)第一范式就是无重复的列在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原...

2019-11-20 09:54:06 135

原创 spring boot核心原理

约定优于配置spring boot最为人津津乐道的是大量减轻了配置工作量,只要有一个被@SpringBootApplication注解的启动类就可以运行。之所以能大量减少用户的配置工作量,特别是减少了配置集成第三方组件的工作量,如mybatis,hibernate,redis。spring默认编写了很多配置类(被@Configuration注解的类),这些类位于autoconfig’s ja...

2019-11-18 16:27:53 201

空空如也

空空如也

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

TA关注的人

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