- 博客(58)
- 收藏
- 关注
原创 第一次面试的问到的问题
答:https相比于http更加安全正确:答:静态语言是弱类型语言,在声明变量的时候不需要指定数据类型(说反了,弱类型语言是动态语言js,python)正确:答:对数据库的恶意攻击,在参数后面带上or 1=1,进行一些删除操作正确:答:用过事务,在spring中spring自动管理事务,通过增加@Transtational,让spring帮我们自动管理事务(说偏了)正确:答:用到过索引,对作为查询条件,分组条件的字段添加索引,对数据量少的字段不添加索引(说的有问题)答:没有了解过,正在学习springBoo
2025-11-10 20:39:03
737
原创 Redis进阶
布隆过滤是一种算法,底层使用BitMap来实现,也就是一个bit数组,用于快速判断一个元素是否在一个集合中优点:内存空间占用少,没有多余的key缺点:实现复杂,存在误差(数组越长,误判率越低)
2025-11-10 20:38:49
853
原创 Java并发编程
并发:同时有多个请求并发执行:在一个时间段内对多个请求依次执行并行执行:在一个时间点上,有多个任务同时执行并发编程:在用户高并发访问场景下(卖票,秒杀,抢购),我们要让程序并发执行本质解决的就是多线程对共享资源的访问出现的问题JMM为每个线程设置了内存(工作内存)作为高速缓存,导致的不可见性问题,编译优化带来的乱序性问题,线程切换带来的非原子性问题其实缓存、线程、编译优化的目的和我们写并发程序的目的是相同的,都是提高程序安全性和性能。
2025-10-28 20:30:38
754
原创 Java中的反射机制
Java反射机制是在运行时动态获取类信息并操作类成员的技术,核心是Class类。它通过Class.forName()、类名.class或对象.class三种方式获取Class对象,进而访问类属性和方法(包括私有成员)。反射被广泛应用于框架开发(如MyBatis数据自动映射),通过泛型实现动态对象创建和属性赋值。优点是提高程序灵活性和复用性,缺点是效率较低且可能破坏封装性,需谨慎使用私有成员操作。
2025-08-25 20:30:18
442
原创 SpringWeb详解
Spring Web是Spring框架中的Web模块,基于Servlet API封装开发。主要组件包括前端控制器、处理器、处理器映射器和适配器。常用注解有@RestController、@RequestMapping等,用于配置请求映射和参数绑定。接收请求支持四种方式:原生HttpServletRequest、自动封装参数、手动参数绑定以及实体类接收JSON数据。响应处理通过返回自定义Result对象实现,该对象封装状态码、消息和数据,框架会自动转为JSON格式返回前端。
2025-08-20 20:52:11
899
原创 搭建一个SpringBoot项目的流程
本文介绍了使用SpringBoot创建Java项目的步骤:1)创建Maven项目并导入SpringBoot依赖;2)配置pom.xml文件,包括父级工程、JDK版本、Web依赖和打包插件;3)创建启动类并添加@SpringBootApplication注解;4)配置application.yml文件,设置端口、数据库连接、MyBatis集成等;5)添加JDBC、MySQL驱动、MyBatis和Druid数据源依赖。文章详细说明了每个配置项的写法,帮助开发者快速搭建SpringBoot项目框架。
2025-08-20 20:06:10
259
原创 Spring框架-数据访问层和事务管理
本文介绍了Spring框架中数据访问层和事务管理的配置方法。在数据访问层方面,详细说明了如何通过Maven引入Spring JDBC、MyBatis、MySQL连接器等依赖,配置阿里Druid数据源,以及通过Spring管理数据库连接对象和SQLSessionFactory对象。在事务管理方面,对比了编程式事务和声明式事务的区别,重点讲解了基于AOP的声明式事务配置方法,包括事务管理器的配置、注解驱动的启用,并指出了@Transactional注解可能失效的四种场景(非public方法、异常被捕获、编译期异
2025-08-19 20:25:43
432
原创 Spring AOP核心原理与实战指南
AOP(面向切面编程)是OOP的延续,通过动态代理实现业务与非业务逻辑分离,降低耦合度。核心概念包括连接点、切入点、通知等。Spring框架整合AspectJ实现AOP,支持5种通知类型:前置通知(@Before)、后置通知(@After)、返回通知(@AfterReturning)、异常通知(@AfterThrowing)和环绕通知(@Around)。环绕通知可整合其他四种通知功能,通过ProceedingJoinPoint控制目标方法执行流程。AOP常用于事务处理、权限控制、日志记录等场景,提高代码复用
2025-08-19 19:43:29
342
原创 Sring框架-IOC篇
摘要:Spring是一个轻量级Java开发框架,提供IOC(控制反转)和AOP(面向切面编程)功能。IOC通过Spring管理对象生命周期,AOP则补充面向对象编程。配置Spring可通过XML或注解方式:XML需定义bean标签并设置作用域(singleton/prototype),支持setter或构造器注入;注解方式需开启扫描并添加@Component等注解。两种方式都能实现对象管理和依赖注入,简化企业级应用开发。
2025-08-18 19:59:50
986
原创 Tomcat服务器
本文介绍了服务器的基础概念及前后端交互原理,详细讲解了Tomcat服务器的安装配置流程。内容包括:从官网下载Tomcat、设置JAVA_HOME环境变量、在IDEA中创建JavaEE项目并配置Tomcat服务器,以及通过startup.bat启动服务。最后说明了如何通过浏览器访问127.0.0.1:8080测试服务器是否正常运行,其中8080是Tomcat的默认端口号。全文提供了完整的服务器搭建指导方案。
2025-05-27 19:10:40
334
原创 idea中使用Maven创建项目
Maven是一款Apache开源的Java项目管理工具,通过POM对象模型简化项目构建流程。它具有管理依赖资源、标准化项目流程和统一项目结构三大功能。核心概念包括仓库(本地/远程/中央)和坐标(通过groupId、artifactId等唯一标识jar包)。安装时需要配置环境变量和本地仓库,建议使用阿里云镜像加速下载。在IDEA中创建Maven项目时,需配置本地仓库路径和settings.xml文件,通过在pom.xml中添加dependency坐标即可自动下载所需资源。Maven有效解决了Java项目依赖管
2025-05-26 12:43:51
1314
原创 Vue-cli搭建项目
Vue-cli是Vue.js官方提供的脚手架工具,用于快速生成Vue项目模板,简化开发流程。使用Vue-cli前需安装Node.js和npm,Node.js是JavaScript的运行环境,而npm是Node.js的包管理工具。通过Vue-cli创建项目后,项目结构包括node_modules、public、src等目录,其中src目录包含应用的主要代码。在项目中,可以通过配置vue-router来管理路由,实现单页应用中的组件切换。创建并配置好项目后,通过npm run serve命令启动项目,检查是否搭
2025-05-20 17:51:25
1091
原创 Vue框架的基本介绍
Vue.js 是一款用于构建用户界面的渐进式 JavaScript 框架,专注于视图层,易于上手且能与现有项目无缝整合。它与 Angular.js 和 React.js 并称为前端三大主流框架。Vue 的优点包括体积小、效率高(基于虚拟 DOM 技术)、实现数据双向绑定、生态丰富且学习成本低。Vue 的搭建步骤包括下载 Vue.js 并在 HTML 文件中导入。Vue 的基本语法包括插值表达式(如 {{ message }})和指令(如 v-text、v-html、v-model、v-on、v-show、v
2025-05-13 19:31:05
1149
原创 JavaScript-基础语法
1.通过let关键字声明,对象里面可以有变量和方法2.this关键字代表当前对象注意:在使用箭头函数定义方法时,this关键字并不指向当前对象,指向的时当前对象的父级age:10,gender:'男',
2025-04-28 20:17:48
1157
原创 MyBatis框架—xml映射
当我们设计多表查询或关联查询时,表中含有相同的字段名或要进行关联查询时,MyBatis无法智能识别如何处理映射结果,就需要我们进行手动映射。
2025-04-21 19:05:21
542
原创 MyBatis框架
MyBatis是一款优秀的持久层(数据访问层)框架.MyBatis避免了JDBC代码手动设置参数以及手动获取结果集的操作,自动将ResultSet结果映射到对应的数据库表对象MyBatis可以使用XML或注解,将数据库中的记录映射成java对象就是将我们查询到的结果封装到我们与数据库表的对应对象的操作例如:在数据库中我们有一个学生表,我们用sql语句查询到一个学生,学生信息都保存在了ResultSet对象中,我们要将信息提取到我们对应的学生类中。
2025-04-18 18:49:39
1059
原创 java聊天室案例改进(建立与数据库的连接)
本篇博客在之前的聊天案例上加入了与数据库连接,将用户的账户和密码存储在数据库中,登录时验证用户是否创建账户,注册时验证用户是否创建已有账户。
2025-04-17 18:15:42
611
原创 Java语法篇—JDBC
1.简单来说jdbc就是java与数据库连接,是一种用于执行SQL语句的JAVA API2.由于市场上有很多不同的数据库,例如:mysql,SQLserve等等,如果每一种数据库都要JAVA官方来写对应的类或接口工作量很大,所以JAVA官方有了规范的JDBC接口,对应不同的数据库提供统一的方法,程序员只需要学习统一的方法,其他由数据库官方来写。
2025-04-16 20:19:41
1029
原创 蓝桥杯—数字接龙(dfs+减枝)
一看就是迷宫问题的变种,从左上角到达右下角,要解决1.8个方向的方向向量,用dx,dy数组代表方向向量2.要按照一个规律的数值串进行搜索0,1,2,k-1,0,1,2......,这个好实现只需要在dfs方法中加入一个下一个数值的参数搜索就行3.核心减枝:斜对角线不能交叉(本题难点),这里用了一个四维数组来标记走过的对角线(x,y)->(xx,yy)代表从对角线连线,mark[x][y][xx][yy],mark数组只用于记录对角线连线由下图可知:在判断是否能进行对角线连线时只需要检测mark[x][b][
2025-04-07 23:07:35
1178
5
原创 第15届蓝桥杯java-c组省赛真题
就是一道思维数学题,只有能找出规律就能写出来,找不到规律暴力求解只能通过30%,向这种大数据范围的数学题一般都有规律,我们先把满足题目要求的解小范围输出看看有没有什么规律,像这道题输出1000以内满足条件的数据就可以看出来只有是2的整数次幂的数字都不满足连续整数相加相等这个条件,所以只需要判断给的数据有多少个是2的整数次幂就可以。首先把1x1的方块转换为2x2的方块,然后算出所有的2x2的方块,只需要对这个值求根即可,因为数据过大,剩余的几个方块可以忽略不计,最后乘以2即可(因为方块边长为2)
2025-04-06 17:51:57
1245
原创 算法—博弈问题
1.前提:每一步都是最优解的情况下,先手的那个人已经确定了胜负用dp数组记录每一步操作后的结果,如果下一步会出现必输结果,那么说明执行这步操作的人必胜,因为必输结果的下一步操作后都是必胜的结果,所以在每一步操作都是最优解的情况胜负在第一步的时候已经确定了。
2025-04-06 17:10:36
318
原创 蓝桥杯——星际旅行(bfs+邻接表优化)
分析:只要是能传送过去并且传送次数不为0,就算可以到达,所以这里不能用dfs来,很明显的bfs算法,分层遍历,每一层会消耗一次传送次数,但是本题的数据过大,如果使用邻接矩阵来作为visited数组那么时间复杂度过高,只能通过部分测试用例1.使用邻接矩阵遍历传送阵时间复杂度为O(n),假如有50万个星球,那么就需要遍历50万次2.使用邻接表寻找传送阵时间复杂度为O(1)
2025-03-31 18:56:49
332
原创 蓝桥杯—最少操作数
bfs算法求最短路径问题时,需要记忆化搜搜原因1.迷宫:防止后来的路径覆盖最短路径2.本题:防止重复计算已经计算过的路径,减少时间复杂度本题需要大量减枝,因为每次操作变化小,这也是为什么不能用dfs的原因,dfs算法也可以求解,不过时间复杂度很高,递归太深入了,比如说1到10000会进行9999次递归,时间复杂度是指数级的。
2025-03-25 16:30:30
223
原创 蓝桥杯省赛—扫雷
分析:就是扫雷游戏规则,很简单的一道bfs题目,将地雷入队搜索周围就行,需要注意的是,要先将地雷的数值初始化为比最大数据加1的值,要不然会和地雷数量重复,处理起来优点麻烦。
2025-03-24 19:01:50
225
原创 蓝桥杯—草坪(模拟+bfs分层处理)
分析:一眼bfs向上下左右四个方向扩散生长,典型的bfs算法,这里需要注意的是需要分层处理。1.一开始分层处理的思路有问题,分层逻辑混乱。
2025-03-24 18:12:08
361
原创 蓝桥杯—迷宫(bfs)
1.mark数组即作为保存数据的数组也作为判断是否遍历过的数组,先将mark数组全部初始化为空,否则会出现空指针异常,如果mark数组不为空说明已经有路径访问过这个地方,数组中保存的是最短路径,因为第一次赋值的也就是层数最少的路径,注意题目中规定了访问路径数据,要确保方向向量正确。分析:最短路径问题,给定一个迷宫,从左上角走到右下角,要求路径最短,并且要求字典序最小,也就是按照D,L,R,U,的搜索顺序去搜索,否则路径不是唯一的,除非题目中说明了最短路径唯一。
2025-03-22 15:53:17
407
原创 蓝桥杯—开心(思维+dfs)
隐式的回溯了,这里只有一个usedK不需要进行显式回溯,参数传递就可以,因为每一个递归都可以看成一个单独的线程,是独立的,传入的是usedK+1没有实际的改变当前的usedK,只是参数传递。分析:给定一个整数,能在这个整数的任意数位插入加号构成一个表达式,求这个表达式的最大值和最小值,那就暴力搜索所有可能结果,求出最大值和最小值。1.在dp和dfs求极值时,对初值进行极值化,让max最小,min最大,确保没有比min小的,没有比max大的。3.为什么没有回溯usedK?
2025-03-22 12:22:25
365
原创 蓝桥杯国赛—最大数字(dfs+贪心)
2.每一位数一定是有三种操作,加法,减法,不操作,dfs就是遍历所有可能,贪心算法减少了树的宽度,算是优化,所以有几种可能就需要几次递归,但需要注意回溯。首先要定义一个数组来存储每一位数,那我们肯定首先想到贪心算法,保证前几位数最大就可以。分析:给了一个整数n,能对其每一位数进行加或减操作,最后求最大的结果。1.没对最后一位进行操作。
2025-03-20 18:21:46
370
原创 数据库—sql语法基础
sql语言是一种数据库程序设计语言,用于存取数据以及查询,更新和管理关系数据库的语言DDL语言是用于创建和修改数据库表结构的语言DDL也叫数据操纵语言,专门用来处理数据。
2025-03-18 19:29:50
1421
原创 蓝桥杯——车牌(dfs全排列问题)
分析题目:要求6个位置,每个位置放一个数,不能连续三位相同,这些为约束条件也就是减枝函数的内容,最常规的dfs排列问题,只要减枝写对没什么问题。1.把题目中后三位只能是0-9忘记了 导致组合情况出错 粗心问题。
2025-03-16 18:46:27
229
原创 N皇后问题——dfs解法(回溯+减枝+深搜)
既然它落子没有规律,只有位置有约束条件,那么我们就可以根据位置来考虑,不能同一行,同一列,同一对角线,那么我们就可以一行下一个,然后判断同一列,同一对角线是否有棋子,同理按其中三个随便一个约束条件来进行搜索,只需要满足其他两个约束条件就可以。这是一道很经典的题,首先分析一下题目,就是在棋盘上下棋,但是同一行,同一列,对角线上不能有棋子,否则无法落子,那这些信息也就是约束条件,模拟这些信息就是减枝函数的内容。5.一开始的逻辑思考方向有问题,题目只给了约束条件,应该从约束条件进行思考,而非落子规律。
2025-03-16 16:37:00
405
原创 蓝桥杯国赛—1022玩具蛇
本题为一道程序填空题,要求我们将一个4*4的盒子填满,实际上就是遍历一个4*4的矩阵的所有可能路径这道题用bfs和dfs都可以,博主这里用的是dfs,用dfs找所有可能路径就需要在递归里进行回溯。一开始将减枝语句放在了sum++后面,导致将不符合条件的路径也计算了进去。四.第一次做时错误原因。
2025-03-16 14:50:27
249
原创 Java课设—聊天室(附带整套代码)
这里将accept写入死循环当中是因为,要持续监听是否有新的客户端,如果监听到了客户端就将他们加入arrayList中,arrayList当中每一个元素都Socket对象。这里必须将服务端监听消息写入线程中,其一是一个类中最多只能有一个死循环,其二,每一个连接到服务器端的客户端都需要被监听。包含:java基础语法,异常处理,IO流,网络编程,多线程,GUI界面,内部类,匿名类等,由于整体流程过大,我们进行分步编程,通过完成一步一步小任务,最后完成整个任务。显示在线人数,发布同告,查询聊天记录。
2025-03-13 20:07:09
1232
原创 力扣—79单词搜索(回溯算法)
1.一开始错误在于将dfs返回值定义为int类型,定义为int是因为index是基本数据类型,无法在传参过程中改变index的值,后面想着用int作为返回值,又犯了一个错,在递归回溯过程中,有可能没有递归到最后一个结果就提前return了。首先定义方向向量,来进行上下左右四个方向的搜素,遍历整个二维数组,如果对应的下标是单词的首个字母,那么就进行dfs遍历从当前位置的所有可能。4.参数的传递,像递归这种操作,最好将参数传递进行,不要使用全局变量,很容易在递归中发生错误,很难找。
2025-03-13 19:25:54
414
原创 蓝桥杯省赛—dfs算法
不要被“要崇拜的对象一定要坐在我们的右手边迷惑了”,什么时候能围城一个圈呢,只有当最后一个人与我们起始的那个人是一个人时才能围成一个圈,所以我们的输出判断语句条件也就是这个,并且只有当当前围成圈的个数大于我们记录的最大个数时才继续赋值。我们很容易想到对每一种可能进行枚举来解决这道题,那么dfs算法不就是通过回溯枚举出每一种可能的算法吗。3.判断递归位置来进行回溯,注意回溯一定是在递归语句的上面。2.设置得到答案的语句,这一步我觉得也是最困难的一步。回到这道题本身,要求我们找出能围城全的最大个数。
2025-03-08 18:57:15
341
原创 蓝桥杯java-B组真题—动态规划
可以通过暴力循环算出,但是我们每一次循环都需要重复计算当前第i个元素之前有多少种符合要求的子集,这样时间复杂度肯定是不能通过了,思考到这里我们就知道这道题可以使用动态规划的思想去解决,用一个数组来记录第i个元素前有多少种符合要求的子集,然后去思考之前的结果加上第i个元素会有什么变化,写出状态方程这道题目就解决了。通过题目我们可以知道是要求计算有多少子集,补集之和是偶数的问题,首先我们就需要考虑什么情况下子集,补集之和可以是偶数。集合本身之和为偶数说明集合中要么没有奇数,要么奇数个数为偶数。
2025-03-07 15:12:59
562
原创 JavaSE语法笔记
IO 中就提供了对象输入,输出流。方法的重写不能对构造方法,静态方法进行,方法的重写必须与父类方法的方法名,参数列表,返回值相同,子类重写的方法权限不能小于父类的方法权限,重写的方法需要与父类结构保持一致,访问权限不一样,大于等于父类权限。当子类与父类的方法实现不同时,可以在子类中对父类的方法进行重写,父类中的方法不能满足子类的需求时,可以在子类内部进行方法的重写,子类中的方法会覆盖父类中的方法但不会改变父类中的方法。对象是实际存在的,是类中的个体,对象是以类为模版,在内存中创建的一个实例。
2025-03-02 13:45:00
898
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅