JavaEE
文章平均质量分 80
孙宇航_
舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑的累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。
展开
-
CAS问题汇总
对于上图中的有其他线程修改内存的情况,当线程1在执行CAS之前,如果有两个线程过来修改内存中的值:线程2将原来的值给修改了,线程3又把内存的值给改回来了,这个时候线程1再去执行CAS就会出现问题,这个问题就是ABA问题。① 线程一(张三):获取原内存值 200_version_1 ,比较 V 和 A,相等,扣款成功,然后将内存值修改为 100_version_2。② 线程三(王五):获取原内存值 100_version_2,比较 V 和 A,相等,转账成功,然后将内存值修改为 200_version_3。原创 2023-08-16 17:12:22 · 333 阅读 · 0 评论 -
Spring事务和事务传播特性
*事务定义:**封装成一个原子性操作,要么全部成功,要么全部失败。为什么要用事务?如果没有事务。第一步执行成功了,第二步执行失败了,那么 A 账号就丢失了 100 元,而如果使用事务就可以解决这个问题,让这一组操作要么一起成功,要么一起失败。原创 2023-03-12 10:44:57 · 441 阅读 · 0 评论 -
Spring实现[拦截器+统一异常处理+统一数据返回]
统一异常处理使用的是 @ControllerAdvice(控制器通知类) 和 @ExceptionHandler(异常处理器) 来实现。(拦截规则,黑白名单)----> controller ----> service ----> mapper---->数据库。统一数据格式的返回可以使用 @ControllerAdvice + ResponseBodyAdvice 方法实现。用户调用–> controller ----> service ----> mapper---->数据库。原创 2023-03-08 19:21:35 · 2247 阅读 · 2 评论 -
MyBatis和MyBatis_Plus有什么区别【面试常考题】
MyBatis_Plus是一个MyBatis的增强工具,只是在MyBatis的基础上增强了却没有做改变,支持所有MyBatis原生的特性,所有引入不会对现有的MyBatis框架产生任何影响。原创 2023-02-26 19:27:07 · 3077 阅读 · 0 评论 -
Redis【包括Redis 的安装+本地远程连接】
缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据。原创 2023-02-14 11:04:51 · 1366 阅读 · 2 评论 -
SpringBoot项目服务器部署
SpringBoot项目服务器部署原创 2023-02-13 16:12:34 · 497 阅读 · 0 评论 -
SpringAOP笔记【JavaEE】
SpringAOP一、AOP理解AOP是一种思想,SpringAOP是一个框架,提供了一种对AOP思想的实现,他们的关系就像MVC和SpringMVC、IOC与DI类似。AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方原创 2023-02-14 08:00:00 · 285 阅读 · 0 评论 -
动态SQL使用【JavaEE】
set标签中如果所有参数都是非必传,set会将这些语句隐藏,所有标签都使用逗号也没有问题,set会将逗号去掉(如果传一个值的话逗号会存在)。主要作用:进行修改操作时,配合 if 来处理非必传传输,特点是会自动去除最后一个英文逗号。where 中的所有参数都为空,那么 where 的 sql 就不会生产。判断一个参数是否有值,如果没值,那么就会隐藏 if 中的 sql。如果结果为false,那么 if 标签中的 SQL 就会被省略。最主要的作用:去除 SQL 语句前后多余的某个字段。原创 2023-02-13 15:00:00 · 648 阅读 · 0 评论 -
MyBatis笔记【JavaEE】
MyBatis去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。对于 JDBC 来说,整个操作⾮常的繁琐,我们不但要拼接每⼀个参数,⽽且还要按照模板代码的⽅式,⼀步步的操作数据库,并且在每次操作完,还要⼿动关闭连接等,⽽所有的这些操作步骤都需要在每个⽅法中重复书写。使用 #{} 得到的JDBC代码:【针对String类型的参数】使用 ${} 得到的JDBC代码:【针对int类型的参数】原创 2023-02-13 09:50:33 · 329 阅读 · 0 评论 -
SpringMVC笔记【JavaEE】
Spring MVC 是对 MVC 设计思想具体实现的Web框架。方法二:@GetMapping 和 PostMapping。将前端传递过来的name变成当前程序内的username。方法一:@RequestMapping(“/xxx”)默认前端必须传入RequestParam注解的值,在主配置文件中设置运行的配置文件。请求重定向 redirect。MVC 是一种设计思想。Fiddler 抓包请求。Fiddler 抓包响应。请求转发 forward。接收JSON格式的数据。// ajax 提交。原创 2023-02-12 08:30:00 · 549 阅读 · 0 评论 -
@Controller和@RestController的异同点【笔记】
@Controller, @RestController的共同点都可以用来表示Spring某个类的是否可以接收HTTP请求。@Controller, @RestController的不同点@Controller:标识一个Spring类是Spring MVC controller处理器,@RestController:@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。原创 2023-01-31 13:34:19 · 261 阅读 · 0 评论 -
IDEA SpringBoot热部署
IDEA SpringBoot热部署【自动帮开发者重启 SpringBoot项】原创 2023-01-31 10:29:54 · 1288 阅读 · 0 评论 -
Spring笔记【JavaEE】
我们之前 接触的容器有哪些?List/Map-> 数据存储容器Tomcat->Web容器IoC = Inversion of Control 翻译成中⽂是“控制反转”的意思,也就是说 Spring 是⼀个“控制反转”的容器。原创 2023-01-19 09:48:07 · 774 阅读 · 0 评论 -
JVM【八股文】
一块大的区域,需要根据功能,来划分不同的小区域。JVM内存是从操作系统里申请来的,之后堆这部分区域进行了划分。原创 2022-11-26 21:02:40 · 4025 阅读 · 12 评论 -
【计算机网络】IP协议详解
IP协议的路由选择就类似于 “问路”,IP数据报在传输的过程中,如果当前的路由器知道目的地址在哪,就会直接告诉他,如果不知道,会给一个大概的方向(下一跳),该数据报到了之后继续 “问路”,直到到达目的IP。:虽然有NAT机制,但是也有一定的限制(同一局域网内的主机数不能超过65535台),要从根本上解决这个问题 – 就引入了IPv6。IPv6:16个字节,128个比特位(号称能给地球上每一粒沙子分配唯一的IP地址)通过一个具有外网IP的服务器(主机3和主机4通信,通过QQ服务器)IP地址 = 网络号。原创 2022-10-23 14:00:00 · 285 阅读 · 0 评论 -
【计算机网络】TCP/UDP协议详解
粘包问题指的是: 应用层数据包 在TCP接收缓冲区中,数据包混合在一起,分不出来谁是一个完整的数据包(数据包会在到达接收方后进行分用,将TCP报头去掉,将里面的数据取出来,放入缓冲区)**没有问题,直接继续发送,**当收到“下一个时2001”的ACK时,说明2001之前的数据已经全部收到,所以没有1001的ACK已经无所谓了。相当于进程的异常退出,操作系统会回收进程的资源——包括 释放文件描述符表。因为 延时应答的存在,ACK的回复会更慢,所以当和响应同时发送时,就会合并为一次发送,提高了传输的效率。原创 2022-10-21 14:46:00 · 1832 阅读 · 9 评论 -
【JavaEE】文件IO操作笔记
狭义文件就是存储在硬盘上的数据,以“文件”为单位广义上的文件就是操作系统负责管理硬件资源,操作系统(Linux)一般都会将这些资源统一抽象成“文件”来管理是属于 操作系统层面的;提供一些API接口不同的操作系统,提供的API不同但是Java就在JVM中把不同系统的操作文件的API封装,这样我们就可以使用Java中的库来实现文件操作。原创 2022-10-15 06:00:00 · 524 阅读 · 1 评论 -
【JavaEE】多线程笔记第四天(策略锁/CAS/Synchronized原理/JUC常见类/多线程环境使用哈希表)
CAS:全称Compare and swap ,字面意思就是“比较并交换”,实际CAS做的事情就是:拿着寄存器/某个内存 的值 和 另一个寄存器/内存 的值进行比较,如果值相等,就将两个值交换把内存中的某个值,和CPU寄存器A中的值,进行比较如果两个值相同,就把另一个寄存器B中的值和内存的值进行交换(把内存的值放到寄存器B,同时把寄存器B的值写给内存)返回操作是否成功比较旧的预期值A,和原数据V是否相等如果比较相等,就需要将原数据V修改为新的值B返回操作是否成功。原创 2022-10-09 10:42:23 · 887 阅读 · 2 评论 -
【JavaEE】多线程笔记第三天(【多线程案例】单例模式/阻塞队列/定时器/线程池)
定时器是软件开发中的重要组件,类似于一个”闹钟“,达到一个设定的时间之后,就执行某个指定的代码标准库中提供了一个 Timer 类,Tmier类的核心方法为 scheduleschedule 包含两个参数,第一个参数指定要执行的任务,第二个参数指定多长时间后执行 (毫秒)原创 2022-10-08 06:00:00 · 325 阅读 · 4 评论 -
【JavaEE】作业回顾——多线程顺序打印
有三个线程,线程名称分别为:a,b,c。每个线程打印自己的名称。需要让他们同时启动,并按 c,b,a的顺序打印。原创 2022-10-06 18:04:21 · 520 阅读 · 0 评论 -
【JavaEE】多线程笔记第二天(【线程安全】synchronized + volatile + wait + notify)
方法是,引入一个计数器,每次加锁,计数器++,每次解锁计数器--,如果计数器为0,此时的加锁操作才能真加锁,同样计数器为0,此时的加锁操作才能真解锁。两次加锁,第一次加锁成功,第二次加锁看这个锁加锁了没,如果锁了就直接放行,但需要考虑的是直接放行后,要不要真解锁,如何来判断。要确定加锁的对象,和调用wait的对象是同一个对象,并且也要确定调用wait的对象和调用notify的对象,也是同一个对象。锁竞争的核心是:无论锁对象,是什么状态,什么类型,只要两个线程争一个锁对象,就会产生锁竞争。原创 2022-10-01 12:04:01 · 207 阅读 · 2 评论 -
【JavaEE】多线程笔记第一天(进程的理解、线程的理解与创建、Thread类、线程状态)
目录1.进程的理解2.多线程的理解 (Thread)3.线程的创建4.Thread类的常见方法5.线程状态1.进程的理解//进程是操作系统对一个正在运行的程序的一种抽象,通俗的说,进程就是运行起来的程序;//同一时刻系统中的进程会有很多,而操作系统就得给他们安排好//就是说: 进程实时操作系统分配资源的基本单位1.1 进程管理//进程管理 = 描述 + 组织//描述:详细的表示一个进程中有哪些属性/信息,而结构体原创 2022-09-28 17:34:21 · 586 阅读 · 4 评论