- 博客(184)
- 收藏
- 关注

原创 Spring中Bean的作用域和生命周期
singleton | 每个SpringIoC容器内同名称的bean只有一个实例(单例)(默认)prototype | 每次使用该bean时会创建新的实例(非单例)request | 每个HTTP 请求⽣命周期内, 创建新的实例(web环境中, 了解)| websocket | 每个WebSocket⽣命周期内, 创建新的实例(web环境中, 了解)
2025-04-20 13:04:46
1095
5

原创 Spring事务的传播机制
7.Propagation.NESTED:> **如果当前存在事务则创建新事务作为嵌套事务来运行,如果不存在事务则等价于Propagation.REQUIRED**
2025-04-02 17:11:14
1397
6

原创 网络原理一>数据链路层协议->以太网协议
我们要填以太网数据帧的时候需要用到;网络的转发,就是分用的时候,网络层需要IP地址来转发,数据链路层需要用到mac地址虽然我们在路由转发的时候用的是IP地址,但是传输到下一个节点的时候要用IP地址来找到mac地址,才能填写以太网数据帧
2025-02-06 15:47:28
603
5

原创 网络原理一> ip协议相关特性
IP协议和TCP协议复杂长度差不多,这里可以大概理解一下IP协议属于网络层的协议,主要功能有两个1.路由选择:在两个通信节点之间,规划出一条合理的路径2.地址管理使用IP地址这样的概念,标识网络上某个设备的位置。
2025-02-04 17:27:41
1619
6

原创 网络原理一>TCP协议详解,一文搞懂几大核心机制,连接管理,粘包问题,超时重传,延时应答等等
使用,当这个标志位为1 时紧急指针才有效,这个时候就代表某个报文段中存在紧急数据需要处理,直接read到引应用程序中即可。大小最大并不是64kb,而是指数型的增长,理论来说,最大值为2的16次方减一这么大,但是实际上TCP。通信,就必须涉及 “五元组”--->源端口,目的端口,源IP,目的IP,协议号。发送的数据,分为一大份一大份来发,就可以用一份等待ACK的时间,发多份提升效率。情况一:发送的ACK丢了是不用管的,因为后一个ACK涵盖前一个ACK的信息。
2025-02-01 16:20:41
1141
16

原创 Java虚拟机相关八股一>jvm分区,类加载(双亲委派模型),GC
加载阶段:找到.class文件(根据类的全限定名(包名+类名)eg:java.lang.String),找到打开文件,读取到内存里。每个对象在new的时候,会搭配一个小的内存空间来计数指向这个对象的引用个数,如果引用个数为0,表示这个对象不在使用,就GC。元数据区:保存当前类被加载好的的数据(.class文件数据加载进来内存中),保存一些类对象。初始化:针对3.)中的类对象初始化,如果这个类还有父类,会针对这个父类进行类加载。(栈上局部变量的引用,常量池引用指向的对象,静态成员变量的引用),
2025-01-20 14:42:51
1114
16

原创 网络原理一>UDP协议详解
补:校验和是通过CRC (循环冗余校验)的简算法来校验的,会有比特翻转其实也是小概率事件。我们知道UDP是一种无连接,面向数据报,全双工,不可靠传输特性的网络协议。比特翻转就是传输过程中,光电信号或者电磁波二进制信号,从0->1, 1->0。我们知道端口号标识了一个主机上进行通信的不同的应用程序,在应用层上的。“五元组”--->源端口,目的端口,源IP,目的IP,协议号。首先发送之前,通过数据包中的数据,先计算好一个校验和。UDP的校验和,是为了防止,传输过程中的比特翻转。记录整个UDP数据报的长度,
2025-01-12 16:22:28
667
3

原创 网络原理 一> HTTPS协议详解,加密方式, 证书原理,中间人攻击 (一文搞懂)
这个校验和被第三方机构自己生成的的私钥进行加密,第三方机构生成的公钥让客户端拿到来获取这个校验和。中间人攻击主要是因为客户端区分不了,收到的公钥是服务器真实的公钥,还是“假公钥”客户端误以为是服务端发来的,就拿着这个 “假公钥” 自己的对称密钥加密。拿到后会根据自己从服务端拿到的信息“主要是公钥”根据证书中的内容->私钥黑客拿不到只有服务器自己持有,公钥是公开的都可以拿得到。服务器的IP地址,域名 服务器的公钥等等进行计算算出一个。校验和,拿着这个校验和与证书上的校验和进行比较。是一个被加密的校验和。
2024-12-28 01:10:30
1143
10

原创 网络原理一>HTTP协议详解,<一文搞懂HTTP协议,抓包工具使用,HTTP协议报头>
是浏览器允许网页在本地磁盘存储数据的一种机制,但是,不是让网页代码直接访问文件系统(JS也不可以) 而是包装了一层,就是套了一层壳。带有层次结构的路径:(表示要想访问某个主机上某个程序上的某个资源) 像盘符一样,每一层就相当于一个目录,有很多子目录构成。早期浏览器支持的功能比较少,一些用户浏览器版本高,一些用 户版本底,所以为了给不同用户更好的体验;查询字符串:要对查询的资源的补充说明,结构为键值对之间使用 “&”分隔,键和值之间用“=”分隔。在给服务器发送数据时会通过查询字符串发送过去,一般。
2024-12-19 15:57:56
1311
12

原创 网络原理初识一>网络基本的概念, 网络如何转发
⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵 从的⼀组约定、规则。经过二次转发,物理层解析,数据链路层解析,构造以太网数据帧,和二进制数据进行转发。多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。序列化:把这个结构体的数据包,转化为字符串或者bit流的方式。数据包在发送和接收的时候,会涉及序列化,和反序列化;(网络传输实际上就是0,1或者光电信号的方式传输)标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。(这个协议一般都是开发者自己自定义的)
2024-12-13 13:47:49
1763
10

原创 Java多线程八股(三)一>多线程环境使用哈希表和ArrayList
首先我们知道,Vector, Stack, HashTable, 是线程安全的(但是不建议用), 其他的集合类不是线程安全的 ,下面是。到新的哈希表,这个时候如果元素太多搬运完,势必进行更长时间的加锁解锁,会很耗时间,这个时候就可以采用“化整为零”的方式,不是。一次搬运完,而是多次进行搬运(一次搬运百分之几),后续再进行基本操作,这样加锁解锁耗时就很短,分多次部分触发完成全部任务。size 属性通过 CAS 来更新. 避免出现重量级锁的情况也避免了线程安全问题. (通过原子类修饰size)
2024-11-26 16:13:13
850
16

原创 Java多线程八股(二),CAS详解,ReentrantLock和Synchronized的区别
因为Callable只定义了一个带有返回类型的任务,并没有真正执行 ,还需要搭配futureTask和Thread对象使用。CAS: 全称Compare and swap,字⾯意思:”比较并交换“,⼀个 CAS 涉及到以下操作。ABA 问题,某个线程把内存的值修改为A,另一个线程把内存的值修改为B,又修改成原来的A。(站在值科学的角度,最后为A,说明没有被其他线程修改过,实则不然只是被多修改了而已)Synchronized是通过代码块控制加锁解锁,包, 里面的类都是基于这种方式来实现的.
2024-11-20 14:08:16
1449
12

原创 Java多线程八股(一), 锁策略,synchronized锁策略详解
轻量级锁的经典案例,应用程序级别的量级,加锁的时候发现竞争一般不会加入阻塞等待的状态,而是采用忙等形式进行等待。注意: 接下来讲解的锁策略不仅仅是局限于 Java . 任何和 "锁" 相关的话题, 都可能会涉及到以下内容.悲观:加锁的时候预测接下来的锁竞争激烈,就需要针对这样的激烈情况做额外的工作。两个线程都只是读⼀个数据, 此时并没有线程安全问题. 直接并发的读取即可.:加锁的时候预测接下来的锁竞争不激烈,就不需要做额外的工作。重量级锁:应对悲观场景,此时付出的代价大,比较低效。
2024-11-15 17:11:15
1357
4

原创 Java多线程编程(四)- 阻塞队列,生产者消费者模型,线程池
就和常量池类似,在Java程序构建时候准备好,等程序运行时直接加载到内存中使用。,弥补构造方法的缺陷,但是在构造方法上有时候无法重载,如果必须要系统类型的参数时。注:Java线程池中有几个线程任务多时自动创建出多个线程,任务少时会销毁。put 方法用于阻塞式的⼊队列, take ⽤于阻塞式的出队列.阻塞队列是⼀种特殊的队列. 也遵守 "先进先出" 的原则。核心线程在线程池创建时就创建,一直到线程池销毁才会跟着销毁。线程任务多时自动创建出多个线程,任务少时会销毁。让我们高效的创建销毁线程,
2024-11-10 14:00:35
1002
19

原创 Java多线程编程(三)一>详解synchronized, 死锁,wait和notify
synchronized 会起到互斥效果, 某个线程执行到某个对象的 synchronized 中时, 其他线程如果也执行。由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知.但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序.因为wait()方法会,先进行解锁,如果事先没有锁,会抛出异常。wait()方法,都是要在wait()方法之后执行才可以。两个线程竞争同⼀把锁, 才会产生阻塞等待.第⼆次加锁, 锁已经被占⽤, 阻塞等待.使当前执行代码的线程进行等待,释放当前的锁。
2024-11-04 19:22:43
1552
18

原创 java多线程编程(二)一一>线程安全问题, 单例模式, 解决程线程安全问题的措施
如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。
2024-10-31 12:33:33
1441
9

原创 Java多线程编程(一)
用我们上面的例子来看,每个执行流,也需要有⼀个对象来描述,类似下图所示,而Thread 类的对象就是面来描述⼀个线程执行流的,JVM 会将这些 Thread 对象组织起来,用于线程调度,线程管理。Thread 类是 JVM 用来管理线程的⼀个类,换句话说,每个线程都有⼀个唯⼀的 Thread 对象与之关联。为了让业务更快的办理好,张三⼜找来两。位同事李四、王五⼀起来帮助他,三个⼈分别负责⼀个事情,分别申请⼀个号码进⾏排队,⾃此就有。有时,我们需要等待⼀个线程完成它的⼯作后,才能进⾏⾃⼰的下⼀步⼯作。
2024-10-24 00:58:57
1020
8

原创 Mysql中的事务
事务具备的ACID特性,是我们使用事务的原因,在我们日常的业务场景中有⼤量的需求要⽤事务来保证。支持事务的数据库能够简化我们的编程模型, 不需要我们去考虑各种各样的潜在错误和并发问题,在使⽤事务过程中,要么提交,要么回滚,不⽤去考虑⽹络异常,服务器宕机等其他因素,因此我们经常接触的事务本质上是数据库对。支持事务的数据库中最基本的特性,一组SQL语句要么全部成功,要么全部失败,不会出现只执行了⼀半的情况,如果事务在执行过程中发生错误,会回滚( Rollback )到事务开始前的状态。
2024-10-03 17:42:16
2329
26

原创 数据库之索引<保姆级文章>
将页内包括头行、尾⾏在内的所有⾏进⾏分组,约定头行单独为⼀组,其他每个组最多8条数据,同时把每个组最后⼀行在页中的地址,按主键从⼩到⼤的顺序记录在页⽬录中在,页⽬录中的每⼀个位置称为⼀个槽,每个槽都对应了⼀个分组,⼀旦分组中的数据行超过分组的上限8个时,就会分裂出⼀个新的分组;后续在查询某⾏时,就可以通过⼆分查找,先找到对应的槽,然后在槽内最多8个数据行中进行遍历即可,从⽽⼤幅提高了查询效率,这时⼀个页的核⼼结构就完成了。使⽤索引的⽬的只有⼀个,就是提升数据检索的效率,在应⽤程序的运⾏过程中,查。
2024-09-16 20:17:25
3381
37
原创 Spring-AOP详解(AOP概念,原理,动态代理,静态代理)
重点:1.Spring-Framework的proxytargetclass默认值为false,所以Spring-Framework,JDK和CGLIB两个代理都使用2.而Spring-Boot需要区分版本:对于Spring-Boot 2.xxx版本,proxytargetclass默认值也为false.所以,Spring-Boot 2.xxx版本也是JDK和CGLIB两个代理都使用,而Spring-Boot 3.xxx版本proxytargetclass默认值则为true,所以Spring-Boot 3
2025-04-06 17:14:33
1553
7
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人