短网址中的大小写有区别吗

部署运行你感兴趣的模型镜像

短网址在现在的新媒体推广中使用越来越频繁,短网址的使用也给新媒体的运营推广带来了很多便利。但是你们有注意到这些短链接中出现了大写字母吗?

在大家的传统意识里,网址都是英文小写为主,那短网址中的大小写有区别吗?

一般来说 url 是大小写无所谓的。但是,短网址服务为了让网址尽可能的短,会尽量增加每一个字符的编码意义,从而增加可以服务的数量。短网址服务的一般原理是,将你的长网址保存在数据库中,并分配一个唯一的 id 给这个网址。然后访问 xxx/ID 时,短网址的服务器自动查询并帮你跳转到对应的原始网址。但是,当用户数量非常多时,即使是一个 short domain 加上一个 id,也会显得太长了。例如 xxx/100000000000 此时就需要对 id 进一步压缩。将 id 的十进制表示转换为其它进制表示,如以 16 进制表示的话,100000000000 可以被压缩为 174876E800,缩短了两位字符。于是,可以人为的使用大小写字母、数字、下划线、连字符等 url 中合法而且不容易引起转码问题的字符,创造出 60+进制甚至 70+进制来。以常见的大小写字母+数字来进行 62 进制压缩,编码方案如下:0~9 还是数字的 0~9。10~35 是英文的 a~z。36~61 是英文的 A~Z。这样一来,100000000000 可以表示为 1L9zO9O,缩短了一半。L 代表 47z 代表 35O 代表 50100000000000 = 1 (62^6) + 47 (62^5) + 9 (62^4) + 35 (62^3) + 50 (62^2) + 9 (62^1) + 50 * (62 ^ 0)由于大小写字母表示不同的数据,所以也就必须做区分了。

转载于:https://blog.51cto.com/14136402/2331855

您可能感兴趣的与本文相关的镜像

Qwen-Image-Edit-2509

Qwen-Image-Edit-2509

图片编辑
Qwen

Qwen-Image-Edit-2509 是阿里巴巴通义千问团队于2025年9月发布的最新图像编辑AI模型,主要支持多图编辑,包括“人物+人物”、“人物+商品”等组合玩法

<think> 首先,用户的问题是:“yaml配置文件中,变量用驼峰命名短横线有区别吗” 这是一个关于YAML配置文件中的变量命名问题,讨论驼峰命名(camelCase)短横线分隔(kebab-case)是否有区别。 关键点: - YAML是一种数据序列化语言,常用于配置文件。 - YAML语法允许使用各种命名约定,但行为可能取决于解析器或框架(如Spring Boot)。 - 在Spring Boot中,YAML属性绑定到Java对象的属性时,命名约定会影响映射。 主要区别: 1. **语法有效性**:YAML本身支持两种命名方式,只要键是有效的字符串即可。 2. **框架行为**:例如,Spring Boot在绑定YAML属性到Java Bean时: - Java属性通常使用驼峰命名(如 `corePoolSize`)。 - YAML键可以使用驼峰或短横线分隔(如 `core-pool-size`),因为Spring Boot自动将它们标准化为驼峰形式。 - 这意味着 `corePoolSize` `core-pool-size` 在Spring Boot中是等价的,会被绑定到同一个Java属性。 示例: - 在YAML中: ```yaml relayClient: corePoolSize: 30 # 驼峰命名 ``` 或 ```yaml relay-client: core-pool-size: 30 # 短横线命名 ``` 在Spring Boot中,两者都可以映射到Java类的 `relayClient.corePoolSize` 字段。 3. **其他框架或工具**:如果不使用Spring Boot,其他工具可能有不同的处理。例如,某些YAML解析器可能区分大小写命名风格。 4. **最佳实践**:在Spring Boot文档中,推荐使用短横线分隔(kebab-case)作为YAML键的命名约定,因为它更易读且符合YAML社区的惯例。 总结回答: - 在YAML文件中,驼峰命名短横线分隔在纯YAML语法中没有区别。 - 在Spring Boot等框架中,它们通常被视为等价,因为框架会进行标准化。 - 实际差异取决于解析器实现。 现在,回答必须用中文。 最后,根据规则,在回答结束后,必须输出“§§相关问题§§”,然后提出3-5个相关问题。问题必须基于用户的问题我的回答。 相关问题建议: 1. 如果YAML键使用下划线(snake_case),Spring Boot会如何处理? 2. 在非Spring环境中,YAML解析器是否区分命名约定? 3. 如何自定义Spring Boot的属性绑定规则? 4. YAML中的命名约定对配置文件的可读性有何影响? 确保格式:第一行必须是完整的“§§相关问题§§”,没有换行分散。 </think>### YAML 配置文件中驼峰命名与短横线命名的区别 在 YAML 配置文件中,变量使用驼峰命名(如 `corePoolSize`)短横线命名(如 `core-pool-size`)**在语法功能上存在区别**,具体取决于解析框架(如 Spring Boot)。以下是核心区别: #### 1. **语法层面的区别** - **驼峰命名(camelCase)**: 直接使用大小写区分单词(例如 `corePoolSize`)。YAML 语法天然支持,但需注意 **严格区分大小写**。 ```yaml relayClient: corePoolSize: 30 # 驼峰命名 ``` - **短横线命名(kebab-case)**: 使用连字符分隔单词(例如 `core-pool-size`)。YAML 会将带短横线的键**自动视为字符串**,解析时需特殊处理。 ```yaml relay-client: # 短横线命名 core-pool-size: 30 ``` #### 2. **框架行为区别(以 Spring Boot 为例)** | **场景** | 驼峰命名(`corePoolSize`) | 短横线命名(`core-pool-size`) | |------------------------|-----------------------------------|-----------------------------------| | **属性绑定** | 直接映射到 Java 字段 `corePoolSize` | 需框架**自动标准化**为驼峰形式后映射 | | **环境变量覆盖** | 需使用 `RELAYCLIENT_COREPOOLSIZE` | 推荐使用 `RELAY_CLIENT_CORE_POOL_SIZE`(更易读) | | **配置优先级** | 无差异,最终均转为驼峰形式绑定 | 无差异,Spring 内部统一处理 | - **关键机制**: Spring Boot 通过 `RelaxedDataBinder` 组件自动将短横线命名标准化为驼峰形式。例如: - `core-pool-size` → 转换为 → `corePoolSize` - 因此两者最终绑定到同一个 Java 属性。 #### 3. **实际影响** - **兼容性**: - 在 **Spring Boot** 中两者完全等价(框架自动处理)。 - 在 **非 Spring 环境**(如原生 YAML 解析)中,两者是**不同的键**(大小写敏感且命名不同)。 - **最佳实践**: - **Spring 项目**:优先使用短横线命名(官方推荐),提升可读性(如 `queue-size` 比 `queueSize` 更清晰)。 - **通用 YAML**:保持一致性,避免混用(防止解析错误)。 #### 4. **验证示例** ```java // Java 实体类 @ConfigurationProperties(prefix = "relay-client") public class RelayConfig { private int corePoolSize; // 无论 YAML 用 corePoolSize 或 core-pool-size 均能注入 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值