
Java基础与框架
文章平均质量分 66
关于Java基础与框架的一些探讨
CS___001
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
说说对Spring MVC的了解吧?工作原理了解吗?核心组件有哪些?
MVC 是⼀种设计模式,Spring MVC 是⼀款很优秀的 MVC 框架。Spring MVC 可以帮助我们进⾏更简洁的 Web 层的开发,并且它天⽣与 Spring 框架集成。Spring MVC 下,我们⼀般把后端项⽬分为Service 层(处理业务)、Dao 层(数据库操作)、Entity 层(实体类)、Controller 层(控制层,返回数据给前台⻚⾯)。原创 2024-04-13 09:38:56 · 441 阅读 · 0 评论 -
Java中常用的线程池有哪些?线程池常用的阻塞队列有哪些?
newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过任务需要,可灵活回收空闲线程。如果线程池长度小于任务需要,可灵活地创建线程。(多少任务多少线程)原创 2024-04-13 09:06:12 · 358 阅读 · 0 评论 -
Spring 提供了哪些配置方式?什么是Spring装配?什么是AOP?AOP 有哪些实现方式?Spring AOP 和 AspectJ AOP 有什么区别?
当 bean 在 Spring 容器中组合在一起时,它被称为装配或 bean 装配。Spring 容器需要知道需要什么bean以及容器应该如何使用依赖注入来将 bean 绑定在一起,装配 bean。Spring 容器能够自动装配 bean,可以通过检查 BeanFactory 的内容,让 Spring 自动解析 bean 的协作者。原创 2024-04-13 09:33:52 · 699 阅读 · 0 评论 -
聊一聊Bean的生命周期、注入Bean的注解、@Autowired和@Resource的区别
Bean的生命周期是由容器来管理的。主要分创建和销毁两个时期。创建过程:首先实例化Bean,并设置Bean的属性,根据其实现的Aware接口(主要是BeanFactoryAware接口,BeanFactoryAware接口,ApplicationContextAware接口)设置依赖信息。原创 2024-04-13 09:26:30 · 332 阅读 · 0 评论 -
什么是spring Bean?将一个类声明为spring Bean的注解有哪些?单例Bean的线程安全问题了解吗?
在Spring框架中,Spring Bean是由IOC(控制反转)容器管理的对象。当一个类被Spring容器管理时,它就被称为Spring Bean。Spring容器负责创建Bean的实例,管理其生命周期,包括初始化、装配依赖关系(通过依赖注入)以及其它服务。Spring Bean遵循面向接口编程的原则,可以通过配置文件或注解方式进行定义和配置。原创 2024-04-13 09:22:03 · 339 阅读 · 0 评论 -
使用Spring框架的好处是什么?什么是Spring IOC容器?什么是依赖注入?可以通过多少种方式完成依赖注入?如何理解IOC和DI?
Spring 框架因其较小的体积和较低的资源消耗而被归类为轻量级框架。通过容器(IOC 容器)来管理和装配应用程序中的对象及其依赖关系。开发者不再需要手动实例化和维护对象间的依赖链,而是通过配置(如XML或注解)声明对象的依赖,容器负责在运行时自动注入这些依赖,从而实现各组件之间的松散耦合。原创 2024-04-13 09:19:19 · 812 阅读 · 0 评论 -
什么是AQS?AQS的底层实现原理是什么?资源共享方式有哪些?同步工具类有哪些?
AQS 是一个锁框架,它定义了锁的实现机制,并开放出扩展的地方,让子类去实现。比如我们在 lock 的时候,AQS 开放出 state 字段,让子类可以根据 state 字段来决定是否能够获得锁,对于获取不到锁的线程 AQS 会自动进行管理,无需子类关心。原创 2024-04-13 09:09:42 · 310 阅读 · 0 评论 -
execute()和submit(),Runnable和Callable,shutdown()和shutdownNow(),isTerminated()和isShutdown(),它们的区别是什么?
execute()方法,没有返回值,接收到Runnable对象就立即开始执行任务。由于没有返回值,所以不知道任务是否完成。submit()方法,返回一个Future对象。如果任务是Runnable类型,那么submit()返回的Future中的结果将是null。Future对象可以用于获取任务执行的结果、取消任务、检查任务是否已完成。(future的get()方法来获取返回值)原创 2024-04-12 09:43:39 · 304 阅读 · 0 评论 -
线程池(ThreadPoolExecutor)是用来做什么的?线程池的七个参数是什么?线程池执行任务的流程是什么?
线程池,是管理一系列线程的资源池,提供了一种管理和限制线程资源的方式。每个线程池还维护一些基本统计信息,例如已完成任务的数量。原创 2024-04-12 09:41:11 · 320 阅读 · 0 评论 -
什么是Threadlocal?它的底层是怎么实现的?Threadlocal是如何导致内存泄漏?
ThreadLocal,即线程本地变量。如果创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝。多个线程操作这个变量的时候,实际是操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了线程安全问题。 ThreadLocal的应用场景有数据库连接池、会话管理。原创 2024-04-12 09:37:23 · 175 阅读 · 0 评论 -
synchronized和volatile的区别是什么?synchronized和lock的区别是什么?synchronized和ReentrantLock的区别是什么?
volatile本质是在告诉JVM当前变量在线程工作内存中的值是不可靠的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其它线程被阻塞住。synchronized会创建一个内存屏障,内存屏障指令保证了所有CPU操作结果都会直接刷到主存中,从而保证操作的内存可见性。原创 2024-04-07 20:23:23 · 362 阅读 · 0 评论 -
JVM对synchronized的底层做了哪些优化?
锁有四种状态,并且会因实际情况进行膨胀升级,其膨胀方向是:无锁—>偏向锁—>轻量级锁—>重量级锁,并且膨胀方向不可逆。原创 2024-04-07 20:20:35 · 428 阅读 · 0 评论 -
聊一聊volatile关键字的底层原理、synchronized关键字的底层原理
synchronized同步代码块的实现是通过monitorenter和monitorexit指令,其中monitorenter指令指向同步代码块的开始位置,monitorexit指令则指明同步代码块的结束位置。当执行 monitorenter指令时,线程试图获取锁也就是获取monitor的持有权。原创 2024-04-07 20:18:35 · 410 阅读 · 0 评论 -
sleep()方法和wait()方法有什么共同点和区别?Thread类中调用start()方法时,会执行run()方法,那为什么不能直接调用run()方法呢?
sleep()方法,是Thread类的静态方法,当前线程将睡眠n毫秒,线程进入阻塞状态。当睡眠时间到了,会解除阻塞,进入就绪状态,等待分配CPU时间片。睡眠时不释放锁(如果有的话)。wait()方法,是Object的方法,必须与synchronized关键字一起使用,调用后,线程进入阻塞状态,当其它线程调用notify()方法或者notifyAll()方法唤醒它后,当前线程就会解除阻塞状态。睡眠时,会释放互斥锁。但是,只有重新占用互斥锁之后,才会进入就绪状态。原创 2024-04-07 20:14:25 · 232 阅读 · 0 评论 -
聊聊JUC并发编程、线程和进程的区别、Java中创建线程的三种方式
进程是操作系统资源分配的基本单位,而线程是CPU处理器任务调度和执行的基本单位。每个进程都有独立地址空间,包含代码、数据、堆、栈等资源,程序之间的切换会有较大的开销;而线程可以看做轻量级的进程,同一进程的线程共享该进程的地址空间,每个线程也都有自己独立的Java栈、本地方法栈和程序计数器,线程之间切换的开销小。原创 2024-04-06 12:10:03 · 341 阅读 · 0 评论 -
聊聊JVM调优常用的命令、dump文件的作用
分析Dump文件,快速定位内存泄漏;直观地查看各部分内存区域的使用情况,帮助优化内存分配策略和GC设置;查找性能瓶颈,当系统出现性能问题时,帮助了解是否存在由于大量对象导致的频繁GC,或者是大对象过多引发的内存碎片等情况。原创 2024-04-06 12:03:24 · 320 阅读 · 0 评论 -
聊聊什么是双亲委派机制、类加载的过程、常见的类加载器
当一个类加载器收到一个类加载的请求,它首先不会尝试自己去加载,而是将这个请求委派给父类加载器去加载,如果父类加载器还有父类的话,那么就继续往上委派,只有父类加载器在自己的搜索范围类查找不到指定类时,子加载器才会尝试自己去加载该类,子加载器找不到该类,就继续传递给下面的子加载器。原创 2024-04-02 09:00:15 · 217 阅读 · 0 评论 -
聊一聊Java中的垃圾回收算法、垃圾回收器、轻GC、重GC
java中有四种垃圾回收算法,分别是标记清除法、标记压缩法、复制算法、分代收集算法。GC主要作用于堆内存。原创 2024-04-02 08:37:49 · 1474 阅读 · 0 评论 -
聊一聊JVM内存结构、Java内存模型(JMM)、JMM的Happens-before规则、JMM中保证同步的关键字
Java内存模型,也称为JMM,它在底层内存模型的基础上,定义了多线程编程的一组规则,来保证线程间的可见性。这组规则,就是Happens-before规则。原创 2024-03-31 09:44:25 · 794 阅读 · 0 评论 -
Java中常用的集合以及底层的数据结构的拓展问题
ArrayList扩容的本质,就是计算出新的扩容数组的长度,这个长度是原来长度的1.5倍,然后把新数组的实例创建出来,并将原有数组内容复制到新数组中去。原创 2024-03-28 21:12:10 · 942 阅读 · 1 评论 -
Java中常用的集合以及底层的数据结构
一个主要是Collection接口下面Set、List、Queue。另一个是Map接口,主要用来存放键值对。原创 2024-03-27 15:11:59 · 225 阅读 · 1 评论