JavaEE
文章平均质量分 91
sugar__salt
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
网络原理(四)——数据链路层 应用层
网络转发的时候,A给B发送一个数据, A 不光要知道 B的IP地址, 也需要知道 B的mac 地址 (尤其是 A和B相邻的时候)访问某个网站的时候,不是每次访问都需要进行 DNS 访问的,相邻的几次访问,域名和 IP的映射关系是不会改变的,ARP 的作用就是协助构造出这个转发表,ARP 能够根据 IP 地址,获取到对应设备的 mac 地址。每个设备收到 ARP请求之后,返回响应, 响应中就会包含对应的 mac 地址的值。,通常是网卡出厂的时候就写死了【mac地址也通常会作为一个机器的身份标识】原创 2025-12-14 16:14:38 · 529 阅读 · 0 评论 -
网络原理(三)——网络层 IP协议
TCP和UDP是传输层的协议,接下来介绍网络层的协议(IP 协议)原创 2025-12-12 11:05:27 · 819 阅读 · 0 评论 -
网络编程套接字(二)——TCP
创建一个这样的对象就相当于打开了一个 socket 文件这个 socket 对象是给服务器专门使用的这个类本身不负责发送接收,主要负责建立连接ServerSocket(int port) 创建⼀个服务端流套接字Socket,并绑定到指定端⼝方法名 说明Socket accept() 开始监听指定端⼝(创建时绑定的端⼝),有客⼾端连接后,返回⼀个服务端Socket对象,并基于该Socket建⽴与客⼾端的连接,否则阻塞等待void close() 关闭此套接字。原创 2025-12-07 21:28:46 · 630 阅读 · 1 评论 -
网络编程套接字(UDP)
Datagram:数据报DantegramSocket 代表了操作系统中的 socket文件DatagramSocket 是UDP Socket,⽤于发送和接收UDP数据报实际上,文件在操作系统中可以代表更广义的概念,如网卡,网卡硬件设备也是通过文件来封装的(通过网络发送数据,需要从网卡中写入,接收数据要从网卡中读取)标准输入=>控制台:System.in(InputStream)标准输出=>控制台:System.out(OutputStream)原创 2025-09-11 20:18:39 · 806 阅读 · 0 评论 -
网络原理——初识
网络互联网络互联指将多台计算机连接在一起,完成数据共享数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。根据⽹络互连的规模不同,可以划分为和。局域网通过一个交换机时连接的电脑能够互联广域网游戏兴起了之后,出现了网游,这时就出现了广域网光宇网:把一大堆局域网进行相连,组成了更大的“局域网”由路由器连通,不断套娃。原创 2025-08-06 18:23:19 · 1003 阅读 · 0 评论 -
文件操作和IO
InputStream 是一个抽象类,不能创建实例,所以我们可以实例化它的子类FileInputStream(字节内容更习惯采用十六进制表示)方法修饰符及返回值类型 ⽅法名 说明int read() 一次读取一个字节,返回 -1 代表已经完全读完了int read(byte[] b) 一个参数版本,尝试把这个参数中的字节数组填满int read(byte[] b, int off, int len) 最多读取 len - off 字节的数据到 b中,从 off 开始,返回实际读到的数量。原创 2025-08-05 17:48:04 · 783 阅读 · 0 评论 -
多线程进阶(7)——锁策略
CAS的判定原理是,当前load 到寄存器的内容,和 内存 的内容是否一致,如果一致,就认为没有其他线程修改过这个变量,接下来本县城的修改就是安全的。解决方案:引入 版本号 ,约定每次修改,都要对版本号+1,并且每次 CAS比较的时候,都是比较版本号是否相同(相同的话,进行版本号+1和余额修改)·当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素。对于乐观锁,认为锁冲突概率不高,就会尝试通过一些其他方式代替阻塞(如忙等/ 版本号…原创 2025-07-31 20:07:13 · 708 阅读 · 0 评论 -
多线程(6)——线程池,定时器
(比如线程池有任务队列,有阻塞队列,当任务队列满了的时候,如果再次添加新任务,正常来说,除非特殊说明,我们写的代码是不希望会出现这种突发性的阻塞的(可能会对程序造成不可预估的影响),因此直接添加线程阻塞是不太好的,因此标准库引入了 “拒绝策略”)Executors本质上是对ThreadPoolExecutor 进行了封装,本质上也是一个工厂类,提供了一些工厂方法,对上述的 ThreadPoolExecutor 进行不同的初始化。Java的线程 创建的时候,会申请一些线程(原创 2025-07-11 16:17:10 · 689 阅读 · 0 评论 -
多线程(5)——单例模式,阻塞队列
在之前,都是按照单线程来编写代码,这个代码执行下来,第一次判定和第二次判定的结论是一定相同的,但是现在是多线程模式了,实际开发中,单例类的构造方法可能是一个非常重量的方法,如果多次触发这个bug,就会浪费好几分钟的时间(加载时间翻倍)2.值加载文件的一小部分,就立即给用户显示,随着用户的翻页操作,在加载对应部分数据(懒汉模式)等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取.因为队列最大容量只有2,如果再入队列,就会触发阻塞了,take() 同理。原创 2025-05-26 20:11:35 · 1232 阅读 · 0 评论 -
多线程(4)——线程安全,锁
在多线程编程中,线程不安全问题主要源于多个线程同时修改共享数据,且操作非原子性。线程调度的随机性、内存可见性问题和指令重排序是导致线程不安全的根本原因。为了解决这些问题,Java提供了synchronized关键字,通过加锁机制确保操作的原子性,避免多个线程同时修改同一变量。此外,死锁是多线程编程中的常见问题,通常由多个线程相互等待对方持有的锁引起。为避免死锁,可以通过规定加锁顺序或避免在持有锁的情况下申请新锁来打破死锁的四个必要条件。理解并应用这些机制,可以有效提升多线程程序的稳定性和性能。原创 2025-05-17 11:48:05 · 934 阅读 · 0 评论 -
多线程(3)——线程的状态
线程的状态是一个枚举类型enum,用Thread.State 表示。操作系统中的线程,生命周期和 Thread 对象不完全一致。原创 2025-05-13 10:00:00 · 297 阅读 · 0 评论 -
多线程(2)——Thread类及常见方法
本文介绍了Java中线程的构造方法、常见属性、启动、中断和等待操作。通过Thread(String name)可以为线程命名,便于调试。常见属性包括线程ID、名称、状态、优先级等。线程分为前台线程和后台线程,前台线程会阻止进程结束,而后台线程则不会。启动线程使用start()方法,中断线程可以通过变量控制或使用isInterrupted()方法。等待线程使用join()方法,可以确保线程按顺序执行。这些操作帮助开发者更好地管理和控制多线程程序的执行。原创 2025-05-12 21:31:35 · 679 阅读 · 0 评论 -
多线程(1)——认识线程
在介绍多线程前,先介绍一下操作系统的概念操作系统是一个管理的软件1.对下管理各种硬件设备2.对上给软件提供稳定的运行环境。原创 2025-04-26 23:23:33 · 991 阅读 · 0 评论
分享