自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis简介

iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。③MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库对象。①MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。④基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。②维护不易且实际开发需求中SQL有变化,频繁修改的情况多见。③代码冗长,开发效率低。

2025-07-16 20:01:50 293

原创 MyBatis基本使用

pageNum:当前页的页码pageSize:每页显示的条数size:当前页显示的真实条数total:总记录数pages:总页数prePage:上一页的页码nextPage:下一页的页码isFirstPage/isLastPage:是否为第一页/最后一页hasPreviousPage/hasNextPage:是否存在上一页/下一页navigatepageNums:导航分页的页码,[1,2,3,4,5.....]

2025-07-16 19:59:14 811

原创 设置log4j.xml日志

2.在src/main/resources目录下存放log4j.xml文件。1.先在pom.xml文件中导入相应的jar包。从左到右打印越来越详细。

2025-07-15 15:15:54 122

原创 搭建MyBatis框架的注意事项

1.mapper中的方法调用除了使用 mapper.方法名 的方式还可以使用 sqlSession.操作类型("namespace.sqlid") 的方式来调用。MySQL 8版本使用dbc8驱动,驱动类使用:com.mysql.cj.jdbc.Driver。例如:表tb_user,映射的实体类为User,所对应的映射文件为UserMapper.xml。②mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致。也就是说mapper接口的名称要和映射文件的名称一样。

2025-07-15 15:13:23 180

原创 Maven版本管理、资源配置和多环境配置

项目开发到进入阶段的里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构建文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本。①项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时间更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)⑤里程碑版本:表明一个版本的里程碑(版本内部)。②主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代。①<主版本>.<次版本>.<增量版本>.<里程碑版本>

2025-07-15 15:10:00 488

原创 Maven聚合、继承和属性

3.注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关。①作用:使用Maven配置文件setting.xml中的标签属性,用于动态配置。①作用:使用Maven配置文件setting.xml中的标签属性,用于动态配置。在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本。Maven中的继承与Java中的继承相似,在子工程中配置继承关系。①聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些。②继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己。

2025-07-15 15:09:07 213

原创 Maven分模块开发与设计

④修改web.xml配置文件中加载spring环境的配置文件名称,使用*通配,加载所有applicationContext-开始的配置文件。④修改service模块spring核心配置文件名,添加模块名称,格式:applicationContext-service.xml。⑤修改dao模块spring核心配置文件名,添加模块名称,格式:applicationContext-dao.xml。②配置文件:保留与表现层相关的配置文件(1个)、服务器相关配置文件(1个)②配置文件:保留与数据层相关配置文件(3个)

2025-07-15 15:07:46 565

原创 Maven生命周期与插件

3.post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。1.插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能。3.post-clean:执行一些需要在clean之后立刻完成的工作。4.site-deploy:将生成的站点文档部署到特定的服务器上。1.pre-clean:执行一些需要在clean之前完成的工作。1.pre-site:执行一些需要在生成站点文档之前完成的工作。②default:核心工作,例如编译,测试,打包,部署等。①clean:清理工作。

2025-07-15 15:07:15 371

原创 Maven依赖管理

1.路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。1.依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围。2.声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。2.间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源。3.特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。排除依赖指主动断开依赖的资源,被排除的资源无需指定版本--不需要。带有依赖范围的资源在进行传递时,作用范围将受到影响。

2025-07-15 15:06:42 256

原创 Maven的概念和作用

①groupid:定义当前Maven项目隶属组织的名称(通常是域名反写,例如:org.mybatis)2.依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题。①本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源。注意:中央仓库中的jar都是开源的,不能存储具有版权的资源。1.项目构建:提供标准的、跨平台的自动化项目构建方式。②远程仓库:非自己电脑上的仓库,为本地仓库提供资源。中央仓库:Maven团队维护,存储所有资源的仓库。3.统一开发结构:提供标准的、统一的项目结构。

2025-07-15 15:05:58 297

原创 Git远程仓库

A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,命令:git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名]]①如果远程分支名和本地分支名称相同,则可以只写本地分支:git push origin master。远程分支和本地分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,②如果不指定远端名称和分支名,则抓取所有并更新当前分支。

2025-07-15 11:51:58 522

原创 Git分支常用命令

是从master创建的分支,一般作为开发部门1的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改,开发新的功能,以免影响开发主线。从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;一个分支上的提交可以合并到另一个分支。

2025-07-15 11:51:03 287

原创 Git常用指令

在这种情况下,我们可以在工作目录下创建一个名为.gitignore的文件(文件名称固定),列出要忽略的文件模式。Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。③--abbrev-commit 使得输出的commited更简短。2.命令形式:git reset --hard commitID。2.git commit (暂存区 --> 本地仓库)1.git add (工作区 --> 暂存区)1.作用:查看修改的状态(暂存区、工作区)

2025-07-15 11:49:44 220

原创 Vue简单学习

2.基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。1.指令:HTML标签上带有v-前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for...1.Vue是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子)mounted:加载完成,Vue初始化完成,HTML页面渲染成功。条件性的渲染某元素,判定为true时渲染,否则不渲染。

2025-07-15 11:46:45 230

原创 二叉树的深度优先遍历(DFS)和广度优先遍历(BFS)多种实现方法

【代码】二叉树的深度优先遍历(DFS)和广度优先遍历(BFS)多种实现方法。

2024-07-22 16:54:27 383

原创 Listener和AJAX

1.概念:AJAX(Asynchronous JavaScript And XML):异步的JavaScript的XML2.AJAX作用:①与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面了②异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等...

2024-02-09 13:04:35 839

原创 会话跟踪技术和Filter

1.会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应2.会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便同一次会话的多次请求间共享数据3.HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享4.实现方式:①客户端会话跟踪技术:Cookie②服务端会话跟踪技术:Session。

2024-02-09 12:56:16 1016

原创 JSP学习

4.JSP在被访问时,由JSP容器(Tomcat)将其转换为Java文件(Servlet),在由JSP容器(Tomcat)将其编译,最终对外提供服务的其实就是这个字节码文件。一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容兼容,还可以定义Java代码的动态内容。②<%=...%>:内容会放到out.print()中,作out.print()的参数。3.复杂度高:运行需依赖于各种环境,JRE,JSP容器,JavaEE...3.表现层:接受请求,封装数据,调用业务逻辑层,响应数据。

2024-02-02 18:29:57 482

原创 Request(请求)&Response(响应)

String[] getParameterValues(String name):根据名称获取参数值(数组)req.getRequsetDispatcher("资源B路径").forward(req,resp);Map<String,String[]> getParameterMap():获取所有参数Map集合。String getParameter(String name):根据名称获取参数值(单个值)1.请求转发(forward):一种在服务器内部的资源跳转方式。

2024-02-02 15:19:27 769

原创 HTTP和Servlet

②初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。2.Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet。③请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法请求进行处理。①加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象。

2024-02-02 15:18:42 970

原创 JavaScript学习

它的用法类似于var,但是所声明的变量,只在let关键字所在的代码块内有效,且不允许重复声明。(1)string:按照字符串的字面值,转为数字,如果字母值不是数字,则转为NaN,一般使用parseInt。一旦声明,常量的值就不能该变了。1.JavaScript是一门跨平台、面向对象的脚本语言,来控制网页行为的,它能使网页可交互。5.ECMAScript6(ES 6)是最新的JavaScript版本(发布于2015年)②===:判断类型是否一样,如果不一样,直接返回false,一样再去比较其值。

2024-02-02 15:15:49 370

原创 HTML和CSS的学习

(1)get(默认值):浏览器会将数据直接附在表单的action URL之后。①超文本:超越了文本的限制,比普通文本更强大。2.rgb(值1,值2,值3):值的取值范围:0-255 rgb(255,0,0)1.HTML是一门语言,所有的网页都是用HTML这门语言编写出来的。2.表单项(元素):不同类型的input元素、下拉列表、文本域等。(2)_blank:在空白页面打开(一般用于跳转外部网站):定义下拉列表,定义列表项。①src:规定显示图像的URL(统一资源定位符)

2024-01-27 14:11:39 941

原创 MyBatis的学习

openSession():默认开启事务,进行增删改操作后需要使用sqlSession.commit();建议:将来都使用@Param注解来修改Map集合中默认的键名,并使用修改后的名称来获取值,这样可读性更高!注意:数据库的表的名称 和 实体类的属性名称 不一样 则不能自动封装数据。(1)#():执行SQL时,会将#()占位符替换为?(1)框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。when相当于case;①起别名:对不一样的列名起别名,让别名与实体类的属性名一样。

2024-01-27 14:11:04 967

原创 MaVen的使用

1.通过设置坐标的依赖范围(scope),可以设置对应jar包的作用范围:编译环境、测试环境、运行环境。②提供了一套标准化的构建流程(编译,测试,打包,发布……②default:核心工作,例如编译,测试,打包,安装等。②如果没有则去中央仓库中下载对应的jar包到本地仓库。②在弹出的面板中搜索对应坐标,然后双击选择对应坐标。②中央仓库:由Maven团队维护的全球唯一的仓库。③远程仓库(私服):一般由公司团队搭建的私有仓库。①本地仓库:自己计算机上的一个目录。本地仓库->远程仓库->中央仓库。

2024-01-27 14:10:13 397

原创 JDBC的学习

如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?boolean next():(1)将光标从当前位置向前移动一行(2)判断当前行是否为有效行。如:int getint(参数);:不需要再传递sql。PreparedStatement对象:setXxx(参数1,参数2):给?返回值:(1)DML语句影响的行数(2)DDL语句执行后,执行成功也可能返回0。

2024-01-27 14:09:28 820

原创 MySQL读写分离

代表全部的readHost与stand by writeHost 参与select语句的负载均衡,简单的说,当双主从模式(M1->S1,M2->S2),并且M1与M2互为主备,正常情况下,M2,S1,S2都参与select语句的负载均衡;一个主机Master1用于处理所有写请求,它的从机Slave1和另一台主机Master2还有它的从机Slave2负责所有读请求。#mysql服务器ID,保证整个集群环境中唯一,取值范围:1 - 232-1,默认为1。#在作为从数据库的时候,有写入操作也要更新二进制文件。

2023-12-21 21:17:33 874

原创 MySQL分库分表

开启之后, MyCat会自动统计SQL语句的执行情况;mysql -h 127.0.0.1 -P 9066 -u root -p 查看MyCat执行的SQL, 执行效率比较低的SQL , SQL的整体执行情况、读写比例等;MyCat中的逻辑库的概念,等同与MySQL中的database概念,需要操作某个逻辑库下的表时,也需要切换逻辑库(use xxx)。在业务系统中,有一张表(日志表),业务系统每天都会产生大量的日志数据,单台服务器的数据存储及处理能力是有限的,可以对数据库表进行拆分。

2023-12-21 21:16:54 1287

原创 MySQL日志和主从复制

慢查询日志记录了所有执行时间超过参数long_query_time设置值并且扫描记录数不小于min_examined_row_limit的所有的SQL语句的日志,默认未开启。错误日志是MySQL中最重要的日志之一,它记录了当mysql启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。1.主从复制是指将主数据库中的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。②MySQL的主从复制。上述是8.0.23中的语法。

2023-12-21 21:16:21 1035

原创 MySQL管理

-add-drop-table 在每个表创建语句前加上drop table 语句,默认开启;不开启(--skip-add-drop-table)-d,--database=name 指定数据库名称,只列出指定的数据库相关操作。-r,--result-file=name 将输出的文本格式日志输出到指定的文件。-t,-no-create-info 不包含数据表的创建语句。-e,--execute=name #执行SQL语句并退出。-n,--no-create-db 不包含数据库的创建语句。

2023-12-21 21:15:03 860

原创 InnoDB引擎

③Change Buffer:更改缓冲区(针对于非唯一二级索引页),在执行DML语句时,如果这些数据Page没有在Buffer Pool中,不会直接操作磁盘,而会将数据变更存在更改缓冲区Change Buffer中,在未来数据被读取时,再将数据合并恢复到Buffer Pool中,再将合并后的数据刷新到磁盘中。下面是InnoDB架构圈,左侧为磁盘结构。当业务操作的时候直接操作的是内存缓冲区,如果缓冲区当中没有数据,则会从磁盘中加载到缓冲区,增删改查都是在缓冲区的,后台线程以一定的速率刷新到磁盘。

2023-12-21 21:14:14 836

原创 触发器和锁

1.介绍:全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。为了避免DML在执行时,加的行锁与表锁的冲突,在InnoDB中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。two.InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,此时就会升级为表锁。InnoDB的数据是基于索引组织的,行锁是通过索引上的索引项加锁来实现的,而不是对记录加的锁。

2023-12-16 18:32:18 666

原创 存储过程和存储函数

1.存储过程是事先经过编译并1存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对提高数据处理的效率是有好处的。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其声明的BEGIN...END块中。用户自定义变量是用户根据需要自己定义的变量,用户变量不能提前声明,在用的时候直接用“@变量名”使用就可以。loop实现简单的循环,如果不在SQL逻辑中增加退出循环的条件,可以用其来实现简单的死循环。-- 查看指定变量的值;

2023-12-16 18:30:51 824

原创 MySQL视图

当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如插入,更新,删除,以使其符合视图的定义。1.视图是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。2.通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。CASCADED:级联,一旦选择了这个选项,除了会检查创建视图时候的条件,还会检查所依赖视图的条件。

2023-12-16 18:29:04 297

原创 SQL优化

1.Using filesort:通过表的索引或全表扫描,读取满足条件的数据行,然后噪排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫FileSort排序。没有not null约束:InnoDB 引擎会遍历整张表把每一行的字段值都取出来,返回给服务层,服务层判断是否为null,不为null,计数累加。页可以为空,也可以填充一半,也可以填充100%。2.InnoDB引擎就麻烦了,它执行count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。

2023-12-16 18:28:33 814

原创 MySQL索引

表示select的类型,常见的取值有simple(简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION中的第二个或者后面的查询语句)、SUBQUERY(SELECT/WHERE之后包含了子查询)等。②对于B+Tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加数的高度,导致性能降低;select查询的序列号,表示查询执行select子句或者是操作表的顺序(id相同,执行顺序从上到下;

2023-12-08 22:37:10 55

原创 MySQL存储引擎

如果应用对事务的完整性有比较高的要求,正在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。所有跨存储引擎的功能也在这一层实现,如过程、函数等。2.MyISAM:如果应用是以读操作和插入操作为主,只要很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。xxx.ibd:xxx代表的是表名,InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。

2023-12-08 22:34:46 37

原创 多表关系和事务

1.事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销请求,即这些操作要么同时成功,要么同时失败。3.幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了“幻影”。②关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率。2.注意:MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

2023-12-08 22:34:04 76

原创 函数和约束

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFRENCES 主表名(主表字段名) ON UPDATE 行为 DELETE 行为;ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)其他使用应该结合相对应的操作来进行。

2023-12-08 22:32:32 83

原创 数据库相关概念和SQL(DDL、DML、DQL、DCL)

一:数据库-存储数据的仓库,数据是有组织的进行存储-DateBase(DB)二:数据库管理系统-操纵和管理数据库的大型软件-DateBaase Management System(DBMS)三:SQL-操纵关系型数据库的编程语言,定义了一套操作关系数据库的统一标准-Structured Query Language(SQL)---------------------------------------------------------------------------------------

2023-12-08 22:30:36 209

原创 Java动态代理

1.对象如果嫌身上干的事太多的话,可以通过代理来转移部分职责。2.对象有什么方法想被代理,代理就一定要有对应的方法。一:程序为什么需要代理?3.通过接口来派代理。

2023-12-01 22:39:26 37

空空如也

空空如也

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

TA关注的人

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