自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 try catch应该在for循环的里面还是外面?

注明:微信推文上看到的从三个角度去分析问题 :使用场景、性能分析、个人看法。

2023-12-08 14:31:32 509

原创 Java 并发问题、产生的原因及解决方法

每个cache都是独立的,互相不可见,单个cache中对变量缓存的操作不会影响别的cache,也不知道别的cache中的数据,这样就会导致最终结果的不可控。TheadLocal:当多个线程共同操作一个对象,但是互不影响,不需要同步时,可以不加互斥锁,使用ThreadLocal保证每个线程都有共享对象的一个备份,线程间数据互相隔离,就互不影响。无同步方案:但是互斥锁会阻塞其他线程的执行,效率较低,所以如果线程间不需要协作,即一个线程的执行不依赖于其他线程的执行结果,这种情况就不需要使用互斥锁的方案。

2023-02-24 14:31:46 1517

原创 谈谈synchronized与ReentrantLock的区别?

synchronized为非公平锁,ReentrantLock既可以选公平锁,也可以是非公平锁,通过构造方法new ReentrantLock时传入boolean值进行选择,为空默认false非公平锁,true为公平锁。synchronized锁的是对象,锁是保存在对象头里面的,根据对象头数据来标识是否有线程获得锁/争抢锁,ReentrantLock锁的是线程,根据进入的线程和int类型的state标识锁的获得和争抢。synchronized不需要手动释放锁,代码执行完后系统会自动让线程释放锁的占用。

2023-02-24 10:55:27 234

原创 Redis缓存失效以及解决方案

缓存击穿是指并发查同一条数据,指的是缓存中没有数据,但是数据库中有数据。缓存雪崩就是在设置缓存的时候,redis中的key设置了相同的过期时间,导致缓存在某一时间同时失效了,请求全部访问数据库,造成数据库压力过大,导致雪崩。加锁,比较常用的做法是mutex(互斥锁),在缓存失效的时候,不立即去读取数据库,而是先试用缓存工具的某些带成功操作返回值的操作。缓存穿透是指缓存和数据库中都没有数据,用户不断请求不到数据,这时请求就越过redis直接访问数据库,造成数据库访问量压力过大。缓存击穿和缓存雪崩的区别。

2023-02-22 10:46:22 1315

原创 JVM相关知识

6.垃圾回收器分为串行回收器,并行回收器,并发回收器,串行垃圾回收器单线程,效率低,并行和并发回收器为多线程,但是并发回收器会造成程序阻塞,所以使用并行回收器进行垃圾回收,过程中会产生垃圾回收碎片,会自动转换为串行垃圾回收器,清理完碎片,自动转换为并行垃圾回收器,不会对程序造成影响。1.堆内存(heap):java对象存储空间,创建对象开辟堆内存空间,存储对象的成员,空间只能被垃圾回收器回收,不会自动回收,内存占用超过98%,回收只能2%,内存溢出。功能方面:堆是用来存放对象的,栈是用来执行程序的。

2022-10-07 16:49:17 219

原创 集合和多线程相关知识

notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程。notifyAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有线程,而是让他们竞争,只有获得锁的线程才能进入就绪状态。volaitle是一种轻量级的多线程同步问题解决方案,用volatile修饰的变量,线程自爱每次使用变量的时候,都会读取变量修改后的值。不同点:ArrayList是线程不安全的,效率高,Vector是线程安全的,效率慢,已经弃用。

2022-10-07 09:04:32 301

原创 对象拷贝和反射

克隆分浅克隆和深克隆,浅克隆后的对象中非基本对象和原对象指向同一块内存,因此对这些非基本对象的修改会同时更改克隆前后的对象。可以通过配置文件来动态配置和加载类,以实现软件工程理论里所提及的类与类,模块与模块之间的解耦,反射最经典的应用是Spring框架。AIO:适合连接数比较多且连接时间长的架构,相册服务器,充分调用 OS 参与并发操作,编程复杂,jdk7开始。实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

2022-10-05 19:51:47 221

原创 Java Web基础

可以用,通过url重定向实现,session只是依赖cookie存储sessionId,如果cookie被禁用了,可以使用url中添加sessionId的方式保证session的正常使用,也就是在请求地址上放上sessionId提供服务器获取。3.cookie:有两种,一种是基于窗口的,窗口关闭后,cookie就没有了。动态include:语法:,能够自动检查被包含文件,当客户端对JSP文件进行请求时,会重新将对应的文件包含进来,进行实时的更新。

2022-10-05 16:10:38 337

原创 排序算法和设计模式简单入门

int search(int nums[], int size, int target) //nums是数组,size是数组的大小,target是需要查找的值。模版方法模式:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它所有的依赖者都会收到通知并自动更新。外观模式:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。

2022-10-04 20:38:47 191

原创 java 中的单例模式

单例模式属于创建型模式,提供了一种创建对象的最佳方式在系统的内存中,该类的实例对象有且仅有一个,称之为单例模式。java 中 RunTime 就是单例模式。:1.单例类只能有一个实例2.单例类必须自己创建自己的唯一实例3.单例类必须给所有其他对象提供这一实例。

2022-10-04 19:49:58 174

原创 MySQL篇

不可重复读:指在一个事务内多次读同一数据,在这个事务还没有结束时,另一个事务也访问了该数据,那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样,这就发生了在一个事务内两次读到的数据是不一样的情况,因此成为不可重读。视图是一种虚拟的表,具有物理表相同的功能,可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集,对视图的修改不影响基本表,他使得我们获取数据更容易,相对于多表查询。支持外键约束,并发能力强,处理效率相对会差一点。

2022-10-04 15:30:44 279

原创 关于Redis中的RDB和AOF策略

关于Redis中的RDB和AOF策略

2022-10-03 16:41:00 1144 1

转载 Redis事务机制 -Redis 核心技术与实战

Redis 核心技术与实战

2022-10-03 14:50:31 640

原创 Docker 架构

容器:镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像的运行体。docker: 隔离,镜像(最核心的环境 4m + jdk + mysql)十分的小巧,运行镜像就可以了!Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机通过Socket从客户端访问。Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!容器内的应用直接运行了宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所有就轻便了。

2022-10-02 09:35:46 998

原创 Linux篇

f循环读取 -q不显示处理信息 -v显示详细的处理信息 -c 显示的字节数 -n 显示行数。less与more类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动,而且 less 在查。less与more类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动,而且 less 在查。切换目录用什么命令?翻滚一行),空格(向下滚动一屏),Q(退出命令)。该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示。

2022-09-29 10:51:22 167

原创 SpringCloud篇

1.什么是服务熔断,什么是服务降级?熔断机制是应对雪崩效应的一种微服务链路保护机制,当某个微服务不可用或者响应时间太长时,会进行服务降级,进而熔断该即节点微服务的调用,快速返回错误的响应信息,当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内调用20次,如果失败,就会启动熔断机制。

2022-09-27 16:58:46 585

原创 notify()和notifyAll()有什么区别

notify是对notifyAll()的一个优化,但它有很精确的应用场景,并且要求正确使用,不然可能导致死锁,正确的场景应该是WaitSet中等待的是相同的条件,唤醒任一个都能正确处理接下来的事项,如果唤醒的线程无法正确处理,务必确保继续notify()下一个线程,并且自身需要重新回到WaitSet中。wait()应配合while循环使用,不应该使用if,务必在wait()调用前后都检查条件,如果不满足,必须调用notify()唤醒另外的线程来处理,自己继续wait()直至条件满足在往下执行。

2022-09-25 18:57:15 1714

原创 说说java中实现多线程有几种方法

说说java中实现多线程有几种方法

2022-09-25 17:06:30 308

原创 说一下 JVM 有哪些垃圾回收器?

说一下 JVM 有哪些垃圾回收器

2022-09-25 16:50:57 238

原创 常见调优工具有哪些

调优工具

2022-09-24 20:04:18 291

原创 调优命令有哪些?

调优命令

2022-09-24 19:55:02 281

转载 2022年Java面试题整理

java面试基础

2022-08-05 17:09:32 383 1

原创 java面试(总结篇)

java面试

2022-08-03 16:38:31 2111 1

空空如也

空空如也

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

TA关注的人

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