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

scala编码

1、Scala高级语言

Scala简介

Scala是一门类Java的多范式语言,它整合了面向对象编程和函数式编程的最佳特性。具体来讲
Scala运行于Java虚拟机(JVM)之上,井且兼容现有的Java程序,同样具有跨平台、可移植性好、方便的垃圾回收等特性
Scala是一门纯粹的面向对象的语言
Scala也是一门函数式语言

Scala也是一门更适合大数据的语言
Scala对集合类型数据处理有非常好的支持
Spark的底层用Scala编写

编程范式

编程范式是指计算机编程的基本风格或典范模式。常见的编程范式主要包括命令式编程和西数式编程。面向对象编程就属于命令式编程,比如C++、Java等
命令式语言是植根于冯•诺依曼体系的,一个命令式程序就是一个冯•诺依曼机的指令序列,给机器提供一条又一条的命令序列让其原封不动地执行
函数式编程,又称泛函编程,它将计算机的计算视为数学上的函数计算
函数编程语言最重要的基础是入演算,入演算对函数式编程特别是Lisp语言有着巨大的影响。典型的函数式语言包括Haskell、 Erlang和Lisp等
函数式编程与命令式编程
命令式编程涉及多线程之间的状态共享,需要锁机制实现并发控制
函数式编程不会在多个线程之间共享状态,不需要用锁机制,可以更好并行处理,充分利用多核CPU井行处理能力

1.1 Scala简介
Scala是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala运行在Java虚拟机上,并兼容现有的Java程序。 Scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。 函数编程范式更适合用于Map/Reduce和大数据模型,着眼于函数本身,函数范式逻辑清晰、简单,非常适合用于处理基于不变数据的批量处理工作。 像Spark,kafka等都是采用Scala开发的,所以学习好大数据,掌握scala是必要的。Flink是带有scala的api支持。 官网:The Scala Programming Language
安装方法:scala部署使用方法

1.5 Scala 编码规范
1.5.1 文件名和编码
#源文件名必须和它包含的顶层类名保持一致,包括大小写,并以.scala作为后缀名。
#源文件编码必须是 UTF-8
1.5.2 特殊字符

空格

除了换行符之外,ASCII空格(0x20)是唯一合法的空格字符。这意味着

  • 所有在源代码中(包括字符、字符串以及注释中)出现的其他空格字符需要转义,例如 Tab\t表示。

  • 缩进必须使用 4个空格 而不是 Tab

特殊转义字符

对于有特殊转义表示的字符 \b, \t, \n, \f, \r, \", \', \\,禁止使用其它等价转义方式。例如\012或者\u00a表示。

1.5.3 代码书写规范

列宽:每行不超过150个字符

缩进:4个空格,严禁使用Tab

括号的使用

  • 左花括号({)前不能换行,在其后换行。

  • 在右花括号(})前要有换行。

  • 如果右花括号是一句语句、一个方法、构造函数或非匿名类的结尾,其后需要换行。

new MyClass() { // 左花括号前不能换行,在其后换行@Overridedef method():Unit= {if (condition()) {try {do {something()} while (!stop()) // do-while中间的右花括号后} catch  { // try-catch中间的右花括号后无需换行case e:Exception =>recover()} // try-catch结束,右花括号后需要换行} else { // if-else中间的右花括号后无需换行doSomethingElese()} // if-else结束,右花括号后需要换行}

其他:scala中的简单表达式可以省略括号

// 推荐
def square(x: Int) = x * x
val y = if (x < 0) -x else x 
if(cond1){// one line statement
}else{// one line statement
}
​
// 避免
if (x < 0) -x
elsex

空行的使用

在以下情况下增加空行:

  • 在类的不同的成员间增加空行,包括:成员变量、构造函数、方法、内部类、静态初始化块、实例初始化块等两个成员变量声明之间可以不加空行。空行通常用于对成员变量进行逻辑分组

  • 方法体内,按需增加空行,以便从逻辑上对语句进行分组

  • 禁止使用连续的空行

1.5.4 注释风格

使用java风格的注释,不用使用scala风格

/** 单行注释 */
// 单行注释
​
/*** java风格的多行注释* 推荐使用*/
​
/** scala风格的注释* 不推荐使用*/
1.5.5 命名规范

基本原则:驼峰命名,命名有业务含义。

val orderName = "name"

相关文章:

scala编码

1、Scala高级语言 Scala简介 Scala是一门类Java的多范式语言&#xff0c;它整合了面向对象编程和函数式编程的最佳特性。具体来讲Scala运行于Java虚拟机&#xff08;JVM)之上&#xff0c;井且兼容现有的Java程序&#xff0c;同样具有跨平台、可移植性好、方便的垃圾回收等特性…...

智慧路灯杆如何实现雪天道路安全监测

随着北方区域连续发生暴雪、寒潮、大风等气象变化&#xff0c;北方多地产生暴雪和低温雨雪冰冻灾害风险&#xff0c;冬季雨雪天气深度影响人们出行生活&#xff0c;也持续增加道路交通风险。 智慧路灯杆是现代城市不可或缺的智能基础设施&#xff0c;凭借搭载智慧照明、环境监测…...

C语言指针基础题(二)

目录 例题一题目解析及答案 例题二题目解析及答案 例题三题目解析及答案 例题四题目解析及答案 例题五题目解析及答案 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x1f…...

物奇平台MIC配置与音频通路关系

物奇平台MIC配置与音频通路关系 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机音频&#xff0c;DSP音频项目核心开发资料, 1 255代表无效&am…...

外包干了3年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了差不多3年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…...

阶段十-java新特性

JDK9新特性 1.模块化系统 jar包结构的变化 jar -》model -》package -》class 通过不同的模块进行开发 每个模块都有自己的模块配置文件module-info.java 2.JShell JDK9自带的命令行开发&#xff0c;在进行简单的代码调试时可以直接编译使用 可以定义变量&#xff0c;方法&…...

win10重装系统历程

win10系统更新出问题了&#xff0c;重置系统卡死&#xff0c;遂决定重装。 微软官方工具制作U盘启动盘&#xff0c; 进行到分区时&#xff0c;一冲动把盘都格式化了&#xff0c; 后面了解到&#xff0c;即便进不了系统也有办法备份数据的... 进行到安装时&#xff0c;提示W…...

【知识积累】深度度量学习综述

原文指路&#xff1a;https://hav4ik.github.io/articles/deep-metric-learning-survey Problem Setting of Supervised Metric Learning 深度度量学习是一组旨在衡量数据样本之间相似性的技术。 Contrastive Approaches 对比方法的主要思想是设计一个损失函数&#xff0c;直…...

webrtc网之sip转webrtc

OpenSIP是一个开源的SIP&#xff08;Session Initiation Protocol&#xff09;服务器&#xff0c;它提供了一个可扩展的基础架构&#xff0c;用于建立、终止和管理VoIP&#xff08;Voice over IP&#xff09;通信会话。SIP是一种通信协议&#xff0c;用于建立、修改和终止多媒体…...

【Spring】依赖注入之属性注入详解

前言&#xff1a; 我们在进行web开发时&#xff0c;基本上一个接口对应一个实现类&#xff0c;比如IOrderService接口对应一个OrderServiceImpl实现类&#xff0c;给OrderServiceImpl标注Service注解后&#xff0c;Spring在启动时就会将其注册成bean进行统一管理。在Co…...

6-tornado配置文件的使用(命令行解析、文件设置)

tornado.options options 可以让服务运行前提前设置参数&#xff0c;而常见的2种设置参数方式为&#xff1a;1. 命令行设置 2. 文件设置命令行解析 使用tornado.options.define前定义&#xff0c;通常在模块的顶层。 然后&#xff0c;可以将这些选项作为以下属性的属性进行访…...

k8s ingress service endpoints 解决微信服务器验证问题(内网穿透)

最近公司要搞微信公众号开发&#xff0c;想用自己公司内网的电脑调试&#xff0c;但涉及到微信服务器地址(URL)验证的问题&#xff08;内网穿透&#xff09;&#xff0c;查了网上一堆文章有推荐ngrok的&#xff0c;但被微信墙了&#xff1b;有推荐sunny-ngrok的&#xff0c;免费…...

postgresql-effective_cache_size参数详解

在 PostgreSQL 中&#xff0c;effective_cache_size 是一个配置参数&#xff0c;用于告诉查询规划器关于系统中可用缓存的估计信息。这个参数并不表示实际的内存量&#xff0c;而是用于告诉 PostgreSQL 查询规划器系统中可用的磁盘缓存和操作系统级别的文件系统缓存的大小。它用…...

CUDA锁页内存的使用

1.定义指针变量 float *host_Weights; // 锁页内存 float *dev_Weights; // 设备端内存2.分配内存 cudaHostAlloc((void**)&host_Weights, numInputs * sizeof(float), cudaHostAllocDefault); // 用锁页内存&#xff0c;可以有效加快数据传递速度 cudaMalloc((vo…...

python常见代码用法

1.result [[]] * n 和 result [[] for _ in range(n)] 辨析 n 3 result [[]] * nprint(result) # 输出&#xff1a;[[], # [], # []]print(result[0] is result[1] is result[2]) # 输出&#xff1a;True* 运算符进行复制&#xff0c;这些空列表实际…...

MTU TCP-MSS(转载)

MTU MTU 最大传输单元&#xff08;Maximum Transmission Unit&#xff0c;MTU&#xff09;用来通知对方所能接受数据服务单元的最大尺寸&#xff0c;说明发送方能够接受的有效载荷大小。 是包或帧的最大长度&#xff0c;一般以字节记。如果MTU过大&#xff0c;在碰到路由器时…...

【ARM Trace32(劳特巴赫) 高级篇 20 -- SNOOPer 使用介绍】

请阅读【Trace32 ARM 专栏导读】 文章目录 Trace32 SNOOPer 介绍SNOOPer 主要功能:SNOOPer 使用场景SNOOPer.ERRORSTOPSNOOPer.ModeSNOOPer.PCSNOOPer.RateSNOOPer.SELectSNOOPer.SIZESNOOPer.TDelaySNOOPer.TOutSNOOPer.TValueSNOOPer PC 采样Trace32 SNOOPer 介绍 在 Laut…...

MySQL笔记-第11章_数据处理之增删改

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1&#xff1a;VALUES的方式添加1.3 方式2&#xff1a;将查询结果插入到表中 2. 更…...

ANSYS常见error解答(转)

根据SimC结构工作室这段时间的答疑总结&#xff0c;给出了部分关于ANSYS常见error的解释说明&#xff0c;希望对大家有所帮助。 1.KBC is not a recognized BEGIN command, abbreviation, or macro.This command will be ignored. 答&#xff1a;ANSYS 对命令的使用有严格的规…...

【Let‘s Encrypt SSL】使用 acme.sh 给 Nginx 安装 Let’s Encrypt 提供的免费 SSL 证书

安装acme.sh 安装 acme.sh 并设置邮箱用来接受重要通知&#xff0c;如证书快过期未更新通知 curl https://get.acme.sh | sh -s emailmyexample.com执行命令后几秒就安装好了&#xff0c;如果半天没有反应请 CtrlC 后重新执行命令。acme.sh 安装在 ~/.acme.sh 目录下&#xf…...

C51开发中汇编指令定位与内存优化实战

1. 理解C51开发中的汇编指令定位问题在嵌入式开发领域&#xff0c;尤其是使用Keil C51这类经典工具链时&#xff0c;我们经常需要深入理解编译器如何将高级语言转换为机器指令。最近我在调试一个8051项目时&#xff0c;遇到了一个典型问题&#xff1a;如何准确确定C源代码对应的…...

从‘密码长度’到‘任意代码执行’:手把手复现攻防世界int_overflow靶场(附Python3 EXP)

从密码长度到系统控制&#xff1a;整数溢出漏洞实战攻防全解析 在网络安全领域&#xff0c;整数溢出漏洞往往因其隐蔽性而被开发者忽视&#xff0c;却可能成为攻击者打开系统大门的金钥匙。本文将带您深入一个典型场景&#xff1a;如何通过精心构造的密码输入&#xff0c;从简单…...

C51可重入函数原理与实践指南

1. 理解C51中的可重入函数概念 在8051单片机开发中&#xff0c;可重入函数(Reentrant Function)是一个关键但常被误解的概念。与通用计算机上的C语言开发不同&#xff0c;由于8051架构的特殊限制&#xff0c;标准C51函数默认都是不可重入的。这源于8051硬件设计的几个固有特点&…...

Uniapp中处理加密PDF流:从字节数组到本地渲染的完整实践

1. 加密PDF流处理的核心挑战 在Uniapp中处理加密PDF流时&#xff0c;开发者常会遇到几个典型问题。首先是字节流格式混乱&#xff0c;后端可能返回分段加密的二进制数据&#xff0c;前端需要识别数据头标识&#xff08;如%PDF-1.7&#xff09;来判断完整性。我曾遇到一个案例&a…...

BLE扫描器开发实战:从原始字节解析到IN100设备高效调试

1. 项目概述&#xff1a;从芯片到应用&#xff0c;一个BLE扫描器的诞生去年五月&#xff0c;我们团队独立开发的NanoBeacon™ BLE扫描器移动应用在应用宝正式上架了。这件事本身可能不算惊天动地&#xff0c;但对我们这些从底层芯片一路摸爬滚打上来的工程师来说&#xff0c;意…...

发动机悬架系统场景下的多目标优化算法与最优控制算法【附程序】

✨ 长期致力于深度神经网络、深度学习、多目标优化算法、最优控制、主动悬置系统研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于深度神经网络与N…...

AI编程时代下,如何通过Cursor-Crisis项目重拾代码编辑基本功

1. 项目概述&#xff1a;当AI编程助手遇上“光标危机”最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Cursor-Crisis”。光看名字&#xff0c;你可能会觉得这是个关于文本编辑器光标的小工具&#xff0c;或者是个游戏。但点进去一看&#xff0c;才发现它精准地戳中了一…...

基础知识丨JAVA序列化与反序列化漏洞

今天在学习的时候又接触到了JAVA反序列化漏洞。一直只知道JAVA反序列化就是利用反序列化工具进行攻击&#xff0c;在目标系统中执行命令&#xff0c;利用的就是传输对象时采用JAVA序列化。但是也只知道这么多了。所以&#xff0c;就想着今天再了解一下反序列化漏洞。顺便&#…...

随机化、盲法、匹配:让你的研究更接近“可信因果”——控制额外变量的策略与实验内部效度提升

在科研写作和研究设计中&#xff0c;很多人把注意力放在“用了什么统计方法”上&#xff0c;却忽视了一个更根本的问题&#xff1a;你的研究结果&#xff0c;真的是干预或自变量造成的吗&#xff1f;如果不是&#xff0c;那么即使你的 p 值很小、回归系数显著、模型拟合很好&am…...

别再一行行读DXF了!用C#和netDxf库5分钟搞定CAD数据提取(附完整代码)

用C#和netDxf库高效解析DXF文件的实战指南 在CAD数据处理领域&#xff0c;DXF文件解析一直是开发者面临的常见挑战。传统的手动解析方法不仅耗时费力&#xff0c;还容易出错。本文将带你探索如何利用C#和netDxf库快速实现DXF文件的高效解析&#xff0c;彻底告别逐行读取的原始方…...