自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 收藏
  • 关注

原创 搞懂Mybatis逆向⼯程这一篇就够了

MyBatis逆向工程(MyBatis Generator)是一个用于自动生成数据库表对应的实体类(Model)、数据访问对象(DAO)、SQL映射文件等代码的工具。它可以根据数据库中的表结构和配置文件生成相关的代码,减少手动编写重复性代码的工作量,提高开发效率。

2023-08-28 21:58:56 1082

原创 Mybatis中的缓存机制(一文带你弄懂)

缓存的作⽤:通过减少IO的⽅式,来提⾼程序的执⾏效率。缓存就是指存在内存中的临时数据,使用缓存能够减少和数据库交互的次数,提高效率。将相同查询条件的sql语句执行一遍后得到的结果存在内存或者某种缓存介质中,当下次遇到一模一样的查询sql时候不在执行sql与数据库交互,而是直接从缓存中获取结果,减少服务器的压力;

2023-08-27 22:10:05 1766

原创 七层、四层和五层网络模型区别和联系

五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是TCP/IP四层体系结构。而七层模型(OSI模型)则提供了一种更为细致的分层结构,用于理解和设计各个层次的功能和协议。总之,这三个模型都是为了帮助理解和组织网络通信而设计的,它们之间存在着一定的联系和演变关系,但各自强调的层次和细节不同。

2023-08-26 19:35:38 1276

原创 详解:Mybatis参数获取和动态SQL以及分页功能

如何通过mybatis通过参数传入来操作数据库,存在实体类的时候又该如何解决?mybatis的动态SQL又是什么?分页功能如何快速实现?相信你看了本篇文章会有一个清晰的认识。

2023-08-20 11:04:21 482

原创 Mybatis对参数的处理

使用MyBatis进行数据库操作的基本配置和代码编写步骤。首先在项目中导入相关依赖,包括MyBatis和MySQL驱动等。然后配置jdbc.properties文件,用于设置数据库连接信息。接下来是MyBatis的配置文件mybatis-config.xml,其中定义了一些常见的配置项,如是否将数据库中的下划线命名转换为驼峰命名、日志输出实现、类型别名等。然后编写实体类和接口文件,实体类用于映射数据库表,接口文件定义了数据库操作的方法。编写映射文件,其中定义了具体的SQL语句和参数的映射关系。然后通过测试类

2023-08-20 06:00:00 150

原创 一篇入魂,带你认识并使用Mybatis

核心是操作数据库的一个框架,底层 对JDBC进行了封装MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

2023-08-14 22:49:53 91

原创 合并两个有序链表(leetcode)

每次递归都会比较当前两个节点的值,选择较小的节点作为合并后的链表的下一个节点,并继续递归合并剩余部分。(等于情况谁都可以,这里判给(list2))每次递归都会比较当前两个节点的值,选择较小的节点作为合并后的链表的下一个节点,并继续递归合并剩余部分。(等于情况谁都可以,这里判给(list2))

2023-08-05 15:50:46 241

原创 删除注释(力扣)

设置一个值来记录是否在,注释代码块里面,这里是c,初始值为false。设置一个存储有效字符的StringBuilder对象sb,将有效字符追加到这里面。然后分类讨论,字符是否是有效字符:

2023-08-03 23:00:51 363

原创 翻转卡片游戏(力扣)

如果存在两面都是一样的,说明这个数字是肯定不能被选择的,因为不管你怎么样去翻转这张,另一面都是一样的值,当其他牌拥有一样的值时候,也是不行的,因为存在那么一张两面相同的牌。比如:fronts = [1,2,4,4,7], backs = [1,3,4,1,3],数组中的1和4就都不能选择。

2023-08-02 21:30:07 599

原创 使用数据库连接池C3P0(学会并使用数据库day11)

C3P0开源免费的连接池!目前使用它的开源项目有:Spring、Hibernate等。使用第三方工具需要导入jar包,c3p0使用时还需要添加配置文件c3p0-config.xml

2023-07-30 00:06:59 171

原创 使用数据库连接池DBCP(学会并使用数据库day10)

其实就是一个容器(集合),存放数据库连接的容器。当系统初始化后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池。

2023-07-30 00:06:27 319

原创 搞懂表与类的关系(学会并使用day9)

①整个表可以当做是一个java类;②每一个表中的字段,当做是java类中的成员变量;③表的一行数据,当做是java类的一个实例对象。

2023-07-30 00:05:49 78

原创 搞懂JDBC操作数据库(学会并使用数据库day8)

JDBC 规范定义接口,具体的实现由各大数据库厂商来实现。概述:JDBC 是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用JDBC 接口中的方法即可,数据库驱动由数据库厂商提供。

2023-07-30 00:05:11 103

原创 事务和范式是什么(学会并使用数据库day7)

事务执行是一个整体,所有的 SQL 语句都必须执行成功。如果其中有 1 条 SQL 语句出现异常,则所有的 SQL语句都要回滚,整个业务执行失败。好的数据库设计对数据的存储性能和后期的程序开发,都会产生重要的影响。建立科学的,规范的数据库就需要满足一些规则来优化数据的设计和存储,这些规则就称为范式。

2023-07-30 00:04:36 45

原创 MYSQL视图和mysql触发器(学会并使用day6)

视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。触发器(TRIGGER)是由事件来触发某个操作。这些事件包括**insert语句、update语句和delete语句**。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。

2023-07-30 00:03:38 195

原创 多表查询(学会并使用day5)

如果使用的是inner join结果是没有运营部的,因为关于id为4的部门,并不存在 dept. id = emp. dept_id。ON,OUTER 可以省略,用左边表的记录去匹配右边表的记录,如。不使用右外连接,白骨精是显示不出来的,因为 id为五的白骨精不存在 dept. id = emp. dept_id。我们发现不是所有的数据组合都是有用的,只有员工表.dept_id = 部门表.id 的数据才是有用的。比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询。果符合条件的则显示;

2023-07-30 00:03:00 79

原创 数据库函数分类(学会并使用数据库day4)

数据库中,函数分为标量函数和聚合函数。

2023-07-30 00:02:32 119

原创 数据库表的约束(学会并使用数据库day3)

对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。

2023-07-30 00:01:50 153

原创 DML操作表和DQL查询表(学会并使用数据库day2)

DML操作表和DQL查询表

2023-07-25 22:17:31 192

原创 数据库概述和DDL语句(学会并使用数据库day1)

数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的的各种数据管理方式。数据库有多种类型,从最简单的存储有各种数据的表格到能够海量数据存储的大型数据库系统,都在各个方面得到了广泛的应用。

2023-07-25 22:14:49 181

原创 将数组和减半的最少操作次数(力扣)

因此用一个优先队列(大根堆)维护数组中的所有数,每次从优先队列中取出最大值,将其减半,然后将减半后的数重新放入优先队列中,同时更新减半和的值和temp,直到temp大于等于数组和sum的一半为止。每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半。每次操作,会将数组中的一个数减半。要求使得数组和,至少减少到一半的操作次数最少是多少,那么每次操作应该选择当前数组的最大值进行减半。将元素插入堆和删除堆顶元素的时间复杂度为O(logN),其中N是元素的数量。

2023-07-25 19:31:35 226

原创 2788. 按分隔符拆分字符串

我们遍历每一个字符串,通过substring截取一个字母然后来比较,我们需要维护两个指针,left和right初始为0,他们两个的中间就是一个一个拆分的答案,相等的时候我们更新指针right,并截取答案字符串,判断是否为空,不为则添加,然后把右指针的值赋值给left,继续遍历直到下一个分隔符。

2023-07-24 19:22:25 115

原创 经典面试题(力扣,接雨水)

我们需要维护一个到当前的前缀最大数组(当前元素的前缀最大的数字),和一个到当前的后缀最大数组(当前元素的后缀最大的数字)。

2023-07-23 22:30:17 299

原创 860. 柠檬水找零(力扣)

给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。·20美元,有两种找零方式:找零1张10美元+1张5美元;遍历结束,说明我们没有遇到无法找零的情况,返回true即可。·是5美元,直接收下;

2023-07-22 22:37:43 48

原创 918. 环形子数组的最大和(动态规划)

数组nums是一个环形数组,当最大子数组在内部时候,直接计算最大子数组和就行了,如果最大子数组在两端的时候,我们只需要转换计算最小子数组和就行了,因为:`两端的数组和+内部的数组和=总的数组和`我们只需要计算内部的最小子数组和,就可以让两端的子数组和达到最大子数组和,因为总的数组和是一个固定不变的数字。

2023-07-20 23:26:35 66

原创 字符串相加(力扣)

双指针方式

2023-07-17 18:45:59 417

原创 979. 在二叉树中分配硬币(力扣)

然后,返回当前节点也就是左右子树的父节点所形成的整个子树的硬币是多余的量还是不足的量,也就是加上左右子树的多余的量还是不足的量再加上当前节点硬币的数量减去减去自己一个节点数。那么返回给它的父节点也就是返回给值为1的节点,它左节点返回的是int[]{3,2},当遍历它右节点的时候,因为右节点是叶子节点且没有值,所以它所形成的子树总的硬币coins=0,节点node=1,返回数组为int[]{0,1},那么答案经过计算,值就为4。那么值为3的父节点,返回的数组是以它所形成子树的硬币数和节点数总值 ,

2023-07-14 19:06:55 399

原创 16. 最接近的三数之和(双指针+减去多余步骤)

当我们在遍历的时候,三数之和为,sum = nums[i]+ numsli]+ nums[k],判断sum是不是与target最近的数。使用双指针的方法我们要先对数组进行排序,使得它是有序的,在使用双指针时,更好的来控制哪一个指针移动。

2023-07-10 18:50:45 579

原创 单例模式(懒汉式和饿汉式)

单例模式是指保证某个类在整个软件系统中只有一个对象实例,并且该类仅提供一个返回其对象实例,由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显。

2023-07-09 21:32:32 389

原创 工厂模式(工厂方法和简单工厂模式)

第一:如果需求过多,会在构造函数中进行大量初始化的操作,导致代码过多可读性降低。第二:假如需要创建大量属性name='张三'的Student对象时,每次创建都会去设置属性值。按照实际生活中来说,如果某种东西需求达到一定程度时,就要施行量产,就需要工厂来实现此操作

2023-07-08 22:18:49 395

原创 167. 两数之和 II - 输入有序数组

定义两个指针i和j,分别指向第一个元素和最后一个元素。每次计numbers[i]+numbers[j],如果和等于目标值,那么返回[i+1,j+1]。如果和小于目标值,那么将i加1,如果和大于目标值,那么将j减1。

2023-07-08 12:10:45 275

原创 2178. 拆分成最多数目的正偶数之和

如果finalSum是奇数,那么无法拆分,直接返回空数组。若是偶数,我们按照2,4,6,…的顺序拆分finalSum,直到 finalSum无法拆分出不同的正偶数,此时我们将剩余的finalSum加到最后一个正偶数上,就可以得到我们的答案。

2023-07-06 10:55:29 53

原创 解决JD-GUI-1.6.6 中文乱码

在拖入java文件进行反编译时候发现中文出现了乱码。

2023-07-01 21:43:36 1413 1

原创 搞懂反射我建议选这篇

Reflection(反射) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查。被private封装的资源只能类内部访问,外部是不行的,但反射能直接操作类私有属性。反射可以在运行时获取一个类的所有信息,(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。通俗点总结就是不通过创建对象的方式来访问类的属性,并且能够访问private修饰的属

2023-07-01 12:02:14 175

原创 1253. 重构 2 行二进制矩阵(力扣)

遍历到的元素colsum[i],我们有以下几种情况:如果colsum[j]=2,那么我们将ans[0][j]和ans[1][j]都置为1。如果colsum[j]=0,那么我们将ans[0][i]和ans[1][j]都置为0。如果colsumli]= 1,先满足第一行为1,满足完后剩下的都是另一行的。之后需要判断, 计算每一行的总和,看是否满足条件与upper和lower相等。

2023-06-30 11:26:06 494

原创 掌握IO流这一篇就够了

我们把数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output ,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用 java.io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。

2023-06-29 11:35:05 56

原创 IO流学习File类这个就够了

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File类的一个对象,代表一个文件或一个文件目录

2023-06-28 10:54:01 110

原创 掌握多线程的用法一篇就够了

随着调用mt的对象的start方法,另外一个新的线程也启动了,这样,整个应用就在多线程下运行。一个调用了某个对象的 Object.wait 方法的线程会等待另一个线程调用此对象的Object.notify()方法 或Object.notifyAll()方法。线程A与线程B代码中使用同一锁,如果线程A获 取到锁,线程A进入到Runnable状态,那么线程B就进入到Blocked锁阻塞状态。优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性)Java使用的为抢占式调度。

2023-06-27 11:10:27 72

原创 string小知识

常量+常量在常量池中生成新的字符串变量+变量在堆中生成新的字符串

2023-06-09 00:34:18 25

原创 力扣LCP 33. 蓄水

给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。

2023-05-22 19:37:49 438

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除