自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 短链接day10

用户横向越权是指在系统中,用户 A 能够访问或操作用户 B 的数据或功能,而这种访问或操作是未经授权的。这种安全漏洞通常出现在访问控制不严格或错误配置的系统中。如何复现用户横向越权?咱们短链接监控有四个获取监控数据方法,假设系统有两个用户:用户 A 和用户 B。用户 A 创建短链接/aaaaaa,用户 B 创建短链接/bbbbbb,只要用户任意登录,就可以访问任意创建的短链接监控数据。

2024-07-18 12:51:15 311

原创 短链接day9

比如网络宕机了,messageQueueIdempotentHandler.delMessageProcessed(id.toString())未执行,因为ack没有得到,所以mq会进行重试,会检查messageId有没有,如果有的话就会返回失败。所以在判断标识是否存在时,当已经存在标识时,还需要判断消费流程是否执行完成,防止未执行完成时,直接失败。因为这个key其实是存在redis中的,如果时间过长,redis中缓存的key数据量就会大,占用内存多,所以设置时间短一些,可以减少key存储的数量。

2024-07-17 15:39:15 637

原创 短链接day8

不知道为什么我的后管系统报错【用户Token验证失败】,但是调试中,只有admin的filter用来两次,其中都没有走错误,所以不知道会报错。导致后面的都无法校验了。不知道是哪里复制错了,反正就是一顿报错,改了这个又改那个,还是报错。:在某些场景下,我们可能想要表示某个属性不应该映射到数据库表的任何列上。logdo新增networt、device、local属性。字段)的值为NULL,则使用0作为替代值;最后,这个表达式的结果被命名为。不是NULL,则直接使用。这段代码的作用是:如果。

2024-07-16 15:59:19 85

原创 短链接day7

uvFirstFlag是一个AtomicBoolean类型的变量,它是线程安全的。由于AtomicBoolean的特性,这个读取操作是安全的,不会受到其他线程的影响。@Param的作用就是给参数命名,比如在mapper里面某方法A(int id),当添加注解后A(@Param("userId") int id),也就是说外部想要取出传入的id值,只需要取它的参数名userId就可以了。是 Spring 框架中的一个非常有用的注解,它主要用于将配置文件中的值注入到 Spring 管理的 Bean 的字段中。

2024-07-15 23:30:44 647

原创 短链接day6

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短一些,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击。

2024-07-13 00:02:30 991

原创 短链接day5

在MyBatisPlus中,当实体类的属性是基本数据类型(如int)而不是其包装类型(如Integer)时,可能会遇到一些特殊行为,尤其是在动态SQL生成的场景中。但如果是int类型,由于它不能为null,在实体类实例化时,默认值为0,这可能导致以下情况: 如果你本意是想根据某个条件动态地决定是否添加到查询中,而这个条件对应的实体类属性是int类型,默认值0会被误解为有效的查询条件,即where子句中会包含这个字段等于0的条件。的实例,同样支持链式调用各种条件方法来构建查询条件。

2024-07-11 17:43:49 687

原创 短链接day4

如果用身份证号+名字去找就是URN(身份证号+名字 无法确认资源的地址)。在Java类库中,URI类不包含任何访问资源的方法,只能标识资源。URL类可以访问资源,可以获取指定资源的流信息。由于海量数据,并且为了防止多次查询数据库,需要去查缓存,所以需要用分布式锁,从而这个用布隆过滤器实现(在用户注册时,同样使用了)。打包工具,在admin和project的pom中添加,用于联调前端,这个打包插件会让打包有一个直接可以启动的spring文件。为了防止死循环,需要设置一个最大的重置次数。记住是加了反引号的!

2024-07-10 17:26:19 398

原创 短链接day3

JSONField注解可以用在方法(method),属性(field)以及方法中的参数(parameter)上。JSONField中的name属性用来指定JSON串中key的名称。在修改功能实现时,会出现请求成功了,但是数据库信息未更改,原因是token已经过期了,所以需要重新登录。其中,@JSONField(name = "id")来设置userinfodto中的userid。设置线程安全的TTL,实现跨线程的异步传输。在新增之前,需要判断gid是否是唯一的。删除一般用软删除,所以用update做。

2024-07-09 17:52:55 276

原创 spring security的demo

还是不太会,有人有更详细的资料分享一下,还有sa-token的demo加说明。WebSecurityConfigurerAdapter已被弃用。

2024-07-09 12:51:24 354

原创 责任链模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。责任链模式允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。责任链模式通过将多个处理器(处理对象)以链式结构连接起来,使得请求沿着这条链传递,直到有一个处理器处理该请求为止。

2024-07-09 10:56:24 481

原创 EasyPOI与Apache POI

在读写数据的时候,优先是先将数据写入内存,优点是读写性能非常高,但是当数据量很大的时候,会出现oom,当然它也提供了 sax 模式的读写方式,需要调用特定的方法实现。如果你主要处理 Excel 文件,而且希望简化开发流程,EasyPoi 或 EasyExcel 都是不错的选择,具体可以根据个人或团队的偏好和需求选择。基于sax模式进行读写数据,不会出现oom情况,程序有过高并发场景的验证,因此程序运行比较稳定,相对于 easypoi 来说,读写性能稍慢!

2024-07-08 11:22:57 472

原创 JPA、Hibernate、Spring Data JPA的区别

spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。ORM框架将会忽略该属性。总结:jpa是一种orm的规范,hibernate是一种orm框架,是jpa的一种实现,spring data jpa是jpa的再次封装,用于简化jpa操作。2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。

2024-07-08 09:54:25 334

原创 @Entity与@target的区别

Entity说明这个class是实体类,并且使用默认的orm规则,即class名就是数据库表中表明,class字段名即表中字段名。@Entity注解指明这是一个实体Bean。@Table注解默认情况下只会完成表和实体之间的映射,声明才对象映射到数据库的数据表,通过它可以为实体指定表(table)。@Entity注解和@Table注解都是Java Persistence API中定义的一种注解。

2024-07-08 09:40:40 399

原创 短链接学习day2

需要注意的是,转换过程中,BeanUtil.toBean()方法通过反射机制创建了目标类型的实例,并将数据源对象的属性值复制到目标对象中。但是为了防止redis的主节点挂掉后,从节点变成主节点时,有些数据还没复制,就会导致脏数据,就会可能导致用户名重复,所以为了防止这个情况,我们需要将username设置为唯一索引,让数据库兜底。因为用户名不是特别重要的数据,如果说我设置用户名为 aaa,系统返回我不可用,那我大可以在 aaa 的基础上再加一个a,也就是 aaaa。一定要记得写枚举的时候是用逗号分割。

2024-07-05 15:01:57 912

原创 短链接项目day1学习记录

接口文档:ApiFox用于公共的依赖,默认都会下载,只有在子类去引用时才会下载。

2024-07-05 00:26:45 895

原创 FreeMarker学习记录

FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序,将视图从业务逻辑中抽离处理,业务中不再包括视图的展示,而是将视图交给 FreeMarker 来输出。虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 FreeMarker 生成页面,通过模板显示准备的数据。FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。

2024-07-03 15:11:44 320

原创 hibernate与jpa学习

ORM框架/持久层框架(Object Relational Mapping) 它是是一个轻量级开放源代码的对象关系映射框架,hibernate可以自动生成SQL语句,自动执行,可以使用面向对象思想来操作数据库。在team中设置lazy为true后,在测试时,查询team,不用查players,如果为false,就会查两次,一次team,一次players。jpa是一个规范,hibernate是jpa的实现,是一种框架。尽量减少java程序与数据库的交互次数。

2024-07-03 14:25:32 458

原创 数据库连接池

数据库连接池是一个维护数据库连接的池子,它预先创建一定数量的数据库连接,并将这些连接保存在池中,以便应用程序在需要时可以从池中获取连接,而不是每次都创建新的连接。数据库连接是一种昂贵的资源,创建和销毁连接的开销很大。通过使用连接池,可以避免频繁地创建和销毁连接,提高了数据库访问的性能和效率。连接池还可以控制连接的数量,防止连接数过多导致数据库性能下降,同时还可以管理连接的状态、超时和异常处理。C3P0 是一个开源的 JDBC 数据库连接池库,它提供了高度灵活和高性能的连接池实现。

2024-07-03 12:48:45 295

原创 IDEA自定义注释模板

主要一开始我还在includes里面的file header添加了一样的模板信息,导致我创建类时,一下出现多个类文件。可以设置一些公司配置以及类描述。

2024-07-03 10:34:53 246

原创 dependencyManagement使用时无法加载

在加载依赖时,我是直接复制的别人的pom文件,然后里面的依赖是由dependencyManagement管理的,然后我发现我的很多依赖包找不到,查看自己的sdks也是jdk17版本,搜索很久都无法解决。然后突发奇想,把dependencyManagement删掉,看能不能加载依赖,结果加载没错。依赖下载没错过后才又将dependencyManagement加上,其实也想知道为什么会出现这样的效果?

2024-07-03 09:19:38 111

原创 maven: Dependency not found

使用方法2解决。

2024-07-03 09:14:41 158

原创 黑马头条day6总结

我看教程的代码中没有,【@ComponentScan({"com.heima.apis","com.heima.wemedia"})】,所以我删除了,删除了就开始报错,找不到某某bean,所以我还是保留了。一开始没加@EnableFeignClients(basePackages = "com.heima.apis")导致获取ischeduleClient错误,找不到bean。

2024-05-28 15:51:48 260

原创 黑马头条day5总结

用finishshell打开redis过后,用法docker ps查看时发现redis无port映射,后续试了很多种方法,都没有映射成功。后来猜测可能是redis版本问题,因为我自己重新docker pull redis了,然后我又重新用的资料中的虚拟机打开redis就没问题了。没有设置taskinfoLogs默认的执行时间。添加【taskinfoLogs.setExecuteTime(new Date(task.getExecuteTime()));

2024-03-25 21:01:58 436

原创 黑马头条day3总结

运行时报错Caused by: java.lang.NoClassDefFoundError: com/heima/model/wemedia/dtos/WmLoginDto。解决:maven中clean然后compile。不知道为什么我每次写完一个接口,运行应用类之前都几乎需要重新clean和compile,不然就会报错。才发现是因为引入service没加@Autowired注解。nginx配置的这个地址一定要与你放的前端代码位置相同。重新clean,然后compile就行了。

2024-03-19 22:20:12 304

原创 黑马头条day2总结

明明有这些内容,不知道为什么运行就会出错。

2024-03-18 22:49:07 279 3

原创 黑马头条day1记录

由于在vmware上直接更改权限不足,所以我先用的【ifconfig】查看当前的ip地址,通过finalshell连接这个ip地址过后,通过【sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33】更改。然后我发现我用的数据库版本跟复制的pom.xml的版本不一样,老师的是5.**,我是8.0.36,然后我就改正,但是找不到8.0.36,下载8.0.26可以的。首先配置nacos的文件,数据库密码我不是root,所以改成自己的了。

2024-03-18 18:09:07 1771

原创 谷粒商城问题集合

由于以前下载过VMware,出现这种情况用ipconfig /all才查找到vitualBox。

2024-03-14 13:51:05 326

原创 苍穹外卖day12总结

1.介绍Apache POI是一个处理MiscrosoftOffice各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对MiscrosoftOffice各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。Apache POI的应用场景:•银行网银系统导出交易明细•各种业务系统导出Excel报表•批量导入业务数据2.入门案例·Apache POI的maven坐标:将数据写入Excel文件:读取。

2024-03-08 00:23:45 315 1

原创 苍穹外卖day11总结

1.ApacheECharts1.ApacheECharts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ApacheEcharts总结:使用Echarts,重点在于研究当前图表所需的数据格式。通常是需要后端提供符合格式要求的动态数据,然后响应给前端来展示图表。2.营业额统计。

2024-03-07 18:50:18 577 1

原创 苍穹外卖day10总结

WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。HTTP协议和WebSocket协议对比•HTTP是短连接•WebSocket是长连接•HTTP通信是单向的,基于请求响应模式•WebSocket支持双向通信•HTTP和WebSocket底层都是TCP连接应用场景视频弹幕、网页聊天、体育实况更新、

2024-03-07 09:26:36 896 1

原创 苍穹外卖day9总结

这意味着,如果你传递一个 List 类型的参数,那么 MyBatis 只会将 List 对象中的第一个元素作为参数进行处理,而忽略掉其它元素。`Stream`接口中的`collect()`方法用于将流中的元素收集到一个集合中。通过`collect()`方法可以指定将流中的元素收集到某种集合类型中,比如`List`、`Set`、`Map`等,也可以实现自定义的收集逻辑。方法用于将集合转换为一个流(Stream),这样就可以利用流式编程的特性对集合中的元素进行各种操作,比如过滤、映射、排序、归约等。

2024-03-06 10:41:44 934 1

原创 苍穹外卖day8总结

JSAPI下单商户系统调用该接口在微信支付服务后台生成预支付交易单。

2024-03-05 21:14:40 1665

原创 苍穹外卖day7总结

用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。

2024-03-05 01:51:30 1859

原创 苍穹外卖day6总结

1.导入maven坐标2.核心API3.发送请求步骤:创建HttpClient对象创建Http请求对象调用HttpClient的execute方法发送请求。

2024-03-03 18:27:13 740

原创 苍穹外卖day5总结

输入redis-ser就可以按Tab键,系统自动补全;退出:ctrl+c。

2024-03-03 18:10:14 282

原创 苍穹外卖day4总结

在SetmealMapper.xml中一开始我没有加上resultType="com.sky.vo.SetmealVO",导致出现报错500。

2024-03-02 22:38:55 212

原创 苍穹外卖day3

1创建时间datetimeinsert2创建人idbigint3修改时间datetimeinsertupdate4修改人idbigi自定义注解AutoFill,用于标识需要进行公共字段自动填充的方法自定义切面类,统一拦截加入了AutoFill注解的方法,通过反射为公共字段赋值在 Mapper的方法上加入AutoFill注解技术点:枚举、注解、AOP、反射。

2024-03-01 00:23:46 440 1

原创 苍穹外卖day2总结

PostMapping后没有写地址是因为在Controller最初就已经写了"/admin/employee",看接口设计中可以知道本身新增员工就是用的这个接口。(这里注意一个点,就是不要把EmplpyeeDTO 写成了loginDTO不然测试时会发现示例参数是loginDTO的参数。由于连接数据库需要用到database,所以最好还是下个idea专业版(网上可以找到教程)。这里一定要设置能识别mysql,不然有报错,而且必须连接数据库。不要直接用常数写在代码中,应该用constant文件管理。

2024-02-28 23:34:15 350

原创 苍穹外卖day1总结

保证后端服务安全(由于前端不能直接请求到后端,所以前端先请求到nginx,再由nginx走内网转发到后端服务器)使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及。提高访问速度(当前端再一次动态请求时,由于在nginx上有缓存,所以提高速度)就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。子模块,存放公共类,例如:工具类、常量类、异常类等。,权重越高,被分配的客户端请求就越多。子模块,后端服务,存放配置文件、的方法,说明方法的用途、作用。

2024-02-27 21:45:21 465

原创 80端口号被占用

4.netstat -ano|findstr "80"(发现127.0.0.1:80仍然被占用)重复了几次上述操作,80端口仍然一直被占用,不知道该怎么办了。3.taskkill /f /t /im winspace.exe(中止该进程)2.tasklist|findstr "8180"(查看是什么占用了端口号)5.net stop http(试试直接关闭http也不行)

2024-02-27 15:52:05 220

空空如也

空空如也

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

TA关注的人

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