Java EE
文章平均质量分 92
柒柒要开心
一个菜鸟,还在努力地学习
展开
-
Linux 简述
有的系统上(centos)输入 rm 删除,会有一个提示,是否确认要删除,输入 y 就是删除,n 就是不删除。在Linux 的命令中,但凡涉及到 目录 相关的操作,都是可以支持 绝对路径 和 相对路径的。拷贝目录的时候,和 rm 类似,都是要加上 -r 选项,表示要递归的拷贝目录里的内容。(/ 称为“根目录”,就是 Windows 上的此电脑,Linux 是没有盘符的)如果是删除目录的话,递归过程比较麻烦,每个目录都会提示你要进行确认。有的时候,服务器打印的日志太快了,滚动太快看不清,就可以冻结屏幕。原创 2024-01-10 21:36:26 · 999 阅读 · 1 评论 -
Java EE 博客系统(Servlet版)
这个方法的效果,就是把 blog.content 这里的 md 的原始数据,渲染成 html,放到 id 为 content 的 div 中。后续在博客详情页中,就可以给服务器发起 ajzx 请求,根据这里的 blogId ,查询数据库中,博客的具体内容再返回。(2)针对每个元素(Blog 对象),通过反射的方式,获取到都是哪些属性,属性的名字,属性的值。写完代码之后,再点击某个博客,就可以看到,有的博客里面的详情页,还是之前的旧的内容。原创 2024-01-10 09:00:00 · 1072 阅读 · 0 评论 -
Java EE Servlet之Cookie 和 Session
cookie 和 session浏览器首次访问到登录操作的时候,就会在服务器这边验证身份,验证通过,就会创建会话服务器就会保存会话消息(hash)客户端也会保存身份标识(sessionId)后续浏览器在访问这个网站(网站的其他界面)都会带上 cookie(sessionId)服务器不需要让浏览器重新登陆,也能识别出浏览器的用户身份信息。原创 2024-01-01 11:40:57 · 1108 阅读 · 0 评论 -
Java EE Servlet之服务器版表白墙
此处 success 回调函数,不是立即执行的,而是在浏览器收到服务器返回的,成功,这样的响应的时候,才会执行到 function。后端处理 ajax 请求,url 路径,写作“/message”,前面带 / ,此时是 Servlet 要求的写法。建库建表,需要用到 sql,都可以写到 文件 中,后续如果需要把表啥的往其他的机器上迁移,建表操作就会比较方便。前端 ajax 请求,url 路径,写作“message”,前面不带 / ,此时这是一个相对路径的写法。原创 2023-12-31 09:00:00 · 916 阅读 · 0 评论 -
Java EE Servlet之Servlet API详解
接下来我们来学习 Servlet API 里面的详细情况。原创 2023-12-30 12:28:49 · 1216 阅读 · 0 评论 -
Java EE Servlet之第一个Servlet代码
(Tomcat 专属的压缩包,war 里面不光有 .class还有一些 tomcat 要求的配置文件(web.xml 等) 还有前端的一些代码(html, css,js))Servlet 是一种实现动态页面的技术.,是一组 Tomcat 提供给程序员的 API,帮助程序猿简单高效的开发一个 web app。后面的代码会放到 tomcat 中,所以必须要遵循 tomcat 的要求,否则识别不了,就无法执行。Maven 项目在首次创建的时候,会自动的从 Maven 的网站上下载一些依赖的组件。原创 2023-12-29 17:37:58 · 977 阅读 · 0 评论 -
Java EE 网络原理之HTTPS
上述 对称加密 + 非对称加密,这样的过程中还存在一个严重的漏洞,黑客如果利用好这个漏洞,仍然可以获取到原始的明文数据。当黑客收到证书之后,如果直接修改里面的公钥,替换成自己的,客户端在进行证书校验的时候,就会发现校验和不一致了。此时,客户端拿到了数字签名,就可以通过系统内置的公正机构的公钥,进行解密了,就得到了最初的校验和。(这是计算机 的证书,也就是一段结构化的数据,这段数据就会包含一些重要的信息,比如数字签名)黑客没有这个私钥,如果黑客拿自己的私钥加密,客户端也就无法使用公证机构的公钥解密了。原创 2023-12-29 09:54:40 · 1466 阅读 · 0 评论 -
Java EE 网络原理之HTTP 响应详解
(query string 还键值对,其中 key 就是 input 输入框的 name 属性,value 就是输入框用户输入的内容)ajax,通过 js 提供的 api 来构造 http 请求,同样可以使用 js 灵活处理,想要怎么处理都行,或者想跳转不跳转也都行。由于,form 有一些缺陷,只支持 GET 和 POST,不支持其他方法,而且 form 会触发页面跳转(有的时候不想跳转)即使给出了一个错误的(不规范)的 html 代码,也是可以进行解析并显示的(浏览器会尽可能的进行显示)原创 2023-12-27 21:25:27 · 1423 阅读 · 0 评论 -
Java EE 网络原理之HTTP 协议格式
后续再请求这个服务器的时候,就会把 Cookie 的内容自动带入到请求中,发送给服务器,服务器通过 Cookie 的内容做一些逻辑上的处理。这些 内容 就是浏览器本地存储的 cookie,会再后续请求服务器的时候,把这些内容给代入到请求中,传给服务器。但是程序运行过程中,也会有一些数据,需要再浏览器这边存储的,并且在后续请求的时候数据可能需要再发给服务器。query string 中的键值对,都是程序员自定义的,不像 header 中的键值对是标准规定的。原创 2023-12-27 09:15:00 · 590 阅读 · 0 评论 -
Jave EE 网络原理之网络层与数据链路层
地图软件能够做出这样的路径规划,主要是因为,开了全图的整个地图的信息,路径信息,都是在地图的服务器上全都存储的,可以给出“最优解"MTU 可以考虑成一辆汽车的载重量,路是土路,汽车太重了,就容易压坏,路是沥青的路,载重量就更大,路是高速公路级别的,载重量就更大。我的电脑会把报头发给运营商,此时,运营商路由器,也是一个 NAT 设备,也就能够对当前这里的源 IP 进程替换。(IP 协议,路由器,走哪个网络接口,其实是抽象的概念,最终还是要在数据链路层才能觉得是走哪个网口)原创 2023-12-24 13:38:24 · 119 阅读 · 0 评论 -
Jave EE 网络原理之应用层与传输层
自定义协议,具体的方式非常灵活,只需要客户端和服务器能够对应上述这种 通过文本方式构造的协议,属于比较粗糙的方式,在实际开发中比较少见几种开发中更常见的格式。原创 2023-12-23 09:00:00 · 67 阅读 · 0 评论 -
Java EE 网络之网络编程
通过网络,让两个主机之间能够进行通信,基于这样的通信来完成一定的功能进行网络编程的时候,需要操作系统给我们提供一组 API,通过 API 才能完成编程API 可以认为是 应用层 和 传输层 之间交互的路径这个 API 被称为 Socket API(插座)通过这一套 Socket API 可以完成不同主机之间,不同系统之间的网络通信传输层,提供的网络协议,主要是两个 TCP 和 UDP这俩协议的特性(工作原理)差异很大导致使用这两种协议进行网络编程,也存在一定差别。原创 2023-12-18 11:12:02 · 485 阅读 · 0 评论 -
Java EE 网络之网络初识
在平时写代码中,如果一个代码越写越多,越写越复杂,往往需要把代码给拆分成多个部分拆分之后能够更好的理解网络通信的场景会比较复杂,有很多问题需要通过协议来进行解决如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大,非常复杂就不利于人们去学习和理解.相比之下,也可以把大的协议,拆分成多个小的协议,让每个小的协议只专注于做一小块事情使每个小的协议,都不会太复杂 ( 化繁为简 )由于网络通信实在太复杂,拆分就拆出来太多的小的协议,这么多小的协议也就不好管理了,就需要对协议进行分层了。原创 2023-12-14 16:02:20 · 222 阅读 · 0 评论 -
Jave EE 文件操作和IO
所谓的“文件”是一个广义的概念,可以表示很多东西操作系统里,会把很多的 硬件设备 和 软件资源,都抽象为“文件”,统一进行管理但是大部分情况下,谈到的文件,都是指硬盘的文件文件就是相当于针对“硬盘”数据的一种抽象这是一个机械硬盘(HDD)机械硬盘适合顺序读写,不适合随机读写磁头移动的过程,需要时间(遵循牛店第二定律)固态硬盘(SSD)里面是集成程度很高的芯片(类似于 cpu,内存)固态硬盘,就要比机械硬盘效率高(目前的电脑基本上就是固态硬盘)原创 2023-12-14 09:00:00 · 51 阅读 · 0 评论 -
Java EE 多线程之线程安全的集合类
原来的集合类,⼤部分都不是线程安全的但是Vector,Stack,HashTable,是线程安全的(不建议⽤),其他的集合类不是线程安全的针对这些线程不安全的集合类,要想在多线程环境下使用,就需要考虑好 线程安全问题了(加锁)同时,标准库,也给我们提供了一些搭配的组件,保证线程安全。原创 2023-12-12 19:54:08 · 216 阅读 · 0 评论 -
Java EE 多线程之 JUC
JUC这里就是指(java.util.concurrent)concurrent 就是并发的意思这个包里的内容,主要就是一些多线程相关的组件。原创 2023-12-12 19:54:43 · 323 阅读 · 0 评论 -
Java EE 多线程之 synchronized 原理
当线程执行到 synchronized 的时候,如果这个对象当前处于未加锁的状态,就会经历以下过程。但是,如果粒度细的锁,被反复进行加锁劫夺,可能实际效果还不如粒度粗的锁(涉及到反复的锁竞争)对于自旋锁来说,如果同一个锁竞争者很多,大量的线程都在自旋,整体 cpu 的消耗会很大。发生的,运行过程中多线程的调度情况不同,这个线程的锁可能有人竞争,也有可能没人竞争。但是,编译器只会在自己非常有把握的时候,才会进行锁消除,触发的概率不高。这个时候就会从偏向锁升级为轻量级锁,也就真的加锁了,也就有了互斥。原创 2023-12-12 13:00:00 · 50 阅读 · 0 评论 -
Java EE 多线程之 CAS
CAS:全称Compare and swap假如有一个内存 M有两个寄存器 A B如果 M 和 A 的值相同的话,就把 M 和 B 里的值进行交换,同时整个操作返回 true如果 M 和 A 的值不同的话,无事发生,同时整个操作返回 false这里交换的本质,是为了把 B 赋值给 M寄存器 B 的值不太关心,主要的是 M 里面的情况CAS 伪代码上⾯写的代码不是原⼦的,真实的 CAS 是⼀个原⼦的硬件指令完成的,这个伪代码只是辅助理解 CAS 的⼯作流程。原创 2023-12-12 09:00:00 · 38 阅读 · 0 评论 -
Java EE 多线程之锁策略
加锁过程做的的事情比较少,加锁的速度可能就比较快,但是很容易引入一些其他的问题(但是可能会消耗更多的 cpu 资源)在实际开发中,读写锁很常见,因为读操作非常常见,读写锁可以把并发读之间的锁冲突的开销省下,对于性能提升显著。:站在系统原生的锁的角度,就是属于“非公平锁,系统线程的调度本身就是无序的随机的。:在加锁之前,预估当前锁冲突出现的概率比较法,因此加锁的时候,就会做跟多的工作。锁策略是,在加锁的过程中,处理冲突的过程中,涉及到的一些不同的处理方式。也就是:读的时候,不能写,只能读;原创 2023-12-11 09:12:36 · 33 阅读 · 0 评论 -
Java EE 多线程之多线程案例
阻塞队列,就是基于普通队列做出的扩展1、阻塞队列是线程安全的2、阻塞队列具有阻塞特性(1)如果针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列不满(其他线程出队列元素)之后(2)如果针对一个已经空了的队列进行出队列,此时出队列操作就会阻塞,一直阻塞到队列不空(其他线程入队列元素)之后阻塞队列的用处很大,基于阻塞队列,就可以实现“生产者消费者模型那什么是“生产者消费者模型”呢?生产者消费者模型描述的是一种多线程编程的方法。原创 2023-12-08 09:15:00 · 154 阅读 · 0 评论 -
Java EE 多线程之线程与线程安全
在多任务操作系统中,我们希望程序能够同时巡行多个程序不过,如果是单任务的程序,完全不涉及进程,也不需要调度本质上来说,进程解决“并发编程”这样的问题的事实上,进程,是可以很好的解决并发编程这样的问题的再一些特定的情况下,进程的表现,不是尽人意的比如,有些场景下,需要频繁的创建和销毁进程的过程,此时使用多进程编程,系统开销就会很大,其中最关键的原因,就是资源的申请和释放进程是资源(CPU,硬盘,内存,网络带宽…)分配的基本单位。原创 2023-11-21 15:23:42 · 156 阅读 · 0 评论