【Java基础教程】(五)程序概念篇 · 下:夯实基础!全面解析Java程序的逻辑控制体:顺序、选择与循环结构~

Java基础教程之程序概念 · 下

  • 本节学习目标
  • 1️⃣ 程序逻辑控制
    • 1.1 顺序结构
    • 1.2 分支结构
      • 1.2.1 if 选择结构
      • 1.2.2 switch 选择结构
    • 1.3 循环结构
      • 1.3.1 while 循环
      • 1.3.2 for 循环
      • 1.3.3 循环控制
  • 🌾 总结

在这里插入图片描述

本节学习目标

  • 掌握Java中分支结构、循环结构、循环控制语法的使用;

1️⃣ 程序逻辑控制

一般来说程序的结构包含顺序结构、选择结构、循环结构3种。 这3种不同的结构有一个共同点,就是它们都只有一个入口,也只有一个出口。程序中使用了上面这些结构有什么好处呢? 这些单一入口和出口可以让程序易读、好维护,也可以减少调试的时间。

1.1 顺序结构

前面文章中所讲的案例采用的都是顺序结构,程序至上而下逐行执行, 一条语句执行完后继续执行下一条语句, 一直到程序的末尾,这种结构就叫顺序结构。如下图所示:
在这里插入图片描述

顺序结构在程序设计中是最常使用的结构,在程序中扮演了非常重要的角色,因为大部分程序基本上都是依照这种由上而下的流程来设计的,由于之前一直都是按照顺序结构编写程序,所以本节主要针对选择和循环结构进行详细讲解。

1.2 分支结构

选择(分支)结构是根据条件的成立与否,再决定要执行哪些语句的一种结构,其执行流程如下图所示。

在这里插入图片描述
这种结构可以依据判断条件的结果,来决定要执行的语句。 当判断条件的值为真(true)时,就运行“语句体”;当判断条件的值为假(false)时,则不执行“语句体"。不论执行哪一个分支逻辑,最后都会回到“其他语句"继续执行。

分支结构为程序增加了选择的逻辑结构,就像做人生抉择一样,不同的抉择有不同的结果。对于分支结构有两类语法支持: ifswitch

1.2.1 if 选择结构

if 选择结构有如下三种使用方式:ifif…elseif…else if…else,这3种结构的执行流程图示如下(结合后面的代码案例更好理解呦)。
在这里插入图片描述

  • if 语句
    if 语句一般用于在某个条件为真时执行特定的代码块。它的特征是只包含一个条件和一个相应的代码块,如果条件为真,将执行该代码块;否则,跳过整个 if 语句。其完整语法如下:

    //	1、if语法
    if(布尔表达式){
    	条件满足时执行的程序;
    }
    

    下面以代码案例演示对于以上这种选择结构的使用方式及其作用:

    // 案例 1:使用 if 语句进行判断
    public class TestDemo{
    	public static void main(String args[]){
    		double score =90.0;                         //定义变量
    		if(score>=60.0){                              //设置判断条件
    			System.outprintln("恭喜考试成绩及格了!");
    		}
    	}
    }
    

    程序执行结果:

    恭喜考试成绩及格了!
    

    此程序首先定义了一个 double 类型的变量score ,然后使用 if 语句判断此变量的内容是否大于 “60.0”,如果条件满足,则执行输出操作。

  • if...else 语句
    if...else 语句也用于根据条件执行不同的代码块,但它提供了两种选择。它的特征是有两个代码块,即 if 部分和 else 部分,如果条件为真,将执行 if 部分的代码块;如果条件为假,则执行 else 部分的代码块。其完整语法如下:

    //	2、if..else语法
    if(布尔表达式){
    	条件满足时执行的程序;
    }else{
    	条件不满足时执行的程序;
    }
    

    下面以代码案例演示对于以上这种选择结构的使用方式及其作用:

    // 案例 2:使用 if…else 语句进行判断
    public class TestDemo{
    	public static void main(String args[){
    		double score =30.0;                                 //定义变量
    		if(score>=60.0){                                              //条件判断满足
    			System.out println("恭喜考试成绩及格了!");
    		} else{                                                 //条件判断不满足
    			System.out println("很遗憾考试成绩未及格!");
    		}
    	}
    }
    

    程序执行结果:

    很遗憾考试成绩未及格!
    

    此程序使用了if…else结构,如果在if语句中的判断条件不满足,那么将执行 else 分支中的代码。

  • if...else if...else 语句
    if...else if...else 语句用于在多个条件下进行选择执行不同的代码块。它的特征是包含一个初始的 if 条件和代码块,后续可以有任意数量的 else if 条件和代码块,以及最后一个可选的 else 代码块。
    如果初始 if 条件为真,则执行相关的代码块,并跳过其他 else ifelse 部分;
    如果初始 if 条件为假,则依次检查每个 else if 条件,直到找到第一个为真的条件,并执行该代码块;
    如果所有的条件都为假,则执行最后的 else 代码块(如果有)。其完整语法如下:

    //	3、if...else if...else语法
    if(布尔表达式1){
    	条件满足时执行的程序;	
    } else if(布尔表达式2){
    	条件满足时执行的程序;
    } else{
    	以上所有条件都不满足时执行的程序;
    }
    

    下面以代码案例演示对于以上这种选择结构的使用方式及其作用:

    // 案例 3:使用 if…else if…else 语句进行判断
    public class TestDemo(
    	public static void main(String args[]){
    		double score =91.0;
    		if (score<60.0){					//条件判断
    			System.out.println("较差成绩!");
    		}else if (score>=60 && score <=90){  //条件判断
    			System.out.println("中等成绩!");
    		}else if (score>90 && score<=100){   //条件判断         
    			System.out.println("优秀成绩!");
    		}else{                               //条件判断都不满足                         
    			System.out.println("无效成绩!");
    		}
    	}
    }
    

    程序执行结果:

    优秀成绩!
    

    此程序使用了多个判断条件判断给定的score变量的内容,如果满足条件,则执行相应的信息输出。

1.2.2 switch 选择结构

对于多条件判断使用 if…else if…else 是可以判断布尔条件的。如果是多数值判断,则可以通过 switch 完成,其语法以及执行流程如下所示。

switch(整数 |字符 |枚举 |String)(
	case 内容:{
		内容满足时执行;
		[break;]
	}
	case 内容:{
		内容满足时执行;
		[break;]
	}
	case 内容:{
		内容满足时执行
		[break;]
	}[default:{
		内容都不满足时执行;
		[break;]
	}]
}

在这里插入图片描述

需要注意的是,if可以判断布尔表达式,而switch只能够判断内容。在分支结构中,使用if语句结构可以判断指定布尔表达式的结果。但是switch的判断不能使用布尔表达式,它最早的时候只能进行整数或字符的判断,从JDK 1.5开始支持了枚举判断,在JDK 1.7的时候支持了String的判断。

switch语句体结构中,在每一个 case 里出现的 break 语句,表示停止 case 的执行,因为 switch 语句默认情况下会从第一个满足的 case 语句开始执行全部的语句代码, 一直到整个switch 执行完毕或者遇见break

// 案例 4:使用 switch  判断
public class TestDemo{
	public static void main(String args[]){
		int ch=1;
		switch (ch){                      //判断的是数字
			case 2:{                      //判断内容是否是2
				System.out println("内容是2");
				break;
			}
			case 1:{                        //判断内容是否是1
				System.out.println("内容是1");
				break;
			}
			case 3:{                          //判断内容是否是3
				System.out.println("内容是3");
				break;
			}
			default:{     // 判断都不满足
				System.out.println("没有匹配内容");
				break;
			}
		}
	}
}

程序执行结果:

内容是1

此程序使用了 switch 语句判断ch 变量的内容,如果某一个ch 变量符合于 case判断、满足定义的比较内容,则执行相应的 case 语句。可以发现,在每一个case语句后都加上了一个"break"语句,如果不加入此语句的话,则switch语句会从第一个满足条件的case语句开始依次执行操作,示例如下:

// 案例 5:使用 switch  判断,不加入break时的操作
public class TestDemo (
	public static void main(String args[]){
		int ch=1;
		switch(ch){           //判断的是数字
			case 2:{          //判断内容是否是2
				System.out.println("内容是2");
			}
			case 1:{          //判断内容是否是1
				System.out.println("内容是1");
			}
			case 3:{          //判断内容是否是3
				System.out.println("内容是3");
			}
			default:{         //判断都不满足
				System.out.println("没有匹配内容");
			}
		}
	}
}

程序运行结果:

内容是1
内容是3
没有匹配内容

从运行结果可以发现,程序在第一个条件满足之后,由于没有设置相应的break语句,则从第一个满足条件开始就一直依次向下继续执行到了末尾。

上边提到了从JDK 1.7开始switch支持字符串的直接判断,即可以利用switch判断是否是某一个字符串内容。但是在字符串的判断中是严格区分字母大小写的。

// 案例 6:使用`switch`做字符串判断
public class TestDemo (
	public static void main(String  args[]){
		String str="HELLO";
		switch (str){                      //判断的是字符串
			case "HELLO":{
				System.out.println("内容是 HELLO");
				break;
			}
			case "hello":{
				System.out.println("内容是 hello");
				break;
			}
			case "xiaoshan":{
				System.out.println("内容是 xiaoshan");
				break;
			}
			default:{
				System.out.println("没有匹配内容");
				break;
			}
		}
	}
}

程序执行结果:

内容是 HELLO

程序采用了字符串的方式进行判断,如果判断的内容是case 中定义的内容,则执行对应的代码。

1.3 循环结构

循环结构是根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落就称为循环主体。循环结构的流程图如下图所示:

在这里插入图片描述
当某段代码需要一直重复执行时,可以使用循环结构来实现控制,对于循环结构有两种循环:while循环和 for循环。

1.3.1 while 循环

while 循环分为 while 循环和 do-while 循环两种语法形式,其完整语法如下所示。

1、while循环

while(循环判断){
	循环语句;
	修改循环结束条件;	
}

2、do...while循环

do {
	循环语句;
	修改循环结束条件;
}while(循环判断);

通过以上两种循环语法可以发现,实际上 do...while表示先执行后判断,而 while 循环表示先判断后执行。如果循环条件都不满足的情况下, do...while 至少执行一次,而 while 一次都不会执行,这两种操作语法的流程如下图所示。
在这里插入图片描述
需要特别注意的是,所有的循环语句里面都必须有循环的初始化条件,每次循环的时候都要去修改这个条件,以判断循环是否结束。修改条件是为了避免死循环,造成死循环的原因也很好理解,就是循环条件一直都满足,每次循环执行时没有修改循环的结束条件,所以循环体一直都会被执行。

// 案例 7:实现 1~100的累加 — 使用while 循环
public class TestDemo{
	public static void main(String args[]){
		int sum=0;			//保存总和
		int current=1;		//循环的初始化条件
		while(current <= 100){		//循环结束条件
			sum+=current;			//累加
			current++;				//改变循环条件
		}
		System.out.println(sum);
	}
}

程序执行结果:

5050

此程序首先定义了一个 sum 的变量用于保存累加的结果,然后声明了一个 current 变量作为当前计算数值的保存变量(如果计算到1,则 current 值为1 ; 如果计算到 2 , 则 current 的值为2)。同时 current 也作为循环结束的判断条件,在每次执行循环体之前都会进行 current 变量的判断 (while (current <= 100)), 如果该变量的内容小于等于100,则表示判断通过,执行循环体,在循环体中会进行累加的计算 (sum += current), 同时也会修改当前的操作数值 (current++)。

此程序的执行流程如下图所示:

在这里插入图片描述
接下来使用 do...while 循环来完成同上边案例一样的功能。

// 案例 8:实现 1~100的累加 — 使用 do...while 循环
public class TestDemo  {
	public static void main(String  args[]){
		int sum=0;		//保存总和
		int current=1;	//循环的初始化条件
		do{					
			sum += current;	//累加
			current++;		//改变循环条件
		}while(current  <=  100); 	//循环结束判断
		System.out.println(sum);
	}
}

此程序同样实现了累加操作,而与前一个范例程序最大的不同在于,在第一次执行循环体时并不会进行循环条件的判断 (while(current <= 100)), 而执行完一次循环体之后才会进行循环条件的判断, 以判断是否还要继续执行该循环。

此程序的执行流程如下图所示:
在这里插入图片描述

1.3.2 for 循环

for 循环的最大特点是已经明确地知道循环次数, for 循环的完整语法如下:

for(循环初始化条件; 循环判断; 循环条件变更){
	循环语句;
}

通过语法格式可以看到, for 循环在定义时,将 循环初始化条件循环判断循环条件变更 三个操作都放在一行语句中,而在执行的时候循环初始化条件只会执行一次,而后循环判断在每次执行循环体之前都会判断,并且每当循环体执行完毕后都会自动执行循环条件变更for 循环的执行流程结构图如下图所示:
在这里插入图片描述

// 案例 9:实现 1~100的累加 — 使用 for 循环实现
public class TestDemo  {
	public static void main(String args[]){
		int sum=0                        //保存总和
		//设置循环初始化条件 current,同时此变量作为累加操作使用
		//每次执行循环体前都要进行循环判断(current<=100)
		//循环体执行完毕后会自动执行 “current++”改变循环条件
		for(int current=1; current<=100; current++){
			sum += current;  //  循环体中实现累加操作
		}
		System.out.println(sum);
	}
}

程序执行结果:

5050

此程序直接在 for 语句中初始化循环条件、循环判断以及循环条件变更的操作,而在循环体中只是 实现核心的累加操作。

🔍 用哪一种循环结构体语句更好?

本节介绍了3种循环的操作,那么在实际工作中,如何去选择该使用哪一种循环呢?
就工作实际运用经验来讲,在开发中,while循环和 for循环的使用次数较多,而这两种循环的使用环境如下:

  • while循环:在不确定循环次数,但是确定循环结束条件的情况下使用;
  • for循环:确定循环次数的情况下使用。

例如:现在要求一口一口的吃饭, 一直吃到饱为止,可是并不知道到底要吃多少口,只知道 结束条件,所以使用`while`循环会比较好;而如果要求围着操场跑两圈步,已经明确知道了循环的次数,那么使用`for`循环就更加方便了;而对于`do..while循环在开发中使用较少。

以上给出的循环是最为基础的单层循环,但是很多时候考虑到业务的需求可能会出现多层循环的嵌套操作,下面范例中的代码作用是进行乘法口诀表的输出,采用的就是双层循环。

// 案例 10:输出乘法口诀表
public class TestDemo {
	public static void main(String args[])(
		for(int x=1; x<=9; x++){          //控制循环的行数
			for(int y=1; y<=x; y++)(        //控制列数
				System.out.print(x + "*" + y + "=" + (x*y) + "\t);
				System.out.println();             //换行
			}
		}
	}
}

程序运行结果:

1*1=1
2*1=2	2*2=4
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12 	6*3=18	6*4=24	6*5=30	6*6=36
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81

此程序使用了两层循环控制输出,其中第一层循环是控制输出行,即乘法口诀表中左边的数字(7* 3=21,x 控制的是这个数字7,而y 控制的是数字3),而另外一层循环是控制输出的列,并且为了防止不出现重复数据(例如:“1*2” 和 “2*1” 计算结果重复),让y 每次的循环次数受到x 的限制,每次里面的循环执行完毕后就输出一个换行。

此程序执行流程如下图所示:
在这里插入图片描述

1.3.3 循环控制

正常情况下只要执行了循环,且满足循环条件,循环体的代码就会一直执行, 但是在程序中也提供有两个循环停止的控制语句:

  • continue (退出本次循环)
  • break (退出整个循环)。

此类语句在使用时往往要结合分支语句进行判断。

// 案例 11:观察 continue的作用
public class TestDemo    {
	public static void main(String args[])(
		for(int x=0; x<10; x++){
			if(x ==3){
				continue;// 之后的代码不执行,直接结束本次循环
			}
			System.out.print("x=" + x + " 、");
		}
	}
}

程序执行结果:

x=0、x=1、x=2、x=4、x=5、x=6、x=7、x=8、x=9、

此程序使用了 continue 语句,而结果中可以发现缺少了“x=3”的内容打印,这是因为使用continue 表示当前一次循环结束执行,而直接进行下一次循环的操作,程序执行流程如下图所示。

在这里插入图片描述

// 案例 12:观察 break的作用
public class TestDemo {
	public static void main(String args[]){
		for (int x=0; x<10; x++){
			if (x ==3){
				break;//退出整个循环
			}
			System.out.print("x=" + x +"、");
		}
	}
}

程序执行结果:

x=0、x=1、x=2、

此程序在 for 循环中使用了一个分支语句 (x == 3)判断是否需要结束循环,而通过运行结果可以 发现,当x 的内容为2后,循环不再执行,程序执行的流程如下图所示:

在这里插入图片描述

🌾 总结

本文讨论了Java的程序逻辑控制,包括顺序结构、分支结构(if 选择结构和switch 选择结构)以及循环结构(while 循环、for 循环和循环控制)。

通过顺序结构,我们可以按照代码的书写顺序执行语句。

分支结构允许我们根据条件的真假来选择执行不同的代码块,其中if 选择结构适用于多个互斥的条件,而switch 选择结构适用于多个固定值的比较。

循环结构使我们能够重复执行一段代码块,直到满足特定条件。while 循环适用于未知循环次数的情况,而for 循环适用于已知循环次数的情况。此外,我们还介绍了循环控制语句(breakcontinue),它们可以用于提前结束循环或跳过循环中的某些迭代。

掌握程序逻辑控制是Java编程中至关重要的一部分,它使我们能够根据不同的条件执行不同的操作,并且可以有效地处理循环操作。在正确使用这些结构的同时,我们还需要注意避免出现死循环以及嵌套结构过于复杂导致代码难以理解。通过充分利用Java的程序逻辑控制,我们可以编写出更灵活、高效和可维护的代码。


温习回顾上一篇(点击跳转)《【Java基础教程】(四)程序概念篇 · 中》
继续阅读下一篇(点击跳转)《【Java基础教程】(六)程序概念篇 · 末》


本文部分案例及图片来源:
《第一行代码JAVA》

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

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

相关文章

Squid 缓存代理--反向代理

Squid 缓存代理–反向代理 反向代理&#xff1a;如果Squid反向代理服务器中缓存了该请求的资源&#xff0c;则将该请求的资源直接返回给客户端&#xff1a;否则反向代理服务器将向后台的WEB服务器请求资源&#xff0c;然后将请求的应答返回给客户端&#xff0c;同时也将应答缓…

Django框架-11

聚合查询 1.聚合函数 使用aggregate()过滤器调用聚合函数。聚合函数包括&#xff1a;Avg 平均&#xff0c;Count 数量&#xff0c;Max 最大&#xff0c;Min 最 小&#xff0c;Sum 求和&#xff0c;被定义在django.db.models中。 例&#xff1a;查询图书的总阅读量。 from mo…

如何确定活动隔断整体色调

确定活动的整体色调可以通过以下几个步骤&#xff1a; 1. 确定主题或目标&#xff1a;首先要明确活动的主题或目标&#xff0c;这将有助于确定活动需要传达的情感或氛围。 2. 考虑活动类型&#xff1a;根据活动的类型&#xff0c;例如婚礼、生日派对、企业活动等&#xff0c;可…

vue3+pinia用户信息持久缓存(token)的问题

vue3pinia用户信息持久缓存&#xff08;token)的问题 对博主来说&#xff0c;这是个相当复杂的问题。 当初在使用vue2vuex进行用户信息持久登录时&#xff0c;写了不下3篇博客&#xff0c;确实是解决了问题&#xff0c;博客链接如下 vue存储和使用后端传递过来的tokenvue中对…

gma 2 教程(二)数据操作:1. 相关模块组成

考虑到数据读写是地理空间数据分析和应用的基础&#xff0c;因此将本章作为正文第一部分&#xff0c;以便为后续章节应用提供基础支持。本章以gma栅格/矢量数据输入输出模块&#xff08;io&#xff09;栅格/矢量数据的读取、创建、变换等主要操作为基础&#xff0c;配合gma地理…

基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

2023年第一届证券基金行业先进计算峰会在沪成功召开

2023年7月7日&#xff0c;在中国计算机学会集成电路设计专委会、中国通信学会金融科技发展促进中心、中国电子工业标准化技术协会新一代计算标准工作委员会和证券基金信息技术创新联盟WG1工作组的指导下&#xff0c;由中科驭数主办的2023年第一届证券基金行业先进计算峰会在上海…

用矩阵处理3D变换

Rotation 也可以把三个旋转矩阵合并为一个综合旋转矩阵: 平移和旋转结合 有时我们想要将平移和旋转结合起来&#xff0c;这样我们就可以在一次操作中同时进行两者&#xff0c;但是我们不能用3x3矩阵来做3D平移&#xff0c;只能用4x4矩阵来做&#xff0c;如下所定义&#xff1a…

iOS打包IPA教程

转载&#xff1a;xcode打包导出ipa 众所周知&#xff0c;在开发苹果应用时需要使用签名&#xff08;证书&#xff09;才能进行打包安装苹果 IPA&#xff0c;作为刚接触ios开发的同学&#xff0c;只是学习ios app开发内测&#xff0c;并没有上架appstore需求&#xff0c;对于苹…

UE4/5用贴图和GeneratedDynamicMeshActor曲面细分与贴图位移制作模型

目录 制作逻辑&#xff1a; ​编辑 曲面细分函数&#xff1a; 添加贴图逻辑&#xff1a; 代码&#xff1a; 制作逻辑&#xff1a; 在之前的文章中&#xff0c;我们使用了网格细分&#xff0c;而这一次我们将使用曲面细分函数&#xff0c;使用方法和之前是一样的&#xff1a…

2023年Web安全学习路线总结!430页Web安全学习笔记(附PDF)

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线、web安全攻防笔记、渗透测试路线图 网络安全的范畴很大&#xff0c;相较于二进制安全等方向的高门槛、高要求&#xff0c;Web安全体系比较成熟&#xff0c;在现阶段来看&#xff0c;但凡有自己…

浅析便捷生活的新选择——抖音本地服务

抖音是一款风靡全球的短视频分享平台&#xff0c;其本地服务功能的发展也逐渐引起了广泛关注。本地服务是指抖音平台上的用户可以通过平台直接查找并使用周边的各种服务&#xff0c;比如美食外卖、快递配送、家政服务等。本地服务的发展对用户和商家都带来了很多便利和机遇。 首…

Mockplus Cloud - June 2023crack

Mockplus Cloud - June 2023crack 添加便签以澄清情节提要上的任何设计概念。 新的流程图工具直接在情节提要上可视化任何设计流程和过程。 添加了在发布到Mockplus Cloud时删除RP页面的功能。 添加设计注释时包括图像和链接。 添加了一个新的提示&#xff0c;用于在断开互联网…

四、Docker镜像详情

学习参考&#xff1a;尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、Docker镜像1.1 概念1.2 UnionFS&#xff08;联合文件系统&#xff09;1.3 Docker镜像加载原理1.4 重点理解 二、docker commit 命令2.1 是什么&#xff1f;2.2 命令…

element之el-table合并列功能

目标效果如下&#xff1a; 实现代码如下&#xff1a; html部分&#xff1a; <!--定义表格组件,用组件自带的span-method属性定义合并列的方法--> <el-table :data"tableData" :span-method"spanRow"><el-table-column prop"RegionNa…

独立站如何实现全球开店,获得更多流量?

对于独立站卖家来说&#xff0c;针对一个国家搭建一个站点、运营&#xff0c;就已经要花上不少力气了。更别说想要在多个市场售卖了&#xff0c;每个国家不同的货币、语言、定价、付款方式等等就已经够让人头大。 研究显示&#xff0c;40%的人不会从其他语言的网站上购买产品。…

Python基础综合案例-数据可视化(地图)

今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化 数据来源:线上公布数据&#xff0c;需要可私信 前期准备工作&#xff1a;Python可视化准备工作 前期模块安装等前期基础的准备工作大家可以看我之前的文章讲解&#xff0c;有问题可…

交易所行情基础相关知识

目录 一、行情基本概念 二、简单交易模型 三、行情系统结构 四、各种行情协议 1.FIX 2.STEP 3.FAST 4.Binary 五、集合竞价和连续竞价 1.集合竞价 2.连续竞价 六、上交所LDDS和深交所Binary行情对比 一、行情基本概念 行情是描述市场繁荣状态的数据&#xff0c;…

geoserver发布arcgis server离线瓦片

1.使用tif文件也可以发布服务&#xff0c;但是我下载的tif文件发布的服务总数模糊不清&#xff0c;原因可能是地图比例尺问题。 2.仔细研究&#xff0c;发现下载的arcgis server瓦片都是高清的&#xff0c;于是想到直接加载arcgis瓦片&#xff0c;这样图片/坐标系之间问题都完…

Elasticsearch入门

Elasticsearch简介 分布式的、Restful风格的搜索引擎支持对各种类型的数据的检索&#xff1a;结构化、非结构化的数据均可搜索速度快&#xff0c;可以提供实时的搜索服务&#xff1a;可以提供实时的搜索服务便于水平扩展&#xff0c;每秒可以处理PB级海量数据&#xff1a;集群…