程序开发 Java 的 volatile 关键字 volatile介绍 首先要知道的是并发编程的三个特性:可见性、有序性和原子性,其中 volatile 只能保证其中的可见性和有序性,并不能保证原子性。 可见性 可见性指一个线程对共享变量的修改能够被其他线程立即看到的特性。 多线程条件下,线程0和线程1同时读取了 flag 变量,但线程1将 flag 变量修改后,不会立即刷回主存(常说的内存),而是保存在自己的缓存中(CPU 缓存)。那么此时线程…
经验教程 Swagger 与 OpenAPI 一、区别与联系 OpenAPI 3.x 规范是从 Swagger 2.x 分支出来的,主要是由 Linux 基金会的 OpenAPI Initiative 进行维护的。Swagger 2.x 规范被 OpenAPI 3.x 取代,OpenAPI 3.0 成为新的 API 规范标准。但Swagger 2.x 规范仍然被广泛使用,例如常见的 @Api、@ApiOperation 等注解都是 Swa…
经验教程 还原 docker 容器的运行命令 喜欢 docker run 运行命令的朋友经常会遇到的一件事是,忘记之前环境变量设置的什么密码了。如果这个这个容器是很久之前创建的,并且 linux 历史命令也找不到可能就有点束手无策了。 而 runlike 容器能帮助还原之前运行的 docker run 命令,使用方式如下: docker run –rm -v /var/run/docker.sock:/var/run/docker.sock…
程序开发 Go 语言多模块工作区 在 Go 1.18 引入的多模块工作区(Workspace)功能使我们可以在一个工作区中同时使用多个模块,这对开发大型项目或需要同时处理多个模块依赖的项目非常有帮助。 下面是一个简单使用多模块工作区的案例: 创建主目录 首先创建主目录: mkdir myworkspace cd myworkspace 创建第一个模块 在 myworkspace 文件夹下运行命令: mkdir mod1 cd mo…
经验教程 Vscode 编写 vue 常见问题及解决方法 【TypeScript】JSX 元素隐式具有类型 “any“,因为不存在接口 “JSX.IntrinsicElements“。ts(7026) { "compilerOptions": { "jsx": "preserve", "jsxImportSource": "vue", // … } }…
程序开发 Vue3 项目初始化 1. 初始化项目 vue3 推荐使用 vite 进行项目构建,vite 官方中文文档参考:cn.vitejs.dev/guide/ 另外包管理工具推荐 pnmp,其号称高性能的 npm。pnmp 由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的 bug,极大的优化了性能,扩展了使用场景。 pnpm 安装: npm i -g pnpm 项目初始化: pnpm create vit…
程序开发 Css 中 flex 弹性布局详解 1. 概念 flex 是 CSS 的一种布局模式,它通过定义父容器 (flex container) 和子元素 (flex items) 之间的关系来创建灵活的布局。 1.1 容器-Flex Container 设置了 display: flex 或 display: inline-flex 称为容器。 它的所有直接子元素都会成为 flex items (弹性项目)。 1.2 弹性项目-Flex …
经验教程 Springboot 使用 nacos 时固定注册 ip 最近使用 idea 开发 springboot 项目时,经常遇到注册 nacos 的 ip 为 169.xx.xx.xx 的问题。之前有过多网卡上送时 ip 不对的问题,但是把对应网卡禁用就好了。 这次无论是重启项目或者是电脑,还是禁用网卡都不好用,想想只是为了本地开发使用,于是直接修改本地配置文件好了: spring: cloud: nacos: discovery: ip: 172.21.9….
文章转载 ESlint9 + Prettier 配置教程 在我还不知道如何从 0 开始配置ESlint的时候,ESlint已经更新到 9.x 了。而我还一直在用各种 cli 自动生成的ESlint配置,基本是ESlint@8.x版本。看着package.json中一大堆eslint依赖,不知道哪些有用哪些多余。本着不是最新我不用的原则,当我尝试升级到 ESlint9.x 时,却不是很顺利,因为ESlint@9.x配置上做了一些大改。折腾了几天之后,我发现…
经验教程 使用 nvm 管理 node 版本 在一台机器上想要安装不同版本的 node 通常是一件麻烦的事情,而 nvm 是一款 node 版本管理工具,允许用户通过命令行快速安装、切换和管理不同的 Node.js 版本。 nvm 项目开源地址:https://github.com/nvm-sh/nvm 需要注意的是 nvm 只适用于 macOS 和 Linux 系统,如果在 windows 上使用,则可以选择 nvm-windows。 首先…
程序开发 Spring 中 @Validated 嵌套校验问题 当使用 @Validated 进行参数校验时,如果方法参数是一个包含嵌套对象的复杂对象,@Validated 只会对顶层对象进行校验,而不会递归地对嵌套对象进行校验。例如: public class Parent { @NotNull(message ="parent name 不能为空") private String name; @NotNull private Child…
程序开发 Ubuntu 升级安装 Python 版本 1. 更新软件包列表 首先更新软件包列表,确保包列表是最新的。 sudo apt update 2. 安装软件属性共用库 software-properties-common 是一个在 Ubuntu 和其他基于 Debian 的 Linux 发行版中用于管理第三方软件源(PPA,即个人软件包存档)的软件包。它提供了一些工具和库,使得用户可以更轻松地添加、删除和更新 PPA。 sudo apt in…