- 博客(102)
- 收藏
- 关注
原创 MyBatis缓存
在Test类中,在@Test注解前还有@Before和@After注解,其中@Before在测试执行前进行,@After在执行后进行。可以被设置为任意的正整数,而且它们代表一个合理的毫秒形式的时间段。如果进行了增删改的操作,数据库的内容发生更改,本地缓存也一定会变化,否则就会查找到错误的信息。可以被设置为任意正整数,要记住缓存的对象数目和运行环境的可用内存资源数目。一级缓存中缓存的是对象,二级缓存缓存的是数据,不是对象。,这样,在第二次调用该sql语句时,即可直接调用缓存。按对象进入缓存的顺序来移除它们。
2024-12-13 20:53:01 583
原创 MyBatis事务
MyBatis框架中的事务默认是手动提交的,也就是每次编写程序都需要调用commit()方法提交事务。举个例子,张三给李四转账,在数据库中,这个动作我们要执行两个sql语句,当事务出现问题时,我们应该立即回滚到之前的状态。用try catch。update 张三——set money=-100。update 李四——set money=100。一致性、持久性、原子性、隔离性。这两条SQL语句必须同时成功或失败。
2024-12-13 20:32:49 143
原创 MyBatis——多对多懒加载
在MyBatis中,多对多关系通常通过中间表(也称为关联表或连接表)来实现。懒加载(Lazy Loading)是一种策略,它允许你在实际需要数据时才从数据库中加载它们,而不是在初始化时就加载所有数据。这可以显著提高性能,特别是当处理大量数据时。MyBatis支持懒加载,并且可以在配置中轻松启用。
2024-12-13 16:25:33 487
原创 Tomcat原理(1)——IDEA实现模拟服务端和客户端的互传
Tomcat是一个开源的Java Web应用服务器,主要用于运行Java编写的网站和Web应用程序。实质上可以理解为是一个容器,一个用于承载项目的容器。tomcat有什么作用,最基础来讲,当我们创建一个文件,当http访问时,该文件是无法访问的。但我们把这些文件放入tomcat中,Tomcat可以接收和反馈外部的请求,并且也可以将用户的HTTP请求传递给容器做业务处理,最后将容器处理后的结果响应给外界。
2024-12-10 15:07:15 990 10
原创 MyBatis关联映射
MyBatis关联注解是在使用MyBatis进行数据库操作时,用于处理对象之间关联关系的注解。这些注解使得开发者可以更加灵活地处理数据库中的关联数据,而无需编写复杂的XML映射文件。二、数据库建表。
2024-12-09 11:15:00 1273 14
原创 MyBatis注解开发
注解开发通常指的是在编程中使用注解(Annotation)的开发方式。注解是一种为程序代码添加元数据(metadata)的方式,提供了关于代码的额外信息,用于告诉编译器、解释器或其他工具如何处理被注解的代码。注解方式比较简单,但是实际开发不推荐使用注解,使用配置文件的方式,不需要改源代码。二、SQL常用注解@Insert:添加@Update:修改@Delete:删除@Select:查询@Result:实现结果集封装@Results:可以和@Result一起使用,封装多个结果集。
2024-12-07 10:54:18 921 2
原创 SSM——MyBatis动态SQL
动态SQL指在不同条件下做对sql语句的拼装。根据不同情况,去拼接不同的SQL语句。Mybatis框架的动态sql技术是一种根据特定条件动态拼接SQl语句的功能,他存在的意义是为了解决拼接SQL语句字符串时的痛点问题。比如我们在用淘宝之类的软件在进行商品属性选择的时候,我们会发现我们可以选择的商品的属性有很多条件,其中一些条件可以选择也可以不选择,那么如果使用传统的方式进行查询,反而在拼接sql的时候会造成一些列的问题。
2024-12-06 21:11:48 1053
原创 Java基础——反射
一、反射的定义反射机制的功能极其强大,在下面可以看到,反射机制可以用来:在运行时分析类的能力。在运行时查看对象, 例如, 编写一个 toString 方法供所有类使用。实现通用的数组操作代码。利用 Method 对象, 这个对象很像C++中的函数指针。
2024-12-04 15:54:21 817 5
原创 Java基础——包装器和自动装箱&参数数量可变&枚举类
自动装箱规范要求 boolean、byte、char 127, 介于 -128 ~ 127 之间的 short 和 int 被包装到固定的对象中。返回用 s 表示的整型数值进行初始化后的一个新 Integer 对象, 给定字符串表示的是十 进制的整数(第一种方法,) 或者是 radix 参数进制的整数(第二种方法)返回字符串 s 表示的整型数值, 给定字符串表示的是十进制的整数(第一种方法,) 或者是 radix 参数进制的整数(第二种方法。返回数值 i 的基于给定 radix 参数进制的表示。
2024-12-04 13:32:30 730
原创 LeetCode1556. 千位分隔数 && LeetCode9. 回文数
是为了处理奇数长度的回文数,因为反转后的数字在中间位会多出一个不必要的0(例如12321反转成123210后再除以10得到12321),所以需要去掉这个多余的0再进行比较。的数字长度为奇数时(例如12321),反转后的数字(例如12321的反转是12321,但中间位数字在反转过程中被重复计算了一次),我们需要通过。,请你每隔三位添加点(即 "." 符号)作为千位分隔符,并将结果以字符串格式返回。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。来进行整数到字符串的转换。是一个回文整数,返回。
2024-12-03 21:39:16 968
原创 Linux——基础命令(3)
locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。tar 是 Linux 中最常用的 备份工具,此命令可以 把一系列文件 打包到 一个大文件中,也可以把一个 打包的大文件恢复成一系列文件。find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。which命令的作用是在PATH变量指定的路径中,在不同操作系统中,常用的打包压缩方式是不同的选项 含义。打包压缩 是日常工作中备份文件的一种方式。打包并压缩的文件:.tar.gz。
2024-12-03 20:46:38 988
原创 数据结构——有序二叉树的删除
在上一篇博客中,我们介绍了有序二叉树的构建、遍历、查找。数据结构——有序二叉树的构建&遍历&查找-CSDN博客因为数据的类型决定数据在内存中的存储形式。left right示意为左右节点其类型也为TreeNode,用于接受后续一系列操作,保持了结构的一致性。为什么left和right的类型为TreeNode?我们采用递归的方式实现。我们创建一个test类。这篇博客我们来介绍一下有序二叉树的删除。
2024-12-03 19:42:58 974
原创 SSM框架——Mybaits实现增删改查
上一篇博文我们简单讲述了一个如何配置MybatisSSM搭建(1)——配置MyBatis-CSDN博客JDBC(Java Database Connectivity)是Java编程语言中用于访问关系型数据库的标准应用程序接口(API)。它由一组用Java语言编写的类和接口组成,定义了一套标准的接口,使得Java程序可以通过统一的方式连接、访问、操作不同的关系型数据库。新建项目选择【Maven】——选择默认SDK——【下一步】创建完成,让maven加载导入,如图加载完成。
2024-12-01 01:17:38 922 7
原创 数据结构——有序二叉树的构建&遍历&查找
因为数据的类型决定数据在内存中的存储形式。left right示意为左右节点其类型也为TreeNode,用于接受后续一系列操作,保持了结构的一致性。为什么left和right的类型为TreeNode?我们采用递归的方式实现。我们创建一个test类。
2024-11-30 22:13:43 829 2
原创 SSM搭建(1)——配置MyBatis
JDBC(Java Database Connectivity)是Java编程语言中用于访问关系型数据库的标准应用程序接口(API)。它由一组用Java语言编写的类和接口组成,定义了一套标准的接口,使得Java程序可以通过统一的方式连接、访问、操作不同的关系型数据库。新建项目选择【Maven】——选择默认SDK——【下一步】创建完成,让maven加载导入,如图加载完成。
2024-11-29 21:24:34 1013 1
原创 Java基础——泛型(3)#HashMap泛型
也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。特别是它不保证顺序会随着时间的推移保持不变。如果您需要保持插入顺序,请使用。HashMap 最早出现在 JDK 1.2中,底层基于散列。(2)jdk8中的HashMap基于数组+链表+红黑树实现。(1)是一个key-value的映射容器,key不重复。(5)非线程安全,多线程环境下可能存在问题。(3)不保证键值的顺序。输出的顺序可能与插入的顺序不同,HashMap 本身无序。
2024-11-29 19:55:56 746
原创 Java基础——泛型(2) # Integer-128陷阱
在上一篇博客里解释了什么是泛型的定义,本篇笔记来更进一步的介绍泛型的内容。Java基础——泛型定义是Java编程中的一个常见现象,主要涉及Integer类型的自动装箱、拆箱以及对象比较。
2024-11-29 19:25:32 736
原创 Linux——基础命令(2) 文件内容操作
在普通模式中,i,a,o即可进入输入模式,Esc返回普通模式。其中,进入vim即在普通模式,普通模式为其他几个模式切换的。grep 允许对文本文件进行 模式查找,所谓模式查找,又被称为正则表达式。4. cw:替换一个单词,即删除一个单词,并进入插入模式。1. x:向后剪切一个字符,如果是在行尾,则为向前剪切。3. cc:替换整行,即删除游标所在行,并进入插入模式。7. Ctrl+r:redo,即撤销undo的操作。cat 会一次显示所有的内容,适合 查看内容较少 的文本文件。
2024-11-28 23:37:01 1093
原创 Linux——基础命令(1)
它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。其功能为更改当前的工作目录,也是用户。mv 命令可以用来 移动 文件 或 目录,也可以给 文件或目录重命名。新建目录的名称 不能与当前目录中 已有的目录或文件 同名。Linux 所有的 目录 和 文件名 都是大小写敏感的。在输入路径时,最前面是 / 或者 ~,表示从。如果文件 已经存在,可以修改文件的末次修改日期。的前几个字母之后,按下 tab 键 。cp 命令的功能是将给出的。
2024-11-26 21:23:52 1116
原创 Java基础——泛型
泛型(Generics)是一种在编程时定义函数、类或接口时不具体指定将要操作的数据类型的方法。通过使用泛型,可以编写出更加通用、灵活且类型安全的代码。泛型允许在编译时进行类型检查,从而减少运行时错误,并提高了代码的可重用性和可读性。泛型就好比是给一个标签,就拿数组的泛型举例来说,我们把数组比作一个药瓶子,我们药瓶子贴上了什么标签,就放什么药,如果不管什么药都放在一个药瓶子里,那不得出大事吗?同样容器写上什么泛型,就存放什么数据;
2024-11-25 12:05:36 1204
原创 LeetCode:1207.独一无二的出现次数——Java哈希表
遍历原始数组需要 O(N) 时间,而遍历中间过程产生的哈希表又需要 O(N) 的时间。在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。如果不同的出现次数的数目等于不同数字的数目,则返回 true,否则返回 false。如果它们的大小相等,说明每个元素的出现次数都是唯一的,方法返回。键是数组中的元素,值是该元素出现的次数。随后再利用新的哈希表,统计不同的出现次数的数目。的每个条目(即每个元素及其出现次数),将出现次数(值)添加到。,如果每个数的出现次数都是独一无二的,就返回。
2024-11-23 23:13:00 464
原创 Java基础——类型转化(强制转化)
显式类型转换发生在程序员需要将一个较大的数据类型转换为较小的数据类型时,或者在不兼容的类型之间进行转换时。指的是将父类类型的对象引用强制转换为子类类型的对象引用。这种转换是有风险的,只有在确保父类对象实际指向的是子类实例时,才能安全地进行。隐式类型转换发生在较小的数据类型被赋值给较大的数据类型时,Java编译器会自动处理这种转换,而不需要程序员显式地指定。向下转型常用于多态性场景中,当你想调用子类特有的方法或访问子类特有的属性时,就需要将父类引用转换为子类引用。(2)显式类型转换(强制类型转换)
2024-11-20 16:49:14 631
原创 操作系统——进程与进程管理(含思维导图)
进程是为了并发执行而产生的概念 ,进程是资源分配 的基本单位。一个进程包含:程序段、数据段、进程控制块(PBC)
2024-11-18 19:23:05 487 1
原创 操作系统——死锁、预防避免死锁
死锁是指在执行过程中,两个或两个以上的进程(或线程)由于竞争资源或彼此通信而阻塞,导致无法继续执行的情况。如果没有外部干预,这些进程将无法向前推进,系统处于死锁状态。这些相互等待的进程被称为死锁进程。
2024-11-18 16:20:12 494
原创 Java基础——继承和多态
继承是面向对象编程中的一种机制,它允许一个类继承另一个类的属性和方法。通过这种方式,子类可以复用基类的代码,避免重复编写相同的代码。其中——父类又叫超类、基类。子类又叫派生类。
2024-11-18 13:33:22 964
原创 版本控制【Git Bash】【Gitee】
版本控制(Revision control 或 Version control)是软件配置管理的一项核心内容,是对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理活动。
2024-11-18 01:12:39 1328
原创 数据库——索引机制
哈希索引基于哈希表实现,哈希表是一种通过哈希函数将键值映射到特定位置的数据结构。对于数据库中的每一行数据,存储引擎都会对所有的索引列计算一个哈希码(Hash Code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。
2024-11-17 21:30:56 541
原创 Java基础——构造器&对象初始化块
方法的重载(Method Overloading)是面向对象编程中的一个重要概念,它允许在同一个类中定义多个同名的方法,但这些方法的参数列表(参数的数量、类型或顺序)必须不同。第一个对象产生的时候触发的,且仅由类的第一个对象触发 .静态的初始化是在第一个对象产生的时候触发的,且仅由类的第一个对象触发。我们看下面的例子,静态代码块的优先级>代码块和构造方法,当优先级相同时,按顺序执行。如下图,等号左边的为引用传递,等号右边的为值传递.换句话说,m1方法中如何写,上图的x1也不被影响。
2024-11-17 09:02:17 391
原创 LeetCode:448找到所有数组中消失的数字——Java哈希表&布尔数组
最直观的思路是使用哈希集合存储数组 nums 中出现的所有整数,然后遍历 1 到 n 的每个整数并判断是否在哈希集合中,如果一个整数不在哈希集合中则该整数是消失的数字,将该整数添加到结果中。中的数字,并以数组的形式返回结果。数组中对应索引位置的值设置为。如果某个索引位置的值是。中未出现,将其添加到结果列表。,则表示该索引(即数字)在。,表示该索引(即数字)在。
2024-11-16 00:49:04 494
原创 操作系统——虚拟存储器(含思维导图)
操作系统抖动通常是由于内存或资源不足导致的计算机活动异常,表现为程序执行缓慢甚至停滞。在虚拟存储系统中,过度的页请求操作是其典型特征。处理机的利用率急剧下降趋向于0,这些时间大部分用于页面的换进换出。产生抖动的原因根本原因是系统中进程的数量太多因此分配给每个进程的物理块数量较少。使得进程运行时平凡的发生缺页中断。
2024-11-15 20:20:13 1254
原创 后端——接口文档(API)
全称为应用程序编程接口(Application Programming Interface)文档,是详细阐述特定软件应用程序或Web服务所开放接口的具体使用指南。这份文档为开发者提供了与这些接口进行交互的详细信息和规则,确保他们能够有效地利用这些接口来集成、扩展或与其他软件系统进行通信。这是登录部分注册功能的API文档。我们会发现文档中声明了某功能的一系列要求,包含作用,请求方式,路径,入参(包括类型和是否必有),出参和数据样本等等。如何进行某个操作,API里写明这些方法的要求与参数,至于底层如何运行。
2024-11-15 16:31:29 652
原创 Leetcode:118. 杨辉三角——Java数学法求解
的实例,但有一个重要的点需要注意。(initial capacity),而不是列表的。空间复杂度:O(1)。不考虑返回值的空间占用。生成「杨辉三角」的前 numRows。时间复杂度:O(numRows2)。给定一个非负整数 numRows。,这个参数指定了列表的。
2024-11-14 22:44:29 462
原创 Java基础——预定义类/自定义类&封装&什么是Final类型
例如:Math类、Date类、ArrayList类。这些都是java经典的类,称为预定义类(预定义类是指由编程语言的标准库或第三方库已经定义好的类。)与之相对应的是用户自定义类i<value;i++) {}else {=1) {效果图如下:一个class类文件中可以有多个类,但是只能有一个public类型的。//一个文件里可以有多个类,但是只能有一个类是publicname=n;salary=s;
2024-11-14 21:52:42 564
原创 Java——认识多线程
等CPU空闲后再执行,在操作系统的任务调度中,和人交互的进程优先级很高。每个线程是程序的一个执行单元,它包含了一系列的指令,这些指令在程序的上下文中被顺序执行。多线程技术允许程序并发地执行多个任务,从而提高了程序的执行效率和响应速度。并发(Concurrency)是指在计算机系统中,能够同时执行多个任务或操作的能力。在共享的变量中,基本类型不能更改,引用类型相当于被final修饰的变量——不可以第二次改变指向。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
2024-11-12 16:40:50 236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人