首页
壁纸
友情
关于
统计
推荐
Search
1
通过华为交换机的辅助,增加“ikuai爱快软路由”wan的线路
1,692 阅读
2
华为S5700交换机升级记录
1,401 阅读
3
小米AC2100(红米ac2100)刷写Breed不死固件
1,067 阅读
4
酷我音乐豪华VIP版 | 电脑版
1,054 阅读
5
蓝桥杯省赛训练题1
1,031 阅读
食用技巧
食用软件
通信技术
交换机
软路由
网络技术
编程技术
Python学习
C学习
WEB学习
C++学习
Python基础
Python爬虫知识
蓝桥杯省赛训练题
前端学习
后端学习
PHP学习
Linux
华为Datacom
IPv4技术
登录
Search
标签搜索
linux
Python
酷我音乐
Docker
第一篇文章
交换机技术
Joe
华为交换机
PHP
开机自启
爬虫
正则
Ubuntu
搭建教程
csv
数据分析
IP
加密
WAF的拦截
html
Jayson
累计撰写
33
篇文章
累计收到
2
条评论
首页
栏目
食用技巧
食用软件
通信技术
交换机
软路由
网络技术
编程技术
Python学习
C学习
WEB学习
C++学习
Python基础
Python爬虫知识
蓝桥杯省赛训练题
前端学习
后端学习
PHP学习
Linux
华为Datacom
IPv4技术
页面
壁纸
友情
关于
统计
推荐
搜索到
33
篇与
的结果
2025-12-20
Docker使用笔记
Docker 使用笔记Docker 作为主流的容器化技术,其命令行操作是开发者必备技能。本文整理了 Docker 中高频且核心的命令,涵盖镜像管理、容器操作等核心场景,并附带详细说明和实战示例,帮助新手快速上手,老手高效查阅。1. 帮助命令docker version # 显示 Docker 版本信息 docker info # 显示系统级别的信息,包括镜像和容器的数量 docker COMMAND --help # 显示指定命令的帮助信息2. 镜像命令2.1 docker images:查看本地镜像列出本地存储的所有镜像:REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 7 months ago 13.3kB字段说明字段说明REPOSITORY镜像的仓库源TAG镜像的标签IMAGE ID镜像的唯一标识符CREATED镜像的创建时间SIZE镜像的大小常用参数--all, -a:列出所有镜像(包括中间层镜像)--quiet, -q:只显示镜像 ID2.2 docker search:搜索镜像从 Docker Hub 搜索镜像:docker search 镜像名称常用参数--filter=STARS=3000:只显示 Star 数大于 3000 的镜像2.3 docker pull:下载镜像从仓库拉取镜像到本地:docker pull 镜像名称[:TAG] # 默认 TAG 是 latest docker pull 源地址/镜像名称[:TAG] # 指定源地址2.4 docker rmi:删除镜像从本地删除一个或多个镜像:使用方法删除单个镜像docker rmi -f 镜像ID删除多个镜像docker rmi -f 镜像ID1 镜像ID2删除所有镜像docker rmi -f $(docker images -aq)停止所有容器docker stop $(docker ps -a -q)3. 容器命令创建容器的前提是本地已有对应的镜像。本教程以 CentOS 镜像为例演示容器相关操作。3.1 准备工作:拉取 CentOS 镜像docker pull centos3.2 docker run:创建并启动容器创建并启动新容器的基本语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用参数参数说明--name="容器名"为容器指定名称-d后台运行容器(守护态)-it交互式运行容器,通常与 /bin/bash 结合使用-p 主机端口:容器端口端口映射-P随机端口映射示例:启动并进入 CentOS 容器# 以交互模式启动 CentOS 容器 docker run -it centos /bin/bash # 在容器内执行命令 [root@容器ID /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var # 退出容器 # exit:完全退出容器,容器会停止 # Ctrl+P+Q:容器不停止,后台运行3.3 docker ps:查看容器列出容器信息:常用参数参数说明(无参数)列出正在运行的容器-a列出所有容器(包括已停止)-l显示最近创建的容器-n=N显示最近创建的 N 个容器-q静默模式,只显示容器 ID示例# 查看所有容器 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 77969f5dcbf9 centos "/bin/bash" 5 minutes ago Exited (0) 5 minutes ago xenodochial_bose 74e82b7980e7 centos "/bin/bash" 16 minutes ago Exited (0) 6 minutes ago silly_cori # 只查看容器 ID(便于批量操作) docker ps -aq3.4 docker rm:删除容器删除一个或多个容器:# 删除指定容器 docker rm 容器ID # 强制删除正在运行的容器 docker rm -f 容器ID # 删除所有已停止的容器 docker container prune # 删除所有容器 docker rm -f $(docker ps -aq)3.5 容器状态控制命令对已创建的容器进行启停控制:docker start 容器ID # 启动已停止的容器 docker stop 容器ID # 正常停止容器(发送 SIGTERM 信号) docker restart 容器ID # 重启容器 docker kill 容器ID # 强制停止容器(发送 SIGKILL 信号)4. 容器高级操作4.1 后台运行容器docker run -d centos # 注意事项: # Docker 容器后台运行必须有一个前台进程 # 如果没有前台进程执行,容器认为空闲会自动停止4.2 查看容器日志docker logs [OPTIONS] 容器ID # 常用参数 -f, --follow # 跟踪日志输出 --tail NUM # 显示最后 NUM 行日志 -t, --timestamps # 显示时间戳 # 示例 docker logs -tf --tail 10 容器ID4.3 查看容器内进程docker top 容器ID # 示例输出 UID PID PPID C STIME TTY root 28498 28482 0 19:38 ?4.4 查看容器详细信息docker inspect 容器ID # 返回容器的详细信息,包括: # - 容器基本信息 # - 配置信息 # - 网络设置 # - 数据卷挂载情况等4.5 进入运行中的容器两种方式进入运行中的容器:# 方法一:开启新终端进入容器(推荐) docker exec -it 容器ID /bin/bash # 方法二:连接到容器当前的终端 docker attach 容器ID # 两者的区别: # docker exec:在容器中打开新的终端,不影响原终端 # docker attach:进入容器正在运行的终端,可能阻塞原终端4.6 容器与宿主机间文件拷贝# 从容器拷贝文件到宿主机 docker cp 容器ID:容器内路径 宿主机路径 # 从宿主机拷贝文件到容器 docker cp 宿主机路径 容器ID:容器内路径 # 示例 docker cp 容器ID:/home/test.txt ./5. 总结以上是 Docker 最常用的命令集合,涵盖了日常开发运维中的大部分场景。熟练掌握这些命令可以帮助你更好地管理和使用 Docker 容器。
2025年12月20日
35 阅读
0 评论
0 点赞
2025-12-20
2025 最新 FinalShell 激活指南:支持 4.6/4.5/3.9.6 版本,浏览器直接用
FinalShell 激活工具使用指南本文档介绍了如何使用离线激活码生成工具来激活不同版本的 FinalShell 软件。支持的 FinalShell 版本目前激活码生成工具支持以下版本的 FinalShell:< 3.9.6 (旧版本)≥ 3.9.6 且 < 4.5 (旧版本)≥ 4.5 且 < 4.6 (新版本)≥ 4.6 (最新版本)算法核心思路离线授权码的本质是对「机器码 + 盐」进行散列处理后,从结果中截取某一段作为激活码。不同版本使用的算法和盐值如下:版本范围算法盐值< 3.9.6MD561305 + 机器码 + 8552(高级版)<br/>2356 + 机器码 + 13593(专业版)≥ 3.9.6 且 < 4.5Keccak384机器码 + 特定字符串<br/>高级版:hSf(78cvVlS5E<br/>专业版:FF3Go(*Xvbb5s24.5 ~ 4.6Keccak384机器码 + 特定盐值<br/>高级版:wcegS3gzA$<br/>专业版:b(xxkHn%z);x≥ 4.6Keccak384机器码 + 特定盐值<br/>高级版:csSf5xlkgYSX,y<br/>专业版:ScfgZkvJZc,s,Y防止二次激活方法为了防止激活失效,请执行以下操作:1. 修改本机 hosts 文件在 hosts 文件中添加以下条目: 127.0.0.1 www.youtusoft.com 127.0.0.1 youtusoft.com 127.0.0.1 hostbuf.com 127.0.0.1 www.hostbuf.com 127.0.0.1 dkys.org 127.0.0.1 tcpspeed.com 127.0.0.1 www.wn1998.com 127.0.0.1 wn1998.com 127.0.0.1 pwlt.wn1998.com 127.0.0.1 backup.www.hostbuf.com2. 屏蔽指定 IP 地址使用防火墙(如火绒等)屏蔽以下 IP 地址: 101.32.72.254 45.56.98.223 193.9.44.7 103.99.178.153 47.76.185.223注意事项部分用户反馈 4.6.5 版本点击确定没有反应,可尝试修改 hosts 文件,如果无效请使用其他版本确保正确输入机器码,格式通常为:xx@ABCDEF123456如果激活后软件仍显示需要激活,请检查是否正确屏蔽了相关域名和 IP浏览器版激活工具以下是一个可在浏览器中直接运行的激活码生成器: FinalShell 离线激活码生成 body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; padding: 2rem; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; margin: 0; } .container { max-width: 600px; margin: 0 auto; } .card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); margin-bottom: 2rem; } h1 { color: #333; text-align: center; margin-top: 0; } h2 { color: #555; border-bottom: 2px solid #667eea; padding-bottom: 0.5rem; } input, button { padding: 0.75rem; width: 100%; margin-top: 1rem; border-radius: 6px; border: 1px solid #ddd; box-sizing: border-box; } button { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; cursor: pointer; font-weight: bold; transition: transform 0.2s; } button:hover { transform: translateY(-2px); } .result { margin-top: 1.5rem; white-space: pre-wrap; background: #f8f9fa; padding: 1rem; border-radius: 6px; border-left: 4px solid #667eea; font-family: 'Courier New', monospace; } .instructions { background: #e3f2fd; padding: 1rem; border-radius: 6px; margin-top: 1rem; } FinalShell 离线激活码生成器 使用说明 1. 在下方输入框中输入您的机器码(格式通常为:xx@ABCDEF123456) 2. 点击"生成授权码"按钮 3. 复制相应的激活码到 FinalShell 中使用 生成授权码 function md5(str) { return CryptoJS.MD5(str).toString(); } function keccak384(str) { return CryptoJS.SHA3(str, { outputLength: 384 }).toString(); } function generate() { const code = document.getElementById('machineCode').value.trim(); const out = document.getElementById('output'); if (!code) { out.textContent = '请输入机器码'; return; } let res = ''; res += 'FinalShell < 3.9.6\n'; res += '高级版: ' + md5('61305' + code + '8552').slice(8, 24) + '\n'; res += '专业版: ' + md5('2356' + code + '13593').slice(8, 24) + '\n\n'; res += 'FinalShell ≥ 3.9.6\n'; res += '高级版: ' + keccak384(code + 'hSf(78cvVlS5E').slice(12, 28) + '\n'; res += '专业版: ' + keccak384(code + 'FF3Go(*Xvbb5s2').slice(12, 28) + '\n\n'; res += 'FinalShell 4.5\n'; res += '高级版: ' + keccak384(code + 'wcegS3gzA$').slice(12, 28) + '\n'; res += '专业版: ' + keccak384(code + 'b(xxkHn%z);x').slice(12, 28) + '\n\n'; res += 'FinalShell 4.6\n'; res += '高级版: ' + keccak384(code + 'csSf5*xlkgYSX,y').slice(12, 28) + '\n'; res += '专业版: ' + keccak384(code + 'Scfg*ZkvJZc,s,Y').slice(12, 28) + '\n'; out.textContent = res; }
2025年12月20日
42 阅读
0 评论
0 点赞
2025-12-09
告别密码!SSH 密钥登录配置,一步解锁高效安全连接
SSH 密钥登录指南一、为什么使用 SSH 密钥登录?传统密码登录存在两大痛点:密码容易泄露、被暴力破解(尤其是弱密码)每次登录需重复输入密码,效率低下(比如频繁连接服务器、推送代码)而 SSH 密钥登录基于非对称加密算法(公钥 + 私钥),优势明显:✅ 安全性更高:私钥仅保存在本地,公钥可公开传输,破解难度极大✅ 免密登录:配置后无需输入密码,直接连接✅ 多场景适用:服务器(Linux/Windows Server)、代码仓库(Gitea/GitHub/GitLab)、云服务等均支持二、核心概念:公钥与私钥私钥(Private Key):相当于「个人身份证」,需妥善保管在本地(如电脑),绝对不能泄露公钥(Public Key):相当于「身份证复印件」,可上传到服务器、代码平台等目标设备登录原理:本地用私钥加密验证信息,目标设备用公钥解密,匹配成功则允许登录。三、分步配置:从生成密钥到登录前提条件本地设备:安装 Git(自带 SSH 工具)或单独安装 OpenSSH(Windows 10/11 可通过「设置→应用→可选功能」安装)目标设备:开启 SSH 服务(服务器默认开启,代码平台无需手动配置)第一步:生成 SSH 密钥对(本地操作)打开终端 / 命令行(Windows 用 Git Bash、PowerShell 均可)执行生成命令(推荐 ed25519 算法,安全性更高;若系统不支持,改用 rsa 算法):# 推荐:ed25519 算法(密钥文件更小、更安全) ssh-keygen -t ed25519 -C "你的备注信息(如邮箱、设备名)" # 兼容旧系统:rsa 算法(4096 位加密) ssh-keygen -t rsa -b 4096 -C "你的备注信息"执行后按 3 次回车(无需设置密码,若需更高安全可设置密钥密码):第一次回车:确认密钥保存路径(默认 ~/.ssh/,Windows 为 C:\Users\你的用户名.ssh\)第二次 / 第三次回车:跳过设置密钥密码(输入则每次使用密钥需验证密码)生成成功后,~/.ssh/ 目录下会出现两个文件:私钥:id_ed25519(或 id_rsa)→ 本地保管,切勿泄露公钥:id_ed25519.pub(或 id_rsa.pub)→ 需上传到目标设备第二步:上传公钥到目标设备(以 2 种常见场景为例)场景 1:登录 Linux 服务器(如阿里云、腾讯云 EC2)查看并复制本地公钥内容:# Windows/Mac/Linux 通用命令(复制输出的全部内容) cat ~/.ssh/id_ed25519.pub输出示例(以 ed25519 为例):ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKZ4k1y8zHxq6jV6Xr+Q9q6G9fW5a7v8e9x3y7z1o2p3q4r5s6t7u8v9w0x your-email@example.com上传公钥到服务器(两种方式,选其一):方式 A:手动上传(适合新手)① 用密码登录服务器:ssh 用户名@服务器IP(如 ssh root@123.45.67.89)② 在服务器上创建 .ssh 目录(若已存在则跳过):mkdir -p ~/.ssh && chmod 700 ~/.ssh③ 编辑 authorized_keys 文件(存储公钥的核心文件):vi ~/.ssh/authorized_keys④ 按 i 进入编辑模式,粘贴本地复制的公钥,按 Esc 后输入 :wq 保存退出⑤ 设置文件权限(关键!否则 SSH 会拒绝读取):chmod 600 ~/.ssh/authorized_keys方式 B:一行命令上传(高效)本地终端执行(无需先登录服务器):ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP按提示输入服务器密码,即可自动完成公钥上传和权限配置。场景 2:连接 Gitea/GitHub(代码仓库免密推送)复制本地公钥内容(同场景 1 第一步)登录 Gitea/GitHub,进入密钥配置页:Gitea:右上角头像 → Settings → 左侧 SSH / GPG Keys → Add KeyGitHub:右上角头像 → Settings → SSH and GPG keys → New SSH key粘贴公钥内容,填写密钥名称(如「我的笔记本」),点击「添加」即可第三步:测试 SSH 密钥登录终端执行登录命令(根据场景选择):服务器:ssh 用户名@服务器IP(如 ssh root@123.45.67.89)Gitea:ssh -T git@你的Gitea地址(如 ssh -T git@gitea.example.com)GitHub:ssh -T git@github.com成功标志:服务器:直接登录到命令行,无需输入密码Gitea/GitHub:提示 Hi 你的用户名! You've successfully authenticated...四、进阶优化:提升安全性与便捷性1. 禁用服务器密码登录(推荐)配置密钥登录后,禁用密码登录可彻底防止暴力破解:登录服务器,编辑 SSH 配置文件:vi /etc/ssh/sshd_config修改以下参数(去掉注释并设置为对应值):PasswordAuthentication no # 禁用密码登录 PubkeyAuthentication yes # 启用公钥登录 PermitRootLogin prohibit-password # 禁止 root 密码登录(仅允许密钥)重启 SSH 服务生效:# Ubuntu/Debian sudo systemctl restart sshd # CentOS/RHEL sudo systemctl restart sshd # 旧系统(如 CentOS 6) sudo service sshd restart2. 配置别名登录(避免记忆 IP / 用户名)每次输入 ssh root@123.45.67.89 麻烦?可配置别名:本地编辑 SSH 配置文件:vi ~/.ssh/config添加以下内容(按需修改):# 服务器别名配置(示例) Host my-server # 别名(可自定义,如 server1、aliyun) HostName 123.45.67.89 # 服务器 IP 或域名 User root # 登录用户名 IdentityFile ~/.ssh/id_ed25519 # 私钥路径(默认可省略) # Gitea 别名(可选) Host my-gitea HostName gitea.example.com User git IdentityFile ~/.ssh/id_ed25519保存后,直接用别名登录:ssh my-server # 等价于 ssh root@123.45.67.89五、常见问题排查1. 登录提示「Permission denied (publickey)」可能原因及解决方案:原因 1:公钥未正确上传到目标设备的 authorized_keys 文件解决:重新上传公钥,确保内容完整(无多余空格、换行)原因 2:服务器 ~/.ssh 或 authorized_keys 权限过高解决:重新设置权限(参考场景 1 步骤 2 方式 A 第 5 步)原因 3:私钥路径错误或权限过高(本地)解决:私钥权限需设为 600:chmod 600 ~/.ssh/id_ed255192. Windows 提示「ssh: command not found」解决:安装 Git(自带 SSH 工具),或在「设置→应用→可选功能」中安装「OpenSSH 客户端」3. 密钥丢失 / 泄露怎么办?私钥泄露:立即删除目标设备(服务器、Gitea 等)上对应的公钥,重新生成新的密钥对并上传私钥丢失:无法恢复,重新生成密钥对并上传公钥到目标设备
2025年12月09日
144 阅读
0 评论
0 点赞
2025-10-08
vim 常用命令合集
Vim编辑器核心命令速查表(完整版)Vim 是一款高效的终端文本编辑器,其核心优势在于无需鼠标的纯键盘操作和可自定义的工作流。本文整理了 Vim 从基础到高级的核心命令,按功能模块分类,方便日常查阅和效率提升。一、基础全局命令需在普通模式(非插入模式)下输入 : 后执行,用于文件管理、帮助查询等核心操作。命令 / 快捷键功能描述实用场景举例:h[elp] 关键字显示指定关键字的官方帮助(最权威学习工具)忘记 dd 用法时,输入 :h dd:sav[eas] 文件名另存为指定文件(原文件保留)编辑临时文件后保存为正式文件:clo[se]关闭当前窗口(最后一个窗口则退出Vim)多窗口编辑时关闭无用窗口:ter[minal]在Vim中打开新终端窗口(无需切出Vim)编辑代码时临时执行 make 等命令K打开光标所在单词的 man 手册页查看Linux命令/函数详细说明二、光标移动(普通模式)Vim 效率核心之一,无需鼠标即可精准定位,熟记后大幅提升操作速度。分类命令 / 快捷键功能描述补充说明基础方向h/j/k/l左/下/上/右移1个字符替代方向键,手无需离开主键盘区页面定位H/M/L移动到当前页面顶部/中间/底部快速跳转页面内关键位置单词级移动w/W移动到下个单词开头(W 含标点视为单词)例:hello, world 中,w 跳 ,,W 跳 w e/E移动到下个单词结尾(E 含标点视为单词)修改单词末尾时用(如加s变复数) b/B移动到上个单词开头(B 含标点视为单词)回退修改时定位前一个单词行内定位0移动到行首(含空白符)行首插入内容时用 ^移动到行首第一个非空白符编辑代码时定位行内有效内容开头 $/g_移动到行尾/行内最后一个非空白符行尾补分号用 $a;文件级定位gg/G移动到文件第一行/最后一行查看文件开头注释或结尾 return 语句 5gg/5G移动到第5行(数字可替换)跳转编译报错行(如 100G 到第100行)字符搜索定位fx/Fx跳转到字符 x 下次/上次出现位置找行内 ( 用 f(,找 ) 用 f) tx/Tx跳转到字符 x 附近(前一个/后一个字符)目标字符前插入内容用 tx + a ;/,重复/反向重复上一次 f/t/F/T 操作连续找相同字符无需重复输入 fx段落/代码块定位}/{移动到下一个/上一个段落(代码中为函数块)编辑多函数代码时切换函数屏幕调整zz使光标所在行居中显示光标在页面边缘时聚焦视线 Ctrl + e/y向下/向上滚动1行(光标不动)查看光标下方/上方内容 Ctrl + b/f向上/向下滚动一整屏快速翻页(b=back,f=forward) Ctrl + d/u向下/向上滚动半屏比整屏翻页更精准,查看相邻内容三、插入模式(输入文本)从普通模式进入“编辑状态”,完成输入后按 Esc 返回普通模式。命令 / 快捷键功能描述实用场景举例i从光标前插入光标在 he_llo 处,按 i 输 l 成 hell_loI从行首非空白符前插入代码行前加注释(I//)a从光标后插入光标在 h_ello 处,按 a 输 e 成 he_lloA从行尾插入行尾补分号(A;)或注释o/O在当前行下方/上方新建行并插入插入新代码行(比回车更高效)ea从当前单词末尾后插入word → 按 ea 输 _s 成 word_s插入模式编辑Ctrl + h删除光标前1个字符(同退格键)输入错误无需按 Esc 回退 Ctrl + w删除光标前1个单词(空格/标点分隔)输错单词快速删除(如 helo → Ctrl + w) Ctrl + j另起一行(不触发自动缩进)手动控制换行时用 Ctrl + t/d向右/向左缩进当前行(按 shiftwidth 设定)编辑代码调整缩进,不退出插入模式自动补全Ctrl + n/p下一个/上一个补全候选(基于文件内容)输入变量名/函数名时快速补全 Ctrl + r x插入 x 寄存器内容(x 为寄存器名)插入复制内容,不退出插入模式Esc退出插入模式,返回普通模式所有插入操作结束后必须按四、编辑文本(普通模式)无需进入插入模式,直接修改、删除、调整文本格式。命令 / 快捷键功能描述补充说明r替换当前1个字符(无需插入模式)helo → 光标在 o 前,按 rh 成 helloJ/gJ合并下一行到当前行(J 加空格,gJ 不加)line1 + line2 → line1 line2(J)或 line1line2(gJ)gwip重新调整段落格式(自动换行对齐)粘贴文本后格式混乱时快速排版大小写转换g~切换选中文本大小写(需可视化模式)HELLO ↔ hello gu将选中文本转为小写(需可视化模式) gU将选中文本转为大写(需可视化模式) 删除并插入cc/S删除当前行,进入插入模式整行重写(比 ddi 更高效) C/c$删除光标到行尾内容,进入插入模式int a = 1; → 光标在 a 后,按 C 改 a = 2; ciw删除当前单词,进入插入模式apple → 按 ciw 输 banana 成 banana cw删除光标到单词结尾,进入插入模式helo → 光标在 e 后,按 cw 输 llo 成 hello s删除当前字符,进入插入模式替换单个字符(比 ri 少按1次键)字符调整xp交换当前字符和下一个字符(字符后移)teh → 光标在 e 上,按 xp 成 the撤销/重做u撤销上一次操作(可多次撤销)误删 dd 后按 u 恢复 U撤销对当前行的所有修改(仅恢复当前行)行内多次修改后恢复原行 Ctrl + r重做上一次被撤销的操作(反撤销)撤销多了想恢复之前修改时用 .重复上一次修改类命令(Vim核心效率键)连续删除多行:dd 后按 .;连续加 ;:A; 后按 .五、可视化模式(选中文本)先选中目标文本,再执行复制、删除等操作,普通模式下按对应键进入。模式类型进入命令功能描述适用场景字符可视化v按字符选中(拖动光标选任意范围)选中零散字符(如单词中的几个字母)行可视化V按行选中(光标上下移动,整行选中)选中多行代码(删除/复制连续行)列可视化(矩阵)Ctrl + v按列选中(垂直选择,支持矩形区域)批量编辑列内容(如给多行加 // 注释)可视化模式常用操作选中内容后,按以下键执行操作:命令 / 快捷键功能描述>/<选中内容向右/向左缩进y复制选中内容到默认寄存器d剪切选中内容(删除并复制)~切换选中内容的大小写u/U选中内容转为小写/大写o/O切换光标在选中区域的开头/结尾/对角调整选中范围时用Esc退出可视化模式,返回普通模式六、寄存器(复制/剪切的“容器”)Vim 复制/剪切内容存入“寄存器”,默认用匿名寄存器(""),可指定自定义寄存器(a-z)避免覆盖。命令 / 快捷键功能描述实用场景举例:reg[isters]查看所有寄存器内容(确认复制结果)忘记复制内容存哪个寄存器时用"xy复制选中内容到寄存器x(x 可替换 a-z)保留多个复制内容:"ay 存第一段,"by 存第二段"xp粘贴寄存器x中的内容粘贴第二段用 "bp"+y/"+p复制到/粘贴自系统剪贴板(跨程序通用)Vim 内容复制到浏览器/文档,或粘贴外部内容到Vim七、标记和位置(快速回跳)对关键位置做“标记”,或通过历史记录回跳,避免重复定位。命令 / 快捷键功能描述实用场景举例:marks查看所有标记列表忘记标记位置时用ma在当前位置设置标记a(a 可替换 a-z)函数开头按 mf 做标记 `a 跳转到标记a的位置(精准到字符)编辑函数内部后,按 `f 回开头 `0 跳转到Vim上一次退出时的位置重新打开文件后回上次编辑处 `" 跳转到文件上次编辑时的位置打开旧文件后定位历史修改点 `. 跳转到文件最后一次修改的位置修改后检查效果,按 `. 回跳 ``跳转到上一次跳转前的位置gg 到文件开头后,按 回原位置跳转历史:ju[mps]查看所有跳转记录(行号/标记跳转)回退到更早定位时用 Ctrl + i/o跳转到跳转历史的较新/较旧位置类似浏览器前进/后退键修改历史:changes查看所有修改记录(何时修改哪行)追踪文本修改轨迹 g,/g;跳转到修改历史的较新/较旧位置检查之前修改内容时用标签跳转Ctrl + ]跳转到光标所在标签的定义处(需支持标签)编辑代码时查看函数/变量定义八、宏(批量执行重复操作)录制一组操作后重复执行,适用于“相同操作需执行多次”的场景(如批量修改格式)。命令 / 快捷键功能描述操作流程示例(批量给行首加 //)qa开始录制宏,存入寄存器a(a 可替换)1. 按 qa 开始录制q停止录制宏2. 执行操作:I//(加注释)+ Esc + j(下一行)3. 按 q 停止@a执行寄存器a中的宏4. 按 @a 执行1次,给下一行加注释@@重复执行上一次执行的宏5. 按 @@ 批量处理剩余行九、复制、剪切、粘贴(普通模式)直接对行/单词/字符进行操作,无需先选中(可视化模式也可配合使用)。操作类型命令 / 快捷键功能描述示例(以 hello world 为例)复制yy复制当前行光标在行上,按 yy 复制整行 2yy复制从当前行开始的2行(数字可替换)按 3yy 复制当前行+下2行 yw复制当前单词(从光标到单词结尾)光标在 h 上,按 yw 复制 hello y$复制从光标到行尾的内容光标在 h 上,按 y$ 复制 hello world
2025年10月08日
50 阅读
0 评论
0 点赞
2024-04-13
蓝桥杯省赛训练题2
选择题1、下面Python代码执行后 a 的类型不为 dict 的是( )A. a = {} B. a = dict() C. a = {i: i ** 2 for i in range(10)} D. a = {1} {collapse}{collapse-item label="解析:"}在Python中,字典(dict)是一个无序的键值对集合。A. a = {} 这里使用空的大括号创建了一个空的字典。所以a的类型是dict。B. a = dict() 这里使用了dict的构造函数创建了一个空的字典。所以a的类型也是dict。C. a = {i: i ** 2 for i in range(10)} 这里使用字典推导式创建了一个包含10个键值对的字典,其中键是从0到9的整数,值是每个键的平方。所以a的类型是dict。D. a = {1} 这里使用大括号创建了一个集合,其中包含单个元素1。所以a的类型是set,而不是dict。因此,执行后a的类型不为dict的是D选项。{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}2、执行以下代码,输出的结果是( )?lst = "abc" print(lst+lst)A. abcabcB. abcC. lst+lstD. abc+abc{collapse}{collapse-item label="解析:"}字符串A与字符串B相加,连接A B两个字符串{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}3、关于Python3.10,下列选项描述正确的是( )?A. continue 语句可以结束整个循环的执行B. break 和 continue 语句只能用在循环中C.要从嵌套循环中退出时,只能使用 goto 语句D. break 和 continue 语句在循环体内的作用相同{collapse}{collapse-item label="解析:"}continue 和 break 是循环控制语句continue 可以结束当前循环,继续后面的循环break 结束当前以及之后的所有循环{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}4、下列运算符中,优先级最高的是( )。A. / B. % C.** D.+ !{collapse}{collapse-item label="解析:"}{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}5、下列数据类型中,哪一个是不可变的?( )A.列表 B.元组 C. 字典 D. 集合{collapse}{collapse-item label="解析:"}元组是不可变的,这意味着一旦元组被创建,就不能修改它的内容(例如添加、删除或更改元素)。{/collapse-item}{/collapse}{callout color="#f0ad4e"}选择题答案{/callout}12345AABCB{lamp/}编程题{tabs}{tabs-pane label="第一题题目"}编程实现:STEM86商城按顺序摆放着“A”、“B”、“C”、“D”四种商品,其对应的编号分别为1、2、3、4。给出1~4中任意一个编号,输出编号对应的商品。输入描述:输入1~4中任意一个编号输出描述:输出编号所对应的商品【样例输入】2【样例输出】B{/tabs-pane}{tabs-pane label="参考程序"}ls=['A','B','C','D'] n=int(input()) print(ls[n-1]){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第二题题目"}【编程实现】一个小球从n米高度自由落下,每次落地后反跳回原高度的一半,再落下。求第10次反弹多高及初始落下到第10次反弹到最高点时(不含第十次落下距离)一共经过了多少米?输入:1024.0输出:1.03069.0{/tabs-pane}{tabs-pane label="参考程序"}n=float(input()) s=n h=n for i in range(9): h/=2 s+=h*2 h/=2 s+=h print(h) print(s){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第三题题目"}字符统计【问题描述】给定一个只包含大写字母的字符串 S,请你输出其中出现次数最多的字母。如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母【输入格式】一个只包含大写字母的字符串 S 【输出格式】若干个大写字母,代表答案【样例】输入 输出BABBACAC AB{/tabs-pane}{tabs-pane label="参考程序"}a = input('大写字母:') s = {} for i in a: if i in s: s[i] += 1 else: s[i] = 1 print(s) m = max(s.values()) g = [] for i in s.keys(): if s[i] == m: g.append(i) g.sort() print(''.join(g)){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第四题题目"}提示信息:一个正整数的平方的尾数一位或者几位数等于这个正整数,称为自守数如:正整数5的平方为25,25的尾数一位是5;正整数25的平方为625,625的尾数两位是25。编程实现:给定一个正整数,判断这个正整数是否为自守数,如果是输出大写字母“Y”,否者输出大写字母“N”。注:1为自守数输入描述:输入一个正整数输出描述:判断这个正整数是否为自守数,如果是输出大写字母“Y”,否者输出大写字母“N”样例输入:5样例输出:Y{/tabs-pane}{tabs-pane label="参考程序"}a = input('数字:') #'25' a2 = str(int(a)*int(a)) #'625' m = len(a) if a == a2[-m:]: print('Y') else: print('N'){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第五题题目"}编程实现:给定一个含有字母和数字的字符串,输出此字符串中最长的数字子串的长度。如:字符串“a2a22d”,最长的数字子串为22,长度为2,故输出2字符串“lql2h567j765”,最长的数字子串为567和765,长度都为3,故输出3输入描述:输入一个含有字母和数字的字符串(5<字符串长度<101)输出描述:输出此字符串中最长的数字子串的长度样例输入:a2a22d样例输出:2{/tabs-pane}{tabs-pane label="参考程序"}a = input('字符串:') m = 0 n = 0 for i in a: if 48<=ord(i)<=57: m += 1 n = max(m,n) else: m = 0 print('最长的是:',n){/tabs-pane}{/tabs}
2024年04月13日
27 阅读
0 评论
0 点赞
2024-04-06
蓝桥杯省赛训练题1
选择题1、导入 random 标准库,执行 print(random.randrange(2,20,2) 语句,可能输出的结果是( )?A.2 B.5 C.13 D.20{collapse}{collapse-item label="解析:"} randrange 是Python标准库 random 中的一个函数,用于生成一个指定范围内的随机整数。 格式如下:random.randrange(stop) random.randrange(start,stop,step)当只有一个参数 stop 时,它返回一个从 0(包括)到 stop(不包括)之间的随机整数。当有两个参数 start 和 stop 时,它返回一个从 start(包括)到 stop(不包括)之间的随机整数。当有三个参数 start, stop, 和 step 时,它返回一个从 start(包括)到 stop(不包括)之间,按 step 递增的随机整数。{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}2、执行以下代码,输出的结果是( )?lst = "abc" print(lst+lst)A. abcabcB. abcC. lst+lstD. abc+abc{collapse}{collapse-item label="解析:"}字符串A与字符串B相加,连接A B两个字符串{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}3、关于Python3.10,下列选项描述正确的是( )?A. continue 语句可以结束整个循环的执行B. break 和 continue 语句只能用在循环中C.要从嵌套循环中退出时,只能使用 goto 语句D. break 和 continue 语句在循环体内的作用相同{collapse}{collapse-item label="解析:"}continue 和 break 是循环控制语句continue 可以结束当前循环,继续后面的循环break 结束当前以及之后的所有循环{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}4、下列运算符中,优先级最高的是( )。A. / B. % C.** D.+ !{collapse}{collapse-item label="解析:"}{/collapse-item}{/collapse}{dotted startColor="#6bfff5" endColor="#b318fb"/}5、下列数据类型中,哪一个是不可变的?( )A.列表 B.元组 C. 字典 D. 集合{collapse}{collapse-item label="解析:"}元组是不可变的,这意味着一旦元组被创建,就不能修改它的内容(例如添加、删除或更改元素)。{/collapse-item}{/collapse}{callout color="#f0ad4e"}选择题答案{/callout}12345AABCB{lamp/}编程题{tabs}{tabs-pane label="第一题题目"}编程实现:STEM86商城按顺序摆放着“A”、“B”、“C”、“D”四种商品,其对应的编号分别为1、2、3、4。给出1~4中任意一个编号,输出编号对应的商品。输入描述:输入1~4中任意一个编号输出描述:输出编号所对应的商品【样例输入】2【样例输出】B{/tabs-pane}{tabs-pane label="参考程序"}ls=['A','B','C','D'] n=int(input()) print(ls[n-1]){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第二题题目"}【编程实现】一个小球从n米高度自由落下,每次落地后反跳回原高度的一半,再落下。求第10次反弹多高及初始落下到第10次反弹到最高点时(不含第十次落下距离)一共经过了多少米?输入:1024.0输出:1.03069.0{/tabs-pane}{tabs-pane label="参考程序"}n=float(input()) s=n h=n for i in range(9): h/=2 s+=h*2 h/=2 s+=h print(h) print(s){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第三题题目"}字符统计【问题描述】给定一个只包含大写字母的字符串 S,请你输出其中出现次数最多的字母。如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母【输入格式】一个只包含大写字母的字符串 S 【输出格式】若干个大写字母,代表答案【样例】输入 输出BABBACAC AB{/tabs-pane}{tabs-pane label="参考程序"}a = input('大写字母:') s = {} for i in a: if i in s: s[i] += 1 else: s[i] = 1 print(s) m = max(s.values()) g = [] for i in s.keys(): if s[i] == m: g.append(i) g.sort() print(''.join(g)){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第四题题目"}提示信息:一个正整数的平方的尾数一位或者几位数等于这个正整数,称为自守数如:正整数5的平方为25,25的尾数一位是5;正整数25的平方为625,625的尾数两位是25。编程实现:给定一个正整数,判断这个正整数是否为自守数,如果是输出大写字母“Y”,否者输出大写字母“N”。注:1为自守数输入描述:输入一个正整数输出描述:判断这个正整数是否为自守数,如果是输出大写字母“Y”,否者输出大写字母“N”样例输入:5样例输出:Y{/tabs-pane}{tabs-pane label="参考程序"}a = input('数字:') #'25' a2 = str(int(a)*int(a)) #'625' m = len(a) if a == a2[-m:]: print('Y') else: print('N'){/tabs-pane}{/tabs}{tabs}{tabs-pane label="第五题题目"}编程实现:给定一个含有字母和数字的字符串,输出此字符串中最长的数字子串的长度。如:字符串“a2a22d”,最长的数字子串为22,长度为2,故输出2字符串“lql2h567j765”,最长的数字子串为567和765,长度都为3,故输出3输入描述:输入一个含有字母和数字的字符串(5<字符串长度<101)输出描述:输出此字符串中最长的数字子串的长度样例输入:a2a22d样例输出:2{/tabs-pane}{tabs-pane label="参考程序"}a = input('字符串:') m = 0 n = 0 for i in a: if 48<=ord(i)<=57: m += 1 n = max(m,n) else: m = 0 print('最长的是:',n){/tabs-pane}{/tabs}
2024年04月06日
1,031 阅读
0 评论
2 点赞
2023-07-14
通过Python解决识别验证码方法
简介用python识别验证码的话,有好多方法。比如:深度学习验证码识别,用验证码识别平台进行识别。现在我找到了一个非常好用的一个python模块,很方便就能识别到验证码的数值。介绍带带弟弟OCR通用验证码识别SDK项目地址: 带带弟弟OCR项目地址使用方法这个模块的使用方法非常简单,而且识别的成功率也相当的高!import ddddocr ocr = ddddocr.DdddOcr() with open('code.png', 'rb') as f: image_bytes = f.read() res = ocr.classification(image_bytes) print(res)需要改的地方是“code.png”,这个是识别验证码的地址。拓展支持使用ddddocr调用 dddd_trainer 训练后的自定义模型import ddddocr ocr = ddddocr.DdddOcr(det=False, ocr=False, import_onnx_path="myproject_0.984375_139_13000_2022-02-26-15-34-13.onnx", charsets_path="charsets.json") with open('code.png', 'rb') as f: image_bytes = f.read() res = ocr.classification(image_bytes) print(res)'myproject_0.984375_139_13000_2022-02-26-15-34-13.onnx' : 这个是训练出来的onnx文件'charsets.json':字符集文件'code.png':要识别的验证码图片想了解更加详细使用,去dddd_trainer项目地址去了解。
2023年07月14日
328 阅读
0 评论
0 点赞
2023-07-05
解决Windows 启动 Docker Desktop 报错 Hardware assisted virtualization and data execution
Windows 启动 Docker Desktop 报错 Hardware assisted virtualization and data execution{lamp/}报错概况如下图:这种有两种情况:没有开启windows的Hyper-V或者没有开启电脑的虚拟化开启windows的Hyper-V和电脑虚拟化还是报错处理方案第一种情况解决方案:控制面板->程序->启用或关闭 windows 功能,开启 Windows 虚拟化和 Linux 子系统(WSL2)查看电脑有没有开启虚拟化第二种解决方案:电脑的 Hyper-V 原来是开启过了的,但打开 Docker Desktop 又报错了。在 PowerShell 的命令行里执行以下命令(这里注意,要以管理员身份打开 PowerShell):bcdedit /set hypervisorlaunchtype auto然后重启电脑。再打开 Docker Desktop。
2023年07月05日
348 阅读
0 评论
0 点赞
2023-02-11
常见WAF的拦截页整理
D盾云锁UPUPW安全防护宝塔网站防火墙网防G01护卫神网站安全狗智创防火墙360主机卫士或360webscan西数WTS-WAFNaxsi WAF腾讯云腾讯宙斯盾百度云华为云网宿云创宇盾玄武盾阿里云盾360网站卫士奇安信网站卫士安域云WAF铱讯WAF长亭SafeLine安恒明御WAFF5 BIG-IPMod_SecurityOpenRASP百度OpenRASPdotDefender西部数码云网盾红网云WAF盛邦RayWAF
2023年02月11日
313 阅读
0 评论
1 点赞
2022-10-24
HTML基础知识——学习记录
标题标签场景:在文章页面中,都离不开标题,用来突出显示文章的主题代码:h系列标签<h1>h1标签</h1> <h2>h2标签</h2> <h3>h3标签</h3> <h4>h4标签</h4> <h5>h5标签</h5> <h6>h6标签</h6>语义:1~6级标题,重要程度依次递减特点:文字加粗文字变大,h1->h6文字逐渐减小独占一行 # 段落标签 - 场景:在文章页面中,用于分段显示 - 代码:``` 内容``` - 语义:段落 - 特点: - 段落之间存在间隙 - 独占一行 # 换行标签 - 场景:让文字强制换行显示 - 代码:``` ``` - 语义:换行 - 特点: - 单标签 - 让文字强制换行 # 文本格式化标签 - 场景:需要让文字加粗,下划线,倾斜,删除线等效果 - 代码: |标签|详细名称|说明| |---| |b|strong|加粗| |u|ins|下划线| |i|em|倾斜| |s|del|删除线| - 语义:突出重要性强调语境 # 图片标签 - -场景:在网页中显示图片 - 代码:``` ``` - 特点: - 单标签 - img标签需要展示对应的效果,需要借助标签的属性进行设置 - 属性 |属性|说明| |---| |alt|单图片加载失败显示alt内容| |title|当鼠标停留在图片时,才会显示title的内容(可用于其他标签)| |width/height|图片的宽度和高度,当只设置一项的时候,图片会等比例缩放| # 水平线标签 - 场景:分割不同主题内容的水平线 - 代码:``` ``` - 语义:主题的分割转换 - 特点: - 单标签 - 在页面中显示一条水平线 # 音频标签介绍 - 场景 在页面插入音频 - 代码 `````` - 属性 |属性名|功能| |---| |src|音频的路径| |controls|显示播放的控件| |autoplay|自动播放(部分浏览器不支持)| |loop|循环播放| - 注意: 视频标签目前支持三种格式:MP3,Wav,Ogg # 视频标签介绍 - 场景 在页面插入音频 - 代码 `````` - 属性 |属性名|功能| |---| |src|音频的路径| |controls|显示播放的控件| |autoplay|自动播放(谷歌浏览器支持需要配置muted)| |loop|循环播放| - 注意: 视频标签目前支持三种格式:MP4,WebM,Ogg # 超链接 1. 场景 点击之后,从一个页面跳到另一个页面 2. 代码 ```名字``` 3. 特点: 4. 双标签,内部可以包裹内容 5. 如果需要a标签点击后去指定页面,需要设置a标签的href属性 6. 属性 属性名:target 属性值:目标网页的打开方式 |取值|功能| |---| |_self|默认值,在当前窗口中跳转(覆盖原网页)| |_blank|在新窗口中跳转(保留原网页)| 代码:```JaysonBLog``` # 列表标签 ## 无序列表 - 场景: 在网页中表示一组无顺序的列表 - 代码: ```html 内容 ``` - 标签组成: |标签名|说明| |---| |ul|表示无序列表的整体,用于包裹li标签| |li|表示无序标签的每一项,用于包含每一行的内容| 显示特点:列表的每一项前默认显示圆点 注意点:url标签中只允许包含li标签li标签可以包含任意内容 ## 有序列表 - 场景: - 在网页中表示一组有顺序的列表 - 代码: ```html 内容 ``` - 标签组成: |标签名|说明| |---| |ol|表示有序列表的整体,用于包裹li标签| |li|表示有序列表的每一项,用于包含每一项的内容| 显示特点:列表的每一项前默认显示圆点 注意点:url标签中只允许包含li标签li标签可以包含任意内容 ## 自定义列表 - 场景: - 在网页的底部导航中通常会使用自定义列表 - 代码: ```html 主题 内容 内容 ``` - 标签组成: |标签名|说明| |---| |dl|表示自定义列表的整体,用于包裹dt/dd标签| |dt|表示自定义列表的主题| |dd|表示自定义列表的针对主题的每一项内容| 显示特点: dd前会默认缩进效果 注意点: dl标签中只允许包含dt/dd标签 dt标签可以包含任意内容 # 表格标签 - 场景:在网页中以行+列表的单元格的方式整齐展示和数据 - 代码: ```html 内容 内容 内容 ``` - 基本标签: |标签名|说明| |---| |table|表格整体,可用于包裹多个tr| |tr|表格每行,可用于包裹td| |td|表格单元格,可用于包裹内容| 注意点: 标签的嵌套关系:table > tr > td ## 表格属性 - 场景:设置表格基本展示效果 - 常见相关属性: - 代码:`````` |属性名|属性值|效果| |---| |border|数字|边框宽度| |width|数字|表格宽度| |height|数字|表格高度| 注意点: 实际开发时针对样式效果推荐用css设置 ## 表格标题和表头单元格标签 - 场景:在表格中表示整体大标题和小一列小标题 - 代码: ```html 表格标题 表头 表头 表头 ``` - 其他标签: |标签名|名称|说明| |---| |caption|表格大标题|表示表格整体大标题,默认在表格整体顶部居中位置显示| |th|表头单元格|表示一列小标题,通常用于表格的第一行,默认内部文字加粗并居中| 注意点: caption标签书写在table标签内部 th标签书写在tr标签内部 ## 表格的结构标签(了解) - 场景:让表格的内容结构分组,突出表格的不同部分(头部,主体,底部),使语义更加清晰 - 结构标签 |标签名|名称| |---| |thead|表格头部| |tbody|表格主体| |tfoot|表格底部| 注意点: 表格结构标签内部用于包裹tr标签 表格结构标签可以省略 ## 合并单元格-代码实现 - 合并步骤: 1. 明确合并哪几个单元格 2. 通过左上原则,确定保留谁删除谁 - 上下合并 --> 保留最上面的单元格,删除其他的单元格 ```html 小哥哥 上下合并的单元格 小哥哥真帅气 小姐姐 小姐姐真漂亮 ``` - 左右合并 --> 保留最左面的单元格,删除其他的单元格 ```html 总结 左右合并的单元格 ``` 3. 给保留的其他单元格设置: - 跨行合并(rowspan) - 跨列合并(colspan) |属性名|属性值|说明| |---| |rowspan|合并单元格个数|跨行合并,将多行的单元格垂直合并| |colspan|合并单元格个数|跨列合并,将多列的单元格水平合并| 注意点: 只有同一个结构标签中的单元格才能合并,不能跨结构标签合并(不能跨:thead,tbody,tfoot) # 表单标签 ## input系列标签基本介绍 - 场景:在网页中显示收集用户信息的表单效果 - 标签名:input - input标签可以通过type属性值的不同,展现的不同效果 - type属性值: |标签名|type属性值|类型|说明| |---| |input|text|文本框|用于输入单行文本| |input|password|密码框|用于输入密码| |input|radio|单选框|用于多选一| |input|checkbox|多选框|用于多选多| |input|file|文件选择|用于上传文件| |input|submit|提交按钮|用于提交| |input|reset|重置按钮|用于重置| |input|button|普通按钮|默认无功能,之后配合js添加功能| ### input系列标签-文本框 - 场景:在网页中显示输入的单行文本的表格控件 - type属性值:text/password - 代码:`````` - 常用属性: |属性名|说明| |---| |placeholder|占位符,提示用户输入的内容| ### input系列标签-单选框 - 场景:在网页中显示多选一的单选表单控件 - type属性值:radio - 代码: ```html
2022年10月24日
334 阅读
0 评论
0 点赞
1
2
...
4