自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 研发效能工程实践-利用Superset快速打造大数据BI平台

随着互联网发展,现在随便哪个公司都手握大量数据。如何利用这些数据为公司商业带来价值,促使各个公司投入大量人力财力去做商业智能。如何快速打造一个BI平台呢?如果公司研发实力不是很雄厚,开源工具也是一个不错的解决方案。本篇文章主要介绍如何利用superset来打造一个BI平台,以及其中遇到的坑和一些经验分享

2022-12-04 21:41:27 1379 4

原创 研发效能工程实践-精益需求管理

传统的需求管理方式越来越跟不上当今快速变化的互联网环境,敏捷管理越来越受到各个公司的欢迎。本文就团队如何实施精益需求管理提出一种方法以及如何制定效能度量指标改进研发流程提供了一些思路,希望可以抛砖引玉

2022-11-07 08:45:00 561

原创 研发效能工程实践-代码评审

CR是日常开发过程中很重要的一环,他在开发中起到了很多正向的作用,本篇属于研发效能工程实践系列的CR篇,教你如何在平时开发过程中利用CR来提升团队代码质量和团队技术水平

2022-11-03 22:09:01 1052

原创 日常随笔-loading shared libraries: XXXXX cannot open shared object file: No such file or directory

当出现error while loading shared libraries: XXXXX: cannot open shared object file: No such file or directory错误时,不一定是你的库不存在,只是它新安装没有被加入动态库缓存中

2022-10-30 21:36:09 175 1

原创 研发效能工程实践-单元测试

单元测试在我们日常开发中,可以帮助我们发现早期程序错误;也可以帮助我们大胆的重构代码,对于团队提升研发效能有很好的促进作用?接下来就介绍如何开始在项目中使用单测以及单测用例的一些设计原则

2022-10-26 09:15:00 392

原创 研发效能工程实践开篇

研发效能是目前很多公司都会关注的问题,特别是当下各个公司都在我只是想把自己经历的经验分享给大家,希望能给到大家帮助,打造一个敏捷团队,解放生产力,提升团队交付能力。

2022-10-23 20:23:59 454

原创 Java:这个对象还活着吗

我们知道,程序运行时会不断创建对象,对象的存储是需要消耗内存。C/C++它们每次都需要手动释放内存,但是很多人用了很久的Java可能会好奇,为什么Java不需要手动释放内存呢?究其原因就是C/C++的手动释放内存的方式一定程度上很考验开发者的水平和细心,如果哪里忘记了释放内存,可能造成灾难影响。火狐浏览器换Rust也是因为这个原因,在之前发现的大部分漏洞都是因为内存问题。Java设计者在设计之初就避免了这个问题,将内存管理交给JVM管理,开发者不需要再显式释放内存。我们把这个叫垃圾回收,顾名思义只有垃圾

2022-06-29 21:42:29 106

原创 日常随笔-4-万字面经教你如何拿大厂offer(非科班)

工作经历最近换工作,先说结果吧,拿到最高的是的年薪40+,权衡之后选择了腾讯offer,其中也有要23k觉得要多了的,主要是上一家base太低了,有时候自己都不敢要太高,现在想通了,我来面试,通过了凭什么要拿上一家的base来压我,说出来不怕笑话在上一家年薪21+,哎,一言难尽。回想起从毕业到现在也4年了,当初毕业的时候不是Java开发也不是计科出身,也没参加过培训班(我个人非常反感培训班),只因偶然的实习走上Java开发这一条路。大学没有好好学习,参加工作以来,也是走过一些艰辛的道路,回想大学刚毕业那

2020-12-30 22:37:52 901

原创 日常随笔-3-谈查找算法

引言计算机处理数据无外乎是两种方式,一种是查询,第二种是修改。本文主要讨论的是查询这一操作,在查询数据时,我们最容易想到的方式那就是顺序查找,就遍历一遍呗,直到找到匹配的数据,那么时间复杂度是O(n)O(n)O(n),当数据规模不大时,这么查找也没啥问题,但是一旦数据规模较大时,那么查询的时间就会变得很慢。这时候就有一些高效算法出来了,比如hash、内存中二分查找、存储引擎中的B+Tree,本文就详细介绍一下这些算法查找算法Hash表定义:hash表又叫散列表,通过一个hash函数把任意长度的

2020-11-21 22:04:25 131

原创 日常随笔-2-谈缓存

引言最近忙着找工作,都没时间更新,今天忽然有点想法,想写一篇关于缓存的文章,仅仅是自己的一点看法。如果说到缓存,大家可能会想到CPU的高速缓存、Redis、MemCached,还有自己实现的单机本地缓存,它们的作用其实都是一个,那就是方便我们的应用可以更快的获得我们需要的数据。在远古计算机时代,计算机CPU的速度很慢,存储设备的速度也很慢,所以这个时候我们可能都用不上缓存,因为没必要嘛,CPU速度和存储设备的速度一致。随着技术的发展,CPU由晶体管发展成超大规模集成电路使得cpu的发展发生了质变,c

2020-11-14 22:07:20 155

原创 分布式系统-4-同步网络一致性算法

引言上一篇文章讲了分布式同步网络算法中的BFS、最短路径、MST和MIS算法,这一篇文章将会将分布式系统中一个非常重要的问题-一致性。在单节点的环境中,一致性问题是比较容易解决的,像单节点的数据库,因为只有一个节点,也就不存在数据不一致的说法。因为机器总会有概率出故障,如果仅仅是单节点应用,一旦机器发生故障,那么服务将不可用。为了提供高可用的应用,多节点部署应用成为一种解决方案,但是多节点部署应用也引发了一些问题,比如节点故障依然存在;并且因为多节点,导致节点间需要通信,因此系统存在通信故障,如果机器不

2020-09-24 21:37:32 1045 1

原创 分布式系统-3-同步网络算法

引言上一篇文章讲了同步网络中的leader选举算法。考虑一个问题,当网络中有消息需要广播时,如果在网络中以最快的速度完成广播?或者如何计算图的直径?接下来就会一步一步解决这些问题将在这篇文章中讲述分布式同步网络中广度优先搜索、最短路径和最小生成数算法。广度优先搜索利用广度优先搜索来构造方便用于广播通信的树,BFS树最小化最大通信时间SynchBFS算法前提假设假设进程有uid不知道网络大小和直径给定初始root i0i_0i0​进程维护状态parentparentpare

2020-09-13 21:55:45 778 1

原创 分布式系统-2-同步网络Leader选举算法

引言在前一篇文章概述中,提到了分布式系统模型大致分类为同步网络模型、异步共享存储器模型、异步网络模型和部分同步模型。今天开始,将慢慢介绍同步网络模型的一些算法,因为同步网络模型有一些严格的环境假设,所以同步网络模型算法比较简单,但是同步网络模型是一个理想化模型,现实生活中这种模型是非常少的,但是学习它们也有助于我们理解后边的异步模型算法和部分同步模型,在接下来的几篇文章中,将分别介绍分布式领域中比较热门的话题包括Leader选举、一致性(包括著名的Byzantine故障下的一致性)、最小生成树和最短路径等

2020-09-13 12:37:28 1895 5

原创 分布式系统-1-概述

引言随着互联网的发展和业务的复杂度提升,越来越多的应用开始使用微服务架构,因此对于学习分布式基础知识非常有必要。因为我们平时做开发可以熟练的使用工具,但是有时候不知道其背后的原理会让人很不爽。提到分布式系统,可能很多人就会觉得那是很多机器,当然这个没错,但是我们不应该以机器的数量来分辨是不是分布式系统,当然多机器肯定是分布式,但是单机就一定不是分布式系统吗?答案肯定是不一定,在NancyA.Lynch的《分布式算法》一书中,都是用抽象为”进程”理解的,如果我们用机器来理解,假设公司分配的机器是8核16G

2020-09-10 22:01:38 283

原创 一个外包系统的重构过程

背景2017年正直互联网金融崛起之时,由于那时候监管不规范,互联网金融公司如雨后春笋般崛起,我也是这时入职了一家互联网金融创业公司(一个大集团的全资子公司)。入职之前可能因为公司没有技术团队来开发一套完整的贷款系统,因此外包了系统给一个外包公司(这里就不说是哪家了),整个项目软件技术偏老,JDK当时还是用的1.7,外包系统可能大家都懂的,它们为了批量生产,基本都是有一个自有框架,然后在其框架上做开发。维护过外包系统的人可能都知道,那是一个非常痛苦的,就拿我接手的这个项目来说吧,我主要列几点。数据库表冗

2020-07-27 22:47:24 664

原创 操作系统-11-死锁原理

引言计算机的某些资源同一时间只能一个进程或线程使用,比如打印机,如果两个进程同时使用打印机便会出问题。所以需要使用锁来控制进程并发的使用某些资源,但是不恰当的使用锁会造成一个严重的问题。举个例子,进程A申请扫描仪,A获得扫描仪;进程B申请刻录仪,B获得刻录仪,此时进程A需要申请刻录仪,而进程B要申请扫描仪,因为进程A、B都需要有扫描仪和刻录仪才能完成工作,因此这个过程将一直等待下去,这就叫做死锁。死锁可以发生在各种各样的场景,比如数据库,接下来学习死锁的发生和死锁的检查以及死锁的避免和解决资源大部分

2020-07-26 22:57:23 336

原创 操作系统-10-I/O-基本原理

引言上一篇学习了文件系统的原理,我们知道了操作系统是如何管理文件的,但是却没有学习磁盘是如何处理操作系统发出的读写操作,这一篇我们要学习操作系统是如果实现I/O和管理I/O的。什么是I/OI/O包含两部分,I/O设备和I/O接口以及如何管理I/O设备,I/O设备就是我们常见的磁盘、网卡、鼠标键盘、打印机和显示器等。接下来的文章就要学习I/O设备、I/O模型和I/O、中断处理和错误处理。I/O硬件原理IO设备块设备:存储信息在固定大小的块,每一个块都自己的地址,所有的传输单元都是一个或者多个块

2020-07-23 20:47:29 1254

原创 操作系统-番外-基于NAND存储设备文件系统F2FS

背景由于磁盘的机械特征,导致要想提升它的读写速度是非常困难的。因此SSD应运而生,它的读写速度,因为没有磁头,导致其寻道时间几乎为0。SSD的分类基于闪存类:采用FLASH芯片作为存储介质,擦写次数有限制基于DRAM的固态硬盘:采用DRAM作为存储介质,它是一种高性能的存储器,而且使用寿命很长,美中不足的是需要独立电源来保护数据安全针对闪存ssd的特性,虽然其速度快,我们知道大部分的I/O操作都是随机写,如果不仔细的处理,会严重增加I/O的延迟和缩短SSD的寿命。虽然LFS和BTRFS有效的降

2020-07-18 12:00:39 773

原创 操作系统-番外-老牌Linux文件系统ext

引言和标题一样,ext文件系统是一个老牌的Linux的文件系统,是Linux的第一个文件系统。虽然业界将Ext文件系统看成是一个过度用的文件系统,但是现在的Ext4依然有很强的生命力。从ext2-ext3-ext4,文件系统的磁盘布局没有发生太大的变化,从ext2到ext3,主要是增强了可用性、数据完整性、速度、易于迁移等功能;ext3到ext4就不仅仅是功能增强,它修改了某一些重要的数据结构,并且在对大文件的支持上做了更多的优化改进Ext文件系统磁盘布局Ext2文件系统磁盘布局ext文件系统从ex

2020-07-09 23:06:56 242

原创 操作系统-番外-日志结构文件系统LFS

引言过去几十年CPU速度的增长是巨大的,但是磁盘的访问速度却增长较慢。内存近些年发展也很快,可以提供较大的空间存储程序的工作集,因此磁盘传输主要是被写操作支配。因此如何提升写效率是有效利用磁盘的关键。日志结构文件系统是用顺序写,因为省去了绝大部分seek操作,因此大大提升了写的性能。还有一个好处就是系统崩溃恢复,日志结构文件系统只需要检查最近的部分日志日志结构文件系统实现基本假设大部分的读请求都从缓存中读取大部分磁盘访问都是写请求段概念段定义:虽然磁盘顺序写效率高,考虑一下,如果有一

2020-06-29 22:38:44 1263 1

原创 操作系统笔记-9-文件系统

引言之前已经学习过数据在内存中是如何表示,如何存储,但是这些存储在PC断电后数据便消失。因此我们需要一个可以持久化存储并且容量远远大于内存的结构,这一篇我们将学习,文件是如何被组织和操作的,这是一个操作系统重要的部分-文件系统。文章的结构主要分为文件和目录的概念、文件系统的实现、文件系统的管理和优化、最后是例子。文件和目录基本概念文件文件定义:文件是一种抽象的概念,它提供了一种方法可以将信息存储到硬盘并且随后读取回来。文件命名:文件命名规则是通常分为两部分,小数点后的叫文件扩展名(不是必须

2020-06-26 18:24:05 418 1

原创 日常问题随笔-RestTemplate发送Get请求通过body传参问题

问题出现今天在对接其他部门的接口时,发现对方提供了一个GET请求,但是参数却要求通过body传递json格式的数据。这可难住我了,GET请求还能通过body传递参数吗?带着疑问,先试一下吧。我们项目用的RestTemplate,我想起了RestTemplate的exchange方法有个参数HttpEntity,会不会是这里可以传参数进去呢?迅速写了代码public static String getForJson(String url, Map<String,Object> dataValu

2020-06-18 22:45:54 4192

原创 操作系统笔记-8-高速缓存

引言上一篇学习了虚拟内存,虚拟内存解决了多道程序并发运行的内存分配和解决小内存运行大程序的问题。这一篇将讲解高速缓存,来解决内存的低速和cpu高速不匹配的问题,计算机的很多的问题,其实都可以中间加一层解决,因此计算机才变得复杂,想象一下如果主存的速度可以匹配cpu的速度那么高速缓存就不需要了,再进一步,假设硬盘的速度可以匹配cpu,我想主存也可以不需要了。但是现有的技术还达不到这个目标,所以这一部分还是得学习一下高速缓存,看看高速缓存是如何解决cpu快速访问指令和数据的问题。基本概念CPU、缓存、内存

2020-06-14 17:06:44 420

原创 操作系统笔记-7-虚拟内存

引言上一篇笔记讲述了内存的地址空间抽象,但是还留下了问题,那就是当软件很大的时候虽然利用Swapping技术可以运行,但是每次交换整个进程的空间开销不容忽视,虽然近年来内存也有增长,但是软件大小增长的速度远大于内存增长的速度。一个解决方法是Overlays(覆盖),Overlays将程序分割为多个片段,称为覆盖,当程序开始时,覆盖管理器加载覆盖0,执行完成后,通知覆盖管理器加载覆盖1,然后覆盖1会在覆盖0top上(如果有空间),或者直接在覆盖0(如果没空间)。虽然,换入换出覆盖块由操作系统完成,但是需要

2020-06-13 14:33:15 405

原创 操作系统笔记-6-内存管理基础

引言花了一段时间才把之前的笔记整理了一部分,平时太忙也没啥时间。今天开始整理内存管理部分的,内存管理部分大致分为三部分笔记,第一部分就是本篇内存管理基础,第二部分是虚拟内存,第三部分高速缓存。一个程序在运行前,只是一个存储在磁盘上的可执行的二进制文件,包括可执行指令和数据。当程序运行时,这个二进制文件会被加载到内存中,指令和数据在执行时会被cpu从内存中加载到寄存器中,然后执行,可能会把执行结果再次存入内存中。数据以何种形式存在内存,如果为进程分配内存,进程退出如何回收,这个过程叫内存管理,接下来就详细

2020-06-08 22:38:22 239

原创 操作系统笔记-5-进程&线程同步

引言前一篇介绍了进程和线程调度,知道线程和进程在系统中是并发执行,这将会引发出一些问题。接下来从一个简单的生产者和消费者例子说起,从前有两个进程,一个进程负责往一个buffer里写数据,我们把它叫做生产者;一个进程负责消费数据也就是取走buffer里的数据,我们把它叫做消费者。因为我们要记录写到哪里,所以需要一个变量in来记录,还需要一个变量记录消费到哪里了out,现在我们假设核心的生产者代码段。 while (true) { while (count == BUFFER SIZE)

2020-06-05 23:17:52 447

原创 操作系统笔记-番外-操作系统经典书籍推荐

最近整理以前的笔记,有人问关于操作系统的书籍。我有个爱好喜欢收集书籍,前后也收集了几百本高质量的书籍,这里给大家推荐基本关于操作系统的书籍Operating System Concepts 10th edition又称恐龙书,这本书已经出到第10版,可见其经典。作者是想从理论层面把问题的产生和解决思路阐述清楚,包含了操作系统各个方面,是一本非常不错的入门书籍。豆瓣书评下载地址:https://github.com/woodliu/Operating.System.Concepts.10th.Ed

2020-06-03 22:25:41 520

原创 操作系统笔记-4-进程&线程调度

引言当我们在平时工作或学习中用电脑的时候,我想很多人都是一边听着音乐一边写代码、看文档、编辑Markdown写笔记或者Chrome看着网页,不知道你有没有好奇电脑为什么可以可以同时完成这些程序的运行,并且如果你细心可能发现了有时候程序的响应快,有时候响应慢。这些都是因为进程&线程调度的结果,哪怕你的电脑处理器只有一核,可同时同时执行多个应用程序。为何需要调度并不是所有的程序都是cpu密集型的,也有I/O密集型,如下图,a是cpu密集型任务,它有很长的cpu周期,而b则持有cpu的时间短但是却很

2020-06-02 22:20:48 842

原创 操作系统笔记-3-线程

多线程出现传统的进程都是单线程的程序。我们总是希望自己的程序有更高的并行性,传统进程也是有办法实现这种并行性,那就是通过子进程,但是子进程是独立的数据空间,很多时候程序的不同任务都是需要访问相同数据的,因此子进程有很大的局限性。在这种需求场景下,多线程出现了,它弥补了子进程的缺陷,因为进程内的线程共享进程的资源,可以很容易实现数据共享。线程概念线程在进程内部,它共享进程的地址空间。线程属性线程共享执行代码,data分段和打开的文件。但是有独立寄存器、程序计数器、状态和栈。第一列是线程共享的进程

2020-05-27 22:40:01 395

原创 操作系统笔记-2-进程

进程是什么大部分资料都描述进程是资源分配的基本单位,但是这个描述并不能很好的描述进程的特性;另一个种描述是进程是对运行程序的一种抽象,我更赞同这种说法,第一它说明进程和程序有关系,第二它说明必须是运行中的程序。我们看一下Linux下的进程。进程概念进程内存布局进程的内存布局被划分为多个分段,具体如图text分段:存放可执行代码,也就是程序的代码data分段:存放全局变量heap分段:程序运行期间动态分配的内存stack分段:方法调用的临时内存(比如方法参数、返回地址和临时变量)一个

2020-05-24 22:54:05 325

原创 操作系统笔记-1-操作系统概述

背景很早就看了《MODERN OPERATING SYSTEMS》这本书,当时也做了很多笔记。为了方便自己能更好的温故知新,也为了防止自己的笔记丢失,遂搬到云上(手动狗头)。这是操作系统学习笔记的一个系列,这是第一篇笔记,主要是讲个操作系统的大概,以及它是个什么东西,能做什么,我们平时做开发是怎么和它打交道。做开发要不要了解OS答案肯定是要的。其实这个问题和写程序要不要学算法一个道理。如果觉得没用,只能说明你写的程序可能还停留在CRUD阶段(不要打我,没有贬低的意思)。我们都知道,但凡做的稍微深一点,

2020-05-23 21:46:04 412

原创 Docker构建学习环境(4)-Azkaban Solo模式调度Spark

背景前段时间利用Docker部署了hadoop集群和spark,也简单的提交了任务。但是肯定有一个疑问,如果我们要执行定时任务怎么办呢?或者我们执行复杂的具有顺序的多任务怎么办?在大数据中,这种场景非常常见,一个大数据任务通常由大量的任务组成,并且可能是shell脚本、mapreduce任务、spark任务等,并且任务之间存在依赖关系。手动执行这种原始办法虽然可以,但是人总有出错的时候。今天要带来的一款具有复杂任务调度能力的框架-Azkaban,也支持定时调度。Azkaban介绍Azkaban是由Li

2020-05-11 22:06:29 853

原创 Docker构建学习环境(3)-部署Spark并提交WordCount任务

Spark概述Apache Spark是一个开源集群运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于Hadoop的MapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。Spark在存储器内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spar...

2020-05-01 17:37:12 906

原创 Docker构建学习环境(2)-搭建Hadoop集群

认识Hadoop简单描述,Hadoop是一款实现分布式海量数据存储和离线海量数据分析的工具。官方地址。Hadoop提供的安装方式有单机模式、伪分布式模式和完全分布式模式,不知道为什么有强迫症似的,如果有分布式模式必须要安装完全分布式模式。为了部署完全分布式模式的Hadoop,我采用docker的方式部署3个容器。不得不说docker确实是一个非常适合个人学习的安装各种软件的工具,如果你是wind...

2020-04-30 22:17:54 281

原创 Java基础之IO(4)-Writer

概述上一篇讲得是Reader字符输入流,今天讲的是Writer字符输出流。同OutputStream类似,只是OutputStream输出的是字节,Writer输出的是字符。字节流和字符流不在这里介绍,前面已经讲得很多了。Writer的继承关系图节点流FileWriterFileWriter是字符输出流,同FileReader一样是一种以操作字符的流。这里我们要明白,虽然这里我们输出的...

2019-11-13 21:56:21 204

原创 Java基础之IO(3)-Reader

概述前两节学习过了字节输入流和字节输出流,大家可能会疑惑,为什么已经有了字节输入流,还需要字符输入流。其实从字面意思就可以理解,字节输入流在读取的时候是按字节的方式,而字节是一个对计算机友好,但是对人类用户不友好的方式,字符才是对人类友好的传递信息的方式。字符流对处理文字特别方便,而字节流在处理图像、音频、视频方面比较方便。Reader的继承结构字符流和字节流的区别字符流是用两字节表示U...

2019-11-11 22:21:05 161

原创 Java基础之IO(2)-OutputStream

概述上一篇讲了InputStream,和InputStream相对的,InputStream是把数据从一个源中读取出来,而OutputStream是把数据输出到一个源,这个源可以是一个文件,网络,内存,终端等。和InputStream一样,OutputStream也是字节流,前边解释过什么是字节流,这里再简单说一下,字节流就是以字节的方式操作流。举个例子:字节编码上图中上边一行就是字符,...

2019-11-10 20:53:25 183

原创 一个生产问题引发的Java编码思考

背景从一个问题说起,前几天在和一家公司做项目对接时,我方公司提供给对方的是返回的code码作为成功还是失败校验,对方公司因为使用了我方返回的msg作为组合校验,而返回msg出现乱码,导致对方公司作字符串匹配时失败,以为我方返回的是失败。这时,对方公司截图发给我方要求我方检查编码。我虽不才,但是我方使用的编码我还是可以保证的,我敢大声的说不是我方的问题。为此开启了一条甩锅之路(不对啊,明明不是我的...

2019-11-08 21:52:11 231

原创 Docker构建学习环境(1)-部署ElasticSearch集群

ElasticSearch介绍ElasticSearch下面简称ES,是一款分布式全文搜索和分析引擎,它可用于商城的全文搜索引擎,也可用作小型实时日志分析系统,著名的ELK中的E就是指的ElasticSearch。ElasticSearch基于Lucene基础之上,用过Lucene的人可能知道,Lucene的API复杂,而且缺乏分布式功能,而ElasticSearch天生提供分布式功能,并且提供...

2019-11-05 21:54:12 459

原创 Java基础之IO(1)-InputStream

概述之前介绍过一篇IO总览的文章,概述性的讲解了现有的一些Java IO。从这一篇开始,详细讲解Java IO的各个模块,今天首先讲一下InputStream。InputStream是一个字节输入流,什么是字节流呢?我们知道在java中有一个叫byte的基本类型,就是同一个。字节是一个8位表示的二进制。很多人会误认为输入流就是打开一个磁盘文件然后从里边读数据,但是输入流并不局限于文件,应该说I...

2019-11-04 19:31:25 209

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除