自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分层架构的认识

MVC:简单直接,适合小型项目,但易导致 Controller 臃肿。MVP:通过 Presenter 解耦 View 和 Model,适合需要严格分离的场景(如测试驱动开发)。MVVM:通过数据绑定减少胶水代码,适合复杂 UI 交互和现代前端框架。实际开发中,MVVM 是 MVC/MVP 的演进,尤其在前端开发中广泛应用。选择哪种模式取决于框架支持(如 Vue 用 MVVM)、团队习惯和项目复杂度。B/S与C/S架构:定义系统整体结构,关注客户端与服务端的职责划分和通信方式。

2025-03-20 09:34:00 432

原创 SpringBoot启动过程中IOC相关内容过程分析

在doGetBean方法中首先从三级缓存中获取对象(首先从singletonObjects中获取对象,如果未获取到且该对象正在创建中,则从earlySingletonObjects中获取。真正执行的方法为doCreateBean方法。当执行SpringApplication.run()方法,会执行SpringApplicaion类中的createApplicatonContext和refreshContext两个核心方法,前者是创建ApplicationContext容器,后者是需要容器管理的对象的创建。

2025-03-17 11:24:55 640

原创 Java中定时任务的创建方式总结

通过合理选择方案,可显著提升系统自动化程度和可靠性。如需进一步优化,可结合 Redis 分布式锁或 Prometheus 监控任务执行状态。笔者在项目中将Timer改为了ScheduledExecutorService,首先具有对高并发和异常隔离的支持,同时还能手动管理线程池。*愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

2025-03-07 14:29:51 526

原创 Springboot中,Mybatis集成PageHelper进行分页

具体表现为,如果 pageSize 设为 0 或极大值,PageHelper 不会执行分页查询而是直接执行 count 查询并返回所有数据,这样可以避免不必要的分页操作,提高效率。不同的数据库有不同的 SQL 语法,特别是对于分页查询来说。当 PageHelper 动态生成用于计数的 SQL 时,它会将查询中的 SELECT 部分替换为 COUNT (*),并且如果有自定义的统计 SQL(比如通过重写 countByExample 等方法),那么这个自定义的 SQL 会被用来计算总数。

2025-03-04 11:27:59 858

原创 Linux中停服导致问题的思考

SELinux可能会阻止某些端口的监听。如果SELinux的策略不允许的应用程序绑定到12020, 13020端口,那么即使应用程序尝试启动,这些端口也不会被监听。可以查看SELinux的日志(通常位于/var/log/audit/audit.log),以确定是否有SELinux拒绝的记录。

2025-02-27 17:57:36 790

原创 Java中的深浅拷贝

至此,在引言中的导致的问题是由于前后使用同一个消息对象导致。每个消息必须独立改变,因为消费是异步的。所以每个消息进入队列必须为不同对象。由于该类中只包含了基本数据类型和不可变的引用数据类型(String),所以可以用浅拷贝来获得新对象,且新对象和原对象互不影响。虽然原本希望减少对象数量的优化策略无法实现,但通过浅拷贝创建对象,也使得代码更加简化,不必重复设置许多相同的属性。*愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

2025-02-21 10:56:38 548

原创 SpringBoot中Mybatis记录执行sql日志

MyBatis默认使用SLF4J作为日志门面,所以需要在项目中选择一个SLF4J兼容的日志实现,比如Logback, Log4j2等。以Logback为例,也是SpringBoot默认日志框架。</</</</

2025-02-14 14:06:23 649

原创 SpringBoot的日志框架

在没有特殊配置的情况下,Spring Boot 会使用 Logback 作为日志系统,将日志输出到控制台。同时,也集成了 SLF4J(Simple Logging Facade for Java)作为日志门面,是一种抽象层,用于将应用程序代码与底层的日志系统分离开来,使得应用程序可以在不修改代码的情况下,通过配置切换不同的日志实现。在 Spring Boot 中,Logback 日志框架默认的配置文件在 resources 的 logback-spring.xml 或 logback.xml。

2025-02-14 13:55:13 292

原创 数据实时推送至前端的主流方法总结

在 Java 后台实现数据实时推送至前端的主流方法主要有以下几种,每种方法适用于不同的场景,具体选择需根据需求权衡。根据具体需求选择最合适的技术栈,必要时可组合使用(如 WebSocket 用于核心功能,SSE 用于辅助通知)。:HTTP/2 允许服务器主动推送资源,但通常用于静态资源预加载,动态数据推送需结合其他技术(如 gRPC)。:客户端发起请求后,服务器保持连接直到有数据或超时,返回后客户端立即重新请求。:基于TCP的双向通信协议,建立持久化连接后,服务端和客户端可主动推送数据。

2025-02-06 16:47:49 1057

原创 WebSocket推送数据快,条数多导致前端卡顿问题解决

在项目中,常常需要前端实时获数据,实现动态刷新的效果。WebSocket 是可选方案之一。在实际情况下,如果WebSocket推送快、数据多,前端处理的压力增加,可能导致前端卡顿的问题。笔者在项目开发中有所遇到,通过本篇文章记录一些可选解决方案,作为技术储备。笔者在项目中,是通过将小消息合并,减少消息发送的频次。同时前端缓存数据,依次处理。通过实施上述策略,显著减少前端卡顿现象,提供更流畅的用户体验。愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

2025-02-06 16:21:41 1511

原创 依赖注入失败异常处理

通过对比这两个 controller 以及方法的异同发现,不能正常注入的方法为 private,可以正常注入的方法为 public。该 private 方法在出现问题之前没有 aop,service 层实例正常注入,方法正常调用。当加入 aop 后,虽然 aop 代理对 private 方法不生效,但是也改变了类的调用过程,导致 service 层实例未正常注入 private 方法中。controller 层 post 方法在调用过程,service 层实例注入为 null,但启动过程不报错。

2025-01-23 09:13:39 256

原创 Java中调用外部脚本的方法总结

通过创建 ProcessBuilder 类的实例来使用。可以先设置各种参数,如运行命令、工作目录、环境变量等,然后再启动进程。直接通过 Runtime 类的 exec() 方法执行命令来创建进程,执行外部程序。// 3.List或Array。

2025-01-23 07:42:51 800

原创 软件开发中问题的排查思路总结

软件开发中问题的排查思路总结

2025-01-11 06:46:01 656

原创 #!/bin/bash^M 坏的解释器:没有哪个文件或者目录

以上方法可以是通过网络和自己实践总结,如有问题,还请批评指正。推荐使用vim编辑器,可以在shell脚本中直接执行,而不需要交互式操作。愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

2024-12-26 14:06:42 1006

原创 SpringBoot启动执行操作实现

最后补充一下Spring Boot启动顺序初始化阶段Spring Boot 应用程序开始初始化,创建并配置各种 Bean。这个阶段包括读取配置、初始化数据源等。CommandLineRunner 和 ApplicationRunner在所有 Bean 初始化完成后,但还没有处理任何请求之前,Spring Boot 会调用所有实现了 CommandLineRunner 或 ApplicationRunner 接口的 Bean 的 run 方法。

2024-12-12 17:58:00 814 2

原创 Mybatis的批量操作

每种方法都有其适用场景和限制。例如,使用 标签生成的批量 SQL 在某些数据库中可能因为 max_allowed_packet 大小限制而失败。因此,在选择批量处理方案时,需要根据具体的业务需求和数据库特性进行综合考虑。愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

2024-11-28 14:16:55 1728

原创 SpringBoot项目打包自动获取Git revision number写入文件

由于项目在开发过程中,代码在不断提交,可能无法找到与出现问题的JAR相对于的源码版本来调试。所以这就需要在每次打包部署的时候,就记录下当前提交的版本revision number,以便可以在出现问题的时候可以回退到version,进行调试。在完成了上述配置之后,当通过 Maven 打包 JAR 文件时,Git 版本号会被自动写入到 /src/main/resources/version 文件中。最后,在的应用程序中,可以读取 version 文件中的版本号,并在需要的地方显示它。

2024-11-20 17:47:29 406

原创 将可执行文件部署为windows服务

将可执行文件部署为windows服务。

2024-11-14 09:36:03 343

原创 Windows 上Mysql的安装和卸载

Windows 上Mysql的安装和卸载。

2024-11-14 09:27:32 544

原创 对计算机架构的认识

4.Windows Server:2022 数据中心版 64位中文/英文版,2019 数据中心版 64位中文/英文版,2019 with Container 数据中心版 64位中文/英文版,2016 数据中心版 64位中文/英文版,2012 R2 数据中心版 64位中文/英文版。工作中接触到了计算机架构这个概念。总的来说,计算机架构主要是描述硬件层面的处理器设计,但这种硬件设计又直接影响到软件,特别是操作系统的设计和实现。计算机架构的核心是硬件层面的设计,既可以描述硬件的处理器,也可以涉及软件的操作系统。

2024-11-08 15:35:14 778

原创 SpringBoot后端服务重定向

SpringBoot 中的重定向

2024-11-01 11:41:08 1556

原创 Java权限修饰符的设计

最近在工作中使用了模板方法设计模式。在设计抽象类属性的权限修饰符时,使用private,并提供公有的getter,setter方法,类似于普通类的设计。然而发现在其子类中,如果想要访问父类的属性时,只能通过其get,set方法。有些不方便,于是重新学习了Java的权限控制。如果抽象类中的属性需要在子类中被访问或修改,但又不想让它们对类的外部可见,通常会将这些属性设置为 protected。// 其他抽象方法和具体方法在这个例子中,name 属性被设置为 protected,以便在子类中访问。

2024-10-18 14:41:44 456

原创 系统文件异常被删除排查

SpringBoot后端文件被异常删除问题排查

2024-09-29 15:20:28 498

原创 Linux 开机启动服务

在Linux上设置Redis服务开机自动启动通常涉及到创建一个systemd服务单元文件。

2024-09-20 16:08:28 216

原创 spark on yarn集群调优

在client模式下运行,观察运行日志,使得大多数计算是PROCESS_LOCAL,同时application运行时间减少了,才是有效的优化。spark中的本地级别有:PROCESS_LOCAL(进程本地化,效率最高), NODE_LOCAL(节点本地化), PACK_LOCAL(机架本地化), ANY, NO_PREF。在实际运行中我们希望的是大多数计算是进程本地化或节点本地化。分布式存储是大数据技术的核心,而为了提高大数据计算的效率,使计算靠近数据,减少移动大量数据而产生的网络io和磁盘io。

2024-08-27 18:07:14 712

原创 调用toJSONString方法,value为null所对应的key被舍弃

fastjson的使用过程中,当调用JSONObject对象的toJSONString()方法,将对象格式化为json字符串时。若某个key的value为null时,这个key在最总的字符串中将被舍弃。

2024-08-27 17:44:31 495

原创 RESTful 风格编程

RESTful(Representational State Transfer)架构风格是一种的和,基于HTTP协议,可以利用URI(Uniform Resource Identifier)来访问和操作资源。在RESTful设计中,资源的组织和访问遵循一定的原则,以提高系统的可读性和可维护性。

2024-08-22 17:05:21 694

原创 多线程下任务状态异常的问题解决

当方法上标注了@Transactional注解时,整个方法体内的所有数据库操作都会在一个统一的事务范围内进行。这意味着事务会在方法执行开始时开启,并在方法正常完成时提交,或者在方法中抛出未被捕获的异常时回滚。

2024-08-22 16:58:46 896

原创 ConcurrentModificationException 异常处理

ConcurrentModificationException 是并发编程中常见的问题,通常是因为集合被多个线程共享,并且在迭代过程中被意外修改。通过上述解决方案,可以有效地避免这类问题的发生。

2024-08-05 13:55:58 778

原创 开发中异常处理

java中异常的认识和使用

2024-07-26 13:30:35 707

原创 SpringBoot中AOP的使用

创建一个切面类,使用@Aspect注解标记,并在其中定义切点(Pointcut)和通知(Advice)。// 这是一个切点签名,所有在service包下的方法都将被匹配 } @Before("allServiceMethods()") public void logBefore(JoinPoint joinPoint) {// 前置通知,在方法执行前打印日志 String methodName = joinPoint . getSignature() . getName();

2024-06-28 13:31:07 1294

原创 常用Linux命令总结

Linux操作系统以其强大的功能、高度的稳定性以及开源的特性,成为了服务器管理、编程开发、云计算等领域不可或缺的基石。以下为工作中常用的Linux指令汇总,有错误指出希望大家指正。

2024-06-20 13:38:35 697

原创 Git的认识和使用

git的认识和开发中的使用

2024-06-19 13:55:38 706 1

原创 MySql索引

Mysql的索引是在存储引擎中实现,不同储存引擎的索引都不一定完全相同。

2023-07-25 11:09:49 71

原创 RabbitMQ初步学习

RabbitMQ 基本学习

2023-07-18 17:55:08 91 1

winsw-2.1.2-bin.zip

可用于将windows进程转为windows服务管理

2024-11-18

空空如也

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

TA关注的人

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