
Java小白
文章平均质量分 89
xxsiyao
关注我 帮助更多Java开发者了解 Java的知识,提高学习效率,弥补知识技能漏洞
展开
-
二面京东被问到Java 反射,我直呼好家伙,这我不是必过吗?
二面京东被问到Java 反射,我直呼好家伙,这我不是必过吗?用多久我会升职加薪、当上技术总监、迎娶漂亮学姐、走上人生巅峰!想想还有点小激动。好了开始分享面试经历说说你反射的理解到底什么是反射呢???反射的核心就是JVM在运行时才动态加载类或调用方法,访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁。每一个类都会产生一个对应的Class对象,也就是保存在.class文件。所有类都是在对其第一次使用时,动态加载到JVM的,当程序创建一个对类的静态成员的引用时,就会加载这个类,Class转载 2021-07-15 21:12:07 · 221 阅读 · 0 评论 -
大厂Java初级开发工程师!!!面试必问项之Set实现类:TreeSet
一、TreeSet 概述1、TreeSet是 SortedSet 接口的实现类, TreeSet 可以确保集合元素处于排序状态。2、TreeSet顾名思义他内部维护的是一个TreeMap,底层是红黑二叉树,他使得集合内都是有序的序列。3、Tree可以按照添加对象的指定属性,进行排序,所以向TreeSet中添加的数据,要求是相同类的对象。4、两种排序方式:自然排序(实现Comparable接口) 和 定制排序(Comparator);5、自然排序中,比较两个对象是否相同的标准为:compareTo(转载 2021-07-15 21:08:26 · 213 阅读 · 0 评论 -
Java开发面试高频考点学习笔记(每日更新)
Java开发面试高频考点学习笔记(每日更新)1.深拷贝和浅拷贝2.接口和抽象类的区别3.java的内存是怎么分配的4.java中的泛型是什么?类型擦除是什么?5.Java中的反射是什么6.序列化与反序列化7.Object有哪些方法?8.JVM内存模型9.类加载机制10.对象的创建和对象的布局11.Java的四种引用(强引用、软引用、弱引用和虚引用)12.内存泄露和内存溢出13.List、Set和Map三者的区别和其底层数据结构14.创建线程的四种方式15.NIO、AIO和BIO转载 2021-07-15 21:03:30 · 261 阅读 · 0 评论 -
从头梳理一下 Java 面试中经常问到的 “零拷贝” 问题!
前言【资料获取】I/O概念1.缓冲区2.虚拟内存3.mmap+write方式4.sendfile方式Java零拷贝1.MappedByteBuffer2.DirectByteBuffer3.Channel-to-Channel传输Netty零拷贝其他零拷贝总结前言从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能;这个词我们也经常在java nio,netty,kafka,RocketMQ 等框架中听到,经常作为其提升性能的一大亮点;下面从I/O的几个概念开始,进而.转载 2021-07-15 16:09:24 · 215 阅读 · 0 评论 -
世道变了,面试初级Java开发会问到Arrays!!!你不会还不知道吧!
一、基本定义Arrays类,全路径java.util.Arrays,主要功能为操作数组,Arrays类的所有方法均为静态方法,所以调用方式全部为Arrays.方法名二、常用方法1. <T> List<T> asList(T... a)可以将数组转化为相应的list集合,但是也只能转化为list,asList方法内部构建了一个内部静态类ArrayList,这个ArrayList也继承自AbstractList,但并不是我们集合中常用的ArrayList,这两者是有区别.转载 2021-07-15 14:28:04 · 99 阅读 · 0 评论 -
带着好奇学Java------对象的创建
批判性思维的本质在于学会提问,且学会提问是更有效的学习方法,养成提问的习惯,时刻保持好奇心,以理性的心态分析世界。对象的创建【资料获取】问:如何开始第一个程序?//访问修饰符 + class + 类名 = 类public class HelloWorld { //访问修饰符 + 变量类型 + 变量名 = 变量 private String name; //访问修饰符 + static + 变量类型 + 变量名 = 静态变量 public stati原创 2021-07-10 17:03:44 · 104 阅读 · 0 评论 -
号称下一代可视化监控系统,结合SpringBoot使用,贼爽!
当面对一个复杂的系统时,我们往往需要监控工具来帮助我们解决一些性能问题。比如之前我们使用SpringBoot Admin来监控应用,从而获取到SpringBoot Actuator暴露的指标信息。今天给大家介绍一个功能强大的监控工具Grafana,只要需要用到监控的地方,用它做可视化就对了!Grafana简介Grafana是一款开源的数据可视化和分析工具,不管你的指标信息存储在哪里,你都可以用它来可视化这些数据。同时它还具有告警功能,当指标超出指定范围时会提醒你。Prometheus简介Pro原创 2021-07-10 16:07:25 · 218 阅读 · 0 评论 -
MyBatis温故而知新-底层运行原理
准备工作【参考资料】public class MainClass { public static void main(String[] args) throws Exception { String resources = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resources); SqlSessionFactory sqlSessionFactory =原创 2021-07-10 16:04:17 · 143 阅读 · 0 评论 -
面试官:说一下JVM常用垃圾回收器的特点、优劣势、使用场景和参数设置
Java中的垃圾回收器几乎是面试中的必考点,无论是面试初级,中级还是高级,总免不了要问一问垃圾回收器的一些知识点。不管在实际开发中你使用程度怎么样,为了面试不被压价,还是非常有必要对它做一个较深入的理解。本篇对JVM中常用的几种垃圾回收器的主要特点,使用场景及优化建议做一个简单介绍,希望起到抛砖引玉的效果,对你入门有所帮助。【参考文献】新生代回收器SerialParNewparallel老年代回收器Serial OldCMSParallel Old新生代和老年代回收器G1原创 2021-07-10 15:23:13 · 447 阅读 · 0 评论 -
快速了解TomCat是个啥
Web开发中的常见概念(1)B/S系统和C/S系统Brower/Server:浏览器、服务器系统 ----- 网站Client/Server:客户端、服务器系统 ----- QQ、大型游戏(2)web应用服务器供向外部发布web资源的服务器软件(3)web资源存在于web应用服务器可供外界访问的资源就是web资源。例如:存在于web应用服务器内部的html、css、js、图片、视频等。1)静态资源:指web页面中供人们浏览的数据始终是不变。比如:HTML、CSS、JS、图片、多媒体。2)动原创 2021-07-10 14:22:54 · 293 阅读 · 0 评论 -
Java方法的重载
重载就是在一个类中,有相同的函数(方法)名称,但形参不同的函数(方法)。【参考文献】方法的重载的规则:方法名必须相同参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。方法的返回类型可以相同也可以不同仅仅返回类型不同不足以成为方法的重载实现理论:加粗样式方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。重载的意义:是为了方便外界对方法进行调用,什么样的参数程序都可以找到对应的方法来执行,体现的是程序的灵活性如下代原创 2021-07-09 22:21:50 · 3951 阅读 · 1 评论 -
Java筑基 - JNI到底是个啥
Java筑基 - JNI到底是个啥profile-avatarxxsiyao2021-06-28 14:35在前面介绍Unsafe的文章中,简单的提到了java中的本地方法(Native Method),它可以通过JNI(Java Native Interface)调用其他语言中的函数来实现一些相对底层的功能,本文我们就来顺藤摸瓜,介绍一下jni以及它的使用。首先回顾一下jni的主要功能,从jdk1.1开始jni标准就成为了java平台的一部分,它提供的一系列的API允许java和其他语言进行交互原创 2021-07-09 22:05:12 · 144 阅读 · 0 评论 -
不藏了,这些 Java 反射用法总结都告诉你们
Java 反射是一种非常强大的机制,它可以在同一个系统中去检测内部的类的字段、方法和构造函数。它非常多的 Java 框架中,都大量应用了反射技术,如 Hibernate 和 Spring。可以说,反射机制的特征让 Java 可以构建异常强大,具备柔性的系统。虽然 Java 反射机制存在效率低、速度慢和安全性不高等弊端,但在很多场景下,这些特征并不是主要的因素,或者可以通过缓存或者 JVM 优化等来逐步提升执行效率。根据网上的说法,反射技术能够检查或修改在 JVM 中应用程序在运行时的行为,这是一个比较高原创 2021-07-09 17:12:37 · 126 阅读 · 0 评论 -
阿里面试这样问:Nacos用了 push 还是 pull模式 ?
对于 Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现、配置管理,非常好用的一个工具。然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用层面,那面试可能要吃大亏。比如我们今天要讨论的话题, Nacos 在做配置中心的时候,配置数据的交互模式是服务端推过来还是客户端主动拉的?这里我先抛出答案:客户端主动拉的!接下来咱们扒一扒 Nacos 的源码,来看看它具体是如何实现的?配置中心聊 Nacos 之前简单回顾下配置中心的由来。简单理解配置中心的作用就是对配置..原创 2021-07-09 15:46:54 · 2236 阅读 · 1 评论 -
令人头疼的 Java 异常知识点总结
1. 异常简介1.1 异常类层次结构从结构图可以看出,所有异常均继承自 Throwable 类,它有两个重要的子类: Exception 和 Error ,各自又包含大量子类。Exception程序本身可以处理的异常,又可以分为 受检异常 和 非受检异常 , 受检异常 可以用 try…catch… 语句进行捕获处理,而且能从异常中恢复。但 非受检异常 是程序运行时错误,会导致程序崩溃而无法恢复。受检异常编译器要求必须处理的异常,正确的程序在运行时,经常会出现、预期范围内的情况。一旦发生转载 2021-07-08 19:37:10 · 218 阅读 · 0 评论 -
Java并发编程中的同步器
1. CyclicBarrier【参考文献】和 CountDownLatch 类似线程会等待,直到足够多线程达到了事先规定的数据。一旦触发条件,就可以进行下一步的操作适用于线程之间相互等待处理结果就绪的场景CyclicBarrier可以构造一个集结点,当某一个线程执行完毕,它就会到集结点等待,直到所有线程都到了集结点,那么该栅栏就会被撤销,所有线程再统一出发,继续执行剩下的任务用法一:等待所有人到达指定地点,再统一出发import java.util.concurrent.BrokenBa原创 2021-07-08 16:48:53 · 371 阅读 · 0 评论 -
Java时间相关
一、Java 8 以前日期API相关问题【参考文献】Java 8 以前,java.util.Date,java.util.Calendar,java.util.GregoiranCalendar,java.text.SimpleDateFormat这四个类分别用于处理日期、日历、公历、时间格式化缺点:非线程安全:存在并发问题设计不佳:date缺少直接操作日期的相关方法,日期和日期格式化分布在多个包中时区处理困难其他:Calendar类月份从零计算问题Java 8 重新设计了所有日期时间、日原创 2021-07-08 15:36:41 · 149 阅读 · 0 评论 -
Java SPI 机制实在弄不明白,怎么进大厂?
真正的大师永远怀着一颗学徒的心引言【资料获取】在日常的项目开发中,我们为了提升程序的扩展性,经常使用面向接口的编程思想进行编程。这不仅体现了程序设计对于修改关闭,对于扩展开放的程序设计原则,同时也实现了程序可插拔。那么本文所阐述的 SPI 机制正是这种编程思想的体现。今天就和大家聊聊 SPI 到底是个什么鬼。顺便和大家一起看下 Seata 框架中是怎么使用 SPI 机制来实现框架扩展的。什么是 SPI在一般的开发逻辑中,都是服务提供方进行接口定义以及不同实现,服务调用方通过 API 的方式完成一次业原创 2021-07-05 21:10:24 · 92 阅读 · 0 评论 -
如何在Windows中快速切换不同的Java版本,并且任意切换
作为一名Java程序员,我们经常需要在不同的Java版本下运行我们的应用程序,或者,我们想在不同Java版本上尝试运行我们的代码。当然,如果你在IDE下工作,可以非常轻松地切换Java版本(大部分IDE都提供该功能),但是如果你只想在CMD下运行Java程序,而又不想频繁地去修改系统环境变量,有什么好的办法呢?本文将向你介绍如何在Windows中同时安装多个Java版本,以及如何通过命令行非常简单地在不同地Java版本间进行切换。安装多个不同版本的Java【参考文献】在Windows中同时安装多个J原创 2021-07-05 20:55:58 · 3776 阅读 · 0 评论 -
从 Spring 的环境到 Spring Cloud 的配置,我经历了些什么
需求【参考文献】不知不觉,web 开发已经进入 “微服务”、”分布式” 的时代,致力于提供通用 Java 开发解决方案的 Spring 自然不甘人后,提出了 Spring Cloud 来扩大 Spring 在微服务方面的影响,也取得了市场的认可,在我们的业务中也有应用。前些天,我在一个需求中也遇到了 spring cloud 的相关问题。我们在用的是 Spring Cloud 的 config 模块,它是用来支持分布式配置的,原来单机配置在使用了 Spring Cloud 之后,可以支持第三方存储配置和原创 2021-07-05 16:22:55 · 92 阅读 · 0 评论 -
为了彻底理解乱码问题,一怒之下我把字符集历史扒了个底朝天
前言在日常开发中,乱码问题可以说曾经都困扰过我们,那么为什么会有乱码发生呢?为什么全世界不统一使用一套编码呢?本文将会从字符集的发展历史来解答这两个问题,看完本篇,相信大家对乱码现象会有本质上的认识。一个故事来理解为什么要编码现在有两个人,张三和李四,张三只会中文,李四只会英文,那么这时候他们怎么沟通?解决办法是他们可以找个翻译,这个翻译的过程就可以理解为编码,也就是说从中文到英文或者从英文到中文这就是一个编码的过程,编码的本质就是为了让对方能读懂自己的语言。人类的各种官方语言和方言数不胜数,所原创 2021-07-04 17:38:20 · 159 阅读 · 0 评论 -
Java方法这样学就精通了??
Java方法什么是方法?System.out.println(),那么它是什么呢?系统类里的,对象out,输出方法printlnJava方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块集合。我们设计方法的时候,最好保持方法的原子性,就是只完成一个功能,这样利于我们后期的扩展。回顾:方法的命名规则?练习:package com.lxw.m原创 2021-06-30 16:26:07 · 100 阅读 · 0 评论 -
小白也能行的最强Java反射机制讲解
前言- 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来。那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现。更多免费资料请点此链接正文Java反射机制定义Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法。反射机制的优点与原创 2021-06-30 13:59:08 · 126 阅读 · 0 评论 -
首发!阿里大牛给职场小白手写的Java笔记,满满干货记得收藏
今日分享开始啦,请大家多多指教~今天我们就来开始学习,实现一个Java基础的顺序表。本次内容介绍大纲:1、顺序表的简单了解概念认识2、接口的具体实现创建初始变量打印顺序表添加元素判断是否包含查找元素下标获取元素更新元素删除元素获取顺序表的长度清空顺序表3、完成代码展示1.顺序表的简单了解顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。原创 2021-06-28 19:27:49 · 137 阅读 · 0 评论 -
没想到吧,Java开发 API接口可以不用写 Controller了
今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便分享一点工作中使用它的心得magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTPAPI接口开发。上边是官方对工具的介绍,但好像还是没明白它是干什么的,接下来咱们演示一下,你就会觉得它很哇塞了环境【参考文献】首先pom.xml 引入magic原创 2021-06-28 14:23:47 · 516 阅读 · 0 评论 -
Java字节流和字符流,什么时候该总结一下IO流?
目录从接收输入值说起字节流读取字符流读取Scanner 读取什么是 IO 流字节流和字符流字节流字节输入流字节输出流缓冲流的原理字符流字符输入流字符输出流为什么字符流需要 flush,而字节流不需要RandomAccessFile- 总结从接收输入值说起在日常的开发应用中,有时候需要直接接收外部设备如键盘等的输入值,而对于这种数据的接收方式,我们一般有三种方法:字节流读取,字符流读取,Scanner工具类读取。字节流读取直接看一个例子原创 2021-06-27 17:53:07 · 179 阅读 · 0 评论