快学专题

快学Scala 读书笔记之 Chapter 2、3、4(控制结构函数,数组,映射,元组)

第二章 控制结构与函数 Scala和其他编程语言的一个根本性差异是,在C++或Java中,表达式和语句会看做两种不同的东西,表达式有值,而语句执行动作。在Scala中,几乎所有构造出来的语法结构都有值。 要点 if表达式有值(if或else之后的值,如果没有定义else,且if条件不成立,则为Unit)块的最后一个表达式为其值Scala的for循环就像增强版的Java for循环void

快学scala习题第二章答案

2.1 一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果为0,则signum为0.编写一个函数来计算这个值 object demo1 {def main(args: Array[String]): Unit = {//var signum:Int=0val signum=(n:Int)=>{if(n>0){1}else if(n<0){-1}else{0}}pr

快学Scala第7章----包和引入

快学Scala第7章—–包和引入 本章要点 包也可以像内部类那样嵌套包路径不是绝对路径包声明链x.y.z并不自动将中间包x和x.y变成可见位于文件顶部不带花括号的包声明在整个文件范围内有效包对象可以持有函数好变量引入语句可以引入包、类和对象引入语句可以出现在任何位置引入语句可以重命名和隐藏特定成员java.lang、scala和Predef总是被引入 包 要增加条目到包中: pack

快学Scala第6章--对象

快学Scala第6章—–对象(Object) 本章要点: 用对象作为单例或者存放工具方法类可以拥有一个同名的伴生对象对象可以扩展类或特质对象的apply方法通常用来构造伴生类的新实例如果不想显示定义main方法,可以使用扩展APP特质的对象你可以通过扩展Enumeration对象来实现枚举 单例对象 需要特别说明的,与C++/Java不同的是,Scala没有静态方法和静态字段,你可以用

快学Scala第5章--类

快学Scala第5章—–类 本章要点 类中的字段自动带有getter方法和setter方法你可以用定制的getter/setter方法替换掉字段的定义,而不必修改使用类的客户端—–这就是所谓的统一访问原则用@BeanProperty注解来生成JavaBeans的getXxx/setXxx方法。每个类都有一个主要的构造器,这个构造器和类定义交织在一起。它的参数直接成为类的字段。主构造器执行类体中

快学Scala第4章--映射和元组

快学Scala第4章–映射和元组 映射是键/值(key-value)对偶的集合。Scala有一个通用的叫法–元组—–n个对象的聚集,并且不一定要相同类型的。而对偶不过是n=2的元组 本章要点 Scala有十分容易的语法来创建、查询和遍历映射你需要从可变的和不可变的映射中做出选择默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射你可以很容易的在Scala映射和Java映射之间来回切

快学Scala第3章--数组相关操作

快学Scala第3章–数组相关操作 本章的主题 若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer提供初始值时不要使用new用()来访问元素用for(elem <- arr) 来遍历元素用for(elem <- arr if…)… yield … 来将原数组转型为新数组 (注:while循环没有 while(…) … yield … 的形式)Scala数组和Java数组可

快学Scala第2章--控制结构和函数

快学Scala第2章–控制结构和函数 本章要点 if表达式有值。块也有值—-是它最后一个表达式的值。Scala的for循环就像是增强版的Java for循环分号(在绝大多数情况下)不是必须的void类型是Unit避免在函数定义中使用return注意别在函数式定义中漏掉了=异常的工作方式和Java或C++中基本一样,不同的是你在catch语句中使用“模式匹配”Scala没有受检异常 条件表达

快学Scala第1章--基础

快学Scala第1章–基础 本章的要点包括: 使用Scala解释器用var 和 val 定义变量数字类型使用操作符浏览Scaladoc Scala 解释器 Scala解释器可以与Python的解释器类似,边编写边解释执行,非常方便。但是从技术上讲,Scala程序并不是一个解释器,实际上发生的是,你输入的内容被快速的编译成字节码,然后这段字节码由Java虚拟机执行,因此被称为REPL(

快学Python3系列

点击上方蓝字“猪圈子”关注,学习软件测试开源技术、经验[快学Python3]环境安装 [快学Python3]解析器[快学Python3]开发工具[快学Python3]基础知识[快学Python3]浏览Python Manuals[快学Python3]Number(数字)[快学Python3]第二章 标准数据类型[快学Python3]String(字符串)[快学Python3]Tuple(元组)[

算法快学笔记(十八):史上最全查找算法总结

1. 简介 查找算是工作过程中运用最广泛的操作了,操作系统读取文件时需要查找,从数据库读取数据时需要查找… 本文将对常见的查找算法进行总结。 2. 常见算法 2.1 顺序查找 基本思想: 该算法简单粗暴,从头(或是最后)开始遍历,找到要查的数据就停止遍历并返回结果,如果遍历完也没有找到就是查找不成功。 时间复杂度:O(n) 2.2 有序表 2.2.1 二分查找 基本思想: 将

算法快学笔记(十七):史上最全排序算法总结

1. 简介 本文对常见排序算法进行总结 2. 排序算法 2.1 冒泡排序 该算法比较简单,几乎所有语言涉及到算法时,都会涉及到冒泡算法。 算法思路: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,

算法快学笔记(十六):动态规划

1. 介绍 前文提到,对于背包问题与旅行商问题,计算的复杂度是随着计算数据的增加呈现指数级增长的,贪婪算法算可以处理,但得到的并不是最优解。 动态规划的主要思路是先解决子问题,在逐步解决大问题。本文将通过两个例子介绍动态规划的推算思路。 2. 背包问题 2.1 思路 通过动态规划方法解决背包问题的流程如下: 准备一个表格,商品作为Y轴,背包重量作为x轴 使用下面的公式算出价格且更新

算法快学笔记(十五):贪婪算法与NP完全问题

1. 贪婪算法 1.1 算法思路 贪婪算法的思想很简单:每步都采取最优的做法,以教室调度为例进行说明该算法步骤。 假设有以下课表,希望将尽可能多的课程安排在同一个教室: 由于不同课的开始与结束时间存在冲突,所以不可能把所有课放在一个教室上。使用贪心算法的解决思路如下: 选出结束最早的课,它是上的第一堂课。 此时选择美术课接下来选择第一堂课结束后才开始的课。同样,你选择结束最早的课,这

算法快学笔记(十四):图的最小生成树算法

1. 介绍 最小生成树的应用场景很广,例如电信公司需要将9个村庄进行网络连接,村庄间的距离都不相同,怎么连接才能达到成本最小了?村庄结构图如下: V0-V10分别表示村庄,节点间的权重代表距离,连接所有节点的总距离最小,就可以让成本更低。 定义:把构造连通整个图的最小代价生成树称为最小生成树。 2. 相关算法 普利姆与克鲁斯卡尔算法都是贪心算法 2.1 普利姆(Prim)算法 2.

算法快学笔记(十三):狄克斯特拉(Dijkstra)算法原理与实现

1. 简介 广度优先算法可以找出段数最少的路径,但是对于路径上带权重的图,想要找出最快的路径,则需要使用狄克斯特拉算法。 2. 原理 为了说明狄克斯特拉算法的原理,使用换钢琴的的例子来做说明. 假设Rama想拿自己的乐谱换架钢琴: Alex说:“这是我最喜欢的乐队Destroyer的海报,我愿意拿它换你的乐谱。如果你再加5美元,还可拿乐谱换我这张稀有的Rick Astley黑胶唱片。”Am

纯生信轻松拿下5+分文。铜死亡+免疫浸润+预后模型,快学起来吧

今天给同学们分享一篇生信文章“A novel defined risk signature of cuproptosis-related long non-coding RNA for predicting prognosis, immune infiltration, and immunotherapy response in lung adenocarcinoma”,这篇文章发表在Front

老照片怎么修复?这几个方法快学起来

随着时间的推移,老照片逐渐褪色、受损或出现老化痕迹,这给我们珍贵的回忆带来了一定的困扰。然而,随着数字技术的发展,现在我们有许多工具和技巧可以修复老照片,使其焕发新生。那么我们就来一起了解老照片修复教程有哪些吧,使那些宝贵的历史瞬间得以保存和恢复。 方法一:借助Face Pic Face Pic是一款专注于人脸美化和修图的应用软件。它提供了各种美颜和修饰工具,使我们能够轻松调节自拍

《快学 Go 语言》第 8 课 —— 程序大厦是如何构建起来的

本节我们要开讲 Go 语言在数据结构上最重要的概念 —— 结构体。如果说 Go 语言的基础类型是原子,那么结构体就是分子。分子是原子的组合,让形式有限的基础类型变化出丰富多样的形态结构。结构体里面装的是基础类型、切片、字典、数组以及其它类型的结构体等等。 因为结构体的存在,Go 语言的变量才有了更加丰富多彩的形式,Go 语言程序的高楼大厦正是通过结构体一层层组装起来的。 结构体

《快学 Go 语言》第 7 课 —— 诱人的烤串

字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言里的字符串是「字节」串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快速定位出一个完整的字符来,而必须通过遍历的方式来逐个获取单个字符。 图片 我们所说的字符通常是指 unicode 字符,你可以认为所有的英文和汉字在 unico

「快学Docker」监控和日志记录容器的健康和性能

「快学Docker」监控和日志记录容器的健康和性能 1. 容器健康状态监控2. 性能监控3. 日志记录几种采集架构图 4. 监控工具和平台cAdvisor(Container Advisor)PrometheusGrafana 5. 自动化运维 1. 容器健康状态监控 方法1:需要实时监测容器的运行状态,包括 CPU 使用率、内存占用、网络流量等指标。 方法2:使用容器编

《快学scala第二版》第七章 练习答案

7.1 编写示例程序,展示为什么 package com.horstmann.impatient 不同于 package com package horstmann package impatient 这个问题书里7.3节 串联式包语句说了:限定可见的成员。实例书里也有就不赘述了。 7.2 编写一段让你的Scala朋友们感到困惑的代码,使用一个不在顶部的com包。 7.3 编写一个包rand

《快学scala第二版》第六章 练习答案

6.1 编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法 object Conversions{ def inchesToCentimeters(){} def gallonsToLiters(){} def milesToKilometers(){} } 6.2 前一个练习不

《快学scala第二版》第五章 练习答案

5.1 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数 class Counter{private var value = 0def increment(): Unit ={if (value < Int.MaxValue){value += 1} else {value}}def current = value} 5.2 编写一个 BankAccount类,

《快学scala第二版》第三章 练习答案

3.1 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间 import scala.util.Randomdef createRandomArray(n : Int) : Array[Int] = {var res : Array[Int] = new Array(n)for( i <- 0 until n){res(i) = Random.next

《快学scala第二版》第四章 练习答案

4.1 设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另一个映射,采用同一组键,但是价格上打9折 var equiments = Map("shoes" -> 200, "pants" -> 80)var newMap = for((k,v) <- equiments) yield (k, 0.9 * v)println(newMap) 4.2 编写一段程序,从文件