- 博客(34)
- 资源 (1)
- 收藏
- 关注
原创 Spring AOP 核心的技术之一:动态代理
如果目标类实现了接口Spring AOP默认使用 JDK 动态代理。这是 Java 标准库提供的代理方式,并且通常认为基于接口的代理是更优的面向对象实践。Spring 会创建一个实现了目标类所实现的所有接口的新代理类。这个代理类持有对原始目标对象的引用,并通过 InvocationHandler 机制将增强逻辑(AOP Advice)织入。你得到的代理 Bean 可以被赋值给它所实现的任何接口类型,但不能直接赋值给原始的目标实现类类型(除非强制类型转换,但通常不推荐,且可能失败)。如果。
2025-04-07 15:59:50
866
原创 在Linux上安装MySQL
执行上述的SQL会报错,原因是因为设置的密码太简单,密码复杂度不够。我们可以设置密码的复杂度为简单类型,密码长度为4。默认的root用户只能当前节点localhost访问,是无法远程访问的,我们还需要创建一个root账户,用户远程访问。登录到MySQL之后,需要将自动生成的不便记忆的密码修改了,修改成自己熟悉的便于记忆的密码。降低密码的校验规则之后,再次执行上述修改密码的指令。然后输入上述查询到的自动生成的密码, 完成登录 .(FinalShell示例)
2025-02-27 11:08:34
231
原创 push代码的时候报错Failed to connect to github.com port 443 after 21098 ms: Could not connect to server
在使用Git与GitHub交互时,遇到这样的错误信息:“Failed to connect to github.com port 443 after 21090 ms: Couldn‘t connect to server”。这通常发生在使用VPN后,系统端口号与Git端口号不一致时。
2025-02-26 17:38:30
292
原创 解耦日志框架,SLF4J外交官式解决方案
SLF4J全称为Simple Logging Facade for Java,是一个日志抽象层框架。它屏蔽了各种日志框架的实现细节,提供了一个统一的日志记录API。应用程序通过SLF4J的API来记录日志,而SLF4J则决定使用哪个具体的日志实现。这样,如果需要更换底层的日志框架,只需更改配置文件即可,无需修改应用程序代码。
2025-02-25 10:57:01
572
原创 使用BCrypt进行密码加密
在pom.xml文件中添加Spring Security依赖,以使用BCryptPasswordEncoder。在需要对密码进行加密的地方,使用@Autowired注解注入PasswordEncoder接口。当用户登录时,使用matches方法来验证用户输入的密码是否与数据库中存储的加密密码匹配。创建一个配置类,配置一个BCryptPasswordEncoder Bean。类型的列来存储BCrypt哈希值,因为BCrypt哈希不会超过70个字符。将加密后的密码存储到MySQL数据库中。
2024-12-25 17:39:24
341
1
原创 极速看明白SSH用户认证
https://i-blog.csdnimg.cn/direct/8f1934d8053749e98776c194c906cf96.jpeg
2024-12-22 11:01:01
181
原创 JVM问题排查分析
1. 查询业务日志,可以发现这类问题:请求压力大、波峰、遭遇降级、熔断等等,基础服务、外部 API 依赖。\3. 查看性能指标,包括实时监控、历史数据。可以发现假死、卡顿、响应变慢等现象。\4. 排查系统日志,比如重启、崩溃、Kill。\5. APM,比如发现有些链路请求变慢等等。\7. 排除资源竞争、坏邻居效应。
2024-11-03 19:52:54
399
原创 设置HTTP会话(Session)的Cookie域
注意:应用程序只部署在一个域下,通常不需要设置这个属性,因为默认情况下,Cookie的域就是当前请求的域。
2024-11-02 16:49:16
569
原创 解决:我们无法在此设备上激活 Windows,因为无法连接到你的组织的激活服务器。请确保已连接到你的组织的网络,然后重试。如果仍存在激活问题,请联系组织的支持人员。错误代码: 0xC004F074
2.设置KMS(Key Management Service)服务器地址的,它将KMS服务器地址设置为 kms.03k.org。该命令触发自动激活过程,尝试与之前设置的KMS服务器通信,并进行激活操作。连接到KMS服务器,系统可以进行激活验证,从而获得激活状态。1.用管理员身份打开命令窗口。
2024-11-01 13:30:08
9256
5
原创 解决:git SSL certificate problem: unable to get local issuer certificate
在使用Git进行代码交流和版本控制过程中,可能会遇到SSL证书问题。这通常是由于Git客户端无法验证SSL证书的合法性而引起的。当我们尝试与Git服务器建立安全连接时,Git客户端将会验证服务器端提供的SSL证书是否由受信任的证书颁发机构(Certification Authority,CA)签发。如果Git客户端无法找到或验证本地签发者证书,就会出现”unable to get local issuer certificate”或类似的错误。
2024-10-24 17:03:34
6230
1
原创 谈谈对SpringBoot的理解
Spring Boot还提供了优雅关闭应用程序的方式,优雅关闭是指关闭应用程序时它会把正在请求的线程处理完后才关闭。Spring Boot提供了丰富的内置Starter,这些Starter是预定义的依赖集合,可以轻松集成各种主流框架和技术。同时,Spring Boot通过自动配置大大减少了繁琐的配置工作,让开发人员可以直接开箱即用。这意味着您可以将应用程序打包成可执行的JAR文件,直接运行而不需要额外的容器配置,从而简化了部署过程。这样,您可以更专注于业务逻辑,而不用担心依赖的版本兼容性。
2024-10-20 15:44:39
159
原创 在自己的电脑上搭建我的世界Java版服务器
玩Minecraft,就应该搭建一个服务器,用于和小伙伴联机 (doge)本次教程将在Windows本地搭建Java版的MC服务器,并用cpolar内网穿透突破局域网限制,实现在公网环境下跟小伙伴远程联机,超简单配置,无需公网IP,也不用设置路由器。如果你的服务器已经搭建成功,并可以正常在局域网内联机,可以直接跳到第三步,在本地配置cpolar内网穿透,创建隧道映射25565端口,实现异地远程联机。
2024-10-16 15:24:15
869
原创 使用CORS解决跨域问题
(Cross Origin Resource Sharing,跨域资源共享)解决方案中,前端在发送请求前,需要预先用OPTIONS的方式发送一个询问请求,通过该请求得知,在后端支持跨域请求的前提下再发送真正的请求。出于网络安全性方面的考虑,跨域请求会被限制,Spring Boot后端不能直接处理跨域请求,为了解决这一问题,可以在后端项目中引入CORS解决方案。如果发起请求所在主机(也称为域)和处理请求所在主机的协议、域名和端口号这三者中有任何一项不同,那么发出的请求就叫跨域请求。具体来说,在该方法的。
2024-10-16 14:50:55
465
原创 spring 的事务隔离级别
Spring的事务隔离级别是指在并发环境下,事务之间相互隔离的程度。Spring框架支持多种事务隔离级别,可以根据具体的业务需求来选择适合的隔离级别。需要根据具体的业务需求和并发情况来选择合适的事务隔离级别,以确保事务的隔离性和数据一致性。同时,需要注意不同数据库对事务隔离级别的支持可能有所差异,需要进行适当的测试和验证。
2024-10-14 08:40:42
310
原创 SpringBoot为什么要禁止循环依赖
那SpringBoot为什么要要禁止呢?我们都知道Spring解决循环依赖的方式是通过三级缓存,光学这个三级缓存我们就煞费苦心,其实说白了他是Spring框架通过提供这种机制,帮助开发者解决了他们本应自己避免的问题。对象之间的关系如果是互相依赖是一种不合理的设计,避免你做出这种不合理的依赖,SpringBoot进而禁止循环依赖。的版本默认禁止了循环依赖,如果程序中出现循环依赖就会报错。在 SpringBoot。
2024-10-10 17:13:30
319
原创 使用栈实现深度优先搜索
这里我们使用了一个小技巧,对于四个方向的遍历,可以创造一个数组 [-1, 0, 1, 0, -1],每相邻两位即为上下左右四个方向之一。使用栈实现深度优先搜索,但因为栈与递归的调用原理相同,而递归相对便于实现。
2024-10-10 17:04:31
269
原创 MySQL只操作同一条记录也可能会死锁
在MySQL中,即使多个事务仅对同一条记录进行操作,也可能发生死锁。这通常与InnoDB存储引擎的锁管理机制有关。
2024-10-10 16:59:08
451
原创 MySQL中like模糊查询如何优化
在MySQL中,LIKE 模糊查询可能会导致性能问题,特别是当使用通配符 % 开头时,因为这通常会导致全表扫描。
2024-09-29 09:11:16
562
原创 SQL用了函数一定会索引失效吗
在MySQL中,当查询语句中对索引列使用某些函数时,确实可能导致索引失效,迫使数据库执行全表扫描。这是因为函数应用于列值后,数据库无法直接利用索引中储存的排序信息。不过,这并不意味着所有情况都会导致索引失效,具体取决于使用的函数类型和场景。
2024-09-25 09:39:21
356
原创 count(1)、count(*)与count(列名) 的区别
如果需要忽略某列中的 NULL 值,则需使用 COUNT(column_name)。它们之间选取的重要依据在于是否需要忽略 NULL 值及所用数据库的优化情况。)、COUNT(1) 或 COUNT(column_name) 应基于具体需求。如果只是需要统计总行数,可以使用 COUNT(
2024-09-25 08:53:20
394
原创 谈谈对Dos攻击的理解
近年来,随着物联网(IoT )的快速发展,利用未经保护的智能设备进行的DoS攻击也越来越常见,形成了所谓的IoT Botnet攻击。此外,及时更新和修补系统或应用程序的漏洞,加强网络安全培训和意识提高也是重要的预防措施。DoS攻击通常是由单个计算机或少数几个计算机发起的,攻击者通过占用目标系统的带宽、处理能力或其他关键资源,导致合法用户无法访问该系统或服务。DoS(拒绝服务)攻击是一种网络攻击方法,旨在通过向目标系统或网络发送大量的请求、数据包或恶意指令,耗尽其资源,使其无法正常提供服务或导致系统崩溃。
2024-09-21 16:00:07
263
原创 方法引用学习笔记
如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那没有必要再写重复逻辑,可以通过方法引用来使用已经存在的方案。Lambda表达式被对象的实例方法替代的时候,它的形式参数全部传递给该方法作为参数。定义一个测试类(MyStringDemo),在测试类中提供两个方法。定义一个测试类(PrinterDemo),在测试类中提供两个方法。定义一个测试类(StudentDemo),在测试类中提供两个方法。定义一个类(PrintString),里面定义一个方法。
2024-09-18 15:45:45
750
原创 说说反射用途及实现原理
通过反射,我们可以在编译时未知的情况下,获取类的构造函数、方法、字段,并在运行时动态地创建对象、调用方法以及访问和修改字段的值。通过获取类的构造函数,并调用newInstance()方法,我们可以在运行时动态地创建对象,而不需要提前知道具体的类名。反射还允许我们获取类的字段信息,并在运行时对其进行读取和修改。通过获取字段对象并使用get()和set()方法,我们可以访问和修改类的字段,包括私有字段。首先,它提供了一种动态加载类的机制,使得我们可以在运行时根据需要加载外部的类和资源,实现插件化的架构。
2024-09-16 21:26:48
307
原创 为什么SpringBoot的jar可以直接运行
第一个关键点: Spring Boot提供了一个Maven插件(spring-boot-maven-plugin),用于将应用程序打包成可执行的JAR文件。通过执行mvn clean package等命令,可以轻松生成可执行JAR。第二个关键点: 打包生成的JAR文件通常是"Fat JAR"或"Uber JAR",这意味着它包含了应用程序的所有依赖项,包括第三方库和Spring Boot框架本身。这样,JAR文件就成了一个自包含的单一文件。第三个关键点: JAR文件包含一个名为MANIFEST.MF的
2024-09-16 21:24:25
188
原创 OOM一定会导致JVM退出吗
在Java中,发生了OutOfMemoryError(OOM)不一定会导致整个JVM退出。是否退出取决于发生OOM错误的线程和错误处理逻辑。这是一个复杂的问题,具体行为会因应用程序实现方式、错误发生的情境以及错误处理策略而异。
2024-09-16 17:51:22
422
原创 谈谈Java中的==和equals
=是比较地址,但这里a和b是常量,JVM里,常量为了节省空间,是用共享内存的方式放在常量池,所以a和b虽然是两个不同对象,但却是共享了内存地址,所以a==b是返回true。,a和b是用new创建的,所以是在堆空间里被分配了两个不同的空间,所以地址不同,这里a==b返回false,但是,a.equals(b),由于是比较值,是返回true。因为String或Integration类里,已经重写了equals方法,所以在String或Integer对象中,==是比较地址,equals是比较值。
2024-09-11 09:28:49
265
原创 解决连不上Linux上的redis
启动后输入 systemctl stop firewalld 关闭防火墙就OK了。可以通过一下命令查看是否启动。首先确保redis已启动。
2024-09-08 13:31:26
330
原创 git常用命令
git branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)git checkout --track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支。
2024-09-08 11:39:28
556
原创 匿名内部类笔记
匿名内部类:是内部类的简化写法。他是一个隐含了名字的内部类。开发中,最常用到的内部类就是匿名内部类了。new 类名或者接口名() {重写方法;包含了:继承或者实现关系方法重写创建对象所以从语法上来讲,这个整体其实是匿名内部类对象如果我们希望定义一个只要使用一次的类,就可考虑使用匿名内部类。匿名内部类的本质作用是为了简化代码。定义子类重写接口中的方法创建子类对象调用重写后的方法// 1. 定义接口的实现类// 2. 重写抽象方法@Override。
2024-09-08 11:16:48
191
原创 Linux常用命令
tar -zxvf hello.tar.gz -C /usr/local #将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录。tar -zcvf hello.tar.gz./* #将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz。tar -zxvf hello.tar.gz #将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录。
2024-05-09 19:36:52
318
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人