<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gnn_explorer的博客]]></title><description><![CDATA[When the world says, give Up! Hope whispers, try it one more time.]]></description><link>https://blog.youkuaiyun.com/gnn_explorer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gnn_explorer]]></copyright><item><title><![CDATA[python 内置函数]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/127788491</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/127788491</guid><author>gnn_explorer</author><pubDate>Thu, 10 Nov 2022 17:19:41 +0800</pubDate><description><![CDATA[传入可迭代对象, 返回enumerate对象, 由索引(默认从0开始)和迭代值元组构成, 通常遍历用。可迭代对象的所有元素都为真或者可迭代对象为空, 则返回True, 否则返回False。返回整数或者浮点数的绝对值。]]></description><category></category></item><item><title><![CDATA[python 内置类型遍历]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/127732908</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/127732908</guid><author>gnn_explorer</author><pubDate>Mon, 07 Nov 2022 22:00:52 +0800</pubDate><description><![CDATA[python 内置类型 (dict, list, range) 遍历]]></description><category></category></item><item><title><![CDATA[静态类型语言和动态类型语言区别]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/108627804</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/108627804</guid><author>gnn_explorer</author><pubDate>Wed, 16 Sep 2020 19:07:36 +0800</pubDate><description><![CDATA[静态类型语言
如果变量的类型在编译时是已知的，那么语言就是静态类型的。对于某些语言来说，必须指定每个变量的类型(例如:Java、C、c++);其他语言提供了某种形式的类型推断，即类型系统推断变量类型的能力(例如:OCaml、Haskell、Scala、Kotlin)。
主要优点是所有类型的检查都可以由编译器完成，因此在非常早期的阶段就可以捕捉到很多小错误。
示例：C，C ++，Java，Rust，Go，Scala
动态类型语言
如果一种语言的类型与运行时值相关联，而不是命名变量/字段/等等，那么它就是动态类]]></description><category></category></item><item><title><![CDATA[bash shell 命令 查看bash手册]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/95366327</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/95366327</guid><author>gnn_explorer</author><pubDate>Tue, 07 Jan 2020 14:24:20 +0800</pubDate><description><![CDATA[bash 手册
man命令用来访问存储在Linux系统上的手册页面. 在想要查找的工具的名称前面输入man命
令, 就可以找到那个工具相应的手册条目.
man grep


在这里插入代码片


...]]></description><category></category></item><item><title><![CDATA[优快云 博客 Markdown 编辑器使用帮助文档]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/103818632</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/103818632</guid><author>gnn_explorer</author><pubDate>Tue, 07 Jan 2020 14:22:52 +0800</pubDate><description><![CDATA[markdown 编辑器使用帮助文档 页面内跳转]]></description><category></category></item><item><title><![CDATA[vim 编辑器 -- 查找和替换]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/98179837</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/98179837</guid><author>gnn_explorer</author><pubDate>Fri, 02 Aug 2019 11:36:19 +0800</pubDate><description><![CDATA[查找和替换
可以使用vim查找命令来轻松查找缓冲区中的数据。要输入一个查找字符串，就按下斜线（ /）键。光标会跑到消息行，然后vim会显示出斜线。在输入你要查找的文本后，按下回车键。 vim编辑器会采用以下三种回应中的一种。

如果要查找的文本出现在光标当前位置之后，则光标会跳到改文本出现的第一个位置。

如果要查找的文本未在光标当前位置之后出现，则光标会绕过文件末尾，出现在改文本所在的第一个位置...]]></description><category></category></item><item><title><![CDATA[文件备份(tar/gzip)]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/89677164</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/89677164</guid><author>gnn_explorer</author><pubDate>Tue, 30 Apr 2019 13:51:37 +0800</pubDate><description><![CDATA[使用’tar’
让我们面对现实吧，电脑并不完美。Linux是一个“近乎完美”的操作系统，但事情确实会发生，有时会丢失数据。避免问题的最好方法是备份文件。Linux提供了两个实现这一点的关键程序:“tar”和“gzip”
首先，我们将从“tar”开始。这个程序将各种文件组合成一个包，通常称为“tarball”。假设你有一些文件——你在这门课上做的笔记。
你有:
notes_1.txt
notes_2...]]></description><category></category></item><item><title><![CDATA[Scala 辅助构造函数]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/89095407</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/89095407</guid><author>gnn_explorer</author><pubDate>Mon, 08 Apr 2019 16:41:10 +0800</pubDate><description><![CDATA[辅助构造函数(Auxiliary constructors)
有时在一个类中需要多个构造函数。在Scala中，主构造函数之外的构造函数称为辅助构造函数。每个辅助构造函数必须调用与第一个操作相同的类的另一个构造函数。换句话说，每个Scala类中的每个辅助构造函数中的第一个语句都具有“this(…)”形式。被调用的构造函数要么是主构造函数，要么是在调用构造函数之前以文本形式出现的另一个辅助构造函数。这...]]></description><category></category></item><item><title><![CDATA[Scala 操作符优先级和关联性]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/89029721</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/89029721</guid><author>gnn_explorer</author><pubDate>Thu, 04 Apr 2019 17:22:37 +0800</pubDate><description><![CDATA[操作符优先级
(一些其他特殊字符)
* / %
+ -
:
= !
&lt; &gt;
&amp; ˆ |
(字母)
(赋值操作符)

]]></description><category></category></item><item><title><![CDATA[Scala 分号推理的规则]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/88954981</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/88954981</guid><author>gnn_explorer</author><pubDate>Mon, 01 Apr 2019 19:16:16 +0800</pubDate><description><![CDATA[分号推理的规则
语句分离的精确规则非常简单。简而言之，除非下列条件之一为真，否则行尾被视为分号:

所在行以不合法的单词结尾，如句号或中缀运算符。
下一行以不能作为语句开始的词开头。
行结束时是在括号(…)或中括号[…]内部，因为这些结构不能包含多个语句。


...]]></description><category></category></item><item><title><![CDATA[HDFS 命令]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/88056384</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/88056384</guid><author>gnn_explorer</author><pubDate>Fri, 01 Mar 2019 16:29:51 +0800</pubDate><description><![CDATA[概述
hdfs常用命令,调用方式
bin/hdfs command-name &amp;amp;lt;args&amp;amp;gt;

dfs
在Hadoop支持的文件系统上运行文件系统命令。类似hadoop fs命令, 可查看Hadoop FS Shell 命令
dfsadmin

...]]></description><category></category></item><item><title><![CDATA[Hadoop FS Shell 命令]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/88046779</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/88046779</guid><author>gnn_explorer</author><pubDate>Fri, 01 Mar 2019 11:42:59 +0800</pubDate><description><![CDATA[概述
文件系统(FS) shell包括与Hadoop分布式文件系统(HDFS)以及Hadoop支持的其他文件系统(如本地FS、HFTP FS、S3 FS等)直接交互的各种类shell命令。FS shell是通过以下方式调用的:
bin/hadoop fs &amp;amp;amp;amp;amp;amp;amp;lt;args&amp;amp;amp;amp;amp;amp;amp;gt;

appendToFile
用法: hadoop fs -appendToFile &amp;amp;amp;amp;]]></description><category></category></item><item><title><![CDATA[Scala 基础教程10 -- 多个参数列表 (CURRYING)]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625801</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625801</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 19:43:15 +0800</pubDate><description><![CDATA[10	多个参数列表（CURRYING）
方法可以定义多个参数列表。当使用较少数量的参数列表调用方法时，这将产生一个函数，将缺少的参数列表作为其参数。这正式称为currying。
这是一个示例，在Scala集合的Traversable trait中定义：
def foldLeft[B](z: B)(op: (B, A) =&amp;gt; B): B

foldLeft将二元运算符op应用于初始值z以及此可...]]></description><category></category></item><item><title><![CDATA[Scala基础教程9 -- 嵌套方法]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625746</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625746</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 19:38:47 +0800</pubDate><description><![CDATA[9	嵌套方法
在Scala中，可以嵌套方法定义。以下对象提供了factorial一种计算给定数字的阶乘的方法：
def factorial(x: Int): Int = {
    def fact(x: Int, accumulator: Int): Int = {
      if (x &amp;lt;= 1) accumulator
      else fact(x - 1, x * accum...]]></description><category></category></item><item><title><![CDATA[Scala基础教程8 -- 高阶函数]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625668</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625668</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 19:33:34 +0800</pubDate><description><![CDATA[8	高阶函数
高阶函数将其他函数作为参数或作为结果返回函数。这是可能的，因为函数是Scala中的第一类值。这个术语在这一点上可能会有点混乱，我们对于将函数作为参数或返回函数的方法和函数使用短语“高阶函数”。
其中一个最常见的例子是map Scala中可用于集合的高阶函数。
val salaries = Seq(20000, 70000, 40000)
val doubleSalary = (x: ...]]></description><category></category></item><item><title><![CDATA[Scala基础教程7 -- 与MIXINS的类组成]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625595</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625595</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 19:27:40 +0800</pubDate><description><![CDATA[7	与MIXINS的类组成
Mixins是用于组成一个类的特质。
abstract class A {
  val message: String
}
class B extends A {
  val message = &amp;quot;I'm an instance of class B&amp;quot;
}
trait C extends A {
  def loudMessage = message.toUpperCa...]]></description><category></category></item><item><title><![CDATA[Scala基础教程6 -- 元组]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625528</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625528</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 19:21:30 +0800</pubDate><description><![CDATA[6	元组
在Scala中，元组是一个可以容纳不同类型元素的类。元组是不可变的。
当我们必须从函数返回多个值时，元组会派上用场。
元组可以创建为：
val ingredient = (&quot;Sugar&quot; , 25):Tuple2[String, Int]

Scala中的元组是一系列类：Tuple2，Tuple3等，直到Tuple22。因此，当我们创建一个包含n个元素（n位于2和22之间）的元组时，Sc...]]></description><category></category></item><item><title><![CDATA[Scala 基础教程5 -- 特质]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625448</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625448</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 19:15:02 +0800</pubDate><description><![CDATA[5	特质
特质 (Traits) 用于在类 (Class)之间共享程序接口 (Interface)和字段 (Fields)。 它们类似于Java 8的接口。 类和对象 (Objects)可以扩展特质，但是特质不能被实例化，因此特质没有参数。
5.1	定义一个特质
最简化的特质就是关键字trait+标识符：
trait HairColor

特质作为泛型类型和抽象方法非常有用。
trait Iter...]]></description><category></category></item><item><title><![CDATA[Scala基础教程4 -- 类]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625069</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83625069</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 18:42:26 +0800</pubDate><description><![CDATA[4	类
Scala中的类是用于创建对象的蓝图，其中包含了方法、常量、变量、类型、对象、特质、类，这些统称为成员。类型、对象和特质将在后面的文章中介绍。
4.1	类定义
一个最简的类的定义就是关键字class+标识符，类名必须是大写。
class User
val user1 = new User

关键字new被用于创建类的实例。User由于没有定义任何构造器，因而只有一个不带任何参数的默认构造器...]]></description><category></category></item><item><title><![CDATA[Scala基础教程3 -- 统一类型]]></title><link>https://blog.youkuaiyun.com/gnn_explorer/article/details/83624310</link><guid>https://blog.youkuaiyun.com/gnn_explorer/article/details/83624310</guid><author>gnn_explorer</author><pubDate>Thu, 01 Nov 2018 17:46:45 +0800</pubDate><description><![CDATA[3	统一类型
在Scala中，所有的值都有类型，包括数值和函数。下图阐述了类型层次结构的一个子集。

3.1	Scala类型层次结构
Any是所有类型的超类型，也称为顶级类 型。它定义了一些通用的方法如equals、hashCode和toString。Any有两个直接子类：AnyVal和AnyRef。
AnyVal代表值类型。有9个预定义的非空的值类型分别是：Double、Float、Long、I...]]></description><category></category></item></channel></rss>