JavaEE
文章平均质量分 87
夏微凉.
阿里云专家博主,大二在读学生,计算机科学与技术专业,热爱编程和分享知识,欢迎一起交流和学习~
展开
-
【JavaEE】网络原理: HTTPS协议相关内容
HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层.HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况.原创 2024-02-26 22:59:10 · 949 阅读 · 7 评论 -
【JavaEE】网络原理: HTTP协议相关内容
思考问题:为什么HTTP报文中要存在"空行"?因为HTTP协议并没有规定报头部分的键值对有多少个. 空行就相当于是"报头的结束标记", 或者是"报头和正文之间的分隔符".HTTP在传输层依赖TCP协议, TCP是面向字节流的. 如果没有这个空行,就会出现"粘包问题".原创 2024-02-22 11:24:39 · 1292 阅读 · 2 评论 -
【JavaEE】网络原理: UDP协议和TCP协议的相关内容
网络通信中, 协议是一个非常重要的概念. 协议进行了分层, 此处就是按照这几层顺序来介绍每一层中的核心协议.原创 2024-02-14 10:03:32 · 1408 阅读 · 3 评论 -
【JavaEE】网络原理:UDP数据报套接字编程和TCP流套接字编程
1.1 DatagramSocketDatagramSocket 是UDP Socket,用于发送和接收UDP数据报。DatagramSocket 的构造方法:方法签名方法说明DatagramSocket()创建⼀个UDP数据报套接字的Socket,绑定到本机任意⼀个随机端口(⼀般用于客户端)DatagramSocket(int port)创建⼀个UDP数据报套接字的Socket,绑定到本机指定的端口(⼀般用于服务端)原创 2024-01-27 20:03:26 · 1331 阅读 · 12 评论 -
【JavaEE】网络原理: 网络编程套接字(概念)
网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信 (或称为网络数据传输)。当然,我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程.特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。进程A:编程来获取网络资源进程B:编程来提供网络资源。原创 2024-01-27 17:14:26 · 1264 阅读 · 1 评论 -
【JavaEE】网络原理:网络中的一些基本概念
协议分层是将网络协议按照不同的功能和层次进行分组和组织的一种方式。它将复杂的网络通信过程划分为多个层次,每个层次负责特定的功能和任务。原创 2024-01-20 22:05:32 · 1343 阅读 · 13 评论 -
【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法
Java 中通过 java.io.File 类来对⼀个文件(包括目录)进行抽象的描述。注意,有 File 对象, 并不代表真实存在该文件。我们先来看看 File 类中的常见属性、构造方法和方法方法修饰符及返回值类型方法签名说明intread()读取⼀个字节的数据,返回 -1 代表已经完全读完了int最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表已经读完了int最多读取 len - off 字节的数据到 b 中,从 off 开始,返回实际读到的数量;原创 2024-01-18 14:23:37 · 1365 阅读 · 12 评论 -
【JavaEE】多线程(7) -- 线程池的概念和简单实现
以最后一个构造方法为例:Java的 ThreadPoolExecutor 是一个线程池执行器,用于管理和调度线程的执行。1.corePoolSize:核心线程数即线程池中保持活动状态的最小线程数。如果线程池中的线程数小于corePoolSize,则即使其他线程是空闲的,ThreadPoolExecutor也会创建新的线程来处理任务。2.maximumPoolSize:最大线程数即线程池中允许的最大线程数。原创 2023-12-30 19:24:08 · 2030 阅读 · 13 评论 -
【JavaEE】多线程(6) -- 定时器的使用及实现
它允许开发人员在指定的时间间隔内重复执行任务,或在指定的延迟之后执行任务。定时器是Java提供的一种方便的工具,用于处理需要定期执行的任务,例如定时任务调度、定时数据备份等。2. Task 类⽤于描述⼀个任务(作为 Timer 的内部类). ⾥⾯包含⼀个 Runnable 对象和⼀个 time(毫秒时 间戳) 这个对象需要放到优先队列 中. 因此需要实现 Comparable 接⼝。定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码。原创 2023-12-28 22:43:51 · 691 阅读 · 15 评论 -
【JavaEE】多线程(5) -- 阻塞队列
上述过程中, A 和 B , A 和 C 之间的耦合性是比较轻的, A中的代码需要设计到一些B相关的操作, B中的代码也涉及到和A相关的操作, A 的代码中也需要涉及和 C 相关的操作, C 的代码也涉及和 A 相关的操作, 另外, 如果 B 或者 C 服务器出现故障, 对 A 的影响就很大.⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤ 等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取.此时进程并会不结束.原创 2023-12-17 22:04:18 · 1195 阅读 · 5 评论 -
【JavaEE】多线程(4) -- 单例模式
设计模式好⽐象棋中的 "棋谱". 红⽅当头炮, ⿊⽅⻢来跳. 针对红⽅的⼀些⾛法, ⿊⽅应招的时候有⼀ 些固定的套路. 按照套路来⾛局势就不会吃亏.软件开发中也有很多常⻅的 "问题场景". 针对这些问题场景, ⼤佬们总结出了⼀些固定的套路. 按照这 个套路来实现代码, 也不会吃亏.原创 2023-12-17 15:37:37 · 1317 阅读 · 1 评论 -
【JavaEE】多线程(3) -- 线程等待 wait 和 notify
由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序.完成这个协调⼯作, 主要涉及到三个⽅法注意: wait, notify, notifyAll 都是 Object 类的⽅法。原创 2023-12-03 14:42:21 · 2051 阅读 · 50 评论 -
【JavaEE】多线程 -- 死锁问题
其实, 问题的关键是,这两次加锁, 其实是在同一个线程上进行的. 由于是同一个线程, 此时锁对象就知道了第二次加锁的线程, 第二次加锁操作就可以直接放行通过, 不会出现阻塞. 这个特性称为 "可重入".这个代码只管上看起来, 好像是有锁冲突的, 此时的 locker 对象已经是加锁的状态, 在尝试对 locker 加锁, 不应该会出现阻塞问题吗?使用可重入锁, 可以避免代码出现死锁问题, 如果使用的不是可重入锁, 就会出现死锁问题.原创 2023-11-30 22:13:46 · 1094 阅读 · 7 评论 -
【JavaEE】多线程 (2) --线程安全
执行上面的代码,我们发现结果并不是100000, 并且多次运行, 每次的结果都有所不同:这就是线程不安全的一个例子.原创 2023-11-26 22:57:43 · 1367 阅读 · 69 评论 -
【JavaEE】多线程 (1)
⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏ 着多份代码.原创 2023-11-25 20:43:50 · 1768 阅读 · 64 评论