Web06--JavaScript基础02

1、JS流程控制语句

JS与Java一样,也有三个流程控制语句: 顺序结构 选择结构 循环结构

1.1 选择结构

1.1.1 if结构

<script type="text/javascript">
  if (条件表达式) {
    代码块;
  } else if(条件表达式){
    代码块;
  } else {
    代码块;
  }
</script>

注意事项:JS的条件语句和Java语法基本一样,但是对数据类型的真假判断有些区别。JS中对各种数据类型作为布尔值有以下特点:

类型

用法

boolean

true为真、false为假

number

非0为true

string

除了空字符串(""),其他都是true

null&undefined

都是false

对象

所有对象都为true

  • 总结: 无意义的数据都为false 反之都为true
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>选择结构--if</title>
	</head>
	<body>
	</body>
	
	<script>
		let age = 20;
		// if单分支
		if(age > 18){
			console.log("你已成年");
		}
		
		// if双分支
		if (age > 18) {
			console.log("你已成年");
		} else{
			console.log("你未成年");
		}
		
		// if多分支
		let score = Math.floor(Math.random()*100);
		console.log(score);
		if(score >= 90){
		    console.log("成绩优秀");
		}else if(score >= 70){
		    console.log("成绩良好");
		}
		else if(score >= 60){
		    console.log("成绩及格");
		}else{
		    console.log("成绩不及格");
		}
		
	</script>
</html>

1.1.2 switch结构

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>选择结构--switch</title>
	</head>
	<body>
		<script>
			let month = 1;
			switch (month){
				case 1:
				case 2:
				case 3:
					console.log("春天");
					break;
				case 4:
				case 5:
				case 6:
					console.log("夏天");
					break;
				case 7:
				case 8:
				case 9:
					console.log("秋天");
					break;
				case 10:
				case 11:
				case 12:
					console.log("冬天");
					break;
				default:
					console.log("无此月份")
					break;
			}
		</script>
	</body>
</html>

在java中,switch语句可以接受的数据类型: byte int shor char,枚举(1.5) ,String(1.7)

在JS中,switch语句可以接受任意的原始数据类型

1.2 循环结构

1.2.1 for循环

  • 普通for循环
  • 增强for循环 for-of循环
  • 索引for循环 for-in循环
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>循环结构--for循环</title>
	</head>
	<body>
		<script>
			// for循环
			console.log("===================普通for循环===================");
			for (var i = 0; i < 5; i++) {
				console.log(i);
			}
			
			var arr = ["张三","李四","王五"];
			// for-of循环
			console.log("===================for-of循环===================");
			for (let s of arr) {
				console.log(s);
			}
			
			// for-in循环
			console.log("===================for-in循环===================");
			for (let a in arr) {
				console.log(a + ":" + arr[a]);
			}
		</script>
	</body>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>for-of与for-in循环</title>
	</head>
	<body>
		
		<script>
			var person = {
				name:"张三",
				age:"20",
				sex:"男"
			}
			
			// for-in循环
			console.log("===================for-in循环===================");
			for (let key in person) {
				console.log(key + ":" + person[key]);
			}
			
			// for-of循环
			console.log("===================for-of循环===================");
			for (let s of person) {
				console.log(s);
			}
			
		</script>
	</body>
</html>

1. for-in可以遍历对象,for-of不能遍历对象

2. for-in遍历出数组中的索引,for-of遍历出数组中的元素

1.2.2 while循环

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>while循环</title>
	</head>
	<body>
		<script>
			var num = 10;
			while(num > 0){
				console.log(num);
				num--;
			}
		</script>
	</body>
</html>

1.2.3 do-while循环

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>do-while循环</title>
	</head>
	<body>
		
		<script>
			var num = 10;
			do{
				console.log(num);
				num--
			}while(num > 0)
		</script>
	</body>
</html>

1.2.4 循环总结

while 和Java一样

do-while 和Java一样

重点掌握:

        普通for 与 Java一样

        for-in:遍历出数组的索引

                遍历出对象中的属性名key

        for-of:遍历数组中的元素

2、JS函数(方法)

JS函数是执行特定功能的代码块,也可以称为JS方法。与Java中的方法的功能是一样的。

2.1 语法

function 函数名(参数列表){
  函数体;
  [return 返回值;]
}

2.2 函数定义

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>函数的定义</title>
	</head>
	<body>
		<script>
			
			// 无参无返回值
			function jiujiu(){
				for (var i = 1; i <= 9; i++) {
					for (var j = 1; j <= i; j++) {
						document.write(j + "*" + i + "=" + i*j);
						document.write("&emsp;")
						if(i * j < 10){
							document.write("&nbsp;&nbsp;")
						}
					}
					document.write("<br>");
				}
			}
			
			// 无参有返回值
			function jiecheng(){
				var mul = 1;
				var sum = 0;
				for (var i = 1; i <= 10; i++){
					mul *= i;
					sum += mul;
				}
				return sum;
			}
			
			// 有参无返回值
			function jiecheng1(a){
				var mul = 1;
				var sum = 0;
				for (var i = 1; i <= a; i++){
					mul *= i;
					sum += mul;
				}
				console.log(sum);
			}
			
			// 有参有返回值
			function getSum(a,b){
				return a + b;
			}
			
			// 函数调用
			jiujiu();
			console.log(jiecheng());
			jiecheng1(10);
			console.log(getSum(10,20));
			
		</script>
	</body>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>函数的定义</title>
	</head>
	<body>
		
		<script>
			
			var demo1 = new Function("a,b", "console.log(a+b)");
			demo1(4,4); 
			
			/* 匿名函数: 了解 */
			var demo2  = function(){
				console.log(77);
			}
			demo2();
			
			// ES6写法
			// 无参有返回值
			var fun1 = () => "Hello";
			console.log(fun1())
			
			// 有参无返回值
			let fun2 = args =>{
			    console.log(args);
			}
			fun2(1024);
			
			// 有参有返回值
			let fun3 = (arg1,arg2) => arg1+arg2
			// 等价于
			let fun4 = (arg1,arg2) => {return arg1+arg2}
			console.log(fun3(10,20))
			console.log(fun4(10,20))
			
		</script>
	</body>
</html>

2.3 JS函数注意事项

  • 方法定义时,形参的类型不用写,返回值类型可写可不写
  • 如果定义名称相同的方法,会被覆盖,js中没有方法的重载的概念
  • 在JS中,方法的调用只与方法的名称有关,和参数列表无关
  • 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
  • JS函数中也可以有匿名函数,匿名函数经常会跟事件进行结合着使用

3、JS常用内置对象

3.1 Number对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Number对象</title>
	</head>
	<body>
		
		<script>
			// number对象属性
			var max = Number.MAX_VALUE;
			console.log(max);
			
			var min = Number.MIN_VALUE;
			console.log(min)
			
			
			// number对象方法
			
			// toString()  将数字作为字符串返回。
			var num = 10086;
			console.log(typeof(toString(num)));
			
			// valueOf()  以数字形式返回数字。
			var num = 12345;
			console.log(typeof(num.valueOf()));
		</script>
	</body>
</html>

3.2 String对象

3.2.1 创建对象

有三种方式: 单引号('') 、双引号("") 、反引号(``)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>String对象</title>
	</head>
	<body>
		<script>
			
			// 字符串对象创建
			//双引号字符串 
			let s1 = "双引号字符串"; 
			
			//单引号 
			let s2 = '单引号字符串'; 
			
			//反引号字符又叫做`字符串模板` ,模板中可以使用${}来进行插值.
			let s3 = `反引号字符串`;
			
			let n = 3547;	
			let s5 =`你的验证码是:${n}`;
			console.log(s5);//你的验证码是:3547
			
			// 字符串属性
			let str = "hello world";
			console.log(str.length)
			
		</script>
	</body>
</html>

3.2.2 常用方法

方法

说明

substring()

提取字符串中两个指定的索引号之间的字符

toLowerCase()

把字符串转换为小写。

toUpperCase()

把字符串转换为大写。

replace()

替换与正则表达式匹配的子串。

charAt()

返回在指定位置的字符。

trim()

移除字符串首尾空白

split(delimiter)

把字符串分割为子字符串数组;分割为数组

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>String对象方法</title>
	</head>
	<body>
		<script>
			
			let str = "Hello World";
			
			// length	是string对象属性
			console.log(str.length);
			
			// indexOf()  返回字符串中指定文本首次出现的索引(位置)
			// lastIndexOf()  返回指定文本在字符串中最后一次出现的索引
			// 如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。
			console.log(str.indexOf('o'));
			console.log(str.lastIndexOf('o'));
			console.log(str.indexOf('hello'));
			
			// 提取部分字符串
			// slice(start, end)  提取字符串的某个部分并在新字符串中返回被提取的部分
				// 如果省略第二个参数,则该方法将裁剪字符串的剩余部分:
				// 如果参数为负,则从字符串的结尾开始计数。
			// substring(start, end)  类似于 slice()。
				// 不同之处在于 substring() 无法接受负的索引。
			// substr(start, length)  substr() 类似于 slice()。
				// 不同之处在于第二个参数规定被提取部分的长度。
			console.log(str.slice(0,5));
			console.log(str.slice(6));
			console.log(str.slice(-1));
			
			console.log(str.substring(0,5));
			console.log(str.substring(6));
			
			console.log(str.substr(0,5));
			console.log(str.substr(1,10));
			
			// 替换字符串内容
			// replace()  用另一个值替换在字符串中指定的值:它返回的是新字符串
				// replace() 只替换首个匹配,replace() 对大小写敏感。
			let s = str.replace("Hello","hello");
			console.log(s);
			
			// toUpperCase()  把字符串转换为大写
			console.log(str.toUpperCase());
			
			// toLowerCase()  把字符串转换为小写
			console.log(str.toLowerCase());
			
			let str1 = "JavaScript";
			// concat()  连接两个或多个字符串:
			console.log(str.concat(str1));
			
			let str2 = "   1254   152   ";
			// trim()  方法删除字符串两端的空白符:
			console.log(str2.trim());
			
			// charAt()  返回字符串中指定下标(位置)的字符串:
			console.log(str.charAt(0));
			
			// split()  将字符串转换为数组:
			console.log(str.split(" "));
			
		</script>
	</body>
</html>

3.3 Math对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Math对象</title>
	</head>
	<body>
		
		<script>
			
			// Math对象属性
			console.log(Math.PI);
			console.log(Math.E);
			
			// Math对象方法
			
			// 取绝对值
			console.log(Math.abs(-12));
			// 向上取整
			console.log(Math.ceil(12.1));
			// 向下取整
			console.log(Math.floor(12.9));
			// 取最大值
			console.log(Math.max(10,20,30,40,50,100));
			// 取最小值
			console.log(Math.min(10,20,30,40,50,100));
			// x的y次幂
			console.log(Math.pow(2,3));
			// 取0-1的随机数
			console.log(Math.random());
			// 四舍五入
			console.log(Math.round(12.5));
			console.log(Math.round(12.4));
			
		</script>
	</body>
</html>

3.4 Array对象

1. JS中,数组元素的类型可变的。

2. JS中,数组长度可变的。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>数组对象Array</title>
	</head>
	<body>
		<script>
			// 创建数组对象
			let arr1 = new Array();
			
			let arr2 = new Array(3);
			
			let arr3 = ["张三","李四","王五"];
			
			// 数组的属性
			console.log(arr3.length);
			
			// 数组的方法
			// toString()  把数组转成字符串
			console.log(arr3.toString())
			
			// pop()  删除数组最后一个元素,并返回该元素
			// push()  在数组后追加一个元素,并返回数组长度
			console.log(arr3.pop());
			console.log(arr3)
			
			console.log(arr3.push("111"));
			console.log(arr3)
			
			// shift()  删除首个数组元素,并返回该元素
			console.log(arr3.shift());
			console.log(arr3)
			
			// splice(startIndex,len) 从startIndex开始删,删除len个元素 
			arr3.splice(0,2); 
			console.log(arr3);
			
			// concat()  合并数组
			let arr4 = ["张三","李四","王五"];
			let arr5 = [11,88,33,44,55];
			let arr6 = arr4.concat(arr5);
			console.log(arr6);
			
			// 数组排序
			let arr7 = ["abc","cdf","frv","adf"];
			console.log(arr7.sort());
			
			console.log(arr5.sort(function(a,b){return a-b}));
			
			
			// 数组遍历
			for (var i = 0; i < arr6.length; i++) {
				document.write(arr6[i]);
				document.write(",");
			}
			document.write("<br/>");
			for (let s of arr6) {
				document.write(s);
				document.write(",");
			}
			document.write("<br/>");
			for (let a in arr6) {
				document.write(arr6[a]);
				document.write(",");
			}
			document.write("<br/>");
			
		</script>
	</body>
</html>

3.5 Date对象

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Date对象</title>
  </head>
  <body>

    <script>
      // 创建日期对象
      let date = new Date();

      console.log(date);
      // 获取年
      console.log(date.getFullYear());
      // 获取月
      console.log(date.getMonth() + 1);
      // 获取日
      console.log(date.getDate());
      // 获取星期
      console.log(date.getDay());
      // 获取时
      console.log(date.getHours());
      // 获取分
      console.log(date.getMinutes());
      // 获取秒
      console.log(date.getSeconds());

      // 获取当前的日期字符串
      console.log(date.toLocaleDateString());
      // 获取当前的时间字符串
      console.log(date.toLocaleTimeString());
      // 获取当前的日期时间字符串
      console.log(date.toLocaleString());
    </script>
  </body>
</html>

案例:数字时钟

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>数字时钟</title>
	</head>
	<body>
		<p id="p1"></p>
		<div id="div1"></div>
		<script>
			
			setInterval(function(){
				let date = new Date();
				document.getElementById("p1").innerHTML = date.toLocaleString();
			},1000);
			
		</script>
		
		<script>
			
			setInterval(() =>{
				let date1 = new Date();
				document.getElementById("div1").innerHTML = date1.toLocaleString();
			},1000);
			
		</script>
	</body>
</html>

3.6 RegExp对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>正则对象--RegExp</title>
	</head>
	<body>
		
		<script>
			// 创建正则表达式对象
			// 方式一:
			let reg1 = new RegExp("^[a-zA-Z]{6,9}$");
			
			// 正则匹配测试
			console.log(reg1.test("hellojava")); // true
			
			// 方式二:
			let reg2 = /^[a-zA-Z]{6,9}$/;
			console.log(reg2.test("helloworld")); // false
			
			/**
			 * 正则表达式详解
			 * [] :指定一个字符位置上出现的字符的范围 [abc] 该字符位置出现 a 或 b 或 c
			 * () :指定一个单词整体  
       *		(abc|bcd|ddd) 这是该位置出现abc 或 bcd 或 ddd 字符串整体,非单个字符
			 * 
			 * 元字符
			 * 	. : 匹配换行和结束符的任意一个字符
			 * \w : 表示匹配任意一个字母、数字或下划线  [_a-zA-Z0-9]
			 * \d : 任意一个数字
			 * ^  : 开始
			 * $  : 结束
			 * 
			 * 量词
			 * + : 最少出现一次   等同{1,}
			 * * : 0个以上            {0,}
			 * ? : 0个或者1个         {0,1}
			 * 
			 * {n}   : 出现n次
			 * {n,}  : 最少出现n次
			 * {n,m} : 最少出现n次,最多出现m次
			**/

      /**
			 * /^[a-z]{6,9}$/i  表示忽略大小写
			 * /^[a-z]{6,9}$/g  执行全局匹配,而不是在第一个匹配后停止
			**/
			
			//字母开头的,其它为任意字符,长度6~8的字符串
			let reg3 = /^[a-zA-Z].{5,7}$/;			
			console.log(reg3.test("q1wq#%"));
						
			// \w的使用
			reg3 = /^[\w]{2,3}$/;
			console.log(reg3.test("_1_"));
			
			//检测字符串是否符合当前的正则规则
			let reg4 = /^[a-zA-Z][\w]+$/;
			console.log(reg4.test("a112qwe312"));
			
		</script>
	</body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flink中的容错机制

一.容错机制 在Flink中&#xff0c;有一套完整的容错机制来保证故障后的恢复&#xff0c;其中最重要的就是检查点。 1.1 检查点&#xff08;Checkpoint&#xff09; 在流处理中&#xff0c;我们可以用存档读档的思路&#xff0c;将之前某个时间点的所有状态保存下来&#xf…

MATLAB实现岭回归数学建模算法

岭回归&#xff08;Ridge Regression&#xff09;是一种线性回归的扩展&#xff0c;用于处理多重共线性&#xff08;multicollinearity&#xff09;的问题。多重共线性是指自变量之间存在高度相关性的情况&#xff0c;这可能导致线性回归模型的不稳定性和过拟合。 岭回归通过在…

风二西CTF流量题大集合-刷题笔记|基础题(4)

61.sql2 sql.pcapng flag{a3eb0ff8-e467-5036-7c9b-287f6848d5f3} 62.冰蝎2.0 swt1.pcapng flag{0867c25f69f0c62c970408ccefe29bb7} 64.gs哥斯拉流量4.0 gs.pcapng flag{0fffbfa87e5508955b397950502db0bd} 65.冰蝎web流量 webshell.pcapng flag{da2c30d9318a0d80b4bfa…

C++——IOStream

什么是IO&#xff1f; C语言和C&#xff0c;我们其实已经接触到了两个IO的概念 #include<stdio.h> #include<iostream> iostream&#xff0c;便是IO流&#xff0c;其中I表示in&#xff0c;O表示out&#xff0c;代表着用户的输入和终端的输出。在之前的C语法中&a…

【服务器】安装Docker环境

目录 &#x1f33a;【前言】 &#x1f33c;1. 打开Xshell软件 &#x1f33b;2. 安装Docker环境 ①&#xff1a;下载docker.sh脚本 ②&#xff1a;列出下载的内容 ③&#xff1a;执行一下get-docker.sh文件&#xff0c;安装docker ④&#xff1a;运行docker服务 ⑤&…

内网安全管理系统(保密管理系统)

在当今信息化的时代&#xff0c;企业的内网已经成为其核心资产的重要组成部分。 随着企业的快速发展和信息化程度的提升&#xff0c;内网安全问题日益凸显&#xff0c;如何保障内网的安全和机密信息的保密性&#xff0c;已经成为企业亟待解决的问题。 内网安全管理系统(保密管…

定时任务组件Quartz

Quartz介绍 Quartz 是一个功能丰富的开源作业调度库&#xff0c;几乎可以集成到任何 Java 应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz 可用于创建简单或复杂的计划&#xff0c;以执行数十、数百甚至数万个作业;其任务被定义为标准 Java 组件的作业&#x…

了解HTTP/1.1、HTTP/1.0 和 HTTP/2.0

HTTP/1.1、HTTP/1.0 和 HTTP/2.0 是超文本传输协议&#xff08;HTTP&#xff09;的三个主要版本 先解释一下什么是超文本协议 超文本传输协议&#xff08;HyperText Transfer Protocol&#xff0c;简称 HTTP&#xff09;是互联网上应用最广泛的一种网络协议。设计 HTTP 的初衷是…

STM32(--001) Win10、Win11 上的驱动安装说明

一、USB线插到 CMSIS-DAP 接口上&#xff0c;将自动识别到两个设备 ① CMSIS-DAP&#xff1a;用于烧录代码、在线硬件仿真; 在Keil里烧录&#xff0c;无需通过FlyMCU; ② USB转TTL&#xff1a;用于开发板与电脑间串口通信 &#xff0c;即USART1, TX-PA9、RX-PA10; 接口备注&a…

Vue前端环境搭建以及项目搭建

安装node.js 安装node.js主要是为了安装npm工具&#xff0c;用于管理js包等&#xff0c;类似于java的maven。 去官网下载安装。 配置新的镜像源 npm config set registry https://registry.npmmirror.com安装webpack webpack是前端项目打包工具。 命令&#xff1a; npm…

2023年春秋杯网络安全联赛冬季赛 Writeup

文章目录 Webezezez_phppicup Misc谁偷吃了外卖modules明文混淆 Pwnnmanagerbook Reupx2023 CryptoCF is Crypto Faker 挑战题勒索流量Ezdede 可信计算 Web ezezez_php 反序列化打redis主从复制RCE&#xff1a;https://www.cnblogs.com/xiaozi/p/13089906.html <?php c…

【办公类-22-01】20240123 UIBOT逐一提取CSDN质量分

背景需求&#xff1a; 最近每天传2份Python&#xff0c;发现平均分从73.5降到了72.7。网上搜索一下原因&#xff0c;发现每篇CSDN都有一个评分&#xff08;以下是查分网站&#xff09; https://www.csdn.net/qchttps://www.csdn.net/qc 但是一篇一篇查询&#xff0c;显然太繁…

【图论--搜索篇】宽度优先搜索,广度优先搜索

今日语录&#xff1a;成功是一种心态&#xff0c;如果你相信自己能做到&#xff0c;那你已经迈出成功的第一步。 文章目录 宽度优先搜索&#xff08;bfs&#xff09;广度优先搜索&#xff08;dfs&#xff09; 宽度优先搜索&#xff08;bfs&#xff09; #include <iostream&…

(M)unity2D敌人的创建、人物属性设置,遇敌掉血

敌人的创建 1.敌人添加与组件设置 1&#xff09;添加敌人后&#xff0c;刚体添加&#xff0c;碰撞体添加&#xff08;一个碰撞体使猪在地上走&#xff0c;不接触人&#xff0c;另一个碰撞体组件使人和猪碰在一起产生伤害&#xff09; ①刚体 ②碰撞体一 设置的只在脚下&a…

图书管理系统-Python

相关代码&#xff1a; # Time: 2024/1/23 16:16 # Author: 马龙强 # File: 图书管理系统.py # software: PyCharm class Book():def __init__(self,name,auther,status,bookindex):self.name nameself.auther autherself.status statusself.bookindex bookindexdef __str…

【第十五课】数据结构:堆 (“堆”的介绍+主要操作 / acwing-838堆排序 / c++代码 )

目录 关于堆的一些知识的回顾 数据结构&#xff1a;堆的特点 "down" 和 "up"&#xff1a;维护堆的性质 down up 数据结构&#xff1a;堆的主要操作 acwing-838堆排序 代码如下 时间复杂度分析 确实是在写的过程中频繁回顾了很多关于树的知识&…

华为发布 HarmonyOS NEXT 鸿蒙星河版

文章目录 个人简介 在 2024-01-18 下午于深圳举办的鸿蒙生态千帆启航仪式上&#xff0c;华为常务董事兼终端BG CEO余承东宣布了HarmonyOS NEXT&#xff08;鸿蒙星河版&#xff09;的开发者预览版面向开发者开放申请。这一版本旨在实现六大极致原生体验&#xff0c;包括原生精致…

【某某大学的探索之旅】奇怪的登录框概率性布尔报错盲注绕过

在某某大学的探索过程中&#xff0c;发现了一个比较奇怪的布尔报错盲注 它这里本来登录有一个滑动验证码&#xff0c;token是滑动验证码每次校验生成的&#xff0c;从处理逻辑讲&#xff0c;这里的token是不能复用的&#xff0c;但是这里的token却是可以复用&#xff0c;这本来…

【分布式技术】消息队列Kafka

目录 一、Kafka概述 二、消息队列Kafka的好处 三、消息队列Kafka的两种模式 四、Kafka 1、Kafka 定义 2、Kafka 简介 3、Kafka 的特性 五、Kafka的系统架构 六、实操部署Kafka集群 步骤一&#xff1a;在每一个zookeeper节点上完成kafka部署 ​编辑 步骤二&#xff1a…

喜讯 | 华院计算摘得“2023大数据产业年度创新技术突破”奖

2024年1月17日&#xff0c; 由数据猿和上海大数据联盟主办&#xff0c;上海市经济和信息化委员会、上海市科学技术委员会指导的“第六届金猿季&魔方论坛——大数据产业发展论坛”在上海市四行仓库举行。论坛以“小趋势大未来”为主题&#xff0c;围绕大数据产业的各个领域展…