小菜鸟

java菜鸟号正在起航

Scala 入门:基础语法与运行机制解析

Scala 作为一门融合了面向对象和函数式编程的多范式语言,因与 Spark 等大数据框架的深度结合而广泛流行。本文从一个简单示例出发,带你快速了解 Scala 的基础语法和运行机制。

第一个 Scala 程序

示例代码:Hello World

object Hello {
  // 定义主方法,程序入口
  def main(args: Array[String]): Unit = {
    println("Hello, Scala!")
  }
}

代码解析

  • object:声明一个 “伴生对象”(Singleton 对象),类似 Java 中的单例类,整个程序中只存在一个实例。
  • def:用于定义方法,main 是程序的入口方法(与 Java 类似)。
  • 参数与返回值:
    • args: Array[String]:方法参数,args 是参数名,Array[String] 是类型(Scala 中类型写在参数名后,用冒号分隔)。
    • : Unit:表示返回值为空,相当于 Java 中的 void
  • println:输出语句,底层调用 Scala 标准库的 Predef.println 方法。

编译与运行

编译 Scala 代码

使用 scalac 命令编译 .scala 文件(类似 Java 的 javac):

阅读全文 »

Shell 中的判断语句:test、[] 与 [[]] 的全面用法

在 Shell 脚本中,判断语句是实现条件逻辑的基础。无论是文件类型检查、权限验证,还是数值 / 字符串比较,都需要通过判断语句实现。本文详细讲解 test 命令、[ ][[ ]] 三种判断方式的用法及差异。

判断语句的三种形式

Shell 中常用的判断形式有三种,功能类似但语法略有差异:

形式 说明 兼容性
test 条件 基础判断命令 所有 Shell 兼容
[ 条件 ] test 命令的简化写法(注意空格) 所有 Shell 兼容
[[ 条件 ]] Bash 扩展语法,支持更多特性 仅 Bash、Zsh 等现代 Shell 支持

基本用法示例

三种形式可以互换,结果完全一致:

# 判断文件是否为目录
test -d /etc && echo "是目录" || echo "不是目录"
[ -d /etc ] && echo "是目录" || echo "不是目录"
[[ -d /etc ]] && echo "是目录" || echo "不是目录"

输出均为是目录

文件类型判断

用于检查文件是否存在及类型(目录、普通文件等),常用选项如下:

阅读全文 »

Shell 流程控制:if 条件判断与 case 分支语句

流程控制是 Shell 脚本的核心功能,通过 ifcase 语句可以实现根据不同条件执行不同命令的逻辑。本文将详细讲解这两种语句的语法、用法及注意事项。

if 条件判断语句

if 语句通过判断条件的真假来执行不同的命令块,支持单分支、双分支和多分支结构。

基本语法

# 单分支
if 条件
then
  命令1
  命令2
fi

# 双分支
if 条件
then
  条件为真时执行
else
  条件为假时执行
fi

# 多分支
if 条件1
then
  条件1为真时执行
elif 条件2
then
  条件2为真时执行
else
  所有条件都为假时执行
fi
阅读全文 »

Linux 统计命令详解:wc 命令的全方位应用

在 Linux 系统中,wc(Word Count)命令是用于统计文本文件内容的实用工具,可快速计算文件的行数、单词数、字符数和字节数。无论是处理日志文件、分析数据还是脚本编写,wc 都能提供高效的统计支持。本文将详细介绍 wc 命令的用法、选项及实战示例。

wc 命令的基本语法

wc 命令的基本格式如下:

wc [选项] 文件名/文件列表

若不指定文件名,wc 会从标准输入(如管道传递的数据)中读取内容并统计。

核心选项与功能

wc 命令通过不同选项实现不同维度的统计,常用选项如下:

选项 功能描述 说明
-l 统计行数 以换行符(\n)为行结束标志,空行也会被计入。
-w 统计单词数 以空格、制表符(\t)或换行符分隔的字符串视为一个单词,连续分隔符视为一个。
-m 统计字符数 包括所有字符(字母、数字、符号、空格、换行符等),支持多字节字符(如中文)。
-c 统计字节数 以字节为单位计数,与字符数的区别在于:单字节字符(如英文)两者相同,多字节字符(如中文)则不同(如 UTF-8 中一个中文字符占 3 字节)。
阅读全文 »

MySQL 主从复制详解:原理、配置与架构

MySQL 主从复制是分布式数据库架构的基础,通过将主库(Master)的数据异步复制到从库(Slave),实现读写分离、负载均衡和数据备份。本文详细解析主从复制的核心原理、复制方式、配置步骤及常见架构。

主从复制的核心概念与线程

主从复制依赖三个关键线程协同工作,实现数据从 Master 到 Slave 的传递与应用:

线程类型 所在节点 核心作用
Binlog Dump Thread Master 监测 Master 的二进制日志(binlog)变化,当有数据更新时,将 binlog 事件发送给 Slave。
I/O Thread Slave 连接 Master,接收 Binlog Dump Thread 发送的 binlog 事件,写入 Slave 的中继日志(relay log)。
SQL Thread Slave 读取中继日志中的 binlog 事件,解析并执行 SQL 语句,将 Master 的数据变更应用到 Slave。

主从复制的三种方式

根据数据同步的时效性和一致性保障,主从复制分为以下三种方式:

1. 异步复制(默认方式)

  • 原理:Master 执行事务后,将变更写入 binlog 即返回成功,无需等待 Slave 确认接收。
  • 特点:
    • 性能最优(无等待延迟)。
    • 存在数据不一致风险(若 Master 崩溃,Slave 可能未收到最新 binlog)。
  • 适用场景:对数据一致性要求不高,优先追求写入性能的场景(如日志存储)。
阅读全文 »
0%