Howie's Notes

Machine Learning and Cyber Security

大约是自 Windows 10 1709 更新之后(或许是 1809?2004?),莫名其妙的存在类似“端口被占用”这样的问题,比如像下面这样的报错信息:

1
2
Error: listen EACCES: permission denied 0.0.0.0:3000
...

或者启动 SS 时提示:

1
2
Shadowsocks Error: Port already in use
...

又或者启动 Docker 时提示:

1
Error starting userland proxy: Bind for 0.0.0.0:50051: unexpected error Permission denied.

电脑重启几次之后,以上报错可能会消失,一切又恢复正常。

Read more »

在 IntelliJ 平台 IDE 中(如 PyCharm、IntelliJ IDEA 等),Ctrl+Shift+F 快捷键通常指在项目所有文件中搜索对应的关键词,这是一个常用的功能,然而近期笔者发现此快捷键莫名其妙的失效了(其他快捷键都工作良好),这很可能是与别的程序的快捷键相冲突导致的,经排查,是与 Windows 10 中微软拼音的简繁转换快捷键冲突。

解决步骤依次为:设置 ——> 时间和语言 ——> 语言 ——> 中文(简体,中国)——> 选项 ——> 微软拼音 ——> 选项 ——> 按键 ——> 简体/繁体中文输入切换,可以将其改为另一个键或者直接将其关闭。

此解决方案可能并不适应于每个人,具体还是要找到那个冲突的快捷键。

从 2020 年末开始,微软逐步向 Windows 10 用户推送了 WSL 2 更新,WSL 2 相比 WSL 1 是一个巨大的变化,最显著的改变在于 WSL 2 开始采用 Hyper-V 虚拟机来运行 Linux,这会解决之前 WSL 的很多问题,但也可以看作是 WSL 项目的失败,本文所描述的主体为 WSL 2,有关 WSL 1 的相关内容请参考 WSL 相关问题解决

Read more »

并发与并行

并发与并行,这是一个老生常谈的问题,简单来说,并发(concurrent)指的是在某个时间段内有多个程序在执行,而并行(parallel)指的是在某个时间点有多个程序在执行。

这也就是说,在某种程度上而言,并发是伪并行,真正的并行需要多个核心。由于现代计算机的核心往往是有限的,但通常运行的程序远大于核心数,所以在计算机科学中,并发往往是我们探讨的重点。

Go 语言的创造者之一 Rob Pike 就曾经指出:

并发用于制定方案,用来解决可能(但未必)并行的问题。

本文翻译自 https://uberpython.wordpress.com/2012/09/23/why-im-not-leaving-python-for-go/ ,原文标题为 Why I’m not leaving Python for Go,译文如下:


首先,Go 似乎是一门很棒的语言。它有一个很棒的教程,我乐此不疲地去看,发现:

  • Go 很快。
  • 在设计上支持并发。
  • 类型化(对 JIT 和 IDE 来说很重要),但不像 C 或 C++ 的螺旋形那样繁琐和丑陋。
  • 鸭子类型的接口。
  • 延迟(defer)机制真的很精巧。

但是有一个问题我不能接受。这是个遗憾,因为我很想以并发的名义进行信仰的飞跃。这个问题就是用返回值来进行错误处理。这简直像 70 年代的风格。

Read more »

本文讨论现代密码学中的对称加密。

对称加密技术有两种宽泛的类型:块密码(block cipher)和流密码(stream cipher)。块密码用在多种因特网协议的加密中,包括 PGP、SSLIPsec 等;流密码用在无线 LAN 的安全性中。

Read more »

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)允许主机自动获取(被分配)一个 IP 地址。网络管理员能够配置 DHCP,以使某给定主机每次与网络连接时能得到一个相同的 IP 地址,或者某主机将被分配一个临时的 IP 地址(temporary IP address),每次与网络连接时该地址也许是不同的。除了主机 IP 地址分配外,DHCP 还允许一台主机得知其他信息,例如它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地 DNS 服务器的地址。

由于 DHCP 具有将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为即插即用协议(plug-and-play protocol)或零配置(zeroconf)协议

Read more »

ICMP(Internet Control Message Protocol,因特网控制报文协议)被主机和路由器用来彼此沟通网络层的信息。ICMP 最典型的用途是差错报告。

ICMP 报文有一个类型字段和一个编码字段,并且包含引起该 ICMP 首次生成的 IP 数据报的首部和前 8 个字节(以便发送方能确定引发该差错的数据报)。下表是相关的 ICMP 报文类型:

Read more »

与 DNS 类似,ARP(Address Resolution Protocol,地址解析协议)提供了将 IP 地址转换为链路层地址的机制。这两种解析器之间的一个重要区别是,DNS 为在因特网中任何地方的主机解析主机名,而 ARP 只为在同一个子网上的主机和路由器接口解析 IP 地址。

Read more »

Session

Session 是一种抽象的概念,它不止存在于 HTTP 中,在计算机的众多领域都有它的身影,比如在 SSH、tmux 中都有 Session 的出现。

Session 被直译为会话,顾名思义,它指客户端和服务器之间的连接会话。

Cookie 是一种具体的技术,它常被用在 HTTP 中,在其他领域很少见到 Cookie 的身影。

Cookie 可以理解为是 Session 这种概念的一种实现,通过 Cookie 可以确定客户端和服务器之间的连接会话,从而使无状态的 HTTP 协议有状态。

除 Cookie 之外,还可以使用带参数的 URL 来实现 Session 这种概念。

Token

Token 直译为令牌,顾名思义,它常被用以客户端和服务器之间的身份认证。

Cookie 不仅可以用来实现上述的这种身份认证,也可以用来实现类似购物车这种场景。

0%