CMD SET % 字符串截取

news2024/11/17 16:46:22

 

@:: 使用 CSDN Cobol 格式化风格。

@::  *. 百分号 (%) 
 
@:: (1) % 作为变量引导符,有几种用途:
		在命令行窗口中,用 1 个 % 引号变量; 
		在批处理文件中,用 2 个 % 引号变量。

		[1] 两个 % 夹着一个变量名称,表示取(扩展)这个变量的值。
		 	举例:
		 	set var=123
		 	echo %var%

		[2] 字段替换
			{1} set var=%var:str1=str2%

				会扩展 var 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
				要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
				"str1" 如果以星号 (*) 打头,则表示匹配 var 扩展结果的前缀。

		[3] 字段截取
			为变量的扩展结果字符串指定子字符串。
			语法:
			set <variable>=[%variable:~[<begin>][,<length>]%]
			set <variable>=[%variable:~[<begin>][,<end>]%]
			set 的内部逻辑与 C++ STL Verctor 容器的迭代器一致,遵循左闭右开的原则。
			set 从扩展串中提取 [begin, end) 或 [begin, begin+length) 范围内的子串。
			begin, end, length 都是可选项。 
			begin 必须为整数,可以是负数。end 必须是负整数。length 必须是正整数。
			数值是正数时,可以省略数字前面的加号 (+)。
			begin  表示偏移量,为子串在扩展串中的开头字符位置。 
			end    表示偏移量,为子串在扩展串中的结尾字符位置加 1 。即 end 位置总是不提取字符的。
			length 表示子串的长度。
			begin  若不提供,则默认值为 0,指向扩展串的第一个字符。
			end    若不提供,则默认值为扩展字符串的最后一个字符的下一个位置。
			length 若不提供,则默认值为扩展字符串的剩余长度。
			end,length 若不提供,或可能超出扩展串的范围,则表示提取扩展字符串的剩余部分。
			举例:
			{1} set str=0123456789X987654321
				偏移量: 0123456789X9876543210
				        ↑                   ↑
				        begin               end
				正偏移量从左向右偏移,默认从左 0 起算。 原串中左边第 1 个字符。
				负偏移量从右向左偏移,默认从右 0 起算。 原串中右边第 1 个字符的后一个字符位置。
				总长度: str.length = 10+1+9 = 20
			以下例子,请对照例 {1} 的偏移量序列。
			{2} set var=%str:~10,5%
				var: X9876
				begin 偏移量为 10,从左向右数第 10+1=11 个字符开始提取,这里是 X 。 因为左边起第 1 个字符的偏移量是 0 。
				length = 5 为正数,表示提取的子串长度,提取 5 个字符。 
			{3} set var=%str:~10,-5%
				var: X9876
				begin 偏移量为 10,从左向右数第 10+1=11 个字符开始提取,这里是 X 。 
				end 的偏移量为 -5,从右向左数第 5 个字符结束提取。 注意是提取到 end 位置的前一个字符,即 6 。
			{4} set var=%str:~-10,-5%
				var: X9876
				begin 偏移量为 -10,从右向左数第 10 个字符开始提取,这里是 X 。 因为右边起第 1 个字符的偏移量是 1 。
				end 的偏移量为 -5,从右向左数第 5 个字符结束提取。 注意是提取到 end 位置的前一个字符,即 6 。
			{5} set var=%str:~-10,5%
				var: X9876
				begin 偏移量为 -10,从右向左数第 10 个字符开始提取,这里是 X 。 
				length = 5 为正数,表示提取的子串长度,提取 5 个字符。
			{6} set var=%str:~10%
				var: X987654321
				begin 偏移量为 10,从左向右数第 10+1=11 个字符开始提取,这里是 X 。
				end,length 不提供,则会提取 str 变量的剩余字符。
			{7} set var=%str:~-10%
				var: X987654321
				begin 偏移量为 -10,从右向左数第 10 个字符开始提取,这里是 X 。 
				end,length 不提供,则会提取 str 变量的剩余字符。
			{8} set var=%str:~,5%
				var: 01234
				begin 不提供,则偏移量默认值为 0,从 str 的第 1 个字符开始提取。
				length = 5 为正数,表示提取的子串长度,提取 5 个字符。
			{9} set var=%str:~,-5%
				var: 0123456789X9876
				begin 不提供,则偏移量默认值为 0,从扩展串的第 1 个字符开始提取。
				end 的偏移量为 -5,从右向左数第 5 个字符结束提取。 注意是提取到 end 位置的前一个字符,即 6 。
			{10} set var=%str:~%
				var: 0123456789X987654321
				begin,end,length 都不选,则提取整个扩展串 str 。
			{11} set var=%str:~10,500%
				var: X987654321
				length >= str.length, 超出扩展串的范围,则表示提取扩展字符串的剩余部分。
			{12} set var=%str:~-21,5%
				var: 01234
				begin < str.begin, 则从左向右数第 1 个字符开始提取。
			{13} set var=%str:~20,1%
				var: null
				begin >= str.length,提取失败。 这时 var 被设置为 null (未定义)。
			{14} set var=%str:~10,-10%
				set var=%str:~15,-10%
				var: null
				begin >= end,提取失败。 这时 var 被设置为 null (未定义)。
			{15} set var=%str:~0,0%
				set var=%str:~+0,-0%
				set var=%str:~-0,+0%
				set var=%str:~-0,-0%
				var: null
				begin,end,length 均为 0,提取失败。 这时 var 被设置为 null (未定义)。
			{16} set var=%str:~,%
				var: null
				begin,end,length 都不提供,存在逗号(,) ,提取失败。 这时 var 被设置为 null (未定义)。
			{17} set var=%str:10,5%
				var: %str:10,5%
				~ 不提供,则表达式无效,这时 var 为字面常量。

		[3] %0, %1, %2 ... %9
		 	表示取传入脚本或函数的参数,数字 n 为 1 到 9, 表示第 n 个参数。第 0 个参数为整个命令行调用语句。
		 	%*
		 	表示取传入脚本或函数的所有参数。不包括执行命令名称。

		[4] for 循环中引用枚举变量
		 	举例:
		 	:: 1.bat 文件中
		 	for /f "delims=" %%i in ('dir ') do set val=!val! %%i
		 	echo val=%val%
		 	执行 “1.bat”,将一个命令(dir)的返回结果传给一个变量(val)

		[5] 扩充变量 (Variable substitution)
			批处理参数 (%n) 的替代已被增强。您可以使用以下语法:
				%~1         - 扩充 %1,然后删除引号 (")
				%~f1        - 将 %1 扩充到一个完全合格的路径名
				%~d1        - 仅将 %1 扩充到一个驱动器号
				%~p1        - 仅将 %1 扩充到一个路径
				%~n1        - 仅将 %1 扩充到一个文件名
				%~x1        - 仅将 %1 扩充到一个文件扩展名
				%~s1        - 扩充的路径指含有短名
				%~a1        - 将 %1 扩充到文件属性
				%~t1        - 将 %1 扩充到文件的日期/时间
				%~z1        - 将 %1 扩充到文件的大小
				%~$PATH:1   - 查找列在 PATH 环境变量的目录,并将 %1 扩充到找到的第一个完全合格的名称。
				              如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串。
				可以组合修定符来取得多重结果:
				%~dp1       - 只将 %1 扩展到驱动器号和路径
				%~nx1       - 只将 %1 扩展到文件名和扩展名
				%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,并扩展到找到的第一个文件的驱动器号和路径。
				%~ftza1     - 将 %1 扩展到类似 DIR 的输出行。
				在上面的例子中,
				%1 和 PATH 可以被其他有效数值替换。 
				%~ 语法被一个有效参数号码终止。 %~ 修定符不能跟 %* 一起使用。

		 	举例:
		 	%~dp0
		 	比如你有个批处理a.bat在D:\qq文件夹下,a.bat内容为
				cd /d %~dp0
		 	在这里 cd /d %~dp0的意思就是 cd /d d:\qq,%0代表批处理本身 d:\qq\a.bat,
		 	~dp是变量扩充,d既是扩充到分区号 d:,p就是扩充到路径 \qq,dp就是扩充到分区号路径 d:\qq

@:: (2) % 作为取模符号(求余数),需要在“评估表达式”中才起作用。
		set 语法:
		set /A <expression> 
		set 命令使用 /A 把后面的表达式评估为运算式。详见 “*. 评估器运算符优先权 set /A”
		举例:
		在命令行窗口中,用 1 个 % 表示特殊作用求余数的特殊符号:
			set /a mod=100%3
		在批处理文件中,用 2 个 % 表示求余数的特殊符号:
			set /a mod=100%%3
		%   如果不在评估表达式中,则在
			在命令行窗口中,用 1 个 % 表示普通的 % 字面字符。
			在批处理文件中,用 2 个 % 表示普通的 % 字面字符。


@::  *. 百分号 (%) 
 
@:: (1) % 作为变量引导符,有几种用途:
        在命令行窗口中,用 1 个 % 引号变量; 
        在批处理文件中,用 2 个 % 引号变量。

        [1] 两个 % 夹着一个变量名称,表示取(扩展)这个变量的值。
             举例:
             set var=123
             echo %var%

        [2] 字段替换
            {1} set var=%var:str1=str2%

                会扩展 var 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
                要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
                "str1" 如果以星号 (*) 打头,则表示匹配 var 扩展结果的前缀。

        [3] 字段截取
            为变量的扩展结果字符串指定子字符串。
            语法:
            set <variable>=[%variable:~[<begin>][,<length>]%]
            set <variable>=[%variable:~[<begin>][,<end>]%]
            set 的内部逻辑与 C++ STL Verctor 容器的迭代器一致,遵循左闭右开的原则。
            set 从扩展串中提取 [begin, end) 或 [begin, begin+length) 范围内的子串。
            begin, end, length 都是可选项。 
            begin 必须为整数,可以是负数。end 必须是负整数。length 必须是正整数。
            数值是正数时,可以省略数字前面的加号 (+)。
            begin  表示偏移量,为子串在扩展串中的开头字符位置。 
            end    表示偏移量,为子串在扩展串中的结尾字符位置加 1 。即 end 位置总是不提取字符的。
            length 表示子串的长度。
            begin  若不提供,则默认值为 0,指向扩展串的第一个字符。
            end    若不提供,则默认值为扩展字符串的最后一个字符的下一个位置。
            length 若不提供,则默认值为扩展字符串的剩余长度。
            end,length 若不提供,或可能超出扩展串的范围,则表示提取扩展字符串的剩余部分。
            举例:
            {1} set str=0123456789X987654321
                偏移量: 0123456789X9876543210
                        ↑                   ↑
                        begin               end
                正偏移量从左向右偏移,默认从左 0 起算。 原串中左边第 1 个字符。
                负偏移量从右向左偏移,默认从右 0 起算。 原串中右边第 1 个字符的后一个字符位置。
                总长度: str.length = 10+1+9 = 20
            以下例子,请对照例 {1} 的偏移量序列。
            {2} set var=%str:~10,5%
                var: X9876
                begin 偏移量为 10,从左向右数第 10+1=11 个字符开始提取,这里是 X 。 因为左边起第 1 个字符的偏移量是 0 。
                length = 5 为正数,表示提取的子串长度,提取 5 个字符。 
            {3} set var=%str:~10,-5%
                var: X9876
                begin 偏移量为 10,从左向右数第 10+1=11 个字符开始提取,这里是 X 。 
                end 的偏移量为 -5,从右向左数第 5 个字符结束提取。 注意是提取到 end 位置的前一个字符,即 6 。
            {4} set var=%str:~-10,-5%
                var: X9876
                begin 偏移量为 -10,从右向左数第 10 个字符开始提取,这里是 X 。 因为右边起第 1 个字符的偏移量是 1 。
                end 的偏移量为 -5,从右向左数第 5 个字符结束提取。 注意是提取到 end 位置的前一个字符,即 6 。
            {5} set var=%str:~-10,5%
                var: X9876
                begin 偏移量为 -10,从右向左数第 10 个字符开始提取,这里是 X 。 
                length = 5 为正数,表示提取的子串长度,提取 5 个字符。
            {6} set var=%str:~10%
                var: X987654321
                begin 偏移量为 10,从左向右数第 10+1=11 个字符开始提取,这里是 X 。
                end,length 不提供,则会提取 str 变量的剩余字符。
            {7} set var=%str:~-10%
                var: X987654321
                begin 偏移量为 -10,从右向左数第 10 个字符开始提取,这里是 X 。 
                end,length 不提供,则会提取 str 变量的剩余字符。
            {8} set var=%str:~,5%
                var: 01234
                begin 不提供,则偏移量默认值为 0,从 str 的第 1 个字符开始提取。
                length = 5 为正数,表示提取的子串长度,提取 5 个字符。
            {9} set var=%str:~,-5%
                var: 0123456789X9876
                begin 不提供,则偏移量默认值为 0,从扩展串的第 1 个字符开始提取。
                end 的偏移量为 -5,从右向左数第 5 个字符结束提取。 注意是提取到 end 位置的前一个字符,即 6 。
            {10} set var=%str:~%
                var: 0123456789X987654321
                begin,end,length 都不选,则提取整个扩展串 str 。
            {11} set var=%str:~10,500%
                var: X987654321
                length >= str.length, 超出扩展串的范围,则表示提取扩展字符串的剩余部分。
            {12} set var=%str:~-21,5%
                var: 01234
                begin < str.begin, 则从左向右数第 1 个字符开始提取。
            {13} set var=%str:~20,1%
                var: null
                begin >= str.length,提取失败。 这时 var 被设置为 null (未定义)。
            {14} set var=%str:~10,-10%
                set var=%str:~15,-10%
                var: null
                begin >= end,提取失败。 这时 var 被设置为 null (未定义)。
            {15} set var=%str:~0,0%
                set var=%str:~+0,-0%
                set var=%str:~-0,+0%
                set var=%str:~-0,-0%
                var: null
                begin,end,length 均为 0,提取失败。 这时 var 被设置为 null (未定义)。
            {16} set var=%str:~,%
                var: null
                begin,end,length 都不提供,存在逗号(,) ,提取失败。 这时 var 被设置为 null (未定义)。
            {17} set var=%str:10,5%
                var: %str:10,5%
                ~ 不提供,则表达式无效,这时 var 为字面常量。

        [3] %0, %1, %2 ... %9
             表示取传入脚本或函数的参数,数字 n 为 1 到 9, 表示第 n 个参数。第 0 个参数为整个命令行调用语句。
             %*
             表示取传入脚本或函数的所有参数。不包括执行命令名称。

        [4] for 循环中引用枚举变量
             举例:
             :: 1.bat 文件中
             for /f "delims=" %%i in ('dir ') do set val=!val! %%i
             echo val=%val%
             执行 “1.bat”,将一个命令(dir)的返回结果传给一个变量(val)

        [5] 扩充变量 (Variable substitution)
            批处理参数 (%n) 的替代已被增强。您可以使用以下语法:
                %~1         - 扩充 %1,然后删除引号 (")
                %~f1        - 将 %1 扩充到一个完全合格的路径名
                %~d1        - 仅将 %1 扩充到一个驱动器号
                %~p1        - 仅将 %1 扩充到一个路径
                %~n1        - 仅将 %1 扩充到一个文件名
                %~x1        - 仅将 %1 扩充到一个文件扩展名
                %~s1        - 扩充的路径指含有短名
                %~a1        - 将 %1 扩充到文件属性
                %~t1        - 将 %1 扩充到文件的日期/时间
                %~z1        - 将 %1 扩充到文件的大小
                %~$PATH:1   - 查找列在 PATH 环境变量的目录,并将 %1 扩充到找到的第一个完全合格的名称。
                              如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串。
                可以组合修定符来取得多重结果:
                %~dp1       - 只将 %1 扩展到驱动器号和路径
                %~nx1       - 只将 %1 扩展到文件名和扩展名
                %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,并扩展到找到的第一个文件的驱动器号和路径。
                %~ftza1     - 将 %1 扩展到类似 DIR 的输出行。
                在上面的例子中,
                %1 和 PATH 可以被其他有效数值替换。 
                %~ 语法被一个有效参数号码终止。 %~ 修定符不能跟 %* 一起使用。

             举例:
             %~dp0
             比如你有个批处理a.bat在D:\qq文件夹下,a.bat内容为
                cd /d %~dp0
             在这里 cd /d %~dp0的意思就是 cd /d d:\qq,%0代表批处理本身 d:\qq\a.bat,
             ~dp是变量扩充,d既是扩充到分区号 d:,p就是扩充到路径 \qq,dp就是扩充到分区号路径 d:\qq

@:: (2) % 作为取模符号(求余数),需要在“评估表达式”中才起作用。
        set 语法:
        set /A <expression> 
        set 命令使用 /A 把后面的表达式评估为运算式。详见 “*. 评估器运算符优先权 set /A”
        举例:
        在命令行窗口中,用 1 个 % 表示特殊作用求余数的特殊符号:
            set /a mod=100%3
        在批处理文件中,用 2 个 % 表示求余数的特殊符号:
            set /a mod=100%%3
        %   如果不在评估表达式中,则在
            在命令行窗口中,用 1 个 % 表示普通的 % 字面字符。
            在批处理文件中,用 2 个 % 表示普通的 % 字面字符。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/349134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HashMap如何避免内存泄露问题

HashMap对于Java开发人员来说&#xff0c;应该是一种非常非常熟悉的数据结构了&#xff0c;应用场景相当广泛。 本文重点不在于介绍如何使用HashMap&#xff0c;而是关注在使用HashMap过程中&#xff0c;可能会导致内存泄露的情况&#xff0c;下面将以示例的形式展开具体介绍。…

【Java】properties 和 yml 的区别

文章目录properties和yml的区别① 定义和定位不同② 语法不同③ yml更好的配置多种数据类型④ yml可以跨语言⑤ 总结properties和yml的区别 这几天刚好看到Spring Boot当中有两种配置文件的方式&#xff0c;但是这两种配置方式有什么区别呢&#xff1f; properties和yml都是S…

hadoop考试应急

概述 四大特点&#xff1a;大量化、快速化、多元化、价值化 关键技术&#xff1a;采集、存储管理、处理分析、隐私和安全 计算模式&#xff1a;批处理、流、图、查询分析计算 Hadoop处理架构 了解就好 2007年&#xff0c;雅虎在Sunnyvale总部建立了M45——一个包含了4000…

Leetcode 每日一题 2341. 数组能形成多少数对

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

《Java并发编程之美》- 线程终止的方法

多线程并发编程之美 等待线程执行终止的 join 方法 执行的代码 public class MyThreadThree {public static void main(String[] args) throws InterruptedException {Thread thread_anew Thread(()->{try {Thread.sleep(1000);} catch (InterruptedException e) {e.prin…

信息系统项目管理师真题精选(三)

1、以下关于我国现阶段电子政务建设的叙述中&#xff0c;不正确的是&#xff1a;&#xff08; &#xff09;。A.我国电子政务建设一直坚持统一规划&#xff0c;加强领导&#xff0c;需求主导&#xff0c;突出重点的原则B.我国电子政务建设一直坚持整合资源&#xff0c;拉动产业…

静态代理和动态代理的区别以及实现过程

前言 代理模式是一种设计模式&#xff0c;能够使得在不修改源目标的前提下&#xff0c;额外扩展源目标的功能。即通过访问源目标的代理类&#xff0c;再由代理类去访问源目标。这样一来&#xff0c;要扩展功能&#xff0c;就无需修改源目标的代码了。只需要在代理类上增加就可…

《真象还原》读书笔记——第五章 保护模式进阶,向内核迈进(特权级,更新)

5.4 特权级深入浅出 5.4.1 特权级哪点事 计算机 访问 可分为访问者和被访问者。 建立特权机制为了通过特权来检查合法性。 0、1、2、3级&#xff0c;数字越小&#xff0c;权力越大。 0特权级是系统内核特权级。 用户程序是3特权级&#xff0c;被设计为“有需求就找操作系统”…

QT+OpenGL光照

QTOpenGL光照 本篇完整工程见gitee:QtOpenGL 对应点的tag&#xff0c;由turbolove提供技术支持&#xff0c;您可以关注博主或者私信博主 颜色 现实生活中看到的物体的颜色并不是这个物体真正拥有的颜色&#xff0c;而是它所反射的颜色 太阳光能被看见的白光是多找演的的组合…

Linux部署项目

一、手动部署 1、终端直接部署&#xff08;前台运行&#xff09; &#xff08;1&#xff09;在IDEA中开发SpringBoot项目并打成jar包 &#xff08;2&#xff09;将jar包上传到Linux服务器 mkdir /usr/local/app #创建目录&#xff0c;将项目jar包放到此目录&#xff08;3&…

C++——哈希4|布隆过滤器

目录 布隆过滤器 完整代码 布隆过滤器应用 布隆过滤器的查找 布隆过滤器删除 布隆过滤器优点 布隆过滤器缺陷 布隆过滤器海量数据处理 布隆过滤器 位图只能映射整形&#xff0c;而对于字符串却无能为力。 把字符串用哈希算法转成整形&#xff0c;映射一个位置进行标…

Axure教程(一)——线框图与高保真原型图制作

前面我们学习了制作网页的技能&#xff0c;从这里开始我们来学习前端必备技能&#xff0c;就是用Axure来制作原型图&#xff0c;一方面我们能提前绘制出我们所需的页面&#xff0c;这在我们开发的时候能节省大量的时间&#xff0c;另一方面我们能通过给用户进行体验从而能够发现…

robotframework + selenium自动化测试常见的问题

1、 插入中文数据提示 FAIL UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 92-107: ordinal not in range(25 DataBaseLibrary插入中文乱码的解决&#xff1a;修改D:\Python27\Lib\site-packages\DatabaseLibrary\connection_manager.py里的co…

极客大挑战 2021

题量很大&#xff0c;收获挺多&#xff0c;持续时间也长&#xff0c;据说结束之后会再持续一段时间&#xff0c;然后题目会开源。 WEB Dark 暗网签到&#xff0c;难以置信 Welcome2021 改个请求方法会提示你文件&#xff0c;再进去就好了 babysql 直接把请求包扔sqlmap里&…

什么是仓库管理?

仓库管理包括仓库日常运营所触及的准绳和流程。从较高的层次上讲&#xff0c;这包括接纳和组织仓库空间、布置劳动力、管理库存和完成订单。放大来看&#xff0c;你会发现有效的仓库管理触及到优化和集成这些过程中的每一个&#xff0c;以确保仓库操作的一切方面协同工作&#…

ElasticSearch之RestClient操作索引库和文档

前言&#xff1a;上文介绍了使用DSL语言操作索引库和文档&#xff0c;本篇文章将介绍使用Java中的RestClient来对索引库和文档进行操作。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们&#x1f609;&#x1f609;。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x…

linux系统编程1--文件编程read和write

write函数进行文件写入操作1.write函数原型&#xff1a;ssize_t write(int fd, const void *buf, size_t count);2.参数1&#xff1a;int fd&#xff0c;文件描述符即open函数的返回值&#xff1b;参数2&#xff1a;const void *buf&#xff0c;写入到fd文件内容的写入缓冲区&a…

10万字企业数字化(技术中台、数据中台、工业互联网平台建设方案

【版权声明】本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间删除&#xff01;完整资料关注公众号“智慧方案文库”&#xff0c;部分资料内容&#xff1a; 目录 1 概述 …

【nodejs-05】黑马nodejs学习笔记05-数据库基本操作02

文章目录4.在项目中操作MySQL4.1 在项目中操作数据库的步骤4.2 安装与配置 mysql 模块4.3 使用 mysql 模块操作 MySQL 数据库5.前后端的身份认证5.1 Web 开发模式5.2 身份认证5.3 Session 认证机制5.4 在 Express 中使用 Session 认证5.5 JWT 认证机制5.6 在 Express 中使用 JW…

用类比方式学习编程中函数递归(个人理解仅供参考)(内含汉诺塔问题的求解)

目录 1.前言 2.递归的数学模型 3.相关的c语法 4.将递归的数学模型写成编程语言 5.利用类比方法将实际问题的代码写成函数递归的形式 例1: 例2: 6.汉诺塔问题的求解 1.前言 本人在学习函数递归编程方法的过程中&#xff0c;发现用类比的方式学习递归法可帮助我们在各种编…