小黑子—Java从入门到入土过程:第四章
Java零基础入门4.0
- Java系列第四章
- 1. 顺序结构
- 2. if语句
- 3. switch 语句
- 3.1 default的位置和省略
- 3.2 case 穿透
- 3.3 switch 新特性 (jdk12开始)
- 4. for 循环
- 5. while 循环
- 6.do...while 循环
- 7. 无限循环
- 8. 跳转控制语句
- 9. 练习
- 9.1 逢七过
- 9.2 平方根
- 9.3 求质数
- 10. 随机数
- 11. 数组
- 11.1 数组的地址
- 11.2 数组索引
- 11.3 数组的遍历
- 11.4 数组的动态初始化
- 12. 数组练习
- 12.1 求最值
- 12.2 遍历数组求和
- 12.3 交换数据
- 12.4 打乱数据
- 13. 数组的内存图
Java系列第四章
1. 顺序结构

2. if语句




3. switch 语句



3.1 default的位置和省略
- 1.位置 : defaule不一定是写在最下面的,我们可以写在任意位置。只不过习惯会写在最下面
- 2.省略: defaule可以省略,语法不会有问题,但是不建议省略。
3.2 case 穿透
就是语句体中没有写break导致的。
执行流程:
- 首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配。
- 如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
- 如果没有发现break,那么程序会继续执行下一个case的语句体,一直遇到break或者右大括号为止。
- 如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码。
3.3 switch 新特性 (jdk12开始)
支持箭头表达式返回
import org.junit.Test;enum Gender {MALE, FEMALE, UNKNOWN;
}public class TestX {private Gender gender = Gender.MALE;@Testpublic void show() {switch (gender) {case MALE:System.out.println("男");break;case FEMALE:System.out.println("女");break;default:throw new IllegalStateException(gender.toString());break;}}
}
Java 新特性 的 switch 表达式使用箭头表达时,不需要在每一个 case 后都加上 break。
@Testpublic void show() {switch (gender) {case MALE -> System.out.println("男");case FEMALE -> System.out.println("女");default -> throw new IllegalStateException(gender.toString());}
4. for 循环



package com.itheima.demo1;import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.键盘录入两个数字Scanner sc = new Scanner(System.in);System.out.print("请录入一个数字表示范围的开始:");int start = sc.nextInt();System.out.println("请录入一个数字表示范围的结束:");int end = sc.nextInt();// 统计变量//简单逻辑,统计符合要求的数字个数int count = 0;//2.利时循环获取这个范围中的每一个数字for (int i = start; i <= end; i++) {//3.对每一个数字进行判断,统计有多少个满足要求的数字if (i % 3 == 0 && i % 5 == 0) {count++;}}System.out.println(count);}
}

5. while 循环


for 和 while 的对比



package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.定义数字int x = 123321;//定义一个临时变量用于记录×原来的值,用于最后进行比较int temp = x;//记录倒过来之后的结果int num = 0;//2.利用循环开始while (x != 0) {//从右往左获取每一位数字int ge = x % 10;//修改下x记录的值x= x/10;//把当前获取到的数字拼接到最右边num = num * 10 + ge;}System.out.println(num);System.out.println(x);System.out.println(num == temp);}
}

6.do…while 循环

7. 无限循环

package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {// for 格式的无限循环for(;;){System.out.println("wdnmd");}}
}

可以按红色的方块暂停
8. 跳转控制语句

package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {for (int i = 0; i < 5; i++) {if(i==3){continue;}System.out.println("wdnmd"+i+"fk");}}
}

2.
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {for (int i = 0; i < 5; i++) {if(i==3){break;}System.out.println("wdnmd"+i+"fk");}}
}

9. 练习
9.1 逢七过

package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {for (int i = 1; i <=100; i++) {if(i%10==7||i/10%10==7||i%7==0){System.out.println("过");continue;}System.out.println(i);}}
}
9.2 平方根

package com.itheima.demo1;import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数:");int number = sc.nextInt();for (int i = 1; i < number; i++) {if (i * i == number) {System.out.println(i + "就是" + number + "的平方根");break;} else if (i * i > number) {System.out.println((i - 1) + "就是" + number + "平方根的整数部分");break;}}}
}

9.3 求质数
- 标记法
package com.itheima.demo1;import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数:");int number = sc.nextInt();//定义一个变量,表示标记// 标记着number是否为一个质数// true:是一个质数//false :不是一个质数boolean flag = true;for (int i = 2; i < number; i++) {// i 表示依次表示这个范围之内的每一个数字//看number是否能被i整除就可以了if(number%i ==0){flag = false;break;}}//只有当这个循环结束了,表示这个范围之内所有的数字都判断完毕了// 此时才能断定number是一个质数if(flag){System.out.println(number+"是一个质数");}else{System.out.println(number+"不是一个质数");}}
}
- 平方根法

10. 随机数

package com.itheima.demo1;import java.util.Random;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//先获取一个随机数。// 范围:2~10//2.创建对象Random r = new Random();//3.生成随机数//判断技巧://在小括号中,书写的是生成随机数的范围//这个范围一定是从e开始的。//到这个数-1结束//口诀:包头不包尾,包左不包右for(int i = 0;i<100;i++){int number = r.nextInt(10)+5;//0+5~9+5 //5~14System.out.println(number);}}
}
练习:
package com.itheima.demo1;import java.util.Random;
import java.util.Scanner;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数宇是多少?// 扩展小需求:加一个保底机制,3次猜不中,直接提示猜中了。//注意点://1.生成随机数的代码int number = r.nextInt(100) +1;// 不能写在循环的里面的,否则每一次都会产生一个新的随机数//2.抽奖机制//用点券去抽水晶// 保底360次//计数器//用来统计当前已经猜了多少次。int count = 0;//分析// 1.生成一个1-100之间的随机数字Random r = new Random();int number = r.nextInt(100) + 1;System.out.println(number);// 2. 猜这个数字是多少Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入你要猜的数字:");int gussNumber = sc.nextInt();//3 .判断两个数字给出不同的提示// 猜的数字大了,提示大了//猜的数字小了,提示小了//猜的数字一样,提示猜中了count++;if(count == 3){System.out.println("猜中了");break;}if(gussNumber>number){System.out.println("大了");}else if(gussNumber<number){System.out.println("小了");}else{System.out.println("猜中了");break;}}}
}

11. 数组



11.1 数组的地址
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {double[] arr6={1.93,1.75,1.73,181};System.out.println(arr6);// [D@4554617c 地址值// 扩展://解释一下地址值的格式含义[D@4554617c//[﹔表示当前是一个数组//D:表示当前数组里面的元素都是double类型的//@:表示一个间隔符号。(固定格式)// 4554617c:才是数组真正的地址值,(十六进制)// 平时我们习惯性的会把这个整体叫做数组的地址值。}
}
11.2 数组索引

package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//利用索引对数组中的元素进行访问1/1.获取数组里面的元素//格式://数组名[索引]int[]arr = {1,2,3,4,5};//获取数组中的第一个元素//其实就是e索引上对应的元素l / int number = arr[e];// system.out.println( number);//1//获取数组中1索引上对应的数据,并直接打印出来/ / system.out.println(arr[1]);//2//2.把数据存储到数组当中//格式:数组名[索引]=具体数据/变量;//细节:一旦覆盖之后,原来的数据就不存在了。arr[0] = 100;System.out.println(arr[0]);//100}
}
11.3 数组的遍历
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//利用循环改进代码//开始条件: 0//结束条件:数组的长度-1(最大索引)//在Java当中,关于数组的一个长度属性,length// 调用方式:数组名.length//扩展://自动的快速生成数组的遍历方式/ lidea提供的//数组名.foriint[] arr = {1,2,3,4,5};for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}}
}
练习:
1.

package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.定义一个数组存储1,2,3,4,5,6,7,8,9,10int [] arr={1,2,3,4,5,6,7,8,9,10};int count =0;for (int i = 0; i < arr.length; i++) {//i表示数组里面的每一个索引// arr[i]表示数组里面的每一个元素//3.判断当前的元素是否为3的倍数,如果是那么统计变量就需要自增一次。if(arr[i]%3==0){count++;}}System.out.println("数组中能被3整除的数字有"+count+"个");}
}

2.

package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//分析://1.定义一个数组存储1,2,3,4,5,6,7,8,9,10int [] arr={1,2,3,4,5,6,7,8,9,10};for (int i = 0; i < arr.length; i++) {//i表示数组里面的每一个索引// arr[i]表示数组里面的每一个元素//3.判断当前的元素是否为3的倍数,如果是那么统计变量就需要自增一次。if(arr[i]%2==0){// 偶数变二分之一arr[i]=arr[i]/2;}else{arr[i]=arr[i]*2;}}// 遍历数组// 一个循环尽量只做一件事情for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

11.4 数组的动态初始化

package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//格式://数据类型[门]数组名= new数据类型[数组的长度];//在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值String[] arr = new String[50];//添加学生arr[0] = "zhangsan";arr[1] = "lisi";System.out.println(arr[0]);//zhangsanSystem.out.println(arr[1]);//lisiSystem.out.println(arr[2]);//打印出来的是默认初始化值null//数组默认初始化值的规律//整数类型:默认初始化值0// 小数类型:默认初始化值0.0//字符类型:默认初始化值"/u0000" ->空格//布尔类型:默认初始化值 false//引用数据类型:默认初始化值nullint[] arr2=new int[3];System.out.println(arr2[0]);//0System.out.println(arr2[1]);//0System.out.println(arr2[2]);//0}
}

数组常见问题
当访问了数组中不存在的索引,就会引发索引越界异常。

12. 数组练习
12.1 求最值


package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//扩展问题://1.根据求最大值的思路,自己改写一下求最小智//2.为什么max要记录为arr[0],默认值不能为0吗?// 不能写0// max的初始化值一定要是数组中的值。// 3.循环中开始条件一定是0吗?//循环的开始条件如果为0,那么第一次循环的时候是自己跟自己比了一下,对结果没有任何影响,但是效率偏低// 为了提高效率,减少一次循环的次数,循环开始条件可以写1.//1. 定义数组用来储存5个值int []arr={33,5,22,44,55};//2. 定义一个变量用来储存最大值//临时认为0索引的数据是最大的int max=arr[0];//3. 循环获取素组的每一个元素//拿每一个元素跟max进行比较for (int i = 0; i < arr.length; i++) {//i 索引 arr[i]元素if(arr[i]>max){max=arr[i];}}// 4. 当循环结束之后,max记录的就是数组中的最大值System.out.println(max);}
}
12.2 遍历数组求和

package com.itheima.demo1;import java.util.Random;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {// 分析://1.定义数组//动态初始化int[] arr = new int[10];//2.把随机数存入到数组当中Random r = new Random();for (int i = 0; i < arr.length; i++) {// 每循环一次,就会生成一个新的随机数int number = r.nextInt(100) + 1;// 相当于new Random().nextInt(100) 通过netInt方法的值输到随机数中//从0~99随机,要到100就在后面+1// 把生成的随机数添加到数组当中// 数组名[索引]=数据;arr[i] = number;}//1.求出所有数据的和int sum=0;for (int i = 0; i < arr.length; i++) {sum=sum+arr[i];}System.out.println("所有数据的和:"+sum);//2.求出所有数据的平均数int avg = sum/arr.length;System.out.println("所有数据的平均数:"+avg);//3.统计有多少个数据比平均值小int count=0;for (int i = 0; i < arr.length; i++) {if(arr[i]<avg){count++;}}// 当循环结束之后,就表示我已经找到了所有的比平均值小的数据System.out.println("在数据中,一共有:"+count+"个数据比平均数小");// 遍历数组,验证答案for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]+" ");}}
}

12.3 交换数据
- 定义交换
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {int a=10;int b=20;//把变量b的值,赋值给了变量a,那么变量a原来的值被覆盖了int temp =a;// 把变量b的值,赋值给了a,那么变量a原来记录的值就被覆盖了a=b;// 就是把变量a原来的值,赋值给了变量bb=temp;System.out.println(a);//20System.out.println(b);//10}
}
- 遍历数组法
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {// 1.定义一个数组int[] arr ={1,2,3,4,5};//2.将数组中0索引和最大索引引出的值进行交换
`在这里插入代码片` int temp = arr[0];arr[0] = arr[4];arr[4]=temp;//3.遍历数组for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}
package com.itheima.demo1;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//1.定义数组存储数据int[] arr={1,2,3,4,5};//2.利用循环去交换数据for(int i=0,j=arr.length-1;i<j;i++,j--){//交换变量i和变量j指向的元素int temp = arr[i];arr[i]=arr[j];arr[j]=temp;}// 当循环结束之后,那么数组中的数据就实现了头尾交换for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}
12.4 打乱数据

package com.itheima.demo1;import java.util.Random;public class ArithmeticoperatorDemo1 {public static void main(String[] args) {//难点://如何获取数组中的随机索引//1. 定义数组存储1~5int[] arr={1,2,3,4,5};// 2. 循环遍历数组,从0索引开始打乱数据的顺序Random r =new Random();for(int i=0;i<arr.length;i++){// 生成一个随机索引int randomIndex = r.nextInt(arr.length);//拿着随机索引指向的元素 跟 i 指向的元素进行交换int temp =arr[i];arr[i]=arr[randomIndex];arr[randomIndex]=temp;}// 当循环结束之后,那么数组中所有的数据已经打乱顺序了for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+"");}}
}
13. 数组的内存图








相关文章:
小黑子—Java从入门到入土过程:第四章
Java零基础入门4.0Java系列第四章1. 顺序结构2. if语句3. switch 语句3.1 default的位置和省略3.2 case 穿透3.3 switch 新特性 (jdk12开始)4. for 循环5. while 循环6.do...while 循环7. 无限循环8. 跳转控制语句9. 练习9.1 逢七过9.2 平方根9.3 求质数…...
数据库原理及应用(四)——SQL语句(2)SQL基础查询以及常见运算符
一、SELECT语句基础 数据库查询是数据库的核心操作,SELECT 语句用于从数据库中选取数据。 SELECT [ALL/DISTINCT] <列名>,<列名>...FROM <表名或视图名>,<表名或视图名>[WHERE <条件表达式>][GROUP BY <列名1> [HAVING <条…...
(算法基础)Floyd算法
适用情景Floyd算法适用于多源汇最短路,也就是他问你比如说从3号点到6号点的最短路距离,比如说从7号点到20号点的最短路距离,而不是单源最短路(从1号点到n号点的最短路距离)。在这个算法当中允许负权边的存在。但在求最…...
SQL语法:浅析select之七大子句
Mysql版本:8.0.26 可视化客户端:sql yog 目录一、七大子句顺序二、演示2.1 from语句2.2 on子句2.3 where子句2.4 group by子句2.4.1 WITHROLLUP,加在group by后面2.4.2 是否可以按照多个字段分组统计?2.4.3 分组统计时,…...
中国人民大学与加拿大女王大学金融硕士——去有光的地方,并成为自己的光
光是我们日常生活中一个重要的元素,试想一下如果没有光,世界将陷入一片昏暗。人生路亦是如此,我们从追逐光、靠近光、直到自己成为光。人民大学与加拿大女王大学金融硕士项目是你人生路上的一束光吗 渴望想要成为一个更好的人,就…...
Python数据结构与算法篇(五)-- 二分查找与二分答案
1 二分法介绍 1.1 定义 二分查找又称折半查找、二分搜索、折半搜索等,是一种在静态查找表中查找特定元素的算法。 所谓静态查找表,即只能对表内的元素做查找和读取操作,不允许插入或删除元素。 使用二分查找算法,必须保证查找表中…...
小游戏也要讲信用
当下,小游戏鱼龙混杂,官方为能更好地保护用户、开发者以及平台的权益,近日宣布7月1日起试行小游戏主体信用分机制。 主体信用分是什么呢?简单来说,这是针对小游戏主体下所有小游戏帐号行为,对开发者进行评…...
贪心算法11
1. 贪心算法的概念 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心…...
【并发编程】JUC并发编程(彻底搞懂JUC)
文章目录一、背景二、什么是JUC?三、JUC框架结构四、JUC框架概述五、JUC中常用类汇总六、相关名词进程和线程进程线程创建线程的几种常见的方式并发和并行用户线程和守护线程七、synchronized 作用范围:八、Lock锁(重点)什么是 Lock锁类型Lock接口lock()…...
Compose 动画 (七) : 高可定制性的动画 Animatable
1. Animatable和animateDpAsState的区别是什么 Animatable是Android Compose动画的底层API,如果我们查看源码,可以发现animateDpAsState内部是调用的animateValueAsState,而animateValueAsState内部调用的是Animatable animateDpAsState比A…...
vue3组件传值
1.父向子传值 父组件 引入子组件 import Son from ./components/Son.vue 设置响应式数据 const num ref(99) 绑定到子组件 <Son :num"num"></Son> 子组件 引入defineProps import { defineProps } from vue; 生成实例接收数据 type设置接收类…...
小白开发微信小程序00--文章目录
一个小白,一个老牛,空手能不能套白羊,能不能白嫖?我告诉你,一切都so easy,这个系列从0到106,屌到上天,盖过任何一个,试问,网上讲微信小程序开发的,…...
随手记录第九话 -- Java框架整合篇
框架莫过于Spring了,那就以它为起点吧。 本文只为整理复习用,详细内容自行翻看以前文章。 1.Spring 有人说是Spring成就Java,其实也不是并无道理。 1.1 Spring之IOC控制反转 以XML注入bean的方式为入口,定位、加载、注册&…...
电影《铃芽之旅》观后感
这周看了电影《铃芽之旅》,整部电影是新海诚的新作。电影讲述的是女主铃芽为了关闭往门,在日本旅行中,遭遇灾难的故事。 (1)往昔记忆-往昔之物 电影中,有很多的“往门”,换成中国的话说…...
Web自动化测试(二)(全网最给力自动化教程)
欢迎您来阅读和练手!您将会从本章的详细讲解中,获取很大的收获!开始学习吧! 2.4 CSS定位2.5 SeleniumBuilder辅助定位元素2.6 操作元素(键盘和鼠标事件) 正文 2.4 CSS定位 前言 大部分人在使用selenium定…...
【C语言经典例题!】逆序字符串
目录 一、题目要求 二、解题步骤 ①递归解法 思路 完整代码 ②循环解法 思路 完整代码 嗨大家好! 本篇博客中的这道例题,是我自己在一次考试中写错的一道题 这篇博客包含了这道题的几种解法,以及一些我自己对这道题的看法ÿ…...
21 - 二叉树(三)
文章目录1. 二叉树的镜像2. 判断是不是完全二叉树3. 完全二叉树的节点个数4. 判断是不是平衡二叉树1. 二叉树的镜像 #include <ctime> class Solution {public:TreeNode* Mirror(TreeNode* pRoot) {// write code hereif (pRoot nullptr) return pRoot;//这里记得要记得…...
【A-Star算法】【学习笔记】【附GitHub一个示例代码】
文章目录一、算法简介二、应用场景三、示例代码Reference本文暂学习四方向搜索,一、算法简介 一个比较经典的路径规划的算法 相关路径搜索算法: 广度优先遍历(BFC)深度优先遍历(DFC)Di jkstra算法&#…...
纽扣电池澳大利亚认证的更新要求
澳大利亚强制性安全和信息标准草案具体规定了对含有纽扣电池和纽扣电池以 及纽扣电池和纽扣电池本身的消费品的要求, 适用范围 1.本法规适用于: 纽扣锂电池(任何尺寸和类型); 直径为16毫米或以上的纽扣锂电池: 一起提供的纽扣电池(未预先安装在产品中)。 2.但是&…...
零代码零距离,明道云开放日北京站圆满结束
文/麦壁瑜 编辑/李雨珂 2023年3月17日,为期一天的明道云开放日北京站圆满结束。本次开放日迎来超过100名伙伴和客户现场参会,其中不乏安利、通用技术集团、民生银行、迈外迪、DELSK集团、中国人民养老保险、北京汽车等知名企业代表。北京大兴机场、作业…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
