- 博客(29)
- 收藏
- 关注
原创 AOP原理与应用全解析
一.AOP使用AOP是⼀种思想, 是对某⼀类事情的集中处理,避免了许多重复的代码AOP实现⽅法有很多, 有Spring AOP,也有AspectJ、CGLIB等AOP的作用:在程序运⾏期间在不修改源代码的基础上对已有方法进行增强一.AOP使用1.添加配置@Aspect: 在方法前加,标识这是⼀个切⾯类2.通知类型正常情况。
2026-02-26 11:50:20
545
原创 Spring Bean作用域与生命周期全解析
在SpringIoC中类注解(@Component,@Controller,@Servie,@Repository,@Configuration)方法注解(@Bean)都是用来声明Bean对象通过@Autowired , 构造方法,Setter方法来获取注入Spring并由Spring管理的Bean对象通过或者来获取对象默认情况下, Spring容器中的bean是单例的单例作用域原型作用域getBean请求作用域请求上下文数据、表单对象会话作用域全局作用域作用域可以通过@Scope来设置,
2026-02-24 16:13:46
304
原创 MyBatis-Plus
通过 Lambda 表达式来引用实体类的属性,从而避免了硬编码字段名, 也提高了代码的可读性和可维护性,可以避免数据库字段名的唯一性,可以直接使用get方法传入类的属性名,然后通过实体类设置的注解映射来寻找数据库的字段名。2.直接注入Mapper接口,调用Mapper接口中的CRUD(insert,select,updeat,delete)eq(等于),gt(大于条件),ge(大于等于),lt(小于),le(小于等于),ne(不等于),
2026-02-23 14:43:17
593
原创 Spring事务管理全解析:编程式与声明式
4.若程序抛出的不是运行时异常,是别的异常,但是还是会自动提交事务,默认只在遇到运行时异常(RuntimeException)和(Error)时才会回滚,要想事务回滚就要设置异常回滚属性.,在。: 如果当前存在事务, 则创建⼀个事务作为当前事务的嵌套事务来运行,如果当前没有事务则创建⼀个新的事务(其中一个事务发生异常,所有事务全部回滚): 默认的事务传播级别. 如果当前存在事务, 则加⼊该事务. 如果当前没有事务, 则创建⼀个新的事务(同时提交,同时回滚)
2026-02-22 09:39:35
679
原创 MyBatis数据库配置与SQL操作全解析
占位的方式, 提前对SQL进行编译, 然后把参数填充到SQL语句中。程序运行时, 框架会自动生成接口的实现类对象(代理对象),并给交Spring的IOC容器管理。@Param:设置参数的别名, 如果使用@Param 设置别名, #{ }里面的属性名必须和。⽅法中添加⼀个参数,将方法中的参数,传给SQL语句,#{ } 的方式获取方法中的参数。${ }会直接进行字符替换, ⼀起对SQL进⾏编译,就会有SQL注入的安全性问题。查询中使用as来给数据库中的变量名改名,将下划线分割的名字改为Java的驼峰式。
2026-02-03 19:51:54
257
原创 SpringBoot核心注解与配置详解
ComponentScan配置扫描路径({" "})——一般不用设置,都包含在@SpringBootApplication中,一般把@SpringBootApplication放在我们希望扫描的包的路径下, 这样我们定义的bean就都可以被扫描到。@Qualifier:指定当前要注⼊的bean对象,在@Qualifier的value属性中,指定注⼊的bean的名称——@Qualifier(" ")然后调用 session中的getAttribute。
2026-02-01 21:20:08
715
原创 自动化测试
一.Selenium1.安装selenium2.使用selenium下载浏览器驱动以Chrome浏览器为例,可以添加隐式等待——放视元素加载过慢/没出现时自动化报错3.通过driver对象来创建打开浏览器输入URL二.元素定位选择第几个——nth-child()下一级——‘>’2.xpath1.获取HTML所有页面——//*2.获取页面指定的元素——//body中的标签名3.获取子节点——/4.元素匹配[@元素名='']5.选择第几个用[](1为开始)三.选择元素。
2026-01-30 20:32:29
524
原创 深入浅出:TCP/UDP协议核心原理
我的上个博客所写的所有代码都在应用层应⽤层的java socket,都是为了完成某项业务,应用层和传输测和日常开发更紧密这次我们聊一聊传输层,网络层和数据链路层一.传输层1.端口号端⼝号范围划分0 - 1023: 知名端⼝号, HTTP, FTP, SSH等这些⼴为使⽤的应用层协议, 他们的端⼝号都是固定的.1024 - 65535: 操作系统动态分配的端⼝号. 客户端程序的端⼝号, 就是由操作系统从这个范围分配认识知名端⼝号(Well-Know Port Number)
2025-11-05 15:12:16
755
原创 走进HTML的世界
type:输入框种类---button(搭配JS使用),radio(单选框),checkbox(多选框),text(文本框),image,password(密码框),submet(提交)会出现按钮 等等。width/height: 控制宽度高度.高度和宽度⼀般改⼀个,另外⼀个会等比例缩放. 否则就会图⽚失。href:里面填写要跳转网页的url,也可以跳转内部网页,填写相对路径即可,放入#就是空链接不进行跳转。name:给input标签标明谁和谁是一起的(实现单选要用相同的name来标记)
2025-10-27 18:07:03
937
原创 揭秘OSI七层模型与TCP/IP五层架构和Socket套接字
OSI:即Open System Interconnection,开放系统互连OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了7层。OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地实现。
2025-10-19 17:23:38
1106
原创 双指针算法:三招解决数组难题
⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼 近。对撞指针的终⽌条件⼀般是两个指针相遇或者错开(也可能在循环内部找到结果直接跳出循环),也就是: left == right (两个指针指向同⼀个位置) left > right (两个指针错开)快慢指针:⼜称为⻳兔赛跑算法,其基本思想就是使⽤两个移动速度不同的指针在数组或链表等序列 结构上移动。在⼀次循环中,每次让慢的指针向后移动⼀位,⽽快的指针往后移动两位,实现⼀快⼀慢。常⻅的双指针有两种形式:⼀种是对撞指针,⼀种是左右指针。
2025-09-24 20:46:32
198
原创 揭秘进程与线程:运行程序的幕后秘密
重量级锁是指用到内核提供的 mutex . 执行加锁操作, 先进入内核态. 在内核态判定当前锁是否已经被占用,如果该锁没有占用, 则加锁成功, 并切换回用户态. 如果该锁被占用, 则加锁失败. 此时线程进入锁的等待队列, 挂起. 等待被操作系统唤醒. 经历了一系列的沧海桑田, 这个锁被其他线程释放了, 操作系统也想起了这个挂起的线程, 于是唤醒这个线程, 尝试重新获取锁。要执行的任务,直接使用阻塞队列,当队列中没有任务时,线程池中的工作线程,就能够阻塞等待,可以让调用者手动指定队列进来。
2025-09-19 18:18:34
949
原创 栈--应用
1.定义:栈是⼀种特殊的线性表,其只允许在固定的⼀端进⾏插⼊和删除元素操作2.压栈:栈的插⼊操作叫做进栈/压栈/⼊栈,⼊数据在栈顶3出栈:栈的删除操作叫做出栈。出数据在栈顶Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的把递归的可以改为非递归二.自己实现栈。
2025-05-11 09:26:11
343
原创 二叉树的运用
⼀个结点含有⼦树的个数称为该结点的度;如上图:A的度为6⼀棵树中,所有结点度的最⼤值称为树的度;如上图:树的度为6度为0的结点称为叶结点;如上图:B、C、H、I...等节点为叶结点若⼀个结点含有⼦结点,则这个结点称为其⼦结点的⽗结点;如上图:A是B的⽗结点⼀个结点含有的⼦树的根结点称为该结点的⼦结点;如上图:B是A的孩⼦结点⼀棵树中,没有双亲结点的结点;如上图:A从根开始定义起,根为第1层,根的⼦结点为第2层,以此类推树中结点的最⼤层次;如上图:树的⾼度为4度不为0的结点;
2025-05-03 10:45:19
837
原创 链表与LinkedList
链表中储存非连续的结构,通过链表中的引用链接(地址)次序来实现的。简单的无头单向不循环先定义一个链表 next要用ListNode是一位提存入的是链表而链表就是用ListNode这个方法创建的注意:1.函数方法结束局部变量就会被回收 2. head是对象的属性 3.head !=null=> head =null把整个链表的所有元素全部遍历完 head.next !=null =>head.next =null此时head指向的是最
2025-04-30 20:43:48
256
原创 顺序表与ArrayList
extends E>里面的E代表的是ArrayList<E>传入的类类型(泛型参数)1.传入的类型一定实现了Collection接口或者Collection接口子类。extends E>c)(通配符的上界)调用不带参数的构造方法之后在第一次add的时候会将数组自动分配10个大小。构造一个长度为initialCapacity(传参的值)(1)ArrayList()不传参数。二.ArrayList的使用。构造一个容量为n的列表。
2025-04-22 08:25:40
254
原创 泛型理解与应用
通俗地来讲反应就是适用于许多许多类型,你要什么类型我给你传什么类型。就算放错了编译器也会帮你检查(传递类型的)T1,T2...不能是基本类型,只能是类类型。
2025-04-17 22:58:17
455
原创 Java中字符串(string类)
如图如果str1先由栈区读取地址然后存进堆区则这个堆区的一部分就是常量池当str2的值与str1的值相同时则先回在堆区的常量池中查找如果有之前存进去的则str2会拿到之前str1存进栈区中的地址此时str1完全等于str2当str2再次存储的时候,先会检查字符串常量池当中是否存在"abc"常量,如果存在,则不再重复存储。则这个会打印true。
2025-04-14 22:22:26
874
原创 c语言之最大公约数与最小公倍数
printf("请输入你所计算公因数的两个数");z = x;x = y;y = z;while (x!printf("(%ld,%ld)的最大公因数=%ld\n", x1, y1, x);//求最大公因数printf("{%ld,%ld}的最小公倍数=%ld\n", x1, y1, x1 * y1 / x);//求最小公倍数return 0;
2025-01-12 16:44:22
725
原创 让选择和循环不再成为你的绊脚石!!!
程序设计的结构(if,switch二.关系操作符这里为什么我不先写这两个结构呢(因为如果没有关系操作符结构也就无法正常运行就会导致许多bug出现。>大于运算符 =大于等于运算符
2024-12-03 11:38:16
575
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅