最新小抄
主流 CSS 框架和组件库的响应式设计断点规格
主流 CSS 框架和组件库(Bootstrap、ElementUI、ElementPlus、Ant Design、Tailwind CSS 等)都提供了响应式设计规范,基于屏幕宽度划分不同的的断点规格。 | 断点规格 | [Bootstrap v5](https://getbootstrap.com/docs/5.3/layout/breakpoints/) | [ElementPlus](htt如何安装 npm
由于 npm 是 Node.js 自带的包管理工具,安装 Node.js 之后也就自动获得了 npm。 安装 Node.js 请参考 [如何安装 Node.js](https://yuanbiji.net/memo/how-to-install-node-js.html)。 验证安装结果 npm -v如何设置全局 npm 包的安装路径
创建一个目录,用来存放全局 npm 包: mkdir ~/.npm_global 在 `~/.bashrc` 中添加以下代码,添加全局 npm 包的安装路径: NPM_GLOBAL_BIN="$HOME/.npm_global/bin" export PATH=$NPM_GLOBAL_BIN:$PATH 在 `~/.npmrc` 中指定全局 npm 包的安装位置: prefix=/root/.np如何安装 Node.js
进入 [Node.js 官网](https://nodejs.org/zh-cn/download/prebuilt-installer),找到适合自己操作系统的安装包,下载后安装即可。 通过 nvm 安装 1. [安装 nvm](/memo/nvm-installation.html)。 1. 安装最新的 Node.js LTS 版本: nvm install lts/* 1. 验证安装如何安装 nvm
nvm 是一款 Node.js 安装器与多版本切换工具。 安装 进入主目录,运行官方安装脚本: cd ~ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash 验证安装结果 nvm -v 其他工作 * [设置全局 npm 包的安装路径](/memo/set-global-npm-package如何安装 pm2
安装 Node.js 和 npm。 安装 pm2 npm i -g pm2 安装后,重新登录即可使用。 验证安装结果 pm2 -v如何设置 pm2 自动启动
1. 以 root 身份运行 `pm2 startup systemd`,会生成 `/etc/systemd/system/pm2-root.service`,并注册为服务。 1. 运行 `pm2 save` 可以把当前由 pm2 管理的应用清单保存下来,当 pm2 自动启动后,也会启动这些应用。pm2 常用操作
* `pm2 start {entry}` 启动应用。这个 `{entry}` 文件可以是应用的入口文件,也可以是 `ecosystem.config.js`。 > ⚠️ 注意:需要进入应用的根目录内启动,以免应用内部路径查找错误。比如在 `/root` 目录内启动 Strapi 会报 `Cannot find module '/root/package.json'`。 > ⚠️ 注意:Git 撤消最后一次或多次提交
撤消上一次提交: git reset --hard HEAD^ 撤消最近两次提交: git reset --hard HEAD^^ 撤消最近 `n` 次提交(`n` 替换为实际的数字): git reset --hard HEAD~n撤消 Git reset 或 rebase 误操作,找回丢失的 commit 记录
有些 Git 误操作比较致命,它会改写本地的 Git 历史记录(比如 `git rebase`),或者导致本地 Git 历史记录中的部分 commit 记录丢失(比如 `git reset`)。一旦发生这种误操作,往往会有丢失代码的风险。CommonJS 包的目录规范
根据 CommonJS 规范,一个包应该包含以下文件和目录: - `bin/`:存放可执行二进制文件的目录 - `lib/`:存放 JavaScript 代码的目录 - `doc/`:存放文档的目录 - `test/`:存放单元测试用例的代码 - `package.json`:包描述文件如何用 JS 实现冒泡排序
冒泡排序在 JavaScript 中的实现非常简单,可以通过一次循环来完成。下面是使用 JavaScript 实现冒泡排序的示例代码: function bubbleSort(arr) { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - i - 1; j++) { ifJS 正则表达式校验 URL 地址
正则表达式是一种用于检查字符串中是否存在特定格式的强大工具,可以用来验证 URL 地址。例如,你可以使用以下正则表达式来校验 URL: /^(http|https):\/\/(\S+)$/ 上面的正则表达式表示,URL 必须以 `http` 或者 `https` 开头,然后是 `://`,最后是一个非空字符串。 示例代码: // 用于校验 URL 的正则表达式 const urlRegex = /JS 正则表达式校验 IP 地址
正则表达式可以用来校验 IP 地址,以下是一段示例代码: const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0如何用 JS 解析 URL 参数
使用 JavaScript 解析 URL 参数的方法有很多,但最常见的一种是使用 URL 模块中的 URLSearchParams API。要使用这个 API,首先需要获取 URL 对象,然后将其传递到 URLSearchParams 构造函数中: // Get the URL object const url = new URL('https://example.com?foo=bar&baz=JS 正则表达式校验电子邮箱地址
可以使用 JavaScript 的正则表达式来检验电子邮箱地址,例如: /^(([^<>()\]\\.,;:\s@"]+(\.[^<>()\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 上述正则表达式将匹配形如 `e如何用 Java 实现快速排序算法
快速排序是一个典型的分治算法,它的基本思想是:首先在数列中取一个元素作为基准(pivot),然后将所有小于它的元素放在它的左边,大于它的元素放在它的右边,这样就将数列以基准分成了两部分,随后再分别对这两部分继续重复上述步骤,依次进行下去,直至整个数列有序。 Java 的实现示例代码如下: public class QuickSort { public static void quickSo如何用 Python 实现快速排序算法
快速排序算法是一种分治思想的算法,它将一个数组分为两部分,其中一部分的所有值都小于另一部分。它的原理是: 1. 选择一个基准值(pivot):通常会选择数组的第一个值作为基准值; 2. 将数组中的其他元素与基准值进行比较,将小于基准值的元素放到基准值的左边,大于基准值的元素放到基准值的右边; 3. 将基准值左边的子数组和右边的子数组分别用相同的方法进行排序,直至子数组的长度为 1,此时数组排序完成如何用 JS 实现快速排序算法
可以使用快速排序算法来对数组进行排序。它的基本思想是: 1. 选定一个分割元素(通常是数组的第一个元素) 2. 将分割元素与其他元素进行比较,将小于分割元素的元素放在其左边,将大于分割元素的元素放在其右边 3. 对左边和右边子数组分别重复步骤 1 和 2,直到所有子数组只包含一个元素 以下是用 JavaScript 实现快速排序算法的示例代码: function quickSort(arr) {什么是 “匈牙利命名法”
匈牙利命名法(Hungarian notation)是一种命名标识符的约定,它起源于微软公司的编程团队在 1980 年代早期的开发中使用的一种命名规则。该规则要求将变量名、函数名等标识符的前缀表示出其数据类型,这个前缀通常由一个或多个小写字母组成。这种命名法可以帮助程序员更快地了解一个变量的数据类型,提高代码的可读性和可维护性。 例如,在使用匈牙利命名法的代码中,一个整数类型的变量名可能被命名为