- 博客(52)
- 收藏
- 关注
原创 idea自动在运算符前后加空格
使用方法:在后面空格前按 快捷键 按Whole file然后按RUN就好了。快捷键:Ctrl+Alt+Shift+l。
2025-02-25 16:10:44
156
原创 同步git远程分支
当在远程新建了分支时,本地未更新新分支时,可以使用git fetch origin或者git remote update origin --prune命令更新。
2025-02-21 09:00:28
379
原创 神领物流day3支付宝支付的调用的问题
需要在数据库的配置文件表,修改自己的appid,支付宝公钥,应用私钥(应用私钥需要通过支付宝开放平台密钥工具转化为PKCS8 形式);然后需要注释掉”https“,只保留域名即可(不需要前缀和后缀)域名地址也要更改为自己的。
2025-02-19 10:55:07
161
原创 Java并发编程
Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可能的话还有源代码的行数。
2024-09-23 13:35:49
258
原创 短链接day10
用户横向越权是指在系统中,用户 A 能够访问或操作用户 B 的数据或功能,而这种访问或操作是未经授权的。这种安全漏洞通常出现在访问控制不严格或错误配置的系统中。如何复现用户横向越权?咱们短链接监控有四个获取监控数据方法,假设系统有两个用户:用户 A 和用户 B。用户 A 创建短链接/aaaaaa,用户 B 创建短链接/bbbbbb,只要用户任意登录,就可以访问任意创建的短链接监控数据。
2024-07-18 12:51:15
887
原创 短链接day9
比如网络宕机了,messageQueueIdempotentHandler.delMessageProcessed(id.toString())未执行,因为ack没有得到,所以mq会进行重试,会检查messageId有没有,如果有的话就会返回失败。所以在判断标识是否存在时,当已经存在标识时,还需要判断消费流程是否执行完成,防止未执行完成时,直接失败。因为这个key其实是存在redis中的,如果时间过长,redis中缓存的key数据量就会大,占用内存多,所以设置时间短一些,可以减少key存储的数量。
2024-07-17 15:39:15
1238
原创 短链接day8
不知道为什么我的后管系统报错【用户Token验证失败】,但是调试中,只有admin的filter用来两次,其中都没有走错误,所以不知道会报错。导致后面的都无法校验了。不知道是哪里复制错了,反正就是一顿报错,改了这个又改那个,还是报错。:在某些场景下,我们可能想要表示某个属性不应该映射到数据库表的任何列上。logdo新增networt、device、local属性。字段)的值为NULL,则使用0作为替代值;最后,这个表达式的结果被命名为。不是NULL,则直接使用。这段代码的作用是:如果。
2024-07-16 15:59:19
233
原创 短链接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
759
原创 短链接day6
缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短一些,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击。
2024-07-13 00:02:30
1220
原创 短链接day5
在MyBatisPlus中,当实体类的属性是基本数据类型(如int)而不是其包装类型(如Integer)时,可能会遇到一些特殊行为,尤其是在动态SQL生成的场景中。但如果是int类型,由于它不能为null,在实体类实例化时,默认值为0,这可能导致以下情况: 如果你本意是想根据某个条件动态地决定是否添加到查询中,而这个条件对应的实体类属性是int类型,默认值0会被误解为有效的查询条件,即where子句中会包含这个字段等于0的条件。的实例,同样支持链式调用各种条件方法来构建查询条件。
2024-07-11 17:43:49
822
原创 短链接day4
如果用身份证号+名字去找就是URN(身份证号+名字 无法确认资源的地址)。在Java类库中,URI类不包含任何访问资源的方法,只能标识资源。URL类可以访问资源,可以获取指定资源的流信息。由于海量数据,并且为了防止多次查询数据库,需要去查缓存,所以需要用分布式锁,从而这个用布隆过滤器实现(在用户注册时,同样使用了)。打包工具,在admin和project的pom中添加,用于联调前端,这个打包插件会让打包有一个直接可以启动的spring文件。为了防止死循环,需要设置一个最大的重置次数。记住是加了反引号的!
2024-07-10 17:26:19
497
原创 短链接day3
JSONField注解可以用在方法(method),属性(field)以及方法中的参数(parameter)上。JSONField中的name属性用来指定JSON串中key的名称。在修改功能实现时,会出现请求成功了,但是数据库信息未更改,原因是token已经过期了,所以需要重新登录。其中,@JSONField(name = "id")来设置userinfodto中的userid。设置线程安全的TTL,实现跨线程的异步传输。在新增之前,需要判断gid是否是唯一的。删除一般用软删除,所以用update做。
2024-07-09 17:52:55
379
原创 spring security的demo
还是不太会,有人有更详细的资料分享一下,还有sa-token的demo加说明。WebSecurityConfigurerAdapter已被弃用。
2024-07-09 12:51:24
419
原创 责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。责任链模式允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。责任链模式通过将多个处理器(处理对象)以链式结构连接起来,使得请求沿着这条链传递,直到有一个处理器处理该请求为止。
2024-07-09 10:56:24
537
原创 EasyPOI与Apache POI
在读写数据的时候,优先是先将数据写入内存,优点是读写性能非常高,但是当数据量很大的时候,会出现oom,当然它也提供了 sax 模式的读写方式,需要调用特定的方法实现。如果你主要处理 Excel 文件,而且希望简化开发流程,EasyPoi 或 EasyExcel 都是不错的选择,具体可以根据个人或团队的偏好和需求选择。基于sax模式进行读写数据,不会出现oom情况,程序有过高并发场景的验证,因此程序运行比较稳定,相对于 easypoi 来说,读写性能稍慢!
2024-07-08 11:22:57
600
原创 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
389
原创 @Entity与@target的区别
Entity说明这个class是实体类,并且使用默认的orm规则,即class名就是数据库表中表明,class字段名即表中字段名。@Entity注解指明这是一个实体Bean。@Table注解默认情况下只会完成表和实体之间的映射,声明才对象映射到数据库的数据表,通过它可以为实体指定表(table)。@Entity注解和@Table注解都是Java Persistence API中定义的一种注解。
2024-07-08 09:40:40
476
原创 短链接学习day2
需要注意的是,转换过程中,BeanUtil.toBean()方法通过反射机制创建了目标类型的实例,并将数据源对象的属性值复制到目标对象中。但是为了防止redis的主节点挂掉后,从节点变成主节点时,有些数据还没复制,就会导致脏数据,就会可能导致用户名重复,所以为了防止这个情况,我们需要将username设置为唯一索引,让数据库兜底。因为用户名不是特别重要的数据,如果说我设置用户名为 aaa,系统返回我不可用,那我大可以在 aaa 的基础上再加一个a,也就是 aaaa。一定要记得写枚举的时候是用逗号分割。
2024-07-05 15:01:57
1289
原创 FreeMarker学习记录
FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序,将视图从业务逻辑中抽离处理,业务中不再包括视图的展示,而是将视图交给 FreeMarker 来输出。虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 FreeMarker 生成页面,通过模板显示准备的数据。FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
2024-07-03 15:11:44
356
原创 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
539
原创 数据库连接池
数据库连接池是一个维护数据库连接的池子,它预先创建一定数量的数据库连接,并将这些连接保存在池中,以便应用程序在需要时可以从池中获取连接,而不是每次都创建新的连接。数据库连接是一种昂贵的资源,创建和销毁连接的开销很大。通过使用连接池,可以避免频繁地创建和销毁连接,提高了数据库访问的性能和效率。连接池还可以控制连接的数量,防止连接数过多导致数据库性能下降,同时还可以管理连接的状态、超时和异常处理。C3P0 是一个开源的 JDBC 数据库连接池库,它提供了高度灵活和高性能的连接池实现。
2024-07-03 12:48:45
341
原创 IDEA自定义注释模板
主要一开始我还在includes里面的file header添加了一样的模板信息,导致我创建类时,一下出现多个类文件。可以设置一些公司配置以及类描述。
2024-07-03 10:34:53
303
原创 dependencyManagement使用时无法加载
在加载依赖时,我是直接复制的别人的pom文件,然后里面的依赖是由dependencyManagement管理的,然后我发现我的很多依赖包找不到,查看自己的sdks也是jdk17版本,搜索很久都无法解决。然后突发奇想,把dependencyManagement删掉,看能不能加载依赖,结果加载没错。依赖下载没错过后才又将dependencyManagement加上,其实也想知道为什么会出现这样的效果?
2024-07-03 09:19:38
160
原创 黑马头条day6总结
我看教程的代码中没有,【@ComponentScan({"com.heima.apis","com.heima.wemedia"})】,所以我删除了,删除了就开始报错,找不到某某bean,所以我还是保留了。一开始没加@EnableFeignClients(basePackages = "com.heima.apis")导致获取ischeduleClient错误,找不到bean。
2024-05-28 15:51:48
317
原创 黑马头条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
1243
原创 黑马头条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
409
原创 黑马头条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
1958
原创 苍穹外卖day12总结
1.介绍Apache POI是一个处理MiscrosoftOffice各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对MiscrosoftOffice各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。Apache POI的应用场景:•银行网银系统导出交易明细•各种业务系统导出Excel报表•批量导入业务数据2.入门案例·Apache POI的maven坐标:将数据写入Excel文件:读取。
2024-03-08 00:23:45
367
1
原创 苍穹外卖day11总结
1.ApacheECharts1.ApacheECharts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ApacheEcharts总结:使用Echarts,重点在于研究当前图表所需的数据格式。通常是需要后端提供符合格式要求的动态数据,然后响应给前端来展示图表。2.营业额统计。
2024-03-07 18:50:18
656
1
原创 苍穹外卖day10总结
WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。HTTP协议和WebSocket协议对比•HTTP是短连接•WebSocket是长连接•HTTP通信是单向的,基于请求响应模式•WebSocket支持双向通信•HTTP和WebSocket底层都是TCP连接应用场景视频弹幕、网页聊天、体育实况更新、
2024-03-07 09:26:36
976
1
原创 苍穹外卖day9总结
这意味着,如果你传递一个 List 类型的参数,那么 MyBatis 只会将 List 对象中的第一个元素作为参数进行处理,而忽略掉其它元素。`Stream`接口中的`collect()`方法用于将流中的元素收集到一个集合中。通过`collect()`方法可以指定将流中的元素收集到某种集合类型中,比如`List`、`Set`、`Map`等,也可以实现自定义的收集逻辑。方法用于将集合转换为一个流(Stream),这样就可以利用流式编程的特性对集合中的元素进行各种操作,比如过滤、映射、排序、归约等。
2024-03-06 10:41:44
1229
1
原创 苍穹外卖day6总结
1.导入maven坐标2.核心API3.发送请求步骤:创建HttpClient对象创建Http请求对象调用HttpClient的execute方法发送请求。
2024-03-03 18:27:13
786
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人