华为OD机试题
字符串分割题目描述给定一个非空字符串S,其被N个‘-’分隔成N+1个子串,给定正整数K,要求除第一个子串外,其余的子串需先合并为一个整体,再按每K个字符组成新的子串,所有新子串之间用‘-’分隔。对于每个新组成的子串,需按以下规则转换大小写: 若子串中小写字母数量 > 大写字母数量:将所有大写字母转换为小写字母; 若子串中大写字母数量 > 小写字母数量:将所有小写字母转换为大写字母; 若大小写字母数量相等:不做转换。 最终将第一个子串与所有转换后的新子串用‘-’连接,输出结果。 输入格式输入为两行,第一行为正整数K,第二行为非空字符串S。 输出格式输出为转换后的字符串。 示例示例1输入 12312abc-abCABc-4aB@ 输出 112abc-abc-ABC-4aB-@ 示例2输入 121212abc-abCABc-4aB@ 输出 112abc-abCABc4aB@ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546import java.util...
SpringCloud
1. 认识微服务 本章从单体架构的优缺点切入,分析大型项目采用单体架构的问题,以及微服务架构的解决思路。 1.1 单体架构 单体架构(monolithic structure):顾名思义,整个项目中所有功能模块都在同一个工程中开发;部署时需对所有模块一起编译、打包;架构设计和开发模式非常简单。 当项目规模较小时,单体架构上手快、部署运维方便,因此早期小型项目多采用这种模式。 但随着业务规模扩大、团队人员增加,单体架构的问题逐渐凸显: 团队协作成本高:数十人协作同一项目时,模块间代码边界模糊,分支合并易陷入 “冲突泥潭”。 系统发布效率低:任何模块变更都需发布整个系统,模块间制约多,一次发布可能耗时数十分钟甚至数小时。 系统可用性差:所有功能作为一个服务部署,相互影响大。热点功能耗尽资源时,会导致其他服务不可用。 单体架构可用性问题演示(以黑马商城为例) 为直观展示单体架构的可用性问题,对黑马商城的 hm-service 模块做如下改造与测试: 修改代码模拟耗时:修改 com.hmall.controller.HelloController 中的 hello 方法,模拟接...
Docker
前言 在学习 Linux 操作系统和项目部署时,我们常遇到命令繁多、软件安装复杂、环境依赖冲突等问题。尤其在微服务时代,成百上千台服务器的部署运维更是挑战。Docker 技术的出现,通过容器化解决了环境隔离与快速部署的问题,让项目部署变得简单高效。 本文基于 Ubuntu 24.04 LTS 系统,整理 Docker 核心知识点,包括基础命令、数据卷、镜像构建、网络配置及项目部署,并补充实用扩展内容。 1. 快速入门 1.1 安装 Docker Docker 支持主流操作系统,但安装方式因系统而异。以 Ubuntu 24.04 LTS 为例,可直接参考官方安装文档:https://docs.docker.com/engine/install/ubuntu/ 按照文档提示逐步执行命令即可,也可参考视频教程操作:https://www.bilibili.com/video/BV183B1Y2EGk/?spm_id_from=333.337.search-card.all.click&vd_source=ffdc8ef30147923fee0d363c8e4b12bb 对于其...
MyBatis-Plus
一、MyBatis-Plus 简介 1.1 什么是 MyBatis-Plus MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,由 baomidou 团队开发维护,核心设计理念是 “只做增强,不做改变”—— 完全兼容 MyBatis 原生功能,不侵入现有代码,同时封装了大量重复的单表 CRUD 操作,让开发者无需手写繁琐的 SQL 或 XML 映射文件,即可快速完成业务开发。 正如其 slogan “TO BE THE BEST PARTNER OF MYBATIS” 所传递的,MP 并非替代 MyBatis,而是作为其 “最佳搭档” 存在。PPT 中用 “润物无声,如丝般顺滑” 形容其特性,恰是因为引入后不会对现有 MyBatis 工程产生任何干扰,原有代码可无缝衔接。 1.2 核心特性 MP 的核心价值集中在 “简化开发” 与 “效率提升”,结合课程内容可归纳为以下 6 点: 无侵入性:基于 MyBatis 原生架构扩展,不修改 MyBatis 核心逻辑,现有工程引入后无需重构代码。 效率至上:内置 BaseMapper(DAO 层)和 IServi...
Spring Boot:自动配置的核心原理
今天刚学完黑马的 JavaWeb 课程,回想整个过程还挺有感触的。前端部分学起来感觉挺顺的,到了后端,从 Maven 到 SpringBoot 的各种案例,做下来也都还好 —— 无非是搭好架构、引入依赖、标上注解,再写点 CRUD 代码,不算特别复杂。 但学到 Spring Boot 原理这块时,说实话第一遍是真有点懵。这大概是整个 JavaWeb 里,我唯一觉得抽象的部分了。后来又反复听了两三遍,自己也翻了翻源码,才算有了点初步的理解。 其实我们都感受过 Spring Boot “开箱即用” 的神奇 —— 只要引入依赖、写几行代码,一个能跑的应用很快就能启动起来。这背后,正是 Spring Boot 精心设计的自动配置机制在悄悄发力。今天就结合最新版本的特点,跟大家聊聊我对 Spring Boot 核心原理的理解。 一、从 “配置地狱” 到 “零配置” 的跨越 在 Spring Boot 出现之前,我们用 Spring 框架开发时,总得写一大堆 XML 配置或者 Java 配置类:声明 Bean、配置扫描路径、设置依赖注入关系…… 这些重复的工作被开发者们调侃成 “配置地狱”。...





