左旋异构

Something interesting


  • 首页

  • 分类

  • 标签

  • 归档

[一天一个命令]netstat

发表于 2018-05-24 | 分类于 软件之路 |

简介

netstat(network statistics)是一种命令行网络实用工具,可显示TCP协议传入和传出的情况、路由表和一些网络接口(网络接口控制器或软件定义的网络接口)和网络协议统计。

阅读全文 »

[一天一个命令]tar

发表于 2018-05-16 | 分类于 软件之路 |

简介

tar用于压缩解压

阅读全文 »

分布式系统 - CAP理论

发表于 2018-05-10 | 分类于 软件之路 |

CAP理论

CAP 定理是分布式系统设计中最基础,也是最为关键的理论。它指出,分布式数据存储不可能同时满足以下三个条件。

阅读全文 »

MQ选型比较

发表于 2018-05-08 | 分类于 软件之路 |

MQ介绍

MQ使用场景

  • 异步通信
  • 解耦
  • 冗余
  • 扩展性
  • 过载保护
  • 可恢复性
  • 顺序保证
  • 缓冲
  • 数据流处理
    阅读全文 »

超酷的一些硬核掌故

发表于 2018-05-06 | 分类于 生活随想 |

罗素的茶壶

罗素的茶壶(英语:Russell’s teapot)或称天体茶壶(英语:Celestial Teapot)、宇宙中的茶壶(英语:Cosmic Teapot),是由哲学家伯特兰·罗素塑造的一个类比概念,说明举证责任在于提出不可证伪的宣称的人,特别是在宗教的情况。罗素以之驳斥有神论者声称“怀疑论在怀疑宗教主张的不可证伪性时具有举证责任”的说法。

阅读全文 »

Go语言 | Interface

发表于 2018-05-04 | 分类于 软件之路 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//1
type I interface {
Get() int
Set(int)
}
//2
type S struct {
Age int
}
func(s S) Get()int {
return s.Age
}
func(s *S) Set(age int) {
s.Age = age
}
//3
func f(i I){
i.Set(10)
fmt.Println(i.Get())
}
func main() {
s := S{}
f(&s) //4
}

这段代码在 #1 定义了 interface I,在 #2 用 struct S 实现了 I 定义的两个方法,接着在 #3 定义了一个函数 f 参数类型是 I,S 实现了 I 的两个方法就说 S 是 I 的实现者,执行 f(&s) 就完了一次 interface 类型的使用。

Go语言中,只要是实现了接口中定义的所有方法,就实现了该接口。也就可以调用接口类型的函数。

也就是实现了鸭子类型。在鸭子类型中,关注点在于对象的行为,能作什么;而不是关注对象所属的类型。例如,在不使用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为”鸭子”的对象,并调用它的”走”和”叫”方法。在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的”走”和”叫”方法。如果这些需要被调用的方法不存在,那么将引发一个运行时错误。任何拥有这样的正确的”走”和”叫”方法的对象都可被函数接受的这种行为引出了以上表述,这种决定类型的方式因此得名。

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

(如野鸭会叫,机器鸭也会叫,叫法不一样,但都可以调用叫的方法)

如下代码通过interface实现了基于类型的多态实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import "fmt"

func do(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("Twice %v is %v\n", v, v*2)
case string:
fmt.Printf("%q is %v bytes long\n", v, len(v))
default:
fmt.Printf("I don't know about type %T!\n", v)
}
}

func main() {
do(21)
do("hello")
do(true)
}

Go语言的一些细节

发表于 2018-05-03 | 分类于 软件之路 |

指针重定向

而以指针为接收者的方法被调用时,接收者既能为值又能为指针:

阅读全文 »

Go中使用切片的容量和长度的技巧

发表于 2018-05-02 | 分类于 软件之路 |

使用make建立切片

1
make([]string, 0, len(m))

使用append可以扩展切片的cap(2、4、8……的方式)

阅读全文 »

[一天一个命令]ps

发表于 2018-05-01 | 分类于 软件之路 |

简介

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的进程和进程号(process identification numbers,PIDs)。

ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

一个进程,或者说一个任务,是一个程序的执行实例。每一个进程会被分配一个唯一的进程号。

阅读全文 »

微薄的面试官经历

发表于 2018-04-12 | 分类于 软件之路 |

等着git clone完成的间隙刷了下知乎上为什么有面试官喜欢让面试者用纸笔写代码 这个问题。
看着里面答主讲的一些经历,想起来前两天面试了一个Pre Cornell Ph.D Candidate的小同学,感觉在让她写代码的过程中她展现出来的一些特点还是挺让我欣赏的,这里记录一下:

阅读全文 »
1…5678
汨罗

汨罗

72 日志
9 分类
74 标签
GitHub
© 2016 — 2023 汨罗
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4