Java
文章平均质量分 80
梦魇java
这个作者很懒,什么都没留下…
展开
-
【Java进阶营】Java 基础(一)| 使用泛型的正确姿势
为跳槽面试做准备,今天开始进入 Java 基础的复习。希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆。一、什么是泛型泛型,即 “参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化 (动词),类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用 / 调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型.原创 2022-05-01 21:44:39 · 794 阅读 · 0 评论 -
【Java进阶营】热腾腾的 Java研发面试字节跳动99题(含答案):JVM+Spring+MySQL+线程池+锁
JVM的内存结构根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。1. Java虚拟机栈:线程私有;每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态连接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。2.堆:线程共享;被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。3. 方法区:线程共享;被所有线程共享的一块内存区域;用于存储已被虚拟机加载的类信息,常量,静态变量等。4. 程序计数.原创 2022-04-30 19:21:47 · 526 阅读 · 0 评论 -
【Java进阶营】月薪10000+,一天的工作量只改5行代码,我也要当程序员
01有次,客户反馈了一个紧急问题,要求下班前必须得修复。领导安排张工跟进这个问题,张工是一名资深软件工程师,张工接到任务,想重现该问题,结果发现并不是必现,于是定位到排查bug问题所在,费了九牛二虎之力之力,终于从上万行代码中定位到问题所在,最后张工修改了5行代码,编译运行,bug解决了,提交代码。这时已经是下午4点了。张工舒了一口气,伸了一下懒腰,这时跟张工很要好的财务妹子过来了,找张工确认上次报销的事情,看见张工懒羊羊的。“不是吧,你今天又只改这几行代码啊?”妹子问。“是啊,今天的工作就处理这个原创 2022-04-29 16:32:21 · 482 阅读 · 0 评论 -
【Java进阶营】同样是搞IT,年薪 15W 和 50W+ 差在哪里?
同样是程序员,为什么年薪的差距那么大呢?有的程序员非常诚恳,认为薪水没达到预期,是因为自己的技术水平不够。但事实上,技术能力并不是决定薪酬的唯一因素,供需关系对薪酬的影响非常大。很多时候,两个能力差不多的程序员却在薪水上有较大的差异。并不鼓励轻易跳槽,但了解市场行情是很有必要的。一、公司总结一下我遇到的年薪超过 50 万的程序员在哪些公司工作,大致可以分为以下几类:1、BAT 和其他盈利能力强的大公司不仅限于 BAT,其他盈利能力强的互联网大公司,高层技术员工达到 50 万以上年薪是比较容易的。原创 2022-04-29 16:25:40 · 250 阅读 · 0 评论 -
【Java进阶营】Java框架(一)——什么是框架?
随着Java面向对象语言的流行以及多层架构应用的出现,使得应用程序的可复用性得到了大大的提高,框架这个东西也在应用程序中开始出现,并得到了广泛的使用。那么什么是框架呢?还有Java的框架都有什么呢?我将在本篇文章及随后的几篇文章中做一个详细的解释。本篇文章主要解释什么是框架。 那么到底什么是Java框架呢?Java框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。框架又叫做开发中的半成品,它不能提供整个WEB应用程序的所有东西,但是有了框架,我们就可以集中精力进行业务逻辑的开发而原创 2022-04-27 18:49:26 · 1089 阅读 · 0 评论 -
【Java进阶营】Spring Boot 还是最先进的java框架吗
在本文中,我们来探讨一下 Spring Boot 应用程序框架是否仍是最先进的java框架在下文中,我想仔细探讨一下Spring Boot在基于 Java 的应用程序开发中相关问题。我将对它的架构概念进行批判性讨论,并将其与Jakarta EE(原JavaEE)框架进行比较。我知道这个问题非常具有挑衅性,会引起很多同行的不理解。在比较这两个框架中,更关注于运行时环境的问题。Spring Boot 和 Jakarta EE 都是用于开发微服务精心设计的概念。当我们谈论 Jakarta EE 和微服务时,原创 2022-04-27 18:45:29 · 660 阅读 · 1 评论 -
【Java进阶营】Spring源码解读-Xml解析Annotation解析
首先,Spring上下文分为父Spring上下文和子Spring上下文。 **子Spring就是SpringMVC的WebApplicationContext,同理服上下文就是spring框架本事的上下文Root上下文**** 父Spring的监听器是ContextLoaderListener这个Listener,SpringMVC的入口就在DispatcherServlet。**ContextLoaderListener父类方法**ContextLoader#initWebAppli.原创 2022-04-25 19:13:24 · 355 阅读 · 0 评论 -
【Java进阶营】SpringBoot技术专题-整合SpringCache和Redis
Spring基于注解的缓存对于缓存声明,spring的缓存提供了一组java注解:@Cacheable:触发缓存写入。@CacheEvict:触发缓存清除。@CachePut:更新缓存(不会影响到方法的运行)。@Caching:重新组合要应用于方法的多个缓存操作。@CacheConfig:设置类级别上共享的一些常见缓存设置。@Cacheable注解顾名思义,@Cacheable可以用来进行缓存的写入,将结果存储在缓存中,以便于在后续调用的时候可以直接返回缓存中的值,而不必再执行实际的方原创 2022-04-25 19:12:49 · 254 阅读 · 0 评论 -
【Java进阶营】Spring组件介绍-Bean生命周期
[一、Bean 的完整生命周期][1.1 Bean的核心构造过程]在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了。一旦bean不再被使用,则由Java自动进行垃圾回收。相比之下,Spring管理Bean的生命周期就复杂多了,正确理解Bean 的生命周期非常重要,因为Spring对Bean的管理可扩展性非常强,下面展示了一个Bean的构造过程:如上图所示,Bean 的生命周期还是比较复杂的,下面来对上图每一个步骤做原创 2022-04-25 19:01:44 · 336 阅读 · 0 评论 -
【Java进阶营】Spring事务机制-传播机制与隔离级别
一、Propagation (事务的传播属性)Propagation-- key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用:PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就一个事务。是最常见的选择。PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_N原创 2022-04-25 19:00:28 · 497 阅读 · 0 评论 -
【Java进阶营】Spring特性介绍-事务机制
概念介绍1、事务:事务是指逻辑上一组操作,这组操作要么全部成功,要么全部失败。2、事务特性:ACID(原子性、一致性、隔离性、持久性) (1)原子性:不可分割的逻辑单元,事务中操作要么发生,要么不发生; (2) 一致性:事务前后数据的完整性必须保持一致; (3)隔离性:用户并发访问数据库时,多个事务之间相互独立,互不影响; (4)持久性:一个事务一旦提交,它对数据库中的改变就是永久性的。三、事务管理的API介绍Spring事务管理器高层抽象主要有三个接口:1、Platfor原创 2022-04-25 18:59:44 · 228 阅读 · 0 评论 -
一名年薪30W+的Java程序员分享:想去大公司,前三年要懂些什么?
目前一线城市的薪资水平在13到40k之间,但是找工作的时候并不仅仅有工作经验就行了,还需要一定的专业知识。如果你野心更大,想要进阿里美团头条等等这些大厂的话,那就需要更多的专业知识。那么,一个三年工作经验的Java程序员应该要具备哪些知识呢?我整理了之后发现,程序员需要懂好多的知识。一、项目经验项目经验是程序员们最重要的财富,也是面试中必问的问题。一般面试官都会借着项目经验来考查应聘者的沟通能力和思考能力。三年工作经验的程序员一般都会有两个以上的项目经验,但实际我们大部分的情况都是做产品的一个功能或.原创 2022-04-23 20:22:32 · 263 阅读 · 0 评论 -
【Java进阶营】Java基础篇——数组详解
项目开发中,如果需要存储大量的数据,例如如果需要读取100个数,那么就需要定义100个变量,显然重复写100次代码,是没有太大意义的。Java语言提供了数组(array)的数据结构,可以解决这个问题。数组的概念一个数组是相同数据类型的元素按一定顺序排列的集合。使用数组可以将同一类型的数据存储在连续的内存位置。数组中各元素的类型相同,通过下标的方式来访问数组中的元素,下标从0开始。由此得出,数组具有以下基本特点:数组的长度是确定的,数组一旦被创建,它的大小就是不可以改变的。数组的元素必须是相同类原创 2022-04-23 20:22:02 · 286 阅读 · 0 评论 -
【Java进阶营】synchronized同步锁的使用与原理
多线程下,无锁代码可能产生的问题首先看下面的代码,逻辑很简单,定义了5个线程,这5个线程分别对同一个对象的成员变量num进行10000次递增操作,最后等待所有线程执行完成后,将num结果输出。正常情况下,我们预期的输出是50000,但运行程序之后,实际输出结果并不是如此,结果可能是50000,也可能小于50000。为什么会出现结果小于50000的情况呢?首先,我们要知道,线程在执行"num++"这句代码时,实际上会执行三个动作:读取num的值;修改num的值;将修改后的num刷新到内存中。原创 2022-04-23 20:21:32 · 471 阅读 · 0 评论 -
java架构师入门到精通:在Java开发领域开始职业生涯
Java人才缺口大,开始Java开发职业可能是一个不错的选择。Java已经存在了一段时间,有很多公司已经有了Java系统,这意味着有很多发展机会。学习Java本身并不困难,但是,为了做好工作准备并能够开发真实世界的Java应用程序,它需要相当多的知识。在这篇文章中,我们将列出成为一名做好工作准备的Java开发人员所需的技能。你也可以参加java培训来获得快速进阶,能力得到迅速提升。核心Java核心Java或JavaSE是你Java开发生涯的起点。许多初学者认为,一旦他们学习了JavaSE,他们就可以开原创 2022-04-23 20:21:01 · 260 阅读 · 0 评论 -
肝完了,总结了SpringBoot与缓存的知识点,快速掌握
本章给大家带来的是SpringBoot和缓存的学习。同时已经录制了非常详细的视频,如果看文档较为吃力,可以结合视频进行学习,帮你快速掌握SringBoot与缓存。目录一、JSR107二、Spring缓存抽象三、几个重要概念&缓存注解四、缓存使用五、整合redis实现缓存六、整合一个实例一、JSR107Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。CachingProvid原创 2022-04-22 19:57:21 · 204 阅读 · 0 评论 -
BAT面试必考题:高并发场景下单线程的Redis为什么还这门快?
缓存在高并发的场景的作用不言而喻,号称高并发架构的基石,其中最为典型代表非Redis莫属。无论你是想面试通关,还是实战中用好Redis,理解Redis的设计精髓,就变得很重要。今天主要分享Redis关于单线程以及高并发场景的核心设计。01 Redis高并发场景快的原因?1.redis是基于内存的,内存的读写速度非常快;2.redis是单线程的,省去了很多上下文切换线程的时间;3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单.原创 2022-04-21 19:30:24 · 204 阅读 · 0 评论 -
2022年BAT面试题必问汇总:JVM+微服务+多线程+锁+高并发性能
一、Redis 面试题1、什么是 Redis?.2、Redis 的数据类型?3、使用 Redis 有哪些好处?4、Redis 相比 Memcached 有哪些优势?5、Memcache 与 Redis 的区别都有哪些?6、Redis 是单进程单线程的?7、一个字符串类型的值能存储最大容量是多少?8、Redis 的持久化机制是什么?各自的优缺点?9、Redis 常见性能问题和解决方案:10、redis 过期键的删除策略?11、Redis 的回收策略(淘汰策略)?12、为什么 edis.原创 2022-04-21 19:29:54 · 227 阅读 · 0 评论 -
对标阿里P6-P7高级Java程序员的进阶技术路线
最近部门招聘,很多工程师,包括我在内都参与了内推和面试的过程,经过这次招聘,我发现能够最终拿到offer的人,基本上在看到简历的那一瞬间就已经定下来了,后续的面试只不过是一种验证而已(注意,是验证,而不是走过场),除非你面试过程中犯错误,或者你不想来,否则,那个offer一定是可以拿下的。那些拿下offer的人,基本上都有这么一些特征1. 学校不错,一般都是985,211,如果学校一般,那么你下面的2和3满足的话,问题也不大。2. 之前三年工作经验,都是在业内有些名气的企业,比如百度,IBM原创 2022-04-20 19:56:20 · 479 阅读 · 0 评论 -
Java资深架构师详解java进阶技术体系与主流架构思维(建议入手)
本文是来自本人的收藏,和自己从业几年的学习内容,拿出来分享给大家,共同学习进步。Java架构进阶体系:开源框架解析,微服务架构专题,高性能架构专题,架构师筑基专题,团队协作开发专题,B2C商城项目实战。文末有相关对应专题的讲解资料,和高清的思维图谱,有需要的可以去领取。开源框架解析spring5概述Spring5 Framework体系结构Spring5环境搭建IOC源码解析AOP源码解析Spring MVCMybatis微服务架构专题服务的前世今生基于分布式思想下的RPC解决方原创 2022-04-20 19:53:45 · 305 阅读 · 0 评论 -
【Java架构师入门到精通】面试系列:JVM篇
这个系列可以算是我新的面试系列了,也是我提前发星球的内容,多是我和查理自己在面试前看的,自己读书或者工作后整理的一些笔记。但是其实我不知道这种直接问题答案的形式大家喜欢点,还是喜欢我最开始俏皮的面试系列那种风格?什么是跨平台性,已经在Java中是如何实现的?平台可以指OS+硬件,所谓跨平台性,是指语言编写的程序,可以在多个系统平台上运行。字节码是通过Java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序编译后的字节码文件了,即一次编译,到处运行。JV原创 2022-04-19 19:26:48 · 176 阅读 · 0 评论 -
5 个Java 性能分析技巧,可帮助调整 JVM
优化 JVM 吞吐量和避免运行时瓶颈的最佳方法是将 Java 性能分析作为团队持续开发和部署 (CI/CD) 策略的关键部分。以下是五个 Java 性能分析技巧和最佳实践,可帮助你充分利用本地硬件和云托管运行时环境。1. 永远不要关闭Java性能分析Java Flight Recorder 是一个非常高效的 Java 性能分析工具,直接内置在 JVM 中。它是轻量级的,对正在运行的应用程序的影响最小。默认设置对性能的影响不到 1%,而即使是最极端的数据收集设置,其消耗也仅略高于 2%。鉴于任何生产服务原创 2022-04-19 19:25:23 · 229 阅读 · 0 评论 -
一份关于Java开发Spring常见面试题及答案集合
Spring是java企业级应用的开源开发框架,在企业中应用较多。作为轻量级的Java开发框架解决企业应用开发的复杂性而创建,今天小编分享的是一份关于Java开发Spring常见面试题及答案集合,很多人都不太了解,今天小编为了让大家更加了解Java开发,所以给大家总结了以下内容,一起往下看吧。Spring常见面试题及答案分享: 一、spring是什么? Spring是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spri原创 2022-04-16 17:01:06 · 246 阅读 · 0 评论 -
肝完这在“牛客网”难倒万人的Java面试题后,已收获9个大厂offer
上周在牛客网看到了这几百道面试题之后,看到评论区全是太难了!太难了,就深深被其吸引,索性直接花了一周的时间才把它们全部解析出来做成了这份文档,发给了最近面试的粉丝,他刷爆之后居然能拿到了好几个大厂的Offer!来看看整体的大纲JavaOOP面试题(108道)Java集合/泛型面试题(24道)Java异常面试题(8道)Java中的IO与NIO面试题(15道)Java反射面试题(11道)Java序列化面试题(38道)Java注解面试题多线程&并发面试题(78道)JVM面试题(108道原创 2022-04-16 17:00:34 · 1232 阅读 · 3 评论 -
使用这个算法我可以实现英雄联盟里英雄的走位|Java 开发实战
A算法,A(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。基本概念首先在大学我们遇到最多的算法Dijkstra、Floyd、广度搜索、深度搜索。关于这些算法我们以后再慢慢的研究,今天的重点在A算法上。A算法是一种启发式算法。与上述几种算法不同的是A*算法在考虑起始节点的同时还会考虑到目标节点的代价。在A*算法中我们给每个节点都定义一些属性。最基本的就是下文提到的三基数-这里的三基数是我自己定义.原创 2022-04-16 17:00:03 · 319 阅读 · 0 评论 -
深入理解java并发编程之线程池原理和源码
队列:队列是先进先出的数据结构,就是先进入队列的数据,先被获取。但是有一种特殊的队列叫做优先级队列,它会对插入的数据进行优先级排序,保证优先级越高的数据首先被获取,与数据的插入顺序无关。| **public **ThreadPoolExecutor(**int **corePoolSize,核心线程数 **int **maximumPoolSize, 非核心线程数 **long **keepAliveTime,时间TimeUnit unit,时间单位Bl原创 2022-04-16 16:59:32 · 140 阅读 · 0 评论 -
最全的Java线程面试题
Java编程语言是一种简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的语言。如今Java已经广泛应用于各个领域的编程开发。** 41)什么是线程调度器(ThreadScheduler)和时间分片(TimeSlicing)?**线程调度器是一个操作系统服务,它负责为Runnable状态的线程分配CPU时间。一旦我们创建一个线程并启动它,它的执行便依赖于线程调度器的实现。时间分片是指将可用的CPU时间分配给可用的Runnable线程的过程。分配原创 2022-04-16 16:59:06 · 284 阅读 · 0 评论