当前位置: 首页 > news >正文

Scala第五章节

Scala第五章节

scala总目录

章节目标

  1. 掌握方法的格式和用法
  2. 掌握函数的格式和用法
  3. 掌握九九乘法表案例

1. 方法

1.1 概述

实际开发中, 我们需要编写大量的逻辑代码, 这就势必会涉及到重复的需求. 例如: 求10和20的最大值, 求11和22的最大值, 像这样的需求, 用来进行比较的逻辑代码需要编写两次, 而如果把比较的逻辑代码放到方法中, 只需要编写一次就可以了, 这就是方法. scala中的方法和Java方法类似, 但scala与Java定义方法的语法是不一样的。

1.2 语法格式
def 方法名(参数名:参数类型, 参数名:参数类型) : [return type] = {//方法体
}

注意:

  • 参数列表的参数类型不能省略
  • 返回值类型可以省略,由scala编译器自动推断
  • 返回值可以不写return,默认就是{}块表达式的值
1.3 示例

**需求: **

  1. 定义一个方法getMax,用来获取两个整型数字的最大值, 并返回结果(最大值).
  2. 调用该方法获取最大值, 并将结果打印到控制台上.

参考代码

  • 方式一: 标准写法
//1. 定义方法, 用来获取两个整数的最大值.
def getMax(a:Int, b:Int): Int = {return if(a > b) a else b
}
//2. 调用方法, 获取最大值.
val max = getMax(10, 20)
//3. 打印结果.
println("max: " + max)
  • 方式二: 优化版
//1. 定义方法, 用来获取两个整数的最大值.
def getMax(a:Int, b:Int) = if(a > b) a else b
//2. 调用方法, 获取最大值.
val max = getMax(22, 11)
//3. 打印结果.
println("max: " + max)
1.4 返回值类型推断

scala定义方法可以省略返回值的数据类型,由scala自动推断返回值类型。这样方法定义后更加简洁。

注意: 定义递归方法,不能省略返回值类型

示例

定义递归方法, 求5的阶乘.

步骤

  1. 定义方法factorial, 用来计算某个数字的阶乘

    规律: 1的阶乘等于1, 其他数字的阶乘为: n! = n * (n - 1)!

  2. 调用方法, 获取5的阶乘, 并将结果打印到控制台上.

参考代码

//1. 定义方法factorial, 用来计算某个数字的阶乘
def factorial(n:Int):Int = if(n == 1) 1 else n * factorial(n - 1)
//2. 调用方法, 获取5的阶乘.
val result = factorial(5)
//3. 将结果打印到控制台上.
println("result: " + result)
1.5 惰性方法

当记录方法返回值的变量被声明为lazy时, 方法的执行将被推迟, 直到我们首次使用该值时, 方法才会执行, 像这样的方法, 就叫: 惰性方法.

注意:

  1. Java中并没有提供原生态的"惰性"技术, 但是可以通过特定的代码结构实现, 这种结构被称之为: 懒加载(也叫延迟加载)
  2. lazy不能修饰var类型的变量.

使用场景:

  1. 打开数据库连接

    由于表达式执行代价昂贵, 因此我们希望能推迟该操作, 直到我们确实需要表达式结果值时才执行它

  2. 提升某些特定模块的启动时间.

    为了缩短模块的启动时间, 可以将当前不需要的某些工作推迟执行

  3. 确保对象中的某些字段能优先初始化

    为了确保对象中的某些字段能优先初始化, 我们需要对其他字段进行惰性化处理

需求

定义一个方法用来获取两个整数和, 通过"惰性"技术调用该方法, 然后打印结果.

参考代码

//1. 定义方法, 用来获取两个整数和
def getSum(a:Int, b:Int) = {println("getSum方法被执行了...")a + b
}
//2. 通过"惰性"方式调用该方法.
lazy val sum = getSum(1, 2)		//此时我们发现getSum方法并没有执行, 说明它的执行被推迟了.//3. 打印结果, 并观察
println("sum: " + sum) 			//打印结果为sum: 3, 说明首次使用方法返回值时, 方法才会加载执行.
1.6 方法参数

scala中的方法参数,使用比较灵活。它支持以下几种类型的参数:

  • 默认参数
  • 带名参数
  • 变长参数
1.6.1 默认参数

在定义方法时可以给参数定义一个默认值。

示例

  1. 定义一个计算两个整数和的方法,这两个值分别默认为10和20
  2. 调用该方法,不传任何参数

参考代码

//1. 定义一个方法, 用来获取两个整数的和
// x,y的默认值分别为10和20
def getSum(x:Int = 10, y:Int = 20) = x + y
//2. 通过默认参数的形式, 调用方法
val sum = getSum()
//3. 打印结果
println("sum: " + sum)
1.6.2 带名参数

在调用方法时,可以指定参数的名称来进行调用。

示例

  1. 定义一个计算两个整数和的方法,这两个值分别默认为10和20
  2. 调用该方法,只设置第一个参数的值

参考代码

//1. 定义一个方法, 用来获取两个整数的和
def getSum(x:Int = 10, y:Int = 20) = x + y
//2. 通过默认参数的形式, 调用方法
val sum = getSum(x=1)
//3. 打印结果
println("sum: " + sum)
1.6.3 变长参数

如果方法的参数是不固定的,可以将该方法的参数定义成变长参数。

语法格式:

def 方法名(参数名:参数类型*):返回值类型 = {//方法体
}

注意:

  1. 在参数类型后面加一个*号,表示参数可以是0个或者多个
  2. 一个方法有且只能有一个变长参数, 并且变长参数要放到参数列表的最后边.

**示例一: **

  1. 定义一个计算若干个值相加的方法
  2. 调用方法,传入以下数据:1,2,3,4,5

参考代码

//1. 定义一个计算若干个值相加的方法
def getSum(a:Int*) = a.sum
//2. 调用方法,传入一些整数, 并获取它们的和
val sum = getSum(1,2,3,4,5)
//3. 打印结果
println("sum: " + sum)
1.7 方法调用方式

在scala中,有以下几种方法调用方式:

  • 后缀调用法
  • 中缀调用法
  • 花括号调用法
  • 无括号调用法

注意: 在编写spark、flink程序时,会经常使用到这些方法调用方式。

1.7.1 后缀调用法

这种方法与Java没有区别, 非常简单.

语法

对象名.方法名(参数)

示例

使用后缀法调用Math.abs, 用来求绝对值

参考代码

//后缀调用法
Math.abs(-1)	//结果为1
1.7.2 中缀调用法

语法

对象名 方法名 参数

例如:1 to 10

注意: 如果有多个参数,使用括号括起来

示例

使用中缀法调用Math.abs, 用来求绝对值

//中缀调用法
Math abs -1		//结果为1

扩展: 操作符即方法

来看一个表达式, 大家觉得这个表达式像不像方法调用?

1 + 1

在scala中,+ - * / %等这些操作符和Java一样,但在scala中,

  • 所有的操作符都是方法
  • 操作符是一个方法名字是符号的方法
1.7.3 花括号调用法

语法

Math.abs{ // 表达式1// 表达式2
}

注意: 方法只有一个参数,才能使用花括号调用法

示例

使用花括号调用法Math.abs求绝对值

参考代码

//花括号调用法
Math.abs{-10}	//结果为: 10
1.7.4 无括号调用法

如果方法没有参数,可以省略方法名后面的括号

示例

  • 定义一个无参数的方法,打印"Hello, Scala!"
  • 使用无括号调用法调用该方法

参考代码

//1. 定义一个无参数的方法,打印"Hello, Scala!"
def sayHello() = println("Hello, Scala!")
//2. 调用方法
sayHello

注意:

  1. 在Scala中, 如果方法的返回值类型是Unit类型, 这样的方法称之为过程(procedure)
  2. 过程的等号(=)可以省略不写. 例如:
def sayHello() = println("Hello, Scala!")   
//可以改写为
def sayHello() { println("Hello, Scala!") }	 //注意: 这个花括号{}不能省略

2. 函数

scala支持函数式编程,将来编写Spark/Flink程序会大量使用到函数, 目前, 我们先对函数做一个简单入门, 在后续的学习过程中, 我们会逐步重点讲解函数的用法.

2.1 定义函数

语法

val 函数变量名 = (参数名:参数类型, 参数名:参数类型....) => 函数体

注意:

  • 在Scala中, 函数是一个对象(变量)
  • 类似于方法,函数也有参数列表和返回值
  • 函数定义不需要使用def定义
  • 无需指定返回值类型
2.2 示例

**需求: **

  1. 定义一个计算两个整数和的函数
  2. 调用该函数

参考代码

//1. 定义一个用来计算两个整数和的函数, 并将其赋值给变量sum
val getSum = (x:Int, y:Int) => x + y
//2. 调用函数.
val result = getSum(1,2)
//3. 打印结果
println("result: " + result)
2.3 方法和函数的区别

在Java中, 方法和函数之间没有任何区别, 只是叫法不同. 但是在Scala中, 函数和方法就有区别了, 具体如下:

  • 方法是隶属于类或者对象的,在运行时,它是加载到JVM的方法区中
  • 可以将函数对象赋值给一个变量,在运行时,它是加载到JVM的堆内存中
  • 函数是一个对象,继承自FunctionN,函数对象有apply,curried,toString,tupled这些方法。方法则没有

结论: 在Scala中, 函数是对象, 而方法是属于对象的, 所以可以理解为: 方法归属于函数.

示例

演示方法无法赋值给变量

//1. 定义方法
def add(x:Int,y:Int)= x + y//2. 尝试将方法赋值给变量.
//val a = add(1, 2)		//不要这样写, 这样写是在"调用方法", 而不是把方法赋值给变量
val a = add//3. 上述代码会报错
<console>:12: error: missing argument list for method add
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `add _` or `add(_,_)` instead of `add`.val a = add
2.4 方法转换为函数

有时候需要将方法转换为函数. 例如: 作为变量传递,就需要将方法转换为函数

格式

val 变量名 = 方法名 _		//格式为: 方法名 + 空格 + 下划线

注意: 使用 _即可将方法转换为函数

示例

  1. 定义一个方法用来计算两个整数和
  2. 将该方法转换为一个函数,并赋值给变量

参考代码

//1. 定义一个方法用来计算两个整数和
def add(x:Int, y:Int)= x + y
//2. 将该方法转换为一个函数,并赋值给变量
val a = add _
//3. 调用函数, 用来获取两个整数的和.
val result = a(1, 2)
//4. 打印结果
println("result: " + result)

3. 案例: 打印nn乘法表

3.1 需求

定义方法实现, 根据用户录入的整数, 打印对应的乘法表。

例如: 用户录入5,则打印55乘法表,用户录入9,则打印99乘法表。

3.2 目的
  1. 考察键盘录入和方法, 函数的综合运用.
  2. 体会方法和函数的不同.
3.3 步骤
  1. 定义方法(或者函数), 接收一个整型参数.
  2. 通过for循环嵌套实现, 根据传入的整数, 打印对应的乘法表.
  3. 调用方法(函数), 输出结果.
3.4 参考代码
  • 方式一: 通过方法实现
//1. 定义一个方法, 接收一个整型参数.
def printMT(n:Int) = {   //Multiplication Table(乘法表)//2. 通过for循环嵌套实现, 根据传入的整数, 打印对应的乘法表.for(i <- 1 to n; j <- 1 to i) {print(s"${j} * ${i} = ${j * i}\t"); if(j==i) println()}
}
//3. 调用方法
printMT(5)//优化版: 上述定义方法的代码可以合并为一行(目前只要能看懂即可)
/*def printMT(n:Int) = for(i <- 1 to n; j <- 1 to i) print(s"${j} * ${i} = ${j * i}" + (if(j==i) "\r\n" else "\t"))*/
  • 方式二: 通过函数实现
//1. 定义一个函数, 接收一个整型参数.
val printMT = (n:Int) => {//2. 通过for循环嵌套实现, 根据传入的整数, 打印对应的乘法表.for(i <- 1 to n; j <- 1 to i) {print(s"${j} * ${i} = ${j * i}\t"); if(j==i) println()}
}
//3. 调用函数
printMT(9)//优化版: 上述定义函数的代码可以合并为一行(目前只要能看懂即可)
/*val printMT = (n:Int) => for(i <- 1 to n; j <- 1 to i) print(s"${j} * ${i} = ${j * i}" + (if(j==i) "\r\n" else "\t"))*/

scala学习配套视频

相关文章:

Scala第五章节

Scala第五章节 scala总目录 章节目标 掌握方法的格式和用法掌握函数的格式和用法掌握九九乘法表案例 1. 方法 1.1 概述 实际开发中, 我们需要编写大量的逻辑代码, 这就势必会涉及到重复的需求. 例如: 求10和20的最大值, 求11和22的最大值, 像这样的需求, 用来进行比较的逻…...

erlang练习题(三)

题目一 查询列表A是否为列表B的前缀 解答 isPrefix([], List2) -> io:format("A is prefix of B ~n");isPrefix([H1 | ListA], [H2 | ListB]) ->case H1 H2 oftrue -> isPrefix(ListA, ListB);false -> io:format("A is not prefix of B ~n&quo…...

What Is A DNS Amplification DDoS Attack?

什么是 DNS 放大攻击&#xff1f; 域名系统 &#xff08;DNS&#xff09; 是用于在网站的机器可读地址&#xff08;例如 191.168.0.1&#xff1a;80&#xff09;和人类可读名称&#xff08;例如 radware.com&#xff09;之间进行解析的目录在 DNS 放大攻击中&#xff0c;攻击者…...

jvm笔记

好处&#xff1a; 跨平台 内存管理机制&#xff0c;垃圾回收功能 数组下标越界检查 多态 名词解释&#xff1a; jvm java虚拟机&#xff0c;是java程序的运行环境 jre jvm基础类库 jdk jre编译工具 javase jdkide工具 javaee javase应用服务器 jvm的内存结构&#xff1a; 程序…...

WPF中的控件

内容控件&#xff1a;label、border Window控件 Label控件 Border控件 内容控件 Button控件 点击取消按钮关闭程序&#xff1b;点击登录按钮打开BorderWindow窗口。 TextBox控件 PasswordBox控件 TextBlock控件 加载窗口时显示TextBlock中的内容 RadioButton控件 CheckBox控件…...

Java下对象的序列化和反序列化(写出和读入)

代码如下&#xff1a; public class MyWork {public static void main(String[] args) throws IOException, ClassNotFoundException {//序列化File f new File("testFile/testObject.txt");ObjectOutputStream oos new ObjectOutputStream(new FileOutputStream(…...

基于springboot的洗衣店订单管理系统

目录 前言 一、技术栈 二、系统功能介绍 顾客信息管理 店家信息管理 店铺信息管理 洗衣信息管理 预约功能 洗衣信息 交流区 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#x…...

Llama2部署踩坑

1、权重是.bin&#xff0c;但是报错找不到.safetensors 明明权重文件是.bin&#xff0c;但是却提示我缺少.safetensors。最后发现好像是 llama2-7b这个模型文件不行&#xff0c;必须要llama2-7b-chat这个模型才能读取的通&#xff0c;具体原因还暂不明确。...

Adams齿轮副

1.运动副 添加旋转副的时候&#xff0c;必须先物体后公共part(即此处的ground&#xff09;&#xff0c;最后再选择质心点 2.啮合点 啮合点marker的z轴必须是齿轮分度圆的切线方向 3.啮合点 两齿轮的旋转副&#xff0c;和啮合点&#xff0c;即cv marker &#xff0c;必须属…...

Elasticsearch keyword 中的 ignore_above配置项

1. ignore_above 关于es mapping的keyword ignore_above配置项的解释如下&#xff1a; Do not index any string longer than this value. Defaults to 2147483647 so that all values would be accepted. 不会索引大于ignore_above配置值的数据&#xff0c;默认值2147483647字…...

RabbitMQ原理(一):基础知识

文章目录 1.初识MQ1.1.同步调用1.2.异步调用1.3.技术选型2.RabbitMQ2.1.安装2.2.收发消息2.2.1.交换机2.2.2.队列2.2.3.绑定关系2.2.4.发送消息2.3.数据隔离2.3.1.用户管理2.3.2.virtual host微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于…...

[Linux]Git

文章摘于GitHub博主geeeeeeeeek 文章目录 1.1 Git 简易指南创建新仓库工作流添加与提交推送改动 1.2 创建代码仓库git init用法讨论裸仓库 例子 git clone用法讨论仓库间协作 例子用法讨论栗子 1.3 保存你的更改git add用法讨论缓存区 栗子 git commit用法讨论记录快照&#xf…...

ChatGPT终于可以进行网络搜索 内容不再限于2021年9月前

微软和谷歌已经让旗下聊天机器人进行网上搜索&#xff0c;并提供原始材料的链接&#xff0c;以提高信息共享的可信度和范围。但是&#xff0c;ChatGPT迄今为止只接受了有时间限制的训练数据&#xff0c;这些数据仅限于从互联网上收集的2021年9月之前的信息。在周三的一系列推文…...

uni-app:实现页面效果1

效果 代码 <template><view><view class"add"><image :src"add_icon" mode""></image></view><view class"container_position"><view class"container_info"><view c…...

归一化和标准化的联系与区别及建议

归一化和标准化是数据预处理中常用的两种方法。它们都是为了调整数据的尺度,使得数据更符合我们的分析需求。虽然二者的目的相同但是具体实现方式和适用场景却有所不同。下面,我们来详细介绍-下它们的联系和区别。 一、联系 归一化和标准化都能够使得数据的尽度缩放到不同的…...

数据结构--栈的实现

数据结构–栈的实现 1.栈的概念和结构&#xff1a; 栈的概念&#xff1a;栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Las…...

第十章 异常

python使用异常的特殊对象管理程序执行期间发生的错误。每当发生错误时&#xff0c;python会创建异常对象。如果编写了处理该异常的代码&#xff0c;程序将继续运行&#xff1b;如果未处理&#xff0c;程序将显示traceback。 异常是使用try-except代码块处理的。使用try-excep…...

Rust冒泡排序

Rust冒泡排序 这段代码定义了一个名为 bubble_sort 的函数&#xff0c;接受一个可变的整数类型数组作为输入&#xff0c;然后使用嵌套的循环来实现冒泡排序。外部循环从数组的第一个元素开始迭代到倒数第二个元素&#xff0c;内部循环从数组的第一个元素开始迭代到倒数第二个元…...

麒麟信安服务器操作系统V3.5.2重磅发布!

9月25日&#xff0c;麒麟信安基于openEuler 22.03 LTS SP1版本的商业发行版——麒麟信安服务器操作系统V3.5.2正式发布。 麒麟信安服务器操作系统V3定位于电力、金融、政务、能源、国防、工业等领域信息系统建设&#xff0c;以安全、稳定、高效为突破点&#xff0c;满足重要行…...

密码技术 (1) - 对称密码

一. 前言 对称密码是指加密数据和解密数据使用的是相同的秘钥。发送者使用秘钥将加密后的数据发送给接受者&#xff0c;接收者收到数据后用相同的秘钥解密&#xff0c;恢复原始数据。 对称密码具有加密和解密快速的特点&#xff0c;适用于需要快速加密的场景&#xff0c;常用的…...

基于PYQT5的GUI开发系列教程【二】QT五个布局的介绍与运用

目录 本文概述 作者介绍 创建主窗口 水平布局 垂直布局 栅格布局 分裂器水平布局 分裂器垂直布局 自由布局 取消原先控件的布局的方法 尾言 本文概述 PYQT5是一个基于python的可视化GUI开发框架&#xff0c;具有容易上手&#xff0c;界面美观&#xff0c;多平台…...

Cadence PCB 焊盘和封装

封装(Packaging) 封装指的是在电子元件制造中将电子元件(例如集成电路芯片、电子元器件等)进行物理保护和连接的过程。封装通常涉及将电子元件封装到外部保护壳或包装中,以确保其正常运作、连接到电路板并保护它们免受环境因素的影响。 封装的主要目标包括以下几个方面:…...

正在等待操作系统重新启动。 请重新启动计算机以安装autocad 2024。

正在等待操作系统重新启动。 请重新启动计算机以安装autocad 2024。 这是刚启动Autodesk 2024产品就弹出的弹窗&#xff0c;重启之后启动还是有这个 一直阻止安装程序运行 出现问题的原因是安装包存在问题 使用正确的安装包即可解决这个问题 需要的朋友查看图片或者评伦取…...

Windows电脑显示部分功能被组织控制

目录 问题描述 解决方法 总结 问题描述 如果你的电脑出现以上情况&#xff0c;建议你使用我这种方法&#xff08;万不得已&#xff09; 解决方法 原因就是因为当时你的电脑在激活的时候是选择了组织性激活的&#xff0c;所以才会不管怎么搞&#xff0c;都无法摆脱组织的控…...

Django模板加载与响应

前言 Django 的模板系统将 Python 代码与 HTML 代码解耦&#xff0c;动态地生成 HTML 页面。Django 项目可以配置一个或多个模板引擎&#xff0c;但是通常使用 Django 的模板系统时&#xff0c;应该首先考虑其内置的后端 DTL&#xff08;Django Template Language&#xff0c;D…...

Python 内置函数详解 (4) 类型转换

Python 内置函数 Python3.11共有75个内置函数,其来历和分类请参考:Python 新版本有75个内置函数,你不会不知道吧_Hann Yang的博客-CSDN博客https://blog.csdn.net/boysoft2002/article/details/132520234 函数列表 abs aiter all …...

SpringBoot之Web原生组件注入

文章目录 前言一、原生注解方式注入二、Spring方式注入三、切换web服务器与定制化总结 前言 注入Web原生Servlet、Filter、Listeber以及切换Web服务器。 一、原生注解方式注入 官方文档 - Servlets, Filters, and listeners Servlet注入&#xff1a; WebServlet(urlPattern…...

[每周一更]-(第64期):Dockerfile构造php定制化镜像

利用php官网镜像php:7.3-fpm&#xff0c;会存在部分插件缺失的情况&#xff0c;自行搭建可适用业务的镜像&#xff0c;才是真理 Dockerhub 上 PHP 官方基础镜像主要分为三个分支&#xff1a; cli: 没有开启 CGI 也就是说不能运行fpm。只可以运行命令行。fpm: 开启了CGI&#x…...

若依不分离+Thymeleaf select选中多个回显

项目中遇到的场景&#xff0c;亲测实用 表单添加时&#xff0c;select选中多个&#xff0c;编辑表单时&#xff0c;select多选回显&#xff0c;如图 代码&#xff1a; // 新增代码 <label class"col-sm-3 control-label">通道&#xff1a;</label><…...

OCX 添加方法和事件 HTML调用ocx函数及回调 ocx又调用dll VS2017

ocx添加方法 类视图 最后面的XXXXXlib 右键 添加 添加方法。 其它默认 添加事件 类视图 最后面的XXXXX 右键 添加 添加事件。 这样编译就ocx可以了。 #include <iostream> #include <string> #include <comutil.h>CMFCActiveXControlSmartPosCtrl* …...

湿地公园网站开发招标/营销型网站建设步骤

momis home链接:http://www.geocities.jp/momi619jp/来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/39335/viewspace-351259/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。 转载于:http://blog.itpub.net/39335/vi…...

少儿编程几岁开始学最好/广州seo

nohup 命令的功能是在不挂端的情况下执行命令&#xff0c;默认会输出一个 nohup.out 的文件。 用法&#xff1a; nohup COMMAND [ARG]... nohup OPTION 如果标准输入是终端&#xff0c;则将其从不可读的文件中重定向。 如果标准输出是终端&#xff0c;则尽可能将输出附加到…...

可不可以免费创建网站/建筑设计网站

JAVA问题总结13-从键盘输入并输出&#xff0c;加从键盘输入三个数&#xff0c;输出并按从大到小排序。 package java2; /*** 这是一个从键盘输入并输出的一个test* author xubo601450868* time 2015.8.26* version v1.0* */ import java.util.Scanner; public class test4 {pub…...

网站移动端怎么做/宁波seo排名优化哪家好

JAVA之旅(三)——数组&#xff0c;堆栈内存结构&#xff0c;静态初始化&#xff0c;遍历&#xff0c;最值&#xff0c;选择/冒泡排序&#xff0c;二维数组&#xff0c;面向对象思想我们继续JAVA之旅一.数组1.概念数组就是同一种类型数据的集合&#xff0c;就是一个容器数组的好…...

可以免费建手机网站/找网站公司制作网站

一、表读锁&#xff1a; 1、查看表上加过的锁&#xff1a; show open tables;2、手动添加表锁&#xff1a; lock table 表名称 read/write, 表名称2 read/write, 其他;如&#xff0c;给mylock表加读锁&#xff0c;给dept表加写锁&#xff1a; lock table mylock read, dept…...

网站建设需要考虑因素/百度竞价排名是以什么形式来计费的广告?

大家好&#xff0c;我是正在学习蒸鱼的煎鱼。前几天 Go 语言社区被 《Go1.17 快报&#xff1a;将移除 GOPATH》&#xff0c;以及最近 Go1.16 的 Go modules 变动引爆社区浪潮。经过三天冷静期&#xff0c;现在整体热度基本降下来了。煎鱼打算从另外一个角度来聊下&#xff0c;看…...