Java SE
文章平均质量分 80
Java的基础语法、多线程、工具包等
哪 吒
2022博客之星Top1,现象级专栏 《Java基础教程系列》作者,专注Java硬核干货分享,立志做到Java赛道全网Top N
展开
-
Java代码实例3,将新项目上传到svn
目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。,包含面向对象、基本数据类型、数组、继承和多态、泛型、枚举等Java基础知识点。,完成Java从入门、实战、进阶全方位的Java知识体系学习。原创 2021-12-18 11:46:16 · 4817 阅读 · 1 评论 -
哪吒社区 - 风火轮计划
目录【风火轮计划】全新起航【风火轮计划内容】一、Java零基础入门二、Java基础教程系列三、SpringBoot系列教程【加入方式】1、连续七天参与Java技能树每日打卡活动。2、发表一篇标题为《哪吒Java技能树 ***********》的学习博客,记录学习成果,并进入热榜。3、哪吒社区积分榜前十4、哪吒社群推广大使5、订阅哪吒学习博客【每周一、周四晚九点准时开奖】【风火轮计划】全新起航参加本次活动的小伙伴,进入哪吒精英群,周周有福利,周周有惊喜。原创 2021-11-11 23:51:35 · 7425 阅读 · 97 评论 -
java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hdfs.DFSUt
一、异常java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hdfs.DFSUtil二、异常真因在HBase 1.2.X版本及之前的版本HBase是强依赖于protobuf-2.5.0,如果在依赖中引入高版本的protobuf,会造成hbase的各种问题,所以在有HBase的项目中一定要慎重对待protobuf的版本。三、解决方法引入protobuf依赖。<!-- https://mvnr原创 2021-12-23 23:40:19 · 7264 阅读 · 0 评论 -
java.lang.ClassNotFoundException: com.google.common.base.Preconditions
???? Java学习路线配套文章:Java学习路线总结,搬砖工逆袭Java架构师(全网最强)???? 基础推荐:Java基础教程系列???? 实战推荐:Spring Boot基础教程???? 简介:CSDN新星计划Java导师????、CSDN博客专家✌、黑皮书《搬砖工逆袭Java架构师》作者???????? 扫描主页左侧二维码,加入群聊,一起学习、一起进步???? 欢迎点赞 ???? 收藏 ⭐留言 ????目录1、异常2、解决方法3、复制pom依赖4、引入本地jar1、异常java.l原创 2021-12-23 23:30:20 · 4096 阅读 · 0 评论 -
字节跳动Java面试还要问网络知识?懂一点就好
目录一、通信长度二、关于接收三、TCP与UDP四、接收数据的阻塞问题1、TCP2、UDP五、TCP实现数据上传六、UDP实现数据上传七、网络层的安全问题八、如何避免采集数据的风险1、如何解决这个问题?2、ipidea简介3、ipidea生成api链接,复制链接即可应用4、生成代理ip操作使用方式一、通信长度首先要看TCP/IP协议,涉及到四层:链路层、网络层、传输层、应用层。以太网的数据帧在链路层;IP包在网络层;TCP和UDP包在传输层;TCP和UDP中的数据在应用层;不同的协议层对数原创 2021-12-16 13:38:19 · 9059 阅读 · 77 评论 -
UDP网络基础知识简介
一、UDP实现多线程在线咨询1、发送端package com.guor.ipidea;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;import java.net.S原创 2021-12-20 07:31:37 · 9179 阅读 · 99 评论 -
websocket即时通讯
目录一、websocket简介二、背景三、优点1、控制开销2、实时性更强3、保持连接状态4、更好的二进制支持5、支持扩展和更好的实现压缩效果四、原理1、客户端、服务器建立TCP连接,三次握手。2、TCP连接成功后,客户端通过HTTP协议向服务器传送websocket支持的版本号信息。(开始前的HTTP握手)3、服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。4、当收到了连接成功的消息后,通过TCP通道进行传输通信。五、websocket和socket的关系六、SuperWebSocket实现服务原创 2021-12-27 07:52:14 · 22122 阅读 · 47 评论 -
Spring Boot原理篇
一、自动配置原理1、springboot启动会加载大量的自动配置类;2、看我们需要的功能有没有在springboot默认写好的自动配置类中;3、观察自动配置类中配置了哪些组件;(只要我们需要的组件存在其中,我们就不需要再手动配置了)4、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们需要在配置文件中指定这些属性的值即可;5、xxxxAutoCon...原创 2020-03-04 13:55:21 · 7694 阅读 · 0 评论 -
用JavaScript实现图片上传并预览
一、前端界面是通过jqgrid展示的jqgrid是典型的B/C架构(浏览器/服务器模式),服务器端只需提供数据管理,浏览器只需负责数据显示。jqGrid是用ajax实现对请求和响应的处理,支持局部实时刷新。二、jqgrid特性1、通过配置url地址数据显示格式2、支持行编辑,列搜索过滤3、支持分页4、添加表单支持文件上传5、链式调用三、代码实例1、jqgrid页面展示$(document).ready(function () { $("#gridTabl原创 2020-06-05 12:37:22 · 2446 阅读 · 0 评论 -
JqGrid完整例子
之前写过一篇过于ajax异步加载jqgrid的文章,那个只是一个特殊的情况,如果创建不同数据库表的jqgrid,必须分别写servlet,dao层和连接池,很麻烦,今天我写了一个万能的写法,客官只要在前台js中写入表格名称和字段名称即可实现功能!下面就是代码实例,关于jqgrid,ajax的介绍这里暂时不多说,有不懂的可以参考我之前的文章!一、代码实例1、JSP<%@ page contentType="text/html;charset=UTF-8" language="java"原创 2020-06-05 12:42:44 · 2590 阅读 · 0 评论 -
jQuery 基础知识总结(超级详细)
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美。其结构明晰,高内聚、低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷、渐进增强)优雅的处理能力以及 Ajax 等方面周到而强大的定制功能无不令人惊叹。另外,阅读源码让我接触到了大量底层的知识。对原生JS 、框架设计、代码优化有了全新的认识,接下来将会写一系列关于 jQuery 解析的文章。我在 github 上关于 jQuery 源码的全文注解,感兴趣的可以围观一下。..原创 2020-06-22 16:17:41 · 9693 阅读 · 1 评论 -
jsonp原理详解——终于搞清楚jsonp是啥了
一、JSONP的由来1、Ajax直接请求普通文件存在跨域无权限访问的问题,不管是静态页面、动态页面、web服务,只要是跨域请求,一律不准。2、不过我们发现,web页面调用js文件则不受跨域的影响(不仅如此,我们还发现凡是拥有“src”这个属性的标签都拥有跨域的能力,比如<\script>、<\img>、<\iframe>)。3、于是可以判断,当前阶段如果想通过纯web端跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用转载 2020-07-14 20:09:56 · 18421 阅读 · 1 评论 -
全民日志组件 Apache Log4j2 爆发漏洞,赶紧加班修复
一、日志漏洞,劲爆来袭近日,Apache Log4j2 的远程代码执行漏洞刷爆朋友圈,该漏洞一旦被攻击者利用会造成严重危害。而且此次漏洞影响巨大,很多网站如百度等都是此次 Log4j 远程代码执行漏洞的受害者,很多互联网企业也都连夜做了应急措施。据说是阿里团队发现的,再次膜拜阿里爸爸。漏洞详情:打印日志时,如果是一段可执行的代码或超链,就会有被执行的可能,类似于sql注入,秒懂没?这可能导致服务器被黑客控制,从而进行页面篡改、数据被盗、网络瘫痪等行为。二、解决方案1、民间解决方案:升级到最原创 2021-12-11 12:10:14 · 6705 阅读 · 0 评论 -
java基础知识点
🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪,专注Java硬核干货分享,立志做到Java赛道全网Top N。🏆本文收录于,,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。🏆姐妹篇,,包含面向对象、基本数据类型、数组、继承和多态、泛型、枚举等Java基础知识点。🏆姐妹进阶篇,原创 2021-09-18 10:17:31 · 27225 阅读 · 10 评论 -
【Java 多线程 3】线程池2
一、线程池简介线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅...原创 2019-08-02 15:01:00 · 3289 阅读 · 3 评论 -
BIO与NIO、AIO的区别
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、同步阻塞的BIO在JDK1.4之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个serverSocket,然后在客户端启动socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端线程会等待请求结束后才继续执行。二、同步非阻塞的NIONIO本身是基于事件驱动思原创 2020-07-02 12:33:53 · 26194 阅读 · 4 评论 -
如何分割“以空格分割的字符串中间还有空格”的数据结构
如何分割“以空格分割的字符串中间还有空格”的数据结构,话不多说,直接上代码。/** * 5 1 "zhang san feng" 0.000 "hello world" "哪吒" * --> * [5, 1, "zhang san feng", 0.000, "hello world", "哪吒"] */private static void test01() { String str = "5 1 \"zhang san feng\" 0.000 \"hello w.原创 2021-07-08 22:29:35 · 2087 阅读 · 9 评论 -
treeMap按值排序
一、什么是缓存缓存是存在于内存中的临时数据。使用缓存减少和数据库的交互次数,提高执行效率。1、适用于缓存:经常查询并且不经常改变的。 数据的正确与否对最终结果影响不大的。2、不适用于缓存:经常改变的数据 数据的正确与否对最终结果影响很大的。例如:商品的库存,银行的汇率,股市的牌价。二、Mybatis一级缓存它指的是Mybatis中SqlSession对象的缓存。当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。该区域的结构是一个Map。原创 2021-02-18 13:26:48 · 7238 阅读 · 4 评论 -
Windows批处理(cmd/bat)常用命令小结
一、前言批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的批处理文件可以极大程度地节省时间,在应对重复性工作时尤其有效。在Windows中善用批处理可以简化很多重复工作。二、什么是批处理批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展名为bat。目前比较常见 的批处理包含两类:D转载 2021-06-07 22:31:57 · 26589 阅读 · 3 评论 -
彻底理解coookie、session、token
一、发展史1、很久很久以前,web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议,就是请求加响应,尤其是我不用记住是谁刚刚发了HTTP请求,每个请求对我来说都是全新的,这段时间就很嗨皮。2、但是随着交互式web应用...转载 2021-05-04 21:40:56 · 2040 阅读 · 0 评论 -
Spring Boot进阶:原理、实战与面试题分析
《Spring Boot进阶:原理、实战与面试题分析》对Spring Boot的各项功能特性及其最佳实践、实现原理展开讨论,涵盖了核心容器、Web服务、内置缓存、数据访问、并发编程、监控和扩展等一系列核心主题,这些核心主题也广泛应用于Spring家族中的其他开发框架。原创 2022-08-25 09:30:51 · 8986 阅读 · 13 评论 -
什么是 JWT -- JSON WEB TOKEN
一、什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。二、起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。三、转载 2021-04-02 21:17:32 · 2112 阅读 · 1 评论 -
Java判断两个ListMap值是否相等(包括数据长度、存储的值)超实用工具类(亲测)
一、功能描述比较两个list中存储的map数据,比较的list的数据类型需一致,就能比较出存储的数据是否一致。二、实现步骤1、比较两个list的长度大小2、统计出每个list中存储的map值的个数及重复的,进行比较3、具体比较值三、代码实例private static final Integer INTEGER_ONE = 1;// 判断并返回结果 true和falsepublic static boolean isEqualCollection(Collection a转载 2021-04-02 21:08:03 · 6498 阅读 · 4 评论 -
Java句柄与指针
java中的句柄分为两种:对象句柄 jvm中对象访问句柄一、对象句柄句柄: 一个唯一的整数,作为对象的身份id,区分不同的对象,和同类中的不同实例。程序可以通过句柄访问对象的部分信息。句柄不代表对象的内存地址。在Java中的任何东西都可以看做对象,存在一种标识符实际指向一个对象的句柄.在Java的其他地方或者数据中也有称为 "引用"或者 "指针". 只是一个引用地址,我们不能认为Java中没有指针,其实这就是一个指针,我们每次操作对象就是根据句柄去找到对象操作对象的. 即使没有对象,我们也可以让转载 2021-03-29 21:49:23 · 2119 阅读 · 1 评论 -
Java反射中,为什么推荐Class.forName()获取class?
一、Java反射中获取Class对象的三种方式在Java反射中,反射的入口就是class,获取class的方式有三种Class.class; Class.forName(); 对象.getClass()对三者的简单理解Class.class的形式会使JVM使用类加载器将类装入内存(前提是类还没有装入内存),不做类的初始化工作,返回Class对象。 Class.forName()的形式会装入类并做类的静态初始化,返回Class对象。 对象.getClass的形式会对类进行静态初始化转载 2021-03-06 09:44:56 · 7086 阅读 · 1 评论 -
多线程面试题总结(高级篇,2021-02-19)
一、ThreadLocal 是什么?有哪些使用场景?ThreadLocal 是一个本地线程副本变量工具类,在每个线程中都创建了一个 ThreadLocalMap 对象,简单说 ThreadLocal 就是一种以空间换时间的做法,每个线程可以访问自己内部 ThreadLocalMap 对象内的 value。通过这种方式,避免资源在多线程间共享。原理:线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java提供ThreadLocal类来支持线程局部变量,是一种实现线程安全的方式转载 2021-02-19 21:53:40 · 12513 阅读 · 0 评论 -
为什么HashMap使用红黑树而不使用AVL树
在Jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。那么很多人就有疑问为什么是使用红黑树而不是AVL树,AVL树是完全平衡二叉树阿?最主要的一点是:在CurrentHashMap中是加锁了的,实际上是读写锁,如果写冲突就会等待,如果插入时间过长必然等待时间更长,而红黑树相对AVL树他的插入更快!问题:为什么不使用AVL树而使用红黑树?红黑树和AVL树都是最常用的平衡二叉搜索树,它们的查找、删除、修改都是O(lgn) t转载 2021-02-16 20:19:35 · 6026 阅读 · 2 评论 -
用户态和内核态的区别
一、操作系统需要两种CPU状态内核态(Kernel Mode):运行操作系统程序,操作硬件用户态(User Mode):运行用户程序二、指令划分特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令访管指令(使用户程序从用户态陷入内核态)三、特权级别特权环:R0、R1、R2和R3R0相当于内核态,R3相当于用户态;不同级别能.转载 2021-02-16 20:16:30 · 21323 阅读 · 0 评论 -
HashMap底层实现原理及面试问题
一、HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。当两个不同的键对象的hashcode转载 2021-02-16 20:12:58 · 15010 阅读 · 0 评论 -
java 通过 SmbFile 类操作共享文件夹
一、添加依赖在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。<dependency> <groupId>jcifs</groupId> <artifactId>jcifs</artifactId> <version>1.3.17</version></dependency>二、读取文件/** * 读取共享文件夹下的所有转载 2021-02-03 21:19:33 · 4781 阅读 · 4 评论 -
JavaBean与xml互转的方法详解
一、简介JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。Jaxb 2.0是JDK 1.6的组成部分。我们不需要下载第三方jar包 即可做到轻松转换。Jaxb2使用了JDK的新特性,如:Annotation、GenericType等,需要在即将转换的JavaBean中添加an转载 2021-01-30 08:51:27 · 3367 阅读 · 0 评论 -
strictfp关键字
strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令人满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果想让浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字str原创 2021-01-26 19:53:25 · 1242 阅读 · 0 评论 -
ConcurrentHashMap源码解读
曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理转载 2021-01-26 19:10:19 · 969 阅读 · 0 评论 -
Java基础知识总结(2021版)
前言大家好,我是素小暖,2012年毕业,2016年通过培训转行java开发,今天2021年1月9日,转行之路跌跌绊绊,蓦然回首,已经满满的4年工作经验了?但感觉知识还是相当的匮乏,没自信,也许是努力程度还不够吧。很感谢CSDN,因为是它给了我学习的动力,之前写了一篇记录CSDN博客访问量的文章,也许大家感觉很幼稚,但真的很有用,很有效果,仿佛磕了药一样,努力学习,进步。2020年,是我较为成功的一年,工作上,跳了槽,涨了工资;学习上,啃了几本名著(Effective Java、重构 改善既.原创 2021-01-09 16:20:53 · 254855 阅读 · 312 评论 -
Idea快捷键大全(Windows)
一、知道类名查找类:1、Ctrl+Shift+Alt+N;2、双击Shift二、查找类中所有方法:Ctrl+F12三、快速查找类或方法在整个项目中的位置:按住Ctrl键再点击类或方法会出现所有用到过的文件对象...原创 2020-04-29 14:15:12 · 1840 阅读 · 0 评论 -
java intern方法
String s1 = new String("1") + new String("1");//s1变量记录的地址为:new Strings1.intern();//在字符串常量池中生成"11"。如何理解:jdk6:创建了一个新的对象"11",也就有新的地址;jdk7:此时常量池中并没有创建"11",而是创建了一个指向堆空间中new String("11")的地址;String s2 = "11";System.out.println(s1 == s2);//jdk6:false;jdk7:true.原创 2020-11-18 21:26:40 · 6076 阅读 · 0 评论 -
Java之StringUtils的常用方法
StringUtils 方法的操作对象是Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)。除了构造器,StringUtils 中一共有130多个方法,并且都是 static 的,所以我们可以这样调用 StringUtils.xxx().转载 2020-11-18 00:06:01 · 12215 阅读 · 0 评论 -
错误: 找不到或无法加载主类
今天遇到一个很郁闷的问题,我自己手写了一个简单的java类的测试,但是Run as Java Application 时,却报一个错误说,找不到或无法加载类*****,找了半天问题,最后解决的办法是:点击项目文件夹选择Build Path--->Configure Build Path-->Libraries里面把用不到的jar包通通清理掉重新Run asJava Application 就好了。注意:用不到的jar包,比较明显的特点是在Libraries里面它的前面有个蓝色的圆点标记.转载 2020-11-12 15:21:52 · 3350 阅读 · 0 评论 -
Java反射之Method的invoke方法实现
在框架中经常会会用到method.invoke()方法,用来执行某个的对象的目标方法。以前写代码用到反射时,总是获取先获取Method,然后传入对应的Class实例对象执行方法。然而前段时间研究invoke方法时,发现invoke方法居然包含多态的特性,这是以前没有考虑过的一个问题。那么Method.invoke()方法的执行过程是怎么实现的?它的多态又是如何实现的呢?本文将从java和JVM的源码实现深入探讨invoke方法的实现过程。首先给出invoke方法多态特性的演示代码:public转载 2020-11-11 21:55:35 · 22216 阅读 · 2 评论 -
FileInputStream 类与 FileReader 类的区别
FileInputStream类与FileReader类的区别:两个类的构造函数的形式和参数都是相同的,参数为File对象或者表示路径的String,它们到底有何区别呢?FileInputStream:以字节流方式读取;FileReader:把文件转换为字符流读入;InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String,使用InputStream读取出来的是byte数组。Read...转载 2020-11-11 21:42:48 · 5553 阅读 · 0 评论