框架与微服务

浏览该分类下的所有文章

将Spring Boot项目部署到阿里云CentOS7并设置关闭命令行终端项目不停止运行

本文介绍了在阿里云 CentOS7 上部署 Spring Boot 项目并实现关闭终端后仍保持运行的完整流程:先在 yml 中更改数据库 IP,执行 clean‑package 打包得到 jar;登录云服务器,创建目录并上传 jar;编写 startup.sh 脚本,使用 `nohup java -jar /myworkspace/blog.jar --server.port=8081 &` 启动并将其设为可执行;通过 `chmod -R 777` 授权后运行脚本,使用 `tail -f nohup.out` 检查日志确认启动;提供了 Nginx HTTPS 配置参考;最后给出查询和 kill 进程停止 Spring Boot 的命令。

Hutool:让Java开发更简洁高效

Hutool 是一套面向 Java 开发的实用工具库,涵盖字符串、文件、网络、JSON 等常见需求。文章介绍了在 Maven 中引入 hutool‑all 的方式,并通过 StrUtil、FileUtil/IoUtil、HttpUtil、JSONUtil 四个示例演示了字符串去空白、文件读写、HTTP 请求及 JSON 转换的简洁用法。使用 Hutool 可显著简化代码、提升开发效率,是 Java 开发者的得力助手。

实现异步天气数据获取与Spring缓存集成

本文介绍在 Spring Boot 中通过 @Async 实现天气数据的异步获取,并使用 @Cacheable 将结果缓存,降低对高德天气 API 的重复调用。示例代码演示了获取客户端 IP、解析地区、调用高德地理编码和天气接口、处理返回数据并把天气信息写入模型。文中说明了自定义 IP 解析工具、API Key 替换、RestTemplate/ WebClient 选择以及项目需引入 Spring Cache 与 Spring Web 的前置条件。结合异步与缓存后,可提升响应速度、减轻服务器负载、改善用户体验。

响应式编程与Project Reactor

响应式编程以数据流和事件为核心,强调异步、非阻塞和背压控制。Project Reactor 是 Java 的实现,提供 Reactor Core(Mono、Flux)、Reactor Netty 与 Reactor Spring 等组件,支持流的转换、过滤、聚合以及线程调度。Mono 表示单值或错误,Flux 表示零到多值流。背压让消费者调节生产速率,Schedulers 控制并行执行。结合 Spring WebFlux,可用 Flux.interval 等操作轻松构建高并发、低延迟的响应式 Web 服务,实现高吞吐量和弹性伸缩。

SpringBoot接口加密解密工具

本文介绍了一个基于 SpringBoot、通过注解实现的接口加密解密工具。工具支持 Base64、DES、3DES、AES、RSA 等对称/非对称算法以及 MD5 加密,只需在接口上添加 @ZxfEncryptResponse 或 @ZxfDecryptRequest 并指定 AlgorithmType 即可完成响应加密或请求解密。使用步骤包括拉取代码、打包成 jar、在项目中引入依赖并在配置文件中配置相应的密钥(DES、3DES、AES、RSA 公私钥),提供了一套可直接使用的密钥示例以及示例代码。项目源码已开源于 Gitee。

Spring定时任务

Spring在项目中通过Spring Integration模块提供定时任务功能,核心接口为TaskExecutor(执行Runnable)和TaskScheduler(调度任务)。常用实现包括ThreadPoolTaskExecutor和ThreadPoolTaskScheduler,满足大多数需求。使用时在配置类上加@EnableScheduling,标注@Scheduled的方法会被自动调度,方法必须无参无返回。默认单线程,可通过实现SchedulingConfigurer或在配置文件中设置spring.task.scheduling.pool.size来扩展线程池。@Scheduled支持cron表达式、fixedRate、fixedDelay和initialDelay等参数,分别控制执行频率、间隔和启动延迟。

HTML获取SpringBoot从model传的值

本文说明了在 Spring Boot 中如何通过 Controller 的 Model 向前端页面传递数据,并在 HTML 模板中使用 Thymeleaf 语法 [[${...}]] 获取并显示这些值。文章给出典型的 Controller 代码示例(使用 model.addAttribute 将数据放入模型),以及对应的 HTML 写法,演示了渲染后的效果图,帮助读者快速掌握后端数据在前端页面的读取与展示方法。

Spring Boot

Spring Boot 是基于 Spring 的脚手架,遵循“约定优于配置”,能够快速搭建独立、准生产级项目。通过 Starter(Maven POM)一次声明即可引入所需依赖,简化包管理。项目入口类的 main 方法调用 SpringApplication.run,完成环境准备、容器创建、Banner 打印、监听器通知等启动流程。@EnableAutoConfiguration 结合 spring.factories 中的 AutoConfiguration 类实现自动装配,@Conditional 系列注解根据类、Bean、属性等条件决定 Bean 实例化。核心注解 @SpringBootApplication 包含自动配置、组件扫描等功能,使开发、部署效率大幅提升,并天然支持云平台集成。

Spring

Spring核心是IoC和AOP,IoC通过DI由容器实现,容器分BeanFactory(延迟、轻量)和ApplicationContext(完整、预实例化)。Bean是POJO,由容器管理,可用@Component、@Service等注解声明,@Autowired/@Resource实现注入,@Scope定义单例、prototype、request、session等作用域,@PostConstruct/@PreDestroy控制生命周期。循环依赖通过单例的三级缓存(singletonFactories、earlySingletonObjects、singletonObjects)解决。@Autowired按类型注入,@Resource默认按名称注入。

Spring MVC

Spring MVC 基于 MVC 模式,将系统划分为 Model(数据)、View(界面)和 Controller(业务逻辑)三层,降低耦合便于维护。DAO 层负责统一的数据访问,可使用 Spring JDBC、Hibernate、MyBatis 等实现。请求经由 DispatcherServlet、HandlerMapping、HandlerAdapter 处理,返回 ModelAndView,由 ViewResolver 解析视图并渲染,支持 HTML、JSON、PDF 等多种媒体。常用注解包括 @RequestMapping、@RequestParam、@RequestBody、@PathVariable 等,用于映射路径、绑定参数和处理请求体。拦截器实现 HandlerInterceptor,提供 preHandle、postHandle、afterCompletion 三阶段,可在 WebMvcConfigurer 中注册;对 Controller 用拦截器,对所有请求用 Filter,针对 Bean 用 Spring AOP 进行拦截。

MyBatis & 其他

本文系统阐述了 MyBatis 与 JPA 的核心差异:映射方式、可移植性、日志与 SQL 优化等;说明 MyBatis 支持的参数类型、实现一对多关联的两种 XML 配置(嵌套查询、嵌套结果),并比较 # (预编译防注入)与 $ (直接拼接、用于动态列)用法及适用场景。进一步介绍了 XML 与 Mapper 接口的 namespace 绑定、分页实现方式及其性能、以及一级、二级缓存机制。随后简要对比了 cookie 与 session 的存储位置、容量、安全性和适用场景,解释了 session 工作原理。最后覆盖了 GET/POST 区别、400 错误含义、请求乱码处理、Spring Boot 定时任务实现、日志 AOP 设计以及 Spring Boot JPA 的概念与实现。

分布式(一)

CAP 原则指出分布式系统只能同时满足一致性、可用性、分区容错三者中的两项。高并发指大流量场景,需要在架构、编码、产品层面进行整体设计,目标是实现高性能、高可用和高扩展,并通过响应时间、TP99、可用率(3~4 个 9)和线性扩容等指标衡量。常用的实践包括纵向/横向扩展、分层架构、缓存、限流、异步化、容错切换、降级、监控等。分布式存储可采用中心化(HDFS)或无中心(Ceph、Swift)架构,实现数据分片与一致性哈希。分布式事务常用 2PC 与 TCC 两阶段方案,分别在一致性、单点故障和并发性能上各有优劣。