JAVA EE初阶
文章平均质量分 85
java EE初阶学习的一些知识点
purrrew
NJUPT在读,Java学习中。目前进度Java ee初阶。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Java ee初阶】jvm(3)
Java的官方(Oracle)推出Java的标准文档,其他的厂商就会依据官方的文档,开发对应的JDK(官方确实也开发了JDK,还有一些第三方的,比如知名的OpenJDK,比如知名大厂也会有自己版本的JDK)这是在JVM的源码中已经写死的。由于在 Java 中使用对象,都是通过 “引用” 来进行的,使用对象,无非是使用对象的属性/方法,都要通过对象的引用进行。其中,Java的扩展库是JDK自带的,但是不是标准约定的库,是JDK的厂商自行扩展的功能。不同厂商,都能保证,标准约定的功能都是包含的,并且表现一致。原创 2025-05-18 13:54:18 · 626 阅读 · 0 评论 -
【Java ee初阶】HTTP(4)
在开发中,前后端交互通常通过HTTP请求实现。调试阶段,可以通过构造HTTP请求来测试服务器。一种朴素的方法是使用TCP socket,按照HTTP请求格式写入字符串来构造请求。例如,使用Java的Socket类可以创建一个HTTP客户端,通过GET方法发送请求并读取响应。然而,直接通过TCP socket构造HTTPS请求较为复杂,通常使用现成的库来处理。HTTPS在HTTP基础上加入了SSL/TLS加密层,确保数据加密、身份验证和数据完整性。HTTPS的加密流程包括对称加密、非对称加密和引入证书来防止中原创 2025-05-17 20:18:32 · 1064 阅读 · 0 评论 -
【Java ee初阶】HTTP(2)
GET获取资源1.0、1.1POST传输实体主体1.0、1.1PUT传输文件1.0、1.1HEAD获得报文首部1.0、1.1DELETE删除文件1.0、1.1OPTIONS询问支持的方法1.1TRACE追踪路径1.1CONNECT要求用隧道协议连接代理1.1LINK建立和资源之间的联系1.0UNLINE断开连接关系1.0GET:从服务器上获取某个资源POST:向服务器上传xxx个资源PUT:向服务器上传xxx资源(文件)原创 2025-05-17 14:15:57 · 1323 阅读 · 0 评论 -
【Java ee】关于抓包软件Fiddler Classic的安装与使用
本来是你的客户端通过网卡,把数据发给目标服务器,而有了抓包软件之后,你的客户端就会把数据通过网卡,先发给抓包软件,抓包软件把数据再通过网卡发给目标服务器。通过 ctrl + 点击刷新按钮 / ctrl + F5 都会触发 "全量获取数据", 忽略本地的缓存, 从服务器获取到完整的数据。2) CSS:网页的样式 皮 (包括不限于 颜色, 字体, 对齐方式, 位置, 边距, 边框.....)还有的会获取到一些依赖的资源(图片, 视频, 音频, 字体...)在 fiddler 抓取到的 "请求/响应" 列表中。原创 2025-05-15 20:54:22 · 959 阅读 · 0 评论 -
【Java ee初阶】IP协议
网络层IP 协议1) 地址管理 针对网络上的各种设备,所在的位置,进行描述和区分 => IP 地址2) 路由选择 网络结构非常复杂 挑选出合适的路径。原创 2025-05-12 19:13:49 · 574 阅读 · 0 评论 -
【Java ee初阶】网络原理
TCP协议1.确认应答 实现可靠传输的核心机制2.超时重传 实现可靠传输的核心机制3.连接管理 网络部分最高频的面试题4.滑动窗口 提高传输效率的机制5.流量控制 依据接收方的处理能力,限制发送方的发送速度。6.拥塞控制 依据传输链路的处理能力,限制发送方的发送速度。做实验1.先从比较小的窗口开始 慢启动2.指数增长3.达到阈值,线性增长4.遇到丢包,重新设定阈值,把窗口大小设为阈值的大小,继续线性增长。原创 2025-05-11 20:02:45 · 731 阅读 · 0 评论 -
【Java ee初阶】网络原理
核心性质三连接管理有连接连接虚拟的抽象的连接通信双方各自保存对方的关键信息(IP端口...)连接如何建立的三次握手连接如何断开的四次挥手连接如何建立的三次握手handshake计算机术语客套,打招呼,没有传达实质性的信息,通过打招呼唤起对方的注意TCP中的握手,传输一个“打招呼”的数据包,这个数据包不携带任何“业务数据”(没有应用层的载荷)TCP这个数据包只有报头,没有正文也就是这个操作是不携带任何业务数据。原创 2025-05-11 15:19:00 · 518 阅读 · 0 评论 -
【Java ee初阶】网络原理
TCP协议1. 确认应答 可靠传输的核心机制2. 超时重传 可靠传输的核心机制3. 连接管理 TCP/网络三次握手,建立连接(必须是 三次)四次挥手,断开连接(可能是 三次)原创 2025-05-11 13:05:21 · 790 阅读 · 0 评论 -
【Java ee初阶】网络原理
缺点:可读性很差。以前这种方案比较流行,现在越来越少了。原创 2025-05-10 23:02:46 · 1166 阅读 · 0 评论 -
【Java ee初阶】网络编程 TCP
两个核心的类。原创 2025-05-10 16:33:46 · 1191 阅读 · 0 评论 -
【Java ee初阶】网络编程 UDP socket
DatagramSocket是UDP Socket,用于发送和接收UDP数据报。DatagramSocket构造方法:UDP数据报套接字方法表方法签名方法说明创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口(一般用于客户端)创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用于服务端)DatagramSocket方法数据报套接字方法表方法签名方法说明从此套接字接收数据报(如果没有接收到数据报,该方法会阻塞等待)原创 2025-05-10 13:04:21 · 1165 阅读 · 0 评论 -
【Java ee初阶】初始网络
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6。在网络通信中,IP地址用于标识主机网络原创 2025-05-08 20:14:38 · 1529 阅读 · 0 评论 -
【Java ee 初阶】文件操作和IO(上)
文件在计算机中,是保存到“硬盘”上的。操作系统,把硬盘操作进行了抽象封装,使得编程的时候,是不会直接操作硬盘的,而是通过“文件”的概念来进行间接操作。文件有哪些操作?——>打开文件,关闭文件,读文件,写文件......通过前面的学习我们可以知道,cpu包括存储器、输入设备、输出设备,其中存储器包含内存和硬盘,软盘、光盘、U盘也属于存储器。磁盘上的盘片是存储数据的介质,可以快速旋转,磁盘上还有磁头,磁头可以读取文件。通过文件资源管理器来管理所有文件。原创 2025-05-08 10:52:33 · 1333 阅读 · 0 评论 -
【Java ee 初阶】多线程(9)上
本质上就是一个计数器,描述了一种“可用资源”的个数申请资源(P操作):使得计数器-1释放资源(V操作):使得计数器+1如果计数器为0了,继续申请资源,就会触发阻塞上述+1 -1 这些操作,都是原子的Java把操作系统提供的信号量进行封装输出:输出:信号量,相当于“锁”概念的进一步延申。锁,可以视为是“初始值为1”的特殊信号量。小结:编写线程安全代码的时候:1.加锁(最主要)2.CAS/原子类3.信号量。原创 2025-05-07 21:29:55 · 772 阅读 · 0 评论 -
【Java ee 初阶】多线程(8)
锁升级时一个自适应的过程,自适应的过程如下:在Java编程中,有一部分的人不一定能正确地使用锁,因此,Java的设计者为了让大家使用锁的门槛更低,就在synchronized中引入了很多优化策略。*首先,根据前面的学习,我们已经初步了解了自旋锁和重量级锁,那么图中的偏向锁是什么?偏向锁,不是真正加锁,而只是做个标记,如果整个过程中,没有其他线程来竞争这个锁,偏向锁状态就始终保持,直到最终解锁。但是,如果在过程中,遇到其他线程也尝试来竞争这个锁,就可以在其他线程拿到锁之前,抢先获取这个锁。原创 2025-05-07 19:47:59 · 1159 阅读 · 0 评论 -
【Java ee初阶】锁策略
注意,synchronized是自适应的,当锁竞争不激烈的时候,就会采取自旋锁的策略;挂起等待锁,就是“悲观锁”/“重量级锁”的典型实现,这种锁遇到锁冲突,就会让线程挂起来等待(调度出cpu,等待被cpu唤醒)自旋锁,就是“乐观锁”/“轻量级锁”的典型实现,遇到锁冲突,不会放弃cpu,而是会通过“忙等”的方式,再次尝试获取锁。synchronized,属于非公平锁,实现公平锁,需要引入队列,记录加锁线程的顺序。轻量级锁,加锁的开销比较小,等待锁的线程,等待时间相对来说更短。重量级锁,加锁的开销比较大。原创 2025-05-07 14:44:14 · 262 阅读 · 0 评论 -
【Java ee初阶】多线程(6)
队列的原则:“先进先出”,队列分为普通队列,优先级队列等等。在数据结构中,堆是特殊的完全二叉树,一定不要把堆和二叉搜索树混淆。阻塞队列是一种特殊的队列,也遵循“先进先出”的原则。阻塞队列的特点:1.线程安全2.带有阻塞功能(1)如果队列为空,尝试出队列,就会触发阻塞,直到队列不空(2)如果队列满了,尝试入队列,也会触发阻塞,直到队列不满*生产者消费模型引入生产者消费模型,主要目的是为了减少“锁竞争”,生产者和消费者的步调,不一定完全一致。出现不一样的时候阻塞队列可以起到"协调"的作用。原创 2025-05-05 17:31:19 · 1369 阅读 · 0 评论 -
【Java ee初阶】多线程(5)
wait notify 是两个用来协调线程执行顺序的关键字,用来避免“线程饿死”的情况。wait 和 notify 其实都是 Object 这个类的方法,而 Object这个类是所有类的“祖宗类”,也就是说明,任何一个类,都可以调用wait 和notify这两个方法。Java标准库中,涉及到阻塞的方法,都可能抛出InterruptedException让我们来观察一下这个异常的名字。Illegal:非法的,不正确的,不合理的(而不是违反法律的)、原创 2025-05-05 15:00:13 · 939 阅读 · 0 评论 -
【Java ee初阶】多线程(4)
同时,反复执行的过程中,每次拿到的flag的值还都是一样的,上述的load操作相比cmp,耗时会多很多,读取内存,比读取寄存器,效率会慢很多(几百倍,几千倍)*解决线程安全问题,我们使用加锁的方式。虽然有的程序员水平不高,写的代码效率比较低,编译器在编译执行的时候,分析理解现有代码的意图和效果,然后自动对这个代码进行调整和优化,在确保程序执行逻辑不变的前提下,提高程序的效率。线程饿死,没那么严重,在线程1反复获取几次锁之后,其他线程也是有机会拿到锁的,但是其他线程拿到锁的时间会延长,降低了程序的效率。原创 2025-04-28 22:13:56 · 1053 阅读 · 0 评论 -
【JAVA ee初阶】多线程(3)
(这个类有哪些成员,都叫啥名字,都是啥类型,都是private/public,有啥方法,都叫啥名,参数列表是啥,是private/public,这个类继承的父类是谁,上实现了哪些interface.......)(注意,死锁有很多种体现形式,可重入只是能解决一个线程一把锁,加锁两次的情况,解决不了其他情况)同一个线程,针对同一把锁,连续加锁多次,不会触发死锁,此时这个锁就可以称为“可重入锁”。SQL中,事务就是把多个SQL打包成一个整体,执行的时候,要么全都执行完,要么一个都不执行。原创 2025-04-28 17:52:29 · 1307 阅读 · 0 评论 -
【Java EE初阶】多线程(二)
join前面是哪个引用,对应的线程就是“被等的一方”(此处就是t)。count++这样的操作,如果站在cpu指令的角度来说,其实是三个指令(指令就是机器语言,cpu执行的任务的具体细节,cpu会一条一条的读取指令,解析指令,执行指令)对于cpu来说,每个指令都是执行的最基本的单位。如果采取强制终止的手段,很可能t线程的某个逻辑没有执行完,可能就会造成一些“脏数据”的输出,e.g.t执行过程中针对数据库的数据进行多次增删改查操作,结果由于上述强制中断,导致对数据库的数据修改操作只进行了一半,留下了脏数据。原创 2025-04-28 11:34:13 · 956 阅读 · 0 评论 -
【JAVA EE初阶】多线程(1)
除非是接口提供了一组方法,这一组方法中存在一些“公共的逻辑”,就可以在接口中搞default方法,使得这个方法表示公共逻辑,后面就可以在重写其他抽象方法的时候去调用了。这个新的线程会以run作为入口方法(执行run)的逻辑,run方法,不需要在代码中显式调用。剩下的线程,都是JVM自带的,这些线程进行了一些背后的操作,比如负责垃圾回收,记录统计信息,记录一些调试信息。第二种写法,任务是写到Runnable中的,几乎不涉及到任何和“线程”相关的概念,任务内容和Thread概念的耦合是很小的,几乎没有。原创 2025-04-20 17:09:34 · 1220 阅读 · 0 评论
分享