- 博客(72)
- 收藏
- 关注
原创 JavaScript网页开发设计(轮播图)
它的样式是一共有四个部分,可以通过滚轮来控制,第一部分也是一个具有四张图片的轮播图,通过点击左右箭头可以主动切换,不点击的话,也会慢慢自动切换。同时,下面的为人师表会与之乡对应。图片可以自己选择,修改img部分代码即可。
2025-05-23 08:14:48
131
1
原创 【JavaEE进阶】依赖注入 DI详解
依赖注入依赖注⼊是⼀个过程,是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源,⽽资源指的就是对象.在上⾯程序案例中,我们使⽤了 @Autowired 这个注解,完成了依赖注⼊的操作简单来说,就是把对象取出来放到某个类的属性中.在 ⼀些⽂章中,依赖注⼊也被称之为"对象注⼊","属性装配",具体含义需要结合⽂章的上下⽂来理解。
2025-05-23 08:08:08
254
1
原创 【javaEE】Spring IOC
容器是⽤来容纳某种物品的(基本)装置。(有点废话)我们想想,之前课程我们接触的容器有哪些?• List/Map->数据存储容器• Tomcat->Web容器那么Spring也作为一个容器,装的是对象(Bean)这里的Bean跟在Java基础语法中是不一样的,在Javase中Bean指的是实体类,比如Student类在JavaEE进阶中,Bean指的是Spring管理的对象。
2025-05-22 11:29:49
793
25
原创 [SpringBoot]Spring MVC(6.0)----图书管理系统(初)
图书管理系统需求:1. 登录: 用户输入账号,密码完成登录功能.2. 列表展示: 展示图书.准备工作前端页面代码登录页面:login.html图书列表展示:book_list.html。
2025-05-20 16:05:47
1143
33
原创 [SpringBoot]Spring MVC(5.0)----留言板
当然,如果我们只想使用个别的代码,比如setter,getter...,我们可以特别处理,我们这里先不予讲解,大家有兴趣的自己去了解一下即可。这是因为随着spring更新的原因,导致这个插件的失效,我们只要删除以下代码就行。当我们继续使用@Data的时候,我们发现还是不能进行使用。param(参数) : from,to,say .return : form 对 to 说了 say。MessageContraller代码。我们这里发现这样有个注释@Data ,然后刷新一下maven;然后我们就可以使用了。
2025-05-20 14:32:02
976
43
原创 [SpringBoot]Spring MVC(3.0)
HTTP协议自身是属于 "⽆状态"协议.⽆状态"的含义指的是:• 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的.例如登陆⽹站成功后,第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了.
2025-05-17 23:11:10
727
2
原创 [SpringBoot]Spring MVC(1.0)
Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从一开始就包含在 Spring 框架中. 通常被称为Spring MVCServlet 是一种实现动态页面的技术.准确来讲Servlet是一套 Java Web 开发的规范,或者说是一套Java Web 开发的技术标准.只有规范并不能做任何事情,必须要有人去实现它. 所谓实现 Servlet 规范,就是真正编写代码去实现 Servlet 规范提到的各种功能,包括类、方法、属性等.
2025-05-15 19:41:25
857
41
原创 一篇文章带你解决笔试面试中的jvm问题
在执行程序时,要在堆上申请一块内存空间.在C/C++中,上述内存空间需要手动方式进行释放.如果不手动释放的话,这块内存的空间就会持续存在,一直存在到进程结束(堆上的内存生命周期比较长.不像栈,栈的空间会随着方法执行结束,栈帧销毁而自动释放,堆则默认不能自动释放.)那么这就可能会导致一个严重的问题—内存泄漏.如果内存一直占着不用,又不释放,就会导致剩余空间越来越少.进一步导致后续的内存申请操作失败.因此,大佬们想了一些办法,来解决内存泄漏的问题.
2025-05-12 08:26:10
1565
51
原创 全网最细Servlet---(从零开始)
这里如果正常写英文的话应该是没有问题的,但是有点时候,如果你写汉字的话就可能会出现问题,因为浏览器默认是的用jdk,而idea默认的是utf8,所以俩个直接就可能出现乱码的情况,我们这里可以修改浏览器,也可以修改idea,但是由于utf8一般是通用的语言,所以我们修改浏览器。其实是Tomcat在调用Servlet,我们在重写doGet和doPost方法的时候,启动Tomcat来运行,当浏览器给服务器发送请求的时候,Tomcat作为HTTP服务器,就可以接收到这个请求。,可以在不同的操作系统上运行。
2025-05-11 10:27:32
850
17
原创 Tomcat
Tomcat是一个基于Java实现的开源、免费的HTTP服务器,广泛用于开发和管理Web应用程序。它支持静态和动态网页,可以通过简单的解压缩安装,但需要预先安装JDK。启动Tomcat服务器可以通过执行bin目录下的startup.bat(Windows)或startup.sh(Linux)脚本。启动成功后,访问127.0.0.1:8080可以查看Tomcat的欢迎页面。Tomcat的目录结构包括bin(可执行脚本)、conf(配置文件)、logs(日志文件)和webapps(网站应用部署目录)等。Tomc
2025-05-09 23:43:25
1453
5
原创 [JAVAEE]HTTP协议(2.0)
HTTP响应报文由首行、响应头、空行和正文组成。首行包含协议版本、状态码和状态描述,状态码分为信息类(1xx)、成功类(2xx)、重定向类(3xx)、客户端错误类(4xx)和服务器错误类(5xx)。响应头包含键值对,如Content-Type,指示正文的格式。正文可能包含HTML、CSS、JS、JSON等多种数据类型。HTTPS在HTTP基础上引入加密机制,使用对称加密和非对称加密结合,以及数字证书来保证数据传输的安全性,防止中间人攻击。
2025-05-09 00:18:04
1486
7
原创 【JavaEE】 HTTP协议(1.0)
HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议,我们在生活中经常用到。举个HTTP在日常生活中的用例:(打开一个网站)我们通过浏览器来访问学校的教务系统时候,我们输入一串网址的时候,此时就是通过HTTP的方式和学校教务系统的服务器进行交互,浏览器给学校教务系统的服务器发送一个HTTP请求,然后学校服务器给浏览器回一个HTTP响应。当这个响应被浏览器解析后,浏览器上就会显示页面内容(
2025-05-07 23:02:57
1186
1
原创 全网最基础网络原理(3.0)
TCP优势:可靠传输,TCP 适用于绝大部分场景.UDP优势:更高效率,UDP 更适合于 对于"可靠性不敏感”,"性能敏感”场景如果要传输比较大的数据包,TCP 更优先(UDP 有 64KB 的限制)如果要进行"广播传输",优先考虑 UDP,UDP 天然支持广播,TCP 不支持 (应用程序额外写代码实现)有一种特殊的场景,需要把数据发给局域网的所有的机器.这个情况就是广播好了,我们把传输层讲完了,作为一位java开发的程序员,我们对网络层以及链路层其实工作中并不会遇见很多,感兴趣可以私下了解即可。
2025-05-05 10:31:14
546
16
原创 全网最细零基础网页设计css篇
首先,我们来们来认识一下,什么是css样式以及它是干嘛用的从这张图片我们可以清楚地了解到,css样式就是用来修饰网页的,比如我们写了一段文字,通过css可以对这段文字的大小颜色,位置进行限定修饰。
2025-05-03 17:01:47
656
5
原创 全网最基础网络原理(1.0)
在应用层这里, 很多时候, 都是程序员"自定义"应用层协议的,(当然,也是有一些现成的应用层协议,咋们之后讲)咱们这里的自定义协议,很简单就能去设定一个,设定规则如下:1.发送数据:按照我们自己设定的方式去得到信息内容 再正常去传输它接受数据:按照自己设定的方式处理 正常接受的数据2.约定好信息按照什么格式来组织。
2025-05-03 15:12:31
903
3
原创 全网最细零基础网页设计Html篇
在开启之前我们先了解一下当今人工智能飞速发展的环境下,我们网页设计的要求。我们在技术上面的要求,没有以前那么高了,我们需要知道的是一个结构是什么样子的,偏向更加基础的部分,然后正确的使用AI即可。首先,我们来了解一下我们所需要的工具。
2025-05-02 20:41:00
1163
17
原创 [javaEE] 网络原理初始(2.0)
数据包的分用是指在数据从低层向高层传递的过程中,每一层协议都会剥离自己添加的控制信息(头部和尾部),并将剩余的数据包传递给上一层协议。我们通过协议分层去传输,在确定好协议分层相对应的各个协议后,数据会从应用层一直传输到物理层,通过网络再到另一个电脑的物理层,而后一直传输到另一个电脑的应用层,从而成功接受信息。数据包的封装是指在数据从高层向低层传递的过程中,每一层协议都会在数据包的前面添加自己的控制信息(头部),有时也会在数据包的后面添加一些信息(尾部)。(体现了上一层对下一层的调用),常见的协议包括。
2025-05-01 21:23:49
816
9
原创 史上最强最基础的大数据治理
数据治理大数据治理是指对大数据资源的管理和控制,以确保数据的高质量、可靠性、安全性、可用性和合规性,从而支持企业或机构的战略决策和业务发展。大数据治理包括数据的采集、存储、处理、分析、共享和应用等各个环节,旨在优化数据价值的释放,同时规避数据使用中的风险。1、大数据治理的核心思想以数据为资产:把数据视为重要的战略资源,像管理其他资产一样进行科学管理。数据资产化的核心在于增强数据的利用效率和价值。
2025-04-29 20:49:53
639
原创 【javaEE】文件操作--io.
文件描述符我们之前在讲解pcb时讲过,每个打开的文件都有一个唯一的文件描述符,它存储在顺序表中,一个进程每次用输入流输出流打开一个文件,就需要在这个表里分配一个文件描述符,而这个数组的长度是存在上限的,如果你的代码,一直打开文件,而不去关闭文件,就会使这个表里的文件描述符,越来越多,一直到把这个数组占满了,后续再尝试打开其他文件,就会出错了,导致系统崩溃,这也叫做文件。返回文件或目录的路径。(注意 .\ 可以忽视不写):对应文本文件,每次读写的最小单位是 "字符",英文的字符都是一个字节,一个。
2025-04-28 18:53:51
1242
13
原创 多线程(进阶)
目录常见的锁策略synchronized原理 锁升级锁消除锁粗化 CAS这是CAS伪代码CAS 操作包含三个操作数:CAS 的操作逻辑是:CAS 的特点 :CAS的应用实现原子类 实现自旋锁 CAS的ABA问题 JUC(java.util.concurrent) 的常见类 Callable接口ReentrantLock 可重入锁 semaphore 信号量CountDownLatch 线程安全的集合类在多线程环境中使ArrayList线程安全的方式多线程下使用哈希表 实现自旋锁 C
2025-04-27 15:47:45
1710
10
原创 JAVA多线程(8.0)
工厂模式是一种常用的设计模式,用于封装对象的创建逻辑。线程工厂(threadFactory):线程工厂是一个用于创建线程的工具类或接口,它允许用户自定义线程的创建逻辑,开发者可以控制线程的名称、优先级、异常处理等属性,从而更好地管理线程资源。要记住,当我们创建线程池时,系统也会同时自动创建一个阻塞队列去存储等待执行的任务,这样效率就更高。:适合需要灵活配置线程池属性的场景,通过自定义线程池,可以更好地管理线程资源,提高代码的可维护性和可扩展性。:适合简单的线程池创建场景,代码简单,但灵活性有限。
2025-04-26 23:53:31
964
1
原创 java多线程(7.0)
当创建 MyTimer 对象,调用无参构造方法时,便创建一个线程,循环执行从队列中取出任务的操作:取出队列中 “绝对时间” 最早的任务——如果当前时间 >= 此任务的时间(已经到达此任务的执行时间),便可调用run方法执行,执行完毕后从队列中删除;如果当前时间 < 此任务的时间(没到此任务的执行时间),则继续执行循环。如果使用 wait ,每次新来的任务,都会把 wait 唤醒,重新设定 wait 的等待时间。如果使用线程安全的队列,会导致代码中从 一把锁 变成 两把锁,很容易出现死锁的情况,
2025-04-25 19:37:14
902
3
原创 java多线程(6.0)
实现阻塞队列,我们可以从浅到深的来实现,先实现一个普通队列,再在普通队列的基础上,添加上线程安全,再增加阻塞功能,那么就来普通队列的实现吧。作为生产者消费者模式的缓冲空间,将线程(其他)之间分隔,通过阻塞队列间接联系起来,起到降低耦合性的作用,这样即使其中一个挂掉,也不会使另一个也跟着挂掉。阻塞队列是一种特殊的队列,同样遵循“先进先出”的原则,支持入队操作和出队操作和一些基础方法。因为阻塞队列本身的大小是有限的,所以能起到一个限制作用,即在消费者面对突发暴增的入队操作,依然不受影响。那么我们用它是干嘛呢?
2025-04-25 18:30:20
674
原创 JAVA多线程(4.0)
如果不是打包原子的,那么就会先解锁,但是这个线程还没有开始等待会继续执行,但是同时其他的锁线程也会开始竞争;我们在最开始讲到线程安全的时候,聊到了关于线程安全问题总共有五种原因,前面我们讲到了三种,还要两种没有涉及到,那么就来聊聊内存可见性引起的线程安全问题。如果notify和wait要联动,必须要求notify的调用对象,notify的锁对象,wait的调用对象,wait的锁对象都必须相同。这段代码想要表现出来的效果是,t1,t2线程同时运行,通过t2线程中输入的flag的值来控制t1线程是否结束。
2025-04-25 08:01:20
1343
1
原创 java多线程(3.0)
如果用该代码,按照之前对于锁的设定, 第二次加锁的时候, 该线程就会阻塞等待. 直到第一次的锁被释放, 才能获取到第二个锁. 但是释放第一个锁也是由该线程来完成, 结果这个线程已经堵塞了, 也就无法进行解锁操作. 这时候就会 死锁.避免死锁问题只需要打破上述四点的其中一点即可,对于第一点和第二点对于Java中是打破不了的,他们都是synchronized的基本特性。第四点破除循环等待:约定好加锁的顺序,让所有的线程都按照约定要的顺序来获取锁。约定好加锁的顺序,让所有的线程都按照约定要的顺序来获取锁。
2025-04-24 22:41:01
511
原创 Java多线程(2.0)
(count++就不行)传入一个时间:传入的时间是最大等待时间,比如写的等待100s,如果100s之内,t 线程结束了之间返回,如果100s到了,t 线程还没有结束不等了!就像约女神出来吃饭,如果女神没来,我来了,我就会等她来,但是如果女神已经来了,那我来了以后就可以直接吃饭了,但是如果等了好久女神都没来,那我就得自己去吃饭了。它也是我们比较熟悉一组方法,有一点要记得,因为线程的调度是不可控的,所以,这个方法只能保证实际休眠时间是大于等于参数设置的休眠时间的。其实,这样的运行结果是由于线程不安全导致的。
2025-04-22 07:18:03
878
原创 多线程(1.0)
一家公司要去银行办理业务,既要进行财务转账,又要进行福利发放,还得进行缴社保。为了让业务更快的办理好,张三又找来两位同事李四、王五一起来帮助他,三个人分别负责一个事情,分别申请一个号码进行排队,自此就有了三个执行流共同完成任务,但本质上他们都是为了办理一家公司的业务。此时,我们就把这种情况称为多线程,将一个大任务分解成不同小任务,交给不同执行流就分别排队执行。每个执行流,也需要有一个对象来描述,而 Thread 类的对象就是用来描述一个线程执行流的,虽然多进程也能实现并发编程, 但是线程比进程更轻量。
2025-04-21 18:48:57
744
原创 Mysql表的操作(2)
所以此时 order by '总分' 会对一个固定的字符串值排序,导致所有行的排序结果相同,实际并未按计算列排序。一般情况下,我们对数据进行查询时,会先通过"from"确定数据源,然后中间会经过一系列"对数据的操作",其实这是因为书写的形式不对,如果带了引号,'总分' 会被当作字符串常量,而不是列别名。,所以此时的where是查询不到"别名"的!那么想要实现这种排序,也很简单,我们只需要直接删除掉引号即可~—可以代表一个字符,%可以代表任意数字符;limit和offset的使用(分段查询)
2025-04-11 00:10:24
389
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人