初始文档
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
密码表.md
|
||||
桌面运维工作.md
|
||||
5
.obsidian/app.json
vendored
Normal file
5
.obsidian/app.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"promptDelete": false,
|
||||
"useTab": false,
|
||||
"strictLineBreaks": true
|
||||
}
|
||||
3
.obsidian/appearance.json
vendored
Normal file
3
.obsidian/appearance.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"accentColor": ""
|
||||
}
|
||||
5
.obsidian/canvas.json
vendored
Normal file
5
.obsidian/canvas.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"snapToObjects": true,
|
||||
"snapToGrid": true,
|
||||
"cardLabelVisibility": "hover"
|
||||
}
|
||||
31
.obsidian/core-plugins-migration.json
vendored
Normal file
31
.obsidian/core-plugins-migration.json
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"starred": true,
|
||||
"markdown-importer": true,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false,
|
||||
"bookmarks": true,
|
||||
"properties": false
|
||||
}
|
||||
34
.obsidian/core-plugins.json
vendored
Normal file
34
.obsidian/core-plugins.json
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"starred": true,
|
||||
"markdown-importer": true,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false,
|
||||
"bookmarks": true,
|
||||
"properties": false,
|
||||
"webviewer": false,
|
||||
"footnotes": false,
|
||||
"bases": true
|
||||
}
|
||||
22
.obsidian/graph.json
vendored
Normal file
22
.obsidian/graph.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"collapse-filter": true,
|
||||
"search": "",
|
||||
"showTags": false,
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"colorGroups": [],
|
||||
"collapse-display": true,
|
||||
"showArrow": false,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 0.7132754626224427,
|
||||
"close": false
|
||||
}
|
||||
1
.obsidian/hotkeys.json
vendored
Normal file
1
.obsidian/hotkeys.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
3
.obsidian/page-preview.json
vendored
Normal file
3
.obsidian/page-preview.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"preview": true
|
||||
}
|
||||
233
.obsidian/workspace.json
vendored
Normal file
233
.obsidian/workspace.json
vendored
Normal file
@@ -0,0 +1,233 @@
|
||||
{
|
||||
"main": {
|
||||
"id": "a3cdd2832ed37aa5",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "a85380d68f2311c1",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "486507a1838558b3",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "密码表.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "密码表"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "524b126a7c8b7faf",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "ed7fb41da54ed49f",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "cc10b0e90a57df08",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical",
|
||||
"autoReveal": false
|
||||
},
|
||||
"icon": "lucide-folder-closed",
|
||||
"title": "文件列表"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "81c3e5bd3ac0fa12",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
},
|
||||
"icon": "lucide-search",
|
||||
"title": "搜索"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e923e5e62bdff40c",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "starred",
|
||||
"state": {},
|
||||
"icon": "lucide-ghost",
|
||||
"title": "starred"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aa0decd428515720",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {},
|
||||
"icon": "lucide-bookmark",
|
||||
"title": "书签"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 200
|
||||
},
|
||||
"right": {
|
||||
"id": "40f54f58ee8a811c",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "289513ddc2a423cd",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "7cb3c2f79c6a8c93",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "Linux/RedHat系文档.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "RedHat系文档 的反向链接列表"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d3209af1c8cb8260",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "Linux/RedHat系文档.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-going-out",
|
||||
"title": "RedHat系文档 的出链列表"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "5b7ed037f5eed63d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-tags",
|
||||
"title": "标签"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "2b03343c19ea4432",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "密码表.md",
|
||||
"followCursor": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "密码表 的大纲"
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 3
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 200
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"bases:创建新数据库": false,
|
||||
"switcher:打开快速切换": false,
|
||||
"graph:查看关系图谱": false,
|
||||
"canvas:新建白板": false,
|
||||
"daily-notes:打开/创建今天的日记": false,
|
||||
"templates:插入模板": false,
|
||||
"command-palette:打开命令面板": false,
|
||||
"markdown-importer:打开 Markdown 格式转换器": false
|
||||
}
|
||||
},
|
||||
"active": "2b03343c19ea4432",
|
||||
"lastOpenFiles": [
|
||||
"Linux/RedHat系文档.md",
|
||||
"Linux/个性账号名.md",
|
||||
"密码表.md",
|
||||
"Linux/Linux通用文档.md",
|
||||
"ansible-gui项目文档.md",
|
||||
"未命名.base",
|
||||
"Linux/Linux笔记.md",
|
||||
"开发文档/python/python教程.md",
|
||||
"开发文档/python/Anaconda用法.md",
|
||||
"开发文档/香橙派3B开发板.md",
|
||||
"开发文档/Flutter框架.md",
|
||||
"开发文档/uniapp.md",
|
||||
"开发文档/python/代码片段.md",
|
||||
"开发文档/python/python库用途.md",
|
||||
"其他/大华监控报警.md",
|
||||
"其他/电脑常用工具.md",
|
||||
"其他/故障解决方案大全.md",
|
||||
"其他/README.md",
|
||||
"其他/无尽西游策划.md",
|
||||
"Linux/Linux开源软件配置.md",
|
||||
"其他",
|
||||
"Linux/Linux教程.md",
|
||||
"Linux/Ansible自动化.md",
|
||||
"开发文档/python/pycryptodome.md",
|
||||
"开发文档/javascript/javascript工具集.md",
|
||||
"开发文档/javascript/nodejs.md",
|
||||
"Windows/桌面运维工作.md",
|
||||
"passwd.md",
|
||||
"44DCC0C1.png",
|
||||
"开发文档/数据库/MySQL高可用搭建.canvas",
|
||||
"Pasted image 20240221093330.png",
|
||||
"开发文档",
|
||||
"未命名.canvas",
|
||||
"开发文档/python/机器学习",
|
||||
"python/新建文件夹",
|
||||
"python/未确认 936226.crdownload",
|
||||
"图片/1e2b546cf0f0cc7bf0ab8deb3bc497d.png",
|
||||
"音视频处理/音频",
|
||||
"音视频处理",
|
||||
"软件or平台使用",
|
||||
"开发文档/数据库",
|
||||
"图片/7f43c7a66d1f9c7bf6da3fdd397e626.png",
|
||||
"图片/a42981ce40d246383d3a057c7a596b8.png",
|
||||
"图片/057f7b06b15b7a2661348ae82ac1cea.png",
|
||||
"图片/86fe399af1ae6cf79e58de1a0f65700.png",
|
||||
"图片/7f43c7a66d1f9c7bf6da3fdd397e626 1.png",
|
||||
"未命名 1.canvas"
|
||||
]
|
||||
}
|
||||
151
Linux/Ansible自动化.md
Normal file
151
Linux/Ansible自动化.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# ansible配置文件
|
||||
```sh
|
||||
# ansible的默认库存文件是/etc/ansible/hosts文件,如果运行时不指定-i 库存文件则会使用默认文件,解决方法:在当前目录创建ansible.cfg文件,添加以下内容
|
||||
[defaults]
|
||||
inventory = ./inventory.yml #库存文件路径
|
||||
```
|
||||
# 库存清单管理
|
||||
## 库存配置示例
|
||||
```yml
|
||||
# yaml文件清单配置示例
|
||||
all:
|
||||
children:
|
||||
web: #主机组
|
||||
hosts:
|
||||
192.168.1.10: #主机
|
||||
ansible_user: root #主机变量
|
||||
web.example.com:
|
||||
vars:
|
||||
anisble_user: root #主机组变量
|
||||
ansible_port: 22
|
||||
db:
|
||||
hosts:
|
||||
db[01:10].example.com: #批量定义10台主机
|
||||
192.168.2.[100:200]: #批量定义100台主机
|
||||
```
|
||||
## 测试库存
|
||||
```sh
|
||||
# 以json格式显示清单
|
||||
ansible-inventory -i inventory.yml --list
|
||||
# 以树状显示清单
|
||||
ansible-inventory -i inventory.yml --graph
|
||||
# 对web组主机进行ping测试
|
||||
ansible web -i inventory.yml -m ping
|
||||
```
|
||||
## 检查库存配置文件
|
||||
```sh
|
||||
ansible-playbook --check -i inventory.yml
|
||||
```
|
||||
# playbook
|
||||
## 执行特定任务
|
||||
### 1.使用tags标签
|
||||
```yaml
|
||||
# 示例任务定义
|
||||
- name: 任务A
|
||||
command: /bin/true
|
||||
tags:
|
||||
- task_a
|
||||
|
||||
- name: 任务B
|
||||
command: /bin/true
|
||||
tags:
|
||||
- task_b
|
||||
|
||||
- name: 任务C
|
||||
command: /bin/true
|
||||
tags:
|
||||
- task_c
|
||||
```
|
||||
```bash
|
||||
# 只执行带task_a标签的任务
|
||||
ansible-playbook playbook.yml --tags "task_a"
|
||||
|
||||
# 执行除task_b外的所有任务
|
||||
ansible-playbook playbook.yml --skip-tags "task_b"
|
||||
|
||||
# 执行多个标签的任务
|
||||
ansible-playbook playbook.yml --tags "task_a,task_c"
|
||||
```
|
||||
### 2.使用when条件控制
|
||||
```yaml
|
||||
- name: 可选执行的任务
|
||||
command: /bin/echo "这是可选任务"
|
||||
when: execute_optional_task is defined and execute_optional_task
|
||||
```
|
||||
```bash
|
||||
# 执行该任务(传递变量)
|
||||
ansible-playbook playbook.yml -e "execute_optional_task=true"
|
||||
|
||||
# 不执行该任务(不传递变量或设为false)
|
||||
ansible-playbook playbook.yml
|
||||
```
|
||||
### 3.使用--start-at-task参数
|
||||
```bash
|
||||
# 从"任务B"开始执行(跳过之前的所有任务)
|
||||
ansible-playbook playbook.yml --start-at-task "任务B"
|
||||
```
|
||||
## 创建包含加密内容的playbook
|
||||
```yaml
|
||||
# playbook.yml
|
||||
- hosts: all
|
||||
vars_files:
|
||||
- secrets.yml # 直接引用加密文件
|
||||
tasks:
|
||||
- name: 打印加密变量(仅示例,实际不要打印敏感信息)
|
||||
debug:
|
||||
msg: "Redhat用户: {{ rh_subscription_user }}"
|
||||
```
|
||||
|
||||
# ansible-vault加解密
|
||||
## 交互式秘钥加解密(临时)
|
||||
```sh
|
||||
# 加密文件,后续加解密时会提示输入密码
|
||||
ansible-vault encrypt 文件名
|
||||
# 加密字符串,并命名
|
||||
ansible-vault encrypt_string "my_redhat_password" --name "rh_subscription_pass"
|
||||
```
|
||||
## 秘钥文件加解密(推荐)
|
||||
```sh
|
||||
# 创建秘钥文件
|
||||
echo "my_secure_vault_pass" > vault_pass.txt
|
||||
# 限制文件权限
|
||||
chmod 600 vault_pass.txt
|
||||
|
||||
# 使用密钥文件加密字符串
|
||||
ansible-vault encrypt_string "my_redhat_password" --name "rh_subscription_pass" --vault-password-file vault_pass.txt
|
||||
# 使用秘钥文件加密文件
|
||||
ansible-vault encrypt secrets.yml --vault-password-file vault_pass.txt
|
||||
```
|
||||
|
||||
## 修改vault秘钥
|
||||
```sh
|
||||
# 交互式更换密钥(先输入旧密码,再输入新密码)
|
||||
ansible-vault rekey secrets.yml
|
||||
|
||||
# 使用旧密钥文件更换为新密钥文件
|
||||
ansible-vault rekey secrets.yml --vault-password-file old_vault_pass.txt --new-vault-password-file new_vault_pass.txt
|
||||
```
|
||||
|
||||
## 查看或编辑加密文件
|
||||
```sh
|
||||
# 查看加密文件内容(解密查看)
|
||||
ansible-vault view secrets.yml --vault-password-file vault_pass.txt
|
||||
|
||||
# 编辑加密文件(会自动重新加密保存)
|
||||
ansible-vault edit secrets.yml --vault-password-file vault_pass.txt
|
||||
```
|
||||
## 执行包含加密内容的palybook
|
||||
```sh
|
||||
# 执行时会提示输入Vault密码
|
||||
ansible-playbook playbook.yml --ask-vault-pass
|
||||
# 通过密钥文件提供密钥
|
||||
ansible-playbook playbook.yml --vault-password-file vault_pass.txt
|
||||
|
||||
```ini
|
||||
# 在ansible.cfg中配置默认秘钥文件路径
|
||||
[defaults]
|
||||
vault_password_file = ./vault_pass.txt # 相对或绝对路径
|
||||
```
|
||||
```sh
|
||||
ansible-playbook playbook.yml # 自动读取配置的密钥文件
|
||||
```
|
||||
81
Linux/ESXi常见问题.md
Normal file
81
Linux/ESXi常见问题.md
Normal file
@@ -0,0 +1,81 @@
|
||||
## img文件转化为vmdk文件
|
||||
|
||||
以openwrt镜像为例:https://downloads.openwrt.org/releases/22.03.0-rc6/targets/x86/64/openwrt-22.03.0-rc6-x86-64-generic-squashfs-combined-efi.img.gz
|
||||
|
||||
```sh
|
||||
qemu-img convert -f raw openwrt-22.03.0-rc6-x86-64-generic-squashfs-combined-efi.img -O vmdk openwrt.vmdk
|
||||
```
|
||||
openwrt.vmdk文件可直接在vmware work中使用
|
||||
|
||||
在esxi中使用需要进行格式转换,进入esxi主机的shell
|
||||
```sh
|
||||
vmkfstools -i
|
||||
openwrt.vmdk -d eagerzeroedthick openwrt-esxi.vmdk
|
||||
```
|
||||
|
||||
## esxi镜像封装驱动环境搭建
|
||||
[esxi-customizer-ps脚本链接](https://github.com/VFrontDe-Org/ESXi-Customizer-PS)
|
||||
1. 先安装python3.7.9版本及相关包
|
||||
```sh
|
||||
pip install six psutil lxml pyopenssl -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
|
||||
```
|
||||
2. 在以管理员运行powershell
|
||||
```powershell
|
||||
Install-Module -Name VMware.PowerCLI
|
||||
|
||||
# 验证安装,输出welcome to VMware PowerCLI即安装成功
|
||||
Import-Module -Name VMware.PowerCLI
|
||||
|
||||
# 进入esxi的zip镜像所在目录
|
||||
# 设置安全策略(unrestricted可以运行任意脚本且不警告)
|
||||
Set-ExecutionPolicy Unrestricted
|
||||
|
||||
```
|
||||
|
||||
### esxi7.0以下封装驱动
|
||||
[7.0以下驱动下载](https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages)
|
||||
```powershell
|
||||
# 把脚本和esxi的zip文件都放到同一目录下,在当前目录下新建一个目录放vib驱动文件
|
||||
# 运行脚本打包镜像(.\pkg\为vib驱动文件所在的目录),打包成功后会在当前目录下生成iso镜像
|
||||
.\ESXi-Customizer-PS.ps1 -izip .\ESXi670-201912001.zip -pkgDir .\pkg\
|
||||
```
|
||||
### esxi7.0以上封装驱动
|
||||
[7.0以上驱动下载](https://www.diy-nas.cn/?golink=aHR0cHM6Ly9mbGluZ3Mudm13YXJlLmNvbS9mbGluZ3M/cHJvZHVjdD1FU1hp)
|
||||
```powershell
|
||||
# 驱动和zip镜像都放到统一目录下,设置安全策略
|
||||
|
||||
# 导入所需要的包
|
||||
Add-EsxSoftwareDepot .\ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip
|
||||
Add-EsxSoftwareDepot .\Net-Community-Driver_1.2.7.0-1vmw.700.1.0.15843807_19480755.zip
|
||||
Add-EsxSoftwareDepot .\nvme-community-driver_1.0.1.0-3vmw.700.1.0.15843807-component-18902434.zip
|
||||
Add-EsxSoftwareDepot .\VMware-ESXi-8.0b-21203435-depot.zip
|
||||
|
||||
# 获取官方配置文件
|
||||
Get-EsxImageProfile
|
||||
|
||||
# 克隆一份到本地,ESXi-8.0b-21203435-standard是上一步获取的,name参数随意,这里设为esxi-8.0,vendor是版权声明
|
||||
New-EsxImageProfile -CloneProfile ESXi-8.0b-21203435-standard -Name esxi-8.0 -Vendor cvms.cn
|
||||
|
||||
# 如果使用了第三方包需要修改安全级别为社区
|
||||
Set-EsxImageProfile -ImageProfile esxi-8.0 -AcceptanceLevel CommunitySupported
|
||||
|
||||
# 导入驱动文件,vmkusb-nic-fling名称是驱动压缩文件内的vib20目录下的目录名称
|
||||
Add-EsxSoftwarePackage -ImageProfile esxi-8.0 -SoftwarePackage vmkusb-nic-fling
|
||||
Add-EsxSoftwarePackage -ImageProfile esxi-8.0 -SoftwarePackage net-community
|
||||
Add-EsxSoftwarePackage -ImageProfile esxi-8.0 -SoftwarePackage nvme-community
|
||||
|
||||
# 导出镜像在当前目录
|
||||
Export-EsxImageProfile -ImageProfile esxi-8.0 -ExportToIso -FilePath VMware-ESXi-8.0b-21203435.iso
|
||||
```
|
||||
|
||||
## esxi格式化硬盘
|
||||
> fdisk格式的分区esxi无法识别
|
||||
```sh
|
||||
# 获取磁盘分区
|
||||
partedUtil getptbl /dev/disks/磁盘文件名称
|
||||
|
||||
# 删除原有分区
|
||||
partedUtil delete /dev/disks/磁盘文件名称 1
|
||||
|
||||
# 删除所有分区后可以在esxi控制台新建存储了
|
||||
```
|
||||
430
Linux/Linux开源软件配置.md
Normal file
430
Linux/Linux开源软件配置.md
Normal file
@@ -0,0 +1,430 @@
|
||||
# frp配置
|
||||
## 1.配置systemd服务
|
||||
```sh
|
||||
sudo vim /etc/systemd/system/frps.service
|
||||
# 配置文件内容
|
||||
[Unit]
|
||||
# 服务名称,可自定义
|
||||
Description = frp server
|
||||
After = network.target syslog.target
|
||||
Wants = network.target
|
||||
|
||||
[Service]
|
||||
Type = simple
|
||||
# 启动frps的命令,需修改为您的frps的安装路径
|
||||
ExecStart = /path/to/frps -c /path/to/frps.toml
|
||||
|
||||
[Install]
|
||||
WantedBy = multi-user.target
|
||||
```
|
||||
## 2.tls双向认证加密
|
||||
### a.创建加密证书
|
||||
```sh
|
||||
# 创建目录存放证书
|
||||
mkdir frp_certs && cd frp_certs
|
||||
# 拷贝openssl默认配置文件到当前目录
|
||||
cp /etc/ssl/openssl.cnf ./
|
||||
# 生成CA秘钥
|
||||
openssl genrsa -out frp_ca.key 2048
|
||||
# 生成CA证书
|
||||
openssl req -x509 -new -nodes -key frp_ca.key -subj "/CN=frp-ca" -days 3650 -out frp_ca.crt
|
||||
# 创建客户端证书专用配置文件,按实际修改客户端ip地址
|
||||
cat > frpc.cnf << EOF
|
||||
[ req ]
|
||||
distinguished_name = req_distinguished_name
|
||||
req_extensions = v3_req
|
||||
prompt = no
|
||||
|
||||
[ req_distinguished_name ]
|
||||
C = CN
|
||||
ST = Beijing
|
||||
L = Beijing
|
||||
O = Frp
|
||||
CN = frp-client
|
||||
|
||||
[ v3_req ]
|
||||
subjectAltName = @alt_names
|
||||
|
||||
[ alt_names ]
|
||||
IP.1 = 192.168.140.122
|
||||
EOF
|
||||
# 创建服务端专用配置文件,按实际修改服务器ip地址
|
||||
cat > frps.cnf << EOF
|
||||
[ req ]
|
||||
distinguished_name = req_distinguished_name
|
||||
req_extensions = v3_req
|
||||
prompt = no
|
||||
|
||||
[ req_distinguished_name ]
|
||||
C = CN
|
||||
ST = Beijing
|
||||
L = Beijing
|
||||
O = Frp
|
||||
CN = frp-server
|
||||
|
||||
[ v3_req ]
|
||||
subjectAltName = @alt_names
|
||||
|
||||
[ alt_names ]
|
||||
IP.1 = 47.106.206.100
|
||||
EOF
|
||||
# 生成服务端私钥
|
||||
openssl genrsa -out frps.key 2048
|
||||
# 生成服务端CSR(强制包含 IP SAN)
|
||||
openssl req -new -sha256 -key frps.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Frp/CN=frp-server" -config frps.cnf -extensions v3_req -out frps.csr
|
||||
# 生成服务端证书
|
||||
openssl x509 -req -days 3650 -sha256 -in frps.csr -CA frp_ca.crt -CAkey frp_ca.key -CAcreateserial -extfile frps.cnf -extensions v3_req -out frps.crt
|
||||
# 生成客户端私钥
|
||||
openssl genrsa -out frpc.key 2048
|
||||
# 生成客户端CSR(强制包含 IP SAN)
|
||||
openssl req -new -sha256 -key frpc.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Frp/CN=frp-client" -config frpc.cnf -extensions v3_req -out frpc.csr
|
||||
# 生成客户端证书
|
||||
openssl x509 -req -days 3650 -sha256 -in frpc.csr -CA frp_ca.crt -CAkey frp_ca.key -CAcreateserial -extfile frpc.cnf -extensions v3_req -out frpc.crt
|
||||
# 验证服务端证书是否包含服务器IP,输出结果需显示服务器IP
|
||||
openssl x509 -in frps.crt -text -noout | grep -A 2 "Subject Alternative Name"
|
||||
# 验证客户端证书是否包含客户端IP,输出结果需显示客户端IP
|
||||
openssl x509 -in frpc.crt -text -noout | grep -A 2 "Subject Alternative Name"
|
||||
|
||||
```
|
||||
### b.以toml格式配置文件
|
||||
```sh
|
||||
# 设置token身份认证
|
||||
auth.method = "token"
|
||||
auth.token = "frptoken"
|
||||
# 在服务端添加以下配置,改为实际的证书路径
|
||||
transport.tls.force = true # 强制启用双向验证
|
||||
transport.tls.certFile = "/etc/frp/ssl/frps.crt"
|
||||
transport.tls.keyFile = "/etc/frp/ssl/frps.key"
|
||||
transport.tls.trustedCaFile = "/etc/frp/ssl/frp_ca.crt"
|
||||
# 在客户端添加以下配置,改为实际的证书路径
|
||||
transport.tls.enable = true
|
||||
transport.tls.certFile = "/etc/frp/ssl/frpc.crt"
|
||||
transport.tls.keyFile = "/etc/frp/ssl/frpc.key"
|
||||
transport.tls.trustedCaFile = "/etc/frp/ssl/frp_ca.crt"
|
||||
|
||||
```
|
||||
## 3.创建tcp代理
|
||||
```sh
|
||||
# 代理本机
|
||||
[[proxies]]
|
||||
name = "ssh-local"
|
||||
type = "tcp"
|
||||
localIP = "127.0.0.1"
|
||||
localPort = 22
|
||||
remotePort = 12322
|
||||
# 代理其他主机端口
|
||||
[[proxies]]
|
||||
name = "dev-ssh"
|
||||
type = "tcp"
|
||||
localIP = "192.168.140.121"
|
||||
localPort = 22
|
||||
remotePort = 12323
|
||||
```
|
||||
## 4.配置负载均衡及健康检查
|
||||
```sh
|
||||
# 支持的代理类型包括:tcp, http, tcpmux
|
||||
|
||||
# frpc.toml
|
||||
[[proxies]]
|
||||
name = "test1"
|
||||
type = "tcp"
|
||||
localPort = 8080
|
||||
remotePort = 80
|
||||
loadBalancer.group = "web"
|
||||
loadBalancer.groupKey = "123"
|
||||
|
||||
[[proxies]]
|
||||
name = "test2"
|
||||
type = "tcp"
|
||||
localPort = 8081
|
||||
remotePort = 80
|
||||
loadBalancer.group = "web"
|
||||
loadBalancer.groupKey = "123"
|
||||
|
||||
# tcp健康检查
|
||||
[[proxies]]
|
||||
name = "test1"
|
||||
type = "tcp"
|
||||
localPort = 22
|
||||
remotePort = 6000
|
||||
# 启用健康检查,类型为 tcp
|
||||
healthCheck.type = "tcp"
|
||||
# 建立连接超时时间为 3 秒
|
||||
healthCheck.timeoutSeconds = 3
|
||||
# 连续 3 次检查失败,此 proxy 会被摘除
|
||||
healthCheck.maxFailed = 3
|
||||
# 每隔 10 秒进行一次健康检查
|
||||
healthCheck.intervalSeconds = 10
|
||||
|
||||
# http健康检查
|
||||
[[proxies]]
|
||||
name = "web"
|
||||
type = "http"
|
||||
localIP = "127.0.0.1"
|
||||
localPort = 80
|
||||
customDomains = ["test.yourdomain.com"]
|
||||
# 启用健康检查,类型为 http
|
||||
healthCheck.type = "http"
|
||||
# 健康检查发送 http 请求的 path,后端服务需要返回 2xx 的 http 状态码
|
||||
healthCheck.path = "/status"
|
||||
healthCheck.timeoutSeconds = 3
|
||||
healthCheck.maxFailed = 3
|
||||
healthCheck.intervalSeconds = 10
|
||||
|
||||
```
|
||||
## 5.获取用户真实IP
|
||||
```sh
|
||||
#目前只有 http 类型的代理或者启用了 https2http 或 https2https 插件的代理支持这一功能。可以通过 HTTP 请求 header 中的 X-Forwarded-For 来获取用户真实 IP,默认启用.只要实现proxy协议的tcp后端也可以获取到
|
||||
|
||||
# 在客户端配置文件frpc.toml添加
|
||||
transport.proxyProtocolVersion = "v2"
|
||||
```
|
||||
## 6.代理限速
|
||||
```sh
|
||||
# 在客户端配置文件frpc.toml添加
|
||||
transport.bandwidthLimit = "1MB" #单位支持MB和KB
|
||||
# 在服务端限速
|
||||
transport.bandwidthLimitMode = "server"
|
||||
```
|
||||
## 7.虚拟网络(类似组网)
|
||||
- 服务端配置
|
||||
```sh
|
||||
# 服务端配置frps.toml
|
||||
featureGates = { VirtualNet = true }
|
||||
|
||||
serverAddr = "x.x.x.x"
|
||||
serverPort = 7000
|
||||
featureGates = { VirtualNet = true }
|
||||
|
||||
# 配置虚拟网络接口
|
||||
virtualNet.address = "100.86.0.1/24"
|
||||
|
||||
[[proxies]]
|
||||
name = "vnet-server"
|
||||
type = "stcp"
|
||||
secretKey = "your-secret-key"
|
||||
[proxies.plugin]
|
||||
type = "virtual_net"
|
||||
```
|
||||
- 客户端配置
|
||||
```sh
|
||||
# frpc.toml (客户端)
|
||||
serverAddr = "x.x.x.x"
|
||||
serverPort = 7000
|
||||
featureGates = { VirtualNet = true }
|
||||
|
||||
# 配置虚拟网络接口
|
||||
virtualNet.address = "100.86.0.2/24"
|
||||
|
||||
[[visitors]]
|
||||
name = "vnet-visitor"
|
||||
type = "stcp"
|
||||
serverName = "vnet-server"
|
||||
secretKey = "your-secret-key"
|
||||
bindPort = -1
|
||||
[visitors.plugin]
|
||||
type = "virtual_net"
|
||||
destinationIP = "100.86.0.1" # 目标虚拟 IP 地址
|
||||
```
|
||||
## 8.安全代理STCP
|
||||
`使用 stcp(secret tcp) 类型的代理可以让您安全地将内网服务暴露给经过授权的用户,这需要访问者也部署 frpc 客户端`
|
||||
- 被访问客户端配置
|
||||
```sh
|
||||
serverAddr = "x.x.x.x"
|
||||
serverPort = 7000
|
||||
|
||||
[[proxies]]
|
||||
name = "secret_ssh"
|
||||
type = "stcp"
|
||||
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
|
||||
secretKey = "abcdefg"
|
||||
localIP = "127.0.0.1"
|
||||
localPort = 22
|
||||
|
||||
```
|
||||
- 访问者客户端配置
|
||||
```sh
|
||||
serverAddr = "x.x.x.x"
|
||||
serverPort = 7000
|
||||
|
||||
[[visitors]]
|
||||
name = "secret_ssh_visitor"
|
||||
type = "stcp"
|
||||
# 要访问的 stcp 代理的名字
|
||||
serverName = "secret_ssh"
|
||||
secretKey = "abcdefg"
|
||||
# 绑定本地端口以访问 SSH 服务
|
||||
bindAddr = "127.0.0.1"
|
||||
bindPort = 6000
|
||||
|
||||
```
|
||||
- 访问示例
|
||||
```sh
|
||||
ssh -o Port=6000 test@127.0.0.1
|
||||
```
|
||||
## 9.点对点透传(P2P)
|
||||
- 被访问客户端配置
|
||||
```sh
|
||||
serverAddr = "x.x.x.x"
|
||||
serverPort = 7000
|
||||
# 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器
|
||||
# natHoleStunServer = "xxx"
|
||||
|
||||
[[proxies]]
|
||||
name = "p2p_ssh"
|
||||
type = "xtcp"
|
||||
# 只有共享密钥 (secretKey) 与服务器端一致的用户才能访问该服务
|
||||
secretKey = "abcdefg"
|
||||
localIP = "127.0.0.1"
|
||||
localPort = 22
|
||||
|
||||
```
|
||||
- 访问者客户端配置
|
||||
```sh
|
||||
serverAddr = "x.x.x.x"
|
||||
serverPort = 7000
|
||||
# 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器
|
||||
# natHoleStunServer = "xxx"
|
||||
|
||||
[[visitors]]
|
||||
name = "p2p_ssh_visitor"
|
||||
type = "xtcp"
|
||||
# 要访问的 P2P 代理的名称
|
||||
serverName = "p2p_ssh"
|
||||
secretKey = "abcdefg"
|
||||
# 绑定本地端口以访问 SSH 服务
|
||||
bindAddr = "127.0.0.1"
|
||||
bindPort = 6000
|
||||
# 如果需要自动保持隧道打开,将其设置为 true
|
||||
# keepTunnelOpen = false
|
||||
|
||||
```
|
||||
- 配置回滚,如果打洞失败改为stcp
|
||||
```sh
|
||||
[[visitors]]
|
||||
name = "stcp-visitor"
|
||||
type = "stcp"
|
||||
serverName = "stcp-test"
|
||||
secretKey = "abc"
|
||||
bindPort = -1
|
||||
|
||||
[[visitors]]
|
||||
name = "xtcp-visitor"
|
||||
type = "xtcp"
|
||||
serverName = "xtcp-test"
|
||||
secretKey = "abc"
|
||||
bindAddr = "127.0.0.1"
|
||||
bindPort = 9002
|
||||
fallbackTo = "stcp-visitor"
|
||||
fallbackTimeoutMs = 2000 #超时时间,单位:毫秒
|
||||
|
||||
```
|
||||
|
||||
# kvm虚拟化
|
||||
## KVM存储池管理
|
||||
### 删除存储池
|
||||
```sh
|
||||
# 列出所有存储池
|
||||
sudo virsh pool-list --all
|
||||
# 停用存储池
|
||||
sudo virsh pool-destroy <存储池名称>
|
||||
# 取消存储池自动启动
|
||||
sudo virsh pool-autostart --disable <存储池名称>
|
||||
# 删除存储池文件
|
||||
sudo virsh pool-delete <存储池名称>
|
||||
# 取消存储池定义
|
||||
sudo virsh pool-undefine <存储池名称>
|
||||
```
|
||||
### 创建存储池
|
||||
```sh
|
||||
# 存储池类型:本地文件系统,网络文件系统,物理磁盘设备,lvm卷组,iSCSI,预格式化的块设备
|
||||
# 创建目录/data/vmfs,定义并构建一个基于本地目录的存储池,
|
||||
virsh pool-define-as vmdisk --type dir --target /data/vmfs
|
||||
virsh pool-build vmdisk
|
||||
# 激活并设置开机自启
|
||||
virsh pool-start vmdisk
|
||||
virsh pool-autostart vmdisk
|
||||
|
||||
# 在存储池中创建磁盘卷
|
||||
virsh vol-create-as vmdisk myvm-disk.qcow2 20G --format qcow2
|
||||
# 使用qemu-img直接创建磁盘文件
|
||||
qemu-img create -f qcow2 /var/lib/libvirt/images/myvm-disk.qcow2 20G
|
||||
```
|
||||
## KVM磁盘管理
|
||||
```sh
|
||||
# 扩容虚拟机磁盘
|
||||
qemu-img resize /var/lib/libvirt/images/vm_name.qcow2 +100G
|
||||
|
||||
```
|
||||
## KVM状态管理
|
||||
```sh
|
||||
# 列出虚拟机
|
||||
virsh list --all #查看所有虚拟机(包括已关闭的)
|
||||
|
||||
# 启动虚拟机
|
||||
virsh start <虚拟机名称> #启动指定虚拟机
|
||||
|
||||
# 正常关机
|
||||
virsh shutdown <虚拟机名称> #向虚拟机发送关机信号,推荐使用
|
||||
|
||||
# 强制关机
|
||||
virsh destroy <虚拟机名称> #相当于直接断电,用于虚拟机无响应时
|
||||
|
||||
# 重启虚拟机
|
||||
virsh reboot <虚拟机名称> #重启虚拟机
|
||||
|
||||
# 挂起/恢复
|
||||
virsh suspend <虚拟机名称>/ virsh resume <虚拟机名称> #暂停或恢复虚拟机运行
|
||||
|
||||
# 设置开机自启
|
||||
virsh autostart <虚拟机名称> #宿主机启动时,该虚拟机自动启动
|
||||
|
||||
# 连接控制台
|
||||
virsh console <虚拟机名称> #连接到虚拟机的文本控制台
|
||||
```
|
||||
## KVM快照管理
|
||||
```sh
|
||||
# 创建快照
|
||||
virsh snapshot-create-as --domain <虚拟机名称> --name <快照名称> #为指定虚拟机创建快照
|
||||
|
||||
# 查看快照列表
|
||||
virsh snapshot-list <虚拟机名称> #查看虚拟机的所有快照
|
||||
|
||||
# 恢复快照
|
||||
virsh snapshot-revert --domain <虚拟机名称> --snapshotname <快照名称> #将虚拟机状态恢复到创建快照时的状态
|
||||
|
||||
# 删除快照
|
||||
virsh snapshot-delete --domain <虚拟机名称> --snapshotname <快照名称>
|
||||
```
|
||||
## KVM网络管理
|
||||
```sh
|
||||
|
||||
```
|
||||
## KVM配置管理
|
||||
```sh
|
||||
# 查看虚拟机详细信息
|
||||
virsh dominfo <虚拟机名称>
|
||||
|
||||
# 导出虚拟机xml配置
|
||||
virsh dumpxml <虚拟机名称> > vm-config.xml #可用于备份或复制虚拟机配置
|
||||
|
||||
# 编辑虚拟机配置
|
||||
virsh edit <虚拟机名称> #这是最安全的修改配置方式,它会检查XML语法
|
||||
```
|
||||
# caddy服务
|
||||
```json
|
||||
# caddyfile配置文件
|
||||
|
||||
# 配置重定向
|
||||
cvms.cn {
|
||||
redir https://www.cvms.cn{uri} permanent
|
||||
}
|
||||
# 配置反向代理
|
||||
www.cvms.cn {
|
||||
reverse_proxy http://124.71.69.197:4000
|
||||
}
|
||||
# 使用http协议反向代理
|
||||
http://api.cvms.cn {
|
||||
reverse_proxy http://localhost:45000
|
||||
}
|
||||
```
|
||||
1612
Linux/Linux笔记.md
Normal file
1612
Linux/Linux笔记.md
Normal file
File diff suppressed because it is too large
Load Diff
305
Linux/Linux通用文档.md
Normal file
305
Linux/Linux通用文档.md
Normal file
@@ -0,0 +1,305 @@
|
||||
|
||||
# 文件管理
|
||||
## ACL访问控制
|
||||
|
||||
|
||||
# 网络管理
|
||||
## nmcli命令管理网络配置
|
||||
### 1.管理网络连接与状态
|
||||
```sh
|
||||
# 显示所有连接(包括名称、UUID、类型、设备)
|
||||
nmcli connection show
|
||||
|
||||
#仅显示活动连接
|
||||
nmcli connection show --active
|
||||
|
||||
# 查看所有网络设备及其状态(如连接状态、类型):
|
||||
nmcli device status
|
||||
|
||||
# 查看指定设备的详细信息(如 IP、MAC 地址
|
||||
nmcli device show eth0
|
||||
|
||||
# 删除网卡
|
||||
nmcli conn delete eth0
|
||||
|
||||
# 添加物理网卡
|
||||
nmcli connection add type ethernet ifname ens38 con-name my-ens38
|
||||
# 添加网桥从接口网卡
|
||||
nmcli conn add type bridge-slave ifname enp1s0 con-name enp1s0 master bridge0
|
||||
|
||||
# 激活(启用)指定连接
|
||||
nmcli connection up "Wired connection 1"
|
||||
|
||||
# 停用指定连接
|
||||
nmcli connection down "Wired connection 1"
|
||||
|
||||
# 启用所有网络管理
|
||||
nmcli networking on
|
||||
|
||||
# 禁用所有网络管理
|
||||
nmcli networking off
|
||||
|
||||
# 禁用再启用设备(相当于重启某个网卡
|
||||
nmcli device disconnect eth0 && nmcli device connect eth0
|
||||
|
||||
# 重新加载连接配置(修改配置文件后
|
||||
nmcli connection reload
|
||||
|
||||
# 检查网络连通性
|
||||
nmcli networking connectivity
|
||||
|
||||
# 监控网络状态变化
|
||||
nmcli monitor
|
||||
|
||||
# 重载配置
|
||||
nmcli conn reload
|
||||
|
||||
# 修改设备名称
|
||||
sudo nmcli connection modify "旧连接名" connection.id "新连接名"
|
||||
```
|
||||
### 2.wifi管理
|
||||
```sh
|
||||
# 列出所有可用的 Wi-Fi 网络
|
||||
nmcli device wifi list
|
||||
# 连接到有密码保护的 Wi-Fi 网络
|
||||
nmcli device wifi connect "SSID名称" password "你的密码"
|
||||
# 连接到隐藏的 Wi-Fi 网络
|
||||
nmcli device wifi connect "SSID名称" password "你的密码" hidden yes
|
||||
# 断开当前 Wi-Fi 连接
|
||||
nmcli device disconnect wlan0 # wlan0 为你的无线设备名
|
||||
# 打开 Wi-Fi
|
||||
nmcli radio wifi on
|
||||
# 关闭 Wi-Fi
|
||||
nmcli radio wifi off
|
||||
# 扫描wifi
|
||||
nmcli device wifi rescan
|
||||
```
|
||||
### 3.有线网络管理
|
||||
```sh
|
||||
# 配置静态 IP 地址
|
||||
nmcli connection modify "eth0" ipv4.method manual \
|
||||
ipv4.addresses 192.168.1.100/24 \
|
||||
ipv4.gateway 192.168.1.1 \
|
||||
ipv4.dns 8.8.8.8
|
||||
# 激活配置使其生效
|
||||
nmcli connection up "eth0"
|
||||
|
||||
# 配置动态 IP(DHCP)
|
||||
# 将 IPv4 方法设置为自动以通过 DHCP 获取 IP
|
||||
nmcli connection modify "eth0" ipv4.method auto
|
||||
nmcli connection up "eth0"
|
||||
|
||||
# 添加多个 IP 地址
|
||||
# 为连接 eth0 添加一个辅助 IP 地址
|
||||
nmcli connection modify "eth0" +ipv4.addresses "192.168.1.101/24"
|
||||
nmcli connection up "eth0"
|
||||
|
||||
|
||||
```
|
||||
# 磁盘管理
|
||||
### LVM虚拟磁盘
|
||||
#### LVM功能介绍
|
||||
**LVM**(Logical Volume Manager,逻辑卷管理)是Linux系统中一种强大的**磁盘管理机制**,它在物理磁盘和文件系统之间增加了一个抽象层,使管理员能够**灵活地管理存储空间**。LVM通过将物理存储资源虚拟化,允许动态调整磁盘容量而无需重新分区或中断系统运行,极大提高了存储管理的便捷性和效率。
|
||||
LVM的核心组件包括**物理卷(PV)**、**卷组(VG)**和**逻辑卷(LV)**。物理卷是LVM的基本存储单元,可以是整个物理磁盘或磁盘分区,卷组由一个或多个物理卷组成,形成一个存储池,用于统一管理物理存储资源
|
||||
逻辑卷是从卷组中划分出的虚拟磁盘分区,可以在其上创建文件系统并挂载使用,LVM的最小存储单元是**物理扩展块(PE)**,默认大小为4MB,物理卷被划分为多个PE,逻辑卷则由多个逻辑扩展块(LE)组成,LE与PE一一对应。
|
||||
LVM的**工作原理**是通过抽象层屏蔽下层物理磁盘的布局,提供统一的存储视图。管理员可以动态调整逻辑卷的大小,添加或移除物理卷,而无需关心数据的物理存储位置,这种机制使得存储管理更加灵活,特别适用于需要频繁调整存储空间的场景。
|
||||
|
||||
_表:LVM核心组件及其功能
|
||||
|
||||
|**组件**|**全称**|**功能描述**|
|
||||
|---|---|---|
|
||||
|**PV (Physical Volume)**|物理卷|LVM的基本存储单元,可以是物理磁盘或分区,被划分为多个PE|
|
||||
|**VG (Volume Group)**|卷组|由一个或多个PV组成的存储池,用于集中管理物理存储资源|
|
||||
|**LV (Logical Volume)**|逻辑卷|从VG中划分出的虚拟磁盘分区,可格式化为文件系统并挂载使用|
|
||||
|**PE (Physical Extent)**|物理扩展块|PV中可分配的最小存储单元,默认大小为4MB|
|
||||
|**LE (Logical Extent)**|逻辑扩展块|LV中可分配的最小存储单元,与PE大小相同且一一对应|
|
||||
##### LVM分区与传统分区对比
|
||||
|
||||
|特性|传统分区|LVM (逻辑卷管理)|
|
||||
|---|---|---|
|
||||
|**灵活性**|分区大小固定,调整困难且风险高|**可动态调整**逻辑卷大小,无需重启|
|
||||
|**存储池**|每个分区独立,无法合并使用|将**多个物理磁盘/分区**整合为单一存储池(卷组)|
|
||||
|**扩展性**|新增硬盘需手动迁移数据|可轻松将新硬盘加入现有存储池,**无缝扩展**容量|
|
||||
|**高级功能**|不支持|支持**快照**(用于备份)、**条带化、镜像**等|
|
||||
|**管理复杂度**|简单直观|需要学习额外概念和命令|
|
||||
|**性能**|无额外开销|有**轻微性能开销**|
|
||||
|**数据恢复**|相对简单|略复杂,需专用工具|
|
||||
|
||||
**✅ 推荐使用 LVM 的场景:**
|
||||
- **服务器环境**:需要灵活调整分区大小,避免因某个分区空间耗尽而停机维护
|
||||
- **多磁盘系统**:希望轻松整合多个物理磁盘的容量,并能够从存储池中按需分配空间
|
||||
- **需要高级功能**:如使用快照功能进行在线备份
|
||||
- **不确定未来存储需求时**:LVM 提供了未来调整的余地,无需在初始分区时就精确设定不可更改的大小
|
||||
**❌ 可能无需 LVM 的场景:**
|
||||
- **简单的桌面系统**:磁盘分区结构固定,没有调整需求
|
||||
- **嵌入式设备或小型系统**:对存储需求非常固定,且资源有限
|
||||
- **对 I/O 性能极其敏感的应用**:希望避免 LVM 可能带来的轻微性能开销
|
||||
|
||||
|
||||
#### 物理卷PV操作
|
||||
```sh
|
||||
# pvcreate将物理设备初始化为物理卷
|
||||
pvcreate /dev/sdb1 #将分区/dev/sdb1初始化为物理卷
|
||||
|
||||
# pvdisplay显示物理卷的详细信息
|
||||
pvdisplay /dev/sdb1 #显示指定物理卷的详细信息
|
||||
|
||||
# pvscan扫描系统中所有的物理卷
|
||||
pvscan #列出系统中所有物理卷
|
||||
|
||||
# pvs以简洁格式显示物理卷信息
|
||||
pvs #提供物理卷的概要信息
|
||||
|
||||
# pvremove移除物理卷上的LVM元数据
|
||||
pvremove /dev/sdb1 #移除/dev/sdb1上的LVM标识,使其不再为物理卷
|
||||
|
||||
# pvmove在卷组中移动物理卷上的数据
|
||||
pvmove /dev/sdb1 #将数据从/dev/sdb1移动到卷组中的其他物理卷
|
||||
|
||||
# pvchange更改物理卷的属性
|
||||
pvchange -x n /dev/sdb1 #禁止从物理卷/dev/sdb1分配PE
|
||||
```
|
||||
#### 卷组VG操作
|
||||
```sh
|
||||
#vgcreate创建卷组
|
||||
vgcreate my_vg /dev/sdb1 /dev/sdb2 #使用两个物理卷创建名为 my_vg的卷组
|
||||
|
||||
# vgdisplay显示卷组的详细信息
|
||||
vgdisplay my_vg #显示指定卷组的详细信息
|
||||
|
||||
# vgscan扫描系统中所有的卷组
|
||||
vgscan #检测并列出系统中所有卷组
|
||||
|
||||
# vgs以简洁格式显示卷组信息
|
||||
vgs #提供卷组的概要信息
|
||||
|
||||
# vgextend扩展卷组容量(添加物理卷)
|
||||
vgextend my_vg /dev/sdc1 #将物理卷/dev/sdc1添加到卷组my_vg中
|
||||
|
||||
# vgreduce缩减卷组容量(移除物理卷)
|
||||
vgreduce my_vg /dev/sdb1 #从卷组my_vg中移除物理卷/dev/sdb1
|
||||
|
||||
# vgremove删除卷组
|
||||
vgremove my_vg #删除名为 my_vg的卷组
|
||||
|
||||
# vgchange更改卷组属性(如激活/停用)
|
||||
vgchange -a n my_vg #停用卷组 my_vg
|
||||
|
||||
# vgexport导出卷组
|
||||
vgexport my_vg #将卷组 my_vg从系统中导出(常用于系统间移动卷组)
|
||||
|
||||
# vgimport导入卷组
|
||||
vgimport my_vg #将卷组 my_vg导入系统
|
||||
```
|
||||
#### 逻辑卷LV操作
|
||||
```sh
|
||||
# lvcreate创建逻辑卷,大写L指定容量,小写l使用百分比
|
||||
lvcreate -L 10G -n my_lv my_vg #在卷组 my_vg中创建大小为10G、名为 my_lv的逻辑卷
|
||||
lvcreate -l 100%FREE -n lv_name vg_name #将卷组所有空间划分给逻辑卷
|
||||
|
||||
# lvdisplay显示逻辑卷的详细信息
|
||||
lvdisplay /dev/my_vg/my_lv #显示指定逻辑卷的详细信息
|
||||
|
||||
# lvscan扫描系统中所有的逻辑卷
|
||||
lvscan # 检测并列出系统中所有逻辑卷
|
||||
|
||||
# lvs以简洁格式显示逻辑卷信息
|
||||
lvs #提供逻辑卷的概要信息
|
||||
|
||||
# lvextend扩展逻辑卷容量
|
||||
lvextend -L +5G /dev/my_vg/my_lv #将逻辑卷 my_lv扩展5G
|
||||
|
||||
# lvreduce缩减逻辑卷容量 (需谨慎操作)
|
||||
lvreduce -L -2G /dev/my_vg/my_lv #将逻辑卷 my_lv缩减2G (务必先备份数据并卸载文件系统)
|
||||
|
||||
# lvremove删除逻辑卷
|
||||
lvremove /dev/my_vg/my_lv #删除逻辑卷 my_lv
|
||||
|
||||
# lvresize调整逻辑卷大小(扩展或缩减)
|
||||
lvresize -L 15G /dev/my_vg/my_lv #将逻辑卷 my_lv大小调整为15G
|
||||
|
||||
# lvrename重命名逻辑卷
|
||||
lvrename my_vg old_lv_name new_lv_name #将逻辑卷重命名
|
||||
|
||||
```
|
||||
#### 创建新卷组和逻辑卷
|
||||
```sh
|
||||
# 1.使用lsblk命令查看磁盘设备树
|
||||
# 2.将新磁盘初始化为lvm
|
||||
sudo pvcreate /dev/sdb1
|
||||
# 3.将一个或多个物理卷加入卷组
|
||||
sudo vgcreate vg_name /dev/sdb1 /dev/sdc1
|
||||
# 4.创建一个逻辑卷
|
||||
sudo lvcreate -L 20G -n lv_name vg_name
|
||||
# 5.格式化新创建的逻辑卷为ext4
|
||||
sudo mkfs.ext4 /dev/vg_name/lv_name
|
||||
# 挂载格式化后的逻辑卷
|
||||
sudo mkdir /mnt/data && mount /dev/vg_name/lv_name /mnt/data
|
||||
```
|
||||
#### 逻辑卷扩容
|
||||
```sh
|
||||
# 1.使用lsblk命令查看磁盘设备树
|
||||
# 2.将新磁盘初始化为lvm
|
||||
sudo pvcreate /dev/sdb1
|
||||
# 3.将新的物理卷加入卷组
|
||||
sudo vgextend vg_name /dev/sdb1
|
||||
# 4.扩展已有的lv逻辑卷
|
||||
sudo lvextend -L +10G /dev/my_vg/my_lv
|
||||
# 扩展逻辑卷后需要更新文件系统,新创建的不需要,否则df命令看不到空间扩容
|
||||
# 针对ext4格式
|
||||
resize2fs /dev/vg_data/lv_data
|
||||
# 针对xfs格式
|
||||
xfs_growfs /dev/vg_data/lv_data
|
||||
# xfs系统不支持缩容,ext4缩容风险较高,注意备份
|
||||
|
||||
```
|
||||
#### 移除LVM磁盘步骤
|
||||
```sh
|
||||
# 1.确认物理磁盘使用情况
|
||||
pvs -o+pv_used
|
||||
# 2.检查其他卷组是否有空间进行数据迁移
|
||||
vgs
|
||||
# 均匀迁移sdb1的数据到其他卷组
|
||||
sudo pvmove /dev/sdb1
|
||||
# 迁移sdb1的数据到指定卷组
|
||||
sudo pvmove /dev/sdc1
|
||||
# 使用pvs -o+used确认卷组清空,然后移除卷组
|
||||
sudo vgreduce vg_name /dev/sdb1
|
||||
# 移除物理卷元数据
|
||||
sudo pvremove /dev/sdb1
|
||||
|
||||
```
|
||||
## 挂载外置存储
|
||||
```sh
|
||||
# 挂载nfs存储
|
||||
showmount -e 服务器地址 # 显示目标服务器的可挂载路径
|
||||
sudo mkdir /mnt/nfs #创建挂载目录
|
||||
sudo mount -t nfs 服务器地址:/path/name /mnt/nfs
|
||||
|
||||
# 挂载本地iso文件
|
||||
sudo mkdir /mnt/iso
|
||||
mount -o loop /path/file.iso /mnt/iso
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
# 安全管理
|
||||
|
||||
# 系统管理
|
||||
|
||||
# 用户管理
|
||||
|
||||
# 软件源管理
|
||||
## 添加软件源
|
||||
```sh
|
||||
# 查看所有软件源
|
||||
dnf repolist all
|
||||
# 安装epel源
|
||||
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
|
||||
# 启用epel源
|
||||
subscription-manager repos --enable epel
|
||||
```
|
||||
|
||||
|
||||
|
||||
87
Linux/RedHat系文档.md
Normal file
87
Linux/RedHat系文档.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# 软件安装
|
||||
### 安装pip
|
||||
```sh
|
||||
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
|
||||
python3 get-pip.py --user
|
||||
```
|
||||
## 安装ansible
|
||||
```sh
|
||||
# 为当前用户正常安装
|
||||
python3 -m pip install --user ansible
|
||||
# 为当前用户最小安装
|
||||
python3 -m pip install --user ansible-core
|
||||
# 升级ansible
|
||||
python3 -m pip install --upgrade --user ansible
|
||||
|
||||
|
||||
# 隔离环境安装ansible
|
||||
pip install --user pipx
|
||||
pipx install --include-deps ansible
|
||||
pipx upgrade --include-injected ansible
|
||||
```
|
||||
# 激活订阅管理
|
||||
## 命令行取消激活
|
||||
```sh
|
||||
# 取消注册
|
||||
subscription-manager unregister
|
||||
# 清理文件
|
||||
subscription-manager clean
|
||||
```
|
||||
## 命令行激活订阅
|
||||
```sh
|
||||
注册订阅
|
||||
subscription-manager register --username adhsite@qq.com --password n5HIvS9C3mGb#Esz
|
||||
```
|
||||
# firewalld防火墙基本用法
|
||||
```sh
|
||||
# 启动:
|
||||
systemctl start firewalld
|
||||
|
||||
#查看状态:
|
||||
systemctl status firewalld
|
||||
|
||||
#停止:
|
||||
systemctl disable firewalld
|
||||
|
||||
# 禁用:
|
||||
systemctl stop firewalld
|
||||
|
||||
# 放通80端口(--permanent永久生效,没有此参数重启后失效)
|
||||
firewall-cmd --zone=public --add-port=80/tcp --permanent
|
||||
|
||||
# 关闭80端口
|
||||
firewall-cmd --zone=public --remove-port=80/tcp --permanent
|
||||
|
||||
# 更新防火墙规则:
|
||||
firewall-cmd --reload
|
||||
|
||||
# 查看所有打开的端口:
|
||||
firewall-cmd --zone=public --list-ports
|
||||
|
||||
# 查看版本:
|
||||
firewall-cmd --version
|
||||
|
||||
# 查看帮助:
|
||||
firewall-cmd --help
|
||||
|
||||
# 显示状态:
|
||||
firewall-cmd --state
|
||||
|
||||
# 查看区域信息:
|
||||
firewall-cmd --get-active-zones
|
||||
|
||||
# 查看指定接口所属区域:
|
||||
firewall-cmd --get-zone-of-interface=eth0
|
||||
|
||||
# 拒绝所有包:
|
||||
firewall-cmd --panic-on
|
||||
|
||||
# 取消拒绝状态:
|
||||
firewall-cmd --panic-off
|
||||
|
||||
# 查看是否拒绝:
|
||||
firewall-cmd --query-panic
|
||||
|
||||
# 查看80端口
|
||||
firewall-cmd --zone=public --query-port=80/tcp
|
||||
```
|
||||
70
Linux/个性账号名.md
Normal file
70
Linux/个性账号名.md
Normal file
@@ -0,0 +1,70 @@
|
||||
|
||||
|
||||
以下是为您精心设计的 **Linux 账号名方案**,分门别类方便选择:
|
||||
|
||||
---
|
||||
|
||||
### 🌟 **极简科技风**
|
||||
| 用户名 | 灵感来源 | 记忆点 |
|
||||
|-----------|--------------------------|-------------------------------|
|
||||
| **nova** | 超新星爆发(天文现象) | 简短有力,象征新生力量✨ |
|
||||
| **zephyr**| 西风之神(希腊神话) | 轻盈灵动,开发者偏爱名🌀 |
|
||||
| **axon** | 神经元突触(生物学) | 科技感 + 易键入(x 键位特殊)🔬|
|
||||
| **vortex**| 数据漩涡🌀 | 适合做数据分析的机器 |
|
||||
|
||||
---
|
||||
|
||||
### 🎨 **文艺个性派**
|
||||
| 用户名 | 隐藏含义 | 适合场景 |
|
||||
|-------------|---------------------------|-----------------------------|
|
||||
| **solstice**| 冬至/夏至(节气转折点) | 纪念重要日期的服务器📅 |
|
||||
| **halcyon** | 宁静祥和(翡翠鸟传说) | 个人开发机首选,寓意平和🕊️ |
|
||||
| **eclipse** | 日蚀月蚀的天文奇观 | 适合做备份服务器的名字🌑 |
|
||||
| **obelisk** | 方尖碑(神秘符号) | 极客范儿,适合加密设备🗿 |
|
||||
|
||||
---
|
||||
|
||||
### 🛠️ **实用主义组**
|
||||
| 用户名 | 设计思路 | 优势分析 |
|
||||
|--------------|--------------------------|---------------------------|
|
||||
| **ctrlalt_** | 经典快捷键致敬⌨️ | 巧妙空格提示用 `_` 收尾 |
|
||||
| **5h311** | "Shell" 的 leet 写法(5=h, 3=e, 1=l) | 黑客文化彩蛋💻 |
|
||||
| **dotfile** | 配置文件的灵魂所在⚙️ | 直击 Linux 用户痛点 |
|
||||
| **0x1a** | 十六进制的 26(ASCII 换页符) | 极简数字流,适合服务器🔢 |
|
||||
|
||||
---
|
||||
|
||||
### 🌿 **自然元素系**
|
||||
| 用户名 | 意象 | 适用设备 |
|
||||
|-------------|-------------------------|--------------------------|
|
||||
| **fern** | 蕨类植物(古老而顽强)🌿 | 长期运行的服务器 |
|
||||
| **stratus** | 层云(云计算双关)☁️ | 云服务器/VPS 专用 |
|
||||
| **basalt** | 玄武岩(坚固稳定)🗻 | 防火墙或网关设备 |
|
||||
| **tundra** | 冻原(纯净极简)❄️ | 做开发测试环境 |
|
||||
|
||||
---
|
||||
|
||||
### 💡 **命名技巧**
|
||||
1. **混合创作法**:`姓氏缩写 + 出生年份后两位` → **lj24** (李杰2024)
|
||||
2. **反向拼写法**:`宠物名倒写` → 猫咪"Milo" → **oliM**
|
||||
3. **领域术语**:`专业词汇变形` → 程序员可用 **bool_**
|
||||
4. **键盘美学**:`相邻键位组合` → **ujm** (YUHJNM 键区三角)
|
||||
|
||||
---
|
||||
|
||||
### ✅ 最终检查清单
|
||||
- 在终端测试是否存在冲突:
|
||||
```bash
|
||||
getent passwd 拟用用户名 # 返回为空则表示可用
|
||||
```
|
||||
- 避免使用 `root`/`admin` 等高风险名称
|
||||
- 长度控制在 **3-8个字符** 最佳
|
||||
- 首字母推荐小写(遵循 Linux 传统)
|
||||
|
||||
示例命令创建用户:
|
||||
```bash
|
||||
sudo useradd -m -s /bin/bash nova # 创建名为 nova 的用户
|
||||
passwd nova # 设置密码
|
||||
```
|
||||
|
||||
让您的用户名成为系统上的独特印记吧! 🐧
|
||||
53
Windows/Windows教程.md
Normal file
53
Windows/Windows教程.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# 设置虚拟化程序可用内存
|
||||
[wsl2]
|
||||
memory=2GB
|
||||
swap=2GB
|
||||
localhostForwarding=true
|
||||
|
||||
|
||||
ver ::显示windows版本
|
||||
set ::显示,设置,删除环境变量
|
||||
gpresult /z /scope user ::显示用户组策略详细信息
|
||||
driverquery ::显示设备驱动状态和属性
|
||||
diskpart ::显示磁盘分区属性
|
||||
rem format 格式化磁盘
|
||||
|
||||
#安装telnet客户端功能
|
||||
dism -online -enable-feature -featurename:TelnetClient
|
||||
#卸载telne客户端功能
|
||||
dism -online -disable-feature -featurename:TelnetClient
|
||||
|
||||
#telnet服务端同上
|
||||
dism -online -enable-feature -featurename:TelnetServer
|
||||
dism -online -disable-feature -featurename:TelnetServer
|
||||
|
||||
#启动telnet服务
|
||||
sc config tlntsvr start= auto&net start telnet
|
||||
#禁用telnet服务
|
||||
sc config tlntsvr start= disabled&net stop telnet
|
||||
|
||||
# 配置WAPM网站环境
|
||||
在php中文网下载apache的windows版与php7和mysql5.7
|
||||
将所有压缩包解压到同一个目录下D:/web
|
||||
三个目录分别是apache24,php7,mysql
|
||||
1.配置Apache服务
|
||||
在apache24/conf目录内找到httpd.conf文件
|
||||
在第38行找到修改为 Define ServerRoot "D:/web/apache24"
|
||||
在第245行找到 DOcumentRoot "D:/WWW" //网站根目录位置
|
||||
在280行找到 DirectoryIndex index.html 在后面添加index.php //添加默认页面
|
||||
在命令行进入d: cd web/apache24/bin 输入httpd回车
|
||||
在D:/web/apache24/bin目录下执行httpd.exe -k install -n "apache" //将apache添加为本地服务
|
||||
在命令行使用net start apache 启动apache服务
|
||||
2.配置PHP服务
|
||||
进入php7目录找到php.ini-development 复制后重名为php.ini
|
||||
进入Apache/conf目录找到httpd.conf文件,在末尾添加
|
||||
#php72 support
|
||||
LoadModule php7_module "D:/web/php7/php7apache2_4.dll"
|
||||
AddHandler application/x-httpd-php .php
|
||||
#configure the path to php.ini
|
||||
PHPIniDir "D:/web/php7"
|
||||
重启apache服务
|
||||
3.配置mysql服务
|
||||
打开之前复制的php.ini文件
|
||||
在732行找到;extension_dir = "ext" 替换为extension_dir = "D:/web/php7/ext"并去掉前面的分号";"
|
||||
在897行找到;extension=mysqli 去掉前面的分号,根据需要开启下面几行的pdo支持
|
||||
268
Windows/Windows笔记.md
Normal file
268
Windows/Windows笔记.md
Normal file
@@ -0,0 +1,268 @@
|
||||
## 常用快捷键
|
||||
```sh
|
||||
win10快捷键
|
||||
|
||||
一键切“桌面” 快捷键:Win+Ctrl+→/←
|
||||
一键搜索 快捷键:Win+S
|
||||
多重剪贴板 快捷键:Win+V
|
||||
一键截图 快捷键:Win+Shift+S
|
||||
一键语音输入 快捷键:Win+H
|
||||
白板 快捷键:Win+W
|
||||
一键显日历 快捷键:Win+Alt+D
|
||||
一键录屏 快捷键:Win+G
|
||||
一键投影 快捷键:Win+P
|
||||
一键连电视 快捷键:Win+K
|
||||
快速启动软件 快捷键:Win+1/2/3……
|
||||
一键放大 快捷键:Win+“+/-”
|
||||
```
|
||||
## 磁盘加密管理
|
||||
```sh
|
||||
manage-bde
|
||||
```
|
||||
## windbg蓝屏分析
|
||||
```shell
|
||||
# 必须要设置为小内存转储
|
||||
# 使用ctrl+S打开符号表设置,输入以下内容,保存
|
||||
SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
|
||||
|
||||
# 使用Ctrl+D打开蓝屏文件
|
||||
|
||||
# 分析文件
|
||||
!analyze -v
|
||||
```
|
||||
|
||||
## 查看电池容量
|
||||
```vb
|
||||
powercfg/batteryreport
|
||||
```
|
||||
## exsi合并多个虚拟硬盘文件
|
||||
```sh
|
||||
# 在vmware安装目录下,默认在C:\Program Files (x86)\VMware\VMware Workstation运行
|
||||
# d:\vmdk目录下需包含所有vmdk文件,并指定主vmdk文件
|
||||
.\vmware-vdiskmanager.exe -r "d:\vmdk\windows.vmdk" -t 0 d:\new-windows.vmdk
|
||||
```
|
||||
## exsi虚拟磁盘文件转换为qcow2
|
||||
```sh
|
||||
# 转换后的qcow2文件可以注册为kvm虚拟机
|
||||
qemu-img convert -p -f vmdk -O qcow2 d:\new-windows.vmdk windows.qcow2
|
||||
```
|
||||
## 计算哈希值
|
||||
```powershell
|
||||
# 打开powershell
|
||||
certutil -hashfile 文件名 MD5 #计算md5值
|
||||
certutil -hashfile 文件名 SHA256 #计算sha256值
|
||||
```
|
||||
|
||||
## 命令行查看文件内容
|
||||
|
||||
^4441da
|
||||
|
||||
```sh
|
||||
# 方法一
|
||||
more filename
|
||||
|
||||
# 方法二
|
||||
type filename
|
||||
```
|
||||
|
||||
## 设置虚拟化程序可用内存
|
||||
```sh
|
||||
[wsl2]
|
||||
memory=2GB
|
||||
swap=2GB
|
||||
localhostForwarding=true
|
||||
```
|
||||
|
||||
ver ::显示windows版本
|
||||
|
||||
set ::显示,设置,删除环境变量
|
||||
|
||||
gpresult /z /scope user ::显示用户组策略详细信息
|
||||
|
||||
driverquery ::显示设备驱动状态和属性
|
||||
|
||||
diskpart ::显示磁盘分区属性
|
||||
|
||||
rem format 格式化磁盘
|
||||
|
||||
|
||||
## telnet安装卸载
|
||||
```sh
|
||||
#安装telnet客户端功能
|
||||
dism -online -enable-feature -featurename:TelnetClient
|
||||
|
||||
#卸载telne客户端功能
|
||||
dism -online -disable-feature -featurename:TelnetClient
|
||||
|
||||
# 安装telnet服务端
|
||||
dism -online -enable-feature -featurename:TelnetServer
|
||||
|
||||
# 卸载telnet服务端
|
||||
dism -online -disable-feature -featurename:TelnetServer
|
||||
|
||||
#启动telnet服务
|
||||
sc config tlntsvr start= auto&net start telnet
|
||||
|
||||
#禁用telnet服务
|
||||
sc config tlntsvr start= disabled&net stop telnet
|
||||
```
|
||||
# cmd常用命令
|
||||
|
||||
## 工具命令
|
||||
|
||||
### utilman辅助工具
|
||||
|
||||
### wiaacmgr扫描仪
|
||||
****
|
||||
### write写字板
|
||||
|
||||
### notepad记事本
|
||||
|
||||
### mspaint画图板
|
||||
|
||||
### osk屏幕键盘
|
||||
|
||||
### iexpress木马捆绑工具
|
||||
|
||||
### eudcedit造字程序
|
||||
|
||||
### calc计算器
|
||||
|
||||
### charmap字符映射表
|
||||
|
||||
## 磁盘管理命令
|
||||
|
||||
### convert转换文件系统到ntfs
|
||||
|
||||
### recover恢复坏磁盘的信息
|
||||
|
||||
### diskperf磁盘性能计数器
|
||||
|
||||
### diskmgmt.msc磁盘管理
|
||||
|
||||
### chkdsk磁盘检查
|
||||
|
||||
### cleanmgr磁盘清理
|
||||
|
||||
## 文件管理命令
|
||||
|
||||
### findstr查找文件中的行
|
||||
|
||||
### ftp文件共享
|
||||
|
||||
### find查找文件中的文本行
|
||||
|
||||
### fc比较两个文件
|
||||
|
||||
### extrac32解cab工具
|
||||
|
||||
### expand解压缩
|
||||
|
||||
### diantz制作cab文件
|
||||
|
||||
### comp比较文件
|
||||
|
||||
### attrib显示更改文件属性
|
||||
|
||||
### sfc系统文件检查器
|
||||
|
||||
### sigverif文件签名验证
|
||||
|
||||
### fsmgmt.msc共享文件夹管理器
|
||||
|
||||
### type查看文件内容[[Windows笔记#^4441da]]
|
||||
|
||||
## 系统管理命令
|
||||
|
||||
### query查询进程
|
||||
|
||||
### control控制面板
|
||||
|
||||
### chgusr改变用户
|
||||
|
||||
### chgport改变端口
|
||||
|
||||
### chglogon启用或停用会话记录
|
||||
|
||||
### devmgmt.msc设备管理器
|
||||
|
||||
### wmimgmt.msc管理体系结构WMI
|
||||
|
||||
### taskmgr任务管理器
|
||||
|
||||
### secpol.msc本地安全策略
|
||||
|
||||
### syskey系统加密
|
||||
|
||||
### services.msc本地服务
|
||||
|
||||
### regedit注册表编辑器
|
||||
|
||||
### rsop.msc组策略结果集
|
||||
|
||||
### regedt32注册表编辑器
|
||||
|
||||
### perfmon.msc性能检测程序
|
||||
|
||||
### odbcad32数据源管理器
|
||||
|
||||
### mmc控制台
|
||||
|
||||
### msconfig系统配置
|
||||
|
||||
### gpedit.msc组策略
|
||||
|
||||
### explorer资源管理器
|
||||
|
||||
### dxdiag检查驱动信息
|
||||
|
||||
### compmgmt.msc计算机管理
|
||||
|
||||
### at任务计划命令
|
||||
|
||||
### lusrmgr.msc本地用户组
|
||||
|
||||
sysdm.cpl更改计算机用户名及组
|
||||
|
||||
firewall.cpl打开防火墙设置
|
||||
|
||||
wf.msc打开防火墙策略
|
||||
|
||||
|
||||
## 显示信息命令
|
||||
|
||||
### fontvies显示字体文件中的字体
|
||||
|
||||
### qwinsta显示终端服务信息
|
||||
|
||||
### quser显示用户登陆信息
|
||||
|
||||
### winver系统版本信息
|
||||
|
||||
### lusrmgr.msc本地用户和组
|
||||
|
||||
### eventvwr事件查看器
|
||||
|
||||
### certmgr.msc证书管理
|
||||
|
||||
## 网络管理命令
|
||||
|
||||
### rasautou建立一个ras连接
|
||||
|
||||
### route路由信息
|
||||
|
||||
### ipconfig查看ip信息
|
||||
|
||||
### cacls编辑acl
|
||||
|
||||
### arp地址协议解析
|
||||
|
||||
### nslookup地址侦测
|
||||
|
||||
### netstat端口检测
|
||||
|
||||
### 分支主题
|
||||
|
||||
## 故障解决
|
||||
- esxi集成网卡驱动[[故障解决方案大全#^4bfd56]]
|
||||
- window更新服务启动失败[[故障解决方案大全#^6f79fa]]
|
||||
156
Windows/cmd常用命令.md
Normal file
156
Windows/cmd常用命令.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# cmd常用命令
|
||||
|
||||
## 工具命令
|
||||
|
||||
### utilman辅助工具
|
||||
|
||||
### wiaacmgr扫描仪
|
||||
****
|
||||
### write写字板
|
||||
|
||||
### notepad记事本
|
||||
|
||||
### mspaint画图板
|
||||
|
||||
### osk屏幕键盘
|
||||
|
||||
### iexpress木马捆绑工具
|
||||
|
||||
### eudcedit造字程序
|
||||
|
||||
### calc计算器
|
||||
|
||||
### charmap字符映射表
|
||||
|
||||
## 磁盘管理命令
|
||||
|
||||
### convert转换文件系统到ntfs
|
||||
|
||||
### recover恢复坏磁盘的信息
|
||||
|
||||
### diskperf磁盘性能计数器
|
||||
|
||||
### diskmgmt.msc磁盘管理
|
||||
|
||||
### chkdsk磁盘检查
|
||||
|
||||
### cleanmgr磁盘清理
|
||||
|
||||
## 文件管理命令
|
||||
|
||||
### findstr查找文件中的行
|
||||
|
||||
### ftp文件共享
|
||||
|
||||
### find查找文件中的文本行
|
||||
|
||||
### fc比较两个文件
|
||||
|
||||
### extrac32解cab工具
|
||||
|
||||
### expand解压缩
|
||||
|
||||
### diantz制作cab文件
|
||||
|
||||
### comp比较文件
|
||||
|
||||
### attrib显示更改文件属性
|
||||
|
||||
### sfc系统文件检查器
|
||||
|
||||
### sigverif文件签名验证
|
||||
|
||||
### fsmgmt.msc共享文件夹管理器
|
||||
|
||||
### type查看文件内容[[Windows笔记#^4441da]]
|
||||
|
||||
## 系统管理命令
|
||||
|
||||
### query查询进程
|
||||
|
||||
### control控制面板
|
||||
|
||||
### chgusr改变用户
|
||||
|
||||
### chgport改变端口
|
||||
|
||||
### chglogon启用或停用会话记录
|
||||
|
||||
### devmgmt.msc设备管理器
|
||||
|
||||
### wmimgmt.msc管理体系结构WMI
|
||||
|
||||
### taskmgr任务管理器
|
||||
|
||||
### secpol.msc本地安全策略
|
||||
|
||||
### syskey系统加密
|
||||
|
||||
### services.msc本地服务
|
||||
|
||||
### regedit注册表编辑器
|
||||
|
||||
### rsop.msc组策略结果集
|
||||
|
||||
### regedt32注册表编辑器
|
||||
|
||||
### perfmon.msc性能检测程序
|
||||
|
||||
### odbcad32数据源管理器
|
||||
|
||||
### mmc控制台
|
||||
|
||||
### msconfig系统配置
|
||||
|
||||
### gpedit.msc组策略
|
||||
|
||||
### explorer资源管理器
|
||||
|
||||
### dxdiag检查驱动信息
|
||||
|
||||
### compmgmt.msc计算机管理
|
||||
|
||||
### at任务计划命令
|
||||
|
||||
### lusrmgr.msc本地用户组
|
||||
|
||||
sysdm.cpl更改计算机用户名及组
|
||||
|
||||
firewall.cpl打开防火墙设置
|
||||
|
||||
wf.msc打开防火墙策略
|
||||
|
||||
|
||||
## 显示信息命令
|
||||
|
||||
### fontvies显示字体文件中的字体
|
||||
|
||||
### qwinsta显示终端服务信息
|
||||
|
||||
### quser显示用户登陆信息
|
||||
|
||||
### winver系统版本信息
|
||||
|
||||
### lusrmgr.msc本地用户和组
|
||||
|
||||
### eventvwr事件查看器
|
||||
|
||||
### certmgr.msc证书管理
|
||||
|
||||
## 网络管理命令
|
||||
|
||||
### rasautou建立一个ras连接
|
||||
|
||||
### route路由信息
|
||||
|
||||
### ipconfig查看ip信息
|
||||
|
||||
### cacls编辑acl
|
||||
|
||||
### arp地址协议解析
|
||||
|
||||
### nslookup地址侦测
|
||||
|
||||
### netstat端口检测
|
||||
|
||||
### 分支主题
|
||||
24
其他/README.md
Normal file
24
其他/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
### 本人学习Python和Linux的记录,同时也做一个分享,给有需要的人士提供一个学习资源。也欢迎大家推送代码,提供一些更新,推送代码请提交到develop分支,由我进行master分支的合并
|
||||
|
||||
---
|
||||
> 用法文件一般使用jupyter笔记本或markdown格式,方便学习运用,脚本文件使用jupyter或对应的脚本格式。如果有任何问题,欢迎联系我,我会尽快回复您的问题。
|
||||
|
||||
## 目录
|
||||
|
||||
#### AI(人工智能学习)
|
||||
1. Handwritten Digit Recognition
|
||||
#### Linux(Linux命令和Shell脚本)
|
||||
###### CommandUsage(Linux命令使用及用法)
|
||||
1. [查看系统信息]
|
||||
###### ShellScript(Shell脚本)
|
||||
1. [设置pypi源]
|
||||
#### Python3(Python模块和Python脚本)
|
||||
###### MoudelUsage(模块用法)
|
||||
1. [paramiko用法]
|
||||
###### PythonScript(Python脚本)
|
||||
1. [设置pypi源]
|
||||
#### SoftwareUsage(软件使用方法)
|
||||
1. [Git用法]
|
||||
2. [Jupyter用法]
|
||||
3. [VScode用法]
|
||||
4. [Anaconda用法]
|
||||
11
其他/大华监控报警.md
Normal file
11
其他/大华监控报警.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# 数据规划
|
||||
24小时告警量top10门店
|
||||
3天内告警量top10门店
|
||||
7天内告警top10门店
|
||||
|
||||
异常报警top10门店
|
||||
|
||||
NVR报警量top10门店
|
||||
摄像头报警量top10门店
|
||||
|
||||
|
||||
96
其他/故障解决方案大全.md
Normal file
96
其他/故障解决方案大全.md
Normal file
@@ -0,0 +1,96 @@
|
||||
## cors错误
|
||||
```
|
||||
跨域资源共享标准(CORS:cross-origin sharing standard )新增了一组 HTTP首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。CORS请求失败会产生错误,但是为了安全,在JavaScript代码层面是无法获知到底具体是哪里出了问题。你只能查看浏览器的控制台以得知具体是哪里出现了错误。
|
||||
- 使用下列方法之一: GET HEAD POST
|
||||
- Fetch 规范定义了对 CORS 安全的首部字段集合,不得人为设置该集合之外的其他首部字段。该集合为:
|
||||
1. Accept
|
||||
2. Accept-Language
|
||||
3. Content-Language
|
||||
4. Content-Type (需要注意额外的限制)
|
||||
5. DPR
|
||||
6. Downlink
|
||||
7. Save-Data
|
||||
8. Viewport-Width
|
||||
9. Width
|
||||
- Content-Type 的值仅限于下列三者之一:
|
||||
1. text/plain
|
||||
2. multipart/form-data
|
||||
3. application/x-www-form-urlencoded
|
||||
|
||||
1、客户端向服务器发送出错需要客户端指定content-type的值为以上三种之一
|
||||
2、客户端接受服务器数据错误需要服务器返回时指定返回头"Access-Control-Allow-Origin": "*"允许跨域(错误原因:本地调试请求远程服务器,出现跨域访问导致)
|
||||
```
|
||||
# MySQL解决方案
|
||||
## 1045\(28000\)错误[[MySQL笔记#^055b1a]]
|
||||
# PostgreSQL解决方案
|
||||
## postgresql远程连接失败
|
||||
```sh
|
||||
# ubuntu下12版本出现客户端连接失败:(使用root或postgres用户修改)/etc/postgresql/12/main/
|
||||
1. 在/etc/postgresql/12/main/postgresql.conf文件中60行左右修改listen_addresses = '*'
|
||||
1. 在/etc/postgresql/12/main/pg_hba.conf文件中,在ipv4哪行追加一行
|
||||
host all all 0.0.0.0/0 trust
|
||||
|
||||
```
|
||||
# ubuntu解决方案
|
||||
## ubuntu22.04解决centos容器无法用systemctl[[Linux笔记#^bf399f]]
|
||||
# centos解决方案
|
||||
|
||||
# python解决方案
|
||||
## 更换pip源
|
||||
|
||||
^508e71
|
||||
|
||||
1. Windows更换
|
||||
> 在文件资源管理器输入%appdata%,新建pip文件夹,在文件夹中创建pip.ini配置文件
|
||||
2. Linux/Mac更换
|
||||
> 在用户主目录下创建.pip隐藏文件夹,并在文件夹中创建pip.conf配置文件
|
||||
3. pip源网址
|
||||
> 阿里云 http://mirrors.aliyun.com/pypi/simple/
|
||||
> 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
|
||||
> 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
|
||||
> 华为 https://repo.huaweicloud.com/repository/pypi/simple
|
||||
4. 配置文件内容
|
||||
```python
|
||||
[global]
|
||||
index-url = https://mirrors.aliyun.com/pypi/simple
|
||||
[install]
|
||||
use-mirrors = true
|
||||
mirrors = https://mirrors.aliyun.com/pypi/simple/
|
||||
trusted-host = mirrors.aliyun.com
|
||||
```
|
||||
5. 华为pip加速
|
||||
```python
|
||||
[global]
|
||||
index-url = https://repo.huaweicloud.com/repository/pypi/simple
|
||||
trusted-host = repo.huaweicloud.com
|
||||
timeout = 120
|
||||
```
|
||||
# windows解决方案
|
||||
### esxi-8.0集成网卡驱动
|
||||
|
||||
^4bfd56
|
||||
|
||||
[VMware ESXi 集成网卡驱动教程 - DIYNAS (diy-nas.cn)](https://www.diy-nas.cn/2023-03-12/103.html)
|
||||
- 导出iso镜像报错解决方法
|
||||
- 方法一
|
||||
> 将python版本升级到3.7.9,不然导出iso时会报错
|
||||
- 方法二
|
||||
> Install-Module -Name VMware.PowerCLI -RequiredVersion 12.3.0.17860403
|
||||
|
||||
### windows更新服务启动失败
|
||||
|
||||
^6f79fa
|
||||
|
||||
```
|
||||
net stop wuauserv
|
||||
net stop cryptSvc
|
||||
net stop bits
|
||||
net stop msiserver
|
||||
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
|
||||
ren C:\Windows\System32\catroot2 Catroot2.old
|
||||
net start wuauserv
|
||||
net start cryptSvc
|
||||
net start bits
|
||||
net start msiserver
|
||||
# 重启电脑
|
||||
```
|
||||
81
其他/无人机装调知识.md
Normal file
81
其他/无人机装调知识.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 遥控器操作
|
||||
## 美国手
|
||||
>
|
||||
## 日本手
|
||||
|
||||
## 中国手
|
||||
|
||||
|
||||
# 动力系统
|
||||
## 电调
|
||||
### 作用
|
||||
>1、将电池的直流电转化为电机可用的三相交流电
|
||||
>2、根据飞控信号控制电机转速
|
||||
### 规格
|
||||
> 1、输出电流:电调输出的最大电流值,单位:A,电调输出的电流值要高于电机瞬时最大电流值,如:电机瞬时最大电流20A,则应选用20A以上的电调
|
||||
> 2、工作电压:电调的输入电压,一般与电池的串联数相关,先选电调后选电池
|
||||
### 编程
|
||||
> 电调可以通过配套软件进行调参,常用的调参设置有:1、刹车设置2、电池类型设置3、低压保护4、低压值设置5、锂电节数设置
|
||||
|
||||
## 螺旋桨
|
||||
### 规格型号
|
||||
> 一般用“厂家”+“4位数字”的格式表示型号,
|
||||
> 前两位数字表示:螺旋桨的直径,如果直径大于30需除以10才是真实的直径
|
||||
> 后两位数字表示:螺旋桨的螺距,即螺旋桨沿轴向旋转一周所移动的距离,螺距大于10需要除以10才是真实的螺距
|
||||
> 直径和螺距的单位是:in(英寸)1in=2.54cm
|
||||
## 电机
|
||||
### 电机的槽数和极数
|
||||
#### 槽数(单位:N)
|
||||
> 定子铁芯的槽数量,无刷电机是三相电机,所以槽数是3的倍数
|
||||
#### 极数(单位:P)
|
||||
```
|
||||
外转子上磁铁的数量,由于磁铁是南北极成对使用,所以极数是偶数.
|
||||
```
|
||||
### 电机类型
|
||||
#### 内转子电机
|
||||
```
|
||||
内转子电机和外转子电机一样,只是轴转外壳不转
|
||||
特点:转速高、扭矩小、适合高速小桨
|
||||
```
|
||||
#### 外转子电机
|
||||
```
|
||||
定子在中间,转子在外,外壳与轴一起旋转.
|
||||
特点:转速低、扭矩大、适合低速大桨
|
||||
```
|
||||
### 电机型号及含义
|
||||
```
|
||||
以好盈H8M系列为例,电机型号8108,85kv
|
||||
8108表示了电机的定子的尺寸,前两位为定子直径,后两位为定子高度,单位:mm
|
||||
81代表定子直径81mm,08代表定子高度8mm
|
||||
85kv代表每增加1v电压电机每分钟空转增加的转速,单位:rpm/min
|
||||
电压为5v时,85kv的电机空载转速为85*5=425rpm/min
|
||||
```
|
||||
## 电池
|
||||
### 电压和s,p的含义
|
||||
#### 电压
|
||||
```
|
||||
单节锂电池标准电压:3.7v
|
||||
电池停止工作电压: 2.75v~2.5v以下(以实际为准)
|
||||
电池保护电压:3.6v(低于3v可以认为电池没有能量)
|
||||
```
|
||||
#### 电池s和p的含义
|
||||
```
|
||||
以10s2p举例:
|
||||
s代表串联,10s代表10块标压3.7v的电池串联在一起,串联后的电压=串联的电池数量*3.7v=37v
|
||||
p代表并联,2p代表2块标压3.7v的电池并联在一起,并联后的电压不变,电池能量是单块电池的1倍
|
||||
10s2p代表两组10块标压3.7v的电池串联后又并联,电压是37v,电池能量是单组10块电池的1倍,一般都用1p,很少用并联。
|
||||
```
|
||||
### 电池能量和充放电公式
|
||||
#### 电池能量计算公式
|
||||
```
|
||||
电池容量(单位:A.h)x电压(单位:v)=电池能量(单位:W.h)
|
||||
一般电池都是以mAh计算容量,计算时需除以1000转换为Ah
|
||||
```
|
||||
#### 充放电倍率
|
||||
```
|
||||
充放电倍率单位:C,以10000mAh的电池为例:
|
||||
0.5C放电表示:10000mAh*0.5C=2000mAh=2A,10000mAh的电池以0.5C倍率放电,放电电流为2A,保持0.5C的倍率放电理论上可以放电5小时
|
||||
1C充电表示:10000mAh*1C=10000mAh=10A,10000mAh的电池以1C倍率充电,充电电流为10A,理论上充电时间为1小时
|
||||
|
||||
充放电倍率需要保持在电池承受范围内,否则会对电池造成不可逆的损伤,甚至自燃。相同容量的电池充放电倍率越高,成本越高。电池内阻越高,充放电电压及时间都会降低。
|
||||
```
|
||||
143
其他/无尽西游策划.md
Normal file
143
其他/无尽西游策划.md
Normal file
@@ -0,0 +1,143 @@
|
||||
|
||||
# 符文体系
|
||||
## 标准符文
|
||||
- 玻璃大炮:获得40%伤害,最大生命值减少30%
|
||||
- 冲击之潮:每过16秒获得-50和125之间的技能急速
|
||||
- 代谢过载:每秒回复20%生命值,最大生命值降低60%
|
||||
- 抵近射击:对附近的敌人多造成20%伤害
|
||||
- 囤积狂人:每获得1金币,同时回复生命值
|
||||
- 积累速度:移速降低15%,每升一级增加3%移速
|
||||
- 疾行如风:每获得2急速,额外获得1%移速
|
||||
- 卡牌收集:每拾取一张卡牌,增加5%伤害
|
||||
- 死与税:敌人阵亡时有几率掉落数枚金币
|
||||
- 提神药剂:增加15%经验,减少100%拾取范围,每过60秒吸取所有经验和金币
|
||||
- 一口大小:体型缩小30%,减少20%最大生命值,增加20%移速和36%急速
|
||||
- 鱼素主义:击杀敌人有概率掉落血包
|
||||
- 远距离:对远处的敌人多造成30%伤害
|
||||
- 终极加速:获得100%大招急速
|
||||
- 重型打手:获得50%伤害,减少30%技能急速
|
||||
- 撞击转轮:增加10%移速,移速增减也作用于伤害
|
||||
- 卓而不群:体型增长30%,增加30%最大生命值和6生命回复,减少15%移速
|
||||
## 强化符文
|
||||
- 体积干扰:每过16秒,获得60%和-20%之间的效果范围
|
||||
- 越野运动:每移动20000码距离,增加3%伤害,3%最大生命值,3%效果范围
|
||||
- 不动献祭:在站立不动时会提升技能急速,同时开始减少血量
|
||||
- 运时升级:
|
||||
- 护甲提升:受到伤害时获得持续8秒的5护甲,最多叠加到10层
|
||||
- 关键扩展:最近5秒内每造成1次暴击会使效果范围增加1%,最多100层
|
||||
- 再生组织:每拾取一个血包增加1点生命回复
|
||||
- 精锐投弹手:对精英和小BOSS造成的伤害提升30%,阵亡时掉落一颗炸弹
|
||||
- 巨无霸:
|
||||
- 子弹风暴:
|
||||
- 陪伴宠物
|
||||
- 核心任务:
|
||||
- 老练斗士:
|
||||
- 属性之环:每过16秒按顺序获得以下属性:
|
||||
- 火力全开:
|
||||
- 欢乐庆典:
|
||||
|
||||
# 装备
|
||||
## 旋风切割器
|
||||
- 装备效果:在英雄身边生成可以造成伤害并且击退敌人的飞轮
|
||||
- 进化效果:装备(生命回复)进化,获得永久环绕飞轮
|
||||
- 强化方式:急速,范围,飞弹,持续时间
|
||||
## biubiu枪
|
||||
- 装备效果:向最近的敌人发射飞弹并造成伤害
|
||||
- 进化效果:装备(技能急速)后进化,以极快速度发射飞弹
|
||||
- 强化方式:技能急速,暴击,飞弹
|
||||
## 冰爆护甲
|
||||
- 装备效果:冻结周围敌人,伤害随最大生命值和护甲提升
|
||||
- 进化效果:装备(护甲)后进化,冻结时提供一个护盾,护盾失效时再次冻结周围敌人
|
||||
- 强化方式:技能急速,范围,持续时间,护甲
|
||||
## 炽烈短弓
|
||||
- 装备效果:发射可以留下燃烧区域的飞弹
|
||||
- 进化效果:装备(效果范围)后进化,燃烧区域规模和伤害随时间增加
|
||||
- 强化方式:技能急速,范围,飞弹,持续时间
|
||||
## 雌狮之怨
|
||||
- 装备效果:向单位左右两侧发射弧形飞弹
|
||||
- 进化效果:装备(技能急速)进化,向左右两边发射一道大范围光束
|
||||
- 强化方式:技能急速,暴击,飞弹
|
||||
## 防鲨水雷
|
||||
- 装备效果:发射一个在敌人之间弹跳的炸弹
|
||||
- 进化效果:装备(伤害被动)进化,只要能找到目标就可以一直反弹
|
||||
- 强化方式:技能急速,范围
|
||||
## 幻灵地雷
|
||||
- 装备效果:在环形区域内投掷定时爆炸的炸弹,造成范围伤害
|
||||
- 进化效果:装备(效果范围)进化,爆炸后额外释放爆炸
|
||||
- 强化方式:技能急速,效果范围,飞弹
|
||||
## 回响幅刃
|
||||
- 装备效果:发射可以撞墙反弹的穿刺飞弹
|
||||
- 进化效果:装备(飞弹)进化,飞弹每次弹跳都会增加伤害
|
||||
- 强化方式:技能急速,暴击,飞弹
|
||||
## 回旋刃
|
||||
- 装备效果:朝最近的敌人发射回旋刃
|
||||
- 进化效果:装备(移速被动)进化,以英雄为中心发射一圈飞弹,爆炸后发射更小的飞弹
|
||||
- 强化方式:技能急速,暴击,飞弹,移速
|
||||
## 歼灭者
|
||||
- 装备效果:可以直接消灭区域内所有普通敌人,重创精英敌人,冷却长
|
||||
- 进化效果:装备(经验值)进化,被击杀敌人会掉落更多经验,并有几率掉落金币
|
||||
- 强化方式:经验值,技能急速,范围
|
||||
## 斯塔缇克之剑
|
||||
- 装备效果:发射闪电在生命值最高的敌人之间弹跳
|
||||
- 进化效果:装备(最大生命值)进化,在目标敌人周围制造风暴,持续造成伤害
|
||||
- 强化方式:最大生命值,范围,技能急速,暴击,持续时间
|
||||
## 提伯斯
|
||||
- 装备效果:召唤提伯斯,造成区域伤害,并且只攻击生命值最高的敌人
|
||||
- 进化效果:装备(持续时间)进化,体型增大,速度变快,造成更多伤害
|
||||
- 强化方式:技能急速,范围,持续时间,移速
|
||||
## 兔兔机关枪
|
||||
- 装备效果:对锥形范围持续造成伤害
|
||||
- 进化效果:装备(持续时间)进化,受到伤害的敌人会被减速并眩晕
|
||||
- 强化方式:持续时间,技能急速
|
||||
## 旋涡手套
|
||||
- 装备效果:发射一连串旋转的飞弹
|
||||
- 进化效果:装备(生命回复)进化,在周围发射两股不间断的飞弹
|
||||
- 强化方式:暴击,飞弹
|
||||
## 耀光力场
|
||||
- 装备效果:在周围生成一个持久的力场,对范围内的敌人持续造成伤害
|
||||
- 进化效果:装备(最大生命值)进化,在区域内被击杀会触发爆炸,对附近敌人造成最大生命值百分比的伤害
|
||||
- 强化方式:最大生命值,范围
|
||||
## 悠米无人机
|
||||
- 装备效果:召唤一个无人机,攻击敌人,并收集经验
|
||||
- 进化效果:装备(经验值)进化,造成足够伤害后掉落一个血包
|
||||
- 强化方式:技能急速,范围,飞弹,持续时间,拾取半径
|
||||
## 战兔巨爆
|
||||
- 装备效果:对随机敌人进行轨道打击,小范围造成高伤害
|
||||
- 进化效果:装备(暴击)进化,造成大范围伤害
|
||||
- 强化方式:技能急速,效果范围,暴击
|
||||
## 战兔十字弩
|
||||
- 装备效果:朝敌人以锥形发射飞弹,暴击时可以穿透敌人,飞弹获得额外暴击
|
||||
- 进化效果:装备(暴击)进化,朝随机方向发射半圆飞弹
|
||||
- 强化方式:技能急速,暴击,飞弹
|
||||
## 爪爪投毒器
|
||||
- 装备效果:留下一条造成伤害的毒雾
|
||||
- 进化效果:装备(移速)进化,对敌人造成伤害时,叠加护盾和移速
|
||||
- 强化方式:效果范围,持续时间,移速
|
||||
## 城市列车
|
||||
- 装备效果:召唤一列火车直线穿过敌人
|
||||
- 进化效果:装备(伤害)进化,在行进中产生爆炸,并击飞敌人,被击杀的敌人有几率掉落金币
|
||||
- 强化方式:技能急速,暴击,护甲
|
||||
# 英雄单位
|
||||
## 战士
|
||||
### 孙悟空
|
||||
- 基础属性:伤害150%,最大生命值1500,拾取范围150%,
|
||||
## 射手
|
||||
### 后羿
|
||||
## 法师
|
||||
### 唐僧
|
||||
|
||||
## 辅助
|
||||
### 小白龙
|
||||
|
||||
# 玩家数据
|
||||
## 游戏内数据
|
||||
- 英雄通用基础属性表:等级1,护甲0,技能急速0,移动速度350,当前生命值,生命回复0,经验值加成0,效果范围100%,持续时间100%,飞弹数1,当前经验值0
|
||||
- 玩家技能表:技能数量上限5,重随次数2-5,技能id
|
||||
- 玩家被动属性表:被动数量上限4-6,重随次数(与玩家技能重随次数共享)2-5,被动属性id
|
||||
- 玩家收获表:死亡次数,造成伤害总量,杀死小怪数量,拾取金币数量
|
||||
- 玩家属性加成表:伤害(8,1.8倍),护甲(5,25),最大生命值(5,1.5倍),生命恢复(5,+15/s),移速(4,20%),拾取半径(3,75%),效果范围(4,20%),持续时间(4,20%),暴击率(4,20%),技能急速(4,20%),经验加成(5,25%),飞弹数量(2,2),金币加成(3,45%),奖励时长(2,50%),幻灵之力(100,1%伤害,1%移速,1%技能急速,1%拾取半径)
|
||||
- 经验值与等级对应表
|
||||
## 游戏外数据
|
||||
- 玩家游戏进度:闯关记录,任务完成记录,已解锁的英雄,解锁的技能,被动属性,玩家货币(金币,钻石)
|
||||
- 所有玩家排行榜
|
||||
- 玩家属性加成表:
|
||||
30
其他/电脑常用工具.md
Normal file
30
其他/电脑常用工具.md
Normal file
@@ -0,0 +1,30 @@
|
||||
## 截图工具
|
||||
### eSearch
|
||||
```
|
||||
开源工具https://github.com/xushengfeng/eSearch/
|
||||
```
|
||||
## 终端
|
||||
### windterm
|
||||
|
||||
### nxshell
|
||||
|
||||
### terminology
|
||||
```
|
||||
在终端显示图片
|
||||
```
|
||||
|
||||
## 开发工具
|
||||
### vscode
|
||||
|
||||
## API工具
|
||||
### GraphQL
|
||||
|
||||
## 自动化运维工具
|
||||
### spug
|
||||
```
|
||||
开源的小型自动化运维平台
|
||||
https://github.com/openspug/spug
|
||||
```
|
||||
|
||||
## 文件工具
|
||||
### croc
|
||||
159
其他/英雄塔防策划.md
Normal file
159
其他/英雄塔防策划.md
Normal file
@@ -0,0 +1,159 @@
|
||||
> 策划案正在完善中,先申请个资格
|
||||
# 一、核心玩法介绍
|
||||
#### 1v1对战排位模式
|
||||
> 对战双方使用相同等级的卡牌和装备,其他所有特殊效果在对战中均失效,保证游戏的公平性,玩家通过部署英雄来消灭怪物,当一方消灭怪物的数量领先另一玩家一定数量时即可取胜,对战过程中玩家需要不断调整阵容,购买不同的装备以应对不通的怪物
|
||||
#### 单机闯关模式
|
||||
> 在地图终点会有玩家的主城,主城拥有一定的血量,怪物从出生点往主城方向去,玩家在怪物行进路线上部署英雄消灭怪物,未被消灭到达主城的怪物会对主城进行攻击,当主城血量为0时闯关失败,不通的关卡难度不同,怪物伤害和数量不同.
|
||||
#### 单机无尽模式
|
||||
> 地图改为循环模式,没被及时消灭的怪物会在地图边缘游走,直到被消灭,当场上怪物达到一定数量时即为失败,根据完成达成波数和时间进行全服排名
|
||||
#### 双人联机闯关和无尽模式
|
||||
> 和无尽闯关模式类似,从单人改为双人,可以联机组队
|
||||
#### 四人联机闯关和无尽模式
|
||||
> 和无尽闯关模式类似,从单人改为四人,可以联机组队
|
||||
#### 魔物对战无尽模式
|
||||
> 魔物将会获得攻击力属性,英雄将获得防御血量属性,当魔物从出生点出生后经过一定线路后可以攻击到英雄,玩家需要在魔物攻击英雄前尽可能将魔物消灭,如果英雄血量降为0则为死亡并会消失,需要重新部署,当玩家的所有英雄消失时即为结束.根据玩家坚持的时长和怪物波数进行排名.
|
||||
#### 自走棋模式
|
||||
> 基于现有英雄和装备,设置自走棋玩法
|
||||
|
||||
# 二、游戏特别设定
|
||||
1. 在对局开始前玩家会免费获得一个随机的种族祝福,玩家可以使用宝石或魔晶重新抽取一次祝福,可以使用钻石获得指定种族的祝福,祝福的内容多为光环增幅或其他有益的特殊效果
|
||||
2. 玩家首次登录时需要选则一个种族,将解锁该种族的传说品质一下所有英雄,其他种族的英雄的解锁需要通过一定时长的对局或闯关结束后随机获得一个种族的英雄作为结算奖励,传说品质的英雄需通过特殊任务或达到一定要求后获得,也可以使用钻石提前解锁
|
||||
3. 特殊的装备系统:在对局中玩家获取装备后可以装备给不同的英雄来获取不一样的技能效果,例如:闪电手套,装备给射手英雄,攻击会附带闪电对敌人造成连锁伤害.装备给刺客会增加刺客的攻速并附带破魔效果.
|
||||
4. 排位系统和排名系统,通过1v1对战获得胜利后获得积分,当积分达到一定程度时会晋级到下一段位.给无尽模式添加排名系统,展示闯关排名前100的玩家并显示当前玩家的排名,提高玩家闯关挑战的积极性
|
||||
|
||||
|
||||
# 三、游戏世界观
|
||||
- 游戏英雄的设定主要源于西方神话故事,也会结合一些现代元素和模仿游戏IP角色(例如:模仿英雄联盟IP角色)来扩展应英雄的多样性,如宙斯、阿波罗、亚瑟王、梅林、路西法等。故事情节主要为异世界的强大魔物跨越空间来到神圣大陆,神圣大陆的英雄保卫家园不被破坏,消灭不断跨越空间到来魔物。玩家通过布置英雄来消灭魔物获得金币,在主城使用金币招募英雄进行战斗,招募到相同英雄是可以用于提升英雄的星级和属性,在对局中玩家可以通过给英雄合成装备,不同的装备和英雄搭配可以产生不同的技能和效果,改变以往装备提供效果一成不变,提高游戏的可玩性,同时激发玩家的想象力,创造出各式各样的英雄技能组合。
|
||||
- 美术风格为卡通风格的模型,尽可能接近真实模型来达到真实感,在对局和闯关的场景画面会明亮柔和一些,表明大陆刚被入侵还在一片祥和之中。在无尽模式下场景会采用黑暗的地狱岩浆场景,表明大陆已经破败不堪,有数之不尽的怪物来袭。
|
||||
|
||||
# 四、英雄品质
|
||||
1. 普通(灰色)100金币
|
||||
2. 中级(绿色)300金币
|
||||
3. 高级(蓝色)800金币
|
||||
4. 史诗(紫色)1600金币
|
||||
5. 传说(金色)2800金币
|
||||
|
||||
# 五、游戏货币
|
||||
- 钻石:充值获得
|
||||
- 宝石:特定任务获得(每周最多获取1000宝石)
|
||||
- 魔晶:日常任务获得(每日日常任务最多获取5000)
|
||||
###### 对局货币
|
||||
- 金币(在主城招募英雄使用)
|
||||
- 灵果(用于召唤特殊奖励的怪物)
|
||||
- 声望(用于提升主城等级,容纳更多英雄)
|
||||
- 矿石(用于对换英雄装备)
|
||||
> 对换比例:钻石1:宝石10:魔晶1000
|
||||
|
||||
# 六、角色定位
|
||||
1. 射手
|
||||
- 力量:中
|
||||
- 攻速:高
|
||||
- 法术:低
|
||||
- 能量:低
|
||||
- 范围:超大
|
||||
- 效果:可同时攻击单个或多个目标,物理伤害
|
||||
1. 法师
|
||||
- 力量:低
|
||||
- 攻速:低
|
||||
- 法术:高
|
||||
- 能量:高
|
||||
- 范围:大
|
||||
- 效果:范围魔法伤害
|
||||
2. 剑士
|
||||
- 力量:中
|
||||
- 攻速:中
|
||||
- 法术:低
|
||||
- 能量:中
|
||||
- 范围:中
|
||||
- 效果:单体或范围物理伤害
|
||||
3. 刺客
|
||||
- 力量:高
|
||||
- 攻速:中
|
||||
- 法术:低
|
||||
- 能量:中下
|
||||
- 范围:中
|
||||
- 效果:单体高物理或高魔法伤害
|
||||
4. 辅助
|
||||
- 力量:低
|
||||
- 攻速:中下
|
||||
- 法术:中
|
||||
- 能量:中
|
||||
- 范围:中
|
||||
- 效果:施加负面效果、加成光环效果
|
||||
|
||||
# 七、种族分类
|
||||
##### 1. 妖族
|
||||
1. 鹦鹉
|
||||
2. 齐天大圣-美猴王
|
||||
4. 驱神大圣-禺狨王
|
||||
5. 通风大圣-猕猴王
|
||||
6. 移山大圣-狮驼王
|
||||
7. 混天大圣-鹏魔王
|
||||
8. 覆海大圣-蛟魔王
|
||||
9. 平天大圣-牛魔王
|
||||
|
||||
##### 2.精灵
|
||||
1. 风精灵【灰色-射手】(多人,物理、高攻速)、
|
||||
2. 暗夜精灵【紫色-刺客】(单体,物理、高攻击)、
|
||||
3. 火精灵【蓝色-法师】(范围、魔法、点燃)、
|
||||
4. 水精灵【绿色-辅助】(范围、减速)
|
||||
5. 土精灵
|
||||
|
||||
##### 3.骑士
|
||||
1. 亚瑟王【金色】、
|
||||
2. 叛逆骑士-莫德雷德,
|
||||
3. 太阳骑士-高文【-法师】(魔法)、
|
||||
4. 裁决骑士-兰斯洛特【(单体物理、高伤)、
|
||||
5. 斗魂骑士-加雷思(召唤)、
|
||||
6. 光辉骑士-拉莫洛克(光环加成)、
|
||||
7. 雷霆骑士-贝德维尔(魔法)、
|
||||
8. 守护骑士-鲍斯(控制)
|
||||
9. 圣光骑士-珀西瓦尔
|
||||
10. 圣战骑士-加荷里斯
|
||||
|
||||
|
||||
##### 4.恶魔
|
||||
1. 堕落天使-路西法
|
||||
2. 地狱使者
|
||||
3. 恶魔之子
|
||||
4.
|
||||
5. 蚩尤
|
||||
|
||||
##### 5.神族
|
||||
1. 众神之主-宙斯
|
||||
2. 太阳神-阿波罗
|
||||
3. 海神-波塞冬
|
||||
4. 十二翼大天使
|
||||
5.
|
||||
|
||||
##### 6.人族
|
||||
1. 白袍法师-梅林
|
||||
2. 轩辕皇帝
|
||||
3. 女巫
|
||||
4. 赏金猎人
|
||||
5. 船长
|
||||
6. 大副
|
||||
7. 水手
|
||||
8. 后羿
|
||||
|
||||
# 八、羁绊
|
||||
## 1. 种族羁绊
|
||||
1. 人族-3人口-力量和魔法加20%
|
||||
1.1 人族-5人口
|
||||
## 2. 英雄羁绊
|
||||
1. 圆桌骑士
|
||||
1.
|
||||
2. 海盗船
|
||||
船长、水手、大副、赏金猎人、鹦鹉
|
||||
3. 七大圣(3人组、7人组)
|
||||
平天大圣、齐天大圣、覆海大圣、混天大圣、驱神大圣、通风大圣、移山大圣
|
||||
# 九、魔物定位
|
||||
1. 普通魔物
|
||||
2. 速度魔物
|
||||
3. 法师魔物
|
||||
4. 战士魔物
|
||||
5. 物抗魔物
|
||||
6. 魔抗魔物
|
||||
7. 双抗魔物
|
||||
8. 大血量魔物
|
||||
9. BOSS
|
||||
BIN
图片/057f7b06b15b7a2661348ae82ac1cea.png
Normal file
BIN
图片/057f7b06b15b7a2661348ae82ac1cea.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
BIN
图片/1e2b546cf0f0cc7bf0ab8deb3bc497d.png
Normal file
BIN
图片/1e2b546cf0f0cc7bf0ab8deb3bc497d.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
BIN
图片/7f43c7a66d1f9c7bf6da3fdd397e626 1.png
Normal file
BIN
图片/7f43c7a66d1f9c7bf6da3fdd397e626 1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
BIN
图片/7f43c7a66d1f9c7bf6da3fdd397e626.png
Normal file
BIN
图片/7f43c7a66d1f9c7bf6da3fdd397e626.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
BIN
图片/86fe399af1ae6cf79e58de1a0f65700.png
Normal file
BIN
图片/86fe399af1ae6cf79e58de1a0f65700.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
BIN
图片/a42981ce40d246383d3a057c7a596b8.png
Normal file
BIN
图片/a42981ce40d246383d3a057c7a596b8.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
52
开发文档/Flutter框架.md
Normal file
52
开发文档/Flutter框架.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 新版android-studio设置中文
|
||||
```
|
||||
# 下载对应版本号的中文插件
|
||||
https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable
|
||||
|
||||
# 将插件压缩包复制到android-studio安装目录的plugins目录
|
||||
# 打开android-studio,打开setting,plugins,选择install plugin from disk从本地磁盘安装插件
|
||||
```
|
||||
|
||||
# android sdk环境变量配置
|
||||
```dart
|
||||
//在系统变量中新建ANDROID_HOME变量,变量值为android-sdk所在目录
|
||||
//在path变量中添加tools工具目录%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools
|
||||
```
|
||||
# 包管理
|
||||
## cookie
|
||||
```sh
|
||||
dio-cookie-manage不能用于web项目
|
||||
```
|
||||
# 布局Widget
|
||||
## container
|
||||
> container可以自定义其子widget,例如添加padding,边框等
|
||||
|
||||
## center
|
||||
> 创建一个上下左右居中的容器
|
||||
|
||||
## child和children
|
||||
> child只能包含单个子项,例如:center,container
|
||||
> children可以包含多个子项,Row,column,ListView,Stack
|
||||
|
||||
## Row和Column
|
||||
> 使用 mainAxisAlignment 和 crossAxisAlignment 属性控制行或列如何对齐其子项
|
||||
|
||||
SingleChildScrollView和ListView在Flutter中都是用于处理滚动内容的组件,但它们之间存在一些关键的区别。以下是它们之间的主要区别:
|
||||
|
||||
1. **子元素数量**:
|
||||
- SingleChildScrollView:只能包含一个子元素。这个子元素可以是一个复杂的布局,比如一个Column、ListView或GridView,但整体来说,SingleChildScrollView的直接子元素是单一的。
|
||||
- ListView:可以包含多个子元素。它是一个滚动的可滚动组件,通常用于包含多个子元素的情况。ListView接受一个children参数,该参数是一个包含所有子元素的列表。
|
||||
2. **使用场景**:
|
||||
- SingleChildScrollView:通常用于包装一个内容较大的单一子元素,例如一个长文本或一个包含多个控件的复杂布局。当这个子元素的大小超过屏幕可见区域时,用户可以通过滚动来查看全部内容。
|
||||
- ListView:更适用于包含多个子元素,且子元素数量相对固定或有限的情况。由于ListView需要知道所有子元素的数量,因此它在性能上更高效,因为它只会在屏幕上显示的子元素上工作。
|
||||
3. **动态内容**:
|
||||
- SingleChildScrollView:由于只包含一个子元素,这个子元素可以是一个动态生成的内容。SingleChildScrollView在处理动态内容(例如异步加载的数据)时更加灵活。
|
||||
- ListView:虽然也可以处理动态内容,但由于其性能优化机制(只渲染可见的子元素),在处理大量动态内容时可能需要额外的考虑。
|
||||
4. **其他功能**:
|
||||
- ListView:支持分割器(divider),用于在列表项之间添加分隔符。此外,ListView还提供了更多的滚动控制选项,如滚动物理效果(ScrollPhysics)和滚动控制器(ScrollController)。
|
||||
- SingleChildScrollView:更加简单和直观,主要用于滚动查看超出屏幕可见区域的内容。它没有ListView提供的那些特定于列表的功能。
|
||||
|
||||
总结:
|
||||
|
||||
- 如果你有一个固定的、数量相对较少的子元素列表,ListView是一个更好的选择,因为它提供了针对列表的特定功能和性能优化。
|
||||
- 如果你有一个单一的、内容较大的子元素,或者需要处理动态内容,SingleChildScrollView可能更适合你的需求。它提供了一个简单而直观的方式来滚动查看超出屏幕可见区域的内容
|
||||
62
开发文档/javascript/html+css+js教程.md
Normal file
62
开发文档/javascript/html+css+js教程.md
Normal file
@@ -0,0 +1,62 @@
|
||||
text-decoration:none 去下划线
|
||||
cursor:pointer 鼠标变手型
|
||||
target="_blank" 在新页面打开连接
|
||||
rel="nofollow" 禁止爬虫爬该链接
|
||||
float 元素偏移
|
||||
rgba(0,0,0,0-1) 设置透明色
|
||||
# html用法
|
||||
|
||||
### 表单上传多文件
|
||||
```html
|
||||
<form action="url" method="POST" enctype="multipart/form-data">
|
||||
<input type="file" name="imagevideo" accept="image/jpeg,image/png,image/jpg,video/mp4,video/mpeg" multiple="multiple" disabled="disabled">
|
||||
<input type="radio" value="5" name="evaluate3" required>
|
||||
<input typed="text" placeholder="这里是提示的文字">
|
||||
<input type="text" value="默认显示值" readonly>
|
||||
</form>
|
||||
“input禁止复制粘贴 禁止复制: οncοpy="return false" 禁止粘贴: οnpaste="return false" 禁止剪切: oncut="return false" 禁止右键弹出: οncοntextmenu="return false" 关闭自动完成功能(缓存): autocomplete="off" 自动获得焦点: autofocus="autofocus" 禁用自动更正: autocorrect="off" 来关闭键盘默认首字母大写...
|
||||
```
|
||||
> + type指定类型
|
||||
> + 上传多文件必须的属性
|
||||
method="post" 请求方式
|
||||
enctype="multipart/form-data" 表单上传多文件
|
||||
multiple="multiple" 多选文件
|
||||
> + accept指定上传文件类型
|
||||
> + disabled指定元素不可选
|
||||
> + required指定字段不能为空
|
||||
> + placeholder在文本框显示提示语
|
||||
> + value在文本框显示默认值
|
||||
> + readonly文本框只读
|
||||
> + οncοpy="return false"禁止复制
|
||||
> + οnpaste="return false"禁止粘贴
|
||||
> + oncut="return false"禁止剪切
|
||||
> + onselectstart="return false"禁止被选中
|
||||
> + οncοntextmenu="return false"禁止右键弹出
|
||||
> + autocomplete="off"关闭自动完成功能(缓存)
|
||||
> + autofocus="autofocus"自动获得焦点
|
||||
> + autocorrect="off"禁用自动更正
|
||||
> + autocapitalize="off"移动端关闭键盘首字母大写
|
||||
> + spellcheck="false"不对元素的文本进行拼写检查
|
||||
|
||||
##### accept支持上传文件类型
|
||||
# JavaScript
|
||||
### 类型转换
|
||||
+ 将JavaScript任意类型转换为string类型
|
||||
> 可以用 data.toString()或String(data)方式
|
||||
|
||||
### 计算文件hash
|
||||
```javascript
|
||||
const md5 = CryptoJS.algo.MD5.create()
|
||||
// 以二进制的方式读取文件,每次读取一定字节块
|
||||
md5.update(a)
|
||||
|
||||
md5.finalize().toString(CryptoJS.enc.MD5)
|
||||
|
||||
```
|
||||
|
||||
### 生成随机数
|
||||
```JavaScript
|
||||
Math.random() //返回0-1之间的小数
|
||||
Math.round(num) //将num四舍五入
|
||||
Math.floor(Math.random()*10) //生成0-10之间的随机数
|
||||
```
|
||||
125
开发文档/javascript/javascript工具集.md
Normal file
125
开发文档/javascript/javascript工具集.md
Normal file
@@ -0,0 +1,125 @@
|
||||
|
||||
### 计算文件md5
|
||||
|
||||
```javascript
|
||||
const md5 = CryptoJS.algo.MD5.create()
|
||||
// 以二进制的方式读取文件,每次读取一定字节块
|
||||
md5.update(a)
|
||||
md5.finalize().toString(CryptoJS.enc.MD5)
|
||||
```
|
||||
# 原生js发起http请求
|
||||
```js
|
||||
//客服端发起请求,接受服务器返回的json数据
|
||||
fetch('http://example.com/request')
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
console.log(data); // 这里处理返回的JSON数组
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('There has been a problem with your fetch operation:', error);
|
||||
});
|
||||
```
|
||||
# 重新加载网页
|
||||
```js
|
||||
//重新加载名为example_frame的框架页面
|
||||
window.frames['example_frame'].location.reload(true);
|
||||
//重新加载当前页面
|
||||
location.reload();
|
||||
//重新加载页面的客户端部分(不包括服务器端脚本)
|
||||
location.assign(location.href);|
|
||||
```
|
||||
# 修改元素的属性
|
||||
```js
|
||||
//修改id_name的边框为2px
|
||||
document.getElementById('id_name').style.border='2px'
|
||||
```
|
||||
# 修改网页内容
|
||||
```js
|
||||
//innerHTML可以添加html元素
|
||||
document.getElementById('id_name').innerHTML=''
|
||||
//textContent只能添加纯文本
|
||||
document.getElementById('id_name').textContent
|
||||
```
|
||||
# 生成随机数
|
||||
```js
|
||||
//生成10以内的随机数
|
||||
Math.floor(Math.random() * 10) + 1
|
||||
//Math.random()生成一个随机浮点数
|
||||
//Mate.floor()将浮点数向下取整,变成一个整数
|
||||
```
|
||||
# 分钟倒计时
|
||||
|
||||
```html
|
||||
<h3 id="countdown">02:00</h3>
|
||||
<button type="button" class="btn btn-primary" id="startCountdown">开始计时</button>
|
||||
```
|
||||
```js
|
||||
// 抽奖二维码倒计时功能
|
||||
let countdownElement = document.getElementById('countdown');
|
||||
let minutes = '02'; // 将分钟初始化为字符串形式
|
||||
let seconds = '00'; // 将秒初始化为字符串形式
|
||||
let intervalIds;
|
||||
let timer;
|
||||
let isPause = false;
|
||||
const toggleButton = document.getElementById('startCountdown')
|
||||
//开始计时
|
||||
function startCountdown() {
|
||||
intervalIds = setInterval(updateCountdown, 1000);
|
||||
}
|
||||
//更新计时器
|
||||
function updateCountdown() {
|
||||
if (minutes === '00' && seconds === '00') {
|
||||
clearInterval(intervalIds); // 停止计时器
|
||||
countdownElement.textContent = '00:00';
|
||||
return;
|
||||
}
|
||||
seconds = parseInt(seconds) - 1; // 将秒转换为整数进行减法运算
|
||||
if (seconds < 0) {
|
||||
minutes = parseInt(minutes) - 1; // 将分钟转换为整数进行减法运算
|
||||
seconds = 59;
|
||||
}
|
||||
// 只对个位数分钟进行补零操作,并且只在倒计时进行到个位数分钟时才补零
|
||||
if (minutes < 10 && minutes > -1 && seconds === '00') {
|
||||
minutes = "0" + minutes;
|
||||
} else {
|
||||
minutes = minutes.toString().padStart(2, '0'); // 其他情况下保证分钟为两位数
|
||||
}
|
||||
if (seconds < 10) {
|
||||
seconds = "0" + seconds; // 秒小于10时在前面补零
|
||||
}
|
||||
countdownElement.textContent = `${minutes}:${seconds}`;
|
||||
}
|
||||
|
||||
// document.getElementById('startCountdown').addEventListener('click', startCountdown);
|
||||
toggleButton.addEventListener('click', () => {
|
||||
if (isPause) {
|
||||
isPause = false;
|
||||
clearInterval(intervalIds);
|
||||
toggleButton.textContent = '继续计时'; // 修改按钮文本为"Pause"
|
||||
} else {
|
||||
isPause = true;
|
||||
toggleButton.textContent = '结束计时'; // 修改按钮文本为"Resume"
|
||||
startCountdown()
|
||||
}
|
||||
});
|
||||
```
|
||||
# 显示或隐藏元素
|
||||
```html
|
||||
<div id="qrImage" style="display: none;">
|
||||
<image src="https://example.com/example.png"></image>
|
||||
</div>
|
||||
```
|
||||
```js
|
||||
var divElement = document.getElementById("qrImage");
|
||||
if (divElement.style.display === "none") {
|
||||
divElement.style.display = "block"; // 显示div元素
|
||||
} else {
|
||||
divElement.style.display = "none"; // 隐藏div元素
|
||||
}
|
||||
```
|
||||
47
开发文档/javascript/nodejs.md
Normal file
47
开发文档/javascript/nodejs.md
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
# nvm版本管理器常用命令
|
||||
|
||||
```shell
|
||||
nvm arch #显示node是以32位还是64位运行
|
||||
nvm check #检查nvm4w进程是否存在问题
|
||||
nvm current #显示活动版本
|
||||
nvm install <version> [arch] # 安装指定版本的node,也可以指定32位或64位
|
||||
nvm list [available] # 列出node安装的版本,末尾加available可以显示可安装的版本
|
||||
nvm on #启用node版本管理
|
||||
nvm off #禁用node版本管理
|
||||
nvm proxy [url] # 设置下载代理,留空查看当前代理,设置none删除代理
|
||||
nvm uninstall <version> #删除特定版本
|
||||
nvm use <version> [arch] # 切换到指定版本
|
||||
nvm root <path> # 设置nvm存放不通版本node的目录
|
||||
nvm version # 显示当前运行的nvm的版本
|
||||
nvm node_mirror <node_mirror_url> # 设置节点镜像https://npmmirror.com/mirrors/node/
|
||||
nvm npm_mirror <npm_mirror_url> # 设置npm镜像,https://npmmirror.com/mirrors/npm/
|
||||
```
|
||||
# npm安装模块
|
||||
```js
|
||||
npm install -g --save-dev --verbose crypto
|
||||
//-g参数:全局安装
|
||||
//--save-dev:保存到当前项目模块目录
|
||||
//--verbose:安装时显示进度条
|
||||
```
|
||||
# npm安装加速
|
||||
```shell
|
||||
# 设置华为镜像加速
|
||||
npm config set registry https://repo.huaweicloud.com/repository/npm/
|
||||
npm cache clean -f
|
||||
# 设置nodejs工具的镜像地址
|
||||
npm config set disturl https://repo.huaweicloud.com/nodejs
|
||||
# 设置Node-Sass的镜像地址
|
||||
npm config set sass_binary_site https://repo.huaweicloud.com/node-sass
|
||||
# 设置浏览器引擎驱动镜像地址,
|
||||
npm config set phantomjs_cdnurl https://repo.huaweicloud.com/phantomjs
|
||||
npm config set chromedriver_cdnurl https://repo.huaweicloud.com/chromedriver
|
||||
npm config set operadriver_cdnurl https://repo.huaweicloud.com/operadriver
|
||||
# 设置Electron和Python的镜像地址
|
||||
npm config set electron_mirror https://repo.huaweicloud.com/electron/
|
||||
npm config set python_mirror https://repo.huaweicloud.com/python
|
||||
```
|
||||
# yarn安装加速
|
||||
```shell
|
||||
yarn config set registry https://repo.huaweicloud.com/repository/npm/
|
||||
```
|
||||
68
开发文档/python/Anaconda用法.md
Normal file
68
开发文档/python/Anaconda用法.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: 'Anaconda用法'
|
||||
date: '2022/03/28 20:00'
|
||||
tags: [python, 虚拟化, anaconda, 文档教程]
|
||||
categories:
|
||||
- 软件用法
|
||||
---
|
||||
|
||||
# Anaconda用法
|
||||
- Anaconda下载地址:https://www.anaconda.com/download/
|
||||
- Miniconda下载地址:https://docs.conda.io/en/latest/miniconda.html
|
||||
- 清华大学的conda源:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
|
||||
- 配置清华大学conda源
|
||||
```ini
|
||||
channels:
|
||||
- defaults
|
||||
show_channel_urls: true
|
||||
default_channels:
|
||||
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
|
||||
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
|
||||
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
|
||||
custom_channels:
|
||||
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
||||
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
||||
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
||||
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
||||
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
||||
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
||||
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
||||
```
|
||||
|
||||
## linux下载链接
|
||||
```sh
|
||||
wget https://repo.anaconda.com/miniconda/Miniconda3-py311_24.1.2-0-Linux-x86_64.sh
|
||||
sudo bash Miniconda3-py311_24.1.2-0-Linux-x86_64.sh
|
||||
```
|
||||
### conda命令用法
|
||||
- 删除虚拟环境
|
||||
`conda env remove --name myenv`
|
||||
- 删除指定路径的虚拟环境
|
||||
`conda env remove -p /完整/路径/到/环境`
|
||||
- 查看虚拟环境
|
||||
`conda env list或conda info --envs`
|
||||
- windows下在用户目录下创建conda配置文件,文件名.condarc,linux下会自动创建无需手动创建
|
||||
`conda config --set show_channel_urls yes`
|
||||
- 清除索引缓存
|
||||
`conda clean -i`
|
||||
> 更改conda源后使用
|
||||
- 创建一个名为envname的虚拟环境,并安装python=3.6
|
||||
`conda create --name envname python=3.6`
|
||||
> 默认在用户目录下创建
|
||||
- 指定目录创建环境,在d盘virtual目录下创建名为tensorflow的虚拟环境
|
||||
`conda create --prefix=d:\virtual\tensorflow`
|
||||
> 使用prefix时,不能指定虚拟环境名称,给定的路径最后一个目录即为虚拟环境名称
|
||||
- 取消自动激活conda环境
|
||||
`conda config --set auto_activate_base false`
|
||||
- 在conda环境中安装包,虚拟环境名称可以不用指定
|
||||
`conda install --name envname package1 package2`
|
||||
- 在conda环境中卸载包,remove和uninstall效果一样
|
||||
`conda remove --name envname package1 package2`
|
||||
- 查询conda包,可以不输入完整的包名
|
||||
`conda search packagename`
|
||||
- 查询指定conda包的可用版本
|
||||
`conda search packagename==`
|
||||
- 列出conda包
|
||||
`conda list`
|
||||
- 更新conda包
|
||||
`conda update --name envname package1 package2`
|
||||
58
开发文档/python/mojo教程.md
Normal file
58
开发文档/python/mojo教程.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# 安装Mojo
|
||||
打开终端并安装modular命令行工具:
|
||||
```sh
|
||||
curl -s https://get.modular.com | sh -
|
||||
```
|
||||
|
||||
然后使用以下命令登录到您的Modular帐户:
|
||||
```sh
|
||||
modular auth
|
||||
```
|
||||
|
||||
现在您可以安装Mojo SDK:
|
||||
```sh
|
||||
modular install mojo
|
||||
```
|
||||
|
||||
设置环境变量以便访问mojo命令行界面:如果您使用的是Bash,请运行以下命令:
|
||||
```sh
|
||||
MOJO_PATH=$(modular config mojo.path) \
|
||||
&& BASHRC=$( [ -f "$HOME/.bash_profile" ] && echo "$HOME/.bash_profile" || echo "$HOME/.bashrc" ) \
|
||||
&& echo 'export MODULAR_HOME="'$HOME'/.modular"' >> "$BASHRC" \
|
||||
&& echo 'export PATH="'$MOJO_PATH'/bin:$PATH"' >> "$BASHRC" \
|
||||
&& source "$BASHRC"
|
||||
```
|
||||
安装 MAX SDK:
|
||||
```
|
||||
modular install max
|
||||
```
|
||||
|
||||
安装 [MAX 引擎 Python](https://docs.modular.com/engine/reference/python/engine) 包:
|
||||
```
|
||||
MAX_PATH=$(modular config max.path) \ && python3 -m pip install --find-links $MAX_PATH/wheels max-engine
|
||||
```
|
||||
|
||||
设置环境变量,以便您可以访问 [`max`](https://docs.modular.com/engine/reference/cli/) 和 [`mojo`](https://docs.modular.com/mojo/cli/) CLI:
|
||||
```
|
||||
MAX_PATH=$(modular config max.path) \
|
||||
&& BASHRC=$( [ -f "$HOME/.bash_profile" ] && echo "$HOME/.bash_profile" || echo "$HOME/.bashrc" ) \
|
||||
&& echo 'export MODULAR_HOME="'$HOME'/.modular"' >> "$BASHRC" \
|
||||
&& echo 'export PATH="'$MAX_PATH'/bin:$PATH"' >> "$BASHRC" \
|
||||
&& source "$BASHRC"
|
||||
```
|
||||
|
||||
要检查您当前的Mojo版本,请使用`--version`选项:
|
||||
```sh
|
||||
mojo --version
|
||||
```
|
||||
|
||||
要升级到最新的Mojo版本,请使用`modular update`命令:
|
||||
```sh
|
||||
modular update mojo
|
||||
```
|
||||
### 更新Modular CLI[](https://mojocn.org/mojo/manual/getstarted/getmojo.html#%E6%9B%B4%E6%96%B0modular-cli)
|
||||
运行以下命令在您的系统上更新CLI。
|
||||
```sh
|
||||
sudo apt update
|
||||
sudo apt install modular
|
||||
```
|
||||
120
开发文档/python/pycryptodome.md
Normal file
120
开发文档/python/pycryptodome.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# pycryptodome模块
|
||||
|
||||
1. 安装
|
||||
```shell
|
||||
pip3 install pycryptodome
|
||||
```
|
||||
|
||||
2. 对称加密
|
||||
+ 流密码Salsa20
|
||||
> 最自然的密码:它们一次加密一个字节的数据
|
||||
+ 块密码AES
|
||||
> 只能对固定数量的数据进行操作的密码。最重要的块密码是AES,其块大小为128位(16字节)。通常,块密码通常仅与操作模式一起使用,该操作模式允许加密可变数量的数据。某些模式(如 CTR)可以有效地将块密码转换为流密码。
|
||||
3. 操作模式
|
||||
+ CBC
|
||||
> 创建一个新的 CBC 对象,使用<算法>作为基本块密码。
|
||||
参数:
|
||||
密钥(数据类型:字节) – 加密密钥
|
||||
模式 – 常量Crypto.Cipher.<algorithm>.MODE_CBC
|
||||
iv(数据类型:字节) – 初始化向量。对手无法预知的一段数据。它与块大小一样长(例如,AES为16字节)。如果不存在,则库将创建一个随机 IV 值。
|
||||
4. 流密码Salsa20用法示例
|
||||
```python
|
||||
# 加密方法
|
||||
from Crypto.Cipher import Salsa20
|
||||
plaintext = b'Attack at dawn'
|
||||
secret = b'*Thirty-two byte (256 bits) key*'
|
||||
cipher = Salsa20.new(key=secret)
|
||||
msg = cipher.nonce + cipher.encrypt(plaintext)
|
||||
|
||||
# 解密方法
|
||||
from Crypto.Cipher import Salsa20
|
||||
secret = b'*Thirty-two byte (256 bits) key*'
|
||||
msg_nonce = msg[:8]
|
||||
ciphertext = msg[8:]
|
||||
cipher = Salsa20.new(key=secret, nonce=msg_nonce)
|
||||
plaintext = cipher.decrypt(ciphertext)
|
||||
```
|
||||
|
||||
5. 块密码AES的CBC模式用法示例
|
||||
```python
|
||||
# 加密方法
|
||||
import json
|
||||
from base64 import b64encode
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import pad
|
||||
from Crypto.Random import get_random_bytes
|
||||
data = b"secret"
|
||||
key = get_random_bytes(16)
|
||||
cipher = AES.new(key, AES.MODE_CBC)
|
||||
ct_bytes = cipher.encrypt(pad(data, AES.block_size))
|
||||
iv = b64encode(cipher.iv).decode('utf-8')
|
||||
ct = b64encode(ct_bytes).decode('utf-8')
|
||||
result = json.dumps({'iv':iv, 'ciphertext':ct})
|
||||
print(result)
|
||||
'{"iv": "bWRHdzkzVDFJbWNBY0EwSmQ1UXFuQT09", "ciphertext": "VDdxQVo3TFFCbXIzcGpYa1lJbFFZQT09"}'
|
||||
|
||||
# 解密方法
|
||||
import json
|
||||
from base64 import b64decode
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import unpad
|
||||
# We assume that the key was securely shared beforehand
|
||||
try:
|
||||
b64 = json.loads(json_input)
|
||||
iv = b64decode(b64['iv'])
|
||||
ct = b64decode(b64['ciphertext'])
|
||||
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||
pt = unpad(cipher.decrypt(ct), AES.block_size)
|
||||
print("The message was: ", pt)
|
||||
except (ValueError, KeyError):
|
||||
print("Incorrect decryption")
|
||||
|
||||
|
||||
## 用于数据字节不够时自动填充数据
|
||||
```python
|
||||
# 导入模块
|
||||
from Crypto.Util.Padding import pad,unpad
|
||||
# 自动填充
|
||||
AES.new(key, AES.MODE_CBC).encrypt(pad(data, AES.block_size))
|
||||
# 去除填充
|
||||
AES.new(key, AES.MODE_CBC).encrypt(pad(data, AES.block_size))
|
||||
```
|
||||
## 加密数据填充示例
|
||||
```python
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import pad, unpad
|
||||
from Crypto.Random import get_random_bytes
|
||||
# 假设key是一个16字节的密钥
|
||||
key = get_random_bytes(16) cipher = AES.new(key, AES.MODE_CBC)
|
||||
# 需要加密的数据
|
||||
data = b"This is some data to encrypt"
|
||||
# 使用PKCS7进行填充
|
||||
padded_data = pad(data, AES.block_size)
|
||||
# 加密填充后的数据
|
||||
encrypted_data = cipher.encrypt(padded_data)
|
||||
# 你现在可以存储或发送 encrypted_data 和 cipher.iv (初始化向量) # ... # 解密时,你需要使用相同的初始化向量和密钥
|
||||
decipher = AES.new(key, AES.MODE_CBC, iv=cipher.iv)
|
||||
decrypted_padded_data = decipher.decrypt(encrypted_data)
|
||||
# 移除填充
|
||||
decrypted_data = unpad(decrypted_padded_data, AES.block_size)
|
||||
# decrypted_data 现在应该与原始数据相同
|
||||
print(decrypted_data)
|
||||
```
|
||||
## 生成随机秘钥
|
||||
```python
|
||||
# 导入模块
|
||||
from Crypto.Random import get_random_bytes
|
||||
# 用法
|
||||
get_random_bytes(16)
|
||||
|
||||
```
|
||||
## 数据转换内置库
|
||||
```python
|
||||
# 二进制数据与十六进制数据互相转换的库
|
||||
from binascii import a2b_hex,b2a_hex
|
||||
# 将字符串转换为二进制
|
||||
a2b_hex('abcdef1234')
|
||||
|
||||
# 将二进制数据转换为base64编码的二进制数据
|
||||
from base64 import b64encode,b64decode
|
||||
```
|
||||
36
开发文档/python/python库用途.md
Normal file
36
开发文档/python/python库用途.md
Normal file
@@ -0,0 +1,36 @@
|
||||
## 自动化相关
|
||||
### PySimpleGUI
|
||||
```
|
||||
用途:提供一些弹窗等界面
|
||||
安装pip install pysimplegui
|
||||
导入import PySimpleGUI
|
||||
```
|
||||
|
||||
## 日志
|
||||
### loguru
|
||||
```
|
||||
安装pip install loguru
|
||||
导入from loguru import logger
|
||||
```
|
||||
|
||||
## 数据处理
|
||||
### pyechart
|
||||
```
|
||||
可以做echart图片.得到一个html图表文件
|
||||
```
|
||||
### pybi-next
|
||||
```
|
||||
安装pip install pybi-next
|
||||
导入import pybi
|
||||
```
|
||||
|
||||
## 工具
|
||||
### codon
|
||||
```
|
||||
将python代码转为本地机器码,提高运行速度
|
||||
**https://github.com/exaloop/codon**
|
||||
```
|
||||
### httpx
|
||||
```
|
||||
网络请求库
|
||||
```
|
||||
1488
开发文档/python/python教程.md
Normal file
1488
开发文档/python/python教程.md
Normal file
File diff suppressed because it is too large
Load Diff
82
开发文档/python/selenium浏览器自动化.md
Normal file
82
开发文档/python/selenium浏览器自动化.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# 使用示例
|
||||
```python
|
||||
import requests
|
||||
import time
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.chrome.options import Options # 浏览器参数
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
chrome_option=Options()
|
||||
# 设置浏览器参数
|
||||
# chrome_option.add_argument('--headless') # 不显示图形界面,俗称无头模式
|
||||
chrome_option.add_argument("--disable-gpu") # windows系统使用
|
||||
# chrome_option.add_argument("--remote-debugging-port=9000")
|
||||
driver=webdriver.Chrome(options=chrome_option)
|
||||
# 设置网页超时时间
|
||||
driver.set_page_load_timeout(60)
|
||||
|
||||
host="https://ag.dji.com/cn/t60/specs"
|
||||
# 打开指定的网页
|
||||
driver.get(host)
|
||||
|
||||
# 等待指定元素加载完成
|
||||
WebDriverWait(driver, 10).until(
|
||||
EC.visibility_of_element_located((By.ID, "player_if"))
|
||||
|
||||
)
|
||||
|
||||
# 使用 Fluent Waits 等待元素变得可见
|
||||
element = FluentWait(driver, timeout=10, poll_frequency=1).until(
|
||||
EC.visibility_of_element_located((By.ID, "myElement"))
|
||||
)
|
||||
|
||||
# 使用js等待页面加载完成
|
||||
wait_for_page_load = lambda: driver.execute_script("return document.readyState") == "complete"
|
||||
driver.implicitly_wait(10) # 设置隐式等待时间
|
||||
while not wait_for_page_load():
|
||||
pass
|
||||
|
||||
# 使用路径查找指定的div元素的第一个内容
|
||||
parameter=driver.find_element(By.XPATH,"/html/body/div[1]/div/div/div[2]/div[2]/section/div/div/div[2]/div/div/div[2]/div/div")
|
||||
# 输出该元素包含的所有文本内容
|
||||
print(parameter.text)
|
||||
# 获取该元素的子属性
|
||||
print(parameter.get_attribute("id"))
|
||||
|
||||
# 使用路径查找指定的div元素的所有内容,需遍历结果
|
||||
parameters=driver.find_elements(By.XPATH,"/html/body/div[1]/div/div/div[2]/div[2]/section/div/div/div[2]/div/div/div[2]/div/div")
|
||||
for i in parameters:
|
||||
tit=i.find_elements(By.TAG_NAME, "h4")
|
||||
# 多重遍历
|
||||
for j in tit:
|
||||
print(j.text)
|
||||
# print(i.text)
|
||||
|
||||
# 以下是查找元素的其他方法,find_element是单数,find_elements是复数,结果是列表
|
||||
# 使用标签名称查找
|
||||
element = driver.find_element(By.TAG_NAME, "h3")
|
||||
# 使用id名查找
|
||||
element = driver.find_element(By.ID, "element_id")
|
||||
# 使用name名查找
|
||||
element = driver.find_element(By.NAME, "element_name")
|
||||
# 使用xpath路径查找
|
||||
element = driver.find_element(By.XPATH, "xpath_expression")
|
||||
# 使用链接文本查找
|
||||
element = driver.find_element(By.LINK_TEXT, "link text")
|
||||
# 查找包含特定文本的链接
|
||||
element = driver.find_element(By.PARTIAL_LINK_TEXT, "partial link text")
|
||||
# 使用class类名查找
|
||||
element = driver.find_element(By.CLASS_NAME, "class_name")
|
||||
# 使用css选择器查找元素
|
||||
element = driver.find_element(By.CSS_SELECTOR, "css_selector")
|
||||
|
||||
|
||||
# 刷新网页
|
||||
driver.refush()
|
||||
|
||||
# 关闭网页,如果只有一个页面,执行后等同于driver.quit()
|
||||
driver.close()
|
||||
|
||||
# 关闭浏览器
|
||||
driver.quit()
|
||||
```
|
||||
123
开发文档/python/代码片段.md
Normal file
123
开发文档/python/代码片段.md
Normal file
@@ -0,0 +1,123 @@
|
||||
|
||||
# postgresql数据库连接
|
||||
```python
|
||||
import psycopg2 as pg
|
||||
def db_conn(sql,query=None):
|
||||
try:
|
||||
conn = pg.connect(database='video_data',user='videos',password='Vi2023**',host='124.71.39.185',port='9900')
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(sql)
|
||||
conn.commit()
|
||||
# res = cursor.fetchall()
|
||||
if sql[:6]=="SELECT" and query == 0:
|
||||
# 返回所有查询结果
|
||||
return cursor.fetchall()
|
||||
if sql[:6] == "SELECT" and query == 1:
|
||||
# 返回1条查询结果
|
||||
return cursor.fetchone()
|
||||
else:
|
||||
return True
|
||||
except pg.DatabaseError as e:
|
||||
# conn.rollback()
|
||||
print(f'DB_ERROR: {e}')
|
||||
return False
|
||||
finally:
|
||||
if conn:
|
||||
conn.close()
|
||||
sql='select * from table_name;'
|
||||
db_conn(sql)
|
||||
```
|
||||
# 随机字符串生成
|
||||
```python
|
||||
# 秘钥生成器
|
||||
import random
|
||||
str1 = '0123456789'
|
||||
str2 = 'abcdefghijklmnopqrstuvwxyz'
|
||||
str3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
str4 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
def auto_key(number):
|
||||
'''number:生成的字符串位数'''
|
||||
# 设置随机数种子
|
||||
random.seed(random.randint(1,1000))
|
||||
str=''
|
||||
for i in range(number):
|
||||
str+=random.choice(str4)
|
||||
print(str)
|
||||
return str
|
||||
auto_key(24)
|
||||
|
||||
```
|
||||
# 列出主机的音频设备信息
|
||||
```python
|
||||
import pyaudio
|
||||
|
||||
p = pyaudio.PyAudio()
|
||||
for i in range(p.get_device_count()):
|
||||
d_info=p.get_device_info_by_index(i)
|
||||
print(d_info)
|
||||
```
|
||||
# 音频录制
|
||||
```python
|
||||
import pyaudio
|
||||
import os
|
||||
from pydub import AudioSegment
|
||||
|
||||
buffer = 1024
|
||||
bits = pyaudio.paInt16
|
||||
channel = 2
|
||||
hz = 48000
|
||||
sour_path = "D:\\3-option\\music\\"
|
||||
record_second = 10
|
||||
|
||||
# 实例化PyAudio对象
|
||||
p = pyaudio.PyAudio()
|
||||
# 使用立体声混音(录制扬声器的声音)
|
||||
# stream = p.open(rate=hz,channels=channel,format=bits,input=True,frames_per_buffer=buffer,input_device_index=11)
|
||||
# 选择录音设备,这里我们选择麦克风
|
||||
stream = p.open(format=bits,
|
||||
channels=channel,
|
||||
rate=hz,
|
||||
input=True,
|
||||
frames_per_buffer=buffer,
|
||||
input_device_index=1)
|
||||
|
||||
# 从麦克风直接录制FLAC格式音频
|
||||
audio = AudioSegment.empty()
|
||||
|
||||
def record_audio():
|
||||
for i in range(0, int(hz * record_second / buffer)):
|
||||
data = stream.read(buffer)
|
||||
audio += AudioSegment(data, sample_width=p.get_sample_size(bits), frame_rate=hz, channels=channel)
|
||||
return audio
|
||||
|
||||
audio = record_audio()
|
||||
audio.export("f:\\music\\test.flac", format="flac")
|
||||
|
||||
# 关闭流和PyAudio对象
|
||||
stream.stop_stream()
|
||||
stream.close()
|
||||
p.terminate()
|
||||
|
||||
```
|
||||
# 音频格式转换
|
||||
```python
|
||||
import os
|
||||
from pydub import AudioSegment
|
||||
def convert(file_name,file_format):
|
||||
AudioSegment.from_file(audio_file_path)
|
||||
audio.export(path2+i.replace(file_name.spilt('.')[1], file_format), format=file_format)
|
||||
def batch_convert(**kwargs):
|
||||
'''source_path: 源文件路径,destination_path: 目标文件路径, file_format: 要转换的文件格式'''
|
||||
source_path = kwargs['source_path']
|
||||
destination_path = kwargs['destination_path']
|
||||
file_format = kwargs['file_format']
|
||||
for i in os.listdir(source_path):
|
||||
try:
|
||||
convert(file_name=i,file_format=file_format)
|
||||
except:
|
||||
print(i,'转换失败!')
|
||||
source_path = "D:\\10-百果园-工作资料\\01-常用音乐\\"
|
||||
destination_path="D:\\10-百果园-工作资料\\new\\"
|
||||
file_format = 'flac'
|
||||
batch_convert(source_path=source_path,destination_path=destination_path,file_format=file_format)
|
||||
```
|
||||
102
开发文档/python/后端/Flask用法简单示例.md
Normal file
102
开发文档/python/后端/Flask用法简单示例.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# 示例app.py文件
|
||||
```shell
|
||||
# 需要安装的库
|
||||
pip install flask flask_cors ulid flask_sslify
|
||||
```
|
||||
```python
|
||||
# 项目根目录文件包含:templates,static
|
||||
# templates文件包含模板页.static包含静态文件,如:js,css文件,图片视频等.
|
||||
# 文件名app.py
|
||||
# 文件路径:/app.py
|
||||
# 运行环境python3.7以上版本
|
||||
|
||||
from flask import Flask, render_template, request, url_for, make_response
|
||||
from flask_cors import *
|
||||
from OpenSSL import SSL
|
||||
from flask_sslify import SSLify
|
||||
import json
|
||||
|
||||
# 创建flask应用
|
||||
app = Flask(__name__)
|
||||
# 解决跨域问题
|
||||
CORS(app, supports_credentials=True)
|
||||
# 使用https
|
||||
sslify=SSLify(app)
|
||||
# 测试数据
|
||||
data={
|
||||
'appid':'123456',
|
||||
'secret':'123456',
|
||||
'js_code':'123456',
|
||||
'grant_type':'authorization_code'
|
||||
}
|
||||
# 不指定请求方式,返回json数据或字符串
|
||||
@app.route('/page1')
|
||||
def get_cj_name():
|
||||
return json.dumps(data)
|
||||
|
||||
# 指定请求方式,可指定多个以列表字符串形式
|
||||
@app.route('/page2',methods=['POST','OPTIONS'])
|
||||
def registrationInfo():
|
||||
# 返回模板html和数据
|
||||
return render_template('page2.html',data=data)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 使用https协议
|
||||
#app.run(host='127.0.0.1',port=443,ssl_context=(example.pem,example.key),debug=False)
|
||||
# 使用http协议
|
||||
app.run(host='127.0.0.1', port=5000, debug=True)
|
||||
```
|
||||
# 示例template页
|
||||
```html
|
||||
<!--
|
||||
文件名:template.html
|
||||
文件路径:/templates/template.html
|
||||
用途:用于页面使用同样的header或footer
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
|
||||
<title>{% block title%}example标题{% endblock %} </title>
|
||||
<!-- 新 Bootstrap5 核心 CSS 文件 -->
|
||||
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css">
|
||||
<!-- 页面中引用static文件的方法,使用url_for('static',filename='文件在static的路径')-->
|
||||
<link rel="stylesheet" href="{{ url_for('static',filename='style.css') }}">
|
||||
<!-- popper.min.js 用于弹窗、提示、下拉菜单 -->
|
||||
<script src="https://cdn.staticfile.org/popper.js/2.9.3/umd/popper.min.js"></script>
|
||||
<!-- 最新的 Bootstrap5 核心 JavaScript 文件 -->
|
||||
<script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.min.js"></script>
|
||||
|
||||
{% block head %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body scroll="no">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
||||
{% block footer %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
# 示例内容页
|
||||
```html
|
||||
<!-- 导入模板页 -->
|
||||
{% extends 'template.html' %}
|
||||
|
||||
<!-- content和footer等名字可以自定义,需要和模板页的名字对应即可 -->
|
||||
{% block content %}
|
||||
这里的内容会添加到模板页content处
|
||||
{% endblock %}
|
||||
|
||||
{% block footer %}
|
||||
这里的内容会添加到模板页footer处
|
||||
{% endblock %}
|
||||
|
||||
```
|
||||
# 模板数据
|
||||
```html
|
||||
|
||||
```
|
||||
18
开发文档/python/机器学习/AI大模型.md
Normal file
18
开发文档/python/机器学习/AI大模型.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Mixtral AI -8x22B模型
|
||||
```
|
||||
# bt下载链接
|
||||
magnet:?xt=urn:btih:9238b09245d0d8cd915be09927769d5f7584c1c9&dn=mixtral-8x22b&tr=udp%3A%2F%2Fopen.demonii.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce
|
||||
```
|
||||
|
||||
# Databricks-DBRX-132B
|
||||
```
|
||||
4 块英伟达 H100 GPU 运行
|
||||
```
|
||||
|
||||
# 昆仑万维-天工4.0 - 400B
|
||||
```
|
||||
Skywork-13B模型下载地址
|
||||
https://modelscope.cn/organization/skywork
|
||||
```
|
||||
|
||||
xAI-Grok1-314B
|
||||
521
开发文档/python/机器学习/stablediffusion.md
Normal file
521
开发文档/python/机器学习/stablediffusion.md
Normal file
@@ -0,0 +1,521 @@
|
||||
# sd-webui使用
|
||||
## 启动参数
|
||||
```sh
|
||||
set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32
|
||||
python webui.py --medvram --lowvram --xformers --upcast-sampling --no-half --disable-nan-check --always-batch-cond-uncond
|
||||
|
||||
### GPU低内存运行添加参数
|
||||
python webui.py --medvram --lowvram --always-batch-cond-uncond --xformers
|
||||
### 关闭单精度浮点数检查参数
|
||||
--no-half --disable-nan-check
|
||||
|
||||
--disable-safe-unpickle
|
||||
|
||||
|
||||
使用 OR 可选依赖项将许多卡上的 GPU 内存使用量减少一半。
|
||||
--opt-sdp-no-mem-attention--xformers
|
||||
如果您有 4GB 显存,并且想要制作 ~1.3 倍大的图像,请使用 。
|
||||
--medvram
|
||||
如果您有 4GB VRAM,但出现内存不足错误,请改用。
|
||||
--medvram--lowvram --always-batch-cond-uncond
|
||||
如果您有 4GB VRAM,并且想要使图像大于使用 ,请使用 。
|
||||
--medvram--lowvram
|
||||
如果您有 4GB VRAM,并且在加载全权重模型时出现内存不足错误,请使用(在 v1.6.0 中添加)
|
||||
--disable-model-loading-ram-optimization
|
||||
|
||||
显卡 某些 GPU 视频卡不支持半精度:可能会出现绿色或黑色屏幕,而不是生成的图片。用。如果您正在使用,这应该与此堆叠。 如果仍未修复,请在 VRAM 使用量显著增加时使用命令行参数,这可能需要 .
|
||||
--upcast-sampling --xformers --precision full --no-half --medvram
|
||||
|
||||
NVIDIA 16XX 和 10XX 卡应使用 --upcast-sampling 和 --xformers 以同等速度运行。如果问题仍然存在,请尝试在 fp32 中运行 vae 如果失败,您将不得不回退到运行 ,这将是最慢的 + 使用最多的 gpu 内存。
|
||||
--no-half-vae--no-half
|
||||
```
|
||||
## Tiled Diffusion(分块扩散)
|
||||
```
|
||||
当生成之前或之后看到CUDA内存不足错误时,请降低 tile 大小
|
||||
当您使用的 tile 太小且图片变得灰暗和不清晰时,请启用编码器颜色修复。
|
||||
从图中可以看到如何将图像分割成块。
|
||||
在每个步骤中,潜在空间中的每个小块都将被发送到 Stable Diffusion UNet。
|
||||
小块一遍遍地分割和融合,直到完成所有步骤。
|
||||
块要多大才合适?
|
||||
较大的块大小将提升处理速度,因为小块数量会较少。
|
||||
然而,最佳大小取决于您的模型。SD1.4仅适用于绘制512 * 512图像(SD2.1是768 * 768)。由于大多数模型无法生成大于1280 * 1280的好图片。因此,在潜在空间中将其除以8后,你将得到64-160。
|
||||
因此,您应该选择64-160之间的值。
|
||||
个人建议选择96或128以获得更快的速度。
|
||||
重叠要多大才合适?
|
||||
重叠减少了融合中的接缝。显然,较大的重叠值意味着更少接缝,但会显著降低速度,因为需要重新绘制更多的小块。
|
||||
与 MultiDiffusion 相比,Mixture of Diffusers 需要较少的重叠,因为它使用高斯平滑(因此可以更快)。
|
||||
个人建议使用 MultiDiffusion 时选择32或48,使用 Mixture of Diffusers 选择16或32
|
||||
放大算法(Upscaler) 选项将在图生图(img2img)模式中可用,你可选用一个合适的前置放大器。
|
||||
```
|
||||
## 提高分辨率
|
||||
```
|
||||
提高分辨率的推荐参数
|
||||
采样器(Sampler) = Euler a,步数(steps) = 20,去噪强度(denoise) = 0.35,方法(method) = Mixture of Diffusers,潜变量块高和宽(Latent tile height & width) = 128,重叠(overlap) = 16,分块批处理规模(tile batch size)= 8(如果 CUDA 内存不足,请减小块批量大小)。
|
||||
支持蒙版局部重绘(mask inpaint)
|
||||
如果你想保留某些部分,或者 Tiled Diffusion 给出的结果很奇怪,只需对这些区域进行蒙版。
|
||||
所用的模型很重要
|
||||
MultiDiffusion 与 highres.fix 的工作方式非常相似,因此结果非常取决于你所用的模型。
|
||||
一个能够绘制细节的模型可以为你的图像添加惊人的细节。
|
||||
使用完整的模型而不是剪枝版(pruned)模型可以产生更好的结果。
|
||||
不要在主提示语中包含任何具体对象,否则结果会很糟糕。
|
||||
只需使用像“highres, masterpiece, best quality, ultra-detailed 8k wallpaper, extremely clear”之类的词语。
|
||||
如果你喜欢,可以使用区域提示语控制来控制具体对象。
|
||||
不需要使用太大的块大小、过多的重叠和过多的降噪步骤,否则速度会非常慢。
|
||||
提示词相关性(CFG scale)可以显著影响细节
|
||||
较大的提示词相关性(例如 14)可以提供更多的细节。
|
||||
你可以通过0.1 - 0.6 的降噪强度来控制你想要多大程度地改变原始图像.
|
||||
```
|
||||
# sd-webui插件
|
||||
|
||||
## After Detailer/人脸修复
|
||||
```
|
||||
After Detailer 这是一款非常强大的、专门针对人脸进行修复的插件,可以解决生成全身图时人物面部扭曲/模糊的问题。
|
||||
https://github.com/Bing-su/adetailer.git
|
||||
```
|
||||
|
||||
## 提示词翻译:sd-webui-prompt-all-in-one
|
||||
```
|
||||
这一款插件提供提示词的翻译功能,这对于多语言用户群体来说非常有帮助。
|
||||
https://github.com/Physton/sd-webui-prompt-all-in-one.git
|
||||
```
|
||||
## 抠图工具:sd-webui-segment-anything
|
||||
```
|
||||
抠图工具,可以帮助用户从背景中分离出想要的对象。
|
||||
```
|
||||
## 视频转图片:sd-webui-IS-NET-pro
|
||||
```
|
||||
这个插件可以将视频转换成一系列图片,对于想要从视频中提取静态帧并进行编辑的用户来说非常有用。
|
||||
```
|
||||
## 转换模型格式:sd-webui-model-converter
|
||||
```
|
||||
用于转换模型格式的插件,这可能对于将模型部署到不同的环境或软件中非常有用。
|
||||
```
|
||||
## 宽高比选择器:Aspect Ratio selector
|
||||
```
|
||||
它可能快速的根据不同的分辨率的比例在调整宽高。不需要我们挨个的调整长宽了。
|
||||
https://github.com/alemelis/sd-webui-ar.git
|
||||
```
|
||||
## SDXL 1.0 的风格选择器:SDXL 1.0
|
||||
```
|
||||
它能够支持通过选择出图风格自动生成对应风格的图。
|
||||
|
||||
```
|
||||
## C站模型直接下载:Civitai Helper
|
||||
```
|
||||
这个插件允许我们直接在 webui 上搜索/下载 C 站上的模型,并且直接安装在合适的位置。
|
||||
https://github.com/butaixianran/Stable-Diffusion-Webui-Civitai-Helper.git
|
||||
```
|
||||
## 区域提示器:Regional Prompter
|
||||
```
|
||||
区域提示器允许我们将图像分成几个部分并为每个部分设置独特的提示词。提供了极大的灵活性:比如可以准确定位对象并为图像的某些部分选择特定颜色,而无需更改其余部分。
|
||||
```
|
||||
|
||||
## 高清放大神器:Ultimate SD Upscale
|
||||
```
|
||||
小显存的福音,高清放大后不用在担心爆显存了
|
||||
https://github.com/Coyote-A/ultimate-upscale-for-automatic1111.git
|
||||
```
|
||||
|
||||
## StableSR / 图片高清放大
|
||||
```
|
||||
StableSR 可以放大写实、动漫、摄影等各种类型的图像,并在不修改人物面部特征的前提下,为画面添加更丰富的细节,让锐度有明显提升,很适合用来制作高清图像。
|
||||
https://github.com/pkuliyi2015/sd-webui-stablesr.git
|
||||
|
||||
将图片导入图生图
|
||||
DPM++ SDE Karras
|
||||
重绘幅度:0.01-0.2
|
||||
(如果不开启 control幅度不要太高)
|
||||
Ultimate SD upscale
|
||||
Scale from image size:2(进行2次高清放大,可以得到4k图)
|
||||
R-ESRGAN 4x如果同时开启Tneart realistic重绘幅度建议:0.2
|
||||
```
|
||||
## 画布缩放:Canvas Zoom
|
||||
```
|
||||
当我们在使用局部重绘的时候,画布的编辑非常头疼,体验很差。
|
||||
Canvas Zoom 画布缩放 可以非常方便的支持我们的日常操作,缩放、全屏、画笔调整等。
|
||||
```
|
||||
## 图片浏览器:Image Browser
|
||||
```
|
||||
Stable Diffusion 默认不支持通过在页面上查看历史出图的记录,想要查看历史图片,只能在电脑文件夹里面慢慢找。
|
||||
Image Browser | 图片浏览器 允许我们直接在 webui 上直接查看历史图片。
|
||||
https://github.com/yfszzx/stable-diffusion-webui-images-browser.git
|
||||
```
|
||||
|
||||
## 关键词反推:Wd14 Tagger
|
||||
```
|
||||
Wd14 Tagger 插件可以从上传的图像中识别并提取内容关键词,方便我们生成类似的图像。安装完成后上传一张图像,然后选择一个反推模型(一般使用 wd14-vit-v2.git ),点击 Interregats 进行反推,就能得到关于图像的一组提示,并显示每个关键词的相关性权重。
|
||||
https://github.com/toriato/stable-diffusion-webui-wd14-tagger.git
|
||||
```
|
||||
## ControlNet
|
||||
```
|
||||
https://github.com/Mikubill/sd-webui-controlnet
|
||||
```
|
||||
## AddNet
|
||||
```
|
||||
https://github.com/kohya-ss/sd-webui-additional-networks.git
|
||||
```
|
||||
## 防止爆显存:Tiled VAE
|
||||
```
|
||||
如果我们的电脑配置不够,GPU比较小,那么在生成分辨率稍微大一点的图像就会带不动,出现错误提示,而启用 Tiled VAE 插件后,它会先生成一个个小的图块,然后拼合在一起形成高分辨率图像,这样就有效防止爆显存情况的出现,不过生成时间会更长一些
|
||||
https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111.git
|
||||
```
|
||||
## 精准控制物体颜色:Cut Off
|
||||
```
|
||||
在使用 AI 绘画时,如果提示词中设定的颜色过多,很容易出现不同物体之间颜色混杂的情况,Cut off 插件能很好的帮我们解决这个问题,让画面中物体的颜色不会相互污染。
|
||||
https://github.com/hnmr293/sd-webui-cutoff.git
|
||||
```
|
||||
## 背景移除:Remove Background
|
||||
```
|
||||
这个插件可以快速的删除图像的无用背景。
|
||||
https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg.git
|
||||
```
|
||||
## 艺术二维码:sd-webui-qrcode-toolkit
|
||||
```
|
||||
二维码美化工具,可以一键生成超具有艺术气息的二维码。
|
||||
远比传统二维码好看,效果非常惊艳,还能私人定制个人二维码。
|
||||
```
|
||||
|
||||
## 提示词库:sd-webui-oldsix-prompt
|
||||
```
|
||||
提供提示词功能,上千个提示词,可能帮助用户更好地指导图像生成的方向。
|
||||
https://github.com/thisjam/sd-webui-oldsix-prompt.git
|
||||
```
|
||||
## 双语对照插件
|
||||
```
|
||||
https://github.com/journey-ad/sd-webui-bilingual-localization
|
||||
```
|
||||
## 简体中文语言包
|
||||
```
|
||||
https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN
|
||||
https://github.com/VinsonLaro/stable-diffusion-webui-chinese
|
||||
```
|
||||
## 提示词自动补齐插件:Tag Complete
|
||||
```
|
||||
使用这个插件可以直接输入中文,调取对应的英文提示词。并且能够根据未写完的英文提示词提供补全选项,在键盘上按↓箭头选择,按 enter 键选中
|
||||
https://github.com/DominikDoom/a1111-sd-webui-tagcomplete.git
|
||||
```
|
||||
|
||||
# 提示词
|
||||
## **Prompt格式优化**
|
||||
```
|
||||
第一段:画质tag,画风tag
|
||||
第二段:画面主体,主体强调,主体细节概括(主体可以是人、事、物、景)画面核心内容
|
||||
第三段:画面场景细节,或人物细节,embedding tag。画面细节内容
|
||||
第二段一般提供人数,人物主要特征,主要动作(一般置于人物之前),物体主要特征,主景或景色框架等
|
||||
```
|
||||
## 模型权重
|
||||
```
|
||||
(tag):增加权重5%
|
||||
[tag]:降低权重5%
|
||||
(tag:0~2):设置具体权重
|
||||
[tag1|tag2]:将tag1和tag2混合
|
||||
{tag1|tag2|tag3}:从标签中随机选择一个
|
||||
[tag:tag2:0.5]:表示先用tag1生成50%后,该用tag2生成,如果是整数,就是生成tag1,n步长之后改用tag2
|
||||
|
||||
lora模型引用
|
||||
放在提示语最开头
|
||||
<lora:模型名称:占用比重0~1>
|
||||
```
|
||||
## 正向提示词
|
||||
```
|
||||
<lora:lora_file_name:0.7>,
|
||||
```
|
||||
|
||||
## 负面提示词
|
||||
```
|
||||
去除绘画风/简笔画/低质量/灰度图/去除雀斑痤疮等皮肤瑕疵
|
||||
paintings,sketches,(worst quality:2),(low quality:2),(normal quality:2),lowres,normal quality,((monocrome)),((grayscale)),skin spots,acnes,skin blemishes,age spot,glan
|
||||
```
|
||||
|
||||
# 采样器
|
||||
## 采样器介绍
|
||||
```markdown
|
||||
1. 经典ODE求解器
|
||||
Euler采样器:欧拉采样方法。
|
||||
Heun采样器:欧拉的一个更准确但是较慢的版本。
|
||||
LMS采样器:线性多步法,与欧拉采样器速度相仿,但是更准确。
|
||||
|
||||
2. 祖先采样器
|
||||
名称中带有a标识的采样器表示这一类采样器是祖先采样器。这一类采样器在每个采样步骤中都会向图像添加噪声,采样结果具有一定的**随机性**。
|
||||
Euler a
|
||||
DPM2 a
|
||||
DPM++ 2S a
|
||||
DPM++ 2S a Karras
|
||||
由于这一类采样器的特性,图像不会收敛。因此为了保证重现性,例如在通过多帧组合构建动画时,应当尽量避免采用具有随机性的采样器。需要注意的是,部分采样器的名字中虽然没有明确标识属于祖先采样器,但也属于随机采样器。如果希望生成的图像具有细微的变化,推荐使用variation seed进行调整。
|
||||
|
||||
3. Karras Noise Schedule
|
||||
带有Karras字样的采样器,最大的特色是使用了[Karras论文](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2206.00364)中建议的噪音计划表。主要的表现在于噪点步长在接近尾声时会更小,有助于图像的质量提升。
|
||||
|
||||
4. DDIM与PLMS(已过时,不再使用)
|
||||
DDIM(去噪扩散隐式模型)和PLMS(伪线性多步方法)是伴随Stable Diffusion v1提出的采样方法,DDIM也是最早被用于扩散模型的采样器。PLMS是DDIM的一种更快的替代方案。当前这两种采样方法都不再广泛使用。
|
||||
|
||||
5. DPM与DPM++
|
||||
DPM(扩散概率模型求解器)这一系列的采样器于2022年发布,代表了具有类似体系结构的求解器系列。
|
||||
由于DPM会自适应调整步长,不能保证在约定的采样步骤内完成任务,整体速度可能会比较慢。**对Tag的利用率较高**,在使用时建议适当放大采样的步骤数以获得较好的效果。
|
||||
DPM++是对DPM的改进,DPM2采用二阶方法,其结果**更准确**,但是相应的也会**更慢**一些。
|
||||
|
||||
6. UniPC
|
||||
UniPC(统一预测校正器),一种可以在5-10个步骤中实现高质量图像生成的方法。
|
||||
|
||||
7. K-diffusion
|
||||
用于指代Katherine Crowson's [k-diffusion](https://link.zhihu.com/?target=https%3A//github.com/crowsonkb/k-diffusion)项目中实现的[Karras 2022](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2206.00364)论文中提及的的相关采样器。当前常用的采样器中,除了DDIM、PLMS与UniPC之外的采样器均来自于k-diffusion。
|
||||
```
|
||||
## 采样器选择
|
||||
```markdown
|
||||
1. 如果只是想得到一些较为简单的结果,选用欧拉(Eular)或者Heun,并可适当减少Heun的步骤数以减少时间
|
||||
|
||||
2. 对于侧重于速度、融合、新颖且质量不错的结果,建议选择:
|
||||
DPM++ 2M Karras, Step Range:20-30
|
||||
UniPc, Step Range: 20-30
|
||||
|
||||
3. 期望得到高质量的图像,且不关心图像是否收敛:
|
||||
DPM ++ SDE Karras, Step Range:8-12
|
||||
DDIM, Step Range:10-15
|
||||
|
||||
4. 如果期望得到稳定、可重现的图像,避免采用任何祖先采样器
|
||||
|
||||
```
|
||||
|
||||
# models
|
||||
```
|
||||
models checkpoint:
|
||||
LORA:
|
||||
```
|
||||
|
||||
# 图片提示示例
|
||||
|
||||
## 丛林写真美女
|
||||
```
|
||||
<lora:FilmVelvia3:0.6>, Best portrait photography, RAW photo, 8K UHD, film grain, cinematic lighting, elegant 1girl, offshoulder dress, (natural skin texture), intricate (fishnet stockings), forest, natural pose, embellishments, cinematic texture, 35mm lens, shallow depth of field, silky long hair
|
||||
|
||||
Negative prompt: ((worst quality, low quality), bad_pictures, negative_hand-neg:1.2),
|
||||
|
||||
models checkpoint:majicMIX realistic 麦橘写实
|
||||
LORA:FilmGirl 胶片风
|
||||
Steps: 27, Size: 512x832, Seed: 2914668718, Model: majicmixRealistic_v6, Version: v1.4.0, Sampler: DPM++ 2M Karras, CFG scale: 7, Clip skip: 2, Model hash: e4a30e4607, Hires steps: 21, "FilmVelvia3: 6e93473d6228", Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+, Denoising strength: 0.4
|
||||
```
|
||||
|
||||
## 性感内衣装美女
|
||||
```
|
||||
masterpiece, best quality, 1girl, blonde_hair, blue_eyes, blush, breasts, cleavage, cross_earrings, day, ear_piercing, earrings, indoors, jewelry, large_breasts long_hair, looking_at_viewer, panties, skindentation, smile, solo, thighhighs, underwear, white_panties, (in luxury bedroom:1.2), (pov:1.1), full body, white bra, standing, arms behind back
|
||||
|
||||
Negative prompt: (worst quality, low quality, normal quality:1.6), lowres, blurry, bad anatomy,
|
||||
|
||||
models checkpoint:Asian Mix
|
||||
LORA:
|
||||
Steps: 25, VAE: vae-ft-mse-840000-ema-pruned.ckpt, NGMS: 0.2, Size: 704x896, Seed: 1840280510, Model: ASIAN_MIX_FINAL_V1, Version: v1.6.0, Sampler: Euler a, VAE hash: df3c506e51, CFG scale: 7, Clip skip: 2, Model hash: 7c0b397190, ADetailer model: face_yolov8n.pt, ADetailer prompt: "masterpiece, iris blue eyes, realistic, realism,", ADetailer version: 23.11.0, Denoising strength: 0.25, ADetailer mask blur: 4, Token merging ratio: 0.2, ADetailer confidence: 0.3, ADetailer dilate erode: 4, ADetailer inpaint padding: 32, Ultimate SD upscale padding: 32, ADetailer denoising strength: 0.4, Ultimate SD upscale upscaler: 4x-UltraSharp, ADetailer inpaint only masked: True, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512
|
||||
```
|
||||
## 都市多风格漂亮美女
|
||||
```
|
||||
anime artwork ((preety portrait)), digital photo, smooth photo, beautiful girl 25 y.o. natural skin, light frecles, small thight top, very short skirt, eastern european look. little makeup, mouth wide open. Photo realistic look. glossy lipstick <lora:ReaLora:0.6> . anime style, key visual, vibrant, studio anime, highly detailed
|
||||
|
||||
Negative prompt: 2d art, 3d art, ((illustration)), anime, cartoon, bad_pictures, bad-artist, EasyNegative,(worst quality:1.6), (low quality:1.6), (normal quality:1.6), lowres, bad anatomy, bad hands, ((monochrome)), ((grayscale)), collapsed eyeshadow, multiple eyebrow, (cropped), oversaturated, extra limb, missing limbs, deformed hands, long neck, long body, imperfect, (bad hands), signature, watermark, username, artist name, conjoined fingers, deformed fingers, ugly eyes, imperfect eyes, skewed eyes, unnatural face, unnatural body, error, bad image, bad photo, photo, deformed, black and white, realism, disfigured, low contrast
|
||||
|
||||
models checkpoint:Asian Mix
|
||||
LORA:
|
||||
Steps: 20, VAE: vae-ft-mse-840000-ema-pruned.ckpt, NGMS: 0.2, Size: 704x960, Seed: 3006517226, Model: ASIAN_MIX_FINAL_V1, Version: v1.6.0, Sampler: Euler a, VAE hash: df3c506e51, CFG scale: 7, Clip skip: 2, Model hash: 7c0b397190, "easynegative: c74b4e810b03", ADetailer model: face_yolov8n.pt, ADetailer prompt: "masterpiece, iris brown eyes, realistic, ", ADetailer version: 23.11.0, Denoising strength: 0.3, ADetailer mask blur: 4, Token merging ratio: 0.2, ADetailer confidence: 0.3, ADetailer dilate erode: 4, ADetailer inpaint padding: 32, Ultimate SD upscale padding: 32, ADetailer denoising strength: 0.4, Ultimate SD upscale upscaler: 4x-UltraSharp, ADetailer inpaint only masked: True, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512
|
||||
```
|
||||
## 都市多风格漂亮美女2
|
||||
```
|
||||
masterpiece, best quality, 1girl, cute lady, high priest, (colorful),(finely detailed beautiful eyes and detailed face),cinematic lighting, bust shot, extremely detailed CG unity 8k wallpaper, white hair, solo, smile, intricate skirt,((flying petal)),(Flowery meadow) sky, cloudy_sky, building, moonlight, moon, night, dark theme, light, fantasy,
|
||||
|
||||
Negative prompt: (worst quality, low quality, normal quality:1.6), lowres, blurry, bad anatomy,
|
||||
|
||||
models checkpoint:Asian Mix
|
||||
LORA:
|
||||
Steps: 25, VAE: vae-ft-mse-840000-ema-pruned.ckpt, NGMS: 0.2, Size: 704x896, Seed: 242223120, Model: ASIAN_MIX_FINAL_V1, Version: v1.6.0, Sampler: Euler a, VAE hash: df3c506e51, CFG scale: 7, Clip skip: 2, Model hash: 7c0b397190, ADetailer model: face_yolov8n.pt, ADetailer prompt: "masterpiece, iris blue eyes, realistic, realism,", ADetailer version: 23.11.0, Denoising strength: 0.25, ADetailer mask blur: 4, Token merging ratio: 0.2, ADetailer confidence: 0.3, ADetailer dilate erode: 4, ADetailer inpaint padding: 32, Ultimate SD upscale padding: 32, ADetailer denoising strength: 0.4, Ultimate SD upscale upscaler: 4x-UltraSharp, ADetailer inpaint only masked: True, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512
|
||||
```
|
||||
|
||||
## 清纯多风格纯欲妹子
|
||||
```
|
||||
Best quality, masterpiece, ultra high res, (photorealistic:1.4), raw photo, (Authentic skin texture:1.3), (film grain:1.3), panorama, character portrait, very wide shot, half body, narrow waist, cowboy shot, in the dark, deep shadow, low key, cold light, night,
|
||||
indoor, a beam of light, dust, Tyndall effect, sad, disappointed, gloom (expression), hollow eyes, against window,
|
||||
1girl, beautiful detailed eyes and face, white jabot, off shoulder, head down, brown eyes,
|
||||
<lora:FilmgirlLora_v30:0.6> <lora:asianGirlsFace_v1:0.4:FACE>
|
||||
|
||||
Negative prompt: ng_deepnegative_v1_75t, badhandv4 (worst quality:2), (low quality:2), (normal quality:2), lowres, bad anatomy, bad hands, normal quality, ((monochrome)), ((grayscale)),lowres,badanatomy, badfoots,wrong,badfingers,text,error,missingfingers,extradigit,fewerdigits,cropped,worstquality,lowquality,normalquality,jpegartifacts,signature,watermark,usemame,blury,badfeet,futa,futanari,small_penis,yaoi,huge_breasts,large_breasts,three legs,wrong hand,wrong feet,wrong fingers,deformed leg,abnormal,malformation, nsfw,watermark, character watermark,
|
||||
|
||||
models checkpoint:majicmixRealistic_v3
|
||||
LORA:Asian girls face
|
||||
Steps: 40, ENSD: 31337, Size: 512x768, Seed: 1222752426, Model: majicmixRealistic_v3, Sampler: DPM++ 2M alt Karras, CFG scale: 7, Clip skip: 2, Hires steps: 15, Hires upscale: 2, Hires upscaler: 4x-UltraSharp, Denoising strength: 0.3
|
||||
```
|
||||
|
||||
## 可爱泳装美女
|
||||
```
|
||||
<lora:Yui_v2:1>, 20d, an asian photomodel girl, wearing leopard print lingerie in a sexy pose, long hair, lace around her leg, flake around her neck, cosplay leopard ears, leopard gloves, stockings, beautifull hands, medium breast,full body, look at viewer, (8k, RAW photo, best quality, masterpiece:1.2), (realistic, photo-realistic:1.37), professional lighting, photon mapping, radiosity, physically-based rendering, <lora:asian_sexy_lingerie:0.4>
|
||||
|
||||
Negative prompt: bad-picture-chill-75v EasyNegative (((girls))), NG_DeepNegative_V1_75, (wierd hands, poorly drawn hands:1.2),paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans,extra fingers,fewer fingers,strange fingers,bad hand (low quality, worst quality:1.4), (bad_prompt:0.8), (monochrome), (greyscale)
|
||||
|
||||
models checkpoint:ChilloutMix
|
||||
LORA:Asian_sexy_lingerie
|
||||
Steps: 30, Size: 512x904, Seed: 3240473696, Model: chilloutmix_NiPrunedFp32Fix, Sampler: DPM++ SDE Karras, CFG scale: 8, Model hash: fc2511737a, Face restoration: CodeFormer
|
||||
```
|
||||
## 泳装美女
|
||||
```
|
||||
<lora:sarah-05:1>,
|
||||
good hand,4k, high-res, masterpiece, best quality, head:1.3,((Hasselblad photography)), finely detailed skin, sharp focus, (cinematic lighting), collarbone, morning, soft lighting, dynamic angle, [:(detailed face:1.2):0.2], armpit crease, thigh gap, red clothes, slender, medium breasts, cleavage,
|
||||
|
||||
Negative prompt: NG_DeepNagetive_V1_75T,(greyscale:1.2),
|
||||
paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans
|
||||
|
||||
models checkpoint:chilloutMix
|
||||
LORA:Asian Beauty Collection
|
||||
Steps: 30, Size: 512x768, Seed: 293435040, Model: chilloutmix_NiPrunedFp32Fix, Sampler: DPM++ 2M Karras, CFG scale: 7, Model hash: fc2511737a, Face restoration: CodeFormer
|
||||
```
|
||||
|
||||
## 走秀模特
|
||||
```
|
||||
girlvn01, 1girl, (smile:1.4) Stunningly Beautiful Girl, Haute_Couture, designer dress, wearing Haute_Couture, posing for a picture, fashion show, Long shaped face, angry, crazy, dark red eyes, Sandy Blonde side-swept hair, short hair, long ringlets, catwalk \(walkway\), , colorful, vivid colors, masterpiece, best quality, absurdres, highest quality, amazing details, 8k, aesthetic, <lora:girl_SDLife_Chiasedamme_v1.6:0.4> <lora:girlvn01_SDLifr_Chiasedamme_v1.0:0.6> <lora:add_detail:0.2> <lora:more_details:0.2>
|
||||
|
||||
Negative prompt: (worst quality,low quality:2), BadArtist, BadHands, badhandv4, BadImage, BadPrompt, ng_deepnegative_v1_75t
|
||||
|
||||
models checkpoint:AsianRealistic_SDLife_ChiasedammeV6.0
|
||||
LORA:Detail Tweaker LORA(细节调整LORA)
|
||||
LORA:Add More Details - Detail Enhancer/Tweaker(细节调整LORA)
|
||||
Steps: 31, Size: 512x768, Seed: 3484302777, Model: AsianRealistic_SDLife_ChiasedammeV6.0, Version: v1.4.1, Sampler: DPM++ 2M Karras, CFG scale: 7.5, Clip skip: 2, Model hash: a8852b72b2, add_detail: 7c6bad76eb54, Hires steps: 10, more_details: 3b8aa1d351ef", Hires upscale: 2, Hires upscaler: 4x-UltraSharp, ADetailer model: face_yolov8n.pt, ADetailer version: 23.6.4, Denoising strength: 0.35, ADetailer mask blur: 4, ADetailer confidence: 0.3, ADetailer dilate/erode: 4, ADetailer inpaint padding: 32, ADetailer denoising strength: 0.4, "girl_SDLife_Chiasedamme_v1.6: e0e86d42bc01, ADetailer inpaint only masked: True, girlvn01_SDLifr_Chiasedamme_v1.0: 6aa1c3353068
|
||||
```
|
||||
## 性感美女
|
||||
```
|
||||
1girl, solo,(best quality),(masterpiece:1.1), dynamic angle, upper body, looking_at_viewer, small breast, cute, clear facial skin,
|
||||
|
||||
Negative prompt: EasyNegative, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans,extra fingers,fewer fingers,, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans, (only body)
|
||||
|
||||
models checkpoint:chilloutMix
|
||||
LORA:Asian Cute Face
|
||||
Steps: 20, Size: 384x512, Seed: 2095757859, Model: Chilloutmix-Ni, Sampler: DPM++ SDE Karras, CFG scale: 7, Model hash: 7234b76e42, Hires upscale: 2, AddNet Enabled: True, AddNet Model 1: CuteAsianFace(67fccf510549), Hires upscaler: Latent, AddNet Module 1: LoRA, ControlNet Model: None, AddNet Weight A 1: 0.8, AddNet Weight B 1: 0.8, ControlNet Weight: 1, ControlNet Enabled: True, Denoising strength: 0.7, ControlNet Ending Step: 1, ControlNet Resize Mode: Crop and Resize, ControlNet Control Mode: ControlNet is more important, ControlNet Preprocessor: openpose_full, ControlNet Pixel Perfect: False, ControlNet Starting Step: 0, ControlNet Preprocessor Parameters: "(512, 100, 200)"
|
||||
```
|
||||
## 清纯妹纸
|
||||
```
|
||||
<lora:christmas_sweater_v3:0.7>,1girl,red virgin killer sweater,christmas hat,
|
||||
solo,long hair,breasts,looking at viewer,black hair,dress,sitting,full body,earrings,barefoot,blurry,black eyes,realistic,sitting on chair,
|
||||
DSLR,(Good structure),HDR,UHD,8K,A real person,Highly detailed,best quality,masterpiece,1girl,realistic,Highly detailed,(EOS R8, 50mm, F1.2, 8K, RAW photo:1.2),ultra realistic 8k,(best illumination, best shadow, extremely delicate and beautiful),(official art, beautiful and aesthetic:1.2),
|
||||
|
||||
Negative prompt: bad-hands-5 bad_prompt_version2,bhands-neg EasyNegative,ng_deepnegative_v1_75t,verybadimagenegative_v1.3,multiple breasts,(mutated hands and fingers:1.5 ),(long body :1.3),(mutation, poorly drawn :1.2),black-white,bad anatomy,liquid body,liquid tongue,disfigured,malformed,mutated,anatomical nonsense,text font ui,error,malformed hands,long neck,blurred,lowers,lowres,bad anatomy,bad proportions,bad shadow,uncoordinated body,unnatural body,fused breasts,bad breasts,huge breasts,poorly drawn breasts,extra breasts,liquid breasts,heavy breasts,missing breasts,huge haunch,huge thighs,huge calf,bad hands,fused hand,missing hand,disappearing arms,disappearing thigh,disappearing calf,disappearing legs,fused ears,bad ears,poorly drawn ears,extra ears,liquid ears,heavy ears,missing ears,fused animal ears,bad animal ears,poorly drawn animal ears,extra animal ears,liquid animal ears,heavy animal ears,missing animal ears,text,ui,error,missing fingers,missing limb,fused fingers,one hand with more than 5 fingers,one hand with less than 5 fingers,one hand with more than 5 digit,one hand with less than 5 digit,extra digit,fewer digits,fused digit,missing digit,bad digit,liquid digit,colorful tongue,black tongue,cropped,watermark,username,blurry,JPEG artifacts,signature,3D,3D game,3D game scene,3D character,malformed feet,extra feet,bad feet,poorly drawn feet,fused feet,missing feet,extra shoes,bad shoes,fused shoes,more than two shoes,poorly drawn shoes,bad gloves,poorly drawn gloves,fused gloves,bad cum,poorly drawn cum,fused cum,bad hairs,poorly drawn hairs,fused hairs,big muscles,ugly,bad face,fused face,poorly drawn face,cloned face,
|
||||
|
||||
models checkpoint:真人写实majicmixRealistic_v6
|
||||
LORA:真人清纯可爱christmas_sweater_v1
|
||||
Steps: 20, CFG scale: 7, Sampler: DPM++ 2M Karras, Seed: 3580579492
|
||||
```
|
||||
## 清纯妹子大尺度
|
||||
```
|
||||
(full body:1.2),(8k, raw photo:1.2), (hyper realistic, photo realistic:1.2), (hyper supreme extreme quality beautiful women:1.2),(supreme hyper extreme realistic skin texture:1.2), femme fatale, (1girl, solo:1.0), (beautiful quality huge eyes:1.1), (dynamic pose:1.1), (supreme beautiful girl mixed:1.2), (Kpop idol:1.2), (angular face:1.2), (supreme beauty quality huge eyes:1.2), (teenager:1.2), (erotic choker:1.2), (small breasts+skiny body:1.1), depth of field, (cinematic lighting, cinematic shadow, realistic lighting, realistic shadow:1.2), smart sharpe, hard focus, highres, uhd, completed eyes, completed face, upscaled, Crisp, presence, (sense of volume:1.2),
|
||||
|
||||
Negative prompt: (Not REAL, 2D, manga, sketch, anime, unreal, not realistic:1.1), (monochrome skin:1.2), (black hair, monochrome hair:1.1), big breasts, small eyes, ugly, lowest quality, worst quality, bad anatomy, black-white, monochrome, out of perspective, flat perspective, [네거티브 DeepNegative:0.2], lowres meat, low quality lowres gundam, low quality lowres multiple views, low quality lowres cut, low quality lowres concept art, low quality lowres reference sheet, low quality lowres turnaround, low quality lowres chart, low quality lowres comparison, low quality lowres artist progress, low quality lowres lineup, low quality lowres before and after, low quality lowres orc, low quality lowres tusks, low quality lowres goblin, low quality lowres kobold, low quality lowres pony, low quality lowres Humpbacked, low quality lowres text error, low quality lowres extra digits, low quality lowres standard quality, low quality lowres large breasts, low quality lowres shadow, low quality lowres nude, low quality lowres artist name, low quality lowres skeleton girl, low quality lowres bad legs, low quality lowres missing fingers, low quality lowres extra digit, low quality lowres artifacts, low quality lowres bad body, low quality lowres optical illusion, low quality lowres Glasses, low quality lowres girl, low quality lowres women, low quality lowres more than 1 moon, low quality lowres Multi foot, low quality lowres Multifold, low quality lowres Multi fingering, low quality lowres colored sclera, low quality lowres monster girl, low quality lowres Black hands, low quality lowres The background is incoherent, low quality lowres abnormal eye proportion, low quality lowres Abnormal hands, low quality lowres abnormal legs, low quality lowres abnormal feet abnormal fingers, low quality lowres sharp face, low quality lowres tranny, low quality lowres mutated hands, low quality lowres extra limbs, low quality lowres too many fingers, low quality lowres unclear eyes, low quality lowres bad, low quality lowres mutated hand and finger, low quality lowres malformed mutated, low quality lowres broken limb, low quality lowres incorrect limb, low quality lowres fusion finger, low quality lowres lose finger, low quality lowres multiple finger, low quality lowres multiple digit, low quality lowres fusion hand, low quality lowres lose leg, low quality lowres fused leg, low quality lowres multiple leg, low quality lowres bad cameltoe, low quality lowres colorful cameltoe, low quality lowres extra nipples, low quality lowres low polygon 3D game
|
||||
|
||||
models checkpoint:Asian girl亚洲女孩_m1228
|
||||
LORA:
|
||||
Steps: 30, Seed: 3659185283, Sampler: DPM++ SDE Karras, CFG scale: 7
|
||||
```
|
||||
|
||||
## 清纯萝莉
|
||||
```
|
||||
1girl on beach, twintails, sand, sea, wind, cloud, (wet, white_sundress, sleeveless), (best quality, masterpiece, 16k, raw photo, ultra high res:1.2), sharp focus, blurry background, close up
|
||||
|
||||
Negative prompt: easynegative, ng_deepnegative_v1_75t, badhandv4, negative_hand, (child, teen, little girl:2) ,(bad hands:2), (pubic hair:2), (bad nipples:2), (worst quality:2), (low quality:2), (normal quality:2), (lowres, bad anatomy), ((monochrome)), ((grayscale)), ((3d rendering)), watermark, logo, makeup, freckles, mole
|
||||
|
||||
models checkpoint:
|
||||
LORA:Asian cute girl mix
|
||||
Steps: 50, Sampler: DPM++ 2M Karras, CFG scale: 4
|
||||
```
|
||||
## 真人裸体美女
|
||||
```
|
||||
amateur , beautiful face, blonde woman, ((ful naked)), (playful pose), ((small breasts)), (perfect nipples), (( in a night club)) , RAW, real life photo , dramatic, atmospheric, ( at night :1.3), high quality, photo (suicide girls style) of a nude (young:0.9) twitch streamer with perfect small breasts and poofy hair, tattoo, hair moving, blowing hair, professional makeup, detailed eyes, smirk, parted lips, bokeh, dynamic pose, (realistic face, perfect eyes, eyes catchlights, perfect face:1.2, perfect hands, realistic hands), colourful hair, [[goth makeup]], winged eyeliner, perfect lips, naked, realistic, nude, no panties, realistic hands, realistic skin, fine texture, skin details, perfect figure, sexy body, dreamlike , blonde fine hairs, wearing a choker, black bands around thighs, dancing, open legs, showcasing pussy, short female pubic hair, smirking at viewer in a strip club, wrapped in stringlights, glowing ropes wrapped around her body, lasers, bright lights, hair moving, (lens_flare:1.4), wide angle lens, glow, CyberpunkAI, (low_angle:1.3), pink walls with many leds, high quality, rim light, flares, neon lights background, indoors, low light, moody light, <lora:CyberPunkAI:0.6> <lora:more_details:0.6>
|
||||
|
||||
Negative prompt: (smartphone), (child), (childish), (watermark), bad art, ugly face, messed up face, poorly drawn hands, bad hands,doll, plastic_doll, silicone, anime, cartoon, fake, 3d max, infant, featureless, colourless, impassive, shaders, bad-hands-5, ng_deepnegative_v1_75t, Unspeakable-Horrors-64v, Unspeakable-Horrors-Composition-4v, ((logo)), ((watermark)), text, (duo), distorted eyes, distorted iris, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (worst quality), (big breasts),,(((censored))), asymmetrical, fat,dialog, words, fonts, (malformed teeth), ((((ugly)))), (((duplicate))), ((morbid)), \[out of frame\], extra fingers, (((six fingers))),mutated hands, ((poorly drawn hands)),((wrong thumbs)), ((poorly drawn face)), ((missing legs)), (((extra arms))), (((extra legs))), mutated hands, ((penis)),(fused fingers), (too many fingers)
|
||||
|
||||
models: PicX_real
|
||||
Steps: 30, Size: 512x768, Seed: 4278598768, Sampler: Heun, CFG scale: 6, Clip skip: 2
|
||||
```
|
||||
|
||||
## 大尺度真人美女
|
||||
```
|
||||
(masterpiece:1.4),(best quality:1.4),beautiful,detailed eyes,extremely detailed,feminine features,perfect body,very detailed face,Depth of field,extremely detailed CG,8k,wallpaper,1girl,detailed background,shiny skin,beautiful face,(big boobs:1.3),<lora:asianGirlsFace_v1:0.4>,<lora:st louis v2 epoch 5:1>,stlouis,blue hair,(standing:1.2),expose breasts,undressing,naked,red pupils,(high heels:1.2),beautify someone 's legs,(outdoors:1.1),(the whole body:1.3),
|
||||
|
||||
Negative prompt: Paintings,sketches,(worst quality, low quality, normal quality:1.7),lowres,blurry,text,logo,((monochrome)),((grayscale)),skin spots,acnes,skin blemishes,age spot,strabismus,wrong finger,lowres,bad anatomy,bad hands,text,error,missing fingers,extra digit,fewer digits,cropped,wort quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,bad feet,(worst quality, low quality:1.4),hand,feet,foot,(dark skin:1.1),fused girls,fushion,bad-hands-5,lowres,bad anatomy,bad hands,text,error,missing fingers,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,signature,watermark,username,blurry,(bad feet:1.1),monochrome,jpeg artifacts,ugly,pregnant,vore,duplicate,morbid,mutilated,tran nsexual,hermaphrodite,long neck,mutated hands,poorly drawn hands,poorly drawn face,mutation,deformed,bad proportions,malformed limbs,extra limbs,cloned face,disfigured,gross proportions,(missing arms:1.331),(missing legs:1.331),(extra arms:1.331),(extra legs:1.331),plump,bad legs,lowres,bad anatomy,bad hands,text,error,missing fingers,extra digit,fewer digits,worst quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,long body,lowres,bad anatomy,bad hands,missing fingers,pubic hair,extra digit,fewer digits,cropped,worst quality,low quality,lowres,bad anatomy,bad hands,text,error,missing fingers,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,extra hands,extra arms,((disfigured)),((bad art)),((deformed)),ugly face,deformed face,malformed face,extra head,easynegative,multiple girls,multiple views,Multiple Face,Simple BackGround,((((badhandv4:1.3)))),
|
||||
|
||||
models checkpoint:Dream2Reality
|
||||
LORA:st Louis(Luxurious Wheels)
|
||||
Steps: 25, Size: 512x768, Seed: 3598267831, Model: dream2reality_v10, Version: v1.4.0, Sampler: DPM++ SDE Karras, CFG scale: 7, Clip skip: 2, (big boobs: 1.2), Model hash: 3eabdd94e2, Hires steps: 15, (group photo: 1.2),lineup,imperial harem or seraglio,3 girls,4 girls,5 girls,6+girls,stand,silk stockings,cover_page,cover, "(masterpiece: 1.4), (best quality: 1.4),beautiful,detailed eyes,extremely detailed,feminine features,perfect body,very detailed face,Depth of field,extremely detailed CG,8k,wallpaper,1girl,detailed background,shiny skin,beautiful face, Hires upscale: 2, av_cover_v1.0: 0.8>,", Hires upscaler: R-ESRGAN 4x+, (multiple girls: 1.2), ADetailer model: mediapipe_face_full, ADetailer version: 23.7.11, asianGirlsFace_v1: 0.4>, "asianGirlsFace_v1: 53040ed45427, Denoising strength: 0.4, ADetailer mask blur: 4, st louis v2 epoch 5: 3818f26b5a49", ADetailer confidence: 0.3, multiple_penises_v0.4: 1>, ADetailer dilate/erode: 4, ADetailer inpaint padding: 32, ADetailer denoising strength: 0.4, ADetailer inpaint only masked: True
|
||||
```
|
||||
|
||||
## 真人全裸流浆1
|
||||
```
|
||||
(masterpiece, best quality, hires, high resolution:1.2), extremely detailed, highres, <lora:aftersex:.8>, <lora:cum_b1:.5>, woman, AFTER SEX, CUM, (((lying down))), asleep, CUMDRIP, ASS, ON STOMACH, legs spread, FUCKED SILLY, CUM in pussy, TREMBLING, blonde, on an operating table, medical equipment
|
||||
|
||||
Negative prompt: (worst quality, low quality:1.4), gaps in teeth, asymmetrical eyes, bad anatomy, bad hands, cropped, oversaturated, extra limbs, disfigured, deformed, blurry, poorly drawn face, mutation, mutated, extra limbs, ugly, poorly drawn hands, Asian-Less-Neg
|
||||
|
||||
models checkpoint:fennfoto
|
||||
LORA:Murky's-After Sex Lying LoRA
|
||||
Steps: 32, VAE: vae-ft-mse-840000-ema-pruned-new.safetensors, Size: 512x768, Seed: 3033180042, Model: fennfoto (ff2), cum_b1: 4fb65cea17d4", Version: v1.6.0, Sampler: DPM++ SDE Karras, VAE hash: 95f26a5ab0, CFG scale: 6.5, "aftersex: 11d81cc5455e, Model hash: e2a30c4ec8, Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+, "Asian-Less-Neg: 22d2f003e76f", ADetailer model: face_yolov8n.pt, ADetailer prompt: asleep, ADetailer version: 23.11.1, Denoising strength: 0.27, ADetailer mask blur: 4, ADetailer model 2nd: hand_yolov8n.pt, ADetailer confidence: 0.3, ADetailer dilate erode: 4, ADetailer mask blur 2nd: 4, ADetailer confidence 2nd: 0.3, ADetailer inpaint padding: 32, ADetailer dilate erode 2nd: 4, ADetailer denoising strength: 0.4, ADetailer inpaint only masked: True, ADetailer inpaint padding 2nd: 32, ADetailer denoising strength 2nd: 0.4, ADetailer inpaint only masked 2nd: True
|
||||
```
|
||||
## 真人全裸流浆2
|
||||
```
|
||||
ultra realistic 8k cg, 8k,picture-perfect face, flawless, clean,nsfw, {{masterpiece}},best quality, beautiful lighting, Intricate, High Detail, depth of field, film grain, artbook,dramatic, incredibly,absurdres,
|
||||
1girl, goddess, ((perfect female body, narrow waist)), gorgeous queen, royal, divine, goddess, godlike, (royal palace),queen,rich,skinny, WombTattoo, sexy, charming, alluring, seductive, erotic, enchanting, dreamlike, unreal, science fiction, fantasy,(mature female:1.4),white hair, blue eyes(looking at viewer:1.2), red lip, (trembling,Panting,blush,open mouth,tongue out,drooling saliva),<lora:murkysAfterSexLying_1:0.7> ((after sex, bukkake, lying on bed,on back, sweat,wet body, covered in cum, cum in pussy)),
|
||||
perfect large breasts(F cup:1),beautiful clothes, lace, lace trim, lace-trimmed legwear, hair ornament, necklace, earrings, bracelet, armlet,
|
||||
<lora:fashionGirl_v47:0.1> <lora:cuteGirlMix4_v10:0.5> <lora:photorealisticWombTattoos_v301:0.7> <lora:breastinclassBetter_v14:0.3> <lora:breastCurtains_v10:1>
|
||||
|
||||
Negative prompt: easynegative, ng_deepnegative_v1_75t, (bad_prompt_version2:0.8), (monochrome:1.1),(low quality, worst quality:1.4),
|
||||
|
||||
models checkpoint:
|
||||
LORA:Murky's-After Sex Lying LoRA
|
||||
Steps: 26, Size: 512x768, Seed: 4272630219, Model: perfectWorld_v2Baked, Sampler: Euler a, CFG scale: 8, Clip skip: 2, Hires steps: 20, Hires upscale: 1.5, Hires upscaler: Latent, Face restoration: CodeFormer, Denoising strength: 0.38
|
||||
```
|
||||
## 真人全裸
|
||||
```
|
||||
(masterpiece, best quality, hires, high resolution:1.2), extremely detailed, intricate details, highres, <lora:aftersex:1>, 1girl, 20yo, woman, AFTER SEX, CUM, LYING, (((lying down))), asleep, CUMDRIP, ASS, ON STOMACH, legs spread, FUCKED SILLY, SWEAT, CUM in pussy, TREMBLING, blonde, on an operating table, medical equipment
|
||||
|
||||
Negative prompt: (worst quality, low quality:1.4), gaps in teeth, asymmetrical eyes, bad anatomy, bad hands, cropped, oversaturated, extra limbs, disfigured, deformed, blurry, poorly drawn face, mutation, mutated, extra limbs, ugly, poorly drawn hands, Asian-Less-Neg
|
||||
|
||||
models checkpoint:fennfoto
|
||||
LORA:Murky's-After Sex Lying LoRA
|
||||
Steps: 32, VAE: vae-ft-mse-840000-ema-pruned-new.safetensors, Size: 512x768, Seed: 3660914911, Model: fennfoto (ff2), Version: v1.6.0, Sampler: DPM++ SDE Karras, VAE hash: 95f26a5ab0, CFG scale: 6.5, "aftersex: 11d81cc5455e", Model hash: e2a30c4ec8, Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+, "Asian-Less-Neg: 22d2f003e76f", ADetailer model: face_yolov8n.pt, ADetailer prompt: asleep, ADetailer version: 23.11.1, Denoising strength: 0.27, ADetailer mask blur: 4, ADetailer model 2nd: hand_yolov8n.pt, ADetailer confidence: 0.3, ADetailer dilate erode: 4, ADetailer mask blur 2nd: 4, ADetailer confidence 2nd: 0.3, ADetailer inpaint padding: 32, ADetailer dilate erode 2nd: 4, ADetailer denoising strength: 0.4, ADetailer inpaint only masked: True, ADetailer inpaint padding 2nd: 32, ADetailer denoising strength 2nd: 0.4, ADetailer inpaint only masked 2nd: True
|
||||
```
|
||||
|
||||
## 真人可爱风全裸
|
||||
```
|
||||
(RAW photo, best quality), (realistic, photo-realistic:1.3), best quality ,masterpiece, an extremely delicate and beautiful, extremely detailed ,CG ,unity ,4k wallpaper, Amazing, finely detail, masterpiece, light smile, best quality, extremely detailed CG unity 8k wallpaper, ultra-detailed, extremely detailed, 2girls, maid,(nude:1.2),(moist pussy:1), (spread legs), hair ornament, looking at viewer, medium breasts, nipples, pink long hair. <lora:japaneseDollLikeness_v10:0.2>, <lora:koreanDollLikeness_v15:0.3>, <lora:cuteGirlMix4_v10:0.2>, <lora:chilloutmixss30_v30:0.3>,
|
||||
|
||||
Negative prompt: (multi nipples), lowres, bad anatomy, bad hands, text, error, missing fingers,extra digit, fewer digits, cropped, worst quality, low qualitynormal quality, jpeg artifacts, signature, watermark, username,bad feet, {Multiple people},lowres,bad anatomy,bad hands, text, error, missing fingers,extra digit, fewer digits, cropped, worstquality, low quality, normal quality,jpegartifacts,signature, watermark, blurry,bad feet,cropped,poorly drawn hands,poorly drawn face,mutation,deformed,worst quality,low quality,normal quality,jpeg artifacts,signature,extra fingers,fewer digits,extra limbs,extra arms,extra legs,malformed limbs,fused fingers,too many fingers,long neck,cross-eyed,mutated hands,polar lowres,bad body,bad proportions,gross proportions,text,error,missing fingers,missing arms,extra arms,missing legs,wrong feet bottom render,extra digit,abdominal stretch, glans, pants, briefs, knickers, kecks, thong, {{fused fingers}}, {{bad body}}, ((long hair))
|
||||
|
||||
models checkpoint:AbsoluteReality
|
||||
LORA:Yae Miko|Realistic Genshin LORA
|
||||
Steps: 30, Size: 512x768, Seed: 841769305, Sampler: DPM++ 2M Karras, CFG scale: 7, Clip skip: 2
|
||||
```
|
||||
|
||||
## 二次元全裸流浆
|
||||
```
|
||||
<lora:Murkys æ§ç±åæè° LoRA:0.8>,((best quality,extremely detailed,incredibly absurdres,extremely detailed cg,more details,ultra-detailed:1.2)),(no code:1),
|
||||
1girl,shiny_skin,thin,blonde hair,big breasts,wedding ring,female pubic hair,(golden drill bit curled princess curled long hair:1),exquisite eyes,(tiry:1.1),(exhausted:1.1),(hand_on_own_stomach:1.1),sweat,(heavy_breathing:1.1),(on side:1.1),(lying:1.1),naked,pussy,after sex,cum on body,fucked silly,cum,cumdrip,cum in pussy,bukkake,throwing a condom containing semen on the bed,used condoms on the bed,
|
||||
simple background,bedroom,bed,(The screen of the mobile phone abandoned on the bed is on:1.1),dutch angle,
|
||||
|
||||
Negative prompt: ((bad hands:1.2)),((missing fingers:1.2)),((badhandv4:1.2)),(EasyNegativeV2:1.2),((ng_deepnegative_v1_75t)),extra legs,(the girl is not holding a phone in her hand:1.1),((there is only one mobile phone on the bed:1.3)),(only 5 fingers:1.2),don't have extra hands:1.2,(not alone:1),(girls don't have a penis:1.4:1.1),girls are not bisexual,(bad anatomy:1.4),(only one girl:1.1),(only one penis:1.2),(the boy is not pregnant:1.2),lowres,text,error,missing fingers,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,lowres,text,error,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,
|
||||
|
||||
models checkpoint:FiaMix Reboot H(NSFW)
|
||||
LORA:Murky's-After Sex Lying LoRA
|
||||
Steps: 40, VAE: vae-ft-mse-840000-ema-pruned.safetensors, Size: 512x512, Seed: 2948043399, Model: fiamixRebootHNSFW_v50, Version: v1.6.1, Sampler: DPM++ 2M Karras, VAE hash: 735e4c3a44, CFG scale: 8, Clip skip: 2, Model hash: e73e55fab1, Hires steps: 150, Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+ Anime6B, Variation seed: 1927049667, Denoising strength: 0.5, Variation seed strength: 0.05, "Murkys æ§ç±åæè° LoRA: 11d81cc5455e"
|
||||
```
|
||||
|
||||
## 二次元全裸
|
||||
```
|
||||
(RAW photo, best quality), (realistic, photo-realistic:1.3), best quality ,masterpiece, an extremely delicate and beautiful, extremely detailed ,CG ,unity ,2k wallpaper, Amazing, finely detail, masterpiece, light smile, best quality, extremely detailed CG unity 8k wallpaper, ultra-detailed, highres, extremely detailed, 1girl, maid,(nude:1.2),(moist pussy:1), (spread legs), hair ornament, looking at looking at viewer, small breasts, <lora:japaneseDollLikeness_v10:0.2>, <lora:koreanDollLikeness_v15:0.2>, <lora:cuteGirlMix4_v10:0.4>, <lora:chilloutmixss30_v30:0.2>
|
||||
|
||||
Negative prompt: (multi nipples), lowres, bad anatomy, bad hands, text, error, missing fingers,extra digit, fewer digits, cropped, worst quality, low qualitynormal quality, jpeg artifacts, signature, watermark, username,bad feet, {Multiple people},lowres,bad anatomy,bad hands, text, error, missing fingers,extra digit, fewer digits, cropped, worstquality, low quality, normal quality,jpegartifacts,signature, watermark, blurry,bad feet,cropped,poorly drawn hands,poorly drawn face,mutation,deformed,worst quality,low quality,normal quality,jpeg artifacts,signature,extra fingers,fewer digits,extra limbs,extra arms,extra legs,malformed limbs,fused fingers,too many fingers,long neck,cross-eyed,mutated hands,polar lowres,bad body,bad proportions,gross proportions,text,error,missing fingers,missing arms,extra arms,missing legs,wrong feet bottom render,extra digit,abdominal stretch, glans, pants, briefs, knickers, kecks, thong, {{fused fingers}}, {{bad body}}, ((long hair))
|
||||
|
||||
models checkpoint:YesMix
|
||||
LORA:Yae Miko|Realistic Genshin LORA
|
||||
Steps: 20, Size: 512x768, Seed: 60205222, Sampler: DPM++ 2M Karras, CFG scale: 8, Clip skip: 2
|
||||
```
|
||||
|
||||
## 可爱小狗
|
||||
```
|
||||
Masterpiece pixar nickelodeon cartoon of ((a cute retriever puppy, fluffy)), puppy in a cage (behind bars), sadness, hope, digital painting, artstation, concept art, sharp focus, illustration, volumetric lighting, epic Composition, 8k, oil painting, cgsociety
|
||||
|
||||
Negative prompt: Realism, worst quality, bad quality, poor quality, blurry, zombie, ugly, cropped, out of frame, photo, Fujifilm XT3, depth of field, line art
|
||||
|
||||
models checkpoint:fustercluck_v2
|
||||
LORA:
|
||||
Steps: 50, Size: 832x1216, Seed: 1360617448, Model: FC_v2_Final, Version: v1.6.0, Sampler: Euler a, CFG scale: 3.5, Model hash: 4a200332e7
|
||||
```
|
||||
|
||||
#
|
||||
81
开发文档/python/机器学习/机器学习框架安装.md
Normal file
81
开发文档/python/机器学习/机器学习框架安装.md
Normal file
File diff suppressed because one or more lines are too long
39
开发文档/uniapp.md
Normal file
39
开发文档/uniapp.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# uni-app笔记
|
||||
|
||||
### uni-form
|
||||
+ 表单需要设置验证规则,才能在提交后获取验证通过的值
|
||||
|
||||
### 弹窗
|
||||
```javascript
|
||||
uni.showToast({
|
||||
title: '点击了悬浮按钮',
|
||||
icon: 'none'
|
||||
})
|
||||
// 在屏幕中央显示提示消息
|
||||
```
|
||||
|
||||
### 创建云对象
|
||||
> 在uniCloud/cloudfunctions目录下右键选择创建云函数,选择云对象,
|
||||
目录的名称即为云对象的名称,在目录下的index.obj.js文件创建方法或函数
|
||||
|
||||
### Error: Cannot find module 'uni-config-center'
|
||||
> 在相对应的云函数目录右键管理公共模块及扩展,把uni-config-center勾选上确定即可
|
||||
|
||||
### err Error: 公共模块[uni-config-center]只能存在一个,删除不使用的公共模块后再试
|
||||
> 错误原因:uniCloud/cloudfunctions/目录下存在uni_modules模块的文件,删除uni_modules模块的函数文件即可
|
||||
|
||||
### JQL语句在where中使用变量
|
||||
> 函数中:`_id=="${var}"`
|
||||
> 模板中: :"uid=='"+var+"'"
|
||||
> 使用computed方法
|
||||
```javascript
|
||||
computed:{
|
||||
where(){
|
||||
return `_id=="${var}"`
|
||||
}
|
||||
}
|
||||
//模板中写:
|
||||
:where="where"
|
||||
```
|
||||
### JQL语句field查询指定字段
|
||||
> field("字段1,字段2,字段3") 写在一个字符串内,用逗号分割字段
|
||||
112
开发文档/数据库/MySQL笔记.md
Normal file
112
开发文档/数据库/MySQL笔记.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# mysql主备搭建
|
||||
```sql
|
||||
CREATE DATABASE IF NOT EXISTS kodbox1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
|
||||
create user 'sqladmin'@'%' identified by 'em123456';
|
||||
grant all on *.* to 'sqladmin'@'%';
|
||||
```
|
||||
## 1045(28000)错误解决方法
|
||||
|
||||
^055b1a
|
||||
|
||||
```
|
||||
原因:
|
||||
root用户不能远程登录,
|
||||
|
||||
解决方法:
|
||||
1.可以在容器内输入mysql直接以root用户进入数据库,修改root用户远程权限
|
||||
2.在mysql配置文件末尾添加skip-grant-tables,跳过权限检查,配置文件在/etc/mysql/my.cnf
|
||||
```
|
||||
# MySQL安装
|
||||
## centos使用yum安装mysql8.0
|
||||
```sh
|
||||
# centos7-mysql8.0版本
|
||||
wget https://dev.mysql.com/get/mysql80-community-release-el7-8.noarch.rpm
|
||||
# 安装存储库
|
||||
yum install -y mysql80-community-release-el7-8.noarch.rpm
|
||||
# 禁用5.7的存储库,启用8.0的存储库
|
||||
yum-config-manager --disable mysql57-community
|
||||
yum-config-manager --enable mysql80-community
|
||||
# 安装服务端和客户端
|
||||
yum install -y mysql-community-server mysql-community-client
|
||||
# 启动mysql服务端
|
||||
systemctl start mysqld
|
||||
# 查询root密码
|
||||
grep 'temporary password' /var/log/mysqld.log
|
||||
```
|
||||
## 创建MySQL容器
|
||||
|
||||
^a6aefb
|
||||
|
||||
```sh
|
||||
# 创建容器网络
|
||||
docker network create -d bridge vlan100
|
||||
# mysql8.0版本
|
||||
docker run -itd --name ms10 -h ms10 --restart=always --network vlan100 -e MYSQL_ROOT_PASSWORD=abc123456 -v /var/mysql/ms10/data:/var/lib/mysql -v /var/mysql/ms10/log:/var/log -p 8010:3306 mysql:latest
|
||||
|
||||
# mysql5.7版本
|
||||
docker run -itd --name ms10 --restart=always --network vlan100 -e MYSQL_ROOT_PASSWORD=abc123456 -p 9901:3306 mysql:5.7
|
||||
|
||||
|
||||
```
|
||||
# mysql基本用法
|
||||
```mysql
|
||||
# 创建数据库
|
||||
CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
|
||||
# 查看数据库字符集
|
||||
show variables like %character%;
|
||||
show variables like %collation%;
|
||||
# 创建用户,%代表任意主机访问权限,localhost代表本地访问权限
|
||||
create user 'username'@'%' identified by 'password';
|
||||
# 查询所有用户
|
||||
select user,host from mysql.user;
|
||||
# 查询当前用户
|
||||
select current_user;
|
||||
select user();
|
||||
# 修改用户名
|
||||
rename user 'user1'@'%' to 'user2'@'%';
|
||||
# 删除用户
|
||||
drop user 'user1'@'%';
|
||||
delete from mysql.user where user='user1'
|
||||
# 修改密码
|
||||
alter user 'user1'@'%' identified by 'newpassword';
|
||||
# 查看用户权限
|
||||
show grants for 'user1'@'%';
|
||||
# 查看所有数据库
|
||||
show databases;
|
||||
# 查看所有数据表;
|
||||
show tables;
|
||||
# 添加权限,赋予用户user1对testdb数据库的所有权限,*代表所有数据表,权限有select,delete,update,create,drop
|
||||
grant all on testdb.* to 'user1'@'%';
|
||||
# 添加查询权限,给user1用户添加testdb的name表的查询权限
|
||||
grant select on testdb.name to 'user1'@'%';
|
||||
# 撤销权限,
|
||||
revoke all on testdb.* from 'user1'@'%';
|
||||
# 刷新系统权限表,即时生效
|
||||
flush privileges;
|
||||
|
||||
```
|
||||
# MySQL常用操作
|
||||
```sh
|
||||
# 主配置文件:
|
||||
/etc/my.cnf
|
||||
# 数据库文件:
|
||||
/var/lib/mysql
|
||||
# 日志文件:
|
||||
/var/log
|
||||
|
||||
# 获取5.7版本以上的随机密码
|
||||
grep 'temporary password' /var/log/mysqld.log
|
||||
|
||||
# 登录
|
||||
mysql -uroot -p
|
||||
# 修改密码
|
||||
SET PASSWORD = PASSWORD('new password')
|
||||
|
||||
# 跳过密码验证
|
||||
echo "skip-grant-tables" >> /etc/my.cnf
|
||||
# 重启msql
|
||||
|
||||
# 重置密码
|
||||
update user set password=password("你的新密码") where user="root"
|
||||
|
||||
```
|
||||
15
开发文档/数据库/MySQL高可用搭建.canvas
Normal file
15
开发文档/数据库/MySQL高可用搭建.canvas
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"type":"text","text":"mysql8.0主\nhostname:my10","id":"a4b7ff2bdd13b52a","x":-35,"y":40,"width":190,"height":60},
|
||||
{"type":"text","text":"mysql8.0备\nhostname:my11\n\n","id":"8c94d79c781a4a9f","x":-35,"y":-120,"width":190,"height":60},
|
||||
{"type":"text","text":"mysql8.0从\nhost:my30","id":"bb1d77000dd5f28c","x":200,"y":186,"width":190,"height":60},
|
||||
{"type":"text","text":"mysql8.0从\nhostname:my20","id":"98fd69a7ec5b933b","x":-260,"y":186,"width":190,"height":60},
|
||||
{"type":"text","text":"mysql8.0从\nhost:my40","id":"e525fd668744c8ee","x":-35,"y":185,"width":190,"height":60}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"ab7f810638419fa8","fromNode":"a4b7ff2bdd13b52a","fromSide":"top","toNode":"8c94d79c781a4a9f","toSide":"bottom"},
|
||||
{"id":"d579137292cf2cb7","fromNode":"a4b7ff2bdd13b52a","fromSide":"bottom","toNode":"98fd69a7ec5b933b","toSide":"top"},
|
||||
{"id":"b7df10c334e3bfba","fromNode":"a4b7ff2bdd13b52a","fromSide":"bottom","toNode":"bb1d77000dd5f28c","toSide":"top"},
|
||||
{"id":"5a5ff79bdb9a71f0","fromNode":"a4b7ff2bdd13b52a","fromSide":"bottom","toNode":"e525fd668744c8ee","toSide":"top"}
|
||||
]
|
||||
}
|
||||
275
开发文档/数据库/PostgreSQL笔记.md
Normal file
275
开发文档/数据库/PostgreSQL笔记.md
Normal file
@@ -0,0 +1,275 @@
|
||||
|
||||
## SQL语句
|
||||
### 查询操作
|
||||
#### 查询json类型数据中指定字符串
|
||||
```sql
|
||||
-- store_ids为json字段
|
||||
select phone from account_store_list where exists(select 1 from json_array_elements(store_ids) as elem where elem::text like '%842897384838094848%');
|
||||
```
|
||||
#### 查询字段重复数据
|
||||
```sql
|
||||
-- 表名dh_org,字段org_id, org_code,org_name,
|
||||
select org_id,count(*) from dh_org group by org_id having count(*) >1;
|
||||
```
|
||||
#### 基础查询操作
|
||||
```sql
|
||||
-- 查询
|
||||
select from video_info where links like '%74002-1-1.html%';
|
||||
select id_name,sour_name,links from video_info where id_name='666486376699';
|
||||
select links from video_info where links='https://dgs--2023093012e67.um2a-23616.bd1th1yrt.com:23616/vodplay/75358-1-1.html';
|
||||
select * from video_info where data_size>0;https://dgs--2023093012e67.um2a-23616.bd1th1yrt.com:23616/vodplay/87607-1-1.html
|
||||
SELECT * from video_info where links like '%7836-1-1%';
|
||||
|
||||
|
||||
--使用where查询uuid,uuid必须要单引号
|
||||
update new_video_info set m3u8_link='https://muji2.laoyacdn.com/20240511/Q19ypQo6/2000kb/hls/index.m3u8' where id_name='232b5827-f930-4ff7-9bb0-f98e1699c2a5'::UUID
|
||||
```
|
||||
### 更新操作
|
||||
```sql
|
||||
-- 更新表数据
|
||||
update video_info set id_name='658836077826' where key like 'baf0fdabe9f8dd8c';
|
||||
update video_info set key='',m3u8_link='' where img_link!='' and m3u8_link!='';
|
||||
```
|
||||
|
||||
### 更改字段类型
|
||||
```sql
|
||||
-- 该字段类型的数据为空时
|
||||
alter table table_name
|
||||
alter column column_name type new_type;
|
||||
```
|
||||
### 删除操作
|
||||
#### 删除字段重复数据
|
||||
```sql
|
||||
--示例1
|
||||
-- 表名dh_org,字段org_id, org_code,org_name,删除org_id字段的重复数据
|
||||
WITH ranked_data AS (
|
||||
SELECT
|
||||
org_id,
|
||||
org_code,
|
||||
org_name,
|
||||
ROW_NUMBER() OVER (PARTITION BY org_id ORDER BY org_id) AS row_num
|
||||
FROM dh_org
|
||||
)
|
||||
DELETE FROM dh_org
|
||||
WHERE org_id IN (
|
||||
SELECT org_id
|
||||
FROM ranked_data
|
||||
WHERE row_num > 1
|
||||
);
|
||||
|
||||
--示例2
|
||||
-- 删除m3u8_link字段的重复数据
|
||||
DELETE FROM video_info a
|
||||
USING (
|
||||
SELECT MIN(id_name) as min_id, m3u8_link
|
||||
FROM video_info
|
||||
GROUP BY m3u8_link
|
||||
HAVING COUNT(m3u8_link) > 1
|
||||
) b
|
||||
WHERE a.m3u8_link = b.m3u8_link AND a.id_name > b.min_id;
|
||||
```
|
||||
#### 删除表
|
||||
```sql
|
||||
delete from user_info ;
|
||||
```
|
||||
#### 删除指定行数据
|
||||
```sql
|
||||
delete from video_info where id_name= '878586287727';
|
||||
```
|
||||
|
||||
#### 删除表格全部数据,而不删除架构
|
||||
```sql
|
||||
truncate table table_name
|
||||
```
|
||||
|
||||
```
|
||||
### 插入操作
|
||||
|
||||
```sql
|
||||
-- 插入数据
|
||||
INSERT INTO user_info(uid,key) VALUES ('123asada','sadasda3322');
|
||||
insert into video_info(id) values('584653085792') where links != '';
|
||||
-- 使用sql语句插入uuid4
|
||||
insert into video_info(id) select uuid_generate_v4();
|
||||
|
||||
--通过查询其他表的值插入新表
|
||||
INSERT INTO video_2024 (id, sour_name, m3u8_link)
|
||||
SELECT
|
||||
get_date_string() AS id, -- 假设这个函数返回的是适合作为ID的字符串
|
||||
(SELECT sour_name FROM new_video_info WHERE key = '0' LIMIT 1) AS sour_name,
|
||||
(SELECT m3u8_link FROM new_video_info WHERE key = '0' LIMIT 1) AS m3u8_link;
|
||||
delete from new_video_info where sour_name=(SELECT sour_name FROM new_video_info WHERE key = '0' LIMIT 1);
|
||||
```
|
||||
|
||||
## 插入触发器
|
||||
```sql
|
||||
%% 要创建一个触发器,在插入new_video_info表的m3u8_link列之前检查值是否重复,并且如果重复则不插入并提醒,您可以遵循以下步骤:
|
||||
|
||||
首先,您需要创建一个触发器函数,该函数将执行检查并抛出异常(如果m3u8_link值已存在)。以下是这个函数的SQL语句: %%
|
||||
|
||||
sql
|
||||
CREATE OR REPLACE FUNCTION check_m3u8_link_unique()
|
||||
RETURNS TRIGGER AS
|
||||
$$
|
||||
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM new_video_info WHERE m3u8_link = NEW.m3u8_link) THEN
|
||||
RAISE EXCEPTION 'm3u8_link "%" already exists.', NEW.m3u8_link;
|
||||
RETURN NULL; -- 阻止插入
|
||||
END IF;
|
||||
RETURN NEW; -- 允许插入
|
||||
END;
|
||||
|
||||
$$
|
||||
LANGUAGE plpgsql;
|
||||
%% 接下来,您需要创建一个触发器,该触发器在每次尝试向new_video_info表插入新行之前调用上述函数: %%
|
||||
|
||||
sql
|
||||
CREATE TRIGGER trg_check_m3u8_link_unique
|
||||
BEFORE INSERT ON new_video_info
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION check_m3u8_link_unique();
|
||||
|
||||
%% 现在,当您尝试向new_video_info表插入数据时,如果m3u8_link列的值已经存在,触发器会抛出一个异常,并显示您定义的错误消息。否则,如果不存在重复值,记录将被正常插入到表中。
|
||||
您可以在psql命令行工具或pgAdmin的SQL编辑器中执行这些SQL语句来创建函数和触发器。请注意,在创建触发器之前,您必须首先确保函数check_m3u8_link_unique已经存在。
|
||||
如果您正在使用pgAdmin,则可以按照以下步骤执行这些SQL语句:
|
||||
打开pgAdmin并连接到您的PostgreSQL数据库。
|
||||
在SQL编辑器中打开一个新的查询标签页。
|
||||
复制并粘贴创建函数check_m3u8_link_unique的SQL语句到查询编辑器中,并执行它。
|
||||
接下来,复制并粘贴创建触发器trg_check_m3u8_link_unique的SQL语句到查询编辑器中,并执行它。
|
||||
执行这些步骤后,触发器将被创建,并在每次尝试向new_video_info表插入数据时自动执行所需的检查。 %%
|
||||
```
|
||||
## 创建容器
|
||||
```sh
|
||||
# 使用ubuntu手动安装
|
||||
docker run -itd -h ps10 --name ps10 --network vlan100 -v /var/postgre
|
||||
sql/ps10:/var/lib/pgsql/data -p 8110:5432 ubuntu /bin/bash
|
||||
|
||||
# 使用官方镜像
|
||||
docker run --restart=always --name=ps10 --network vlan100 -p 9900:5432 -e POSTGRES_PASSWORD=vm123456 -d -v /data/docker_data/database/ps10:/var/lib/pgsql/data postgres:12
|
||||
|
||||
# 创建pgadmin
|
||||
docker run -p 9905:5050 -e PGADMIN_DEFAULT_EMAIL=adhsite@qq.com -e PGADMIN_DEFAULT_PASSWORD=Abc123456 -e PGADMIN_LISTEN_PORT=5050 -v /data/docker_data/pgadmin:/var/data --network vlan100 --name=pgadmin -d dpage/pgadmin4
|
||||
```
|
||||
## 注意事项
|
||||
```sh
|
||||
# 创建时注意指定schema,默认的schema是public
|
||||
|
||||
# 客户端连接权限配置,容器的配置文件路径/var/lib/postgresql/data/pg_hba.conf
|
||||
|
||||
# 系统用户和数据库用户映射,/var/lib/postgresql/data/pg_ident.conf
|
||||
echo -e "映射名称 \t 系统用户 \t 数据库用户" >> /var/lib/postgresql/data/pg_ident.conf
|
||||
# 使用postgres用户重载配置,其他用户无法重载
|
||||
pg_ctl reload
|
||||
|
||||
# 使用pg_ctl reload,调用SQL函数pg_reload_conf(), 或用kill -HUP)重新读取配置文件
|
||||
|
||||
```
|
||||
### uuid类型的问题
|
||||
```python
|
||||
# 使用psycopg2连接查询
|
||||
from psycopg2 import extras
|
||||
with pg.connect(
|
||||
database="video_data",
|
||||
user="videos",
|
||||
password="Vi2023**",
|
||||
host="124.71.39.185",
|
||||
port="9900"
|
||||
) as conn:
|
||||
with conn.cursor() as cursor:
|
||||
# 注册uuid扩展
|
||||
extras.register_uuid()
|
||||
ddl_sql="UPDATE new_video_info SET key=%s,data_size=%s WHERE id_name=%s;"
|
||||
ddl_data=(key,data_size,uuid.UUID(id_name))
|
||||
# 执行ddl_sql查询
|
||||
cursor.execute(ddl_sql,ddl_data)
|
||||
# 提交事务
|
||||
conn.commit()
|
||||
|
||||
# 使用psql,将uuid字符串强制转化为uuid类型
|
||||
UPDATE new_video_info SET key='645fc757fe9fb9ce',data_size='100' WHERE id_name='29793471-8c61-54a7-9dbd-65d8adde1a09'::uuid;
|
||||
|
||||
# 在psql命令行安装uuid模块
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
select uuid_generate_v4() # 返回一个uuid
|
||||
|
||||
# 可以在创建表时将ID设为主键,默认值为uuid,即可自动生成uuid
|
||||
CREATE TABLE my_table (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
);
|
||||
|
||||
# uids扩展
|
||||
CREATE EXTENSION IF NOT EXISTS uids;
|
||||
SELECT generate_typeid('user');
|
||||
```
|
||||
## 常用命令
|
||||
```postgresql
|
||||
-- psql连接数据库
|
||||
psql -U username -h hostname -p port -d dbname
|
||||
|
||||
-- 创建用户,可以在linux系统创建同名用户,可以在本地直连
|
||||
create user username with password 'abc123456';
|
||||
|
||||
-- 创建用户数据库
|
||||
create database dbname owner username;
|
||||
|
||||
-- 设置用户拥有数据库所有权限
|
||||
grant all privileges on database dbname to username;
|
||||
-- 设置用户具有数据表所有权限
|
||||
grant all privileges on table to username;
|
||||
|
||||
--更改用户密码
|
||||
alter user postgres with password 'Amv2024*';
|
||||
|
||||
-- 退出postsql命令行
|
||||
\q
|
||||
|
||||
-- 查看用户数据库
|
||||
\du
|
||||
|
||||
-- 查看所有数据库
|
||||
\l
|
||||
|
||||
-- 切换数据库
|
||||
\c dbname
|
||||
|
||||
-- 查看自定义类型的值
|
||||
\dT+ typename;
|
||||
|
||||
-- 查看数据表列的类型
|
||||
\d tablename;
|
||||
|
||||
-- 指定schema
|
||||
set search_path to schemaname;
|
||||
|
||||
-- 修改schema所有人
|
||||
grant all privileges on all tables in schema schemaname to username;
|
||||
-- alter schema schemaname owner to username;
|
||||
|
||||
-- 创建类型
|
||||
create type typename as enum('M','F');
|
||||
|
||||
-- 查询枚举类型的值
|
||||
select * from pg_enum;
|
||||
|
||||
-- 删除枚举类型
|
||||
drop type public.typename;
|
||||
|
||||
-- 删除枚举类型的值
|
||||
delete from pg_enum where enumlabel='M';
|
||||
|
||||
-- 更改原枚举名称
|
||||
ALTER TYPE "public"."et_type" RENAME TO "et_type2";
|
||||
|
||||
-- 创建用于替换的枚举
|
||||
CREATE TYPE "public"."et_type" AS ENUM ('type1', 'type2', 'type3');
|
||||
|
||||
-- 更改枚举拥有者
|
||||
ALTER TYPE "public"."et_type" OWNER TO "postgres";
|
||||
|
||||
-- 更改表对枚举的引用
|
||||
ALTER TABLE "public"."table" ALTER COLUMN "type" TYPE "et_type" USING "type"::text::et_type;
|
||||
|
||||
|
||||
INSERT INTO "testdata"."employee" ( "emp_no","birth_date","first_name","last_name","gender","hire_date" ) VALUES ( 100000,'1953/9/2','test1','test2','F','1968/3/5' )
|
||||
```
|
||||
115
开发文档/香橙派3B开发板.md
Normal file
115
开发文档/香橙派3B开发板.md
Normal file
@@ -0,0 +1,115 @@
|
||||
- 密码:orangepi
|
||||
## 连接wifi
|
||||
```sh
|
||||
#查看wifi信号列表
|
||||
nmcli dev wifi
|
||||
sudo nmcli dev wifi connect wifi名称 password wifi密码
|
||||
# wifi和有线同时只有一个通
|
||||
```
|
||||
## 创建热点
|
||||
- 注意: linux5.10的Debian12需要修改eth0为end1,linux6.6 的Debian12 需要修改eth0为end0。
|
||||
### 创建NAT模式热点
|
||||
```sh
|
||||
# 以NAT模式创建名称为orangepi、密码为orangepi的WIFI热点
|
||||
sudo create_ap--no-virt-m nat wlan0 eth0 orangepi orangepi
|
||||
|
||||
# 指定热点的网段
|
||||
sudo create_ap--no-virt-m nat wlan0 eth0 orangepi orangepi -g 192.168.2.1
|
||||
|
||||
# 创建5G频段,默认为2.4G频段
|
||||
sudo create_ap--no-virt-m nat wlan0 eth0 orangepi orangepi --freq-band 5
|
||||
|
||||
# 隐藏热点SSID
|
||||
sudo create_ap--no-virt-m nat wlan0 eth0 orangepi orangepi --hidden
|
||||
```
|
||||
### 创建 bridge模式热点
|
||||
```sh
|
||||
# 以bridge模式创建名称为orangepi、密码为orangepi的WIFI 热点
|
||||
sudo create_ap--no-virt-m bridge wlan0 eth0 orangepi orangepi
|
||||
|
||||
```
|
||||
|
||||
## 查看温度
|
||||
```sh
|
||||
# 查看系统温度
|
||||
sensors
|
||||
|
||||
# 查看nvme固态温度
|
||||
sudo smartctl -a /dev/nvme0n1 |grep "Temperature:"
|
||||
```
|
||||
## 40pin接口说明
|
||||
```sh
|
||||
# 查看所有接口信息
|
||||
gpio readall
|
||||
```
|
||||
|
||||
### GPIO接口
|
||||
- 40pin中有28个gpio接口,电压为3.3v
|
||||
- 以下命令均在root账号下执行
|
||||
```
|
||||
#### 手动设置gpio接口模式
|
||||
```sh
|
||||
gpio mode 2 out # 2为gpio引脚的wpi序号,out为输出
|
||||
gpio mode 2 in # 2为gpio引脚的wpi序号,in为输入
|
||||
```
|
||||
#### 设置gpio引脚高低电平
|
||||
```sh
|
||||
gpio write 2 0 #设置wpi序号为2的gpio引脚为低电平
|
||||
gpio write 2 1 #设置wpi序号为2的gpio引脚为高电平
|
||||
|
||||
# 测试gpio接口高低电平
|
||||
blink_all_gpio #会不停切换所有gpio引脚高低电平
|
||||
```
|
||||
#### 设置gpio接口上下拉电阻
|
||||
- 3,5,27,28号引脚无法设置下拉电阻
|
||||
```sh
|
||||
gpio mode 5 in #首先设置wpi序号5的接口为输入模式
|
||||
gpio mode 5 up #设置上拉电阻
|
||||
gpio read 5 # 读取电平为1说明设置上拉成功
|
||||
gpio mode 5 down #设置下拉电阻
|
||||
gpio read 5 # 读取电平为0说明设置下拉成功
|
||||
```
|
||||
### PWM模式
|
||||
- 3B只有2路pwm接口在针脚7和32
|
||||
- #占空比公式 PWM占空比 = CCR/ARR
|
||||
```
|
||||
CCR的取值范围是0~65535,默认值是500。
|
||||
ARR的取值范围是0~65535,默认值是1000。
|
||||
需要注意的是,我们CCR值需要小于ARR值,因为占空比不能大于1。 当设置CCR>ARR时,会提示如下错误信息: gpio: CCR should be less than or equal toARR (XXX) 当设置ARR
|
||||
```
|
||||
- #pwm频率公式 PWM频率 = 时钟来源频率 /(分频系数 *ARR)
|
||||
```
|
||||
时钟来源频率的默认值是24000000Hz。
|
||||
分频系数的取值范围是2~512,默认值是120。
|
||||
ARR的取值范围是0~65535,默认值是1000。
|
||||
PWM频率的默认值是24000000/(120*1000)=200Hz。
|
||||
需要注意的是,如果设置分频系数为奇数,实际的分频系数为设置值减一。
|
||||
```
|
||||
#### 开启pwm接口
|
||||
```sh
|
||||
sudo orangepi-config
|
||||
# 在图形界面选择System -> Hardware 使用空格打开接口配置,save后重启
|
||||
```
|
||||
#### 通过wiringOP调整pwm参数
|
||||
|
||||
```sh
|
||||
# 设置wpi序号为2,针脚为7的接口为pwm
|
||||
gpio mode 2 pwm
|
||||
|
||||
# 设置wpi序号2的ARR为960
|
||||
gpio pwmr 2 960
|
||||
|
||||
# 设置wpi序号2的CRR为480
|
||||
gpio pwm 2 480
|
||||
|
||||
# 设置wpi序号2的分频系数为4
|
||||
gpio pwmc 2 4
|
||||
```
|
||||
#### 直接设置pwm频率
|
||||
```sh
|
||||
# 设置wpi序号为2的引脚频率为500Hz
|
||||
gpio pwmTone 2 500
|
||||
#在设置PWM频率时,需要保证: 设置的频率值 <24000000/(分频系数 *2)。 比如,默认的分频系数为120,在没有修改分频系数的情况下,设置的频率值 应小于100000Hz。
|
||||
#如果设置值过大,会出现如下报错: gpio: The PWMfrequency you set is too high to be possible
|
||||
```
|
||||
opi3b.uavv.cn 的id,1914160092371976192
|
||||
38
软件or平台使用/ELK笔记.md
Normal file
38
软件or平台使用/ELK笔记.md
Normal file
@@ -0,0 +1,38 @@
|
||||
elastic
|
||||
+IfGiU_tAw=pXHt1RnES
|
||||
|
||||
kibana_system
|
||||
A-PajW36E9tJjDnKOdUm
|
||||
|
||||
HTTP CA certificate SHA-256 fingerprint:
|
||||
c4a63732232b28cdb46435b94d412cc172d5323baf297d323c20d8c837c059dc
|
||||
|
||||
```sh
|
||||
# 启动elastic容器
|
||||
docker run --name es01 --net vlan100 -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.9.0
|
||||
# 启动kibana容器
|
||||
docker run --name kib01 --net vlan100 -p 5601:5601 docker.elastic.co/kibana/kibana:8.9.0
|
||||
|
||||
docker run -h filebeat --name=filebeat --network vlan100 -v /data/docker_data/filebeat:/var/data docker.elastic.co/beats/filebeat:8.9.0 setup -E setup.kibana.host=172.18.0.7:5601 -E output.elasticsearch.hosts=["172.18.0.8:9200"]
|
||||
|
||||
# 生成kibana验证码
|
||||
docker exec -it kib01 /usr/share/kibana/bin/kibana-verification-code
|
||||
|
||||
# 重置es用户密码
|
||||
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password --username kibana_system
|
||||
|
||||
# 重新生成elastic注册秘钥
|
||||
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
|
||||
# 加入elastic集群
|
||||
docker run -e ENROLLMENT_TOKEN="<token>" --name es02 --net elastic -it docker.elastic.co/elasticsearch/elasticsearch:8.9.0
|
||||
|
||||
# 重新生成kibana注册秘钥
|
||||
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
|
||||
```
|
||||
## elastc容器启动失败
|
||||
```sh
|
||||
# 设置虚拟内存,临时生效
|
||||
sysctl -w vm.max_map_count=262144
|
||||
# 永久生效在/etc/sysctl.conf添加
|
||||
vm.max_map_count=262144
|
||||
```
|
||||
205
软件or平台使用/K8S笔记.md
Normal file
205
软件or平台使用/K8S笔记.md
Normal file
@@ -0,0 +1,205 @@
|
||||
crio运行时套接字` unix:///var/run/crio/crio.sock`
|
||||
kubeadm:用来初始化集群的指令。
|
||||
kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
|
||||
kubectl:用来与集群通信的命令行工具。
|
||||
## 基础要求
|
||||
```sh
|
||||
|
||||
## centos系列
|
||||
# 关闭防火墙和开机自起
|
||||
systemctl disable --now firewalld
|
||||
# 关闭selinux
|
||||
setenforce 0
|
||||
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
|
||||
|
||||
# ubuntu系列
|
||||
systemctl disable --now ufw
|
||||
|
||||
# 关闭交换内存
|
||||
swapoff -a && sed -i "$(grep swap -n /etc/fstab |awk -F: '{print $1}')c $(grep swap /etc/fstab | sed 's/^/#/')" /etc/fstab
|
||||
|
||||
# 转发ipv4流量
|
||||
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
|
||||
overlay
|
||||
br_netfilter
|
||||
EOF
|
||||
|
||||
sudo modprobe overlay
|
||||
sudo modprobe br_netfilter
|
||||
|
||||
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
|
||||
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
|
||||
net.bridge.bridge-nf-call-iptables = 1
|
||||
net.bridge.bridge-nf-call-ip6tables = 1
|
||||
net.ipv4.ip_forward = 1
|
||||
vm.swappiness = 0
|
||||
EOF
|
||||
|
||||
# 应用 sysctl 参数而不重新启动
|
||||
sudo sysctl --system
|
||||
# 检查模块是否加载
|
||||
lsmod | grep br_netfilter
|
||||
lsmod | grep overlay
|
||||
|
||||
# 检查流量转发是否设为1
|
||||
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
|
||||
```
|
||||
|
||||
|
||||
## 导入阿里云k8s仓库
|
||||
```sh
|
||||
# centos系
|
||||
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
|
||||
[kubernetes]
|
||||
name=Kubernetes
|
||||
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
|
||||
EOF
|
||||
setenforce 0
|
||||
yum install -y kubeadm-1.24.0-0 kubelet-1.24.0-0 kubectl-1.24.0-0
|
||||
systemctl enable kubelet && systemctl start kubelet
|
||||
```
|
||||
```sh
|
||||
# ubunut系
|
||||
apt-get update && apt-get install -y apt-transport-https
|
||||
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
|
||||
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
|
||||
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
|
||||
EOF
|
||||
apt-get update
|
||||
apt-get install -y kubeadm-1.24.0-0 kubelet-1.24.0-0 kubectl-1.24.0-0
|
||||
systemctl enable --now kubelet
|
||||
```
|
||||
## docker镜像加速
|
||||
```sh
|
||||
sudo mkdir -p /etc/docker
|
||||
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://8jl29epx.mirror.aliyuncs.com"] } EOF
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
## 安装kubectl
|
||||
```sh
|
||||
# 下载指定版本的kubectl程序
|
||||
curl -LO https://dl.k8s.io/release/v1.24.0/bin/linux/amd64/kubectl
|
||||
curl -LO https://dl.k8s.io/release/v1.24.0/bin/linux/amd64/kubectl.sha256
|
||||
# 校验256值
|
||||
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
|
||||
# 安装kubectl到系统
|
||||
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
|
||||
```
|
||||
|
||||
安装容器运行时
|
||||
```sh
|
||||
# centos系统安装
|
||||
export OS=CentOS_7
|
||||
export VERSION=1.24
|
||||
curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/devel:kubic:libcontainers:stable.repo
|
||||
curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo
|
||||
yum install cri-o containernetworking-plugins
|
||||
|
||||
# ubuntu系统安装
|
||||
export OS=xUbuntu_20.04
|
||||
export VERSION=1.24
|
||||
echo "deb [signed-by=/usr/share/keyrings/libcontainers-archive-keyring.gpg] https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
|
||||
echo "deb [signed-by=/usr/share/keyrings/libcontainers-crio-archive-keyring.gpg] https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
|
||||
|
||||
mkdir -p /usr/share/keyrings
|
||||
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | gpg --dearmor -o /usr/share/keyrings/libcontainers-archive-keyring.gpg
|
||||
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/Release.key | gpg --dearmor -o /usr/share/keyrings/libcontainers-crio-archive-keyring.gpg
|
||||
|
||||
apt-get update
|
||||
apt-get install cri-o cri-o-runc
|
||||
systemctl enable --now crio
|
||||
```
|
||||
|
||||
- 安装cni
|
||||
```sh
|
||||
git clone https://github.com/containernetworking/plugins
|
||||
cd plugins
|
||||
git checkout v1.1.1
|
||||
wget https://golang.google.cn/dl/go1.18.10.linux-amd64.tar.gz
|
||||
tar -C /usr/local -xzf go1.18.10.linux-amd64.tar.gz
|
||||
echo "export PATH=${PATH}:/usr/local/go/bin" >> /etc/profile
|
||||
source /etc/profile
|
||||
./build_linux.sh
|
||||
sudo mkdir -p /opt/cni/bin
|
||||
sudo cp bin/* /opt/cni/bin/
|
||||
```
|
||||
|
||||
### 网络配置文件
|
||||
- 10-crio-bridge.conflist文件内容
|
||||
```yaml
|
||||
{
|
||||
"cniVersion": "1.0.0",
|
||||
"name": "crio",
|
||||
"plugins": [
|
||||
{
|
||||
"type": "bridge",
|
||||
"bridge": "cni0",
|
||||
"isGateway": true,
|
||||
"ipMasq": true,
|
||||
"hairpinMode": true,
|
||||
"ipam": {
|
||||
"type": "host-local",
|
||||
"routes": [
|
||||
{ "dst": "0.0.0.0/0" },
|
||||
{ "dst": "::/0" }
|
||||
],
|
||||
"ranges": [
|
||||
[{ "subnet": "192.168.2.0/24" }],
|
||||
[{ "subnet": "1100:200::/24" }]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
> `sudo cp 10-crio-bridge.conflist /etc/cni/net.d`
|
||||
|
||||
|
||||
|
||||
## 安装阿里k8s组件
|
||||
```sh
|
||||
for i in `kubeadm config images list`; do
|
||||
imageName=`echo ${i} |awk -F '/' '{print $2}'`
|
||||
docker pull registry.aliyuncs.com/google_containers/$imageName
|
||||
docker tag registry.aliyuncs.com/google_containers/$imageName registry.k8s.io/$imageName
|
||||
docker rmi registry.aliyuncs.com/google_containers/$imageName
|
||||
done;
|
||||
```
|
||||
|
||||
## 导出配置文件
|
||||
```sh
|
||||
kubeadm config print init-defaults > kubeadm-config.yaml
|
||||
cat <<EOF > /etc/kubernetes/kubelet-config.yaml
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
address: "192.168.225.138"
|
||||
port: 20250
|
||||
serializeImagePulls: false
|
||||
evictionHard:
|
||||
memory.available: "200Mi"
|
||||
cgroupDriver: systemd
|
||||
EOF
|
||||
```
|
||||
```sh
|
||||
# 下载kube镜像
|
||||
kubeadm config images pull
|
||||
|
||||
# 初始化集群
|
||||
sudo kubeadm init \
|
||||
--pod-network-cidr=10.244.0.0/16 \ # 指定cidr网络
|
||||
--cri-socket=unix:///var/run/crio/crio.sock \ #指定运行时
|
||||
--image-repository registry.aliyuncs.com/google_containers \ # 指定组建镜像仓库
|
||||
--kubernetes-version=v1.24.0 \ # 指定k8s版本
|
||||
--ignore-preflight-errors=all \ # 忽略所有警告
|
||||
--apiserver-advertise-address=192.168.10.253 \ # 指定控制平面api server地址192.168.0.0/12
|
||||
# 创建集群,指定containerd为运行时
|
||||
sudo kubeadm init --pod-network-cidr=17.72.0.0/24 --cri-socket=unix:///var/run/containerd/containerd.sock
|
||||
|
||||
# 使用docker引擎
|
||||
--cri-socket=/var/run/dockershim.sock
|
||||
```
|
||||
188
软件or平台使用/PXE引导.md
Normal file
188
软件or平台使用/PXE引导.md
Normal file
@@ -0,0 +1,188 @@
|
||||
|
||||
```sh
|
||||
# 设置变量
|
||||
alias cp='cp'
|
||||
centos7_iso='https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/'
|
||||
ubuntu_iso'https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.2-live-server-amd64.iso'
|
||||
dhip=$(ip addr |grep inet -w|awk -F' ' '{print $2}'|sed -n '2p' |awk -F'/' '{print $1}')
|
||||
dhipNet=$(echo ${dhip:0:-$(expr length `echo $dhip |cut -d '.' -f4`)})
|
||||
dhipStart=${dhipNet}100
|
||||
dhipEnd=${dhipNet}200
|
||||
|
||||
# 关闭selinux
|
||||
echo '- 关闭selinux'
|
||||
setenforce 0
|
||||
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
|
||||
# 关闭防火墙
|
||||
echo '- 关闭防火墙'
|
||||
systemctl stop firewalld
|
||||
# 安装软件
|
||||
echo -e '开始安装tftp/xinetd/vsftpd/syslinux...\n'
|
||||
yum install tftp-server xinetd vsftpd syslinux-4.05 dhcp-4.2.5 -y > /dev/null
|
||||
|
||||
if [ ! -e /var/ftp/centos7 ]
|
||||
then
|
||||
mkdir -p /var/ftp/centos7
|
||||
elif [ ! -e /mnt/centos7 ]
|
||||
then
|
||||
mkdir -p /mnt/centos7
|
||||
fi
|
||||
mount -o loop /dev/sr0 /mnt/centos7
|
||||
if [[ $? -eq 0 || -s /mnt/centos7/isolinux ]]
|
||||
then
|
||||
echo '拷贝镜像文件到ftp目录下'
|
||||
cp -rf /mnt/centos7/* /var/ftp/centos7/
|
||||
else
|
||||
echo -e '未挂载iso文件,将使用华为镜像站镜像!\n'
|
||||
# 在华为镜像站下载启动文件,也可以用本地iso镜像里的文件,拷贝到/var/lib/tftpboot目录即可
|
||||
echo '开始下载初始化文件'
|
||||
wget -P /var/lib/tftpboot/ --no-check-certificate ${centos7_iso}images/pxeboot/initrd.img
|
||||
echo '开始下载内核文件'
|
||||
wget -P /var/lib/tftpboot/ --no-check-certificate ${centos7_iso}images/pxeboot/vmlinuz
|
||||
|
||||
fi
|
||||
sed -i 's/yes/no/g' /etc/xinetd.d/tftp
|
||||
# grep -v "^#" /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example |grep -v "^$"| grep -v "opt*" |head -n5
|
||||
|
||||
# 配置dhcp
|
||||
cat > /etc/dhcp/dhcpd.conf << EOF
|
||||
log-facility local7;
|
||||
ignore client-updates;
|
||||
# 创建地址池
|
||||
subnet ${dhipNet}0 netmask 255.255.255.0{
|
||||
range ${dhipStart} ${dhipEnd}; #地址池
|
||||
option routers ${dhip}; # 网关地址
|
||||
ddns-update-style none; # 禁止ddns动态更新
|
||||
next-server ${dhip}; # 服务器地址
|
||||
filename "pxelinux.0"; # 指定pxe引导文件
|
||||
default-lease-time 600;
|
||||
max-lease-time 7200;
|
||||
}
|
||||
EOF
|
||||
# 拷贝引导程序
|
||||
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
|
||||
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
|
||||
|
||||
# 配置引导文件
|
||||
cat > /var/lib/tftpboot/pxelinux.cfg/default << EOF
|
||||
#UI menu.c32
|
||||
default centos7 local
|
||||
prompt 1
|
||||
timeout 5
|
||||
label centos7 local
|
||||
kernel vmlinuz
|
||||
append initrd=initrd.img method=ftp://${dhip}/centos7
|
||||
label centos7 net
|
||||
kernel vmlinuz
|
||||
append initrd=initrd.img method=${centos7_iso} # ks=ftp
|
||||
EOF
|
||||
# 设置开机自启,并重新启动
|
||||
systemctl enable --now tftp vsftpd dhcpd xinetd
|
||||
systemctl restart tftp vsftpd dhcpd xinetd
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo 'pxe引导服务搭建成功!'
|
||||
fi
|
||||
```
|
||||
|
||||
## 无人值守引导配置
|
||||
```sh
|
||||
#platform=x86, AMD64, 或 Intel EM64T
|
||||
#version=DEVEL
|
||||
# Install OS instead of upgrade
|
||||
install
|
||||
# Keyboard layouts
|
||||
keyboard 'us'
|
||||
# Root password
|
||||
rootpw --iscrypted $1$RrxYwvA3$RQQcS4Mas0Ef.TqS0Ptot/
|
||||
# System language
|
||||
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8
|
||||
# System authorization information
|
||||
auth --useshadow --passalgo=sha512
|
||||
# Use text mode install
|
||||
text
|
||||
# SELinux configuration
|
||||
selinux --disabled
|
||||
# Do not configure the X Window System
|
||||
skipx
|
||||
|
||||
|
||||
# Firewall configuration
|
||||
firewall --disabled
|
||||
# Network information
|
||||
network --bootproto=dhcp --device=eth0
|
||||
# Reboot after installation
|
||||
reboot
|
||||
# System timezone
|
||||
timezone Asia/Shanghai
|
||||
# Use network installation
|
||||
url --url="http://https://repo.huaweicloud.com/centos/7.9.2009/os/x86_64/"
|
||||
# url --url=ftp://<user>:<password>@<server>/<path>
|
||||
|
||||
#platform=x86, AMD64, 或 Intel EM64T
|
||||
#version=DEVEL
|
||||
# Install OS instead of upgrade
|
||||
install
|
||||
# Keyboard layouts
|
||||
keyboard 'us'
|
||||
# Root password
|
||||
rootpw --iscrypted $1$RrxYwvA3$RQQcS4Mas0Ef.TqS0Ptot/
|
||||
# System language
|
||||
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8
|
||||
# System authorization information
|
||||
auth --useshadow --passalgo=sha512
|
||||
# Use text mode install
|
||||
text
|
||||
# SELinux configuration
|
||||
selinux --disabled
|
||||
# Do not configure the X Window System
|
||||
skipx
|
||||
|
||||
|
||||
# Firewall configuration
|
||||
firewall --disabled
|
||||
# Network information
|
||||
network --bootproto=dhcp --device=eth0
|
||||
# Reboot after installation
|
||||
reboot
|
||||
# System timezone
|
||||
timezone Asia/Shanghai
|
||||
# Use network installation
|
||||
#url="http://https://repo.huaweicloud.com/centos/7.9.2009/os/x86_64/"
|
||||
url --url=ftp://192.168.225.133/centos7
|
||||
|
||||
# System bootloader configuration
|
||||
bootloader --location=mbr
|
||||
# Clear the Master Boot Record
|
||||
zerombr
|
||||
# Partition clearing information
|
||||
ignoredisk --only-use=sda
|
||||
clearpart --all --initlabel
|
||||
# Disk partitioning information
|
||||
part /boot --fstype="xfs" --asprimary --size=2048
|
||||
part / --fstype="xfs" --grow --asprimary --size=1
|
||||
|
||||
services --enabled="sshd,network"
|
||||
|
||||
# 安装软件包
|
||||
%packages
|
||||
network-tools
|
||||
openssh
|
||||
openssl-devel
|
||||
wget
|
||||
|
||||
%end
|
||||
|
||||
# 系统安装前运行程序
|
||||
%pre --interpreter=/bin/bash
|
||||
echo 'centos7 install'
|
||||
%end
|
||||
|
||||
# 系统安装后运行程序
|
||||
%post --interpreter=/bin/bash
|
||||
|
||||
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-
|
||||
reg.repo
|
||||
%end
|
||||
|
||||
```
|
||||
299
软件or平台使用/ensp配置.md
Normal file
299
软件or平台使用/ensp配置.md
Normal file
@@ -0,0 +1,299 @@
|
||||
### 用户模式命令
|
||||
|
||||
***
|
||||
|
||||
clock timezone 时区名字 add 当地时区时间 #设置系统时区
|
||||
|
||||
clock datatime 08:00:00 2021-04-19 #设置系统时间
|
||||
|
||||
reset saved-configuration #清空配置文件
|
||||
|
||||
display current-configuration #显示系统配置
|
||||
|
||||
startup system-software 文件名 #使用新的vrp系统文件启动
|
||||
|
||||
BOOTROM菜单默认密码huawei,高版本Admin@huawei
|
||||
|
||||
reset recycle-bin #清空回收站文件
|
||||
|
||||
display saved-configuration #查看保存的配置文件
|
||||
|
||||
display startup #查看下次启动使用的配置文件
|
||||
|
||||
save #保存配置
|
||||
|
||||
### 系统模式命令 "system"
|
||||
|
||||
sysname 名字 #给设备重命名
|
||||
|
||||
header shell information "内容" #设置登录内容
|
||||
|
||||
display ip routing-table #查看路由表
|
||||
|
||||
telnet server port 端口号 #设置Telnet远程端口号
|
||||
|
||||
### 接口模式命令 "interface 接口"
|
||||
|
||||
***
|
||||
|
||||
undo portswitch #将二层口切换到三层口
|
||||
### 同时配置多个端口
|
||||
int range G0/0/1 to G0/0/5
|
||||
|
||||
> 华为设备只有三层口可以直接配置IP,二层只能通过vlan,低级设备只有wan口是三层
|
||||
|
||||
undo shutdown #启用接口
|
||||
|
||||
shutdown #关闭接口
|
||||
|
||||
display this #显示接口配置
|
||||
|
||||
description 内容 #设置接口的描述信息
|
||||
|
||||
ip address IP地址 掩码 sub #环回接口下,配置子地址
|
||||
|
||||
### 用户界面模式命令 "user-interface 接口"
|
||||
|
||||
***
|
||||
|
||||
authentication-mode 验证方式 #设置登录方式为password,aaa,空
|
||||
|
||||
idle-timeout N分钟 #用户接口模式下,设置登录超时时间,0为永不超时,等同于undo idle-timeout
|
||||
|
||||
set authentication password cipher 密码 #设置登录密码
|
||||
|
||||
user privilege level 级别 #为接口设置用户级别
|
||||
|
||||
> 用户级别:0参观级;1监控级;2配置级;3-15管理级命令级别:0参观级;0、1监控级;0/1/2配置级;0/1/2/3管理级
|
||||
|
||||
### 路由协议模式命令
|
||||
|
||||
***
|
||||
|
||||
### VLAN模式命令
|
||||
批量创建vlan
|
||||
vlan batch 10 20 30
|
||||
|
||||
***
|
||||
|
||||
### 通用模式命令(在所有模式都可使用)
|
||||
|
||||
display ip interface brief #查看端口配置信息
|
||||
|
||||
### STP(生成树协议)命令
|
||||
|
||||
***
|
||||
|
||||
stp enable #开启stp协议
|
||||
|
||||
stp mode stp #切换stp协议,华为默认为mstp协议
|
||||
|
||||
stp root primary #设置主要根桥
|
||||
|
||||
stp root secondary #设置次要根桥
|
||||
|
||||
undo stp root #设置根桥
|
||||
|
||||
stp priority 数字 #设置根桥优先级,数字越小级别越高
|
||||
|
||||
undo stp priority #恢复stp缺省优先级
|
||||
|
||||
stp port priority 数字 #在接口模式下,设置端口优先级,数字越小优先级越高
|
||||
|
||||
undo stp port priority #在接口模式下,恢复端口缺省优先级
|
||||
|
||||
stp cost 数字 #在接口模式下,修改端口的开销值
|
||||
|
||||
undo stp cost #在接口模式下,恢复端口缺省开销值
|
||||
|
||||
display stp #查看根桥信息
|
||||
|
||||
display stp brief #查看stp接口信息
|
||||
|
||||
### RSTP(快速生成树协议)命令
|
||||
|
||||
***
|
||||
|
||||
stp edged-port enable #在接口模式下,配置端口为边缘端口
|
||||
|
||||
stp bpdu-protection #配置bpdu保护功能
|
||||
|
||||
stp loop-protection #在非根桥交换机的根端口和Alternate口配置环路保护功能
|
||||
|
||||
### 静态路由
|
||||
|
||||
***
|
||||
|
||||
ip route-static 目的网络 子网掩码 下一跳ip #系统模式下,配置静态路由,需双向配置
|
||||
|
||||
ip route-static 目的网络 子网掩码 下一跳ip preference 80 #系统模式下,通过降低优先级,配置备份静态路由,缺省优先级为60
|
||||
|
||||
undo ip route-static 目的网络 子网掩码 下一跳ip preference 80 #系统模式下,删除此静态路由
|
||||
|
||||
ip route-static 0.0.0.0 0 下一跳ip preference 80 #配置备份缺省路由,双向配置
|
||||
|
||||
### RIP(距离矢量型路由协议)
|
||||
|
||||
***
|
||||
|
||||
interface LoopBack 数字 #系统模式下,进入虚拟环回接口,需要配置IP
|
||||
|
||||
ip address ip地址 掩码 sub #在环回接口下,配置子环回地址
|
||||
|
||||
rip 进程号 #系统模式下,进入rip协议,进程号默认为1,删除rip进程,在命令前加undo
|
||||
|
||||
version 2 #在rip协议下,使用RIP协议版本2
|
||||
|
||||
rip summary-address 网络地址 子网掩码 #在接口模式下,配置路由汇总,减小路由表
|
||||
|
||||
undo summary #接口模式下,取消RIP协议自动汇总
|
||||
|
||||
network 直连网络 #rip协议模式下,通告本路由的直连网络,输入网络地址,如:10.0.0.0
|
||||
|
||||
reset ip routing-table statistics protocol rip #清除错误的RIP路由信息
|
||||
|
||||
display ip routing-table protocol rip #查看RIP协议的路由表
|
||||
|
||||
silent-interface 端口 #在rip协议下,使端口进入沉默模式,只接受其他路由发送的通告,不向其他路由发送通告,解除方式在命令前加undo
|
||||
|
||||
rip authentication-mode simple 密码 #在接口模式下,配置rip明文认证,相连的两个接口要设置同一认证方式
|
||||
|
||||
rip authentication-mode md5 usual 密码 #在接口模式下,配置rip的MD5认证
|
||||
|
||||
undo rip authentication-mode #删除rip认证配置
|
||||
|
||||
rip version 1 #接口模式下,对使用rip2协议的路由同时兼容rip1协议
|
||||
|
||||
debugging rip 1 #用户模式下,开启RIP调试功能
|
||||
|
||||
> display debugging #用户模式下,显示当前调试信息terminal debugging #用户模式下,将debug信息在终端显示undo debugging rip 进程号 #用户模式下,关闭debug调试,undo debugging all #关闭调试功能debugging rip 1 event #用户模式下,查看路由器发出和收到的定期更新事件"过多开起debug命令,会大量占用路由器资源,甚至导致宕机"
|
||||
|
||||
### OSPF(开放式最短路径优先协议"ospf属于链路状态型路由协议")
|
||||
|
||||
***
|
||||
|
||||
ospf 进程号 router-id 路由器ID(环回地址) #系统模式下,进入ospf配置模式,进程号默认为1,进程号只有本地意义.
|
||||
|
||||
area 区域号(数字) #ospf协议模式下.进入区域配置视图
|
||||
|
||||
network 10.1.1.1 反掩码 #区域配置模式下,通告设备接口的网络,反掩码将正掩码取反(255.255.255.0的反掩码就是0.0.0.255),取消单个通告在命令前加undo
|
||||
|
||||
authentication-mode md5 1 cipher 密码 #区域配置模式下,设置ospf协议的md5认证
|
||||
|
||||
display ip routing-table protocol ospf #查看ospf协议的路由表
|
||||
|
||||
display ospf brief #查看ospf配置的具体信息
|
||||
|
||||
display ospf peer brief #查看ospf的邻居关系
|
||||
|
||||
display ospf lsdb #查看LSA信息的链路状态数据库
|
||||
|
||||
display ospf interface 端口 #查看ospf的hello和dead时间
|
||||
|
||||
ospf cost 数字 #接口模式下,调整接口的开销值
|
||||
|
||||
bandwidth-reference 数字 #ospf协议模式下,修改带宽值(可以影响开销值),数字为10的整数倍,所有路由都要配置相同带宽值
|
||||
|
||||
silent-interface 接口 #在路由协议模式下,配置被动接口,既不接受路由信息,也不发送路由信息,通常配置在连接终端设备的接口
|
||||
|
||||
ospf timer hello 数字 #接口模式下,调整hello的值,调整hello和dead的值可以影响ospf路由建立邻居关系
|
||||
|
||||
ospf timer dead 数字 #接口模式下,调整dead的值
|
||||
|
||||
preference 数字 #ospf协议下,修改ospf路由优先级
|
||||
|
||||
preference ase 数字 #ospf协议下,修改ospf外部导入路由优先级
|
||||
|
||||
ospf dr-priority 数字 #接口模式下,修改路由的DR值,改变路由的优先级,默认情况下DR/BDR通过非抢占式选举,修改后需要重置ospf的邻居关系才会生效,例如:关闭某个端口,在打开.
|
||||
|
||||
import-route 路由类型 #ospf协议模式下,导入外部路由,direct为直连路由
|
||||
|
||||
ospf enable 进程号 area 区域号 #接口模式下,将接口地址宣告到对应的区域
|
||||
|
||||
> 多区域ospf配置OSPF虚链路配置
|
||||
|
||||
abr-summary 路由汇总后地址 汇总后掩码 #ospf区域模式下,配置路由汇总,适用于边界路由
|
||||
|
||||
asbr-summary 路由汇总后地址 汇总后掩码 #ospf协议模式下,配置路由汇总,适用于自治 边界路由
|
||||
|
||||
default-route-advertise always #ospf协议下,配置默认路由
|
||||
|
||||
ospf配置缺省路由并发布
|
||||
|
||||
> ip route-static 0.0.0.0 0.0.0.0 LoopBack 1 #系统模式下,配置缺省路由default-route-advertise #在ospf协议下,发布缺省路由到ospf域
|
||||
|
||||
### DHCP服务配置
|
||||
|
||||
***
|
||||
|
||||
dhcp enable #系统模式下,开启DHCP服务
|
||||
|
||||
ip pool name #系统模式下,创建名为name的地址池,并进入dhcp配置模式
|
||||
|
||||
network IP起始范围 mask 24 #dhcp模式下,设置地址池及子网掩码
|
||||
|
||||
gateway-list 网关IP #dhcp模式下,配置网关地址
|
||||
|
||||
excluded-ip-address 起始地址 终止地址 #DHCP模式下,设置不分配的IP
|
||||
|
||||
lease day 0 hour 8 #dhcp模式下,设置dhcp租期为0天8小时
|
||||
|
||||
dhcp select global #接口模式下,设置dhcp为全局范围,interface为接口,relay为中继
|
||||
|
||||
dhcp select interface #接口模式下,开启接口的dhcp功能
|
||||
|
||||
display ip pool name 地址池名称 #查看地址池的参数
|
||||
|
||||
> 交换机DHCP配置dhcp enable #系统模式下,启用dhcp功能interface Vlanif 1 #系统模式下,进入缺省管理端口ip address dhcp-alloc #缺省管理接口下,向dhcp服务器申请IP地址display ip interface brief #查看接口信息
|
||||
|
||||
### 3A认证用户创建及配置
|
||||
|
||||
***
|
||||
|
||||
aaa #系统模式,进入3A认证
|
||||
|
||||
local-user 用户名 password cipher 密码 #3A模式下,创建本地用户名和密码
|
||||
|
||||
local-user 用户名 service-type ftp #3A模式下,设置用户为ftp用户,或ssh用户
|
||||
|
||||
local-user 用户名 privilege level 级别(1-15) #3A模式想,设置用户级别
|
||||
|
||||
local-user 用户名 ftp-directory 目录 #3A模式下,设置用户目录
|
||||
|
||||
local-user 用户名 idle-timeout 时间 #3A模式下,设置ftp终端登录超时时间
|
||||
|
||||
### FTP服务配置
|
||||
|
||||
***
|
||||
|
||||
ftp server enable #系统模式下,启动ftp功能
|
||||
|
||||
set default ftp-directory 目录 #系统模式下,设置ftp服务目录
|
||||
|
||||
display ftp-server #显示ftp服务器信息
|
||||
|
||||
binary #ftp客户端下,配置文件传输模式
|
||||
|
||||
创建用户参考3A创建用户
|
||||
|
||||
get 文件名 #客户端下,从服务器下载文件,可一次输入多个文件名用空格隔开
|
||||
|
||||
put 文件名 #客户端下,上传文件到服务器
|
||||
|
||||
bye #ftp客户端下,关闭ftp连接
|
||||
|
||||
### SSH配置
|
||||
|
||||
***
|
||||
|
||||
rsa local-key-pair create #系统模式下,创建秘钥,选择秘钥长度
|
||||
|
||||
stelnet server enable #系统模式下,启动SSH服务器
|
||||
|
||||
user-interface vty 0 #系统模式下,进入vty接口
|
||||
|
||||
authentication-mode aaa #vty接口下,指定认证方式为3A
|
||||
|
||||
protocol inbound ssh #vty接口下,指明入站协议为ssh
|
||||
|
||||
ssh user 用户名 authentication-type password #将ssh协议与用户和密码关联起来,创建用户参考3A创建用户
|
||||
192
软件or平台使用/华三设备配置.md
Normal file
192
软件or平台使用/华三设备配置.md
Normal file
@@ -0,0 +1,192 @@
|
||||
# 端口及配置文件说明
|
||||
```
|
||||
# 交换机端口
|
||||
tg1/0/49 10G端口
|
||||
fg1/0/53 40G端口
|
||||
mg1/0/0 10-1000M自适应管理端口
|
||||
|
||||
#路由器端口
|
||||
g0/0/1
|
||||
|
||||
#查看接口信息
|
||||
[H3C]dis interface Vlan-interface 1 brief
|
||||
[H3C]dis interface g1/0/1 brief
|
||||
|
||||
#查看当前生效配置
|
||||
<H3C> display current-configuration
|
||||
#查看下次启动使用的配置文件
|
||||
<H3C> display saved-configuration
|
||||
#查看最近配置变化
|
||||
<H3C> display configuration changes
|
||||
# 查看系统时间
|
||||
<H3C> display clock
|
||||
```
|
||||
# 远程超时时间配置
|
||||
```
|
||||
#设置cli或vty连接超时时间600分钟
|
||||
<H3C>sys
|
||||
[H3C]user-interface vty 0 4
|
||||
[H3C-line-vty0-4]idle-timeout 600
|
||||
[H3C-line-vty0-4]quit
|
||||
|
||||
#设置ssh和telnet超时时间600分钟
|
||||
<H3C>sys
|
||||
[H3C]user-interface vty 0 4
|
||||
[H3C-line-vty0-4]protocol inbound telnet
|
||||
[H3C-line-vty0-4]idle-timeout 600
|
||||
[H3C-line-vty0-4]protocol inbound ssh
|
||||
[H3C-line-vty0-4]idle-timeout 600
|
||||
[H3C-line-vty0-4]quit
|
||||
|
||||
#设置console接口超时时间600分钟
|
||||
<H3C>sys
|
||||
[H3C]user-interface console 0
|
||||
[H3C-line-console0]idle-timeout 600
|
||||
[H3C-line-console0]quit
|
||||
|
||||
```
|
||||
# 堆叠交换机
|
||||
```
|
||||
sys
|
||||
int range FortyGigE 1/0/53 to FortyGigE 1/0/54 #进入堆叠端口
|
||||
shutdown #关闭端口
|
||||
irf member 1 priority 32 #配置优先级
|
||||
irf-port 1/1 #配置irf端口
|
||||
irf-port-configuration active #激活irf端口配置
|
||||
irf-port 1/1 #配置irf端口
|
||||
port group interface FortyGigE 1/0/53
|
||||
port group interface FortyGigE 1/0/54
|
||||
quit
|
||||
|
||||
dis irf #显示irf相关信息
|
||||
dis irf link #显示irf链路信息
|
||||
dis irf conf #显示irf重启后生效的irf配置
|
||||
```
|
||||
# 端口聚合
|
||||
```
|
||||
sys
|
||||
[H3C]int bridge-agg 1
|
||||
link-aggregation mode dynamic # 切换为动态速率模式
|
||||
quit
|
||||
int range g1/0/1 to g1/0/4
|
||||
port link-aggregation group 1 将端口加入聚合组
|
||||
|
||||
display link-aggregation verbose # 查看端口聚合信息
|
||||
```
|
||||
# 二三层口切换
|
||||
```
|
||||
sys
|
||||
[H3C]int GigabitEthernet1/0/48
|
||||
[H3C-GigabitEthernet1/0/48]port link-mode { bridge | route } #bridge是二层,route是三层
|
||||
```
|
||||
# vlan配置
|
||||
```
|
||||
[H3C]vlan 253 #创建vlan253
|
||||
[H3C-vlan253]port GigabitEthernet 1/0/48 #在vlan模式下将端口加入vlan253
|
||||
[H3C-GigabitEthernet1/0/48]port access vlan 253 #在接口模式下将端口加入vlan
|
||||
[H3C-GigabitEthernet1/0/48]port link-type trunk #配置接口为trunk类型
|
||||
[H3C-GigabitEthernet1/0/48]port trunk permit vlan all #允许所有vlan通过
|
||||
[H3C-GigabitEthernet1/0/48]port trunk permit vlan 10 20 #允许指定vlan通过
|
||||
|
||||
[H3C]dis interface Vlan-interface brief #查看所有vlanif接口配置
|
||||
[H3C]dis vlan #显示所有打开的vlan
|
||||
|
||||
```
|
||||
# dhcp服务
|
||||
```
|
||||
[H3C]dhcp enable
|
||||
[H3C]dhcp server ip-pool manage #创建名为mange的ip地址池
|
||||
[H3C-dhcp-pool-manage]network 10.0.1.0 24 #设置地址池
|
||||
[H3C-dhcp-pool-manage]forbidden-ip 10.0.1.1 10.0.1.254 #设置保留ip
|
||||
[H3C-dhcp-pool-manage]gateway-list 10.0.1.254 #分配dhcp网关
|
||||
[H3C-dhcp-pool-manage]dns-list 223.5.5.5 #分配dns地址
|
||||
[H3C-dhcp-pool-manage]quit
|
||||
[H3C]int vlan 1 #进入对应的vlanif接口
|
||||
[H3C-Vlan-interface1]ip address 10.0.1.254 24 #设置ip地址
|
||||
|
||||
# 配置dhcp中继,只能在vlanif接口下配置
|
||||
[H3C]int vlan 1 #进入vlan1
|
||||
[H3C-Vlan-interface1]dhcp select relay
|
||||
[H3C-Vlan-interface1]ip address 10.0.1.1 24 #设置ip地址
|
||||
|
||||
[H3C]quit
|
||||
|
||||
[H3C]display dhcp server pool ip池名字 #查看dhcp池1配置信息
|
||||
[H3C]display dhcp relay #查看dhcp中继配置
|
||||
<H3C> display dhcp server lease #查看dhcp租约
|
||||
|
||||
```
|
||||
|
||||
# stp生成树
|
||||
```
|
||||
stp模式有stp,rstp,pstp,mstp
|
||||
[H3C]stp mode mstp #配置stp模式
|
||||
|
||||
[H3C]dis stp root #显示生成树根桥信息
|
||||
|
||||
|
||||
```
|
||||
# 静态路由
|
||||
```
|
||||
<H3C>sys
|
||||
[H3C]ip route-static 目的ip 子网掩码 下一跳ip #添加一条静态路由
|
||||
[H3C]delete static-routes all #删除所有静态路由
|
||||
[H3C]undo ip route-static 目的ip #删除一条静态路由
|
||||
[H3C]ip route-static fast-reroute auto #配置静态路由快速重路由
|
||||
# 配置静态路由快速重路由支持BFD检测功能
|
||||
[H3C]bfd echo-source-ip 自定义ip #配置echo报文源ip
|
||||
[H3C]ip route-static primary-path-detect bfd echo #使能静态路由中主用链路的BFD(Echo方式)检测功能
|
||||
|
||||
[H3C]dis ip routing-table protocol static verbose #查看静态路由表信息
|
||||
[H3C]dis ip routing-table protocol direct #查看直连路由信息表
|
||||
|
||||
# window添加静态路由
|
||||
[H3C]route add -p 192.168.2.0 mask 255.255.255.0 192.168.1.1 metric 1 #-p代表永久,metric表示路由跃点数
|
||||
[H3C]route delete [目的ip] #删除静态路由
|
||||
```
|
||||
|
||||
# VRRP协议
|
||||
```
|
||||
# 三层接口创建vrrp
|
||||
[H3C]int g1/0/48 #进入三层接口
|
||||
[H3C-GigabitEthernet1/0/48]vrrp vrid 1 virtual-ip 10.10.0.1 #创建备份组1,并配置虚拟ip
|
||||
|
||||
# 二层接口通过vlanif创建vrrp
|
||||
[H3C]vlan 10 #创建vlan10
|
||||
[H3C]quit
|
||||
[H3C]int vlan 10 #进入vlanif10接口
|
||||
[H1-Vlan-interface10]vrrp vrid 1 virtual-ip 10.10.10.1 #创建备份组
|
||||
|
||||
# 其他配置
|
||||
[H1-Vlan-interface10]vrrp vrid 1 priority 150 #设置备份组优先级,值越大优先级越高
|
||||
|
||||
|
||||
```
|
||||
# OSPF协议
|
||||
```
|
||||
<hx1-1>sys
|
||||
[hx1-1]ospf 1 router-id 1.1.1.1 #打开ospf进程1,设置routerid为1.1.1.1
|
||||
[hx1-1-ospf-1]area 0 # 进入区域0
|
||||
[hx1-1-ospf-1-area-0.0.0.0]network 10.1.0.0 0.0.3.255 #添加设备下的网络,采用反掩码
|
||||
[hx1-1-ospf-1-area-0.0.0.0]authentication-mode md5 1 plain 123456 #设置ospf明文认证密码
|
||||
[hx1-1-ospf-1-area-0.0.0.0]dis ospf peer #查看ospf的邻居关系
|
||||
[hx1-1-ospf-1]preference 1 #修改路由优先级
|
||||
|
||||
|
||||
[H3C]dis ospf interface #查看ospf接口信息
|
||||
[H3C]dis ospf routing #查看ospf路由表信息
|
||||
[H3C]dis ospf peer statistics #显示本地路由器所有ospf邻居统计信息
|
||||
[H3C]undo ospf 进程号 #关闭ospf
|
||||
```
|
||||
|
||||
# 命令大全
|
||||
## ping
|
||||
```
|
||||
-c 指定ping次数
|
||||
-a 指定源IP地址
|
||||
-f 指定不分段的数据包
|
||||
-h 指定TTL值
|
||||
-i 指定传出接口
|
||||
-m 指定发送回显请求的间隔,单位:毫秒
|
||||
-n 仅数字输出。不会尝试查找主机
|
||||
```
|
||||
150
软件or平台使用/软件快捷键.md
Normal file
150
软件or平台使用/软件快捷键.md
Normal file
@@ -0,0 +1,150 @@
|
||||
## VS Code快捷命令
|
||||
|
||||
**1. 光标选取操作**
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>↑/↓</kbd>
|
||||
多光标选择
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>L</kbd>
|
||||
附加光标到当前选择的实例
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>D</kbd>
|
||||
单次增加光标选择
|
||||
|
||||
<kbd>Shift</kbd> + <kbd>Alt</kbd>
|
||||
列框选择
|
||||
|
||||
<kbd>Shift</kbd> + <kbd>Alt</kbd> + <kbd>←/→</kbd>
|
||||
缩小/扩大选择
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>U</kbd>
|
||||
减少光标选区
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>L</kbd>
|
||||
选择当前行
|
||||
|
||||
**2. 菜单快捷命令**
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>
|
||||
打开命令面板
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>P</kbd>
|
||||
快速打开文件
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>R</kbd>
|
||||
快速打开最近文件
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>👆</kbd>
|
||||
创建或打开文件
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>F4</kbd>
|
||||
关闭当前打开的文件夹
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>B</kbd>
|
||||
打开关闭边栏
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>J</kbd>
|
||||
打开控制台
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>Z</kbd>
|
||||
全屏模式(按两次Esc退出)
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Tab</kbd>
|
||||
浏览历史记录
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>Ctrl</kbd> + <kbd>T</kbd>
|
||||
修改主题
|
||||
|
||||
**3. 编辑快捷命令**
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>\</kbd>
|
||||
并排编辑
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>1/2/3</kbd>
|
||||
多窗口下切换
|
||||
|
||||
<kbd>Shift</kbd> + <kbd>Alt</kbd> + <kbd>↑/↓</kbd>
|
||||
上下文复制
|
||||
|
||||
<kbd>Alt</kbd> + <kbd>Up/Down</kbd> 或 <kbd>Alt</kbd> + <kbd>↑/↓</kbd>
|
||||
上下移动行
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>O</kbd>
|
||||
转到文件中的符号
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>T</kbd>
|
||||
转到工作区中的符号
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>Ctrl</kbd> + <kbd>X</kbd>
|
||||
删除末尾空白
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>G</kbd>
|
||||
导航到指定行
|
||||
|
||||
>transform
|
||||
|
||||
将选区文本转换为大小写或标题
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>M</kbd>
|
||||
|
||||
更改语言模式
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>M</kbd>
|
||||
|
||||
快速跳转到错误位置
|
||||
|
||||
<kbd>F8</kbd> 或 <kbd>Shift</kbd> + <kbd>F8</kbd>
|
||||
|
||||
循环检查错误
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>Ctrl</kbd> + <kbd>F</kbd>
|
||||
|
||||
代码格式化当前选区
|
||||
|
||||
<kbd>Shift</kbd> + <kbd>Alt</kbd> + <kbd>F</kbd>
|
||||
|
||||
代码格式化整个文档
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>[ ]</kbd>
|
||||
|
||||
当前代码块折叠
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>Ctrl</kbd> + <kbd>0</kbd>
|
||||
|
||||
全部折叠
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>Ctrl</kbd> + <kbd>J</kbd>
|
||||
|
||||
全部展开
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>Ctrl</kbd> + <kbd>/</kbd>
|
||||
|
||||
折叠所有注释
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Home/End</kbd>
|
||||
|
||||
导航到文件开头或结尾
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>V</kbd>
|
||||
|
||||
打开Markdown预览
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd> <kbd>V</kbd>
|
||||
|
||||
并排Markdown编辑和预览
|
||||
|
||||
<kbd>Ctrl</kbd> + <kbd>空格</kbd>
|
||||
|
||||
智能感知(触发建议小部件)窥视
|
||||
|
||||
选择一个符号 <kbd>Alt</kbd> + <kbd>F12</kbd>
|
||||
|
||||
转到定义
|
||||
|
||||
选择一个符号 <kbd>F12</kbd>
|
||||
|
||||
返回先前位置 <kbd>Alt</kbd> + <kbd>Left</kbd> 或使用命令 Go > <kbd>删除</kbd>
|
||||
|
||||
前往参考
|
||||
|
||||
选择一个符号 <kbd>Shift</kbd> + <kbd>F12</kbd>
|
||||
21
音视频处理/视频处理.md
Normal file
21
音视频处理/视频处理.md
Normal file
@@ -0,0 +1,21 @@
|
||||
## 视频压缩
|
||||
```sh
|
||||
# 以h264编码
|
||||
ffmpeg -i "input.mp4" -c:v libx264 -tag:v avc1 -movflags faststart -crf 30 -preset superfast "output.mp4"
|
||||
|
||||
# 以h265编码
|
||||
ffmpeg -i input.mp4 -c:v hevc_nvenc -cq 23 -preset slow -c:a copy output.mp4
|
||||
```
|
||||
|
||||
## 视频转码
|
||||
```sh
|
||||
ffmpeg -hwaccel nvdec -i test.mp4 -c:v h264_nvenc -preset slow -crf 23 -c:a aac test2.mp4
|
||||
|
||||
# -hwaccel nvdec使用硬件解码器nvdec(gpu解码)
|
||||
# -i test.mp4 输入文件
|
||||
# -c:v h264_nvenc 使用硬件编码器h264_nvenc或hevc_nvenc
|
||||
# -preset slow`设置编码速度与压缩率的平衡(可选值:`slow`, `medium`, `fast`等)。
|
||||
# -crf 23 控制视频质量(范围0-51,值越小质量越高)
|
||||
# -c:a aac 使用AAC音频编码器
|
||||
# test2.mp4输出文件
|
||||
```
|
||||
1
音视频处理/音频/wav.md
Normal file
1
音视频处理/音频/wav.md
Normal file
@@ -0,0 +1 @@
|
||||
**WMA音频格式的头部信息有16个字节**。这16个字节是固定的,为十六进制的“30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C”,用来标识这个是否为WMA文件
|
||||
0
音视频处理/音频/音频格式.md
Normal file
0
音视频处理/音频/音频格式.md
Normal file
Reference in New Issue
Block a user