- 博客(134)
- 资源 (1)
- 收藏
- 关注
原创 数据结构与算法之ACM Fellow-算法 2.3 快速排序
更多资源夸克网盘资源群本节的主题是,它可能是应用最广泛的排序算法了。快速排序流行的原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。快速排序引人注目的特点包括它是原地排序(只需要一个很小的辅助栈),且将长度为的数组排序所需的时间和成正比。我们已经学习过的排序算法都无法将这两个优点结合起来。另外,快速排序的内循环比大多数排序算法都要短小,这意味着它无论是在理论上还是在实际中都要更快。它的主要缺点是非常脆弱,在实现时要非常小心才能避免低劣的性能。
2025-04-10 01:03:37
464
原创 Java核心技术面试精讲第39讲 | 谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?
专栏的绝大部分主题都侧重于Java语言和虚拟机,基本都是单机模式下的问题,今天我会补充一个分布式相关的问题。严格来说,分布式并不算是Java领域,而是一个单独的大主题,但确实也会在Java技术岗位面试中被涉及。在准备面试时,如果有丰富的分布式系统经验当然好;如果没有,你可以选择典型问题和基础技术进行适当准备。关于分布式,我自身的实战经验也非常有限,专栏里就谈谈从理论出发的一些思考。今天我要问你的问题是,谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?
2025-03-06 17:20:42
819
原创 Java核心技术面试精讲 第38讲 | 对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?
今天我会对NIO进行一些补充,在中,我们初步接触了Java提供的几种IO机制,作为语言基础类库,Java自身的NIO设计更偏底层,这本无可厚非,但是对于一线的应用开发者,其复杂性、扩展性等方面,就存在一定的局限了。在基础NIO之上,Netty构建了更加易用、高性能的网络框架,广泛应用于互联网、游戏、电信等各种领域。今天我要问你的问题是,对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?
2025-03-06 17:19:45
693
原创 Java核心技术面试精讲 第37讲 | 谈谈Spring Bean的生命周期和作用域?
在企业应用软件开发中,Java是毫无争议的主流语言,开放的Java EE规范和强大的开源框架功不可没,其中Spring毫无疑问已经成为企业软件开发的事实标准之一。今天这一讲,我将补充Spring相关的典型面试问题,并谈谈其部分设计细节。今天我要问你的问题是,谈谈Spring Bean的生命周期和作用域?
2025-03-06 17:19:05
637
原创 Java核心技术面试精讲 第36讲 | 谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?
在日常开发中,尤其是业务开发,少不了利用Java对数据库进行基本的增删改查等数据操作,这也是Java工程师的必备技能之一。做好数据操作,不仅仅需要对Java语言相关框架的掌握,更需要对各种数据库自身体系结构的理解。今天这一讲,作为补充Java面试考察知识点的完整性,关于数据库的应用和细节还需要在实践中深入学习。今天我要问你的问题是,谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?
2025-03-06 17:18:27
932
原创 Java核心技术面试精讲 第35讲 | JVM优化Java代码时都做了什么?
我在专栏上一讲介绍了微基准测试和相关的注意事项,其核心就是避免JVM运行中对Java代码的优化导致失真。所以,系统地理解Java代码运行过程,有利于在实践中进行更进一步的调优。今天我要问你的问题是,JVM优化Java代码时都做了什么?与以往我来给出典型回答的方式不同,今天我邀请了隔壁专栏的作者,同样是来自Oracle的郑雨迪博士,让他以JVM专家的身份去思考并回答这个问题。
2025-03-06 17:17:45
996
原创 Java核心技术面试精讲 第34讲 | 有人说“Lambda能让Java程序慢30倍”,你怎么看?
在上一讲中,我介绍了Java性能问题分析的一些基本思路。但在实际工作中,我们不能仅仅等待性能出现问题再去试图解决,而是需要定量的、可对比的方法,去评估Java应用性能,来判断其是否能够符合业务支撑目标。今天这一讲,我会介绍从Java开发者角度,如何从代码级别判断应用的性能表现,重点理解最广泛使用的基准测试(Benchmark)。今天我要问你的问题是,有人说“Lambda能让Java程序慢30倍”,你怎么看?为了让你清楚地了解这个背景,请参考下面的代码片段。
2025-03-06 17:17:08
696
原创 Java核心技术面试精讲 第33讲 | 后台服务出现明显“变慢”,谈谈你的诊断思路?
在日常工作中,应用或者系统出现性能问题往往是不可避免的,除了在有一定规模的IT企业或者专注于特定性能领域的企业,可能大多数工程师并不会成为专职的性能工程师,但是掌握基本的性能知识和技能,往往是日常工作的需要,并且也是工程师进阶的必要条件之一,能否定位和解决性能问题也是对你知识、技能和能力的检验。今天我要问你的问题是,后台服务出现明显“变慢”,谈谈你的诊断思路?
2025-03-06 17:16:34
816
原创 Java核心技术面试精讲 第32讲 | 如何写出安全的Java代码?
在上一讲中,我们已经初步接触了Java安全,今天我们将一起探讨更多Java开发中可能影响到安全的场合。很多安全问题,在特定的上下文,存在着不同的定义,尽管本质是相似或一致的,这是由于Java平台自身的特性所带来特有的问题。今天这一讲我将侧重于Java开发者的角度谈代码安全,而不是讲广义的安全风险。今天我要问你的问题是,如何写出安全的Java代码?
2025-03-06 17:15:31
639
原创 Java核心技术面试精讲 第31讲 | 你了解Java应用开发中的注入攻击吗?
安全是软件开发领域永远的主题之一,随着新技术浪潮的兴起,安全的重要性愈发凸显出来,对于金融等行业,甚至可以说安全是企业的生命线。不论是移动设备、普通PC、小型机,还是大规模分布式系统,以及各种主流操作系统,Java作为软件开发的基础平台之一,可以说是无处不在,自然也就成为安全攻击的首要目标之一。今天我要问你的问题是,你了解Java应用开发中的注入攻击吗?
2025-03-06 17:14:50
992
原创 Java核心技术面试精讲第30讲 | Java程序运行在Docker等容器环境有哪些新问题?
如今,Docker等容器早已不是新生事物,正在逐步成为日常开发、部署环境的一部分。Java能否无缝地运行在容器环境,是否符合微服务、Serverless等新的软件架构和场景,在一定程度上也会影响未来的技术栈选择。当然,Java对Docker等容器环境的支持也在不断增强,自然地,Java在容器场景的实践也逐渐在面试中被涉及。我希望通过专栏今天这一讲,能够帮你能做到胸有成竹。今天我要问你的问题是,Java程序运行在Docker等容器环境有哪些新问题?
2025-03-06 17:14:11
904
原创 29讲 | Java内存模型中的happen-before是什么?
Java语言在设计之初就引入了线程的概念,以充分利用现代处理器的计算能力,这既带来了强大、灵活的多线程机制,也带来了线程安全等令人混淆的问题,而Java内存模型(Java Memory Model,JMM)为我们提供了一个在纷乱之中达成一致的指导准则。今天我要问你的问题是,Java内存模型中的happen-before是什么?
2025-03-06 12:27:05
2918
原创 29讲 | Java内存模型中的happen-before是什么?
Java语言在设计之初就引入了线程的概念,以充分利用现代处理器的计算能力,这既带来了强大、灵活的多线程机制,也带来了线程安全等令人混淆的问题,而Java内存模型(Java Memory Model,JMM)为我们提供了一个在纷乱之中达成一致的指导准则。今天我要问你的问题是,Java内存模型中的happen-before是什么?
2025-03-05 14:34:41
912
原创 Java核心技术面试精讲第28讲 | 谈谈你的GC调优思路?
我发现,目前不少外部资料对G1的介绍大多还停留在JDK 7或更早期的实现,很多结论已经存在较大偏差,甚至一些过去的GC选项已经不再推荐使用。所以,今天我会选取新版JDK中的默认G1 GC作为重点进行详解,并且我会从调优实践的角度,分析典型场景和调优思路。下面我们一起来更新下这方面的知识。今天我要问你的问题是,谈谈你的GC调优思路?
2025-03-05 14:32:08
741
原创 Java核心技术面试精讲第27讲 | Java常见的垃圾收集器有哪些?
垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展, Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。今天我要问你的问题是,Java常见的垃圾收集器有哪些?
2025-03-05 14:31:13
494
原创 Java核心技术面试精讲第26讲 | 如何监控和诊断JVM堆内和堆外内存使用?
上一讲我介绍了JVM内存区域的划分,总结了相关的一些概念,今天我将结合JVM参数、工具等方面,进一步分析JVM内存结构,包括外部资料相对较少的堆外部分。今天我要问你的问题是,如何监控和诊断JVM堆内和堆外内存使用?
2025-03-05 14:30:18
655
原创 Java核心技术面试精讲第25讲 | 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?
今天,我将从内存管理的角度,进一步探索Java虚拟机(JVM)。垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。今天我要问你的问题是,谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?
2025-03-05 14:14:32
835
原创 Java核心技术面试精讲第24讲 | 有哪些方法可以在运行时动态生成一个Java类?
在开始今天的学习前,我建议你先复习一下有关动态代理的内容。作为Java基础模块中的内容,考虑到不同基础的同学以及一个循序渐进的学习过程,我当时并没有在源码层面介绍动态代理的实现技术,仅进行了相应的技术比较。但是,有了的类加载的学习基础后,我想是时候该进行深入分析了。今天我要问你的问题是,有哪些方法可以在运行时动态生成一个Java类?
2025-03-05 14:12:32
680
原创 Java核心技术面试精讲第23讲 | 请介绍类加载过程,什么是双亲委派模型?
Java通过引入字节码和JVM机制,提供了强大的跨平台能力,理解Java的类加载机制是深入Java开发的必要条件,也是个面试考察热点。今天我要问你的问题是,请介绍类加载过程,什么是双亲委派模型?
2025-03-05 14:11:31
594
原创 Java核心技术面试精讲 第22讲 | AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?
在今天这一讲中,我来分析一下并发包内部的组成,一起来看看各种同步结构、线程池等,是基于什么原理来设计和实现的。今天我要问你的问题是,AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?
2025-03-05 14:09:43
692
原创 Java核心技术面试精讲第21讲 | Java并发类库提供的线程池有哪几种? 分别有什么特点?
我在中介绍过线程是不能够重复启动的,创建或销毁线程存在一定的开销,所以利用线程池技术来提高系统资源利用效率,并简化线程管理,已经是非常成熟的选择。今天我要问你的问题是,Java并发类库提供的线程池有哪几种?分别有什么特点?
2025-03-05 14:08:40
377
原创 Java核心技术面试精讲 第20讲 | 并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?
在上一讲中,我分析了Java并发包中的部分内容,今天我来介绍一下线程安全队列。Java标准库提供了非常多的线程安全队列,很容易混淆。今天我要问你的问题是,并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?
2025-03-05 14:04:50
1139
原创 Java核心技术面试精讲第19讲 | Java并发包提供了哪些并发工具类?
通过前面的学习,我们一起回顾了线程、锁等各种并发编程的基本元素,也逐步涉及了Java并发包中的部分内容,相信经过前面的热身,我们能够更快地理解Java并发包。今天我要问你的问题是,Java并发包提供了哪些并发工具类?
2025-03-05 14:04:05
739
原创 Java核心技术面试精讲第18讲 | 什么情况下Java程序会产生死锁?如何定位、修复?
今天,我会介绍一些日常开发中类似线程死锁等问题的排查经验,并选择一两个我自己修复过或者诊断过的核心类库死锁问题作为例子,希望不仅能在面试时,包括在日常工作中也能对你有所帮助。今天我要问你的问题是,什么情况下Java程序会产生死锁?如何定位、修复?
2025-03-05 14:03:29
644
原创 Java核心技术面试精讲 第17讲 | 一个线程两次调用start()方法会出现什么情况?
今天我们来深入聊聊线程,相信大家对于线程这个概念都不陌生,它是Java并发的基础元素,理解、操纵、诊断线程是Java工程师的必修课,但是你真的掌握线程了吗?今天我要问你的问题是,一个线程两次调用start()方法会出现什么情况?谈谈线程的生命周期和状态转移。
2025-03-05 14:02:18
664
原创 Java核心技术面试精讲第16讲 | synchronized底层如何实现?什么是锁的升级、降级?
我在对比和分析了synchronized和ReentrantLock,算是专栏进入并发编程阶段的热身,相信你已经对线程安全,以及如何使用基本的同步机制有了基础,今天我们将深入了解synchronize底层机制,分析其他锁实现和应用场景。今天我要问你的问题是 ,synchronized底层如何实现?什么是锁的升级、降级?
2025-03-05 14:01:24
684
原创 Java核心技术面试精讲第15讲 | synchronized和ReentrantLock有什么区别呢?
从今天开始,我们将进入Java并发学习阶段。软件并发已经成为现代软件开发的基础能力,而Java精心设计的高效并发机制,正是构建大规模应用的基础之一,所以考察并发基本功也成为各个公司面试Java工程师的必选项。今天我要问你的问题是, synchronized和ReentrantLock有什么区别?有人说synchronized最慢,这话靠谱吗?
2025-03-05 14:00:22
665
原创 Java核心技术面试精讲 第14讲 | 谈谈你知道的设计模式?
设计模式是人们为软件开发中相同表征的问题,抽象出的可重复利用的解决方案。在某种程度上,设计模式已经代表了一些特定情况的最佳实践,同时也起到了软件工程师之间沟通的“行话”的作用。理解和掌握典型的设计模式,有利于我们提高沟通、设计的效率和质量。今天我要问你的问题是,谈谈你知道的设计模式?请手动实现单例模式,Spring等框架中使用了哪些模式?
2025-03-04 16:16:01
828
原创 Java核心技术面试精讲 第13讲 | 谈谈接口和抽象类有什么区别?
Java是非常典型的面向对象语言,曾经有一段时间,程序员整天把面向对象、设计模式挂在嘴边。虽然如今大家对这方面已经不再那么狂热,但是不可否认,掌握面向对象设计原则和技巧,是保证高质量代码的基础之一。面向对象提供的基本机制,对于提高开发、沟通等各方面效率至关重要。考察面向对象也是面试中的常见一环,下面我来聊聊。今天我要问你的问题是,谈谈接口和抽象类有什么区别?
2025-03-04 16:15:11
1021
原创 Java核心技术面试精讲第12讲 | Java有几种文件拷贝方式?哪一种最高效?
我在专栏上一讲提到,NIO不止是多路复用,NIO 2也不只是异步IO,今天我们来看看Java IO体系中,其他不可忽略的部分。今天我要问你的问题是,Java有几种文件拷贝方式?哪一种最高效?
2025-03-04 16:14:09
934
原创 Java核心技术面试精讲 第11讲 | Java提供了哪些IO方式? NIO如何实现多路复用?
IO一直是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO扩展能力愈发重要。幸运的是,Java平台IO机制经过不断完善,虽然在某些方面仍有不足,但已经在实践中证明了其构建高扩展性应用的能力。今天我要问你的问题是,
2025-03-04 16:12:56
558
原创 Java核心技术面试精讲第10讲 | 如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?
我在之前两讲介绍了Java集合框架的典型容器类,它们绝大部分都不是线程安全的,仅有的线程安全实现,比如Vector、Stack,在性能方面也远不尽如人意。幸好Java语言提供了并发包(java.util.concurrent),为高度并发需求提供了更加全面的工具支持。今天我要问你的问题是,如何保证容器是线程安全的?ConcurrentHashMap如何实现高效地线程安全?
2025-03-04 16:11:50
817
原创 Java核心技术面试精讲第9讲 | 对比Hashtable、HashMap、TreeMap有什么不同?
Map是广义Java集合框架中的另外一部分,HashMap作为框架中使用频率最高的类型之一,它本身以及相关类型自然也是面试考察的热点。今天我要问你的问题是,对比Hashtable、HashMap、TreeMap有什么不同?谈谈你对HashMap的掌握。
2025-03-04 16:10:46
586
原创 Java核心技术面试精讲第8讲 | 对比Vector、ArrayList、LinkedList有何区别?
我们在日常的工作中,能够高效地管理和操作数据是非常重要的。由于每个编程语言支持的数据结构不尽相同,比如我最早学习的C语言,需要自己实现很多基础数据结构,管理和操作会比较麻烦。相比之下,Java则要方便的多,针对通用场景的需求,Java提供了强大的集合框架,大大提高了开发者的生产力。今天我要问你的是有关集合框架方面的问题,对比Vector、ArrayList、LinkedList有何区别?
2025-03-04 16:10:06
1061
原创 Java核心技术面试精讲第7讲 | int和Integer有什么区别?
Java虽然号称是面向对象的语言,但是原始数据类型仍然是重要的组成元素,所以在面试中,经常考察原始数据类型和包装类等Java语言特性。今天我要问你的问题是,int和Integer有什么区别?谈谈Integer的值缓存范围。
2025-03-04 16:09:08
649
原创 Java核心技术面试精讲 第6讲 | 动态代理是基于什么原理?
编程语言通常有各种不同的分类角度,动态类型和静态类型就是其中一种分类角度,简单区分就是语言类型信息是在运行时检查,还是编译期检查。与其近似的还有一个对比,就是所谓强类型和弱类型,就是不同类型变量赋值时,是否需要显式地(强制)进行类型转换。那么,如何分类Java语言呢?通常认为,Java是静态的强类型语言,但是因为提供了类似反射等机制,也具备了部分动态类型语言的能力。言归正传,今天我要问你的问题是,谈谈Java反射机制,动态代理是基于什么原理?
2025-03-04 16:08:02
625
原创 Java核心技术面试精讲 第5讲 | String、StringBuffer、StringBuilder有什么区别?
今天我会聊聊日常使用的字符串,别看它似乎很简单,但其实字符串几乎在所有编程语言里都是个特殊的存在,因为不管是数量还是体积,字符串都是大多数应用中的重要组成。今天我要问你的问题是,理解Java的字符串,String、StringBuffer、StringBuilder有什么区别?
2025-03-04 16:06:52
977
原创 Java核心技术面试精讲 第4讲 | 强引用、软引用、弱引用、幻象引用有什么区别?
在Java语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,理解引用对于掌握Java对象生命周期和JVM内部相关机制非常有帮助。今天我要问你的问题是,强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?
2025-03-04 16:05:58
948
原创 Java核心技术面试精讲第3讲 | 谈谈final、finally、 finalize有什么不同?
Java语言有很多看起来很相似,但是用途却完全不同的语言要素,这些内容往往容易成为面试官考察你知识掌握程度的切入点。今天,我要问你的是一个经典的Java基础题目,谈谈final、finally、 finalize有什么不同?
2025-03-04 16:04:04
727
原创 Java核心技术面试精讲 第2讲 | Exception和Error有什么区别?
世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。Java语言在设计之初就提供了相对完善的异常处理机制,这也是Java得以大行其道的原因之一,因为这种机制大大降低了编写和维护可靠程序的门槛。如今,异常处理机制已经成为现代编程语言的标配。今天我要问你的问题是,请对比Exception和Error,另外,运行时异常与一般异常有什么区别?
2025-03-04 16:03:12
581
《已调试》Java SpringBoot个人理财系统(源码+sql)
2025-03-05
《已调试》springboot layui 装修验收管理系统(源码+sql).zip
2025-03-05
《已调试》java Springboot网上音乐商城(源码+sql+论文)
2025-03-05
价值上万的视频教程互联网程序开发+大数据+Hadoop、hive、Spark
2022-06-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人