- 博客(54)
- 收藏
- 关注
原创 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.con
java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) at org.springframework.test.context.supp
2025-03-26 23:56:39
605
原创 20.课程发布(分布式事务(CAP理论))
为了提高网站的速度需要将课程信息进行缓存,缓存信息放在redis中,将课程索引信息插入到es的索引中,通过es来进行搜索,这样可以减少访问已发布的课程时,MySQL数据库的压力。同时,课程预览的时候通过freeMarker用tomcat进行渲染,但是tomcat的性能很差,所以课程正式发布之后就不再使用tomcat,而是生成html静态页面放在nginx中,通过nginx来进行处理(生成html页面之后放在minio分布式文件系统中)。要满足可用性,那么数据还没同步过来,还是老的数据,就无法满足一致性。
2025-03-26 16:05:55
466
原创 19.课程发布-freeMarker
使用Nginx的时候,记得清除浏览器资源,负责修改了静态页面的数据之后,也可能一直没刷新,使用的历史数据。应该也可以有自动刷新的办法,此处目前尚未解决。重启nginx,cmd进入nginx的目录,然后nginx.exe -s reload。有一天,服务器放在公网了,就要进行域名的注册,然后告诉供应商域名对应的服务器ip是多少。部署Nginx:代理服务器,所有的请求都通过nginx进行代理,转发到后台的服务器上。模板引擎技术:Freemarker,可以在服务端生成网页来返回给浏览器。
2025-03-21 15:11:33
148
原创 Centos时间同步
一、安装NTP服务systemctlenabled此外,如果系统中安装了chrony服务,它可能会与ntp服务冲突,导致ntp服务开机自启失败。可以执行查看chrony服务状态,若处于运行状态,执行停止该服务,并执行禁止其开机自启7。[root@从你执行的命令和得到的输出结果来看,你已经成功停止并禁用了chronyd服务。这条信息表明系统已经移除了chronyd服务在目录下的符号链接,也就意味着chronyd服务不会在开机时自动启动了。接下来你可以继续按照之前的步骤操作,确保ntpd。
2025-03-12 14:01:11
1174
原创 16.上传视频-断点续传
采用方式:使用io流上传数据的过程。通过流进行网络传输。使用断点续传,就可以在网络中断的时候从断点处继续下载。一般采用分块上传的方式,如果网络断掉,可以从当前块所在位置重新上传,也可以从当前点所在位置重新上传。分块的方式稍微会更简单一点。总结:Minio 要求分片上传的最小单位为 5MB,但支持上传大于 5MB 的文件(通过分片合并实现)。
2025-03-05 16:45:18
198
原创 15.@Transaction注解成功的条件
③要想使得调用的方法成为一个代理对象,就将这个方法注入到service中。①添加@Transactional注解。
2025-03-03 09:55:12
375
原创 minio服务器访问图片,一直是图裂
多次排查后发现原因,前端的url后面加了注释,造成了url路径后面有空格,所以访问图片失败。②minio在nacos的配置等等完全正确,图片地址已存入数据库,为什么访问图片还是图裂呢?①配置了正确的跨域请求。
2025-02-28 01:14:58
250
原创 14.学成在线开发小结
1.统计两张表的数据,表1和表2是一对多的关系,如果既要统计表1又要统计表2的数据,要分开进行统计,否则表1一条数据在表2中可能有多条数据对应,导致表1的数据被多次统计。2.nacos配置文件的数据读取不到可能原因有:①bootstrap.yaml文件配置错误(容易发现)。②没有在使用的配置类中添加@Bean等注解将其注入为一个容器。
2025-02-17 23:48:00
210
原创 13.minio使用注意事项 io.minio.errors.InvalidResponseException: Non-XML response from server.
②注意使用的虚拟机网络是否正确,最好直接使用net--host。③注意虚拟机和Windows系统的时间差异不要过大。①注意挂载的端口号是否正确。
2025-01-17 22:15:10
549
原创 11.配置文件的优先级
在启动参数中配置是优先级最高的方式。如果有nacos配置,nacos配置优先。如果需要以本地的优先,需要添加配置。初步原因是有一个文件没删除。
2025-01-13 21:30:42
236
原创 Nacos
例如,在开发环境中,你可以使用。①bootstrap.yml或(bootstrap.properties)优先加载,这个文件用于应用程序的引导阶段,通常包含一些系统级别的配置参数,这些参数一般是不变的。补充:在对应 nacos 的使用还是需要配置在 bootstrap 配置文件中,需要在启动时读取 nacos 配置文件,从而获取 nacos 配置中心的配置文件。①在微服务项目中,没有配置中心的情况下,前端对接时,需要写入每个微服务对应的端口号,工作成本很高,有了配置中心就可以进行统一管理。
2025-01-10 17:49:15
713
原创 2025.01.09工作总结
④添加课程章节功能,没有关联的子章节id,使用inner join会导致大章节数据丢失,应该使用Left join查询出左表大章节全部的数据。③feign的底层技术是使用的http,而dubbo的底层技术使用的rpc。如果远程接口调用比较频繁,建议使用dubbo。⑤将微服务注册到nacos上面的时候,以命名空间id为准,最好命名空间名称和命名空间id一致,避免出错。①maven报找不到符号异常,可能是jdk和依赖版本不兼容导致的。②项目上线后会使用域名,www.
2025-01-10 00:35:05
90
原创 Redis
Redis的哨兵和主从模式基本已经可以实现高可用和读写分离,但是在这种模式下每台Redis服务器都存储相同的数据,浪费内存空间,所以Redis加入了Cluster集群模式,实现了Redis的分布式存储,也就是说Redis节点上存储不同的内容。丰富的数据类型 Redis不仅仅支持简单的key-value类型的数据,还支持五种基本数据类型String,list,set,SortedSet,hash等。Redis被广泛应用在缓存方向,与传统数据库不同的是redis的数据是存在于内存中的,因此读写速度非常快。
2025-01-08 21:51:33
330
原创 10.全局异常处理
通过aop的机制把我们的注解增强,通过注解@ControllerAdvice写一个增强类,把我们遇到的异常信息捕获。通常和@ExceptionHandler结合使用,来处理SpringMvc的异常信息。使用try-catch会造成项目冗余,所以我们进行全局异常统一处理。②自定义异常类型,继承RuntimeException运行时异常。①异常信息规范化,和前端约定好返回的异常信息模型。③自定义全局异常处理器,处理自定义异常和系统异常。实际形目中不会返回500,而是会自定义一场相应状态码。
2025-01-05 18:09:23
147
原创 Redis
总结:redis是一个性能极高的内存数据库,支持丰富的数据结构,提供持久化,事务等功能,非常适合缓存,消息队列等场景,被广泛应用于各种大型系统中。pfmerge newKey key1 key2 ...:合并key1和key2中的元素,并且剔除其中重复的元素,产生新的集合newKey。用户在线状态跟踪:每个用户可以用一个位来表示其在线或离线状态,位图的偏移量可以对应用户ID,便于高效地检索和更新用户的在线状态。活跃用户计数:在社交网络或在线社区中估计活跃用户的数量,帮助评估平台的活跃程度和用户参与度。
2025-01-05 16:59:40
796
原创 mybatis分页插件的原理
首先将分页参数放到ThreadLocal中,拦截执行的sql,根据数据库类型添加对应的分页语句重写sql,例如:(select * from table where a )转换为(select count(*) from table where a limit,)计算出了total总条数,pageNum当前第几页、pageSize每页大小和当前页的数据,是否为首页,是否为尾页,总页数等。ThreadLocal是现成的本地数据,继续执行的时候就可以非常方便的取出线程的本地数据。
2025-01-05 16:58:49
233
原创 SpringCloud
Zuul是基于servlet实现的,是阻塞式编程,gateway是基于Spring5中的WebFlux,属于响应式编程,具备更好的性能。Ribbon默认采用的是懒加载,即第一次访问时才会去创建LoadBanlanceClient,请求时间会很长,而饥饿加载则会在项目启动时创建,减少第一次访问的耗时,饥饿加载可以通过yml配置的方式启动加载。因为我们在使用restTemplate进行远程调用,请求服务的时候,我们的url是写死的。缺点:高度耦合,扩展性差,适合小型项目,例如学生管理系统。
2024-12-09 00:49:13
468
原创 项目面试题
如果需要Controller返回jsp或者html页面,就不能使用@RestController,因为其只能返回Json、xml数据。
2024-12-09 00:49:07
126
原创 Springboot
Springboot默认支持内容协商机制,但Springboot默认只支持返回Json格式的数据,要返回xml格式的数据,需要导入jackson-dataformat-xml让Springboot支持返回xml数据。如果我们的Java服务同时为安卓手机和浏览器同时提供服务,浏览器期望接收的是JSON格式,安卓手机期望接收的是xml格式,我们不需要写两个方法,Springboot的内容协商机制可以解决这个问题。还可以使用配置请求参数的方式来实现内容协商机制,也就是请求参数值不同,返回不同的数据。
2024-12-05 21:53:08
378
原创 4.学成在线开发常见知识
Maven中,通过compile将Java文件编译成.class文件,使用clean清理掉.class文件。target目录存放生成的.class文件以及相关配置文件。package打包生成的文件也会存放在本地仓库中,install打好的包上传到本地仓库,deploy打包并上传到远程仓库。
2024-12-05 00:19:02
145
原创 SpringMVC
HandlerExecutionChain:处理器执行链,包含两部分内容,Handler和HandlerInterceptor,系统会有一个默认的HandlerInterceptor,如果有额外的拦截处理,可以添加拦截器进行设置。DispatcherServlet:前端控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合,是SpringMVC中的核心模块。HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要进行一些拦截处理,可以通过实现这个接口完成。
2024-12-04 17:22:11
697
原创 spring
spring即指spring framework,也就是spring框架,它是一个分层的面向切面的Java应用程序的一站式解决框架,是spring技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的。④一站式:在IOC和AOP的基础上,spring可以整合各种企业级应用的开源框架和优秀的第三方库,同时spring旗下的项目已经覆盖了广泛的领域,spring framework能解决很多方面的功能性需求。IOC容器管理的对象即为spring bean,它和关键字new创建的对象没有任何区别。
2024-12-03 18:03:12
596
原创 创建线程的四种方式
线程是操作系统的概念,操作系统内核实现了线程这样的机制,并对用户层提供一些API供用户使用(例如Linux系统的Pthread库)。线程调度是随机的,随机调度使得一个程序在多线程环境下,执行顺序存在很多的变数,我们需要保证在任意执行顺序下,代码都能正确的执行得到预期的结果。⑧join():a线程调用b线程的join方法,a线程会进入阻塞状态,直到b线程执行完毕,a线程才结束阻塞状态。⑦yeild():直接使用,不需要被某个类使用,作用是释放当前CPU的执行权,重新抢夺当前CPU的执行权。
2024-12-02 16:46:49
452
原创 ①MySQL三大范式
确保数据表的每个字段具有原子性,也就是说数据库中每个表的字段的值为不可拆分的最小数据单元。第二范式是在第一范式的基础上,确保了数据表中除了主键之外每个字段都必须依赖主键。规范数据库表的设计,设计出简洁、优雅的数据库表结构。这是数据库内部的存储表示。在 MySQL 数据库中,
2024-11-16 20:17:01
268
原创 Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could
通过看报错得知,是item-service服务的url没有提供,将通过负载均衡去寻找一个。此处可以看到我们是在nacos控制台进行了配置,然而。nacos控制台空空如也,找到了报错原因。nacos配置成功后,启动成功。
2024-10-30 17:48:21
251
原创 java.util.concurrent.TimeoutException: Waited 3000 milliseconds (plus 15 milliseconds, 331700 nanose
就是端口号忘了改,修改端口号之后启动成功。
2024-10-28 17:49:30
568
原创 java.lang.ClassNotFoundException: /port=8090
启动Sentinel并配置端口号报错。原因是不能通过右键通过powershell窗口来执行这个命令,而应该通过cmd窗口来执行这个命令。
2024-10-28 16:27:24
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人