從0-1搭建一個web項目(package.json)詳解

本章分析package.json文件詳解

本文主要對packge.json配置子文件詳解

ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 開源的后臺管理框架。在一定程度上節省您的開發效率。另外本項目還封裝了一些常用組件、hooks、指令、動態路由、按鈕級別權限控制等功能。感興趣的小伙伴可以訪問源碼點個贊 地址

在這里插入圖片描述

首先分析一下有哪些配置項文件

.editorconfig
.eslintignore
.eslintrc.cjs
.prettierignore
.prettierrc.cjs
.stylelintignore
.stylelintrc.cjs
commitlint.config.cjs
lint-staged.config.cjs
package-lock.json
pnpm-lock.yaml

那么以上文件都是什么作用呢? 可以配置哪些屬性呢?接下來我們一一拆分

  • 深入解析 .editorconfig 文件

億點小知識 .editorconfig 文件是一個幫助開發者在不同編輯器和IDE之間定義和維護一致代碼風格的配置文件。它允許你指定不同文件或文件類型的代碼風格規則,從而確保團隊成員使用統一的代碼格式。

  1. .editorconfig 文件的基本結構
    .editorconfig 文件是一個簡單的INI文件,包含了多個以[section]開頭的部分,每個部分內定義了一系列的key = value鍵值對。這些鍵值對定義了特定的代碼風格規則。
  2. 屬性解釋
    下面是對你給出的.editorconfig文件內容的詳細解釋:
root = true 
這告訴編輯器.editorconfig文件位于項目的根目錄,其他目錄中的.editorconfig文件應該被忽略。
[*]
這是一個通配符,表示以下規則適用于項目中的所有文件。
charset = utf-8:設置文件字符集為UTF-8,這是現代軟件開發中最常用的字符集。
end_of_line = lf:指定換行符為LF(Line Feed),這是Unix和Linux系統的標準換行符。
insert_final_newline = true:確保每個文件都以一個新行結束,這有助于一些工具和編輯器正確地處理文件。
indent_style = space:使用空格進行縮進,而不是制表符(Tab)。
indent_size = 2:縮進的大小為2個空格。
max_line_length = 130:限制每行的最大長度為130個字符,以提高代碼的可讀性。
[*.md]
這是一個特定的文件類型通配符,表示以下規則僅適用于.md文件(Markdown文件)。
max_line_length = off:對于Markdown文件,關閉最大行長度限制。Markdown文件經常包含長的列表項或引用,所以關閉此限制更為合適。
trim_trailing_whitespace = false:不修剪Markdown文件末尾的空格。在某些情況下,Markdown文件中的末尾空格可能是有意為之的。
  1. 如何使用 .editorconfig 文件
    要使用.editorconfig文件,你需要確保你的編輯器或IDE支持它。大多數現代編輯器和IDE(如Visual Studio Code、Sublime Text、IntelliJ IDEA等)都內置了對.editorconfig文件的支持。只需將.editorconfig文件放在項目的根目錄,并確保你的編輯器或IDE已啟用對它的支持即可。
  • 深入解析 .eslintignore 文件

億點小知識 .eslintignore 文件是一個文本文件,用于指定 ESLint 應該忽略哪些文件或目錄。這個文件通常位于項目的根目錄下,并且其語法與 .gitignore 文件非常相似,因為它也使用模式匹配來指定要忽略的文件和目錄。

*.sh:這個模式會忽略所有以 .sh 結尾的文件,即 Shell 腳本文件。由于這些文件不是 JavaScript 或 TypeScript,因此通常不需要 ESLint 來檢查。
node_modules:這個目錄包含了項目的所有依賴項。由于這些文件是第三方庫,通常不需要進行 linting。此外,linting node_modules 目錄可能會導致大量的性能問題,因為其中包含大量文件。
*.md:忽略所有的 Markdown 文件(.md 擴展名)。Markdown 文件主要用于文檔編寫,而不是代碼編寫,因此不需要 ESLint 檢查。
*.woff 和 *.ttf:這些是字體文件的擴展名。它們不是源代碼文件,因此不需要 ESLint 來進行代碼風格檢查。
.vscode 和 .idea:這些目錄通常包含特定 IDE(如 Visual Studio Code 或 IntelliJ IDEA)的配置文件和緩存文件。這些文件不是源代碼,因此應該被忽略。
dist:這個目錄通常包含編譯后的文件(如構建輸出)。這些文件是在源代碼文件基礎上生成的,因此不需要進行 linting。
/public/docs:這些目錄可能包含靜態資源、文檔或其他非源代碼文件,因此應該被 ESLint 忽略。
.husky:這個目錄通常包含與 Git 鉤子(hooks)相關的配置,用于在 Git 操作(如提交)之前或之后運行腳本。這些文件不是源代碼,因此不需要 ESLint 檢查。
.local:這個目錄可能包含本地開發環境的特定配置或數據,與源代碼無關,因此應該被忽略。
/bin:這個目錄可能包含一些執行腳本或其他可執行文件,它們通常不是 JavaScript 或 TypeScript 編寫的,因此不需要 ESLint 檢查。
/src/mock/*:這個模式會忽略 src/mock 目錄下的所有文件。這可能是因為這些文件包含模擬數據或測試數據,而不是實際的源代碼。
stats.html:這是一個具體的文件名,可能是一個 Webpack 打包統計文件或其他類型的報告文件。由于它不是源代碼,因此應該被 ESLint 忽略。
  • 深入解析 .eslintrc.cjs 文件
// @see: http://eslint.cnmodule.exports = {root: true,env: {browser: true,node: true,es6: true},// 指定如何解析語法parser: "vue-eslint-parser",// 優先級低于 parse 的語法解析配置parserOptions: {parser: "@typescript-eslint/parser",ecmaVersion: 2020,sourceType: "module",jsxPragma: "React",ecmaFeatures: {jsx: true}},// 繼承某些已有的規則extends: ["plugin:vue/vue3-recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],/*** "off" 或 0    ==>  關閉規則* "warn" 或 1   ==>  打開的規則作為警告(不影響代碼執行)* "error" 或 2  ==>  規則作為一個錯誤(代碼不能執行,界面報錯)*/rules: {// eslint (http://eslint.cn/docs/rules)"no-var": "error", // 要求使用 let 或 const 而不是 var"no-multiple-empty-lines": ["error", { max: 1 }], // 不允許多個空行"prefer-const": "off", // 使用 let 關鍵字聲明但在初始分配后從未重新分配的變量,要求使用 const"no-use-before-define": "off", // 禁止在 函數/類/變量 定義之前使用它們"no-irregular-whitespace": "off", // 禁止不規則的空白// typeScript (https://typescript-eslint.io/rules)"@typescript-eslint/no-unused-vars": "error", // 禁止定義未使用的變量"@typescript-eslint/prefer-ts-expect-error": "error", // 禁止使用 @ts-ignore"@typescript-eslint/no-inferrable-types": "off", // 可以輕松推斷的顯式類型可能會增加不必要的冗長"@typescript-eslint/no-namespace": "off", // 禁止使用自定義 TypeScript 模塊和命名空間。"@typescript-eslint/no-explicit-any": "off", // 禁止使用 any 類型"@typescript-eslint/ban-types": "off", // 禁止使用特定類型"@typescript-eslint/explicit-function-return-type": "off", // 不允許對初始化為數字、字符串或布爾值的變量或參數進行顯式類型聲明"@typescript-eslint/no-var-requires": "off", // 不允許在 import 語句中使用 require 語句"@typescript-eslint/no-empty-function": "off", // 禁止空函數"@typescript-eslint/no-use-before-define": "off", // 禁止在變量定義之前使用它們"@typescript-eslint/ban-ts-comment": "off", // 禁止 @ts-<directive> 使用注釋或要求在指令后進行描述"@typescript-eslint/no-non-null-assertion": "off", // 不允許使用后綴運算符的非空斷言(!)"@typescript-eslint/explicit-module-boundary-types": "off", // 要求導出函數和類的公共類方法的顯式返回和參數類型// vue (https://eslint.vuejs.org/rules)"vue/script-setup-uses-vars": "error", // 防止<script setup>使用的變量<template>被標記為未使用,此規則僅在啟用該no-unused-vars規則時有效。"vue/v-slot-style": "error", // 強制執行 v-slot 指令樣式"vue/no-mutating-props": "off", // 不允許組件 prop的改變"vue/no-v-html": "off", // 禁止使用 v-html"vue/custom-event-name-casing": "off", // 為自定義事件名稱強制使用特定大小寫"vue/attributes-order": "off", // vue api使用順序,強制執行屬性順序"vue/one-component-per-file": "off", // 強制每個組件都應該在自己的文件中"vue/html-closing-bracket-newline": "off", // 在標簽的右括號之前要求或禁止換行"vue/max-attributes-per-line": "off", // 強制每行的最大屬性數"vue/multiline-html-element-content-newline": "off", // 在多行元素的內容之前和之后需要換行符"vue/singleline-html-element-content-newline": "off", // 在單行元素的內容之前和之后需要換行符"vue/attribute-hyphenation": "off", // 對模板中的自定義組件強制執行屬性命名樣式"vue/require-default-prop": "off", // 此規則要求為每個 prop 為必填時,必須提供默認值"vue/multi-word-component-names": "off" // 要求組件名稱始終為 “-” 鏈接的單詞}
};
  • 深入解析 .prettierignore 文件

億點小知識 .prettierignore 文件是一個文本文件,用于指定 Prettier 應該忽略哪些文件或目錄。這個文件通常位于項目的根目錄下,并且其語法與 .gitignore 文件非常相似,因為它也使用模式匹配來指定要忽略的文件和目錄。

# .prettierignore 文件內容  # 忽略 dist 目錄下的所有文件  
/dist/*  # 忽略 .local 目錄或文件(如果存在)  
.local  # 忽略 node_modules 目錄下的所有文件和子目錄  
/node_modules/**  # 忽略所有目錄下的 .svg 文件  
**/*.svg  # 忽略所有目錄下的 .sh 文件  
**/*.sh  # 忽略 public 目錄下的所有文件  
/public/*  # 忽略名為 stats.html 的文件  
stats.html
  • 深入解析.prettierrc.cjs 文件
// @see: https://www.prettier.cnmodule.exports = {// 指定最大換行長度printWidth: 130,// 縮進制表符寬度 | 空格數tabWidth: 2,// 使用制表符而不是空格縮進行 (true:制表符,false:空格)useTabs: false,// 結尾不用分號 (true:有,false:沒有)semi: true,// 使用單引號 (true:單引號,false:雙引號)singleQuote: false,// 在對象字面量中決定是否將屬性名用引號括起來 可選值 "<as-needed|consistent|preserve>"quoteProps: "as-needed",// 在JSX中使用單引號而不是雙引號 (true:單引號,false:雙引號)jsxSingleQuote: false,// 多行時盡可能打印尾隨逗號 可選值"<none|es5|all>"trailingComma: "none",// 在對象,數組括號與文字之間加空格 "{ foo: bar }" (true:有,false:沒有)bracketSpacing: true,// 將 > 多行元素放在最后一行的末尾,而不是單獨放在下一行 (true:放末尾,false:單獨一行)bracketSameLine: false,// (x) => {} 箭頭函數參數只有一個時是否要有小括號 (avoid:省略括號,always:不省略括號)arrowParens: "avoid",// 指定要使用的解析器,不需要寫文件開頭的 @prettierrequirePragma: false,// 可以在文件頂部插入一個特殊標記,指定該文件已使用 Prettier 格式化insertPragma: false,// 用于控制文本是否應該被換行以及如何進行換行proseWrap: "preserve",// 在html中空格是否是敏感的 "css" - 遵守 CSS 顯示屬性的默認值, "strict" - 空格被認為是敏感的 ,"ignore" - 空格被認為是不敏感的htmlWhitespaceSensitivity: "css",// 控制在 Vue 單文件組件中 <script> 和 <style> 標簽內的代碼縮進方式vueIndentScriptAndStyle: false,// 換行符使用 lf 結尾是 可選值 "<auto|lf|crlf|cr>"endOfLine: "auto",// 這兩個選項可用于格式化以給定字符偏移量(分別包括和不包括)開始和結束的代碼 (rangeStart:開始,rangeEnd:結束)rangeStart: 0,rangeEnd: Infinity
};
  • 深入解析commitlint.config.cjs 文件
// @see: https://cz-git.qbenben.com/zh/guide
const fs = require("fs");
const path = require("path");const scopes = fs.readdirSync(path.resolve(__dirname, "src"), { withFileTypes: true }).filter(dirent => dirent.isDirectory()).map(dirent => dirent.name.replace(/s$/, ""));/** @type {import('cz-git').UserConfig} */
module.exports = {ignores: [commit => commit.includes("init")],extends: ["@commitlint/config-conventional"],rules: {// @see: https://commitlint.js.org/#/reference-rules"body-leading-blank": [2, "always"],"footer-leading-blank": [1, "always"],"header-max-length": [2, "always", 108],"subject-empty": [2, "never"],"type-empty": [2, "never"],"subject-case": [0],"type-enum": [2,"always",["feat","fix","docs","style","refactor","perf","test","build","ci","chore","revert","wip","workflow","types","release"]]},prompt: {messages: {type: "Select the type of change that you're committing:",scope: "Denote the SCOPE of this change (optional):",customScope: "Denote the SCOPE of this change:",subject: "Write a SHORT, IMPERATIVE tense description of the change:\n",body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',breaking: 'List any BREAKING CHANGES (optional). Use "|" to break new line:\n',footerPrefixsSelect: "Select the ISSUES type of changeList by this change (optional):",customFooterPrefixs: "Input ISSUES prefix:",footer: "List any ISSUES by this change. E.g.: #31, #34:\n",confirmCommit: "Are you sure you want to proceed with the commit above?"// 中文版// type: "選擇你要提交的類型 :",// scope: "選擇一個提交范圍(可選):",// customScope: "請輸入自定義的提交范圍 :",// subject: "填寫簡短精煉的變更描述 :\n",// body: '填寫更加詳細的變更描述(可選)。使用 "|" 換行 :\n',// breaking: '列舉非兼容性重大的變更(可選)。使用 "|" 換行 :\n',// footerPrefixsSelect: "選擇關聯issue前綴(可選):",// customFooterPrefixs: "輸入自定義issue前綴 :",// footer: "列舉關聯issue (可選) 例如: #31, #I3244 :\n",// confirmCommit: "是否提交或修改commit ?"},types: [{value: "feat",name: "feat:     🚀  A new feature",emoji: "🚀"},{value: "fix",name: "fix:      🧩  A bug fix",emoji: "🧩"},{value: "docs",name: "docs:     📚  Documentation only changes",emoji: "📚"},{value: "style",name: "style:    🎨  Changes that do not affect the meaning of the code",emoji: "🎨"},{value: "refactor",name: "refactor: ??   A code change that neither fixes a bug nor adds a feature",emoji: "??"},{value: "perf",name: "perf:     ??  A code change that improves performance",emoji: "??"},{value: "test",name: "test:     ?  Adding missing tests or correcting existing tests",emoji: "?"},{value: "build",name: "build:    📦?   Changes that affect the build system or external dependencies",emoji: "📦?"},{value: "ci",name: "ci:       🎡  Changes to our CI configuration files and scripts",emoji: "🎡"},{value: "chore",name: "chore:    🔨  Other changes that don't modify src or test files",emoji: "🔨"},{value: "revert",name: "revert:   ??  Reverts a previous commit",emoji: "??"},{value: "wip",name: "wip:      🕔  work in process",emoji: "🕔"},{value: "workflow",name: "workflow: 📋  workflow improvements",emoji: "📋"},{value: "type",name: "type:     🔰  type definition file changes",emoji: "🔰"}// 中文版// { value: "feat", name: "特性:   🚀  新增功能", emoji: "🚀" },// { value: "fix", name: "修復:   🧩  修復缺陷", emoji: "🧩" },// { value: "docs", name: "文檔:   📚  文檔變更", emoji: "📚" },// { value: "style", name: "格式:   🎨  代碼格式(不影響功能,例如空格、分號等格式修正)", emoji: "🎨" },// { value: "refactor", name: "重構:   ??  代碼重構(不包括 bug 修復、功能新增)", emoji: "??" },// { value: "perf", name: "性能:    ??  性能優化", emoji: "??" },// { value: "test", name: "測試:   ?  添加疏漏測試或已有測試改動", emoji: "?" },// { value: "build", name: "構建:   📦?  構建流程、外部依賴變更(如升級 npm 包、修改 webpack 配置等)", emoji: "📦?" },// { value: "ci", name: "集成:   🎡  修改 CI 配置、腳本", emoji: "🎡" },// { value: "chore", name: "回退:   ??  回滾 commit", emoji: "??" },// { value: "revert", name: "其他:   🔨  對構建過程或輔助工具和庫的更改(不影響源文件、測試用例)", emoji: "🔨" },// { value: "wip", name: "開發:   🕔  正在開發中", emoji: "🕔" },// { value: "workflow", name: "工作流:   📋  工作流程改進", emoji: "📋" },// { value: "types", name: "類型:   🔰  類型定義文件修改", emoji: "🔰" }],useEmoji: true,scopes: [...scopes],customScopesAlign: "bottom",emptyScopesAlias: "empty",customScopesAlias: "custom",allowBreakingChanges: ["feat", "fix"]}
};
  • 深入解析lint-staged.config.cjs 文件
module.exports = {"*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": ["prettier --write--parser json"],"package.json": ["prettier --write"],"*.vue": ["eslint --fix", "prettier --write", "stylelint --fix"],"*.{scss,less,styl,html}": ["stylelint --fix", "prettier --write"],"*.md": ["prettier --write"]
};

在這里插入圖片描述
如碰到其他的問題 可以私下我 一起探討學習
如果對你有所幫助還請 點贊 收藏謝謝~!
關注收藏博客 作者會持續更新…

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36703.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36703.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36703.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Centos7源碼方式安裝sqle及開發相關

官方文檔-源碼安裝 操作系統&#xff1a;centos:7.9,everything (DVD版應該也可以) (在ubuntu22.04裝了兩天之后乖乖開了一個新Centos7虛擬機) 鏡像&#xff1a;清華大學開源軟件鏡像站 centos/7.9.2009 安裝git sudo yum update -y sudo yum install -y git git --version安…

數據結構與算法筆記:高級篇 - B+樹:MySql數據庫索引是如何實現的?

概述 作為一名軟件開發工程師&#xff0c;你對數據庫肯定再熟悉不過了。MySQL 作為主流的數據庫存儲系統&#xff0c;它在我們的業務開發中&#xff0c;有著舉足輕重的地位。在工作中&#xff0c;為了加速數據庫中數據的查找速度&#xff0c;我們常用的處理思路是&#xff0c;…

01.Ambari自定義服務開發-項目初始化

文章目錄 基礎環境在PyCharm中初始化項目配置項目相關依賴在PyCharm中導入依賴 基礎環境 PyCharmPython 2.7已經安裝完成的Ambari服務端 在PyCharm中初始化項目 項目名稱就是我們要安裝服務的名稱&#xff0c;要求名稱為全大寫&#xff0c;如&#xff1a;DORIS創建Python2.7…

如何實現機房的自動化運維-青島佰優聯

要讓機房更穩定地實現自動化運維&#xff0c;可以參考以下幾點建議&#xff1a; 一、實施自動化運維工具和技術 1. 配置管理工具&#xff1a; - 使用如Ansible、Puppet、Chef等開源的自動化運維工具&#xff0c;進行服務器配置的管理。這些工具可以幫助管理員快速部署、更…

龍迅LT8711V TYPE-CDP 1.2轉VGA芯片,內置MCU,成熟批量產品

龍迅LT8711V描述&#xff1a; LT8711V是一種高性能的Type-C/DP1.2到VGA轉換器&#xff0c;設計用于連接USB Type-C源或DP1.2源到VGA接收器。LT8711V集成了一個DP1.2兼容的接收器&#xff0c;和一個高速三通道視頻DAC。此外&#xff0c;還包括兩個CC控制器&#xff0c;用于CC通…

XML selectNodes 模糊查找

public static XmlElement[] FuzzyFindNode(string xmlPath, string key, string valuenull){XmlDocument xmlDoc new XmlDocument();xmlDoc.Load(xmlPath); string xpath $"//節點名字[contains({key},{value})]"; XmlNodeList nodes xmlDoc.SelectNodes(xpath)…

圖像大小調整(縮放)

尺寸調整前尺寸調整前 1、背景介紹 在深度學習中&#xff0c;將圖像調整到固定尺寸&#xff08;如28x28像素&#xff09;的操作是非常常見的&#xff0c;尤其是在處理諸如圖像分類、物體檢測和圖像分割等任務時。這種操作有幾個重要原因&#xff1a; 標準化輸入&#xff1a;許…

【可控圖像生成系列論文(五)】ControlNet 和 IP-Adapter 之間的區別有哪些?

系列文章目錄 【可控圖像生成系列論文&#xff08;一&#xff09;】 簡要介紹了 MimicBrush 的整體流程和方法&#xff1b;【可控圖像生成系列論文&#xff08;二&#xff09;】 就MimicBrush 的具體模型結構、訓練數據和紋理遷移進行了更詳細的介紹。【可控圖像生成系列論文&…

【漏洞復現】銳捷統一上網行為管理與審計系統——遠程命令執行漏洞

聲明&#xff1a;本文檔或演示材料僅供教育和教學目的使用&#xff0c;任何個人或組織使用本文檔中的信息進行非法活動&#xff0c;均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 銳捷統一上網行為管理與審計系統naborTable/static_convert.php…

如何應對瀏覽器提示的“存在不安全腳本”問題

哈嘍呀&#xff0c;大家好&#xff0c;淼淼又來和大家見面啦&#xff0c;咱們在互聯網瀏覽過程中&#xff0c;您或許會遇到瀏覽器彈出的安全警告&#xff0c;提示頁面中包含“不安全腳本”。這樣的信息往往讓人心生警惕&#xff0c;擔心自己的隱私和數據安全受到威脅。本文將為…

Linux系統編程(七)進程間通信IPC

進程間通訊的7種方式_進程間通信的幾種方法-CSDN博客 管道 pipe&#xff08;命名管道和匿名管道&#xff09;&#xff1b;信號 signal&#xff1b;共享內存&#xff1b;消息隊列&#xff1b;信號量 semaphore&#xff1b;套接字 socket&#xff1b; 1. 管道 內核提供&#x…

Hive基礎知識(二十三):數據傾斜優化

絕大部分任務都很快完成&#xff0c;只有一個或者少數幾個任務執行的很慢甚至最終執行失敗&#xff0c; 這樣的現象為數據傾斜現象。 一定要和數據過量導致的現象區分開&#xff0c;數據過量的表現為所有任務都執行的很慢&#xff0c;這個 時候只有提高執行資源才可以優化 HQL…

Arduino平臺軟硬件原理及使用——SR04超聲波傳感器的使用

文章目錄&#xff1a; 一、超聲波傳感器工作原理 二、SR04超聲波庫的使用 三、SR04超聲波傳感器在Arduino中的使用 一、超聲波傳感器工作原理 如上圖所示&#xff1a;HCSR04超聲波傳感器擁有4個針腳&#xff0c;除了VCC接正極、GND接負極外&#xff0c;還有兩個引腳“Trig”及“…

Linux線程互斥鎖

目錄 &#x1f6a9;看現象&#xff0c;說原因 &#x1f6a9;解決方案 &#x1f6a9;互斥鎖 &#x1f680;關于互斥鎖的理解 &#x1f680;關于原子性的理解 &#x1f680;如何理解加鎖和解鎖是原子的 &#x1f6a9;對互斥鎖的簡單封裝 引言 大家有任何疑問&#xff0c;可…

【Android面試八股文】如何實現Activity窗口快速變暗

文章目錄 方式一:修改 WindowManager.LayoutParams 的screenBrightness屬性動態調整窗口的亮度方式二:使用 `WindowManager.LayoutParams` 的 `alpha` 屬性結合 `ValueAnimator` 來實現窗口漸變變暗的效果方式三:使用遮罩層在Android中實現Activity窗口快速變暗有幾種方法,…

CCSP自考攻略+經驗總結

備考攻略 備考攻略準備階段通讀階段精度階段總復習階段刷題階段命運審判 寫到最后 備考攻略 趁著對ssp知識點的理解還在&#xff0c;開始ccsp的考證之路&#xff0c;文章結構還是按照cissp備考篇的結構梳理。本次備考和cissp的離職在家備考不同&#xff0c;ccsp是在職利用非工…

如何用亞馬遜合作伙伴網絡快速上線跨境電商

目前跨境電商已成為行業發展主流&#xff0c;如何快速、低成本打造品牌海外獨立站和智能客服營銷中心、構建全鏈路跨境電商體系是出海電商商家都會遇到的難題。亞馬遜云科技憑借與亞馬遜電商平臺易于集成的先天優勢成為首選的電商解決方案平臺。本文介紹了如何用亞馬遜云科技平…

Elasticsearch8.x聚合查詢全面指南:從理論到實戰

聚合查詢的概念 聚合查詢&#xff08;Aggregation Queries&#xff09;是Elasticsearch中用于數據匯總和分析的查詢類型。它不同于普通的查詢&#xff0c;而是用于執行各種聚合操作&#xff0c;如計數、求和、平均值、最小值、最大值、分組等。 聚合查詢的分類 分桶聚合&…

centos7 安裝單機MongoDB

centos7安裝單機 yum 安裝 1、配置yum源 vim /etc/yum.repos.d/mongodb.repo [mongodb-org-7.0] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://www.mongodb.org/static/pgp…

【監控】3.配置 Grafana 以使用 Prometheus 數據源

1 訪問 Grafana 打開瀏覽器&#xff0c;訪問 http://localhost:3000&#xff08;默認端口&#xff09;。使用默認的用戶名和密碼 admin/admin 登錄。 2 添加 Prometheus 數據源 進入 Grafana 儀表板&#xff0c;點擊左側菜單中的“Configuration” -> “Data Sources”。…