白T恤架构师
码龄2年
  • 102,621
    被访问
  • 336
    原创
  • 11,929
    排名
  • 50
    粉丝
  • 0
    铁粉
关注
提问 私信

个人简介:爱穿白衬衫,深藏功与名

  • 加入CSDN时间: 2020-02-06
博客简介:

前端工程师年薪30万,就靠这套教程!持续更新最新知识

查看详细资料
  • 3
    领奖
    总分 316 当月 0
个人成就
  • 获得53次点赞
  • 内容获得16次评论
  • 获得185次收藏
创作历程
  • 86篇
    2022年
  • 250篇
    2020年
成就勋章
TA的专栏
  • java入门到架构
    85篇
  • 前端
    96篇
  • html
    55篇
  • css
    60篇
  • JavaScript
    16篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Java入门到架构师知识点整理 | IO | 使用Files

从Java 7开始,提供了Files这个工具类,能极大地方便我们读写文件。虽然Files是java.nio包里面的类,但他俩封装了很多读写文件的简单方法,例如,我们要把一个文件的全部内容读取为一个byte[],可以这么写:byte[] data = Files.readAllBytes(Path.of("/path/to/file.txt"));如果是文本文件,可以把一个文件的全部内容读取为String:// 默认使用UTF-8编码读取:String content1 = Files.read
原创
发布博客 2022.04.29 ·
32 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | PrintStream和PrintWriter

PrintStream是一种FilterOutputStream,它在OutputStream的接口上,额外提供了一些写入各种数据类型的方法:写入int:print(int)写入boolean:print(boolean)写入String:print(String)写入Object:print(Object),实际上相当于print(object.toString())…以及对应的一组println()方法,它会自动加上换行符。我们经常使用的System.out.println()实际上就
原创
发布博客 2022.04.29 ·
82 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | Writer

Reader是带编码转换器的InputStream,它把byte转换为char,而Writer就是带编码转换器的OutputStream,它把char转换为byte并输出。Writer和OutputStream的区别如下:OutputStreamWriter字节流,以byte为单位字符流,以char为单位写入字节(0~255):void write(int b)写入字符(0~65535):void write(int c)写入字节数组:void write(byte[
原创
发布博客 2022.04.29 ·
37 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | Reader

Reader是Java的IO库提供的另一个输入流接口。和InputStream的区别是,InputStream是一个字节流,即以byte为单位读取,而Reader是一个字符流,即以char为单位读取:InputStreamReader字节流,以byte为单位字符流,以char为单位读取字节(-1,0~255):int read()读取字符(-1,0~65535):int read()读到字节数组:int read(byte[] b)读到字符数组:int read(ch
原创
发布博客 2022.04.29 ·
79 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | 序列化

序列化是指把一个Java对象变成二进制内容,本质上就是一个byte[]数组。为什么要把Java对象序列化呢?因为序列化后可以把byte[]保存到文件中,或者把byte[]通过网络传输到远程,这样,就相当于把Java对象存储到文件或者通过网络传输出去了。有序列化,就有反序列化,即把一个二进制内容(也就是byte[]数组)变回Java对象。有了反序列化,保存到文件中的byte[]数组又可以“变回”Java对象,或者从网络上读取byte[]并把它“变回”Java对象。我们来看看如何把一个Java对象序列化。
原创
发布博客 2022.04.29 ·
34 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | 读取classpath资源

很多Java程序启动的时候,都需要读取配置文件。例如,从一个.properties文件中读取配置:String conf = "C:\\conf\\default.properties";try (InputStream input = new FileInputStream(conf)) { // TODO:}这段代码要正常执行,必须在C盘创建conf目录,然后在目录里创建default.properties文件。但是,在Linux系统上,路径和Windows的又不一样。因此,从磁盘
原创
发布博客 2022.04.29 ·
35 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | 操作Zip

ZipInputStream是一种FilterInputStream,它可以直接读取zip包的内容:┌───────────────────┐│ InputStream │└───────────────────┘ ▲ │┌───────────────────┐│ FilterInputStream │└───────────────────┘ ▲ │┌───────────────────┐│In
原创
发布博客 2022.04.29 ·
34 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | Filter模式

Java的IO标准库提供的InputStream根据来源可以包括:FileInputStream:从文件读取数据,是最终数据源;ServletInputStream:从HTTP请求读取数据,是最终数据源;Socket.getInputStream():从TCP连接读取数据,是最终数据源;…如果我们要给FileInputStream添加缓冲功能,则可以从FileInputStream派生一个类:BufferedFileInputStream extends FileInputStream
原创
发布博客 2022.04.29 ·
51 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | OutputStream

和InputStream相反,OutputStream是Java标准库提供的最基本的输出流。和InputStream类似,OutputStream也是抽象类,它是所有输出流的超类。这个抽象类定义的一个最重要的方法就是void write(int b),签名如下:public abstract void write(int b) throws IOException;这个方法会写入一个字节到输出流。要注意的是,虽然传入的是int参数,但只会写入一个字节,即只写入int最低8位表示字节的部分(相当于b
原创
发布博客 2022.04.29 ·
56 阅读 ·
0 点赞 ·
1 评论

Java入门到架构师知识点整理 | IO | InputStream

InputStream就是Java标准库提供的最基本的输入流。它位于java.io这个包里。java.io包提供了所有同步IO的功能。要特别注意的一点是,InputStream并不是一个接口,而是一个抽象类,它是所有输入流的超类。这个抽象类定义的一个最重要的方法就是int read(),签名如下:public abstract int read() throws IOException;这个方法会读取输入流的下一个字节,并返回字节表示的int值(0~255)。如果已读到末尾,返回-1表示不能继续读
原创
发布博客 2022.04.28 ·
21 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | IO | IO初认识

IO是指Input/Output,即输入和输出。以内存为中心:Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。为什么要把数据读到内存才能处理这些数据?因为代码是在内存中运行的,数据也必须读到内存,最终的表示方式无非是byte数组,字符串等,都必须存放在内存里。从Java代码来看,输入实际上就是从外部,例如,硬盘上的某个文件,把内容读到内存,并且以Jav
原创
发布博客 2022.04.28 ·
10 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用Collections

Collections是JDK提供的工具类,同样位于java.util包中。它提供了一系列静态方法,能更方便地操作各种集合。注意Collections结尾多了一个s,不是Collection!我们一般看方法名和参数就可以确认Collections提供的该方法的功能。例如,对于以下静态方法:public static boolean addAll(Collection<? super T> c, T... elements) { ... }addAll()方法可以给一个Collecti
原创
发布博客 2022.04.28 ·
10 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用Iterator

Java的集合类都可以使用for each循环,List、Set和Queue会迭代每个元素,Map会迭代每个key。以List为例:List<String> list = List.of("Apple", "Orange", "Pear");for (String s : list) { System.out.println(s);}实际上,Java编译器并不知道如何遍历List。上述代码能够编译通过,只是因为编译器把for each循环通过Iterator改写为了普通的fo
原创
发布博客 2022.04.28 ·
15 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用Deque

我们知道,Queue是队列,只能一头进,另一头出。如果把条件放松一下,允许两头都进,两头都出,这种队列叫双端队列(Double Ended Queue),学名Deque。Java集合提供了接口Deque来实现一个双端队列,它的功能是:既可以添加到队尾,也可以添加到队首;既可以从队首获取,又可以从队尾获取。我们来比较一下Queue和Deque出队和入队的方法:QueueDeque添加元素到队尾add(E e) / offer(E e)addLast(E e) / of
原创
发布博客 2022.04.25 ·
16 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用PriorityQueue

我们知道,Queue是一个先进先出(FIFO)的队列。在银行柜台办业务时,我们假设只有一个柜台在办理业务,但是办理业务的人很多,怎么办?可以每个人先取一个号,例如:A1、A2、A3……然后,按照号码顺序依次办理,实际上这就是一个Queue。如果这时来了一个VIP客户,他的号码是V1,虽然当前排队的是A10、A11、A12……但是柜台下一个呼叫的客户号码却是V1。这个时候,我们发现,要实现“VIP插队”的业务,用Queue就不行了,因为Queue会严格按FIFO的原则取出队首元素。我们需要的是优先队列
原创
发布博客 2022.04.25 ·
9 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用Queue

队列(Queue)是一种经常使用的集合。Queue实际上是实现了一个先进先出(FIFO:First In First Out)的有序表。它和List的区别在于,List可以在任意位置添加和删除元素,而Queue只有两个操作:把元素添加到队列末尾;从队列头部取出元素。超市的收银台就是一个队列:在Java的标准库中,队列接口Queue定义了以下几个方法:int size():获取队列长度;boolean add(E)/boolean offer(E):添加元素到队尾;E remove()/
原创
发布博客 2022.04.25 ·
11 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用Set

我们知道,Map用于存储key-value的映射,对于充当key的对象,是不能重复的,并且,不但需要正确覆写equals()方法,还要正确覆写hashCode()方法。如果我们只需要存储不重复的key,并不需要存储映射的value,那么就可以使用Set。Set用于存储不重复的元素集合,它主要提供以下几个方法:将元素添加进Set<E>:boolean add(E e)将元素从Set<E>删除:boolean remove(Object e)判断是否包含元素:boolean
原创
发布博客 2022.04.25 ·
11 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用Properties

在编写应用程序的时候,经常需要读写配置文件。例如,用户的设置:# 上次最后打开的文件:last_open_file=/data/hello.txt# 自动保存文件的时间间隔:auto_save_interval=60配置文件的特点是,它的Key-Value一般都是String-String类型的,因此我们完全可以用Map<String, String>来表示它。因为配置文件非常常用,所以Java集合库提供了一个Properties来表示一组“配置”。由于历史遗留原因,Proper
原创
发布博客 2022.04.25 ·
16 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用TreeMap

我们已经知道,HashMap是一种以空间换时间的映射表,它的实现原理决定了内部的Key是无序的,即遍历HashMap的Key时,其顺序是不可预测的(但每个Key都会遍历一次且仅遍历一次)。还有一种Map,它在内部会对Key进行排序,这种Map就是SortedMap。注意到SortedMap是接口,它的实现类是TreeMap。 ┌───┐ │Map│ └───┘ ▲ ┌────┴─────┐ │ │┌──────
原创
发布博客 2022.04.25 ·
10 阅读 ·
0 点赞 ·
0 评论

Java入门到架构师知识点整理 | 集合 | 使用EnumMap

因为HashMap是一种通过对key计算hashCode(),通过空间换时间的方式,直接定位到value所在的内部数组的索引,因此,查找效率非常高。如果作为key的对象是enum类型,那么,还可以使用Java集合库提供的一种EnumMap,它在内部以一个非常紧凑的数组存储value,并且根据enum类型的key直接定位到内部数组的索引,并不需要计算hashCode(),不但效率最高,而且没有额外的空间浪费。我们以DayOfWeek这个枚举类型为例,为它做一个“翻译”功能:import java.tim
原创
发布博客 2022.04.25 ·
381 阅读 ·
0 点赞 ·
0 评论
加载更多