换工作了
经过两个多月断断续续的面试,工作终于是在 6 月份敲定了,不管结果如何,好在终于做出了选择,综合考虑,选择了一家了还算不错的公司,正式开启了职业生涯的第二阶段。其实这篇文章 6 月份就应该写的,之所以拖到现在一方面是刚去新环境需要一个时间过渡,另外一方面则是一直没制定好下一个阶段的计划。
按照习惯,先总结一下过去两个多月吧,找工作是一个及其痛苦的过程,两个多月的时间里,我要随时保持面试状态,学习也是以八股和面试为主,面试本身也极大的消耗了我的精力。我清楚的记得,过去两个月经常失眠,夜晚思绪乱飞,常常因为理想和现实差距过大而焦虑,要达到理想中的目标还需要付出太多。上周有天晚上跟妹子聊到这个问题,她跟我说到每个有成就的人可能都会经历从基础的物质享受到实现自身价值的阶段,这其中伴随着理想的实现,对普通人来说,美好的事物往往都是从煎熬中获得的。老实说,在现在这样的环境下我不一定完全认同这些观点,但是我觉得为什么不再坚持一下呢?就是这样伴随着焦虑和自我怀疑结束了毕业以来的第一次社招,我成功换了一家公司工作。可能对其他人来说,这不是一个多么好的 offer,但是这是我现阶段最好的选择,我很感激这一 ...
详解 SSH
概述SSH 全称 The Secure Shell protocol,它是应用层上的一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境,它是通过在网络中创建安全隧道来实现 SSH 客户端与服务器端之间的连接。SSH 协议最常见的用途是远程登录系统,人们通常使用 SSH 来传输命令行界面和远程执行命令,因此可以说它是我们使用最频繁的网络协议之一。
在设计上,SSH 是 telnet 和非安全 shell 的替代品,Telnet 和 Berkeley rlogin、rsh、rexec 等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探和中间人攻击。SSH 旨在保证非安全网络环境(例如互联网)中信息加密完整可靠。
定义SSH 协议先后定义在多个RFC文档中,以下列出了 SSH 协议相关的一些重要的 RFC。
RFC
介绍
时间
RFC 4250
协议号码
2006 年 01 月
RFC 4251
协议架构
2006 年 01 月
RFC 4252
身份验证
2006 年 01 月
RFC 4253
SSH 传输层协议
2006 年 01 月
...
流量控制(一):从限流算法说起
前言关于这篇文章起因,最近计划看一下《Effective Java》,然后我了解到此书的作者同样也是 Google Guava 库的作者,作为一个练习2年的 Java 的程序员,还没有研究过 Guava,属实有点说不过去,借此机会研究了一下 Google Guava。
先简单说一下 Google Guava 库,它不仅仅是 JDK 的升级库,诸如包含集合(collections)、缓存(caching)、并发库(concurrency libraries)、原生类型支持(primitives support)、字符串处理(string processing)、I/O 库等,还是《Effective Java》这本书中那些优秀经验的实践代表,两者应该结合起来阅读学习。在 Guava 中有两个实现我很感兴趣,一个是它实现的 Bloom Filter(布隆过滤器),另外一个就是本篇文章即将介绍的 RateLimiter(限流器)。
我们平时在开发高并发的分布式系统时,会借助许多手段来满足系统的并发要求,我总结下来大致分为下面几个方面:
缓存:通过缓存系统可以减少对底层数据存储系统 ...
技术人员如何提高
又是一年的校招季,最近有几个学弟学妹过来询问我关于校招的许多事情,诸如校招到现在没有offer怎么办、校招该如何准备等等一些这样的问题。我向来不喜欢好为人师,主要是我觉得我的阅历还远远不够,给别人提供不了什么有价值的建议,但是诸如此类的问题倒是确实引起了我的思考,那就是我们技术人员到底该如何提高自己呢?
带着这样的思考,我阅读了不少大牛的博客、帖子,试图从他们身上看到一个技术大牛的发展之路,有耗子叔出品的练级攻略和一系列的学习方法论,也有云风一路发展的记录,这些都让我有了不少的思考,于是你看到了这篇文章。需要特别说明的是,我本身没有特别丰富的人生经验和阅历,此文也仅代表我的一些阅读思考,并且这篇文章讨论的更多是技术人员在技术层面上的提升,如果你希望在这篇文章寻找捷径或者想在非技术层面上和我交流,那么这篇文章可能不适合你,就没有必要读了。
我将从以下四个方面来表达我的观点。
关于学习态度我经常看到有人说:今天开始我一定要好好学习,这个月我要学完xxxx,一般这样的口号喊出来以后,没过两天就好像泄气了,再也没有再听他说关于学习的事情,是的,曾经定下的宏伟目标,99%的人都没有坚持下来;我还 ...
Reactor模型
前言C10K 问题C10K 问题是由Dan Kegel在1999年提出的。C代表并发连接,指的是在一个单机网络服务器能够同时1万个并发请求。在过去很长一段时间,这个目标一度是很难实现的,所以也就产生了C10K的问题,但是随着网络技术的发展,C10早已经被解决,现如今已经不再是一个具有挑战性的问题了。
上面提到的C10K问题,是在32位Linux2.2内核的机器上遇到的问题,在当时由于机器的内存、网卡和网络带宽等硬件的限制,人们发现很难突破这个问题。随着电子工业的发展,根据摩尔定律,计算机的处理能力,每隔一段时间都会翻倍, 计算机的处理能力已经渐渐不再是瓶颈。与此同时,随着网络技术的发展,网络连接的IO模型和架构模式也在不断的发展,在现如今分布式集群的环境下,当时的问题虽然早已经不复存在,但是弄清楚背后的原理,能够帮助我们写出高性能的程序。
IO 模型的演进随着操作系统内核的发展,推动软件技术的进步,结合编程语言的支持,诞生了许多种不同的IO模型,大致概括为一下五类:
阻塞式 IO阻塞式IO也就是一对一建立连接,一个客户端和一个服务端建立连接,在服务端返回数据之前,客户端会阻塞,直到有 ...
全新博客站点
记得上大学时,我就有记录知识,整理技术的习惯。
一开始,我接触的是有道云笔记,为了方便同步和实时查看,我起初把我所有相关的资料存放在有道云笔记,那个时候存放的文章和资料主要是入门为主,大多都是我在网上摘抄收集而来,一般是我在网上看到了一个我不知道又觉得有用的知识,便会将其存入有道云,我会对这些资料分门别类,以便我后面能方便的查看,我以为我后面会看,事实是后面再也没有看过,下图就是我当时我建立的各种文件夹。
再后来毕业开始工作,一次偶然的机会接触到了 notion,一下子就被它的设计所吸引,笔记记录原来还可以做成这样,notion 里面有很多现成的组件可以使用,我可以做出各种炫酷的笔记样式,当然它是有一定的上手门槛的。毕业后的前两年,我就一直在 notion 上记录我的工作和生活,我建立了两个 workspace,一个是学习空间,一个是生活空间。在学习空间,我会建立各种不同类型的 Gallery,用来区分不同的技术领域,并且给每一个 Gallery 单独设置好看的封面;在生活空间,我会建立自己的 calendar,给自己每天安排各种计划(虽然大部分都没有完成过),还会利用 notion ...