自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring项目单元测试

每个功能开发完,项目上线前都要做单元测试。编写测试用例要求:保证测试方法的独立性当前测试方法不能依赖于别的测试方法,也不依赖于数据库中某条特定数据。如A方法插入一条数据,B方法对这条数据做了修改,B依赖A的数据,这是不合理的。而过一段时间之后数据可能被删掉,B就无法操作了保证独立性原因:单元测试的代码不是一次性的,需要执行多次。开发完功能、功能发生变化(验证变化对整个业务是否产生负面影响)、上线前都要执行。比如,过一段时间,对一些功能进行了重构,此时需要再做一次单元测试,最好的情况是之前

2024-03-03 11:08:11 616

原创 35 Spring整合Elasticsearch

得到的两份数据,需要用SearchResultMapper进行组装,但默认实现类底层没有组装,即底层获取得到了高亮显示部分, 但是没有返回(结果里看不到).要对spring说明哪个实体类和es的索引怎样进行对应,建立映射关系,映射完成后,spring底层就可以帮我们生成实现类。getFragments():返回值是个数组,将内容做了分段,每一段都是 匹配的词语 前后的一部分内容,如上图。所有的代码都是Spring自动生成的,Spring会自动将实体数据和es服务器的索引进行映射,因此需要用注解。

2024-03-03 11:06:13 852

原创 34 Elasticsearch入门

一个分布式的、Restful风格的搜索引擎。分布式:多台服务器集群部署Restful风格:设计风格,规定了不同种类请求格式,是对请求的标准的一种描述支持对各种类型的数据的检索。结构化 非结构化 地理位置 等搜索速度快,可以提供的搜索服务。先分词,然后去索引查便于水平扩展,每秒可以处理PB级海量数据。集群式服务器,便于加服务器(水平扩展),也能同时处理很多数据。

2024-03-03 10:58:30 926

原创 前端错误 “TypeError Cannot read properties of undefined (reading ‘xxx‘)

我们在使用{{tableData.detail}}是不会报错的,但如果是{{tableData.detail.name}}这样就会报错了,这是为什么呢?因为,tableData.detail已经是一个undefined了,你undefined.name就肯定会报错了。异步请求获取数据时,由于数据时异步获取的,所以一开始是没有该数据属性,这种情况下也会报这种错误。出现该错误的原因是因为你花括号中的某些属性未定义。使用$nextTick,刷新表格的时候,表格未自定义属性,或自定义属性引用错了。

2024-03-03 10:55:50 2366

原创 Kafka 和 Spring整合Kafka

Kafka是一个分布式的流媒体平台。早期只是消息队列,慢慢扩充,可以进行很多其他操作,功能很综合,因此称为一个分布式的流媒体平台应用:消息系统(核心) 日志收集 用户行为追踪 流式处理。kafka是目前来说性能最好的消息队列服务器,能处理TB级别的数据.

2024-03-03 10:54:32 870

原创 阻塞队列介绍

kafka是目前来说性能最好的消息队列服务器,能处理TB级别的数据kafka是个框架,如果不用框架还要解决类似问题,就要用到阻塞队列。阻塞队列就是一个接口BlockingQueue,java核心API中的接口作用:解决线程通信的问题。wait/notify等也可以解决线程通信问题,但更加麻烦,因此如果要在API中选一种方法解决线程通信问题,选择阻塞队列更好阻塞方法:put、take。生产者消费者模式生产者:产生数据的线程。消费者:使用数据的线程。假设线程1为生产者,线程2为消费者,两

2024-03-03 10:53:50 500

原创 利用Spring整合Redis

但实际上我们在用时,key都是String类型,因此默认的配置类用起来不方便,我们最好重新做一个配置。因为声明式事务只能精确到一个方法上(即给一个方法加上注解,将整个方法看作一个事务),这样的话,方法内部就无法进行查询了。启用事务后,当redis收到命令时,不会立刻执行,而是放到队列里存着,直到提交事务时,才将队列中的命令批量执行。execute() 方法,可以在一次连接中进行多个命令操作,执行完会自动关闭连接。,会无效,因此要么在事务前查,要么事务提交后查。存着,直到提交事务时,批量执行。

2024-03-03 10:49:58 1132

原创 Redis的介绍与使用

Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构: 字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。NoSql数据库:not only sql,除关系型数据库之外的所有非关系型数据库Redis将所有的数据都存放在内存中,所以它的读写性能十分惊人。同时,Redis还可以将内存中的数据以快照或日志的形式保存到硬盘上,以保证数据的安全性。快照形式:即RDB形式,直接将内存中数据原原本本传硬盘上。

2024-03-03 10:49:16 805

原创 返回页面和重定向的区别

当我们在后端请求对应的方法中,提供了要跳转的页面所需的所有数据时,直接返回页面在project中的。反之,我们处理的是其他请求,并未提供要跳转的页面所需的所有数据时,需要使用。直接写路径,相当于文件路径,程序会去templates包下找。,重新进行一次该页面的相关请求,而使用web路径要用。,默认的路径是templates包下的html文件。

2024-03-03 10:47:38 564

原创 统一处理异常 和 统一记录日志

二者的区别是: e.printStackTrace() 在遇到大量并发访问 且 出现异常时,会发生:内存被占满的情况,导致服务挂掉,不可用。SpringMVC底层有很多参数转换器,会自动判断参数需要哪个转换器,这些转换器可以将html页面中的数据自动匹配Controller层方法的形参,如根据属性名将数据赋值给Controller层某个形参对象。e.getMessage() 和 e.toString() 方法: 打印的异常信息太少,没有具体的堆栈信息,不利于问题的定位处理!有时还会输出为 null。

2024-03-03 10:47:04 566

原创 AOP的介绍与使用

Aspect:声明当前类是一个切面组件@Component // 将切面组件声明为bean令容器管理它@Aspect@Pointcut:自定义切点,声明当前方法是切点。自定义一个空方法,加上 @Pointcut 注解,在注解中声明要将切面织入到哪些bean哪些方法中,即使用哪些连接点* 符号表示任意,在不同位置代表不同的数据* 在开头方法返回值位置上,代表任意类型的返回值。

2024-03-03 10:45:26 779

原创 字符串判空错误

前端传来的请求数据,若用只用String为null判断,则忽略了str=“”的情况,此时str不空,但str.length()==0。引入lang3包,利用StringUtils.isBlank()方法,可以兼顾str==null和str=“”的情况。

2024-03-01 00:18:47 183

原创 事务的介绍与使用

业务方法A可能调用业务方法B,两个可能都加了事务注解,此时改以谁为准REQUIRED: 支持当前事务(外部事务,即调用者A),如果不存在则创建新事务. A有事务就按A的来,没有则创建一个新事物REQUIRES_NEW: 创建一个新事务,并且暂停当前事务(外部事务).NESTED: 如果当前存在事务(外部事务),则嵌套在该事务中执行(B嵌套在A中执行,但B有独立的提交和回滚),否则就会REQUIRED一样.

2024-03-01 00:18:10 339

原创 AJAX实例

异步的JavaScript与XML,不是一门新技术,只是一个新的术语。(老技术新玩法)- 使用AJAX,网页能够将增量更新呈现在页面上,而不需要刷新整个页面。- 虽然X代表XML,但目前JSON的使用比XML更加普遍。(任何语言都可解析json字符串)- 官网:https://developer.mozilla.org/zh-CN/docs/Web/Guide/AJAX• 示例- 使用jQuery(js框架,比用原生js发ajax请求更方便)发送AJAX请求。• 实践。

2024-03-01 00:16:33 563

原创 前缀树 和 过滤敏感词

根节点为空除根节点外,每个节点只包含一个字符从根节点出发到任意一个节点,都能组成一个字符串的前缀每个节点的所有子节点包含的字母不相同。

2024-03-01 00:15:24 160

原创 自定义注解

自定义注解使用自定义注解拦截器配置拦截器。

2024-03-01 00:13:41 130

原创 java上传文件

生成随机文件名不同人上传的文件可能重名,因此需要随机的生成一个文件名。但 文件的类型不可变,即文件后缀不可变1)获取原始文件名2)截取后缀 并 判空和判类型3)生成随机文件名存储文件到本地指定路径更新数据库1)构建web访问路径web路径就是请求中的url,会定位到服务器的Controller层执行url对应的请求处理方法,在处理方法中再去服务器的本地路径下取资源2)修改数据库内容为web访问路径。

2024-03-01 00:12:23 328

原创 Date日期类

DateFormat是日期/时间格式化子类的抽象类,它以 与语言无关的方式格式化并解析日期或时间,是抽象类。原文链接:https://blog.csdn.net/Clearlove_S7/article/details/130442197。原文链接:https://blog.csdn.net/qq_59125846/article/details/134217819。原文链接:https://blog.csdn.net/qq_59125846/article/details/134217819。

2024-03-01 00:11:21 923

原创 Threadlocal线程变量简介

ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。注意:每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用,故其它 Thread 不可访问,那就。

2024-03-01 00:10:07 532

原创 接口中的default方法

在接口中新增方法时,如果新增的这个方法写成普通方法的话,那么需要在该接口所有的实现类中都重写这个方法。如果新增的方法定义为default类型,就不需要在所有的实现类中全部重写该default方法,哪个实现类需要新增该方法,就在哪个实现类中进行实现。如果一个实现类同时实现了多个接口,并且在这些接口中存在同名的默认方法,不实现这些默认方法会怎样呢?当实现类同时继承了其他类,并且实现了接口,而其他类的方法和接口的默认方法都存在的时候 ,会。此外,默认方法的引入是为了解决在接口扩展时可能遇到的维护问题。

2024-03-01 00:09:26 976

原创 SpringMVC拦截器

拦截浏览器请求,并在请求前后插入代码,从而批量的解决多个请求的相同问题好处:降低代码耦合度@Component// 在Controller之前执行(即处理请求的Controller之前执行)@Override// 在Controller之后执行(模板引擎之前)@Override// 在TemplateEngine之后执行(即模板引擎之后执行)@Override。

2024-03-01 00:08:32 317

原创 MyBatis的注解的使用

利用注解调用sql语句,不用再写一个xml文件了,但sql复杂时没有xml文件读起来舒服什么类型sql语句就用什么注解:Spring会将他们拼在一起形成完整sql@ResultType:用于指定返回值类型@Results和@Result注解,这些注解用于在查询结果与Java对象之间建立映射关系。@Results注解用于指定多个@Result注解,每个@Result注解用于将查询结果的列映射到Java对象的属性。:用于指定一些额外选项。

2024-03-01 00:07:43 218

原创 生成验证码 和 自定义配置类

使用Kaptcha时,需要我们自定义一个配置类,Spring会将配置类加载到容器中,会在容器中生成该工具的核心Bean,通过该Bean我们就可以使用工具Kaptcha中的目标功能。后端已设置默认的项目访问路径为http://localhost:8080/community,但前端认为的默认访问路径为http://localhost:8080。**解决方法:**给请求地址中拼接一个无意义的参数。错因:浏览器看见每次请求地址一样,且请求的是一个静态资源(图片),就会不去发起新请求。

2024-03-01 00:07:05 554

原创 Thymeleaf的使用 2

查找这个类,并查看可以看到默认配置类为 ThymeleafProperties进入ThymeleafPropecties,

2024-03-01 00:04:49 175

原创 @Value的用法

如果@Value(“${user.userName:ZhangL}”),指定了name的值为ZhangL,当从配置文件中获取不到userName时,则userName值为ZhangL。在使用上述配置文件时,可以直接使用@Value(“${spring.mail.username}”)。​ 用法:@Value(“${unknown.param:defaultValue}”)在使用上述配置文件时,可以直接使用@Value(“${user.userName}”)。​ 如果可能为空,需要设置默认值。

2024-03-01 00:03:10 783

原创 10 会话管理:Cookie与Session

1)用Cookie还是Session要根据情况决定,没必要存的数据就都不用2)能用Cookie就用Cookie,可以减小服务端压力3)Session如果是单体应用,即只部署一台服务器时,可以随便使用。而部署到多台服务器时,即分布式部署,分布式框架中很少用Session,原因如下存在问题:Session共享问题解决方案:黏性Session:设置代理的负载均衡策略,同一个IP发来的请求,都用同一个服务器进行处理。缺点很难保证服务器之间是负载均衡的,性能不好。

2024-03-01 00:02:02 818

原创 邮件发送组件

java发送邮件

2024-02-29 23:37:21 231

原创 SpringBoot项目编译后,classes文件下没有static、mapper、templates文件

SpringBoot 项目怎么都加载不到resources 下面的static、mapper、templates 内的文件即编译后,target的classes文件下没有static、mapper、templates文件

2024-01-02 01:01:49 634

原创 Thymeleaf基本语法

Thymeleaf的语法规则:- 变量表达式:${...}- 选择变量表达式:*{...}- 链接表达式:@{...}- 国际化表达式:#{...}- 片段引用表达式:~{...}th 属性

2024-01-02 00:59:38 726

原创 MyBatis的使用

搭建数据库(执行sql文件);前期准备:添加包(mysql 和 mybatis 包)、添加配置(配置数据库、连接池、MyBatis)、创建xml文件;代码(实例类、Mapper接口和@Param、XML文件、测试);MyBatis调试问题:日志级别设置

2023-12-18 15:35:44 61

原创 Spring MVC的使用

配置文件;获取请求;返回响应;简便方式处理请求:GET请求、POST请求(@RequestMapping、@RequestParam、@PathVariable);响应一个动态html;响应JSON数据

2023-12-18 15:29:28 59

原创 Spring项目的使用

配置文件的设置方法(application.properties文件);手动获取bean的方式(applicationContext.getBean());bean的管理方式(@PostConstruct、 @PreDestroy、@Scope);bean自动注入的方式(@Autowired 和 @Qualifier);与前端的交互举例:Controller层、Service层、dao层;装配第三方jar包中的bean(@Configuration 和 @Bean)

2023-12-18 15:24:01 27

原创 B树和B+树

B树的特性、B树的插入操作、B树的删除操作、B+树的特性、B树和B+树的区别、磁盘IO与B树、B+ 树比B树更适合索引、InnoDB与MyISAM中的B+树、聚集索引 VS 非聚集索引、聚集索引查找流程、非聚集索引查找流程

2023-03-15 21:51:57 2288

原创 leetcode总结 DAY 26-32 贪心

455.分发饼干、376. 摆动序列,53. 最大子序和,122.买卖股票的最佳时机II,55. 跳跃游戏,45.跳跃游戏II,1005.K次取反后最大化的数组和,134. 加油站,135. 分发糖果,860.柠檬水找零,406.根据身高重建队列,452. 用最少数量的箭引爆气球,435. 无重叠区间,763.划分字母区间,56. 合并区间,738.单调递增的数字

2023-03-15 21:43:11 114

原创 leetcode总结 DAY 19-25 回溯法

77 组合、 216.组合总和III、17.电话号码的字母组合、39. 组合总和、40.组合总和II、131.分割回文串、93.复原IP地址、78.子集、90.子集II、491.递增子序列、46.全排列、47.全排列 II

2023-03-15 21:36:27 142

原创 leetcode总结 DAY14-18 二叉树

144 二叉树的前序遍历、94 二叉树的中序遍历、145 二叉树的后序遍历、102 二叉树的层序遍历、226 翻转二叉树、101 对称二叉树、104 二叉树的最大深度、559 N 叉树的最大深度、111 二叉树的最小深度、222 完全二叉树的节点个数、110 平衡二叉树、257 二叉树的所有路径、404. 左叶子之和、513 找树左下角的值、112 路径总和、113 路径总和 II]

2023-03-15 21:31:58 88

原创 leetcode总结 DAY10 - 13 栈和队列

leetcode 232 用栈实现队列、225 用队列实现栈、20 有效的括号、1047 删除字符串中的所有相邻重复项、150 逆波兰表达式求值、239 滑动窗口最大值、347 前 K 个高频元素

2022-11-18 15:12:33 116

原创 leetcode DAY 8-9 字符串 KMP算法

leetcode 344反转字符串、541 反转字符串 II、剑指 Offer 05. 替换空格、151 反转字符串中的单词、剑指 Offer 58 - II. 左旋转字符串; KMP算法:28 找出字符串中第一个匹配项的下标、459 重复的子字符串

2022-11-17 14:00:39 165

原创 leetcode总结 DAY3 - DAY7 链表,哈希表

leetcode 203. 移除链表元素、707 设计链表、206 反转链表、24 两两交换链表中的节点、19 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142 环形链表 II、242 有效的字母异位词、349 两个数组的交集、202 快乐数、1 两数之和、454 四数相加 II、383 赎金信、15 三数之和、18 四数之和

2022-11-06 14:39:38 137

原创 leetcode总结 DAY2 数组2

leetcode 977. 有序数组的平方;209. 长度最小的子数组;59. 螺旋矩阵 II

2022-10-28 13:40:00 77

空空如也

空空如也

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

TA关注的人

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