- 博客(54)
- 收藏
- 关注
原创 bean 的六种作用域
Request和Session作用域仅在Web应用中可用,它们分别在每个请求和会话期间创建一个新的实例,并在请求或会话结束时销毁。GlobalSession作用域仅适用于基于portlet的web应用程序,并在每个全局会话中创建一个新的实例。在配置Bean时,可以通过在XML配置文件中设置<bean>元素的scope属性,或在Java配置中使用@Scope注解来指定Bean的作用域。每次对该Bean的请求时,Spring IoC都会创建一个新的Bean实例。每个请求都将得到一个新的、独立的Bean实例。
2024-06-02 17:12:10
490
原创 Bean 的生命周期的各个阶段
Bean的生命周期通常可以归结为以下几个阶段:1.实例化(Instantiation):2.属性赋值(Populate Properties):Spring设置Bean的属性,如依赖注入3.初始化(Initialization):4.使用(In use by application):Bean现在可以被应用程序使用了。5.销毁(Destruction):尝试通过日常生活中的事物来类比这个过程。使用人的一生来类比Bean的生命周期 在Spring框架中,和是两个重要的注解,它们分别用于标记在
2024-05-27 09:26:20
849
原创 MyBatis 中的动态 SQL 的相关使用方法(Javaee/MyBatis)
MyBatis 的动态 SQL 是一种强大的特性,它可以让你在 XML 映射文件内,根据不同的条件编写不同的 SQL 语句。• 多个组织的语句都以, 结尾,在最后拼接好的字符串还会以 , 结尾,会基于suffixOverrides 配置去掉最后⼀个。<where> 只会在⼦元素有内容的情况下才插⼊where⼦句,⽽且会⾃动去除⼦句的开头的AND或。<set> :动态的在SQL语句中插⼊set关键字,并会删掉额外的逗号.(⽤于update语句中)• prefix:表⽰整个语句块,以prefix的值作为前缀。
2024-05-21 19:44:06
557
原创 SpringMVC 中的常用注解和用法
GetMapping、@PostMapping(@RequestMapping(value=“/xxx”,method="RequestMethod.POST) 、@PutMapping、@DeleteMapping:分别用于处理 GET、POST、PUT、DELETE 请求,简化 @RequestMapping 的使用。路由映射:当⽤⼾访问⼀个URL时,将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射.可以用于类级别和方法级别。含义:用于将请求URL中的占位符参数绑定到处理器方法中的参数上。
2024-05-07 17:09:58
566
原创 垃圾回收知识整理
程序员无需显式地分配和释放内存,这是由Java虚拟机(JVM)自动处理的。这种自动内存管理大大简化了程序员的工作。: 手动管理内存致各种内存管理错误(如内存泄漏、野指针等)导致的程序崩溃。: 手动管理内存程序员需显式地分配和释放内存,如果程序员忘记释放内存就会导致内存泄漏。
2024-04-21 17:26:35
709
1
原创 类加载的过程以及双亲委派模型
如果一个类加载器收到了类加载的请求,他首先不会自己加载这个类,而是把这个请求委派给父类加载器去完成,每个层次的类加载器都是如此 ,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载请求,子加载器才会尝试自己去完成加载。验证是连接阶段的第⼀步,这⼀阶段的⽬的是确保Class⽂件的字节流中包含的信息符合《Java虚拟机规范》的全部约束要求,保证这些信息被当作代码运⾏后不会危害虚拟机⾃⾝的安全。JVM中进行类加载的操作,是有一个专门的模块.称为"类加载器"
2024-04-06 16:41:43
417
原创 HTTP 协议的基本格式
(Hypertext,HTTP)是一个简单的请求-响应协议,它通常运行在之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
2024-03-31 12:13:04
2202
原创 NAT 机制的工作流程
NAT(Network Address Translation),是指网络地址转换,1994年提出的。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。NAT旨在通过将一个外部 IP 地址和端口映射到更大的内部 IP 地址集来转换 IP 地址。基本上,NAT 使用流量表将流量从一个外部(主机)IP 地址和端口号路由到与网络上的终结点关联的正确内部 IP 地址。
2024-03-26 10:55:32
1152
原创 数据链路层
以太网以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一种称为交换机的设备连接不同的计算机。经典以太网是以太网的原始形式,运行速度从3~10 Mbps不等;而交换式以太网正是广泛应用的以太网,可运行在100、1000和10000Mbps那样的高速率,分别以快速以太网千兆以太网和万兆以太网的形式呈现。[1]以太网的标准拓扑结构为总线型拓扑,但快速以太网(100BASE-T1000BASE-T标准)为了减少冲突,将能提高的网络速度。
2024-03-25 14:52:49
813
原创 HTTPS 的加密流程
HTTPS也是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层.HTTP协议内容都是按照⽂本的⽅式明⽂传输的.这就导致在传输过程中出现⼀些被篡改的情况.加密"是什么加密就是把(要传输的信息)进⾏⼀系列变换,⽣成解密就是把再进⾏⼀系列变换,还原成。
2024-03-24 22:41:01
1399
原创 IP 协议的相关特性
对于ftp这样的程序,最⼤吞吐量⽐较重要。:第⼀位保留(保留的意思是现在不⽤,但是还没想好说不定以后要⽤到).第⼆位置为1表⽰禁⽌分⽚,这时候如果报⽂⻓度超过MTU,IP模块就会丢弃报⽂.第三位表⽰"更多分⽚",如果分⽚了的话,最后⼀个分⽚置为1,其他是0.类似于⼀个结束标记.:是分⽚相对于原始IP报⽂开始处的偏移.其实就是在表⽰当前分⽚在原报⽂中处在哪个位置.实际偏移的字节数是这个值*8得到的.因此,除了最后⼀个报⽂之外,其他报⽂的⻓度必须是8的整数倍(否则报⽂就不连续了).
2024-03-21 15:36:04
1289
原创 TCP相关特性
• 源/⽬的端⼝号:表⽰数据是从哪个进程来,到哪个进程去;• 32位序号/32位确认号:后⾯详细讲;• 4位TCP报头⻓度:表⽰该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最⼤⻓度是15*4=60• 6位标志位:◦ URG:紧急指针是否有效◦ ACK:确认号是否有效◦ PSH:提⽰接收端应⽤程序⽴刻从TCP缓冲区把数据读⾛◦ RST:对⽅要求重新建⽴连接;我们把携带RST标识的称为复位报⽂段◦ SYN:请求建⽴连接;我们把携带SYN标识的称为同步报⽂段。
2024-03-12 16:22:24
1245
原创 网络的一些基本概念
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。⽹络互连:将多台计算机连接在⼀起,完成数据共享。数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。
2024-03-06 23:15:37
853
原创 CSS 选择器的常见用法
3. 如果需要选择多种标签,可以使⽤ , 分割,如 p, div { } 表⽰同时选中p标签和div标签.逗号前后可以是以上任意选择器,也可以是选择器的组合.1. 以上三个标签选择器 ul li a 中的任意,都可以替换成类选择器,或者id选择器,可以是任意选择器的组合,也可以是任意数量选择器的组合。⼀个类可以被多个标签使⽤,⼀个标签也能使⽤多个类(多个类名要使⽤空格分割,这种做法可以让代码更好复⽤)• id是唯⼀的,不能被多个标签使⽤(是和类选择器最⼤的区别)2. class选择器。
2024-03-05 23:22:27
463
原创 File 类的用法和 InputStream, OutputStream 的用法
⽅法修饰符及返回值类型⽅法签名说明intread()读取⼀个字节的数据,返回-1代表已经完全读完了int最多读取b.length字节的数据到b中,返回实际读到的数量;-1代表以及读完了int最多读取len-off字节的数据到b中,放在从off开始,返回实际读到的数量;-1代表以及读完了voidclose()关闭字节流说明InputStream只是⼀个抽象类,要使⽤还需要具体的实现类。关于InputStream的实现类有很多,基。
2024-03-05 14:17:31
1249
原创 总结 IO、存储、硬盘、文件系统相关常识
输入输出(IO)是指计算机同任何外部设备之间的数据传递。常见的有文件、键盘、打印机、屏幕等。数据可以按记录(或称数据块)的方式传递,也可以 流的方式传递。
2024-03-04 16:33:35
884
原创 总结锁策略, cas 和 synchronized 优化过程
乐观锁在加锁之前,预估当前出现锁冲突的概率不大,因此在进行加锁的时候就不会做太多工作加锁过程做的事情比较少,加锁的速度可能就更快,但是也更容易引入一些其他问题悲观锁在家所之前,预估当前锁冲突出现的概率比较大,加锁的时候,会做很多工作做的事情多,加锁的速度可能更慢,整个过程不容易出现其它问题加锁之前对未发生的事进行预估。
2024-03-03 23:45:27
712
原创 总结 HashTable, HashMap, ConcurrentHashMap 之间的区别
HashMap 不行,线程不安全更靠谱的,Hashtable,在关键方法上加了synchronized后来标准库又引入了一个更好的解决方案;
2024-03-03 11:42:08
324
原创 关于synchronized介绍
1. 乐观锁/悲观锁自适应,开始时是乐观锁,如果锁冲突频繁,就转换为悲观锁2.轻量级/重量级锁自适应 开始是轻量级锁实现,如果锁被持有的时间较长,就转换成重量级锁3.自旋/挂起等待锁自适应4.不是读写锁5.非公平锁6,可重入锁。
2024-03-02 23:04:08
632
原创 线程池总结
把要使用的线程提前创建好,用完了也不要释放而是以备下次使用,就节省了创建/销毁线程的开销在这个使用的过程中,并没有真的 频繁创建销毁,而是从线程池里,去线程使用,用完了还给线程池线程池参数介绍核心线程数(一个线程池里,最少得有多少个线程)最大线程数(一个线程池里,最多最多能有多少个线程)保持存活时间时间单位和定时器一样,线程池中可以持有很多的任务使用Runnable 来作为描述任务的主体也可以设置PriorityBlockingQueue 带有优先级。
2024-03-02 11:05:14
879
原创 自己实现一个阻塞队列
1.阻塞队列是一种特殊的队列,带有阻塞性质,也遵循"先进先出",a.针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列不满之后b.针对一个已经空了的队列进行出队列,此时出队列操作就会阻塞,一直阻塞到队列不空之后2.阻塞队列是线程安全的。
2024-03-01 14:24:54
474
原创 实现一个线程安全的单例模式
上述代码中,由于t1线程执行完1 3 之后 调度走,此时instance 指向的是一个非null的 但是未初始化的对象,此时t2线程判定instance == null 不成立 就会直接return 如果t2继续使用instance里面的属性和方法,就会出现问题(此时这里的属性 都是未初始化的"全0 "值) 就会引起代码逻辑上出现问题。某个类,在一个类,只应该创建出一个实例,使用单例模式,就可以对咱们的代码进行一个更严格的校验和检查。实质是在该模式中不着急初始化出实例,在类外需要的时候,在进行初始化。
2024-02-29 17:42:00
892
原创 线程安全问题的原因和解决方案
2.多个线程同时修改同一个变量如count++这个操作,如果两个线程同时执行,就有可能出现两个线程同时读取count的值,然后同时修改,再同时存入,这就相当于count只自增了一次。3.原子性n++,其实是由三步操作组成的:1. 从内存把数据读到CPU2. 进⾏数据更新3. 把数据写回到CPU不保证原⼦性会给多线程带来什么问题?如果⼀个线程正在对⼀个变量操作,中途其他线程插⼊进来了,如果这个操作被打断了,结果就可能是错误的。
2024-02-20 22:27:28
940
原创 进程和线程的区别
4.进程和进程之间,不会互相影响,如果同一个进程中的某个线程抛出异常,是可能影响到其他线程,会把整个进程中的所有线程都会终止。6.线程也不是越多越好,要能够合适,如果线程太多了,调度开销可能非常明显。进程是系统资源调度的基本单位,线程是系统调度执行的基本单位。3.每个线程也有自己的资源,进程中的线程共享这一份资源。5.同一个进程的线程之间,可能会互相干扰引发线程安全。虽然多进程也能实现并发编程,但是线程⽐进程更轻量.• 销毁线程⽐销毁进程更快.• 调度线程⽐调度进程更快.1.进程是包含线程的。
2024-02-09 17:25:53
270
原创 MySQL 表的设计
车辆违章系统,包含用户表,车辆表,违章信息表。违章信息表中包含用户和车辆的违章信息。学校宿舍管理系统,要求包含宿舍信息,学生信息,每日的宿舍查房记录。学校食堂管理系统,包含食堂表,食堂仓口表,仓口收费记录。考勤系统,包含员工表,考勤记录表。4.设计一个学校食堂管理系统。设计一个学校宿舍管理系统。3.设计一个车辆违章系统。1.设计一个考勤系统。
2024-02-06 14:08:20
579
原创 MySQL 表的增删查改(练习)
9.查询book图书表中,作者author列不为空,或者满足条件:价格price在50元以上且出版日期publish_date在2019年之后的图书信息。2.在图书表中新增一条记录:Java核心技术、作者“Cay S. Horstman”,价格56.43,分类为“计算机技术”8.查询article文章表中,文章标题title为空,或者满足发表日期create_date在2019年1月1日之后。6.student学生表中,字段有姓名name,年龄age,要求查询姓张,并且年龄在18到25岁之间的学生。
2024-02-06 13:59:37
766
原创 MySQL 表的增删改查(基础)
单行插入insert into 表(字段1, ..., 字段N) values (value1, ..., value N);-- 多行插入insert into 表(字段1, ..., 字段N) values查询-- 全列查询select * from 表-- 指定列查询select 字段1,字段2... from 表-- 查询表达式字段select 字段1+100,字段2+字段3 from 表-- 别名select 字段1 别名1, 字段2 别名2 from 表。
2024-02-03 22:14:22
1259
原创 MySQL 基础
1.概念数据库 :是一类软件,可以管理数据(能够对数据进行保存和增删改查).数据库分为关系型数据库 和 非关系型数据库关系型数据库 表格形式组织数据 比如 : MySQL非关系数据库 往往按照键值对或文档 组织数据 比如:Redis MongoDB HBase实质开发中,一个复杂的系统(网站)背后往往有多种存储介质 关系和非关系型数据库搭配使用MySQL 是一个'客户端-服务器'结构的程序主动发起通信的一方,称为'客户端'被动接受通信的一方,称为'服务器'
2024-02-03 14:19:08
1122
原创 JAVA Map和Set
该类中存储的是结构的键值对,并且K一定是唯一的,不能重复。Set与Map主要的不同有两点:Set是继承自Collection的接口类,Set中只存储了Key。
2024-01-29 17:55:19
746
原创 JAVA 二叉搜索树(查找 插入 删除)
对有n个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即结点越深,则比较次数越多。3. cur 不是 root,cur 是 parent.right,则 parent.right = cur.left。2. cur 不是 root,cur 是 parent.left,则 parent.left = cur.right。2. cur 不是 root,cur 是 parent.left,则 parent.left = cur.left。
2024-01-26 16:12:41
847
原创 JAVA 优先级队列(PriorityQueue)
Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列, PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,本文主要介绍PriorityQueue。关于PriorityQueue的使用要注意:2. PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常。
2024-01-22 16:59:15
2541
原创 JAVA 二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。在树型数据结构中,数据元素之间存在一对多的关系。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的:一个结点含有子树的个数称为该结点的度;:一棵树中,所有结点度的最大值称为树的度;:度为0的结点称为叶结点;:若一个结点含有子结点,则这个结点称为其子结点的父结点;:一个结点含有的子树的根结点称为该结点的子结点;:一棵树中,没有双亲结点的结点;
2024-01-21 20:10:28
1011
1
原创 JAVA 栈和队列
栈是一种特殊的线性表,只能在固定的一端插入或删除元素,插入或删除元素的一端称为栈顶,另一端称为栈底。特点:先入后出,后入先出。
2023-12-10 20:40:20
659
1
原创 java 异常处理
if(!throw new UserNameException("用户名错误");if(!throw new PassWordException("密码错误");try {System.out.println("捕捉到用户名异常");System.out.println("捕捉到密码异常");
2023-11-23 20:11:10
726
原创 java 练习题
2、给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组。1、输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。
2023-11-21 22:19:22
81
原创 java 图书管理系统
a、要区分管理员和普通用户,不同的用户会实现不同的操作,可以用继承和多态实现b、把不同的操作单独封装成一个个类,这些操作都需要遵循一种规范,而接口实际上就是定义了一种规范,这里可以让这些类实现这个接口。c、将书的属性进行封装,同时设立一个书架类,即存放的是书的数组。d、管理员能够查找书籍、新增书籍,删除书籍以及显示书籍。e、读者能够实现查找书籍,借阅书籍以及归还书籍。
2023-11-18 13:42:59
141
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅