- 博客(49)
- 资源 (8)
- 问答 (2)
- 收藏
- 关注

原创 SSM整合项目-书籍管理系统
整合SSM项目前言终于走到这一步了,整合SSM也就是代表着学完了spring,springmvc还有mybatis,虽说是学完了,但是其中的深奥原理还是一知半解,但是最起码会用了,这也是个好的开端吧!今天特地来写一篇博客拿来练练手,整合一下SSM框架,整合完以后就可以进军SpringBoot了,哇咔咔,坎坷啊!接下来我们就来看一下这个项目,书籍管理项目,通过配置一下配置文件来实现一些原先很繁琐的操作,高效开发,节省操作或许这就是框架开发的魅力吧,但是SSM也有缺点,到了业务逻辑很繁琐的时候SSM就显得
2021-02-22 15:17:32
344
原创 总结一下事务和事务隔离级别
事务 ACID 包括原子性:要么全部成功,要么全部失败回滚。一致性:可以理解为“守恒”,例如银行转账,你将从你的账户转账300元给小明,现在你已经扣除了300元,但是此时服务器宕机了,你的300元已经扣除了,但是小明却没有收到300元。这就说明已经不守恒了,也就是数据不一致的情况发生了。其实避免非一致性的事情发生的前提措施就是原子性和隔离性还有持久性。隔离性:主要是用于并发环境下,多个并发之间的事务是相互隔离的,各个事务之间互不影响。持久性:一旦事务提交了,数据就会永久的存储到磁盘。正是由于
2022-05-05 22:09:11
338
原创 浅谈AOP和代理模式
什么是AOP首先AOP是一种叫面向切面编程的思想,他并不是只用在Spring中,在其他很多AOP的框架中都有用到,如AspectJ,AspectWerkz。众所周知在Java中是面向对象编程,而AOP的面向切面编程更像是对面向对象编程的一种补充。他是通过一个叫切面的东西来统一处理很多相似的功能,例如我们在银行中的查询余额、取钱、存钱都会存在一个验证用户的操作,而这个操作我们就可以抽取出来实现代码复用。当我们要存钱或取钱的时候我们会将验证的功能横向的切入进来,也称横向开发,这样的好处很明显,不会改动原有的代
2022-04-13 21:19:27
3163
4
原创 总结一下各大数据源的优缺点
为什么会有数据源?古老的JDBC连接很麻烦,执行一次SQL就要打开关闭一个连接,这样的方式会导致用户每次请求都要向数据库建立链接而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、宕机。图为原始JDBC的连接情况由于原始的JDBC不具有高可用性所以诞生了数据源的概念,也可以理解为数据池,连接放入池中,用的时候直接拿不用去新建连接,可用性大大提高。常用的数据源.
2022-04-04 16:31:34
2229
原创 记录MySQL创建表的一个坑
zaiMySQL中创建表的时候应该用varchar,但是由于没看清于是一直用这个,最后看博客才知道varchar2是给Oracle用的。。。。该死。为什么他们就不能同意一下呢!!!!
2021-07-21 11:03:15
115
原创 ElasticSearch学习笔记
ElasticSearch学习Lucene概念Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会
2021-05-13 17:51:51
327
1
原创 Redis学习笔记
Redis学习主要知识点nosql介绍nosql数据类型nosql 四大分类CAPBASERedis入门五大基本数据类型StringListSetHashZset三种特殊的数据类型geohyperloglogbitmapRedis配置详解Redis持久化RDBAOFRedis事务操作Redis实现订阅发布Redis实现主从复制Redis哨兵模式(重点的重点)缓存穿透及解决方案(重点的重点)缓存击穿及解决方案(重点的重点)缓存雪崩及解
2021-05-08 19:30:49
1170
6
原创 SpringBoot学习笔记
SpringBoot学习核心思想:约定大于配置!!you can just runspringboot的主要优点:开箱即用,提供各种配置来简化项目配置基于spring内嵌式容器简化web开发没有冗余代码生成和xml配置的要求什么是微服务?微服务是一种风格,原来是all in one(单体架构),完美的阐述了高内聚,低耦合的意思。即微服务是一种利用分治法的思想,去把一整套非常复杂的业务逻辑给切分成多个简单的业务问题,并采用模块化方法去实现组合的一种架构方法。它们是相互独立的,这意味着
2021-04-23 18:22:54
1548
原创 历届蓝桥杯省赛Java B组真题思路总结
历届蓝桥杯Java B组思路总结写在前面蒟蒻一枚,写此篇博客作为我的赛前突击,基本每年后面的两个大题或者是很难的题我都没有做,我的目标是能混省二我就谢天谢地了~~13年省赛世纪末的星期此类题目主要是考察对时间的操作,主要用到的API是LocalDate,LocalTime,Calendar,关于对时间的操作很容易考,所以一定掌握这几个类。马虎的算式此题就是暴力破,五重for循环,注意一下限制条件就可以了振兴中华一看题目就可以知道这是一道搜索的题目,所以我们首先考虑深搜和广搜public
2021-04-17 16:21:22
877
原创 第十一届Java B组蓝桥杯真题
写在前面时光荏苒,岁月如梭,恍惚间蓝桥杯开赛的日子近在咫尺。。为什么这么官方。。。咳咳,明天就开赛了,俗话说得好临阵磨枪,不快也光!秉承着华夏民族优良专统,于是来刷一遍去年的真题,从去年的难度整体上来看我要是去年去比赛的话省三应该不成问题,但是不知道今年会不会变难,他要是上来就是高级数学公式,找各种规律,DP,贪心,背包那我干脆弃赛得了,高级算法不适合我,太难了~~,此篇我也只是解决了前八道题目,最后两道题目与我目前段位实在是不匹配,所以以后有缘再续 ~~真题链接真题看这里——>> ht
2021-04-17 12:27:33
518
原创 Java 8 HashMap底层源码初探
为什么哈希查找那么快?HashMap是基于哈希值的桶和链表因为哈希的存储类似于数组,在数组中我们只需要知道数组的下标就可以取到数组的值了,查找速度极佳,时间复杂度为O(1),哈希的存储就类似于数组的存储,将值映射到内存的某个单元,然后给他一个哈希值,我们查找的时候只需要查找那个哈希值就可以了,不需要进行任何比较,但是在此之前我们需要指定哈希函数用来将无限大的值映射到内存中,如何选择哈希函数方法并不唯一,一般存储正整数的话就用一个正整数来mod数组的长度,但是这样做的致命缺点就是哈希冲突,我们的哈希值可能
2021-04-16 09:31:01
211
2
原创 杨辉三角
杨辉三角是一个很有特点的三角形,它的左边和右边都是1,而且它的某一行的值等于上一行的y+y-1的值。如图:所以我们可以用递归得出规律,即当我们的y == 0或者是x == y的时候就作为递归的退出条件,否则一直递归调用函数,即fun(x-1,y-1)+fun(x-1,y)。接下来我们来实现一下。import java.util.Scanner;/** * 杨辉三角 */public class Main { public static void main(String[] args)
2021-04-15 11:41:16
227
原创 写一个全排列模板
看了历届的蓝桥杯真题发现有很多都是全排列的题目,全排列的题目是由固定的套路和模板的,现在我来分享一下复制过去改一改就可以用的全排列的模板。/** * 全排列模板 */public class Main { static int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; static int ans = 0; public static void main(String[] args) { fun(0);// 固定
2021-04-15 10:23:07
106
原创 高快省的排序--快排
引言这篇博客我们来复习一下效率极高的排序,快速排序,用分治的思想实现的一个优雅的排序算法,是一个真正的高速,快捷,省空间的排序。诸如Java的Arrays类中的sort方法的底层源码也是用快排实现的,接下来就让我们看一下快排的实现吧。快速排序为什么快?快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离
2021-04-14 20:05:27
160
原创 n皇后问题再探究--DFS求解
前一段时间写了篇n皇后的博客,近期有正在准备蓝桥杯,虽然已凉~~,但还是要挣扎一下嘛,所以再来优化一下上一篇博客的代码,顺便对递归和回溯有更充分的理解,接下来我们上代码,每条语句的意思都在注释里面了。参考视频: https://www.bilibili.com/video/BV1bK4y1n7iq?from=search&seid=17252516836113335016package cn.shi;import java.util.Scanner;/** * n皇后 深搜+回溯
2021-04-14 17:51:25
123
1
原创 Java 8新特性之Stream的简单Tips
这个类可以帮助我们解决一些很日常的操作,比如说在一个数组当中找到最大值最小值,求和,求平均值等操作。方便使用,接下来简单我们来认识一下她吧。package cn.shi;import java.util.Arrays;import java.util.stream.IntStream;/** * Java8 Stream计算数组最小值、最大值、总和、平均数 * @author Shi Jun Yi * */public class Main { public static voi
2021-04-14 16:36:34
222
原创 递归+交换数字实现全排列
刚习得一种全排列的实现方法,特此来记录一下,此方法运用递归+交换数字实现,交换–》递归–》交换(回溯)。package cn.shi;import java.util.Arrays;public class Full_Permutation { public static void main(String[] args) { perm(new int[] {1,2,3},0,2); } //递归求全排列 public static void perm(int[] array,i
2021-04-13 20:26:06
179
原创 深度优先搜索之迷宫问题
深搜即DFS,顾名思义,往深处一直搜索,走过的点都被记录下来,直到找到目标或者是触发终止条件,最后回溯到走过的某一个点,在这个点上面继续进行深搜,最后一个图中所有的点都能被便利得到,再用深搜需要注意的点就是我们在回溯的时候我们记录的点要记得还原成没有记录过的状态。迷宫问题就是用深搜解决的最好的例子,接下来我们来看一下这个迷宫问题吧!迷宫问题就是给定一个起点,和终点,还有一张图,图中有很多的障碍物,然后让我们找到从起点到终点的最短路径,很显然这就是运用的深搜了,此题的解法就是我们每个点在进行试探的时候会有四
2021-04-03 10:36:11
784
原创 微服务初体验
微服务是一种风格,原来的是all in one(单体架构),微服务完美的阐述了高内聚,低耦合的意思。即微服务是一种利用分治法的思想,去把一整套非常复杂的业务逻辑给切分成多个简单的业务问题,并采用模块化方法去实现组合的一种架构方法。它们是相互独立的,这意味着它们可以采用不同的编程语言和数据存储。微服务中几乎不存在集中管理,它使用轻量级的HTTP、REST或Thrift API来进行内部通信。微服务官方介绍 : https://blog.youkuaiyun.com/qq_43458555/article/deta
2021-03-29 16:20:53
169
2
原创 雷军:这样的程序员创业有戏
这是我为12月4日开始的“2008软件开发2.0技术大会”准备的讲稿。到了现场,我发现这个讲稿对现场近千人的技术高手不适合,只好临时讲了移动互联网的趋势。致刚入门的程序员五点建议每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员。现在大学、软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找不到好的工作。问题出在哪里呢?其实,企业需要的是不是刚会写程序的人,需要来了就能干活的人,尤其能把活干好的人。而刚毕业的大学生多半刚学会如何写程序,的确很难企业需求。企业到底需要什么样
2021-03-17 17:25:55
448
原创 经典回溯算法--八皇后
今天上课的时候老师讲到了回溯的经典问题–n皇后,我们老师用的例子是3皇后,过于简单,课后我又总结了一下,加之我自己的理解,于是n皇后的算法就实现了,此算法如果是暴力求解的话是会超时的,所以我们用回溯加深搜来实现,下面上代码!!Duang ~ Duang ~ Duang ~package Test;import java.util.Scanner;public class Main { // n皇后之八皇后 static int sum = 0; static int
2021-03-17 15:30:54
182
原创 动态规划之背包问题
动态规划(Dynamic Programming,DP),在平时的应用非常广泛,几乎在所有的比赛和面试当中都可以看到DP的身影,所以我来说一下什么是DP动态规划,然后顺便讲解一个非常经典的DP问题–背包问题。DP基本思想是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。核心是将一个问题分解成为若干个子问题什么是动态规划?动态规划(Dyn
2021-03-13 23:49:56
129
原创 处理大数的Java API之BigInteger和BigDecimal
当我们遇到很大的一串数字的时候用long就放不开了,于是Java有一个API叫BigInteger和BigDecimal可以很方便的用来处理很长的数字。可以使用BigInteger操作大整数 整数可以使用BigDecimal指定小数的保留位数 小数BigInteger首先我们来看一下BigInteger的一些常用方法,如下面代码所示,代码中的注释详尽的介绍了它的用法package cn.shi;import java.math.BigInteger;public class Test
2021-03-13 12:52:04
177
原创 运用递归的几个简单例子
毫无疑问,递归是最好用的解题方案,像n的阶乘,斐波那契数列,跳格子,走梯子等经典问题,接下来让我来给大家看几个递归调用的经典李子坝!蓝桥杯真题–跳格子问题描述的大概意思就是让我们从第一个格子跳到最后一个格子,并且跳的过程中必须组成一段话,问有几种跳法,代码实现public class Test01 { public static void main(String[] args) { int count = f(0,0); System.out.println(count); }
2021-03-12 23:23:41
358
原创 Java API之LocalDate和LocalTime
今天刷题的时候突然发现一个宝藏API,我称它为“时间管理者”,当当当,他们就是LocalDate和LocalTime!!!这个自jdk 1.8才诞生的API不所谓是不强大,对于时间的很多操作他们都支持,加时间吗,减时间,生成时间,输出当前日期和时间,等等等…下面就让我们来测试一下他们的一些主要的方法吧!测试(用法见注释) public static void main(String[] args) { System.out.println("====LocalDate测试====");
2021-03-09 23:26:20
187
原创 汉诺塔问题--Java实现
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。后来,这个传说就演变为汉诺塔游戏,玩法如下:有三根杆子A,B,C。A杆上有若干碟子每次移动一块碟子,小的只能叠在大的上面把所有碟子从A杆全部移到C杆上我这边就用塔1,塔2,塔3来表示A,B,C了,这样的话更好理解
2021-03-03 18:23:56
460
1
原创 利用前缀和来求一个区间内的和
今天是三月二号,这个月力扣每日一题打卡第2天。两天来连续遇到前缀和解决一个区间内的和的问题,觉得还是比较高频的所以来记录一下这两道题目的思路和解法。来一段狂神经典语录激励一下自己:只要学不死,就往死里学!!力扣第303题: 区域和检索-数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int
2021-03-02 22:30:20
481
原创 分享关于位运算的一些题目
今天在刷力扣的时候一不小心就刷入了位运算的专场,好家伙,那可真是血雨腥风啊,不过总的来说,位运算确实是解决问题的一种不错的方法,简洁,方便,快捷,还好理解,一开始确实是不好理解,但是只要你绕开了那个弯就很好理解了,思路都是比较清晰的,下面我来讲几道我遇到的位运算的题目。第一道 位1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。输入:00000000000000000000000000001011输出:3解释:输
2021-03-01 22:49:27
193
原创 记录后端传json数据到前端的坑
在做ajax异步处理的时候出现了从后台传到前台的中文不显示或者是显示中文问号的问题,琢磨了好几个小时,大量百度,能试的方法都试了一遍都不对,依旧是显示空白或问号,自我感觉找bug的能力还是要提高一下,无法找到根本问题的所在,只是盲目的乱试。好在最后让我瞎猫碰上死耗子了,hhh~那么就让我来分析一下我犯错的过程吧!先看我的错误前台和后台的源码: @RequestMapping(value = "/v3") @ResponseBody public String validation(Str
2021-02-23 16:51:17
655
原创 龟兔赛跑算法(快慢指针)解决链表问题案例汇总
这几日刷到了很多链表的算法题,发现链表的算法题真的很抽象,基本都不太会做。。。无奈只能看评论和大佬的题解,总算是有了点启发和思路,趁着记忆还未褪却赶紧来记录下来。我发现这些链表的题大佬们都很喜欢用快慢指针来做,所以我特地做了一个汇总,不得不说,快慢指针真的很好用!!判断链表是否有环?本题的思路也是用快慢指针来做的,空间复杂度可以是O(1),常量的空间复杂度真的很高效,如何用快慢指针来做呢?无非就是判断快慢两个指针最后是否会相遇,如果有环的话,快慢两个指针最后肯定会相遇,那么我们只需要在循环里面加一个
2021-02-22 12:35:45
414
原创 力扣算法题--删除链表中的节点
今天刷力扣的时候刷到一道解题思路非常妙的题目,大体题意就是删除一个链表中的节点,如题:题目注:力扣的简单算法题并不代表很简单,,吐血。。。解题思路要想理解这道题目其实很简单只要跳跃出平常的思路就可以了,**理解一句话“如果你想让自己在这个世界上消失,但不死,那么就把你自己变成另外一个人,再把那个人杀死!”**怎么样,是不是思极细恐!!!只要理解了这一句话我们就可以找到对应的思路了,**首先我们将本节点的值变成下一个节点的值,然后将本节点的下一个节点变成下一个节点的下一个节点。**这样一来就实现了删
2021-02-21 11:54:31
184
原创 Spring MVC学习笔记
Spring mvc学习准备工作,导入依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.9.RELEASE</version> </dependenc
2021-02-20 22:22:49
352
原创 Spring学习笔记
Spring学习关于Spring简介官网:https://spring.io/介绍:Spring框架是一个开放源代码的J2EE应用程序框架,由[Rod Johnson](https://baike.baidu.com/item/Rod Johnson/1423612)发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。特点:两个最大的特性:AOP(面向切面编程) 和 IOC(控制反转)—面试必问Spring是一个轻量级的,非入侵式的框架(引
2021-02-20 22:10:53
281
原创 Mybatis学习笔记
Mybatis学习简介什么是mybatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。第一个mybatis程序从 XML 中构建 SqlSessionFactory每个基于 MyBatis 的
2021-02-03 21:48:37
311
原创 记录一下第一次写Mybatis项目遇到的坑
初学mybatis就遇到了无法运行的尴尬处境,明明都是照着别人写的,怎么就抛异常了呢,百思不得其解,然后百般琢磨终于发现是因为配置文件字节编码的问题。kao,害老子折腾一个多小时。。。气炸~~希望有和我遇到同样问题的小伙伴可以快速解决。具体情况如下:当我所有的准备工作都做好之后,我开始单元测试,然后就抛出了如下异常,这就是噩梦的开始。(这是修改字符编码之后的,一开始的异常突然不抛了…)"C:\Program Files\Java\jdk1.8.0_144\bin\java" -ea -Didea.te
2021-01-28 18:22:23
179
原创 Filter的应用--权限管理和过滤敏感词汇
刚刚做了一个关于Filter的应用,趁着脑热赶紧记录下来,此篇一共是有两个小应用一个是关于权限管理,*什么是权限管理呢?*就是当你没有登录的时候你不能做任何事情,这个操作很眼熟,例如天猫的下单系统,当你没有登录的时候只能浏览,并不能提交订单和付款,当你提交订单的时候会提醒你先登录。还有一个常见的例子就是一些网站的登录查询系统,当你没有登录的时候是不能查看任何信息的,这就是权限管理,这样做的好处就是很安全,过滤掉了一些不安全的因素,一般现在只要是涉及到登陆的网站基本都是用了过滤器来实现这个权限管理操作的。另一
2021-01-25 17:28:51
394
原创 使用Servlet和JSP开发一个简版购物车
前几天复习完了Servlet和JSP方面的知识,于是想着汇总一下,然后就想开发一个简化版的购物车,虽说是简化版但是购物车的逻辑与天猫,京东的购物车逻辑基本一样,下面就让我们来看一下这个购物车是如何实现的吧。说明:本文是借鉴某大佬的教材,文末我会说明出处主要做以下几点开发:类关系产品模块用户模块购物车模块订单模块首先我们先要明确一些基本的关系,有产品、订单、用户、订单项,前三个都挺好理解的,就是第四个订单项是什么呢?订单项说白了就是一条记录,在一个session里面放了好几个相同的订单。那
2021-01-21 14:44:30
3158
3
原创 IDEA部署Tomcat以及解决Servlet 404的问题
IDEA部署Tomcat以及解决访问Servlet 404的问题 这几日在做web项目,有快一年的时间没有碰servlet了,今天部署了两个多小时都是404,然后我疯狂百度,疯狂配置,有点第一次配资部署Tomcat的味道了,hhh~~最终还是部署成功了,所以来写一篇博客记录一下我犯的错误,顺便总结一下经验。 第一步我们先新建一个Java web的项目[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5AAlMLqM-1610624504189)(C:\Users\L
2021-01-14 19:49:39
3622
5
原创 初识Spring
浅谈AOP和IOC 笔者也是初识Spring,有什么不对的地方还请斧正! 近来在学习Spring框架,初识框架有点迷惑,所以整理一下目前所学的一些知识吧。 AOP即 Aspect Oriental Program 面向切面编程 ,为什么要先说AOP呢,因为Spring是一个基于AOP和IOC的框架。IOC简单点说就是你以前创建对象都是用new,现在Spring直接承包了,你不用去管如何创建对象了,你直接用就行,就像是去食堂吃饭,厨师大叔们都把菜给你做好了,你只管吃就行了。AOP呢就是一个面
2021-01-13 20:08:54
267
嵌套for循环优化问题,急急急!
2020-10-24
Servlet异常,提示分配异常的servlet
2020-06-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人