- 博客(102)
- 收藏
- 关注
原创 如果你是阿里 Java 面试官,你会问哪些问题?(二)
#Java基础那对象头具体都包含哪些内容?在我们常用的Hotspot虚拟机中,对象在内存中布局实际包含3个部分:#对于加锁,那再说下ReentrantLock原理?他和synchronized有什么区别?#CAS的原理呢?#那么CAS有什么缺点吗?CAS的缺点主要有3点:#好,说说HashMap原理吧?[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7YbsXqRB-1616664879965)(https://upload-images.jians
2021-03-25 18:53:04
71
原创 如果你是阿里 Java 面试官,你会问哪些问题?(一)
#Java基础说说进程和线程的区别?进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。线程基本不拥有系统资源,只有一些运行时必不可少的资源,比如程序计数器、寄存器和栈,进程则占有堆、栈。知道synchronized原理吗?那锁的优化机制了解吗?...
2021-03-25 17:19:51
65
原创 一个小白Java 开发工作者每天在做什么?
作为一名 在大、中、小微企业都待过 的 Java 开发者,请允许我谈谈自己在不同公司的工作日常和收获。包括一些个人积累的工作提升经验,以及一些 Java 学习的方法和资源。先从我的第一份 Java 开发实习工作说起吧~实习生工作日常我是在大二暑期开始了我人生的第一次实习,岗位正是 Java 开发,还混了个 title 叫 “助理 Java 工程师”!这家公司属于一家中型企业,作为第一份实习,我已经很满足了。刚进入公司的第一天,在导师和运维同学的帮助下,搞好办公设备,安装开发环境,本以为第二天就.
2021-03-25 17:00:11
852
原创 JAVA8 中的StringJoiner 使用及原理解析教程
前几天偶然看到jdk1.8突然新增了一个类StringJoiner , 就研究了一下是怎么使用的, 以及看了下它的源码.使用如下:public static void main(String[] args) { //间隔符是, StringJoiner joiner1 = new StringJoiner(","); joiner1.add("1").add("2").add("3"); System.out.println(joiner1.toString().
2021-03-25 13:19:43
472
原创 Java压缩集合的几种方法
前言这个问题算是开发当中偶尔会遇到的一个小问题,比如如何将两个集合压缩成为一个逻辑集合。如果你不理解,我们可以看一个简单的例子,去说明什么是压缩集合。本文文章不长,但是还算是比较实用的小技巧。主案例解释什么是压缩集合现在有两个集合:names和agesList<String> names = new ArrayList<>(Arrays.asList("张三", "李四", "王五"));List<Integer> ages = new ArrayList
2021-03-24 21:41:45
599
原创 牛皮大神带你了解Java10新特性解读
Java10是Java版本23年历史上最快的版本。Java因其缓慢的增长和进化而受到批评,但Java10打破了这一概念。Java10是一个具有许多未来变化的版本,其范围和影响可能并不明显,但却很牵强。在本文中,我们将讨论Java10发行版中添加的各种特性。在此之前,让我们回顾一下java发布模型中引入的一些更改。长期支持模式从2017年开始,Oracle&Java社区宣布将向为期6个月的Java新节奏转变。它转向了oracle javase产品的长期支持(LTS)模型。LTS版本的产.
2021-03-24 17:02:49
197
原创 年薪亿万的我给你们举几个例子了解java中的回调机制
这篇文章主要介绍了Java中回调机制的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下#前言先让我们通过一个生活中的场景来还原一下回调的场景:你遇到了一个技术难题(比如,1+1等于几?太难了!),于是你去咨询大牛,大牛说现在正在忙,待会儿告诉你结果。此时,你可能会去刷朋友圈了,等大牛忙完之后,告诉你答案是2。那么,这个过程中询问问题(调用对方接口),然后问题解决之后再告诉你(对方处理完再调用你,通知结果),这一过程便是回调。系统调用的分类应用系统模块之间的调用,通常分为.
2021-03-24 16:30:59
126
原创 Java中的对象、类、抽象类、接口、继承之间的关联
这篇文章主要介绍了Java中的对象、类、抽象类、接口、继承之间的联系,文章讲解的很清晰,有不太懂的同学可以多研究下。举个例子如果现在要想定义一个动物,那么动物肯定是一个公共的标准,而这个公共标准就可以通过接口来完成。在动物中又分为两类:哺乳动物、卵生动物,而这个标准属于对动物的标准进一步细化,应该称为子标准,所以此种关系可以使用接口的继承来表示。而哺乳动物可以继续划分为人、狗、猫等不同的类型,由于这些类型不表示具体的事物标准,所以可以使用抽象类进行表示。如果要表示出工人或者学生这样的概念,则肯.
2021-03-24 15:35:49
229
原创 什么是【JAVA并发】线程安全
1、线程安全多个线程对同一个共享变量进行读写操作时可能产生不可预见的结果,这就是线程安全问题。线程安全的核心点就是共享变量,只有在共享变量的情况下才会有线程安全问题。这里说的共享变量,是指多个线程都能访问的变量,一般包括成员变量和静态变量,方法内定义的局部变量不属于共享变量的范围。线程安全问题示例:import lombok.extern.slf4j.Slf4j;/** * @Author FengJian * @Date 2021/1/27 10:59 * @Version 1.0 *
2021-03-24 14:47:43
154
原创 JAVA8 全新的十大新特性详解
“Java is still not dead—and people are starting to figure that out.”本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:代码如下:interface Formula { double calculate(int a); default double sqrt(.
2021-03-24 13:12:34
4919
原创 P10教你怎么玩Java8 Optional
Optional介绍Optional是Jdk1.8提供的一个新类,希望可以通过该类的引入解决令人烦躁的null判断问题,非常好用。个人理解:这个类是一个包装类,将要操作的java bean封装到该类的对象里面,同时将一些常用的判断逻辑封装为成员方法,结合lambda语法,实现比较优雅的链式调用。现在对Optional的API使用做一个简单的说明。API介绍Optional的所有的方法如下图所示,这些API大致可以分为以下几类:1、构建API:构建一个Optional对象;方法有:empty( )、o
2021-03-23 19:14:54
83
原创 阿里P8面试官:Java中new Object()到底占用几个字节
前言我们来分析一下堆内布局以及Java对象在内存中的布局吧。对象的指向先来看一段代码:package com.zwx.jvm; public class HeapMemory { private Object obj1 = new Object(); public static void main(String[] args) { Object obj2 = new Object(); }}上面的代码中,obj1 和obj2在内存中有什么区别?我们先来回忆一下
2021-03-23 18:57:06
175
原创 Java 数组的两种初始化方式(附全套)
一、数组1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就可以快速计算出要查找元素的内存地址。通过内存地址快速定位该元素,所以数组查找元素的效率较高。2.随机的对数组进行增删元素,当增加元素的时候,为了保证数组中元素在空间存储上是有序的,所以被添加元素位置后面的所有元素都要向后移动,删除元素也是,后面所有的元素要向前移动,所以数组的增删元素效率很低。3.初始化
2021-03-23 16:29:51
2077
原创 Java 开发 Gradle 插件的步骤
Gradle 插件代码可以在 build.gradle 中,buildSrc项目中,以及独立的插件项目中编写。本文将介绍如何在一个独立的项目中使用 Java 语言编写 Gradle 插件,并发布到仓库中。1 创建项目Gradle 插件项目和普通的 Java 项目没有什么不同,普通项目是基于其它三方包进行开发,而 Gradle 插件项目基于 Gradle 的 API 进行开发。基于 Gradle 创建一个 Java 项目,项目目录结构如下,和普通项目一样。gradle-plugin-sample.
2021-03-23 16:13:22
857
原创 Java8超级新特性默认方法之静态方法
前言在Java 8之前,默认情况下,接口中的所有方法都是公共的和抽象的。但是这一限制在Java 8中被打破了,Java 8允许开发人员在接口中添加新方法,而无需在实现这些接口的类中进行任何更改。为什么会有默认方法?主要是为了方便扩展已有接口;如果没有默认方法,假如给Java中的某个接口添加一个新的抽象方法,那么所有实现了该接口的类都得修改,影响将非常大。举个例子,Sortable 接口以及实现该接口的类SortableNumberCollection和SortableStringCollection
2021-03-23 16:02:31
163
原创 爆炸新闻!一失足少女白天学习Java,晚上工作突然一天摇身一变成某大老
String的不变性String在Java中特别常用,相信很多人都看过他的源码,在JDK中,关于String的类声明是这样的:public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {}可以看到,String类是final类型的,那么也就是说,String是一个不可变对象。不可变对象是在完全创建后其内部状态保持不变的对象。这意味着,一旦对象...
2021-03-23 14:44:42
219
原创 程咬金的三板斧对抗JAVA几把锁
本节内容:java锁介绍偏向锁、轻量级锁、重量级锁可重入锁、非可重入锁共享锁、独占锁公平锁、非公平锁悲观锁、乐观锁自旋锁、非自旋锁可中断锁、不可中断锁synchronized锁介绍什么是synchronized锁synchronized关键字在同步方法中的应用synchronized关键字和Lock接口对比公平锁和非公平锁公平锁和非公平锁公平锁和非公平锁效果展示读写锁为什么设置读写锁读写锁规则读写锁使用展示读锁插队策略读写锁的升降级自旋锁自旋锁介绍如何自定义实
2021-03-22 21:25:27
135
原创 JavaSPI已经死了,你挑的吗Python
1.什么是SPISPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。2.SPI和API的使用场景API (Application Programming Interface)在大多数情况下,都是实现方制定接口并完成对接口的实现,调用方仅仅依赖接口调用,且无权选择不同实现。 从使用人员上来说,API 直接被应用开发人员使用。SPI (Service Pr
2021-03-22 19:39:20
162
原创 常量定义它不香吗?为啥非得用枚举?
为什么需要枚举常量定义它不香吗?为啥非得用枚举?举个栗子,就以B站上传视频为例,视频一般有三个状态:草稿、审核和发布,我们可以将其定义为静态常量:对于这种单值类型的静态常量定义,本身也没错,主要是在使用的地方没有一个明确性的约束而已,比如:比如这里的 judgeVideoStatus 函数的本意是传入 VideoStatus 的三种静态常量之一,但由于没有类型上的约束,因此传入任意一个 int值都是可以的,编译器也不会提出任何警告。但是在枚举类型出现之后,上面这种情况就可以用枚举严谨地去约束.
2021-03-22 17:52:44
804
原创 跪了跪了!!继Thinking in java 4th 的后续其实是 On Java 8,而不是 Thinking in java 5
之前购入thinking in java 4th 英文版,部头太大,也是第一次接触oop,业余时间学习,直接上这部书就是坏主意。不过好歹挺过来了,扫了一遍,写了个小安卓APP。但是很快发现,现在已经盛行java8了,java9页已经发布beta版了,还有kotlin。对于java5学到一半的人可谓尴尬,怎么进行过渡是个大问题。很快只能继续找Bruce Eckel先生了,网上,尤其是中文网,基本都在找thinking in java 4th ,第五版的消息基本很少看到,看到也是噱头加广告。于是只能Go
2021-03-22 15:21:47
360
原创 清华某大佬连夜赶制Java 解决跨域问题
Table of Contents引言什么是跨域(CORS)什么情况会跨域解决方案前端解决方案后端解决方案具体方式一、使用Filter方式进行设置二、继承 HandlerInterceptorAdapter三、实现 WebMvcConfigurer四、使用Nginx配置五、使用@CrossOrgin注解Spring Cloud Gateway 跨域配置引言我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果。跨域就像分离前端和后端的一道鸿沟,君在这边,她在
2021-03-22 14:07:11
155
原创 跪了!!Java和Python生了个大儿子你知道是谁吗??
Java集合-StackStack(java.util.Stack)类是典型的栈数据结构,可以从头部插入,读取和移除元素。Stack是List接口的一个实现,但是很少使用Stack作为List- 除非需要检查当前存储在Stack中的所有元素。注意,Stack类是Vector的子类,Vector是java中一个古老的同步类, 这种同步会增加对Stack中所有方法的调用的开销。另外,Vector还使用了几个古老的java部分(不再推荐),支持Iterator的Enumeration ,如果为了避免这种问题
2021-03-20 19:27:45
91
原创 一程序猿和一妙龄少女躲在房里研究Java
Java 重写(Override)与重载(Overload) 重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。在面向对象原则里,重写意味着可以重写任何现有方法。实例如下:class Animal{ public void move(){ System.out.println(“动物可以移动”); } } class
2021-03-20 17:51:05
94
原创 一妙龄女子深夜拜访阿里P8求讲解Java与Scala集合互转
摘要:Scala,Java,JavaConverters包括三种场景的转化Java脚本中,将Scala集合转化为Java集合Scala脚本中,将Scala集合转化为Java集合Scala脚本中,将Java集合转化为Scala集合JavaConverters隐式转换Scala提供了大量的方法来隐式转换所有主要的Java和Scala容器类型。其中提供了如下的双向类型转换Iterator<=>java.util.IteratorIterator<=>java.util.En
2021-03-20 17:28:45
104
原创 2021最新(内含Java视频+Java学习资料+源码+Java练习题)
前段时间发放了学习资料给予自学java的同学们,自学虽好,但是架不住没有老师讲解重侧点,今天我就抽空把java零基础入门(六个月)的学习重点画出来,在不影响达到工作和进阶的前提下删繁就简!去掉不必要的注水内容!一般来说,零基础从入门到就业,所学学习内容如下,今天划重点的内容是第一个文件夹:001基础(se)二、其中第一个文件夹,001基础(se)作为整个java的语法思想等基础,下面我来进行划分下内容重点及删除不必要的学习内容(绝不影响后面工作),大纲如下,原本学时一个月开始划重点一、语言基础(这
2021-03-20 17:14:07
633
2
原创 【Java面试系列】(附全套)
1、面向对象和面向过程的区别面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发。面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面向过程要低。2、 普通类和抽象类的区别普通类可以去实例化调用;抽象类
2021-03-20 14:16:00
98
原创 阿里P10带你回顾下 Java 中的各种队列排版
接下来就回顾一下各种队列。Queue队列是一种集合。除了基本的集合操作以外,队列还提供了额外的插入、提取和检查操作。队列的每个方法都以两种形式存在:一种是当操作失败时抛异常,另一种是返回一个特定的值(null或者false,取决于具体操作)。后一种形式的插入操作是专门设计用于有界队列实现的,在大多情况下,插入操作不会失败。队列通常(但不一定)以FIFO(先进先出)的方式对元素进行排序。例外情况包括优先级队列(根据提供的比较器对元素进行排序或元素的自然排序)和LIFO队列(或堆栈),对LIFO
2021-03-19 17:14:09
166
原创 清华大佬教你Java序列化和反序列化为什么要实现Serializable接口
目录序列化和反序列化什么时候需要用到序列化和反序列化呢?实现序列化和反序列化为什么要实现 Serializable 接口?实现 Serializable 接口就算了,为什么还要显示指定 serialVersionUID 的值?Java 序列化的其他特性static 属性为什么不会被序列化?最近公司的在做服务化, 需要把所有 model 包里的类都实现 Serializable 接口,同时还要显示指定 serialVersionUID 的值。听到这个需求,我脑海里就突然出现了好几个问题,比如说
2021-03-19 16:36:33
95
原创 不服不行!GsonFormat如何完成JSON和JavaBean之间的转换
最近一直在对接接口,上游返回的都是JSON数据,我们需要将这些数据进行保存,我们可以解析成Map通过key的方式进行获取,然后set到实体类对象中,说到这里我开始想吐了,这样就造成了代码过多,没有可读性,如果有100个值,要get100次,set100次吗?所以最简单的方式是封装成对象,通过对象操作工具进行对象中属性值的映射,但是封装对象过程又繁琐了,属性过多极大的浪费时间,记得初中历史学过的一段话,人和动物最根本的区别就是会不会制造和使用工具,大神和菜鸟之间的差距也莫非如此,废话不多说了,说说如何使用Gs
2021-03-19 15:52:40
92
原创 没女朋友的程序猿进来,有的绕道走
领取你的专属图图1、三思后再写代码!!!2、从世界上搜索喜欢你的人!!!3、代码没写完,哪里有脸睡觉!!!4、程序员的 Home 键!!!5、编程是一门艺术!!!6、云 ~~~~ 雨!!!7、程序人生!!!8、只有极客才懂!!!9、黑客的世界!!!10、黑~~~人!!!11、PHP 专属!!!12、程序 ~ 代码!!!13、我就是一个极客!!!14、CODE!!!15、源代码!!!16、CODE PARTICLE!!!17、一个While
2021-03-19 14:41:25
85
原创 听说阿里开源的 Arthas 在做 Java 应用诊断是NO.1
概述当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到JVM的实时运行状态?怎么快速定位应用的热点,生成火焰图?使用 Arthas 需要 J
2021-03-19 14:12:46
135
原创 学习Java的程序猿你们机会来了
今年,这个世界排名第一的编程语言—JAVA迎来了自己的第26个生日,最近几年这位编程老牌大哥的地位却总是遭到许多人的质疑。“JAVA老了”、“python即将超越它”,不少的传闻让每一个IT人心里都犯了触,JAVA究竟还能不能做?我们来一起看一下2021年2月中国编程语言排行榜,答案就显而易见了。2021JAVA发展现状大曝光,程序员们的机会来了由上图可见,JAVA目前在市场上的排名,仍处于第一位。即便是一度被传出要超越JAVA的python,虽然每年都呈现出增长趋势,但体量仍无法与Java抗衡,
2021-03-18 21:37:40
137
原创 阿里最新面试提出炉了,Java12专题5000解析
写在开篇我写过很多篇春招总结,这篇文章应该是最后一篇总结,当然也是最完整,最详细的一篇总结。春招是我人生中一段宝贵的经历,不仅是我研究生生涯交出的一份答卷,也是未来职业生涯的开端。仅以此文,献给自己,以及各位在求职路上的,或者是已经经历过校招的朋友们。不忘初心,方得始终。全网最新最全面Java程序员面试清单(12专题5000解析)一、多线程&并发面试题(108道)1、Java中实现多线程有几种方法2、继承Thread类3、实现Runnable接口。4.ExecutorService.
2021-03-18 17:39:07
225
原创 Java 14 令人无解的5大特性
目录:instanceof 模式匹配文本块再次作为预览特性保留记录类型(Record Type)的引入打包工具终于来了一个组合垃圾收集器被弃用结束语随着新的 Java 发布生命周期的到来,新版本预计将于 2020 年 3 月发布,本文将对其中的 5 个主要特性作些概述。Java 13 刚刚发布给开发人员使用不久,最新版本的JDK于2019年9月发布。但是很少有公司现在改用了Java 13 ,因为这个版本看起来无论如何都不会从甲骨文公司获得长期支持(LTS)。更不要说现在Java 14
2021-03-18 17:20:33
108
原创 腾讯大老告诉你Java性能优化
不完善的写法:thisName != null && thisName.equals(name);复制代码更完善的写法:(thisName == name) || (thisName != null && thisName.equals(name));复制代码建议方案:Objects.equals(name, thisName);复制代码#####案例二现象描述:!(list == null || list.isEmpty());复制代码建议方案:.
2021-03-18 17:04:04
104
原创 JavaScript 中你知道种循环最快吗?北大某大老得出这样的结论
了解哪一种 for 循环或迭代器适合我们的需求,防止我们犯下一些影响应用性能的低级错误。JavaScript 是 Web 开发领域的“常青树”。无论是 JavaScript 框架(如 Node.js、React、Angular、Vue 等),还是原生 JavaScript,都拥有非常庞大的粉丝基础。我们来谈谈现代 JavaScript 吧。循环一直是大多数编程语言的重要组成部分,而现代 JavaScript 为我们提供了许多迭代或循环值的方法。但问题在于,我们是否真的知道哪种循环或迭代最适合我们的需求。
2021-03-18 16:05:52
84
原创 三十多岁的我,为了生活转行Java,开始我的小白之路!
看你35岁要从体制里出来学java,而且看样子已经下定决心了,我真的替你感到悲哀。我也是java培训出来,转行到互联网的,所以我觉得我可以回答这个问题。跟我一起培训的同学大部分也还在做,我们这些人有的是24岁刚毕业出来的,有的是毕业两年三年出来的,也有一个30多岁研究生刚毕业来学的。到现在已经快两年了,可是我们这些同学中,除去一些比较年轻的。剩下很大一部分想的却是继续转行做别的,有的人想做自媒体,有的人想开淘宝店,还有人想进入体制内……几乎很少有人愿意继续做java开发。你可能会问了,既然都转行进来了,
2021-03-18 14:15:22
8444
4
原创 Java 16一发布完虐Java8、Java15
3 月 16 日,甲骨文正式发布 Java 16。甲骨文表示,现在为所有开发人员和企业提供 Java 16。据悉,按照甲骨文重要补丁更新(CPU)时间表,甲骨文 JDK 16 将至少获得两次季度更新。随后,甲骨文 JDK 17 面世。虽然 Java 17 将于 2021 年 9 月正式发布,但是 jdk.java.net 已经提供了它早期的访问版本。在转向六个月的发布周期后,Java 16 是甲骨文发布的第七个特性版本。甲骨文称,“在六个月的发布周期下,可用于生产的创新交付速度已大大提高”。Java
2021-03-18 13:55:20
1287
原创 阿里P8大神讲解——Java,JVM内存模型
在Java程序界流行着一种默认的说法叫”黄金5年”,也就是一个程序员从入职的时间开始算起,前五年的选择直接影响着整个职业生涯发展方向和薪资走向。如何走好这5年很关键,如何彻底从一个菜鸟蜕变成,可以以不变应万变的职业大牛,这是一个涉及到自身专业知识储备和选择的大难题。很简单,既然选择了Java技术栈,必须要深入学习。如何保持高效?我做到了这两点:坚持学习和向大神学习。如果你想在Java道路上不断精进,我也给大家分享,当时我在进阶的时候加入的大神群,里面有很多大厂经验的大神以及各个版块的资料可以免费领.
2021-03-17 15:34:26
284
1
原创 清华某大牛带你全面了解神秘的Java NIO
前言JDK 1.4后,Java提供了一个全新的IO API,即 Java New IO本文 全面 & 详细解析Java New IO,希望你们会喜欢目录储备知识:Java IO1. 定义即 Java New IO是1个全新的、 JDK 1.4后提供的 IO API2. 作用提供了与标准IO不同的IO工作方式可替代 标准Java IO 的IO API3. 新特性对比于 Java IO,NIO具备的新特性如下4. 核心组件Java NIO的核心组件 包括:通道(Cha
2021-03-17 15:08:09
94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅