Windows下快速搭建前端开发环境(fnm + pnpm)
在前端开发中,Node.js 版本管理和包管理器的选择直接影响到开发效率和稳定性。基于目前最主流的工具,从环境配置到常见加速优化,搭建一套高效、现代的前端开发环境。 Why fnm为什么选择 fnm 而不是 nvm? Node.js 的版本管理工具中,nvm(Node Version Manager)使用广泛,但它由于使用shell编写在 Windows 上需要通过 nvm-windows 兼容,现在来看更像是一个临时方案,有很多性能上的问题。而 fnm(Fast Node Manager)作为新一代工具,具有以下特点: 原生支持 Windows,不需要额外适配 使用 Rust 编写,启动速度极快 支持 .nvmrc 和 .node-version 文件,兼容常规项目配置 资源占用小,切换 Node.js 版本几乎无感知 因此,推荐在 Windows 平台直接使用 fnm 来管理 Node.js。 安装和配置fnm安装在 Windows 下安装 fnm 非常简单,直接执行: 1iwr https://fnm.vercel.app/install |...
Learn Regex The Easy Way
原文地址: 什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。“Regular expression”这个词比较拗口,我们常使用缩写的术语“regex”或“regexp”。正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等等。 想象你正在写一个应用,然后你想设定一个用户命名的规则,让用户名包含字符、数字、下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑。我们使用以下正则表达式来验证一个用户名: 12345678开始标记 3~15个字符长度 ↓ ↓ ^[a-z0-9_-]{3,15}$ ↑ ↑ │ 结束标记 │小写字母(a-z)数字(0-9)下划线(_)连字符(-) 以上的正则表达式可以接受...
Kotlin与Spring Boot中非空校验失效的解决方案
最近在项目中遇到了一个令人困惑的问题,涉及到Kotlin的非空类型和Spring Boot的校验注解。在处理JSON请求时,我发现Kotlin的非空类型和JSR380的@NotNull注解都没有如预期那样生效。这让我深入探索了Kotlin与Spring Boot在反序列化和校验过程中的一些细节。 问题场景我有一个SignInDTO数据类,用于处理用户的签到请求。代码如下: 12345678910class SignInDTO( @field:Schema(description = "项目ID", example = "1") @field:NotNull(value = 1, message = "项目ID不能为空") val projectId: Int, @field:Schema(description = "坐标", example = "POINT(116.404 39.915)") @field:NotNull(message =...
提问的智慧——How To Ask Questions The Smart Way
Copyright © 2001, 2006, 2014 Eric S. Raymond, Rick Moen本指南英文版版权为 Eric S. Raymond, Rick Moen 所有。原文网址:http://www.catb.org/~esr/faqs/smart-questions.html Copyleft 2001 by D.H.Grand (nOBODY/Ginux), 2010 by Gasolin, 2015 by Ryan Wu 本中文指南 是基于原文 3.10 版以及 2010 年由 Gasolin...
超酷的Shell——Oh My Zsh
Oh-My-Zsh传统的 Bash 功能相对简陋,且界面不美观。本文将基于 Ubuntu 204 LTS 系统,介绍如何安装 Zsh,并通过 Oh-My-Zsh 对终端进行美化。 Oh My Zsh 是基于 Zsh 的一款扩展工具集,提供了丰富的功能和美化选项。 环境配置安装基础工具1234# 更新软件源sudo apt update && sudo apt upgrade -y# 安装 Zsh、Git 和 Curlsudo apt install zsh git curl -y 安装 Oh My Zsh官网:ohmyz.sh 可以选择以下任意安装方式: Curl 方法: 1sh -c "$(curl -fsSL https://install.ohmyz.sh)" Wget 方法: 1sh -c "$(wget -O- https://install.ohmyz.sh)" 国内镜像(Curl): 1sh -c "$(curl -fsSL...
Kotlin Data Class 与 MyBatis 兼容性问题的解决
最近在项目中使用 Kotlin 的 data class 与 MyBatis 进行数据库映射时,遇到了一个令人费解的异常。经过一番折腾,终于找到了问题的根源,并解决了这个问题。在这里记录一下整个排查和解决的过程。 问题描述在运行项目时,出现了以下异常: 12org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'name' from result set. Cause: org.postgresql.util.PSQLException: 不良的类型值 int : 测试工程1; 不良的类型值 int : 测试工程1; nested exception is org.postgresql.util.PSQLException: 不良的类型值 int : 测试工程1 从错误信息来看,在尝试从结果集中获取 name 列时出现了问题。数据库返回的 name 值是字符串 “测试工程1”,但程序却提示存在类型 int...
SpringMVC中Jackson反序列化将空字符串转为null
场景分析在Restful风格的接口中,参数经常需要以JSON的形式通过RequestBody传递到后端。后端接收到数据进行反序列化的过程中,有一类参数是很棘手的。那就是JSON串里的 “” 空字符串。 项目中使用的是MybatisPlus,在进行Update操作时,不更新的字段需要设置为null。若字符串字段的内容为“”则会触发更新操作,把原有的值设置为空字符串。这一定是和预期不符的。所以对于JSON串里的 “” 空字符串,它们大多数情况下需要被反序列化为null而非空字符串。避免在后续进行冗余的判断。 本文将本文通过不同类型的场景,分别进行说明。 案例在项目中有这样一个DTO,用来接收前端传来的参数 12345678910111213141516171819202122232425262728293031323334353637@Data@NoArgsConstructorpublic class KnowledgePointDTO { @Schema(description = "知识点id,添加时必须为空,修改时不能为空") ...
如何优雅地把SpringBoot项目部署到服务端Docker
步骤分析把SpringBoot项目部署到服务端Docker大致就分这几步: 打包(Package)配置pom文件中的<build>属性,这样在mvn build时可以把项目打成可直接运行的Jar包, 12345678910111213141516171819202122<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.7.RELEASE</version> <configuration> ...
Swagger2、Swagger3、SpringFox、OpenApi这些都是什么?目前接口文档的最佳实现是什么?
OpenApi VS SwaggerOpenApiOpenAPI,全称为“OpenAPI Specification”,是一个用于描述和定义RESTful API的 开放标准 。前身就是Swagger规范。它以可读性强且易于理解的方式,提供了API的详细信息,包括端点、参数、请求和响应格式等。OpenAPI旨在促进API的开发、维护和使用过程中的标准化和自动化。OpenAPI规范使用JSON或YAML格式编写,使开发人员和API消费者能够更好地理解和使用API。 OpenAPI是 与编程语言和实现无关 的。它的主要目标是定义和描述RESTful API的结构、端点、请求和响应格式等内容,而不关注具体的编程语言、框架或技术细节。 OpenApi是业界真正的 API 文档标准,它因为被Linux列为API标准,从而成为行业标准。 SwaggerSwagger 是一个 API 文档维护组织,后来成为了 Open API...
使用MybatisPlus提供的JsonTypeHandler映射实体类对象
前情提要在上一次的需求中,为了实现两个JSON字段的映射,我们自定义了一个AbstractJsonTypeHandler类,然后为每一个实体类定义了各自的TypeHandler。详情可以看上一篇关于TypeHandler的博客:在Mybatis...