JavaEE初阶
文章平均质量分 93
xxxflower.
“即使在始终无人注目的暗夜中 你可曾动情的燃烧 像那颗不肯安歇的灵魂一样 为了答谢这段短暂的岁月”
展开
-
【JavaEE初阶】了解JVM
每个对象都要分配一个计数器,如果按四个字节计算.代码中的对象非常少就无所谓.但是如果对象特别多,占用的额外空间就会很多,尤其是每个对象都比较小的情 况.例如:一个对象体积1k,此时多4个字节,无所谓.一个对象体积事4字节,此时多4个字节,相当于体积扩大一倍.我们从内存中申请空间的时候,都是整块的连续的空间,现在这里空闲的空间是离散的,独立的空间,总的空间可能很大.假如总的空闲的空间可能超过了1G,但是你想申请500MB可能都不一定申请到。如果一个对象,没有引用指向了,就不会再被使用了.原创 2023-08-05 11:08:49 · 756 阅读 · 1 评论 -
【JavaEE初阶】博客系统后端
创建blog_system项目.将之前写的博客系统前端代码复制到webapp目录下.在中引入三个依赖::二. 设计数据库结合之前的需求,在当前博客系统中,主要涉及到两个实体.即 用户和博客.经过分析我们可以得到,用户和博客之间是一对多的关系.即一个用户可以拥有多篇博客.所以我们可以创建两张表,来表示用户和博客.把一些基本的数据库操作,先封装好.需要手动粘贴至MySQL接下来是封装数据库的连接操作::四. 创建实体类实体类就是和表中的记录对应的类:blog表 =>Blog类对应原创 2023-08-03 09:54:54 · 1160 阅读 · 1 评论 -
【JavaEE初阶】Servlet(四) Cookie & Session
服务器给客户端返回的 Cookie 里面就包含 SessionId, 浏览器就会在本地将这个 Cookie 储存起来, 后续浏览器发送请求的时候就会带上这个 Cookie, 服务器收到 Cookie 中的身份序号后, 就会查询 Session 会话表, 如果存在就会可以正常访问, 不用重复的输入账号与密码, 否则就需要用户重新输入账号密码进行登录.这个对象也可以看作是一个哈希表, 是以键值对的形式存储数据的, 并且允许程序员在对象中储存任意的键值对数据, 但是。类型的参数, 如果参数是。原创 2023-07-31 17:08:43 · 683 阅读 · 2 评论 -
【JavaEE初阶】Servlet (三)MessageWall
在我们之前博客中写到的留言墙页面,有很严重的问题:(留言墙博客)针对以上问题,我们的解决思如如下:让服务器来存储用户提交的数据,由服务器保存.当有新的浏览器打开页面的时候,从服务器获取数据.此时服务器就可以用来存档和读档.设计程序:写web程序,务必要重点考虑前后端如何交互,约定好前后端交互的数据格式.设计前后端交互接口: 1.请求是什么样 2. 响应是什么样 3.浏览器什么时候发送这个请求 4. 浏览器按照什么格式来解析响应:HTTP/1.1 200 OK此处约定的目的是为了前端代码和后端代原创 2023-07-29 11:48:46 · 755 阅读 · 1 评论 -
【JavaEE初阶】Servlet (二) Servlet中常用的API
对于前端from表单这样的数据结构,后端还是使用GetParameter来获取.注意,from表单也是键值对,和queryString的格式一样,只是这部分内容在body中。当前通过json传递数据,但是服务器这边只是把整个body读取进来,并没有按照键值对的方式来处理(还不能根据key获取value),此时可以使用第三方库来解决这个问题.表示的是HTTP请求. 这个对象是Tomcat自动构造的.Tomcat会实现监听端口,接受连接,读取请求,构造请求对象等工作.面试题:Servlet的声明周期是什么?原创 2023-07-28 10:12:45 · 1185 阅读 · 0 评论 -
【JavaEE初阶】Tomcat安装与使用及初识Servlet
我们写的Servlet程序就相当于是车厢.Tomcat相当于是车头.我们把写好的Servlet程序放到webapps 目录下,就相当于把车厢挂到车头上.Tomcat如何识别webapps目录下哪些是需要拉着跑的车厢,哪些不是. 就需要靠我们复制粘贴的代码来识别.(WEN-INF/web.xml).在上述过程中,5打包,6部署程序两个过程可以使用IDEA的Tomcat插件把Tomcat 集成到IDEA中.就省去了我们手动打包的过程.手动部署的过程,只需要按一下运行,就可以自动打包部署.原创 2023-07-26 15:30:03 · 589 阅读 · 0 评论 -
【JavaEE初阶】HTTP请求的构造及HTTPS
在网络传输过程中, 存在着运营商劫持和一些黑客入侵这样的危险, 在之前只有HTTP的明文传输数据环境下, 这样的问题是有些泛滥的, 这种情况下就不清楚在中间传输过程中就被哪一服务器将数据篡改了, 所以在后来就引入了HTTPS.HTTPS。原创 2023-07-25 16:40:12 · 892 阅读 · 0 评论 -
【JavaEE初阶】HTTP协议
HTTP全称为 “超文本传输协议”, 是属于应用层最广泛使用的协议之一, 目前主要使用的是HTTP1.1和HTTP2.0, 在本篇中主要介绍的是HTTP1.1版本, HTTP往往是基于传输层的TCP协议实现的(HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3基于UDP实现).HTTP属于是应用层最广泛的协议之一.浏览器获取到网页,就是基于http.HTTP就是浏览器和服务器之间的交互桥梁.HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议.原创 2023-07-24 16:05:34 · 576 阅读 · 1 评论 -
【JavaEE初阶】博客系统的前端页面设计
博客主要是由四个页面组成.分别是:css部分:由于四个网页中有共同的导航栏等部分,所以我们可以将公用的部分写入一个中除此之外还有列表页专属的css文件3.博客详情页博客详情页中导航栏和上文中博客列表页的一样 可以拿来复用.注意在此文件中也需要引入.::4.博客登录页:5.博客编辑页此页中要引入集成Makedown编辑器,并不是从0开始写一个,而是使用现有的开源库editor.mdEditor.md - 开源在线 Markdown 编辑器 (pandao.github.io原创 2023-07-16 11:51:01 · 579 阅读 · 5 评论 -
【JavaEE初阶】JavaScript(WebAPI)
ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器WebAPI 就包含了 DOM + BOM.本博客中我们主要学习DOM API.API 是一个更广义的概念. 而 WebAPI 是一个更具体的概念, 特指 DOM+BOM所谓的 API 本质上就是一些现成的函数/对象, 让程序猿拿来就用, 方便开发.API参考文档DOM全称为。原创 2023-07-09 20:40:07 · 813 阅读 · 2 评论 -
【JavaEE初阶】JavaScript基础语法
JavaScript (简称 JS)是世界上最流行的编程语言之一JS最初只是为了进行前端页面开发.后来JS也被赋予了更多的功能.比如可以用来开发桌面程序,手机APP,服务器端的程序…是一个脚本语言, 通过解释器运行。原创 2023-07-08 15:06:01 · 489 阅读 · 2 评论 -
【JavaEE初阶】CSS
行内块元素可以设置尺寸, 边距也生效, 但是默认不独占一行, 同时行内块元素和行内元素一样, 都会把源码中的换行当做一个空格, 也会对页面元素布局产生不必要的影响, 而。html中页面中的每个元素都是可以设置一个全局唯一的id属性的, CSS中使用``#+id````名来表示id选择器, id选择器的值和html中某个元素的id值相同, id选择器只能针对唯一的元素生效.就是让多组选择器应用同样的样式, 选择器可以是基础的, 也可以是复合的, 多组选择器之间通过,分隔.原创 2023-07-04 11:51:36 · 824 阅读 · 1 评论 -
【JavaEE初阶】HTML
HTML描述了网页的骨架,它是一种标签化的语言。第一步,在文件下创建一个txt文档。第二步,打开txt文件写代码。第三步,修改文件名后缀为html。第四步,双击打开文件。前端代码的运行环境是浏览器,浏览器就像中的一样,浏览器可以解析等代码中的内容,根据代码去后构造前端页面。第一步,创建文件第二步,编辑代码。在文件资源管理器中显示。双击文件运行。在上述编写代码的过程中我们可以看到html代码的以下特点:在vscode中,输入!(英文),按下tab,此时就能生成一个基本的页面原创 2023-07-02 16:00:59 · 855 阅读 · 3 评论 -
【JavaEE初阶】TCP/IP协议(二)
在早期的时候, 互联网上的服务器很少, 这域名和IP这样的映射关系只是使用一个hosts文件来维护, 每个用户只需要手动自己的hosts文件就可以了, 现在的电脑还是有这个文件的, 也可以使用.接收方:数据链路层,针对两个数据帧进行分用,得到两个IP数据报,交给网络层,网络层针对这俩IP数据报进行解析,把里面的载荷拼成一个,交给传输层。如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备(路由器),把IP地址进行映射,从而完成网络访问。反之,公网的设备,无法直接访问私网的设备。原创 2023-06-29 17:52:25 · 745 阅读 · 1 评论 -
【JavaEE初阶】万字详解TCP/IP协议!!!(一)
TCP, 即, TCP协议相比于UDP协议要更复杂, TCP的特点是有连接, 可靠传输, 面向字节流, 全双工.端口号:与UDP相像。此处不详细介绍。32位序号,32位确认序号:后文详解。数据偏移和选项(option), 选项可有可无也可以有多个, 用于对TCP一些功能的扩展和TCP中的一些属性进行解释说明, 可能包括 “窗口扩大因子”, “时间戳” 等选项, 数据偏移表示TCP数据起始处与TCP报文起始处之间的距离, 也就是4个比特位(0到15)表示TCP首部报头的长度, 单位是4字节。原创 2023-06-03 16:58:57 · 761 阅读 · 9 评论 -
【JavaEE初阶】网络编程
因为TCP协议,是面向字节流的协议。一般来说是不可以的,客户端如果显示指定端口,可能就和客户端电脑上的其他程序的端口冲突了,这一冲突就可能导致程序无法正确通信了。此代码中,用到了一个clientSocket,此时任意一个客户端连上来吗,都会返回/创建一个Socket对象(Socket就是文件),每次创建一个clientSocket对象,就会占用一个文件描述符表的位置。相当于是执行到了内核中的相关的udp的代码,就会把这个udp数据报里面的载荷部分取出来,拷贝到用户提供的byte[]数组中。原创 2023-05-16 20:15:02 · 521 阅读 · 13 评论 -
【JavaEE初阶】网络初识
网络发展,网络通信基础,认识协议,五元组,协议分层,OSI七层模型,TCP/IP五层原创 2023-05-14 11:57:02 · 459 阅读 · 7 评论 -
【JavaEE初阶】文件操作——IO
常见属性修饰符及类型属性说明依赖于系统的路径分隔符,String 类型的表示依赖于系统的路径分隔符,char 类型的表示(File中的一个静态变量)就是或者跟着系统走。构造方法签名说明根据父目录 + 孩子文件路径,创建一个新的 File 实例根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示方法修饰符及返回值类型方法签名说明String返回 File 对象的父目录文件路径。原创 2023-05-11 13:50:48 · 720 阅读 · 7 评论 -
【JavaEE初阶】多线程进阶(六)JUC 线程安全的集合类
读和写之间没有冲突(很多场景下,读写之间不加锁控制,可能就读到了一个写了一半的操作,如果写操作不是院子的,此时读就可能会读到写了一般的数据,相当于脏读)针对此情况可以使用。使用的是 “分段锁”, 分段锁本质上也是缩小锁的范围从而降低锁冲突的概率, 但是这种做法不够彻底, 一方面锁的粒度切分的还不够细, 另一方面代码实现也更繁琐.一个程序可能包含很多的子功能,有的功能想要使用,有的不想要使用,有的希望功能应用不同的形态,就可以使用一系列的“开关选型”来控制当前这个程序的工作状态。原创 2023-05-08 15:37:18 · 835 阅读 · 12 评论 -
【JavaEE初阶】多线程进阶(五)常见锁策略 CAS synchronized优化原理
CAS: 全称Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作:我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。比较 A 与 V 是否相等。(比较)如果比较相等,将 B 写入 V。(交换)返回操作是否成功。此处最特别的地方,上述这个CAS的过程,并非是通过一段代码实现的。而是通过一条CPU指令完成的。也就是说**CAS操作是原子的。**原子的也就可以在一定程度上回避线程安全问题。原创 2023-05-07 20:23:16 · 591 阅读 · 8 评论 -
【JavaEE初阶】多线程(四)阻塞队列 定时器 线程池
阻塞队列是一种特殊的队列. 也遵守 “” 的原则.阻塞队列的一个典型应用场景就是 “”. 这是一种非常典型的开发模型.原创 2023-04-26 17:24:17 · 887 阅读 · 2 评论 -
【JavaEE初阶】多线程(三)volatile wait notify关键字 单例模式
由于load执行速度太慢(相比于cmp),再加上反复load到的结果都是一样的,JVM就做出了一个大胆的决定:不再真正的重复load,判定没有人修改flag值(但实际上是有人在修改的,t2在修改),直接就读取一次就好。t1,t2两个线程,希望t1先执行任务,任务执行快结束了让t2来干,就可以让t2先wait(阻塞,主动放弃cpu)。**线程安全的本质问题,就是读,比较,写这三个操作不是原子的。注意上述代码在t2唤醒t1之后,t1和t2之间的执行是随机的,也是就标号3和标号4的地方的顺序是不确定的。原创 2023-04-24 23:56:08 · 500 阅读 · 2 评论 -
【JavaEE初阶】多线程(二)线程状态以及多线程安全问题
TERMINATED状态中,内核中线程的PCB被释放了,此时代码中的t对象也就没用了。Java中对象的生命周期自有其规则,这个生命周期和系统内核中的线程并非完全一致,**内核的线程释放的时候,无法保证Java代码中的t对象也立即释放。理解 “阻塞等待”: 针对每一把锁, 操作系统内部都维护了一个等待队列. 当这个锁被某个线程占有的时候, 其他线程尝 试进行加锁,就加不上了, 就会阻塞等待, 一直等到之前的线程解锁之后, 由操作系统唤醒一个新的 线程, 再来获取到这个锁。此时就会产生结果上的差异。原创 2023-04-21 13:42:31 · 240 阅读 · 8 评论 -
【JavaEE初阶】多线程(一)认识线程 线程的创建 Thread的用法
java多线程原创 2023-04-18 21:14:13 · 460 阅读 · 1 评论 -
【JavaEE初阶】计算机工作原理
摄影分享~原创 2023-04-13 18:06:32 · 562 阅读 · 5 评论