首页
壁纸
友情
关于
统计
推荐
Search
1
通过华为交换机的辅助,增加“ikuai爱快软路由”wan的线路
1,645 阅读
2
华为S5700交换机升级记录
1,315 阅读
3
小米AC2100(红米ac2100)刷写Breed不死固件
1,046 阅读
4
酷我音乐豪华VIP版 | 电脑版
1,022 阅读
5
nginx“高逼格” 帮你快速隐藏php后缀名
955 阅读
食用技巧
食用软件
通信技术
交换机
软路由
网络技术
编程技术
Python学习
C学习
WEB学习
C++学习
Python基础
Python爬虫知识
蓝桥杯省赛训练题
前端学习
后端学习
PHP学习
Linux
华为Datacom
IPv4技术
登录
Search
标签搜索
Python
linux
酷我音乐
第一篇文章
交换机技术
Joe
华为交换机
PHP
开机自启
爬虫
正则
Ubuntu
搭建教程
csv
数据分析
IP
加密
WAF的拦截
html
Docker
Jayson
累计撰写
30
篇文章
累计收到
2
条评论
首页
栏目
食用技巧
食用软件
通信技术
交换机
软路由
网络技术
编程技术
Python学习
C学习
WEB学习
C++学习
Python基础
Python爬虫知识
蓝桥杯省赛训练题
前端学习
后端学习
PHP学习
Linux
华为Datacom
IPv4技术
页面
壁纸
友情
关于
统计
推荐
搜索到
30
篇与
Jayson
的结果
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日
18 阅读
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日
11 阅读
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日
816 阅读
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日
305 阅读
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日
311 阅读
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日
291 阅读
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文字逐渐减小独占一行段落标签场景:在文章页面中,用于分段显示代码: <p>内容</p>语义:段落特点:段落之间存在间隙独占一行换行标签场景:让文字强制换行显示代码: <br> 语义:换行特点:单标签让文字强制换行文本格式化标签场景:需要让文字加粗,下划线,倾斜,删除线等效果代码:|标签|详细名称|说明|bstrong加粗uins下划线iem倾斜sdel删除线语义:突出重要性强调语境图片标签-场景:在网页中显示图片代码: <img src="" alt="">特点:单标签img标签需要展示对应的效果,需要借助标签的属性进行设置属性|属性|说明|alt单图片加载失败显示alt内容title当鼠标停留在图片时,才会显示title的内容(可用于其他标签)width/height图片的宽度和高度,当只设置一项的时候,图片会等比例缩放水平线标签场景:分割不同主题内容的水平线代码: <hr> 语义:主题的分割转换特点:单标签在页面中显示一条水平线音频标签介绍场景 在页面插入音频代码 <audio src="music.mp3" controls></audio>属性|属性名|功能|src音频的路径controls显示播放的控件autoplay自动播放(部分浏览器不支持)loop循环播放注意: 视频标签目前支持三种格式:MP3,Wav,Ogg视频标签介绍场景 在页面插入音频代码 <video src="music.mp4" controls></video>属性|属性名|功能|src音频的路径controls显示播放的控件autoplay自动播放(谷歌浏览器支持需要配置muted)loop循环播放注意: 视频标签目前支持三种格式:MP4,WebM,Ogg超链接场景 点击之后,从一个页面跳到另一个页面代码 <a href="目标网页">名字</a>特点:双标签,内部可以包裹内容如果需要a标签点击后去指定页面,需要设置a标签的href属性属性属性名:target属性值:目标网页的打开方式取值功能_self默认值,在当前窗口中跳转(覆盖原网页)_blank在新窗口中跳转(保留原网页)代码:<a href="#" target="_blank">JaysonBLog</a>列表标签无序列表场景: 在网页中表示一组无顺序的列表代码:<ul> <li>内容</li> </ul>标签组成:|标签名|说明|ul表示无序列表的整体,用于包裹li标签li表示无序标签的每一项,用于包含每一行的内容 显示特点:列表的每一项前默认显示圆点 注意点:url标签中只允许包含li标签li标签可以包含任意内容 有序列表场景:在网页中表示一组有顺序的列表代码:<ol> <li>内容</li> </ol>标签组成:|标签名|说明|ol表示有序列表的整体,用于包裹li标签li表示有序列表的每一项,用于包含每一项的内容 显示特点:列表的每一项前默认显示圆点 注意点:url标签中只允许包含li标签li标签可以包含任意内容 自定义列表场景:在网页的底部导航中通常会使用自定义列表代码:<dl> <dt>主题</dt> <dd>内容</dd> <dd>内容</dd> </dl>标签组成:|标签名|说明|dl表示自定义列表的整体,用于包裹dt/dd标签dt表示自定义列表的主题dd表示自定义列表的针对主题的每一项内容 显示特点: dd前会默认缩进效果 </li> <li>注意点: <ul> <li>dl标签中只允许包含dt/dd标签</li> <li>dt标签可以包含任意内容</li> </ul> </li>表格标签场景:在网页中以行+列表的单元格的方式整齐展示和数据代码:<table> <tr> <td>内容</td> <td>内容</td> <td>内容</td> </tr> </table>基本标签:|标签名|说明|table表格整体,可用于包裹多个trtr表格每行,可用于包裹tdtd表格单元格,可用于包裹内容<dl><dt>注意点:</dt><dd>标签的嵌套关系:table > tr > td <dd></dl>表格属性场景:设置表格基本展示效果常见相关属性:代码:<table border="2" width="300" height="200">|属性名|属性值|效果|border数字边框宽度width数字表格宽度height数字表格高度<dl><dt>注意点:</dt><dd>实际开发时针对样式效果推荐用css设置<dd></dl>表格标题和表头单元格标签场景:在表格中表示整体大标题和小一列小标题代码:<table> <caption>表格标题</caption> <tr> <th>表头</th> <th>表头</th> <th>表头</th> </tr> </table>其他标签:|标签名|名称|说明|caption表格大标题表示表格整体大标题,默认在表格整体顶部居中位置显示th表头单元格表示一列小标题,通常用于表格的第一行,默认内部文字加粗并居中<dl><dt>注意点:</dt><dd>caption标签书写在table标签内部<dd><dd>th标签书写在tr标签内部<dd></dl>表格的结构标签(了解)场景:让表格的内容结构分组,突出表格的不同部分(头部,主体,底部),使语义更加清晰结构标签|标签名|名称|thead表格头部tbody表格主体tfoot表格底部<dl><dt>注意点:</dt><dd>表格结构标签内部用于包裹tr标签<dd><dd>表格结构标签可以省略<dd></dl>合并单元格-代码实现合并步骤:明确合并哪几个单元格通过左上原则,确定保留谁删除谁上下合并 --> 保留最上面的单元格,删除其他的单元格 <tr> <td>小哥哥</td> <td rowspan="2">上下合并的单元格</td> <td>小哥哥真帅气</td> </tr> <tr> <td>小姐姐</td> <td>小姐姐真漂亮</td> </tr>左右合并 --> 保留最左面的单元格,删除其他的单元格<tr> <td>总结</td> <td colspan="2">左右合并的单元格</td> </tr> 给保留的其他单元格设置:跨行合并(rowspan)跨列合并(colspan)|属性名|属性值|说明|rowspan合并单元格个数跨行合并,将多行的单元格垂直合并colspan合并单元格个数跨列合并,将多列的单元格水平合并<dl><dt>注意点:</dt><dd>只有同一个结构标签中的单元格才能合并,不能跨结构标签合并(不能跨:thead,tbody,tfoot)<dd></dl>表单标签input系列标签基本介绍场景:在网页中显示收集用户信息的表单效果标签名:inputinput标签可以通过type属性值的不同,展现的不同效果type属性值: |标签名|type属性值|类型|说明||---| |input|text|文本框|用于输入单行文本| |input|password|密码框|用于输入密码| |input|radio|单选框|用于多选一| |input|checkbox|多选框|用于多选多| |input|file|文件选择|用于上传文件| |input|submit|提交按钮|用于提交| |input|reset|重置按钮|用于重置| |input|button|普通按钮|默认无功能,之后配合js添加功能| input系列标签-文本框场景:在网页中显示输入的单行文本的表格控件type属性值:text/password代码:<input type="text/password" placeholder="显示内容">常用属性:|属性名|说明|placeholder占位符,提示用户输入的内容input系列标签-单选框场景:在网页中显示多选一的单选表单控件type属性值:radio代码: <body> <input type="radio" name="rex"> <input type="radio" name="rex"> </body常用属性:|属性名|说明|name通过name进行分组,有相同的name属性值的单选框为一组,一组中同时只能有一个被选中checked默认选中(checkbox也适用)<dl><dt>注意点:</dt><dd>name属性值对于单选框有分组功能<dd><dd>有相同的name属性值的单选框为一组,一组中只能同时有一个被选中<dd></dl>input系列标签-文件选择场景:在网页中显示文件选择的表单控件type属性:file代码:<input type="file" multiple>常用属性:|属性名|说明|multiple多文件选择input系列标签-按钮场景:在网页中显示不同功能的按钮表单控件type属性值:|标签名|type属性值|类型|说明|inputsubmit提交按钮点击之后提交数据给后端服务器inputreset重置按钮点击之后恢复表单默认值inputbutton普通按钮默认无任何功能,之后搭配js添加功能<dl><dt>注意点:</dt><dd>如果需要实现以上按钮功能,需要配合form标签使用<dd><dd>form使用方法:用form标签把表单标签一起包裹起来<dd></dl>button按钮标签场景:在网页中显示用户点击的按钮标签名:buttontype属性值(同input的按钮一样):|标签名|type属性值|类型|说明|buttonsubmit提交按钮点击之后提交数据给后端服务器buttonreset重置按钮点击之后恢复表单默认值buttonbutton普通按钮默认无任何功能,之后搭配js添加功能<dl><dt>注意点:</dt><dd>谷歌浏览器中的button默认是提交按钮<dd><dd>button标签是双标签,便于包裹其他内容:文字,图片等<dd></dl>select下拉菜单标签场景:在网页中提供多个选择项的下拉菜单控件标签组成:select标签:下拉菜单的整体option标签:下拉菜单的每一项常见属性:selected:下拉菜单的默认选中textarea文本域标签场景:在网页中提供可输入多行文本的表单控件标签名: textrea常见属性|属性名|说明|cols规定了文本域内可见宽度rows规定了文本域内可见行数<dl><dt>注意点:</dt><dd>右下角可以拖拽改变大小<dd><dd>实际开发时针对于样式效果推荐css设置<dd></dl>label标签场景:常用于绑定内容与标签关系标签名:label使用方法①:使用label标签把内容(如文本)包裹起来在表单标签添加id属性在label标签的for属性中设置对应的id值<body> <input type="radio" name="hex" id="1"><label for="1">内容</label> <input type="radio" name="hex" id="2"><label for="2">内容</label> </body>使用方法②:直接使用label标签把内容(如:文本)和表单标签一起包裹起来需要把label标签和for标签删掉即可<body> <label> <input type="radio" name="sex">内容 </label> <hr> <label> <input type="radio" name="sex">内容 <hr> </label> </body>语义化标签没有语义化布局标签-div和span场景:实际开发网页会大量频繁使用div和span这两个没有语义的布局标签div标签:一行只显示一个(独占一行)span标签:一行可以显示多个有语义化的布局标签场景:在html5新版本中,推出了一些有语义的布局标签供开发者使用(手机端使用)标签:|标签名|语义|header网页头部nav网页导航footer网页底部aside网页侧边栏section网页区块article网页文章<dl><dt>注意点:</dt><dd>以上标签显示特点和div一致,但是比div多了不同语义<dd></dl>字符实体常见字符实体场景:在网页中展示特殊符号效果时,需要使用字符实体替代结构:&英文;常见字符实体:|显示结果|描述|实体名称|" "空格 <小于号<>大于号>&和号&"引号"'撇号'(IE不支持)
2022年10月24日
316 阅读
0 评论
0 点赞
2022-10-09
python用MD5加密方法
简介这篇文章主要介绍了python MD5加密的示例,帮助大家更好的利用python进行加密,感兴趣的朋友可以了解下什么是MD5Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。生成MD5方法# 方式一: pwd = '123456' # 生成MD5对象 md5 = hashlib.md5() # 对数据加密 md5.update(pwd.encode('utf-8')) # 获取密文 pwd = md5.hexdigest() print(pwd) #方式二: pwd = '123456' pwd = hashlib.md5(bytes(pwd,encoding = 'utf-8')) print(pwd.hexdigest()) # 输出结果 e10adc3949ba59abbe56e057f20f883e e10adc3949ba59abbe56e057f20f883eMD5加盐值(SALT)MD5加盐值(SALT)安全性相对高一些,不容易被破解# MD5加盐值(SALT) pwd = '123456' # 生成MD5对象 md5 = hashlib.md5(b'~!@@#!#$DFDT@#$@#') # 一下两种方式与上面效果等同 # md5 = hashlib.md5('~!@@#!#$DFDT@#$@#'.encode('utf-8')) # md5 = hashlib.md5(bytes('~!@@#!#$DFDT@#$@#',encoding='utf-8')) # # 对数据加密 md5.update(pwd.encode('utf-8')) # 获取密文 pwd = md5.hexdigest() print(pwd)63e87e46fc935f18abb6b38bb0376fee
2022年10月09日
226 阅读
0 评论
0 点赞
linux设置开机自启动
2022年09月16日
388 阅读
0 评论
0 点赞
2022-09-16
简介linux设置开机自启动的方法我简单说两种,一种是在rc.local添加,另一种是init.d文件里添加。这样就不用老是重启服务器的时候再重新运行程序,导致网站的某些功能用不了了!!linux设置开机自启动的方法:1. rc.local文件中添加自启动命令1. 执行命令: 编辑"/etc/rc.local",添加你想开机运行的命令 2. 运行程序脚本:然后在文件最后一行添加要执行程序的全路径。 3. 例如,每次开机时要执行一个hello.sh,这个脚本放在/usr下面,那就可以在"/etc/rc.local"中加一行"/usr/./hello.sh",或者" cd /opt && ./hello.sh " '注意,你的命令应该添加在:exit 0 之前'2. 在/etc/init.d目录下添加自启动脚本linux在“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本或者可执行二进制文件Linux开机的时候,会加载运行/etc/init.d目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。系统服务的启动就是通过这种方式实现的。
2022-08-09
快速上手Git
Git 快速上手指南:从入门到日常使用Git 作为目前最流行的分布式版本控制系统,是程序员必备的工具之一。本文将带你快速掌握 Git 的核心操作,帮助你在 1 小时内上手并应用到实际开发中。一、环境准备:安装与初始化1. 安装 GitWindows:下载Git for Windows,默认安装即可(建议勾选 "Add Git Bash Here" 方便右键调用)。Mac:通过 Homebrew 安装 brew install git,或直接下载官方安装包。Linux:Ubuntu/Debian 系统使用 sudo apt-get install git,CentOS/RHEL 系统使用 sudo yum install git。2. 验证安装打开终端(Windows 用 Git Bash),输入以下命令,显示版本号即安装成功:git --version \# 示例输出:git version 2.45.13. 配置用户信息首次使用前需配置用户名和邮箱(与 JZQYUN/GitLab 账号一致),用于标识提交记录的作者:git config --global user.name "你的用户名" git config --global user.email "你的邮箱地址" \# 查看配置结果 git config --list二、核心操作:本地仓库管理1. 创建本地仓库方式 1:新建仓库在项目文件夹中初始化 Git 仓库:\# 1. 进入项目文件夹 cd /path/to/your/project \# 2. 初始化仓库(生成.git隐藏文件夹,存储版本信息) git init方式 2:克隆远程仓库从 JZQYUN/GitLab 等平台克隆已有项目到本地:git clone https://jzqyun.cn/用户名/仓库名.git \# 示例:git clone https://jzqyun.cn/octocat/Hello-World.git2. 版本控制核心流程Git 的核心是 "工作区→暂存区→本地仓库" 的流转,记住以下 3 个高频命令:命令作用场景git add将工作区文件添加到暂存区修改 / 新增文件后git commit -m "备注"将暂存区内容提交到本地仓库完成功能 / 修复 bug 后git status查看仓库状态(文件是否未跟踪 / 未提交)不确定文件状态时示例流程:\# 1. 创建测试文件 echo "Hello Git" > test.txt \# 2. 查看状态(显示test.txt为未跟踪文件) git status \# 3. 添加到暂存区 git add test.txt \# 4. 提交到本地仓库(备注需清晰,方便后续查历史) git commit -m "feat: 添加test.txt测试文件"3. 查看历史与回滚查看提交历史\# 简洁显示历史(一行一条记录) git log --oneline \# 示例输出: \# a1b2c3d (HEAD -> main) feat: 添加test.txt测试文件 \# d4e5f6g init: 初始化仓库回滚到指定版本当需要撤销错误提交时,使用 git reset(谨慎操作,避免丢失重要代码):\# 回滚到指定版本(版本号取git log --oneline显示的前几位即可) git reset --hard a1b2c3d三、团队协作:远程仓库操作日常开发中,通常需要与 JZQYUN/GitLab 等远程仓库交互,核心命令如下:1. 关联远程仓库若为本地新建仓库,需先关联远程仓库:git remote add origin https://jzqyun.cn/用户名/仓库名.git2. 拉取远程代码从远程仓库拉取最新代码到本地(避免冲突):\# 拉取main分支代码(main是默认主分支,部分项目用master) git pull origin main3. 推送本地代码到远程将本地仓库的提交推送到远程仓库:\# 首次推送需加-u参数,绑定本地与远程分支 git push -u origin main \# 后续推送可简化为 git push4. 常见问题:推送失败问题 1:提示 "fatal: could not read Username for 'https://jzqyun.cn'"解决:在 JZQYUN 平台添加本地 SSH 密钥,或用 HTTPS 协议输入账号密码(推荐 SSH 方式,免重复输密码)。问题 2:提示 "error: failed to push some refs"解决:本地代码非最新,先执行 git pull origin main 拉取远程代码,解决冲突后再推送。四、进阶技巧:提升效率1. 分支管理(必备)分支用于隔离不同功能开发,避免代码混乱。常用命令:\# 1. 新建并切换到功能分支(如开发登录功能) git checkout -b feature/login \# 2. 查看所有分支(当前分支前有\*标记) git branch \# 3. 切换回main分支 git checkout main \# 4. 合并分支(将feature/login合并到main) git merge feature/login \# 5. 删除已合并分支(功能上线后清理) git branch -d feature/login2. 忽略文件(.gitignore)创建 .gitignore 文件,指定不需要 Git 跟踪的文件(如日志、依赖包、IDE 配置):\# 编辑.gitignore文件 vim .gitignore \# 添加以下内容(根据项目类型调整) node\_modules/ # Node.js依赖包 logs/ # 日志文件 .idea/ # IntelliJ IDEA配置 \*.log # 所有.log后缀文件3. 快捷别名为常用命令设置别名,提升输入效率(如用 git st 代替 git status):git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit五、常用命令速查表类别命令说明初始化git init本地新建仓库 git clone 地址克隆远程仓库(地址格式:https://jzqyun.cn/用户名 / 仓库名.git)暂存与提交git add 文件名添加单个文件到暂存区 git add .添加所有修改到暂存区 git commit -m "备注"提交暂存区到本地仓库远程操作git remote add origin 地址关联远程仓库(地址格式:https://jzqyun.cn/用户名 / 仓库名.git) git pull origin 分支拉取远程代码 git push origin 分支推送本地代码到远程分支管理git checkout -b 分支名新建并切换分支 git merge 分支名合并指定分支到当前分支历史与回滚git log --oneline查看简洁提交历史 git reset --hard 版本号回滚到指定版本
2022年08月09日
17 阅读
1 评论
0 点赞
1
2
3