自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Oracle count时响应速度慢

在执行一条分页查询的sql时,select *的结果只需要150ms左右,正常也只需要100ms左右。但当where条件中含有某一个参数时会导致select count(1) 的速度非常慢,需要140s以上;select *响应速度正常。且仅在生产环境会出现该问题,测试环境仍然只需要100ms左右。该问题导致了页面会卡死,若反复执行带有该参数的sql会导致当前节点不可用,k8s重启该pod。...

2022-08-29 13:38:44 4395 5

原创 Springboot中@Value注解未注入值

在bootstrap.yml中配置了七牛云的相关值,但在代码中通过@Value注解未注入该值。debug调试发现该值未NULL问题原因问题原因其实很基础,就是@Value注解的生效条件。我是因为使用的是静态变量。@Value注解生效的条件时,该字段不能为,不能是,并且该类必须注册为(加@Component注解)。在使用时必须注入该对象,而的方式创建对象。第一种方案最简单,将static去掉即可。但有的时候我们就希望该字段是静态的该怎么办呢?第二个方法,先思考为什么不能使用@Value注入静态变量的

2022-06-27 14:50:12 917

原创 五种I/O模型

I/O模型是指对输入和输出做出的规范与实现同步/异步主要区别在I/O进程需不需要全程参与。同步:全程需要当前进程参与。异步:当前进程发送完请求指令之后,就不需要参与后续的操作,意味着发送请求后执行完其他操作就可以停止了,不需要管I/O是否完成。这也就注定异步I/O不会阻塞。阻塞/非阻塞区别在于调用者进程是否需要挂起进行等待。阻塞:需要等待I/O操作完成后才可以执行后续代码。非阻塞:不需要等待I/O操作完成就可以执行后续的代码。也就是说并不关心I/O的执行状态。💡 这两个概念很容易

2022-05-16 13:42:05 291

原创 JAVA锁机制

锁机制一、介绍锁机制是用来实现线程间同步的基础,并非是JAVA中独有的概念。本篇主要讲JAVA中的锁,按照锁分类,有以下几种锁公平锁/非公平锁可重入锁/不可重入锁独占锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁但这些锁并不完全指的是锁,有的是锁设计,有的是锁状态,也有的是锁的特性。下面就介绍一下关于这些锁二、公平锁/非公平锁1. 公平锁就是指当多个线程都要申请锁时,需要按照申请锁的先后顺序来进行获取。2. 非公平锁指当多个线程申请锁时,无

2022-04-14 16:56:31 3491

原创 Redis进阶学习

redis进阶学习笔记,redis发布订阅模式,redis集群,主从复制与哨兵模式。高并发情况下的缓存穿透,缓存击穿,缓存雪崩。缓存更新:延迟双删

2022-04-13 13:46:03 1111

原创 Redis基础

redis基础学习笔记,包含内容:redis常用操作,redis中的事务与乐观锁,reids的五大基本数据类型,过期策略,数据持久化的两种方式:RDB和AOF。

2022-04-13 11:11:27 365

原创 Slf4j踩坑日记--实现冲突和配置文件不生效

Slf4j实现冲突(Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory])Log4j2日志配置文件(log4j2.xml)不生效

2022-04-06 17:33:50 1837

原创 JAVA注解(Annotation,@interface)复习

文章目录注解内置注解注解的定义注解的使用注解获取总结注解JAVA注解(Annotation)是JDK5引入的一种注释机制,可用于类、方法、字段、参数、包上。虽然是注释机制,但不同于注释的是注解可以被嵌入到字节码当中,从而让我们可以在运行时获取到注解,也就是说可以通过反射来获取注解中的内容。内置注解JAVA中是有几个内置注解的,像我们最常见的@Override,@Deprecated。下面详细列举一下内置注解。@Override:这个注解应该都不陌生,就是检查本方法是否是重写方法的。@Depre

2022-04-04 10:56:20 309

原创 开发问题--Dubbo服务日志记录

开发问题记录需求描述:甲方要求能看到用户的行为记录,需要给现有的所有业务添加操作日志记录,记录当前用户做的是什么业务,使用的什么功能,操作数据的id,业务执行是否成功以及操作时间。(数据会定期删除,并且用户量不是很大,记录字段也不长,不会有数据量过大的问题)1. 使用SpringBoot拦截器intercepter解决思路:因为使用的Dubbo调用(这里其实是个坑,思路从一开始就错了),所以不能使用过滤器,选择使用拦截器进行逻辑编写,因为controller层的每个类和方法都添加swagger的注解,

2022-04-01 13:49:07 1005

原创 JAVA泛型详细学习

泛型之前对泛型一直没有系统的学习,直到学习函数式编程时才发现还是有很多空缺,现在就系统的学习一下。1. 概述泛型在Java中还是比较重要的,提供了编译时的类型检查。泛型的解释是参数化的类型。这还是比较好理解的,就是将类型作为一个参数提供给方法或者类,就和方法的形参是类似的,不过写法不一样。在我们调用方法的时候才会确定具体需要的类型。泛型可以用在类,接口,方法上,被称为泛型类,泛型接口,泛型方法。2. 对比可能说的还是有点抽象了,举个大家常用的例子对比一下就知道了,我们现在想要存一组数字List

2022-03-29 13:57:06 243

原创 Docker以及DockerFile学习

Docker学习网上介绍Docker优点的大多很官方,我这里就用自己的理解描述一下docker。介绍:Docker是使用GO语言编写的虚拟化技术(和虚拟机的虚拟化是两个概念,虚拟机的虚拟化是硬件层面的),它主要解决的是程序运行所需环境的问题。Docker对进程进行了隔离,让进程独立出来成为一个容器。容器和容器之间是完全隔离的,他们之间没有任何接口。那么什么是镜像?什么又是容器?镜像就是一个特殊的文件系统,提供了运行程序时所需要的配置、环境、资源、程序等。镜像是不会改变的,不论创建多少次。而容器是通过镜

2022-03-28 15:47:22 819

原创 函数式编程Stream学习

JAVA函数式编程学习函数式接口java8中有四大函数式接口Function<T, R>(方法),Consumer(消费者), Supplier(提供者), Predicate(谓词)。函数式接口有一个共同特点,即只有一个抽象方法。这为我们可以使用lambda表达式创造了条件。Function<T, R>T:入参,R:出参抽象方法:R apply(T t);ConsumerT:入参,void:出参抽象方法:void accept(T t)SupplierT: 出

2022-03-25 16:23:38 978

原创 重写hashCode和equals

hashCode和equals重写重写hashCode和equals时需注意一点,equals相等则hashCode一定相等(相同对象hash值一致);hashCode相同equals不一定相等(hash值相同不能确定为同一个对象)。所以重写时要保证hashCode的字段和equals的字段相同,否则会导致相同对象有不同的hash值!重写hashCodeObject中的hashCode为native方法,我们对类的hashCode重写本质上只是调用Object中的hashCode进行二次运算,不一定

2022-03-23 15:41:18 1668

原创 JAVA foreach中不能使用add/remove

JAVA foreach中不能使用add/removejava几种常用的遍历List的方式,for,foreach(增强for循环),iterator。其中在使用foreach和iterator循环时不能使用list的add/remove方法,会导致ConcurrentModificationException。iterator迭代器List实现类中维护了modCount(集合修改次数),而iterator内维护了一个expectedModCount(期望集合修改次数),在初始化iterator时会

2022-03-23 09:38:00 1133

空空如也

空空如也

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

TA关注的人

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