Java SE
文章平均质量分 83
⠀
STRANGEX-03
这个作者很懒,什么都没留下…
展开
-
Java SE学习笔记目录
Java核心技术·卷Ⅰ 基础知识(原书第11版)》 [美] Cay S. Horstmann 著,林琪 苏钰涵 等译。《Java核心技术·卷Ⅱ 高级特性(原书第11版)》 [美] Cay S. Horstmann 著,陈昊鹏 译。《Java编程思想(第4版)》 [美] Bruce Eckel 著,陈昊鹏 译。《Java 2实用教程(第6版)》 耿祥义 张跃平 编著。原创 2023-11-13 22:49:37 · 119 阅读 · 0 评论 -
Java网络:TCP协议实现客户端和服务器通信
由于TCP是面向连接的,故每次接受前需要与客户端建立通信管道,每当增加一个客户端就需要多一个管道,ServerSocket类中的accept方法在连接到一个客户端后即停止侦听返回客户端套接字,故为了实现多客户端与服务器通信需要采用多线程技术。相比UDP协议,TCP协议通信效率相对不高,它的主要目的是要保证在不可靠的信道上实现可靠谱的传输,一般使用于如文件传输、手机支付等。在Java中,客户端通过java.net.Socket类实现,服务端通过java.net.ServerSocket类实现。原创 2023-11-13 22:22:01 · 605 阅读 · 0 评论 -
Java网络:UDP协议实现客户端和服务器通信
Java中提供了一个java.net.DatagramSocket类来实现UDP通信的客户端和服务端,用java.net.DatagramPacket类实现UDP数据包。由于UDP通信是一种无连接、不可靠的通信,一般适用于对通信效率要求较高、不要求传输完整性的通信,如音频和多媒体应用、视频直播、语音通话等。基于UDP通信的基本模式是:将数据打包成数据包,将数据包发往目的地,接收数据包并查看数据包中的内容。每个数据包包含:自己的IP和程序端口、目的的IP和程序端口、数据(限制在64KB内)等。原创 2023-11-12 20:53:36 · 283 阅读 · 0 评论 -
Java并发:线程池的创建和常用方法
由于设计与操作系统的交互,构建一个新的线程开销一般较大。当任务数量较多时,可以创建一个包含一定数量线程的线程缓存池,如果其中某个线程完成了一个任务的执行,可以给其再行分配一个新的任务让其接着执行,从而避免了创建过多的线程。当线程的任务运行完毕后,这个线程不会终止,而是留在池中准备为下一个请求提供服务。原创 2023-11-08 21:18:02 · 246 阅读 · 0 评论 -
Java并发:线程安全问题及其解决办法线程同步
如果有人对数据进行了修改,则重新获取修改后的数据,进行操作,直到成功为止。线程同步的常见方案是进行加锁,每次只允许一个线程加锁,加锁后才能进入访问,访问完毕后自动解锁,再由下一个线程加锁访问。当程序中存在临界资源时,为了使程序的执行具有可再现性,需要保证任意时间只允许让一个线程对该资源进行操作,互斥的进入临界区。同步方法底层也有隐式锁对象,对于实例方法默认使用 this 作为锁对象,对于静态方法默认用 类名.class 作为锁对象。其中,对当前执行的线程来说,同步锁必须是同一个对象。原创 2023-11-07 20:14:09 · 175 阅读 · 0 评论 -
Java并发:Thread类、线程状态和多线程的执行方式
线程是OS中可并发执行的轻型实体,基本上不拥有系统资源,但共享其所属进程所拥有的全部资源,是OS独立调度分配的基本单位。当一个程序中有多个任务需要同时执行时,可只创建一个进程,再在其中创建多个线程执行。:进程是程序的一次运行,是操作系统进行资源分配和调度的一个独立单位,既是拥有资源的基本单位,同时又是可独立调度分配的基本单位。当一个程序中有多个任务需要同时执行时,需要创建多个进程执行。:强调多个处理器或者是多核的处理器同时处理多个不同的任务,同时运行多段代码。进程中的多线程是并发和并行执行的。原创 2023-11-07 09:12:04 · 98 阅读 · 0 评论 -
Java并发:多线程的三种创建方式
线程是OS中可并发执行的轻型实体,基本上不拥有系统资源,但共享其所属进程所拥有的全部资源,是OS独立调度分配的基本单位。Java是一种多线程语言,允许应用程序具有多个线程并发运行的执行。当一个程序中有多个任务需要同时执行时,可只创建一个进程,然后在其中创建多个线程执行,对多任务程序采用多线程通常要比多进程处理更为高效。本文介绍在Java中,创建线程三种不同的方式。原创 2023-11-05 17:55:17 · 337 阅读 · 0 评论 -
properties文件及Java中Properties配置类的应用
properties属性文件是一种用来描述程序配置的文件,属性文件的内容都是一些键值对信息,每行都是一个键值对,键不能重复。键值对的格式为“key=value”,等号后面值前面的空格会自动忽略,值后面的空格不会忽略,文件中 # 号后面内容为注释。属性文件的后缀一般都是.properties结尾的,非.properties结尾的文件如果满足以上要求也可以传入Properties配置类处理。原创 2023-11-04 22:21:50 · 140 阅读 · 0 评论 -
Java中的I/O流系统(二):字符流体系知识总结
I/O流是指从计算机的外设和程序之间传送的数据序列;输入流代表从计算机外设流入程序的数据序列,如通过键盘输入的数据;输出流代表从程序流向计算机外设的数据序列,如向屏幕打印数据。根据I/O流数据格式分类可以将I/O流分为字节流和字符流,本篇主要介绍字符流。原创 2023-11-01 16:26:50 · 236 阅读 · 1 评论 -
Java中的I/O流系统(一):字节流体系知识总结
I/O流是指从计算机的外设和程序之间传送的数据序列;输入流代表从计算机外设流入程序的数据序列,如通过键盘输入的数据;输出流代表从程序流向计算机外设的数据序列,如向屏幕打印数据。根据I/O流数据格式分类可以将I/O流分为字节流和字符流,本篇主要介绍字节流。原创 2023-11-01 16:25:41 · 249 阅读 · 1 评论 -
Java中File类的构造方法、常用成员方法和简单应用
每个File类的对象表示一个磁盘文件或文件夹,其对象属性中包含了文件或文件夹的相关信息,如名称、长度、所含文件个数等,调用它的方法则可以完成对文件或文件夹的常用管理操作,如创建、删除等。利用File类可以创建、删除文件或文件夹以及获取文件或文件夹的属性,但是File类没有包含读写文件内容的方法,因而用来无法来读取一个文件中存储的数据。构造方法里的文件路径可以是绝对路径也可以是相对路径,绝对路径是从盘符根文件夹开始一直到某个具体的文件或文件夹,相对路径是相对于当前项目的。原创 2023-10-29 14:18:53 · 157 阅读 · 1 评论 -
Java中Stream流库知识总结:流的创建、常用的中间和终结操作
与集合相比,流提供了一种可以让我们在更高的概念级别上指定计算任务的数据视图,它不存储其元素,操作不会修改其数据源同时尽可能惰性执行,这一位直至只需要其结果时操作才会执行。Stream流支持链式编程,中间方法调用完后生成新的Stream流可以继续使用,但应用终结操作后就不能再使用了。流对象如果被消费过了就不允许再次使用,如上述例子中使用了a和b进行合并,如果再调用流a或流b系统将会报错。这个操作会强制执行之前的惰性操作。Java中的流库是从Java 8中引入的,遵循“做什么而非怎么做”的原则。原创 2023-10-29 00:14:34 · 169 阅读 · 1 评论 -
Java集合类体系结构、常用方法和使用场景分析
对List的选择:存储有序、元素重复 ArrayList集合【首选】:基于数组,整体性能更好。LinkedList集合:基于链表,集合中元素可以重复,当增删操作明显多于查询操作时选用。对Set的选择:元素去重 HashSet集合【首选】:基于哈希表,性能基本上特别是添加和查询元素总比TreeSet好。 TreeSet集合:基于红黑树,可以维持元素的排序状态。 LinkedHashSet集合:基于哈希表和双链表,可以原创 2023-10-24 22:26:24 · 496 阅读 · 0 评论 -
Java中Map集合的三种遍历方式
调用Map集合中的entrySet方法生成由键值对对象组成的Set集合;通过键值对对象的getKey()和getValue()方法获取键和值。调用Map集合中的keySet方法生成由键组成的Set集合;通过Map集合的get方法,获取每个键对应的值。遍历键值对的Set集合,获取每一个键值对对象;遍历键的Set集合,获取每一个键;原创 2023-10-24 16:51:35 · 101 阅读 · 0 评论 -
Java中的HashSet集合知识总结:底层原理和实现操作
HashSet集合底层采取哈希表存储数据,对于增删改查的操作数据性能都较好。JDK8版本后的的哈希表是数组、链表、红黑树的结合体。原创 2023-10-16 22:30:12 · 119 阅读 · 1 评论 -
Java中单列集合的遍历方式:Iterator和ListIterator
使用迭代器遍历集合过程中,不允许使用集合对象的添加或删除,否则会出现并发修改异常(ConcurrentModificationException);迭代过程中做删除可以使用Iterator自带的remove方法,做添加可以使用ListIterator自带的add方法。List集合适用以上三种通用遍历方式,另外其还有特有的ListIterator迭代器方式。List集合在进行正序遍历和倒序遍历时要注意指针问题。ListIterator为List集合特有的迭代器。简化迭代器的代码书写,本质上就是一个迭代器。原创 2023-10-12 17:45:18 · 176 阅读 · 0 评论