自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java-线上问题排查

监控中有一条sql,其where含有索引字段,但是仍然为慢sql,通过查询执行计划得知,因为创建的是联合索引,而它不符合联合索引的最左原则匹配原则导致sql实质未走索引。而后分析相关sql发现,cpu飙升原因是因为锁等待导致(定时任务拉取风控系统的相关数据,我们通过某一维度查库并入库整合,但是因为存在批量的用户恶意刷单、刷风控导致当前用户下数据较多,且存在并发情况,导致update同一用户数据时发生锁等待情况(InnoDB会在update的时候自动给行记录加锁,以防止其他线程同时更新该行记录。

2025-12-23 20:21:38 703

原创 java-设计模式面试篇

是常见问题的可重用解决方案模板,可提高代码的可重用性、可维护性、可扩展性。单例模式是一种创建型设计模式,它确保一个类只有一个实例,并只提供一个全局访问点来获取该实例。实现思想:私有静态变量、构造函数是private、提供一个方法可以初始化单例对象且仅能初始化一个、线程安全策略模式是一种行为设计模式,它允许在运行时根据不同情况选择算法的不同实现。不同情况选择不同策略,新增策略时也符合开闭原则、单一原则等。

2025-12-17 23:26:55 890

原创 java-Docker基础教学

Docker 是一个开源的应用容器引擎,是C/S架构(客户端-服务端),基于 Go 语言开发。Docker 是一个容器化平台,用于将应用程序及其所有依赖项打包到一个标准化的、轻量级的、可移植的容器中。容器可以在任何环境中(开发、测试、生产)一致地运行。(即一次封装,到处运行cp本地文件系统(OS操作系统|宿主机)和容器之间进行文件或者文件夹拷贝exec登录一个容器,使用命令行操作正在运行的容器。images镜像的集合查询。ps容器列表pull下载镜像restart。

2025-12-15 23:15:31 555

原创 java-SpringCloud从0-1基础教学

spring提供的一种包含多种便捷访问远程Http服务的方法,也属于Restful方式,即HTTP+JSON。Eureka是服务注册中心,采用了CS的设计架构。(检测服务心跳,便于监控和运维)客户端负载均衡工具,主要功能是提供客户端的软件负载均衡算法和服务调用。(nginx是服务端负载均衡,ribbon是本地负载均衡)简单来说Ribbon=负载均衡+RestTemplate调用Feign是一个声明式的web服务客户端,便于服务调用(也是http+json),

2025-12-14 15:09:06 922

原创 java-springboot基础

作用:其最主要作用就是帮助开发人员快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用。特点:自动配置、起步依赖二、创建springboot项目1.创建maven项目2.添加依赖--添加父工程坐标--><parent></parent>--JDK版本-->--添加web启动器 web项目需要-->--引入spring‐boot‐starter;所有starter的基本配置--></project>

2025-10-29 19:41:32 1905

原创 java-nginx基础

是一个高性能的HTTP(可以作为静态页面的web服务器)和反向代理服务器。

2025-10-20 20:24:42 831

原创 八股-jvm基础

启动类加载器(Bootstrap) C++语言扩展类加载器(Extension) Java语言应用程序类加载器(AppClassLoader)也叫系统类加载器 Java语言用户自定义加载器共享区间 ,被每个线程所共享接口:native 修饰本地方法栈:记录本地方法库:实现又叫栈内存,其生命周期与线程一致!即栈随着线程的创建而创建,随着线程的结束而释放(栈内存中不存在垃圾回收问题!

2025-09-30 19:30:17 1297

原创 八股 - java并发

提前创建好一批线程,然后保存在线程池中,当有任务需要执行的时候,从线程池中选一个线程来执行任务。这样可以避免频繁创建和销毁线程的开销。(Java中的线程池都继承自ExecutorService这个接口,具体的实现上有两种线程池,分别加ThreadPoolExetutor和通过为每一个线程创建一份共享变量的副本来保证各个线程之间的变量的访问和修改互相不影响(即变量在线程内共享的,线程间互斥)。主要用于解决并发问题/在线程间传递数据。重要的关键字,主要用来加锁即同步锁,以此实现同步方法/同步代码块。

2025-09-25 14:45:24 1636

原创 八股-java集合

原因:线程1先进性扩容,桶2中有A->B元素,将A重新计算分配到了其他桶,此时还未对B进行计算分配,线程2开始了扩容,此时线程2不知道线程1对A进行了什么操作,看到的是桶2只有B->null的元素,于是对B进行扩容操作,重新分配桶,线程2扩容结束后线程1继续进行对B未完成的扩容操作,线程1并不知道B已经分配了,于是重新进行计算分配,因为头插入法导致后来B插入到了A之前,也就是B指向了A B->A,而此时对于之前的旧操作A仍然指向B,于是形成死循环B->A->B,无法get到值而且死循环会导致CPU爆满。

2025-09-12 15:21:46 779

原创 八股-java基础

例如传入一个int数-2147483648,取它的绝对值,Math.abs(-2147483648),得到的结果还是-2147483648而不是2147483648,因为他已经超过了int的取值范围,所以会对(2147483647)的二进制编码(01111111 11111111 11111111 11111111)+1,最终得到的就是-2147483648。当创建的字符串包含2字节的元素,则用utf-16表示并存放于byte[]中,和char[]其实一样,只不过换了容器而已。

2025-09-08 16:43:56 707

原创 Lambda表达式 及 Stream流

3.如果方法体中只有一句代码,所在的大括号以及;可以省略,若有return 则可可以省略。2.如果重写方法的参数只有一个,所在的小括号可以省略(无参数的话不可省略())检测函数式接口:在接口上面,@FunctionalInterface。函数式接口:接口中必须有且只能有一个抽象方法。学习期建议先写成匿名内部类,再转换成Lambda。->:将参数传递到方法体中。():重写方法的参数位置。{}:重写方法的方法体。b.必须有函数式接口做方法参数传递。定义格式:()->{}1.重写方法的参数类型可以省略。

2024-10-18 18:03:13 357

原创 数组 + 包装类 + 线程

1.创建class继承thread2.重写run方法3.再使用地创建自定义线程对象4.调用start方法。

2024-10-15 14:50:03 329

空空如也

空空如也

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

TA关注的人

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