- 博客(34)
- 收藏
- 关注
原创 更简单的读取和存储对象 (Bean)
两种注解类型可以实现 :1, 类注解 :@Controller 控制器 : 检验参数的合法性 (安检系统)@Service 服务 : 业务组装 (客服中心)@Repository 数据持久层 : 实际业务处理 (实际办理的业务)@Component 组件 : 工具类层 (基础的工具)@Configuration 配置层 : 配置。
2023-07-30 09:00:00 275 2
原创 Spring 的创建和使用
因为创建项目阶段会下载一些国外的资源使用, 由于国内和国外的网络环境存在差异,下载国外的资源可能会收到影响从而下载缓慢或者下载失败,
2023-07-28 09:00:00 647 3
原创 创建一个简单的 Servlet 项目
注: 在 Maven 项目中使用 Servlet API 时,推荐使用较新的版本,例如 Servlet 3.1 或 Servlet 4.0,因为它们包含了更多的功能和改进。点击运行之后, 在浏览器中访问地址: http://localhost:8080/Servlet-demo/demo (写入Context Path。配置:在类上使用@WebServlet注解,配置该servlet的访问路径。创建:定义一个类,实现servlet接口,重写接口中的方法。2)安装插件之后点击编辑配置进行配置。
2023-07-27 22:27:45 273 2
原创 JVM详解(超详细)
Java Virtual Machine(Java虚拟机)JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
2023-07-26 23:48:41 1127 2
原创 Linux 云服务器上部署 web 项目
安装好之后使用 rpm 或者 java -version 进行查看 是否成功, 一般使用 java -version 就可以了。在idea中, 基于idea 打一个 war包,拖到 tomcat 的 webapps 目录中即可。保证 jdk 安装好之后安装, 鉴于 yum 上的 Tomcat 是比较老的 所以我们手动安装。大家可以通过这篇文章进行对 MariaDB 的安装(保姆级别的一篇文章)安装好之后就可以对数据库进行操作了 (安装成功后是没有密码的)yum (centos 自带的包管理器)
2023-07-21 23:49:27 530 4
原创 详解 Linux 常用命令
当我们说"Linux"时,通常指的是一种开源的计算机操作系统。Linux 是一个基于 UNIX 操作系统的变种,由芬兰计算机科学家 Linus Torvalds 在1991年首次发布。从那时起,Linux 迅速发展成为世界上最流行的操作系统之一。它是使用命令进行操作(开源,开源的是内核)设计思想是,一切皆文件。
2023-07-21 21:53:08 154 4
原创 详解 Spring - Ioc(控制权反转) 和 DI(依赖注入)
这样做的目的是解耦组件之间的依赖,提高代码的可维护性和可扩展性。Spring框架的核心功能之一就是提供了一个IOC容器,通过配置文件或注解,开发者可以声明对象之间的依赖关系,让Spring容器来负责对象的创建和依赖注入,从而实现控制反转。在修改或更新依赖的时候,不需要修改大量的代码,只需要调整配置即可,减少了代码的改动范围,从而降低了出错的风险,提高了代码的可维护性。通过依赖注入,对象只需关注自身的业务逻辑,而不需要关心依赖的具体实现细节,从而降低了组件之间的耦合度,提高了代码的可维护性和灵活性。
2023-07-19 13:39:22 395 2
原创 Servlet 详解
Servlet 是一种实现动态页面的技术, 是一组 Tomcat(一个HTTP服务器) 提供给程序员的一种 API , 帮助程序员简单高效的开发一个 web appServlet 也是是一些遵从Java Servlet API的Java类,这些Java类可以响应请求。尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求。Servlet必须部署在Java servlet容器才能使用。
2023-06-08 07:30:00 834 9
原创 cookie 和 session 的恩恩怨怨
1. Cookie 从哪里来?在 cookie 保存用户身份标识这样的应用场景中,, 都是需要服务器的支持的Session 就是服务器这边用来实现用户身份区分的一种机制, 通常是和 cookie 配合使用的给当前的用户分配一个 sessionId 同时记录下当前用户的一些身份信息(可以自定义的) SessionId 就会被返回到浏览器的 cookie 中后续浏览器访服务器都会带着这个sessionId,从而能够让服务器识别出当前用户身份了。
2023-06-05 07:00:00 443 15
原创 HTTPS加密(图文详解)
不同的数据,生成的签名差距是非常大的,这样的签名,就可以区分不同的数据常见的生成签名的算法: MD5 和 SHA系列设计过算法的证书只要被改了一点点,签名就会有非常大的区别综合而言,对称密钥适用于大量数据的加密和解密,但在密钥分发和管理方面存在挑战;非对称密钥提供了更高的安全性,但速度较慢,适用于密钥交换和数字签名等场景。在实际应用中,通常使用混合加密方案,结合对称密钥和非对称密钥的优点,非对称密钥辅助堆成密钥,以达到安全性和效率的平衡。
2023-05-21 08:00:00 335 6
原创 构造HTTP请求
ajax(Asynvhronous Javascript And XML)是现在最主流的前后端交互方式之一 是, 2005 年提出的一种 JavaScript 给服务器发送 HTTP 请求的方式, 特点是可以不需要刷新页面/页面跳转, 就能进行数据传输,运行ajax代码页面的域名和ajax里的请求访问的域名不一致,这时候就算是服务器给了响应浏览器也是不能处理,还是要报错。但这也是中保护机制,为了防止a网站中请求b网站的数据,form允许跨域。postman 可以很简单的构造请求,还可以生成代码。
2023-05-21 00:11:31 132 4
原创 HTTP 协议的基本格式和 fiddler 的用法
GET可缓存的(前提是幂等),POST则不能都没有长度限制(坑)跟安全没关系 取决于密码加没加密。
2023-05-14 22:07:28 176 6
原创 CSS中常用的选择器
作用特点标签选择器能选出所有相同的标签不能差异化选择类选择器能选出一个或者多个标签根据需求选择,最灵活,最常用id选择器能选出一个标签同一个id在一个HTML中只能出现一次通配符选择器选择所有标签同一个id在一个HTML中只能出现一次后代选择器(复合选择器)选择后代元素可以是孙子元素。
2023-05-10 23:42:28 99 6
原创 java_取数组中最长的一串数字(OJ)
ret:用来存放旧的cur加过的数字字符串,和新的比较谁长就取谁。cur:用来拼接数字字符串,只要是连续的数字就加上去。遍历完之后再进行比较一次输出ret就行了。定义两个字符串 cur,ret。具体实现代码(结合注释)
2023-04-19 21:59:09 200 1
原创 学java在网络中必须要知道的概念
网络的互联为的是实现网络的通信,但是网络的通信过程中,是按照什么方式知道这个数据传到哪或者说这个数据的接收地址怎么确定,这时候就有了IP地址,那什么是IP地址呢,接下来我们一起来聊聊IP地址,这会都瞌睡了,但是学习使我快乐,还是得继续学,哎学习这个事,开头难,过程难,最后更难,还是继续看这个IP地址是个什么东东吧!P地址主要用于标识网络主机、其他网络设备的网络地址,就像是我们收发快递总得知道商家的地址和我们自己的地址,快递员才能精确的送到我们手机,或者是送到我们楼底下的超市。
2023-04-18 22:34:28 105
原创 java-详解File类,InputStream和OutStream的用法
file 类以及 InputStream 和 OutStream 详解(另附代码,以及运行截图)
2023-04-17 22:53:29 2113
原创 IO文件存储、硬盘、文件系统详解
文件操作IO是计算机程序中常见的一种操作,通常用于读取和写入文件。,表示程序可以从文件中读取数据(输入)或向文件中写入数据(输出)。我们先来看看文件是怎么个事?
2023-04-16 15:28:01 198 1
原创 锁策略以及CAS和Synchronized的优化过程
全称Compare and swap ,字面意思:比较并交换",一个CAS涉及到以下操作:假设内存中的原数据V,旧的预期值A,需要修改的新值B比较A与V是否相等.(比较)如果相等,把B写入V (交换)返回操作是否成功两种典型的不是原子性的代码check and set (if 判定然后设定值)当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线程只会收到操作失败的信号CAS可以视为是一种乐观锁,(或者可以理解为CAS是乐观锁的一种实现方式)
2023-04-15 17:19:38 172
原创 死锁(死锁的原因和如何避免死锁)
死锁是指两个或多个进程(或线程)彼此互相占用对方需要的资源而陷入一种无限等待的状态。当多个进程同时请求互斥的资源时,如果每个进程都持有至少一项资源并等待其他进程释放其资源,那么这些进程就会形成死锁。假设进程 A 持有资源 b,同时需要资源 a,而进程 B 则持有资源 b,同时需要资源 a,这时候如果进程 A 和进程 B 都不释放它们已经占有的资源,那么它们就会陷入无限等待的状态,从而形成死锁。这样的话,这两个进程都无法继续执行,也无法释放资源,从而导致整个系统无法运转。可以对应下面的图进行理解。
2023-04-13 14:41:40 258 1
原创 HashTable, HashMap, ConcurrentHashMap 之间的区别
就如下图是用一把锁锁住了整个哈希表如果多线程访问同一个 Hashtable 就会直接造成锁冲突.size 属性也是通过 synchronized 来控制同步, 也是比较慢的.一旦触发扩容, 就由该线程完成整个扩容过程. 这个过程会涉及到大量的元素拷贝, 效率会非常低.虽然他是线程安全的,但是如果两个线程去同时进行操作哈希表时,他就会产生阻塞等待其底层实现采用同步方法来保证线程安全。因此,它的性能相对较低,特别是在高并发环境下,由于每个方法都需要获取锁,因此会导致性能下降。
2023-04-12 17:55:02 76 1
原创 Synchronized的基本概念和原理
Synchronized是Java中用于实现线程同步的关键字。它可以用来修饰方法和代码块,以实现对多线程访问共享资源的同步控制。
2023-04-04 15:52:08 249
原创 线程不安全的原因以及解决方法
synchronized可以修饰代码块(针对此代码块加锁),普通方法(针对本方法加锁),static静态方法(针对类来加锁),锁具有互斥性,当一个线程对其加锁之后,其他线程就不能对其进行修改或者访问,需要等释放锁后才能重新访问(这里是针对同一把锁)4.内存可见性问题,是编译器优化引入的一个BUG,当一个线程无法及时感知到,就会导致代码出现错误,使用volatile关键字修饰可能出现内存可见性问题的变量,就可以避免编译器只读寄存器不读内存的情况,解决了内存可见性问题。针对线程的抢占式执行,可以采用。
2023-03-27 13:48:33 236 1
原创 Java线程的6中状态(内嵌小故视)
Thread state for a thread which has not yet started.//尚未启动的线程的线程状态说明:此时刚好创建了线程还没有开始运作,还没有调用start,在start之前获取到NEW状态//空});
2023-03-18 23:40:04 43
原创 线程的基本用法
2.否则,只是内部的一个中断标志被设置,thread 可以通过 Thread.interrupted() 判断当前线程的中断标志被设置,清除中断标志 Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设 置,不清除中断标志 这种方式通知收到的更及时,即使线程正在 sleep 也可以马上收到。Thread t3 = new Thread(() -> System.out.println("使用匿名内部类创建Thread 子类对象"));
2023-03-16 17:05:34 297
原创 线程和进程之间的关系(内涵举例事件)
虽然说有些同学的事需要班委处理不想让同学们知道,但是班委之间讨论时每个班委都会知道,这就是同一个班级每个班委之间的信息是共享的,但如果是进程的话就不共享,这就是进程和线程之间最大的区别。此时,就把这种情况称为多线程,将一个大任务分解成不同的小任务,交给不同的执行流分别执行,其中班主任叫来的其他班委,了所以班主任就被称为主线程(Main Thread)进程之间具有独立性,一个进程挂了,不会影响到别的进程,同一个进程里的多个线程之间,一个线程挂了,可能会把整个进程带走,影响到其他线程。销毁线程比销毁进程更快。
2023-03-16 16:06:19 109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人