Locust 压力测试 Locust 是一个开源的 Python 压力测试工具,它可以模拟大量用户并发访问 Web 应用程序,测试其性能和稳定性。以下是 Locust 的使用步骤: 下载和安装 使用 pip 安装:在命令行中运行 pip install locust 即可安装 Locust。 从源代码安装:可以从 Github 上下载最新的源代码(https://github.com/locustio/locust),然后运行 python setup.py install 进行安装。 编写脚本 Locust 脚本是用 Python 编写的,它定义了压力测试的场景、用户行为和请求流程。下面是一个简单的 Locust 脚本示例: from locust import HttpUser, task, between class MyUser(HttpUser): wait_time = between(1, 3) @task def my_task(self): self.client.get("/") 在这个示例中,定义了一个名为 MyUser 的 Locust 用户类,它继承自 HttpUser 类,并定义了一个名为 my_task 的任务方法。任务方法使用 self.client 对象来发送 HTTP 请求。wait_time 属性指定了任务之间的等待时间。 运行测试 命令行方式:在命令行中进入脚本所在目录,然后运行 locust -f script.py 命令启动 Locust。 Web 界面方式:在命令行中运行 locust -f script....
❤️ Blog 迁移
今天,将blog 从 jekyll 迁移到 hugo啦~ 原因在于 jekyll 基于 ruby 的技术栈,目前 个人的兴趣方向是 go. 因此 blog 采用了 hugo。
About GraphQL
GraphQL 允许Client来 定制Server 的返回结果。传统的基于Restful的API或者rpc都面临着一个问题,就是Client 没有办法来决定Server返回什么数据。所有的数据的计算过程都是确定的,Client 只需要Send 一个req, 服务端接受到这个请求进行 response. Client并没有一种语言或者约束规则来影响服务端的执行序列。因此,一个简单的场景, 与REST的差异 基于REST的架构产生的请求如下 GET /user/1 将返回如下的对象 User{ id name avatar sex age } 当Client 仅仅需要一个name 的时候,Client 唯一做的,就是获取到完整的 User 对象,然后在浏览器端 进行过滤。 基于GraphQL 来实现一个相同的功能(通过 HTTP POST ) query{ user{ name } } Server 端将返回 { "user":{ "name":"Leslie" } } 类型系统 GraphQL 定义一个Type System. Type 定义了数据结构与数据约束。 这是的GraphQL成为一种应用层的协议。 通过Type 我们可以定义一个Schema。 Schema 就像是基于REST我们定义的API 信息,如请求参数/返回值。 Schema描述了 Type System 包含的全部信息: 所有的查询,都在一个Query 的特殊类型下。 所有的变更与修改,都在一个Mutation下。 同时还有一个Subscription 用来实现服务端的推送。 一个 简单的Schema 如下...
领域驱动设计的思考
本文思考了领域驱动究竟解决了什么事情 不妨让我们回到互联网初始的那个时间,那时候一切都简单朴素。我们编写简单的代码来控制一件事。 比如 if true then doThings 因为这样结构化的编程范式,我们写出了很长很长的代码,这些代码可以工作的很好。 我们有函数,它们可以将这些长长的代码进行分割,放在一个个文件里面。似乎没有任何问题。 时间慢慢的走,我们发现文件越来越多,我们引入来模块来将一些属于某个领域的文件集合打包。 让我们调整视角,看看模块内部的变化。 我们有了面向对象编程范式,大多数主流的编程语言都支持面向对象。如Java就是纯面向对象编程的。 面向对象提供很好的封装/多态/继承,让我们很容易编写出极度符合人类认知标准的代码。它将控制流从 文件的片段中移动到对象的行为上,我们称之为方法。 这是领域驱动的有力武器。 那么,领域驱动到底解决来什么问题呢? 领域驱动顾名思义就是通过领域设计来驱动开发,简单的来讲,就是在开发中引入领域概念来屏蔽调计算机领域和 业务领域的细节,让开发者和领域专家(任何对某个领域有丰富知识的人)协同开发的一种软件架构模式。 第一个原因 我们当今面临的业务复杂,开发人员往往不具备业务的领域知识,领域专家不懂技术,在沟通上往往会存在障碍。 因此领域驱动在一定程度上会强迫参与者进行知识的互相分享。 第二个原因 同时第二个重要的原因是,方便编写可维护性高的代码。 领域的知识往往是静态的。比如一个电商的下单流程,往往是固定的。 支付-检查锁定库存-生成订单。 引入领域驱动,可以更利于编写有业务价值的代码。 第三个原因 第三个重要的原因领域知识的沉淀,往往这些领域知识都是可以复用的。这意味着可以跨项目共享,减少开发的工作量。 领域天生具有极强的边界。所以可以拒绝不合理的系统改造。减少系统的熵。 在如今,团队协作/跨团队协作的背景下,领域驱动开发可以很好的在保证系统边界的前提下,拥有良好的代码维护性和扩展性,增强团队的领域知识。 当然,领域驱动是一种架构模式,跟语言无关,跟编程范式无关,这就意味着,如果不是面向对象语言,也可以做到领域驱动。 领域驱动有几个非常核心的概念:实体、聚合根、值对象、界定上下文、资源库、领域服务、工厂、领域事件。 这些概念是一种指导和约束,用来思考和构建领域知识。在使用领域驱动开发落地的时候,一个前提是沟通。 通过一些有意义的会议和讨论来得出一个系统的领域边界和知识。 实体就是一个个知识的代名词。 一些编程语言都支持属性访问,将实体的属性暴露出去不会有任何问题,但是,它并不代表领域知识。比如订单的一个价格的字段,直接抛出去而不用一个行为。 甚至在一定程度上更简洁。但是问题是,当通过某些订单拥有优惠券的时候,你必须得通知全部使用了这个字段的人,我引入了优惠券,你需要减去某个金额, 长时间下去,系统将难易维护。 内聚力是领域驱动的内功,如果理解领域知识使其高度内聚,是领域驱动设计的关键。 当然,领域驱动并不是银弹,我们需要考虑输出的产品是什么,有无团队协作,是否有领域专家,以及项目的其他因素。 并不是所有的产品都适合领域驱动设计。很多时候,我们系统更应该考虑如何模块化
整洁架构之道思考
Table of Contents 整洁架构之道 编程范式 架构关心的是什么? 可测试的程序 延迟选择的重要性 设计的边界 整洁架构之道 编程范式 从编程范式说起,有三种编程范式,结构化编程/面向对象编程/函数式编程。 这三种编程范式可以说是计算机编程的核心范式,任何软件开发都遵守这三种范式中的某几种。 结构化编程规定了我们使用if/else 来做条件判断执行代码,限制了在goto代码的使用。 从根本上保证了代码的可读性。可读性在计算机领域比性能更加重要,在很多的场合下,可以损失一部分性能,但一定不能损失可读性。 限制goto可以减少编程的复杂度。 面向对象编程范式,我们可以利用多态限制用户对函数指针的使用。函数的调用栈被移动到了堆区。 当然还有更多的好处,面向对象进一步增加了可读性。通过对象的沙盒包装将函数伪装成行为,就像是一个拥有许多函数的机器人。 我们观察它的行为,而不需要关注函数指针。 函数式编程对程序的赋值进行了限制,这意味着永远无法区改变一个存在的符号的值。 在今天的serviceless架构下,函数式编程天然的可以无所顾忌的跑在多个集群上,不需要担心任何东西。 它是无状态的。符号的值大多数情况下都没有办法改变。因此它是安全的。 编程范式并不代表者架构本身,架构是一个决策过程。 架构很像是建筑师在完成图纸的过程,想象一个优秀的建筑师,如果设计一幢漂亮的建筑物。他必须考虑的是建筑的风格是什么、高度如何、怎样抗震、采光率… 等等这些决策了他选择什么样子的可以落地的架构。在计算机里面架构也伴随着这样的考虑,如何高效率的开发、性能如何、扩展性怎样、是否能产生额外价值、以及能否扛住巨大的流量。 架构关心的是什么? 在计算机里面,重要的是可读性、扩展性以及健壮性。 计算机在执行二进制程序的时候是不关心可读性的,但在编程的时候,可读性往往高于一切。一个没有办法理解的系统,即便是它能很好的工作,但你敢使用么? 面向对象编程范式和结构化编程 在提升可读性上做出了重要的贡献。 架构需要对一些细节进行选择,比如选择采用何种数据库,就像是采用何种木材来制作一个凳子。这些都是细节,应该是架构无关的。 在架构设计的时候,这部分应该是容易替换的,插件式的。OCP原则说,一个设计良好的计算机系统应该在不需要修改的前提下就可以轻易被扩展。 是的,了解这一点非常重要。 有许多原则执导我们如何去架构一个系统、比如SRP原则(单一职责)。本质上还是维护来系统的可读性。一个类拥有多个行为在计算机上并没有差别。但是,如果一个类拥有了太多的行为,我们对它的修改就 变得很困难,不得不考虑一旦修改了它,会不会产生副作用。 同样我们还渴望,源代码的依赖方向和控制流的方向是相反的。一切都类型以接口的形式被声明和引用。比如Java 中@Autowride 更像是一个声明。我们并不关心注入的是什么,控制反转给上层,下层只需要关心具体的行文。 我需要一个可以打开门的钥匙,但并不去创造一个。甚至什么门也不关心,给我一把钥匙和一扇门,我可以打开它。 业务逻辑正式描述钥匙可以打开一扇门,这个过程。但其实并不关心谁制造的钥匙。 在以前的编程中,我们往往需要在源代码依赖方向new 一个钥匙。当这一切被反转后,我们就在也不需要担心这些细节了。 可测试的程序 可读性是如此的重要,以至于我们可以为了他牺牲性能(在某些情况下,可以将性能优化的代码进行伪装,可读性仍旧在)。 但是,可读性仅仅是人类协同的一个重要前提。一段程序必须同时拥有良好的可测试性。 测试似乎是可有可无的,没有测试的程序一样可以运行。但是测试是减少系统熵最有效的方式。系统架构无论多完美,在不同的开发者介入开发的时候,系统仍旧变得充满歧义和混乱。随着时间的推移, 这种情况只会越来越糟糕。因此正确的测试可以很好的减少这种熵。 为了让程序可测试,我们需要在编程的时候就了解到这一点,我提供的方法改如何测试?为此有时需要调整代码的结构、层次、依赖关系和参数。 这就是TDD测试驱动的核心。它推崇一种方式,在代码编写之前先完成测试用例。一旦这样做了,代码就会自然的组织在一起,一个微小的调整引发的bug将很快暴露出来。 测试并不是银弹,测试本身也会出错,测试并不保证程序的正确性,只能发现bug。 延迟选择的重要性 不论是架构师还是产品,在设计阶段最忌讳的是陷入细节的陷进。在一开始就因为要选择Mysql还是Postgresql而陷入争执是一件不明智的选择。 如果一款产品强依赖Mysql,调整它需要花费很大的精力,那么一定是架构出来问题。 因此在架构设计阶段,一定要学会放弃。放弃使用Mysql。放弃Redis.放弃Pulsar. 我们需要的不是MySQL,而是一个可以持久化数据的API。我们需要的也不是Redis,而是一块可以管理的内存。 也不是Pulsar,而是一个消息队列。 Mysql\Redis\Pulsar 这些只是其中的一个实现。 我们需要延迟选择它们。这样在测试阶段,可以提供一个Memory的实现来替代Mysql的实现。甚至在后面切换到Mongodb的时候,我们也只需要提供一个mongoDB的实现而已。 设计的边界 在设计系统的时候考虑多个不同的团队在协同某个域/类上开发。他们有独立的决策空间。因此他们在系统上天然的拥有边界。 如果你的修改影响到了另一个团队,你便是越界了。这样似乎很容易理解。 系统的边界表现在如何更好的隔离不同的业务逻辑。从Package/模块 到微服务,都是在产生从系统不同纬度上划分边界。 设计好边界可以让开发工作并行开发。本质上是一个去依赖的过程。 从代码的边界到系统的边界, 从领域的边界到服务的边界,层层升纬,使得从代码到业务,高度组织。从里面看去就像是一个房间里面,每个抽屉放置什么东西都被分类整理,而从外面看去一排排排房间整整齐齐。 每个房间的门是边界,每个抽屉也是边界。边界代表着有序,代表了更低的熵。而这样设计的系统,往往具有更高的可读性。
互绘的双手
最近看到了著名画家埃舍尔的《互绘的双手》。引发了我对现实世界的一点思考。 图中一只手在画另一只手,而另一只手也在做同样的事情。 看到这幅画作的时候,我非常震撼,这幅画在描述了,在一种循环中,沿着任意一只手都找不到最终解。 这在现实生活中也有许多例子,比如蛋和鸡的关系。到底是先有鸡还是先有蛋,到底是左手先画了右手还是右手先画了左手? 这样的问题经常令人困顿。在计算机上,编译器可以自举。简单说明就是就是一种语言的编译器是它自己写的。 就像是一个人把自己 举 起一样。 很多年前我一直认为这更多的是一种哲学上的思想实验,并不会对现实世界产生任何影响。 实际上,我们的世界是一个复杂的系统,里面有无数个互绘双手的陷阱。一旦落入其中,就会麻烦缠身,似乎永远找不到 解。 比如一个创业者面临的困境: 需要创业就需要一笔启动资金,需要资金往往就需要先创业。 或者一个求职者, 需要找到一份工作,就需要5年的相关经验。 … 很多时候,当落入这样的陷进之中,就需要跳脱出来,在更高的纬度来审视目前的问题,这样才可能找到最终解。 比如互绘的双手,我们只需要将纬度上层一个层次,就知道,这两只手,都出自于画家之手。 了解到这点对我们的启发是:在面对人生难以抉择的时候,不妨上层一个纬度来审视问题。一只在井底的青蛙要学会在天空下俯视群山。 当然做到这一点并不容易。没有见过蓝天的人是没有办法想象天空的。 这似乎又是一个困局,你想要跳脱出去,就必须上升一个纬度。你要上升一个纬度,就必须要跳脱出去。 当然,打破这一个困境的,是思想。
Raft协议速记
核心解决问题 选择Leader接管写入 分布式异构网络中共同确定一个值 不存在拜占庭将军问题 基本原理 Leader选择 Node 通过投票的方式,多数服从少数 Case Single Node System 客户端写入值,Node接受并更新 Multiple Node Node必然在三个状态之一 Follower state Candidate state Leader state 所有的节点开始于Follower state , Listen Leader 节点的响应。 规定时间未得到响应,成为 candidate 状态,并且发送votes(投票给自己) request 给其他的node 其他节点进行投票。如果大多数投票给该candidate ,则该candidate 成为Leader. 投票细节 Node检查在当前的term内没有投票,则投票给当前的candidate Node reset lection term 这个过程是Leader 选举。 所有的写请求被Leader接管。 如何写(Log Replication) Leader 接受到 set 5 的请求 Leader 写入本地日志(Uncommited) Leader 广播到其他节点 大多数节点都写入成功 Leader节点commit Leader节点通知其他节点commit re-election Leader挂了 投票可以选出Leader 多节点同时选举Leader. 通过 election timeout 机制可以保证选择出Leader 网络分区问题 当网络分区的时候, Leader 在多节点区...
善用工具
学会使用Python 你可能会问,我没有任何编程技术,我为什么要学习Python。我将学习python列为第一个需要掌握的工具,是因为它像是一个魔盒。你想要的一切都在里面。 它可以帮助你解决绝大多数复杂的事情,从简单的邮件批量回复到构建一套家庭灯光管理组件。使用Python绝对是一个不错的选择。尤其是对没有计算机经验的人而言。 因为它最容易去学习。学习Python不需要懂得编译原理,也不需要懂得词法分析,甚至模型、多线程、这些艰涩的名词在一开始都不需要去考虑。 C++/Java 这些语言可以做到Python做到的所有事,因为它们都是图灵完备的,但是它们太庞大了。 仅仅将它看作一个简单的盒子,你要用一些咒语去唤醒它。 利用Python(它本身是图灵完备的),你可以编写一个邮件群发器,也可以对一个excel进行批量的操作。 思考,你目前最大的痛点是什么?什么事情是你每个固定周期都要做的,但是又很繁琐? 场景 假如你每周都需要完成一份长长的周报,你每个周五的下午都要去回忆每一周都做了什么。 一个可能的解决方案是,你每天都在笔记上写下今日的计划,然后在周五的下午汇总在一起。 利用Python ,你可以这样做, 首先将选择一个 笔记本 ,来记录你每日的工作,这个 笔记本 可能来源于excel或者某个网站,假如你是运营,你也许在一周内处理来20个客户。他们在某个系统可以查询。 那么,这些是你的工作。也就是 笔记本 。这些说的 笔记本 是指信息源。 假如是你一个开发者,那么你提交到github的代码可以作为你的 笔记本 。 因此需要定义一系列 笔记本 ,在这个过程中其实你隐式的做了规划。然后,思考你每周的任务是否可以通过聚合这些 笔记本 在这一周所记录的细节来生成。 如果不行,那么尝试优化你的工作,比如养成习惯 每日的任务都 记录在特定的 笔记本 。 然后,你可以用Python来生成一份周报。你可以选择直接发送或者定时发送,甚至如果想,你可以先发送给你自己,修改后在提交。 管理时间 GTD GTD 是一门需要简单培训的时间管理技巧。它的核心是让你对事物做出优先级排序。我们在生活中经常面临各种事情,但是个人的时间是有限的。那么如何在有限的时间做出最有价值的事情。就需要GTD来管理。 简单而言,就是将事物按照 重要 程度和 紧急 程度来划分。 重要紧急 重要不紧急 紧急不重要 不紧急不重要 优先将时间分配给重要且紧急的事情,将不紧急不重要的事情放在一边。很多工具都能做到这一点。如果是技术向,强烈推荐 emacs 的 orgmode 来做gtd。 番茄工作法 番茄工作法的本质是保持专注的时间。我们在工作中经常被各种意外的事件打断。无间断的会议,突然的同事问候以及某个偶然的噪音。 为了更专注的工作,保持高效状态,可以用番茄工作法,将时间分为25分钟的片段。每个片段必须处于高度专注。比如关闭全部非必须通信软件,甚至网络,集中精力处理目前的单一事件。 将时间限制在25分钟是一个非常好的选择,当然也可以根据自身情况做微调。25分钟并不是一个很长的时间,因此要在25分钟内解决事情,就对你提出了挑战。需要迅速调动大脑。如 目前需要解决什么事情? 必须要解决的问题有那些? 解决方案是? 25分钟内你必须迅速的调动大脑,来思考,因此最好有个番茄钟或者App来记录这个时间。我工作中经常使用emacs,因此在org mode下,可以通过C-x-i,C-x-o 来进入和退出番茄时间。 在spacemacs 下,可以使用M-x org-pomodoro 启动一个番茄钟。 它会在spaceline上展示一个计时器。...
http2.0
Http/2 HTTP2 协议起源于SPDY,目的是解决http1.x 如下的问题: plantext 文本协议的size开销 不支持复用tcp通道 请求通道上限 队首阻塞 http1.1 Keep alive 来保证复用一个tcp连接,但严格要求响应的顺序,响应是一个队列,如果遇到队首阻塞,则整个tcp通道就无法处理别的请求了。 http/2如果解决这些问题的? 通道复用 二进制帧层 服务端push 设置请求优先级 压缩(HPACK) 帧布局 +-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8) | Flags (8) | +-+-------------+---------------+-------------------------------+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +---------------------------------------------------------------+ 帧头为固定的9个字节((24+8+8+1+31)/8=9)呈现,变化的为帧的负载(payload),负载内容是由帧类型(Type)定义。 帧长度Length:无符号的自然数,24个比特表示,仅表示帧负载所占用字节数,不包括帧头所占用的9个字节。默认大小区间为为0~16,384(2^14),一旦超过默认最大值2^14(16384),发送方将不再允许发送,除非接收到接收方定义的SETTINGS_MAX_FRAME_SIZE(一般此值区间为2^14 ~ 2^24)值的通知。 帧类型Type:8个比特表示,定义了帧负载的具体格式和帧的语义,HTTP/2规范定义了10个帧类型,这里不包括实验类型帧和扩展类型帧 帧的标志位Flags:8个比特表示,服务于具体帧类型,默认值为0x0。有一个小技巧需要注意,一般来讲,8个比特可以容纳8个不同的标志,比如,PADDED值为0x8,二进制表示为00001000;END_HEADERS值为0x4,二进制表示为00000100;END_STREAM值为0X1,二进制为00000001。可以同时在一个字节中传达三种标志位,二进制表示为00001101,即0x13。因此,后面的帧结构中,标志位一般会使用8个比特表示,若某位不确定,使用问号?替代,表示此处可能会被设置标志位 帧保留比特为R:在HTTP/2语境下为保留的比特位,固定值为0X0 流标识符Stream Identifier:无符号的31比特表示无符号自然数。0x0值表示为帧仅作用于连接,不隶属于单独的流。 (参考:http://www.blogjava.net/yongboy/archive/2015/03/20/423655.html) 帧类型: HEADERS:帧仅包含 HTTP 标头信息。 DATA:帧包含消息的所有或部分有效负载。 (flag:END_STREAM|PADDED) PRIORITY:指定分配给流的重要性。 RST_STREAM:错误通知:一个推送承诺遭到拒绝。终止流。 SETTINGS:指定连接配置。 PUSH_PROMISE:通知一个将资源推送到客户端的意图。 PING:检测信号和往返时间。 GOAWAY:停止为当前连接生成流的停止通知。 WINDOW_UPDATE:用于管理流的流控制。 CONTINUATION:用于延续某个标头碎片序列。...
生成比特币地址
安全离线生成比特币的钱包地址 比特币是数字资产,受到密码学(密钥对)保护,一旦你的私钥被公开,你的资产将不在安全。传统的账号/密码受到服务提供商的保护,比如在支付宝,你的账号账号被盗,导致的财产损失,会被支付宝保险赔付。因为有一个第三方信任机构(保险/支付宝)。但是比特币是构建在区块链上的,区块链是去中心化的。这意味着没有一个类似支付宝的角色来保证你的财产安全,一切都要靠自己。 目前,有许多在线生成比特币地址的服务,这些服务大大简化了生成步骤,但同时引入了非常大的分析。一旦你的账号在网络环境被生成,它有极可能被泄漏。泄漏途径有许多,如本地机器被黑客入侵、服务提供商私自保存了密钥。 因此,如果资产金额较大,强烈建议使用本地的脚本自己生成密钥对,并且永远不要在联网的环境下暴露私钥。 本文提供一种简单的离线脚本,一步步的带你生成比特币的密钥对。(本文所有脚本均在这里,https://github.com/xxlv/btc-address-gen-scripts.git) 第一,初始化依赖 你需要安全python环境,同时引入包 sudo pip install bitcoin sudo pip install ecdsa 第二步,拔掉网线或者断开wifi 非常重要的步骤,如果不是测试,一定要做!!! 第三步,运行脚本,生成密钥对 python key-to-address-ecc-example.py 生成的结果如下: Private Key (hex) is: 14962ffc7f1c9dba79aadb608cd7088574e41a418a5349004309b722a9051b90 Private Key (decimal) is: 9311615220753377728968374325829133502017354028737325199749815733352682298256 Private Key (WIF) is: 5HyMSVcZMnBeGEoFbPqRaPHK1xVpHj6yCGnC4bvqxRUm72uuvbx Private Key Compressed (hex) is: 14962ffc7f1c9dba79aadb608cd7088574e41a418a5349004309b722a9051b9001 Private Key (WIF-Compressed) is: 2SdMjLGhnybsEFJmA85WrTioEtQAaKc8PQjeMQRFd5Q6AKdxygTY5D Public Key (x,y) coordinates is: (32009024601293775410666277862003376881148118697205564723468898850638045984780, 64137136342866323469645354187456635120169454941786517702226349133247186720277) Public Key (hex) is: 0446c477454946ee7187a0b859cedf3c4799726b5d8921b22b6b366b97178d380c8dcc552e1ab8546673dcbfa05f3aa97e33df950f2020805b11e4d8489fdfd615 Compressed Public Key (hex) is: 0346c477454946ee7187a0b859cedf3c4799726b5d8921b22b6b366b97178d380c Bitcoin Address (b58check) is: 18HWNXDVj1jSz9syiJpo2YcEofympTLQgC Compressed Bitcoin Address (b58check) is: 1HViUwJwUofaAPKbnzNRXHqqRE6UQE7g5B 每个人的机器每次调用生成的都不是相同的。 这是btc账号的全部信息,建议冷藏。...
谈谈ThreadLocal
摘要 ThreadLocal被设计为在线程内部共享的变量。 并发操作带来极大的性能优势,但同时在数据的一致性上也带来了挑战,当我们在线程内部要传递一个变量,如果将变量设置为局部的,当然没有任何并发问题,但是在同一个线程里,其他的方法就不能共享该变量。 如果设置为全局类变量,又导致多个线程会共享,如果解决这个问题呢? ThreadLocal就是为了这个目的诞生的,它提供了一种具有特殊能力的“线程私有变量”,在当前线程中,可以随意共享并且随意使用,在其他线程中,它是完全独立的。 使用场景 线程内部的共享的变量在许多场景下非常有用,比如经典的web 服务,一次用户的请求,会分配一个线程去处理,使用ThreadLocal可以与一个sessionId绑定,这样的话,一个线程就处理一个用户的请求。 实现原理 ThreadLocal需要被设计为线程私有的,要完成这个目标,我们一般会想到借助于HashMap,使用K->V 的形式。每个线程的维护一个HashMap。 比如这样设计 threadMap=getMapByThread(currentThread); threadMap.put(ThreadLocal.KEY,threadLocal.VALUE) 这样,让每个线程都能获取到自己的map。就可以将threadLocal在线程中隔离出来。 在JDK的实现中,也是采用了类似的原理,每个ThreadLocal都维护着一个map。但是区别是,这个Map是它自己实现的ThreadLocalMap而非Hashmap. map的key就是ThreadLocal。 为什么要自己实现ThreadLocalMap? 要回答这个问题,就要考虑如下的情况: threadLocal=null; 此次,我们的预期是threadLocal被设置为null。在GC的时候,需要回收内存。但是,注意,在ThreadLocal内部的map中,ThreadLocal被作为key。 ThreadLocal是有引用的,所以,在这里 threadLocal并不会被GC掉。这样带来的问题就是,线程尤其是常驻线程的大量threadLocal都不会被释放,很容易引起OOM。 在解决这个问题上,我们看到JDK是通过weakReference来解决的。所以自然不能用Hashmap。只能用自己实现的ThreadLocalMap来解决。 但是,对ThreadLocalMap的key做弱引用,还是导致map存在一些 NULL->V 的数据。这样的脏数据也会持续占据内存。 JDK只能在set、remove的时候,将Key为NULL的数据删除。这样做显然是无奈之举。因为,你不能指望一个用户会如你预期的调用这些方法。如果用户不调用这些方法,仍旧会存在OOM问题。 小结 看到 ThreadLocal的实现其实并不完美,甚至有点丑,但ThreadLocal已经完全满足工业需求。在技术上的实现并不总是有完美的解决方案,我们看到每个通过set、remove后,这个方法总是会处理一些额外的事情,这些事情用户也许并不知情。用户期望要一个杯子,但是服务员给了一个杯子,顺便倒掉了里面剩余的水。总的而言,用户得到了他想要的,而服务员也很好的规避了用户的投诉。虽然,这一些都是在用户也许不知情的情况下发生的。
BloomFilter
摘要 BloomFilter提供了一种判断一个值是否存在于指定集合的方法。在一个数据量较低的场景下,将数据保存到Hashset,然后利用hash检索某个值是否存在,但是在一个非常大的数据集中,传统的方法会消耗大量的内存,这导致OOM问题。BloomFilter的思路是,将一个value经过多次不同的hash映射到一个有限长度的bit数组中。当检测某个值是否存在的时候,只需要使用相同的hash检测,在bit数组中同时存在,则证明value大概率出现在集合中。如果有任何一次hash的index在bit map中被标记为0(代表无效),则证明value 一定不出现在该集合中。 之所以出现这个原因(大概率出现),是因为A和B两个value经过多次hash后,可能同时将bit map中相同的index标记为1。 使用bloomFilter可以节省大量的内存,在很多对结果要求并不很严格的场景下,bloomFilter是高效的。 核心实现的代码如下 public class BloomFilter { private static final int MAX_HASH_COUNT=3; private byte[] map; private int size; public BloomFilter(int size){ this.size=size; this.map=new byte[size]; for (int i=0;i<map.length;i++){ map[i]=0; } } public void add(String e){ for (int i=1;i<=MAX_HASH_COUNT;i++) { int index=hashCodeGroup(e,i); map[index]=(byte)1; } } public boolean isExists(String e){ int checkPoint=0; for (int i=1;i<=MAX_HASH_COUNT;i++) { if(map[hashCodeGroup(e,i)]==1){ checkPoint++; } } return checkPoint==MAX_HASH_COUNT; } private int hashCodeGroup(String e,int loopIndex) { switch (loopIndex){ case 1: return hashCode1(e)% this....
计算
这个世界上你能想到的任何事情,都在同一种法则的指引下,不论你相信与否,它神秘,不可预测但又影响着每一个人。我们中的一些优秀的人发现了物理法则是怎么深刻影响这个世界的,并且将其转换为一些支撑我们物理学的基础定律。 但任何一个物理法则都无法解释发生的一切。我们尝试从不同的领域来看待物质,从化学键到分子间的作用力,从宏观力学到量子力学。 这些探索使得科学开始分裂成不同的分支,每一种分支上都拥有庞大的知识网络结果和难以撼动的公理。它们都抽象成一些可以被计算的数学表达式。 现在回头看所有的科学分支,已经没有人能全部理解它。然而我们的探索才刚刚开始,此刻宇宙像是一台精密的仪器,我们发现了某个齿轮的转速和某个螺丝钉上的化学物质,但对于其他部分,仍旧一无所知。 计算机是一个将抽象还原的过程,通过观察现实世界,将一些定律归纳成一种数学抽象,然后用计算机将这种抽象还原成另一种“具象”。这样做会带来一种飞跃:用很低的成本无限次的模拟现实。 毫无疑问,计算机将加速这种过程。计算机将加速物理学、数学、 化学、生物学… 从这个角度来看,计算机真是一种伟大的发明。 计算机是平等的机器,它只是预先设定的程式执行,并不会差异化的对待输入。它接受指令,并且执行它,仅此而已。即便是一台计算机上的程序通过了图灵测试,它也只是执行了那段程序而已。 利用计算机,可以快速的找到第1000003个素数是什么。 计算机加速了数学模拟,可以更快的验证某些定律,否定或者扩展它。 一旦数学进化,又反馈给计算机来进化计算模型。使得这台机器在某些方面更加优秀。这种加速甚至体现在硬件层次上,在计算机上研究出某种分子结构,在现实生活中可以制造出它并且将它应用在计算机的芯片上。 这正是现实世界每时每刻发生着的事。正是这些进化是的计算机从一座房子的巨型机缩减4英寸的手机。 构建在计算机之上的程序可以相互作用,借助于某些共识协议,因特网诞生了,新的组织形式将人们的大多数活动从物理世界迁徙到了互联网上。这时伟大的一步,物理世界是低效的,传递信息必须克服距离的障碍,有些消息是瞬间的,这意味着,在物理世界一件事在发生之后的很长事件才被人知晓,带来的弊端也很明显,我们总是错失时机。 在互联网上却并不存在距离,因为信息是以光速传播的,理论上在事件发生的时候,可以瞬间抵达任何地方。当然,获取知识也是瞬间的,在获得授权的情况下,任何人均可借阅伦敦的图书馆里的任何一本书。 互联网的出现改变了人类的思维模式,并且带来了技术的进化,很快,我们将宇航员送上了月球。 互联网在开始的时候,是一种特殊的技术。它高深莫测,以至于只有少许人才有能力指挥它。 他们在计算机前,写着密密麻麻的难懂指令,然后按下回车键,神奇的事情就发生了。 这有点像是巫师念着咒语,然后出现了令人惊异的魔法。 现在,对计算机的指令输入已经成为一门技术,人们发明了计算机语言专门来与计算机对话。计算机不再是只能被少数人可以操作的黑盒子,它逐渐变成很多人都可以操作的玩具。 对计算机进行编程,可以指挥它做任何事情。这种发展往往是出乎意料的,在二十多年前,谁都无法想象计算机构建起来的庞大的互联网上可以建立起来世界上著名的科技公司,Facabook、Google、Amazon、Alibaba等。这些科技公司雇佣了许多人对计算机进行编程,使得依托于互联网的计算机可以做一切奇妙的事情,比如在线购物、社交和游戏。 互联网正在进化,它已经进化成“第二现实”。许多工作都依托于互联网得以进行。计算机彻底的改变了整个人类的运作方式。它们组织的庞大网络巧妙的将所有人连接在一起, 使得人们的协作可以跨越空间和时间。当我在富士山的时候,我仍旧可以与我北京的同事就某个议题做出投票。 在传统的世界里,这一切都是天方夜谭。 今天在谈论计算的时候,计算已经不是简单的两个数的和,计算变成了一种更加高级的东西,计算的结果可以是对某个事件的决策,是一次支付,是一张电子通行证。 我们正站在一个从未有过的维度来重新计算这个世界。 因特网诞生之后,传统的作业正在朝着互联网偏移,一些重复无聊的、危险的工作正逐渐被机器取代。数据成为燃料,技术成为引擎,驱动整个世界机器永无休止的转动。 人工智能出现在这场盛宴的高潮,许多年积累的技术使得人们可以创造一个智慧生命成为可能,计算赋予机器不可预测的智能。机器学习使得机器可以自主的进化自己,不断的改善反馈自身。我们研究大脑、研究神经网络,用计算机 来创造一个类似于人类的智慧大脑,虽然现在的技术不足以让一台机器获得“自由意志“。但是它确实获得了足够的智能,许多机器人已可以通过图灵测试。 计算机视觉的发展诞生了“虚拟现实”(VR),VR的出现提供了一种新的可能,人们可以借助于VR获得接近于物理世界的完美体验。在很多情况下,VR带来的精神体验是现实世界无法给与的。 沉浸式体验将对目前的人类协作方式产生根本性的变化,人们将在虚拟的世界里获得更高的精神体验。VR也将诞生非常优秀的游戏。 以区块链为代表的技术也将彻底改变人类的金融活动,并对国家产生强烈的影响,基于对密码学和数学的信任,人们可以在互联网上建立起安全的关系通道,在其上的交易和交换,都将是自由的。信任是一场社会变革,传统的权利结构必将瓦解,货币将是信任关系的激励,而非银行家们计划印刷的纸币。它将直接由市场激励和数学信任产生。 这一切都将在未来很短的时间内发生,技术的爆炸会摧毁腐朽的权利结构,独裁主义必将面临由计算机达成的共识的审判。
利用工具
在生活中我们会使用各种工具,斧头和铅笔刀,印象笔记和记账工具等。在现代生活的人类已经离不开工具了,工具能够给与我们解决一些复杂问题的解决方案。善用它,可以提高生活品质,快速获得幸福感。 在下总结了一下工具,可以改善个人的生活,分为几个类目: 改善工作效率工具 提高生活品质工具 解决复杂问题工具 完成不可能完成任务工具 工作效率工具,在编程领域,一个好的工具所解放的人力成本是非常大的,比如使用onePassword可以让你平均输入密码的时间每天减少30分钟。好的工具首先会节省大量的时间。其次,在一个复杂的难易控制的事件里面,利用一些小工具,可以减少出错概率。那么,如何选择一个好的工具呢? 问这个问题之前,首先应该问自己另一个问题,我为什么要选择一个工具? 我是为了节省我的宝贵时间,那么,我在哪些地方浪费了时间呢? OK,抛出了这个问题,你可能会思考,我在哪些地方浪费了时间呢? 你需要找一个笔记本记录一下你每天的时间安排,然后才能做出分析给出答案。 注意,我要记录我自己的时间安排以分析我自己的时间都花费在了那里,这件事本身也是在消耗额外的时间,那么有什么工具可以帮你完成这一切呢? 仔细想想你每天跟什么东西最密切,答案是手机、电脑,我们每天做了什么,其实电脑和手机最清楚了,其实不需要自己记录你每天都干了什么,手机和电脑会记住你做的一切。答案就是,使用一款软件来跟踪你每天的时间记录,然后定期分析。 当你脑袋中有这个想法的时候,不妨使用Google搜索一下,一定有一大堆好用的工具,挑选一个好用的,就可以开始使用了。以刚才的为例,Rescuetime就可以自动分析电脑的工作记录,不但满足你的需求,你还会得到完整的分析图表。 非常多的工具往往伴随着选择成本,这时候,你需要冷静下来,不要盲目的被一大堆工具左右。考虑一下你最近频繁需要消耗时间,但是感觉很无聊的事情。是不是能够利用一个工具? 如果你想不起来自己最近干了什么,那么你很可能需要一个工具来做计划,许多日历就可以做代办事项。因此,你需要选择一个。 如何选择一个适合你的工具呢? 选择的第一原则是容易打开,容易打开意味着它在你随手就可以看见的地方,比如作为电脑开机启动、手机的第一屏等。如果有一个工具你需要思考放在那里,才能找到,那么大概率你以后不会使用它。 第二原则是坚持使用,除非它已经无法满足你的需求,否则就一直使用它(除非你很享受切换工具带来的快感)。 第三原则是同步,好的工具最好支持多个终端,并且能随时在你的各个终端同步,可以无缝切换。 第四原则是可离线,好的工具并不强制要求你在线,除非是必须依赖在线的工具。一般的效率工具,可以支持你在离线模式下使用,产生的数据会在下一次连接网络后自动同步到云端。 选择工具还有很多技巧,比如一个在线笔记本,最重要的功能就是离线编辑和在线存储,如果一个笔记本做了许多复杂的功能,很可能会干扰你。因此,尽量选择那些简单功能但是做到极致的产品,比如选择微信而不是QQ。 为了减少你选择的成本,同类型的工具软件只安装一个就可以,其他的都可以卸载掉。 如果你同时喜欢Evernote和印象笔记,你最好使用另一个同步软件,以便于你在印象笔记写的文章能及时同步到Evernote。对你而言,使用哪一个都无所谓。 如何使用工具呢? 首先,第一点,也是很重要的一点,不要被工具奴役,不要为了使用而使用工具。工具是为你服务的,它简化了你的工作流程,辅助你完成了一些工作,这就是它的使命。 工具是你的需求驱动的,比如我需要阅读一些最新的财经文章,但是总是打开网页去查询会消耗的时间和精力,其实我关心的只是区块链相关的新闻,那么我能不能使用一个工具来完成这项任务呢? 答案当然是能,我其实只需要一点点编程技巧,使用Python简单的写一段程序,当关键词命中的时候,将指定的信息推送给我。可能是一份邮件,这样我就不需要总是隔一段时间去查询了。 互联网上发生着很多事情,让它通知你,而不是你总是询问它。 Python是一门编程语言,它本身也是一个特殊工具,我一般喜欢称它为“元工具”,学会它,你可以创造工具。一些简单的日常生活的事情,都可以用Python来完成。 即便是你不是计算机从业人员,学习Python仍旧会对你产生巨大的影响。它非常简单以至于进入了小学课本。在不久的未来,Python会成为人们普遍的基本技能。 自动化 自动化是需要观察你,你必须隔一段时间来思考自己那些工作重复占据了你的时间,而它是可以被自动完成的。你可以借助一些工具来完成自动化。比如ifttt可以设置一些触发条件来做各种事情。当然最灵活的还是你需要学会Python。利用自动化将日常必须要完成的任务交给机器,可以极大的提高工作效率,使你聚焦于真正有意义的工作上。 自动化的一个重要的目的是,将一些事情委托给某个程序或者某个人,这部分工作并不是非你不可的,而且不能最大化你的产出价值。 我们其实可以从工业革命以后,看到这个世界的趋势,所有的一切都渐渐被自动化,我们并不需要干涉每个细节了。 从农业时代,我们需要用牛来耕地,到工业时代,人们通过简单的操作机器,到如今,甚至机器都可以通过一个输入的算法自动运行,我们唯一要做的,就是输入算法。 这一切看上去很不可思议,在早期,一个职业的股票经理人需要盯着每日的大盘指数,研究技术细节和消息面,但现在,已经有不少的公司采用机器学习来训练处一个机器人, 量化投资策略。机器人比人类更理性,出错的概率也更低。这一切,都不需要人来参与了。 为了改善自己的生活,我们也应该将那部分消耗时间并且收益很低的工作委托给机器来自动化或者部分自动化。 目的导向 选择工具的时候,最好选择那些只完成你期望中的工作的工具,额外的功能会占据你的时间,比如你需要一款IM软件来及时的通讯。那么,这款IM只需要能够满足消息处理即可,一些额外的功能,比如可以在线看电影和刷信息流的功能,就不是很需要了。这其实对我们现在的产品提出了更多的要求,在设计一款软件的时候,往往产品经理都会失控,他们在一段时间后,会忘记产品的核心功能是什么,本来要做信息流的,结果做了外卖,本来是外卖的,结果做起了社交,本来是一款设计软件,结果变成一个直播平台。 当然,你的用户群中,会有一小部分喜欢某个功能,但为了一小部分用户的需求而影响了全部用户,显然有点得不偿失。这个道理很简单,很多产品经理仍旧对增加功能乐此不疲。 增加一个功能是简单的,因为这个过程不会伴随着思考,只是简单你得抄袭模仿,跟随流行,但是删减确实一件非常困难的事情,保留那个功能,删掉那个功能,需要你对产品的定位,用户群,和未来的方向做出深思熟虑的的决定。 设计产品如此,使用产品也如此,当你在选择一个工具来改善你的生活的时候,一定要弄清楚,你需要它的什么功能,在思考的这个过程中,你会对你需要什么做出更多的思考。 这才是最重要的,当你思考需要什么的事情,你会对当前你的处境有一个更清晰的认知。比如,当我需要一个带闹钟的记事本的时候,我其实是当我把一些事情记录在笔记上的时候,可以很方便的在某个时间段提醒我。 而这一点,EveryNote可以轻易的做到。
习惯的力量
在计算机中,最重要的哲学是 repeat。 这个理念在一定的程度上影响了我的思维方式。 对一件事,重复多次,可以获得经验,经验可以在面对新事物时发生作用。 比如,经验可以让你在面对相似的事物的时候,避开危险,提高效率。我们所有的学习都是基于repeat的,当我学习某个领域的知识,我会一遍一遍的阅读资料。 重复是一个刻录的过程,我们需要把经验刻录到脑回路中,下次有相似的遭遇,我们可以毫不费力的使用已经获得的经验。这部分经验最终会成为我们行为条件反射的一部分,几乎不需要消耗精力。在这里有一个重要的需要注意的,就是我们精力。 我们每个人都有一个精力的池塘,每一个行动,都会消耗精力,而补充精力的办法就是休息。 所以,要善于利用精力。 在很多的情况下,我们把工作安排的井井有条,但是最终到了截止日期,却发现该完成的事情一件都没有完成。为什么很多时间管理都存在这样的一个问题呢? 这时因为,我们虽然合理的规划了24个小时内应该完成的任务,却忽视了精力。我们管理了时间,却忽略了管理精力。精力管理甚至比时间管理更重要。 每个人的精力都是有差异的,这意味着,对某一项工作,有的人分配的时间很短,有的人则需要很长的时间。 如果按照时间管理,你完全忽视精力,就会导致你做出过于乐观的假设。你在一个很短的时间内安排了一个消耗极大精力的任务,这样会导致连锁反应,现在的任务影响接下来的任务,今天影响明天,形成一个恶性循环。 所以,管理精力是一个重要的组成部分。有几个简单有效的管理精力的办法。 首先,我们还是像往常一样进行时间管理。 比如,我下午4点30开始看技术文档。在这段时间里,我需要保持专注力,需要消耗大量的精力,如果我把一项非常重要的任务安排在5:00后。在时间管理上,看上去似乎是合理的,因为我没有浪费任何时间。但如果是按照精力分配来算,在我持续的注意力集中后,如果我立即着手处理一件更消耗精力的事情,往往会手忙脚乱,产生挫败感和焦虑。这些负面情绪长期积累下,会导致各种疾病风险。 那如果我在看完技术文档之后,安排一个不那么消耗精力的事情,比如走一走,聊一聊自己的新思路,写一篇有趣的文章。这个过程会逐渐恢复精力。这样表现出来,就是你的工作是高效的。在专注的时间段内,集中精力解决了问题,在一些业余的时间内,“放松”自己,恢复精力。精力,有时也叫注意力,是一种精神力量。 我们的行为总会消耗精力。尤其是这个行为是崭新的,比如做你从未做过的事情。这时候往往会消耗巨大的精力。我们消耗精力的活动有很多,比如看一本书,写一篇博客,但是有些事情却往往消耗很少的精力,比如看一场爱情电影,听评书。 在晚上入睡前阅读是非常消耗精力的,当你还没有养成阅读的习惯的时候,这种痛苦尤其强烈。 但是其实本质上,阅读本身并不痛苦,痛苦的是,你需要消耗精力来抵抗诱惑,比如你明明可以选择更舒服的姿势看一部电影,听一首歌,为什么要让自己阅读一些艰涩难懂的文学作品? 这时候,大脑会做出剧烈的反抗,尤其是这种情况下,消耗精力抵抗大脑中想要偷懒的那个你,往往以溃败结束。有没有一种办法,能够将弱化“抵抗阅读“本身所分散的精力呢? 我们应该将精力分配在 阅读本身上,而不是要不要阅读这个纠结的过程上。 这时候,我们要思考一下,为什么听歌,看电影,不需要消耗精力了。思考这个问题,其实道理很简单,因为看电影的时候,我们能感受到及时的愉悦。换言之,获取快乐的代价是简单和及时的。 这叫 及时的正反馈, 及时的正反馈,是一种大脑对行为的激励,具体表现为,会对该行为产生愉悦感。 这种愉悦感的获得方式非常廉价,但其实并不会对你的脑回路产生多少深刻的印象,有时候甚至会破坏你的情感体验,让你对大脑的反馈机制免疫。 比如你不在通过努力的过程获得大脑的奖赏,而是直接通过一种别的方式取代,毒品、酒精在某种程度上,都是直接给与大脑奖励,这种奖励并不是有益的。 第二个是,最小获得代价,这个词是我自创的,但是可以解释一些现象,我们对一个事物其实有一个“生物学吸引“的过程。 大脑在接收到一些任务的时候,会快速的判断哪些事物是值得做的。然后指导身体去完成。行为评估=奖励/代价。 如果这个值越大,则大脑对该事物的兴趣就越大,人们对该事物的抵抗能力就越弱。 最小获得代价,也代表付出最少的精力。以毒品为例,毒品产生的奖励是非常大的(有些带给大脑的愉悦感几乎是性的1000倍),但是因为毒品的获得成本也很大(伴随着高昂法律风险)。所以这能解释只有一部分人吸毒。 第三个是,最短获得周期,如果看电影需要在10个小时才能获得愉悦感,那么看电影本身也不会有如此的吸引力。短周期可以让大脑对当前的事件更聚焦。而长的周期,往往会导致分神。 这三个部分决定了这种类型的事物时受欢迎的,其中的机制决定了该类型的事物需要付出极小的精力。回到阅读上来,在睡前阅读,这件事上,我们常常会有这样的状况,临睡前拿起书,翻了几页,又忍不住拿起手机,不小心打开了短视频….精力白白浪费在了其他的事情上,并且有时候还会伴随着负罪感。稍微思考不难发现几个原因: -看书的正反馈不及时,比如技术书籍,可能需要一个小时才能了解某一个算法的细节。 -看书的获得成本比玩手机要高 在选择看书或是玩手机,大脑会快速的比较两个产生的收益,显然,玩手机可以在几分钟之内基于大脑奖励,而看书往往需要更久的时候,甚至产生的激励更小。 所以,大脑倾向于引导你的身体,处于一个更舒服的状态,拿起手机,轻轻触摸几下,就能获得满足感。大多数人的大脑是短视的,它只会聚焦于当下几分钟的事情。 如果个人要考虑长远的计划,就必须舍弃眼前的利益,这就需要跟大脑的一部分做斗争,这个斗争是一个痛苦的过程,会消耗大量的精力。有一个办法可以避免做这种斗争,就是将一种可以长久带来收益的行为变成一种习惯。就像是我们早晨刷牙,完全不需要思考,让它成为我们身体的条件反射的一部分。 习惯可以将一种高正本的行为消耗的精力降低到最小,当阅读成为习惯的时候,你甚至不需要思考为什么不看美剧而是看书,只是在哪个时间,自然的捧起一本书。习惯的魅力不仅仅在于能减少决策成本,而且在一定程度上,习惯会叠加,一旦大脑获得了某个习惯在一个较长周期带来的激励,它会期望同样的激励。 这样,你会养成另一个好习惯来激励大脑。 这是一种构建持续的正反馈。习惯本身的行为一遍遍的刻蚀在大脑的基底核上。为了养成习惯,需要对某个行为进行分解,是它拥有更小的激励周期,比如看书每三十分钟,给与大脑适当的激励(放松、冥想、听歌),这个周期也是因人而异。 第二,减少获得代价,比如将今晚要读的书本放在随手能摸到的地方,台灯的亮度刚刚好,减少噪音(可以佩戴降噪耳机)。 在安排时间去做这些事的时候,需要注意分配精力,不要分配给这段时间太短,否则你的精力会消耗的太多,也不要太长,否则容易浪费精力。一个好的办法是,可以对同一件行为给与不同的时间,记录下那个时间大脑获得的体验最佳,并且消耗的精力最少,然后把你的时间控制在那个范围内。比如,我每天晚上11点看书的幸福感最高。 但是我如果我每周连着四天都在看书,就会很痛苦,那么我就会在第四天选择做别的事情。当然做这些本身也会消耗你的精力。
管理自己
《管理自己》 德鲁克 本文在某种程度上会影响你的人生。 ★0、前言 我们生活的这个时代充满着前所未有的机会:如果你有雄心,又不乏智慧,那么不管你从何处起步,你都可以沿着自己所选择的道路登上事业的顶峰。 不过,有了机会,也就有了责任。今天的公司并不怎么管员工的职业发展;实际上,知识工作者必须成为自己的首席执行官。你应该在公司中开辟自己的天地,知道何时改变发展道路,并在可能长达50年的职业生涯中不断努力、干出实绩。要做好这些事情,你首先要对自己有深刻的认识——不仅清楚自己的优点和缺点,也知道自己是怎样学习新知识和与别人共事的,并且还明白自己的价值观是什么、自己又能在哪些方面做出最大贡献。因为只有当所有工作都从自己的长处着眼,你才能真正做到卓尔不群。 历史上的伟人——拿破仑、达芬奇、莫扎特——都很善于自我管理。这在很大程度上也是他们成为伟人的原因。不过,他们属于不可多得的奇才,不但有着不同于常人的天资,而且天生就会管理自己,因而才取得了不同于常人的成就。而我们当中的大多数人,甚至包括那些还算有点天赋的人,都不得不通过学习来掌握自我管理的技巧。 我们必须学会自我发展,必须知道把自己放在什么样的位置上,才能做出最大的贡献,而且还必须在长达50年的职业生涯中保持着高度的警觉和投入——也就是说,我们得知道自己应该何时换工作,以及该怎么换。 ★1、我的长处是什么? 多数人都以为他们知道自己擅长什么,其实不然!更多的情况是,人们只知道自己不擅长什么——即便是在这一点上,人们也往往认识不清。然而,一个人要有所作为,只能靠发挥自己的长处,而如果从事自己不太擅长的工作是无法取得成就的,更不用说那些自己根本干不了的事情。 以前的人没有什么必要去了解自己的长处,因为一个人的出身就决定了他一生的地位和职业:农民的儿子也会当农民,工匠的女儿会嫁给另一个工匠等。但是,现在人们有了选择。我们需要知己所长,才能知己所属。 要发现自己的长处,唯一途径就是回馈分析法(feedback analysis)。每当做出重要决定或采取重要行动时,你都可以事先记录下自己对结果的预期。9到12个月后,再将实际结果与自己的预期比较。我本人采用这种方法已有15到20年了,而每次使用都有意外的收获。 比如,回馈分析法使我看到,我对专业技术人员,不管是工程师、会计师还是市场研究人员,都容易从直觉上去理解他们。这令我大感意外。它还使我看到,我其实与那些涉猎广泛的通才没有什么共鸣。 回馈分析法并不是什么新鲜的东西。早在14世纪,这种方法由一个原本会永远默默无闻的德国神学家发明,大约150年后被法国神学家约翰·加尔文和西班牙神学家圣依纳爵分别采用。他们都把这种方法用于其信徒的修行。事实上,回馈分析法使他们的信徒养成了一种始终注重实际表现和结果的习惯,这也是他们创立的教派——加尔文教会和耶稣会——能够主宰欧洲长达30年的原因。 我们只要持之以恒地运用这个简单的方法,就能在较短的时间内(可能两三年),发现自己的长处——这是你需要知道的最重要的事情。在采用这种方法之后,你就能知道,自己正在做(或没有做)的哪些事情会让你的长处无法发挥出来。同时,你也将看到自己在哪些方面能力不是特别强。最后,你还将了解到自己在哪些方面完全不擅长,做不出成绩来。 根据回馈分析的启示,你需要在几方面采取行动。 首先,最重要的是,专注于你的长处,把自己放到那些能发挥长处的地方。 其次,加强你的长处。回馈分析会迅速地显示,你在哪些方面需要改善自己的技能或学习新技能。它还将显示你在知识上的差距——这些差距通常都可以弥补。数学家是天生的,但是人人都能学习三角学。 第三,发现任何由于恃才傲物而造成的偏见和无知,并且加以克服。有太多的人,尤其是那些术业有专攻的人,往往对其他领域的知识不屑一顾,或者认为聪明的头脑就可取代知识。比如,很多一流的工程师遇上与人相关的事就束手无策,他们还以此为荣——因为他们觉得,对条理清晰的工程师头脑来说,人太混乱无序了。与此形成鲜明对照的是,人力资源方面的专业人员常常以他们连基本的会计知识或数量分析都一无所知而自傲。不过,人们要是对这样的无知还沾沾自喜的话,那无异于自取灭亡。其实,要让自己的长处得到充分发挥,你就应该努力学习新技能、汲取新知识。 另外一点也同样重要——纠正你的不良习惯。所谓不良习惯,是指那些会影响你的工作成效和工作表现的事情。这样的习惯能很快地在回馈中反映出来。例如,一位企划人员可能发现自己美妙的计划最终落空,原因是他没有把计划贯彻到底。同那些才华横溢的人一样,他也相信好的创意能够移动大山。但是,真正移山的是推土机,创意只不过是为推土机指引方向,让它知道该到何处掘土。这位企划人员必须意识到不是计划做好就大功告成,接下来还得找人执行计划,并向他们解释计划,在付诸行动前须做出及时的调整和修改,最后要决定何时中止计划。 与此同时,回馈还会反映出哪些问题是由缺乏礼貌造成的。礼貌是一个组织的润滑剂。两个移动物相互接触时发生摩擦是一个自然规律,不仅无生命的物体是这样,人类也是如此。礼貌,其实也很简单,无非是说声“请”和“谢谢”,记住别人的名字,或问候对方家人这样的小事,但就是这种不起眼的细节,使得两个人能够融洽相处,不管他们彼此之间是否有好感。许多聪明人,尤其是聪明的年轻人,没有意识到这一点。如果回馈分析表明某个人只要一遇到需要别人合作的事就屡屡失败,那么很可能就意味着这个人的举止不大得体——也就是缺乏礼貌。 把预期和实际结果进行比较,也会发现自己不擅长做什么。我们每个人都有许多一窍不通、毫无天分的领域,在这些领域我们甚至连平庸的水平都达不到。人们,尤其是知识工作者,就不应该试图去完成这些领域的工作和任务。他们应该尽量少把精力浪费在那些不能胜任的领域上,因为“从无能到平庸”要比“从一流到卓越”需要人们付出多得多的努力。然而,大多数人,尤其是教师,还有组织,都一门心思要把能力低下的人变成合格者。其实,他们还不如把精力、资源和时间花在将称职者培养成佼佼者上。 ★2、我的工作方式是怎样的? 令人惊讶的是,很少有人知道自己平时是怎样把事情给做成的。实际上,我们当中的大多数人甚至不知道不同人有着不同的工作方式和表现。许多人不是以他们习惯的方式工作,这当然就容易造成无所作为。对于知识工作者来说,“我的工作方式是怎样的?”可能比“我的长处是什么?”这个问题更加重要。 同一个人的长处一样,一个人的工作方式也是独一无二的——这是由人的个性所决定的。不管个性是先天决定的,还是后天培养的,它肯定是早在一个人进入职场前就形成了。正如一个人擅长什么、不擅长什么是既定的一样,一个人的工作方式也基本固定,它可以略微有所调整,但是不可能完全改变——当然也不会轻易改变。而且就像人们从事自己最拿手的工作容易做出成绩一样,他们要是采取了自己最擅长的工作方式也容易取得成就。通常,几个常见的个性特征就决定了一个人的工作方式。 我属于读者型,还是听者型? 首先,你要搞清楚的是,你是读者型(习惯阅读信息)还是听者型(习惯听取信息)的人。绝大多数人甚至都不知道还有“读者型”和“听者型”之说,而且很少有人既是读者型又是听者型。知道自己属于哪种类型的人更少。但是,有一些例子说明了这样的无知可能造成多大的危害。 德怀特·艾森豪威尔担任欧洲盟军最高统帅时,一直是新闻媒体的宠儿。他的记者招待会以其独特的风格出名——不管记者提出什么问题,艾森豪威尔将军都从容地对答如流。无论是介绍情况,还是解释政策,他都能够用两三句言简意赅的话就说清楚。十年后,艾森豪威尔当上了总统,当年曾对他十分崇拜的同一批记者,这时却公开瞧不起他。他们抱怨说,他从不正面回答问题,而是喋喋不休地胡侃着其他事情。他们总是嘲笑他回答问题时语无伦次,不合乎语法,糟蹋标准英语。 艾森豪威尔显然不知道自己属于读者型,而不是听者型。当他担任欧洲盟军最高统帅时,他的助手设法确保媒体提出的每一个问题至少在记者招待会开始前半小时以书面形式提交。这样,艾森豪威尔就完全掌握了记者提出的问题。而当他就任总统时,他的两个前任都是听者型——富兰克林·罗斯福和哈里·杜鲁门。这两位总统知道自己是听者型的,并且都喜欢举行畅所欲言的记者招待会。艾森豪威尔可能认为他必须去做两位前任所做的事。可是,他甚至连记者们在问些什么都从来没听清楚过。而且,艾森豪威尔并不是个极端的例子。 几年后,林登·约翰逊把自己的总统职位给搞砸了,这在很大程度上是因为他不知道自己是听者型的人。他的前任约翰·肯尼迪是个读者型的人,他搜罗了一些出色的笔杆子当他的助手,要求他们每次进行当面讨论之前务必先给他写通报。约翰逊留下了这些人,他们则继续写通报。可是他显然根本看不懂他们写的东西。不过,约翰逊以前当参议员时曾经表现非凡,因为议员首先必须是听者型。 没有几个听者型的人可以通过努力变成合格的读者型——不管是主动还是被动的努力;反之亦然。因此,试图从听者型转为读者型的人会遭受林登·约翰逊的命运,而试图从读者型转为听者型的人会遭受德怀特·艾森豪威尔的命运。他们都不可能发挥才干或取得成就。 ★3、我如何学习? 要了解一个人的工作方式,需要弄清的第二点是,他是如何学习的。 许多一流的笔杆子都不是好学生——温斯顿·邱吉尔就是一例。在他们的记忆中,上学往往是十足的折磨。然而,他们的同学有这种记忆的却很少。他们可能在学校里得不到什么乐趣,对他们来说上学的最大痛苦是无聊。有关这个问题的解释是,笔头好的人一般不靠听和读来学习,而靠写来学习,这已成了一种规律。学校不让他们以这种方式学习,所以他们的成绩总是很糟糕。 所有的学校都遵循这样的办学思路:只有一种正确的学习方式,而且人人都得遵从。但是,对学习方式跟别人不大一样的学生来说,被迫按学校教的方式来学习就是地狱。实际上,学习大概有六七种不同的方式。 像邱吉尔这样的人靠写来学习。还有些人以详尽的笔记来学习。例如,贝多芬留下了许多随笔小抄,然而他说,实际上他作曲时从来不看这些随笔小抄。当被问及他为什么还要用笔记下来时,据说他回答道:“如果我不马上写下来的话,我很快就会忘得一干二净。如果我把它们写到小本子上,我就永远不会忘记了,也用不着再看一眼。”有些人在实干中学习。另一些人通过听自己讲话学习。 我认识一位公司总经理,他把一个平庸的小家族企业发展成行业领军企业。他是一个通过讲话学习的人。他习惯于每周一次把全体高层管理人员召集到他的办公室,随后对他们讲上两三个小时。他总是提出政策性问题,在每一个问题上提出三种不同观点。但他很少请这帮同事发表意见或提出问题,他只需要听众听他讲话。这就是他的学习方式。虽然他是一个比较极端的例子,但是通过讲话学习绝不是一种少见的方法。成功的出庭律师也以同样的方式学习,许多诊断医师也是如此(我自己也是这样)。 在所有最重要的自我认识当中,最容易做到的就是知道自己是怎样学习的。当我问人们:“你怎么学习?”大多数人都知道答案。但是,当我问:“你根据这个认识来调整自己的行为吗?”没有几个人回答“是”。然而,知行合一是取得成就的关键;如果知行不合一,人们就会无所作为。 我属于读者型还是听者型?我如何学习?这是你首先要问自己的问题。但是,光这些问题显然不够。要想做好自我管理,你还需要问这样的问题:我能与别人合作得好吗?还是喜欢单枪匹马?如果你确实有与别人进行合作的能力,你还得问问这个问题:我在怎样的关系下与他人共事? 有些人适合当部属。二战时期美国的大英雄乔治·巴顿将军是一个很好的例子。巴顿是美军的一名高级将领。然而,当有人提议他担任独立指挥官时,美国陆军参谋长(可能也是美国历史上最成功的伯乐)乔治·马歇尔将军说:“巴顿是美国陆军造就的最优秀的部下,但是,他会成为最差劲的司令官。” 一些人作为团队成员工作最出色;另一些人单独工作最出色。一些人当教练和导师特别有天赋;另一些人却没能力做导师。 另一个关键的问题是,我如何才能取得成果——是作为决策者还是作为顾问? 许多人做顾问时的表现会很出色,但是不能够承担决策的负担和压力。与此相反,也有许多人需要顾问来迫使他们思考,随后他们才能做出决定,接着迅速、自信和大胆地执行决定。 顺便说一下,一个组织的二号人物在提升到一号职位时常常失败,也正是因为这个原因。最高职位需要一个决策者,而一个强势的决策者常常把其信赖的人放在二号位置,当他的顾问。顾问在二号位置上往往是很出色的,但是换到一号位置,他就不行了。他虽然知道应该做出什么样的决定,但是不能接受真正做决定的责任。 其他有助于认识自我的重要问题包括: 1、我是在压力下表现出色,还是适应一种按部就班、可预测的工作环境? 2、我是在一个大公司还是在一个小公司中工作表现最佳? 3、在各种环境下都工作出色的人寥寥无几。 我不止一次地看到有些人在大公司中十分成功,换到小公司中则很不顺利。反过来也是如此。下面这个结论值得我们反复强调:不要试图改变自我,因为这样你不大可能成功。但是,你应该努力改进你的工作方式。另外,不要从事你干不了或干不好的工作。 ★4、我的价值观是什么? 要能够自我管理,你最后不得不问的问题是:我的价值观是什么?这不是一个有关伦理道德的问题。道德准则对每一个人都一样。要对一个人的道德进行测试,方法很简单。我把它称为“镜子测试”。 20世纪初,德国驻英国大使是当时在伦敦所有大国中最受尊重的一位外交官。显然,他命中注定会承担重任,即使不当本国的总理,至少也要当外交部长。然而,在1906年,他突然辞职,不愿主持外交使团为英国国王爱德华七世举行的晚宴。这位国王是一个臭名昭著的色鬼,并且明确表示他想出席什么样的晚宴。据有关报道,这位德国大使曾说:“我不想早晨刮脸时在镜子里看到一个皮条客。”——这就是镜子测试。 我们所遵从的伦理道德要求你问自己:我每天早晨在镜子里想看到一个什么样的人?在一个组织或一种情形下合乎道德的行为,在另一个组织或另一种情形下也是合乎道德的。但是,道德只是价值体系的一部分——尤其对于一个组织的价值体系来说。 如果一个组织的价值体系不为自己所接受或者与自己的价值观不相容,人们就会备感沮丧,工作效力低下。 让我们来看看一位十分成功的人力资源主管的经历。这位主管所在的公司被一家大企业收购。收购之后,她得到了提升,从事的是她以前做得最出色的工作,包括为重要职位挑选人才。这位主管深信,在选人时,公司只有在排除内部的所有可能人选后才能从外部招聘人才。但是她的新公司认为应该首先从外部招聘,以吸收新鲜血液。对于这两种方式,需要说明的一点是,根据我的经验,适当的方式是两者兼顾。然而,这两种方式在根本上是互不相容的——表面上是政策不同,实质是价值观的不同。这说明在该公司人们对以下三个问题有着不同看法:组织与员工之间是怎样的关系;组织应该为员工以及员工的发展承担何种责任;一个人对企业最重要的贡献是什么。经过几年挫折,这位主管最终辞职——尽管她的经济损失很大。她的价值观和这个组织的价值观就是无法融合。 同样,一家制药公司无论是通过不断的小幅改进,还是通过几次费用高昂、风险巨大的“突破”来取得出色业绩,都不是一个经济问题。这两种战略的结果可能都差不多。实质上,这是两种价值体系之间的冲突。一种价值体系认为公司的贡献是帮助医生把他们已经在做的工作锦上添花,另一种价值体系的取向是进行更多的科学发现。 至于一个企业的经营是着眼于短期结果,还是注重长远发展,这同样是价值观问题。财务分析师认为,企业可两者同时兼顾。成功的企业家知道得更清楚。诚然,每一家公司都必须取得短期成果。但是在短期成果与长期增长之间的冲突中,每一家公司都将决定自己所选择的重点。从根本上说,这是一种关于企业职能与管理层责任的价值观冲突。 价值观冲突并不限于商业组织。美国发展最快的一个牧师教会,其衡量工作成败的尺度是新教徒的人数。它的领导层认为,重要的是有多少新教徒入会。随后,上帝将满足他们的精神需求,或者至少会满足足够比例的新教徒的需求。另一个福音派牧师教会认为,重要的是人们的精神成长。这个教会慢慢地让那些形式上入会但精神上并没有融入教会生活的新教徒选择了离开。 这同样不是一个数量问题。乍一看,第二个教会好像发展较慢。但是,它留住新教徒的比例要远高于第一个。换言之,它的发展比较稳固。这也不是一个神学问题(至少首先并不是神学问题),而是有关价值观的问题。在一次公开辩论中,一位牧师这样说:“除非你先加入教会,否则你永远找不到天国之门。”而另一位牧师反驳说:“不,除非你先有心寻找天国之门,否则你就不属于教会。” 组织和人一样,也有价值观。为了在组织中取得成效,个人的价值观必须与这个组织的价值观相容。两者的价值观不一定要相同,但是必须相近到足以共存。不然,这个人在组织中不仅会感到沮丧,而且做不出成绩。 一个人的工作方式和他的长处很少发生冲突,相反,两者能产生互补。但是,一个人的价值观有时会与他的长处发生冲突。一个人做得好甚至可以说是相当好、相当成功的事情——可能与其价值体系不吻合。在这种情况下,这个人所做的工作似乎并不值得贡献毕生的精力(甚至没必要贡献太多的精力)。 如果可以,请允许我插入一段个人的故事。多年前,我也曾不得不在自己的价值观和做得很成功的工作之间做出选择。20世纪30年代中期,我还是一个年轻人,在伦敦做投资银行业务,工作非常出色。这项工作显然能发挥我的长处。然而,我并不认为自己担任资产管理人是在做贡献。我认识到,我所重视的是对人的研究。我认为,一生忙于赚钱、死了成为墓地中的最大富翁没有任何意义。当时我没有钱,也没有任何就业前景。尽管当时大萧条仍在持续,我还是辞去了工作。这是一个正确的选择。换言之,价值观是并且应该是最终的试金石。 ★5、我属于何处? 少数人很早就知道他们属于何处。比如,数学家、音乐家和厨师,通常在四五岁的时候就知道自己会成为数学家、音乐家和厨师了。物理学家通常在十几岁甚至更早的时候就决定了自己的工作生涯。但是,大多数人,尤其是很有天赋的人,至少要过了二十五六岁才知道他们将身属何处。然而,到这个时候,他们应该知道上面所谈的三个问题的答案: 1、我的长处是什么? 2、我的工作方式是怎样的? 3、我的价值观是什么? 随后,他们就能够决定自己该向何处投入精力。或者,他们应该能够决定自己不属于何处。...
面试的技巧
简历准备 一个拥有丰富经验的工程师往往很难表达自己的核心技能栈,这是因为面试本身就是一种需要训练和学习的技能。很多人往往忽视了它,以为自己的能力会自己说话,但是,考虑到面试官很难再极短的时间熟悉你这个人,你必须迅速建立起你的竞争力的立体轮廓。首先是简历,一份好的简历应该是精雕细琢的,许多人在写简历的时候,往往并不在乎。就像是在写流水账,一些无关紧要的细节占据了大量的篇幅,很难一眼看到亮点。从排版到格式,从敬语到内容,从错别字到术语的大小写。其实这里有非常多的细节需要注意。比如你在简历里描写了自己是一个拥有代码洁癖的人,但是在简历里面出现了中英文符号混用的情况。简历是需要令人眼前一亮的,在几百份中脱颖而出,你需要做的,就是用数据说话。如果有图表,当然更好了。下面整理几个简历需要检查的点(checkpoint),你可以依次参阅,来校正你的简历: * 检测简历的文件格式,如没有特殊要求,必须使用PDF。 * 检测简历的名称,必须包含简单描述你的求职岗位和姓名 * 检查简历的大小,不能太大,最好在2页。 * 检查简历的错别字、大小写、日期 * 检查简历中的字体、颜色、术语 * 检查邮件,检查邮件的subject,邮件的内容简要的描述你自己和求职方向。 * 检查邮件的发送时间,是否在一个对方容易看到的时间发送,如果是凌晨或者傍晚,都不宜发送,最好设置自动发送。 * 检查邮件的附件是否提交,确保附件能被正确打开,注意编码,至少保证在Mac、Linux、Window下打开均不能是乱码。 做好以上的检查,对你而言,在某种程度上增加了你的简历通过初筛的概率。从格式上进行修正,采用标准的字体。不能滥用颜色,极可能的保证你的简历的简洁和易懂。 部分偏僻专业术语最好在括号里面备注原义。仔细阅读你的简历,突出和量化核心竞争力,最好是跟你面试的公司匹配。这就意味着,你需要提前做出一些了解,最好你知道你要面试的岗位的技术栈,目前的业务背景,甚至成员信息。 在简历里面,你就需要突出这部分技能。比如你面试一家需要对分布式有深入了解的人,那么你在简历里面,就可以重点描述自己在分布式方面的造诣。在简历里面,你最好包含github、stackoverflow 等地址。如果你有参与或者维护开源项目,请仔细并自豪的介绍它。在简历中,描述你的项目职责的时候,需要具体到业务和技术,必须考虑你自己起到了多大作用。 如果没有,你甚至可以自己构造一个,但必须对所有的技术细节了如指掌。 电话面试 在约好了电话面试后,首先你需要一个安静的对话环境,并且确保你的网络通畅。时间最好在傍晚,不要在中午。 HR一般会跟你预约电话面试的时间,所以,不要太晚。你需要提前了解公司的下班时间,时间最好是在接近下班时间半小时的时候。电话面试主要是做一个粗略的筛选,但是你必须牢记一些你没有回答上来的技术问题,如果一旦通过电话面试。在正式的面试中,当这些问题呗重复提及的时候,如果你当时没有回答上来,但是你在面试的环节,已经完全熟悉了那个细节。这对你非常有利,因为至少证明,你的学习能力非常强。必须乐于学习。除了电话面试,可能还有视频面试,女孩子在面试的时候,最好保持简洁的素色服饰,不要化妆太浓,也不要随意邋遢。保证自己独处的安静环境里面。房间收拾干净,摄像头触及的地方放自己刚看的书。光线保证不要太亮,否则摄像头不清晰。尽量自然,语速不要太慢也不要太快,正常语速即可,可在旁边放一杯水或咖啡,给面试官切入话题的时候,一旦面试官有询问的意愿,立即停止你的叙述,并聆听。尽可能的保持礼貌。电话面试需要注意的是,如果你对某个技术不理解,一定要试着说出自己的想法,即便是错误的。在适当的时候,你可以询问面试官,给与你正确的答案。面试是免费的学习机会,这种学习是双向的,面试官问的问题,他可能并不完全理解,在某些领域,你可能比他更有话语权。电话面试可以快速的梳理你的知识网络,让你知道你在那几个点上有问题。即便是面试失败,这种交流带来的价值仍旧是很大的。 技术面试 在参加技术面试的时候,需要注意的是,你的简历必须真实可靠。如果你已经走到了这一步,一般情况下,面试官要做的是确保你的简历真实,并尽可能的探测你的知识的深度和广度。一般来说,面试官会从你的项目切入,你会有一个简短的介绍你负责最重要的那部分项目,面试官会跟随者你的思绪,询问你某个细节的具体实现方式。比如用到的设计模式、某个特性的原理,对源码的理解。 如果你对某个知识点不是很清晰,这时候,你可以尝试着思考一下。如果可以,将你的思考过程陈述给面试官。你可能未必给出一个正确的结果,但可以给出一个解决该问题的办法。面试不仅仅是表现你的知识面,更重要的一点是你的知识能为公司带来的价值以及你的学习能力。 现代企业越来越注重员工的个人成长能力。学习能力、快速解决问题的能力、以及对新事物充满好奇心的样子,都会给你的面试加分。
《三体》的诡异世界
最近读完了三体,不得不佩服三体的丰富想象力。 在大刘的笔下,一副宇宙的画卷从一个游戏开始缓缓铺展开来。 大至宇宙,小至微观文明,思想的镜头不断的切换。时间可以停留在数秒内,也可以横跨数个世纪。 三体包含了包含了许多不止于科幻的元素,在三体中,你可以领略到宇宙至高无上的文明和规律,也能感受到残酷无情的打击。人类是何等渺小,又生生不息。时而黑暗血腥,时而又在巨大的威胁面前绝望地像是一个把自己关在小黑屋的做错事的孩子。 三体从科学的角度上,很多科技都具有前瞻性,时空、黑洞、光速、高维存在。这些在现实中都是最前沿的研究方向,换句话说,宇宙无限大,一切皆有可能,我们在书中看到的,也许很多都是真实发生的。 三体同样抛出了许多问题,黑暗森林法则似乎在警告人类,不要轻易的接触外星文明。同时又勾勒出外星文明远高于地球文明的科技轮廓。就像是告诉一个孩子,不要去那条有五色鱼的河流,那里是深渊。 但这些警告似乎是没有用的,反而增加了对那个地方的好奇心。 人类不可抑制的好奇心创造出了现代灿烂的文明,然后面对一个外星文明的探测器,在一瞬间,几个世纪部署的战略防御瞬间崩塌。这些,似乎都是在考验人类。 在一次次的灾难和危机过后,人类的政治政权不断的变换。三体在这种角度来看,就像是一个实验场,大刘用各种条件来测试人类。他时而行走在文革时期,站在叶文洁的身边,感受着这个悲惨的中国女性内心无助的呐喊,又把她放在一个封闭到窒息一样的红岸基地,在电磁波的陪伴下,毫不犹豫的按下了终结全人类的情报按钮。 政治在不断的变化,人们在威胁到来之际,会把全部系统托付于救世主。当危机解除,经过漫长岁月的洗礼,人们又开始审核自己的救世主。这一点,现在是如此,未来也是如此。 大刘又把人类放在宇宙飞船中,在5分钟内,看着他们建立起极权。 三体有许多技术、冬眠可以让人类进行可能的时光旅行。整个三体也都是在这种技术的保证下,使得人们在横跨多个世纪后相聚又分离。初次之外,对神迹,宗教都有非常合理和清晰的解释。当一个四维碎片地球的时候,那个时代的人幸运的获得了短暂的魔法。 三体就像是一部时光机器,你可以坐在上面,感受一段不可思议的奇妙旅程。
看了《阿飞正传》
哥哥的电影《阿飞正传》在6月25日上映了。 他离开的时候是2003年,那时候,我还是一个小小少年,对他的喜欢是在上大学以后。 所以,他的电影重新上映,对我而言,是非常珍贵的。我可以有机会在电影院看到他的身影。 买电影票的时候,我发现一个孤零零的位置。 我便买到了Ta的身边,我不知道Ta是谁,一个人怀念Leslie,Ta应该也很孤独吧。 电影开始的时候,她走了进来。我们的全部交集在短暂的转瞬即逝的眼神交错中,大概持续了3秒。 很开心跟一个陌生人坐在一起,当怀念Leslie的时候,我知道,我们都不孤独。 WE MISS U
预言机
![](http://yuml.me/diagram/scruffy/class/[Blockchain] Oracle -.->[Real world]) 在以太坊上创建一个智能合约不可思议的简单,这里几乎不会牵扯到复杂的编程知识或者法律合约知识。一个普通人可以快速的创建一个ERC20 token。这使得区块链在这个世界蔓延生根的更快。在不久的未来,很多事物都可以通过智能合约来执行,而不需要借助一个中央机构。智能合约加速了交易,并且透明的保护了参与者双方的完全信息对称。 在智能合约上,可以快速的发起一个ICO:给它设定一个起始时间和终止时间,发行多少Token和解锁策略。这使得一些优秀的企业或是项目,可以在不需要进行IPO就可以募集到启动资金。(由于ICO的门槛低廉,会导致衍生出很多骗局)。 在智能合约中,可以通过内置的对象获取一些额外的信息,比如打包当前交易的区块的当前时间戳、区块的高度等等。 function time() constant returns (uint) { return block.timestamp; } 但是,无法从智能合约的内部依赖真实世界的数据。 比如你不能这样 function extra_real_world_data() constant returns (uint) { return load_from_facebook(); } 在日常的编程经验中,我们可以写出这样的编程代码,这没有任何问题。但注意,智能合约跟传统的软件有着非常大的区别。它不是由一台服务器执行的,而是由以太坊执行的。这就意味着有无数个节点需要可以执行它。每个节点对load_from_facebook()的调用都是不相同的。 我们依赖 www.facebook.com 作为数据源,伴随着有些节点的DNS被污染,可能定向到一个伪造的facebook。或者对facebook的数据访问被恶意篡改,或者facebook本身被控制或是做出恶意的行为。 在这样的环境下,节点对外部因素参与的计算的结果很难统一。 然而,我们要实现一个对赌合约,比如来赌下一次奥运会的中国金牌数的时候,就真实的依赖中国的金牌数。这时候,智能合约就无能为力了。因为智能合约无法知道下一次中国金牌数是多少。 (即便是我们有一个权威的地址可以访问,当智能合约运行的时候,每一台运行智能合约的节点都对同一个地址的请求都可能产生不同的结果。有些节点为了欺骗,会给予错误的数据来影响合约的执行结果。更重要的是,权威节点往往是中心化的,它被某些利益团体操控,或者被攻击) 智能合约当然不能永远只停留在沙盒里面,它不能只能获得区块的信息和时间戳。它应该可以获取到更多的真实世界的信息。只有这样,它才能发挥最大的威力。 所以,我们需要预言机。 预言机是区块链与真实世界进行交互的实体。它确保外部的输入是真实的。智能合约和预言机进行信息交换。 因此,智能合约必须要借助预言机,才能发挥它的最大作用。
Blockchain checklist
【思想&原理】 blockchain的原理 主流的blockchain 点对点 分布式系统 货币的本质 ICO Token smart contract 主流的共识算法 pow&pos&dpos 一些思想,不可能三角关系定律等 比特币的架构 script 语言 拜占庭将军的问题 【密码学】 椭圆曲线 非对称加密算法 hash , sha256 公钥&私钥&seed 【计算机】 Java、Go语言 VM 虚拟机,EVM 图灵完备执行环境 solidity语言 编写智能合约 p2p 网络 roc 分布式网络 【区块链】 公链、私链、联盟链 闪电网络、超级账本、IPFS 钱包 浏览器 比特币&以太坊 跨链 web3 交与区块链 Dapp 区块链底层协议 EIP、BIP 分叉 区块的扩容 挖矿 【博弈论】 共识博弈 【经济】 如何构建一个去中心化的民主自组织的经济体 ICO vs IPO 【金融】 古典金融模式,如IPO 【组织】 理解自下而上管理的组织 理解组织的未来运营模式 理解去中心化后的组织的维护依赖透明的激励模型 理解收益模型(如持续收益模型) 【领域】 银行、金融系统(银行发行的数字货币) 医疗,电子病例系统 供应链 租赁 所有权声明 分布式DNS
2018年终总结
现在是2018年初,准确的讲是2018年2月22日,一切都还是空白。我现在脑袋里思考我今年做了些什么,就像是我在2019年回想去年那样。这种思绪能让我冷静下来,思考这一年我的成长。 是的,不出意外的话,我今年加入了一家区块链的创业公司。我非常喜欢这份工作,并且能够产生源源不断的热情。 我在这家公司迅速的成长,这一年对我而言非常重要。 我在2018年的7月份将拿到驾照。真实激动人心的时刻。 我会完成一本书,这是我一直的愿望,我将会在9月份的时候,真正的完成它。这是一本技术书籍,关于区块链的。我会学会如何从0开始写一本书。它将会出版。 我会拥有几个新朋友,我们拥有相似的价值观。我们会一起聊聊互联网。当然,我也会重建我的友谊,跟之前的老朋友。 我的英文得到了飞升,我快速的通过了英文4级,并且在10月前,走过至少3个不是杭州的城市。 在10月,我摘掉了牙套,我将永远忘不掉在诊所离开的那个下午。那天我骑着单车,耳机里听着adele的hello,飞快的穿过打铁关的地铁口。 2018年,我一直在坚持的健身计划,终于令我的人生发生了变化,我拥有了极好的食欲并在2018年8月认识了我的女朋友。 她是一个乐观可爱的女孩子,我们有说不完的话题,偶然谈到哲学。并且彼此深信就是命中注定的那个人。 我会准备一件礼物送给即将大四毕业的弟弟。我肯定会爬一座山,在一个风和日丽的下午。我站在山顶,眺望远方。 我的星际水平会达到国服大师,为此我付出了许多努力,经常一个人练习战术。 到年底,我将有20W的现金,这些钱一部分将给爸妈,剩下的钱会用来投资。我会庆幸我买个月花费了1%来购买ETH。 我变得更高,睡眠质量有了非常高的提升,并且在右脚上做了微型手术。 啊对了,我遇见了迪丽热巴,在一个发布会上,我遇见了她,并索要了签名。 这是丰富的一年呢。 我每周都会坚持读一本书,这种阅读给我非常大的视野提升。我研究了许多经济学的东西,以至于我已经宛若一个投资家,并且开始打理家庭财务。为此,我在5月份,建立了专门的家庭账户用以理财。 这是我在2018年做的事情,每一天都充满了变化。 现在是2018年2月22日,我并不知道这一切会朝着那个方向发生。
未来
我不止一次的思考,未来是什么?就在我思考的瞬间,未来已经呼啸而过,我没办法用一个相机把它定格住,研究它,解剖它。 我也不止一次的思考,究竟是什么影响了即将发生的事件,又是什么使得发生的事件看上去如此合理。如果一个人来自未来,他会是一个严谨的逻辑学家,他会说出事件发生的因果关系,听众将对此深信不疑。即便是看上去事件的本身荒诞不可思议。 很多人都过去发生了什么都一无所知,所以当他对未来做出判断和决策的时候,往往像是一个赌徒,通过概率来判断。或是因为事件惯性,即人们总是在找到一个方向,使得发生的意外更小,发生的事件将更小的影响现在。一个上学的初中生当知道转角处有一摊水的时候,他每次都会很小心的避开。当他发现一条去往食堂的捷径,如果这条路使得更舒服,他便很难在选择别的路径。 未来亦是如此,当我们选择了一个方向,如果没有不可控的意外介入,我们便很难有动力去改变。 当每个人都试图维持某种稳定的时候,瞬息万变的未来将存在一个可预测的解空间。发生的事件将可以被预测,这是关于未来的全部秘密。 互联网发展的历史可预测的痕迹尤其明显。 信息传递,这是人类生活甚至动物生活中必不可少的的一环,通过传递信息,动物可以避开危险、分享食物、交流经验和学习。信息传递从原始到现代经历了许许多多的变化,从气味、声音到编码的信息如刻在石头上和柱子上的文字、再到电子显示屏。 信息的传递越来越高效,并且越来越多元化。PC时代,信息从浏览器出发,一个个超链接,将所有的信息都组织在一起,任何人都可以获取信息用以改善自己。比如学习烹饪和钢琴。 伴随而来的信息分享,使技术得到了飞跃。更便利的工具出现了,移动互联网使互联网普及到了每一个人的手掌之中。 信息的传递变得更方便,你只需要在手掌上操作即可。 我们对信息的获取已经抵达了一个数量级,大量的数据由大脑进行分拣显然并不是长久之计,人工智能将基于统计学模型来优化数据,让你获取到最需要的信息。得益于这一点,我们将会拥有更智能的信息推送,甚至在你寻找信息之前,信息将出现在你最需要的那一刻。 你获取过的全部信息可以预测你接下来需要什么信息。一个每天都会点肯德基的人,机器有理由相信在明天,这个事件仍旧会发生。 信息已经足够智能的出现在任何需要它的场合,信息本身已经涌现了智能。但伴随而来的是信任危机,当大量的数据涌入的时候,不被信任的数据将污染信息源,使机器做出错误的决策,这些决策将会导致一个个商业诈骗、腐败、独裁。尤其是信息被政府操控的时候,人民将难以获得自由。 人民拥有法律,却永久的失去了法律的解释权。 区块链将是解决这一问题的下一个革命性技术。 比起互联网,区块链将提供整个互联网的信任基石。只有在信任之上的智能,才有意义。 将人类的信任从中央权威转移到数学的时候,会有很大的风险。比如如何治理,失控后如何防范? 这些问题都将是未来会面对的问题。
谜底
谜底 你一定会在这样的时候思念她。 当你忙碌地生活了一天又一天,在某个平凡的你以为又是跟昨天一样的早晨,跟往常一样去那家写着“又是美好一天”招牌的早餐店门口的时候,忽然有一个人的影像生生的插进了你的记忆。如此强烈,像是经历过猛烈的性后的黄昏,像是暴风雨或核弹光芒。 你开始怀疑自己,一定是记忆错乱了。可是,那个人的记忆是如此地真实,在你的每一天每一个小时的大脑记忆中央开始爆裂。你不能控制自己,感觉她是存在的,然而你一定想不起她的名字。你开始怅然若失,对每一天都错过她追悔莫及,却又无法得到她的任何信息。 你一定会经历这样的场景。 当你开始思考我说的问题的时候,她突然占据了你的大脑。那个名字,那个画面,捉住它,别让消失掉。因为一旦它消失了,在未来的许多日子里,你将永远得不到它的任何信息。 你会面临你的一生中最重要的问题,死亡。这是你必须接受的一个礼物。虽然你并不这样认为,直到最后一刻你都以为那是惩罚。就像是小时候做错事那样。那时候,你会躺在病床上,看着你不在瘦骨嶙峋的身体,病入膏肓后记忆却更加清晰,你清楚的看见你面前的两个孩子正望着你。 就像是你望着当初给与你生命的那个人一模一样的眼神。 请对他们微笑,并说,“这是一个谜,我现在要揭开它了”。 是的,你要接近一生中最重要的那个时刻了。你将获得一生中最宝贵的信息-关于死亡的信息。 你充满了期待,但期待转而变成了悔恨。悔恨又在一瞬间被充盈着激动的热泪淹没。那一刻,你回想起你的一生,在漫长的迷雾重重中一路走来的你的背景,你望着他,像是望着一个老友。 你多想拍拍他的肩膀,从帽子里掏出一只兔子丢在他的面前吓他一跳。 如果这样做了,你一定会想起她。那个伴你一生的重要的人,那个在你的记忆中丢失的灵魂。 当她走到你的面前,脱掉衣服,摘下面具的时候,你会惊愕地看见你自己。
密码学货币
阅读本文你将了解到 货币 区块链的原理 比特币如何解决拜占庭将军的问题&重复支付问题 密码学货币的前景展望 【货币】 让我们先闭上眼睛回到人类文明的早期阶段,想象一个猎人狩猎归来,他收获颇丰,在饱餐一顿后。他手里的鹿肉还有一大半。如果置之不理,一晚上就会腐烂。于是他相处一个好注意,用鹿肉来跟同伴交换兔肉。第一次交换进行的很顺利,他吃到了从未吃过的兔肉。并立即喜欢上了兔子的味道。于是开始频繁的交换。久而久之,他想要交换更多的东西,但他也发现了一个问题,不是所有的人都愿意用鹿肉来跟他交换,有人喜欢兔肉,于是他用鹿肉换来兔肉,再用兔肉来交换他喜爱的铃铛。 但这样的交换成本太高,而且并不总是幸运的交换到自己喜欢的东西,是不是存在一种东西,我们大家都愿意用自己手上的东西跟它交换呢? 没错,它就是货币。 货币的一个重要的特征就是流通。它建立在所有人都信任的基础上。并且货币应该是极难伪造的。 当货币在流通的时候,遇到的一个挑战是,如何防止货币被伪造。 因为总有人想要不劳而获,通过伪造货币来交换想要的东西,一旦货币的制造成本很低,那么,通货膨胀将慢慢的蚕食掉货币在流通中代表的那部分价值,最后变成一文不值的东西。同样没有完善的验证机制,每个人都可以私自制造货币,最终货币泛滥,再也没有人愿意用自己手里真真实实的大米来跟他交换了。所以,货币的另一个重要的特征就是,可以分辨真伪。 【密码学货币·BTC】 假设有一个账本,记录了 [张三持有1000W BCT] 这样的信息。大多数的参与者都认可这条信息,证明张三确实持有了1000W的现金。现在,我们的目的就是让绝大多数人都认可这个账本。 我们可以使用投票机制,假设有100台计算机都各自持有一个账本,其中51台计算机记录了[张三持有1000W BCT] 这样的信息,49台持有[李四 持有1000W BCT]这样的信息。那么,我们认为,张三拥有1000W BCT这条信息是合法的。这里有一个明显的漏洞,就是当有人控制了51台计算机,那么,他就可以篡改信息。(就是著名的拜占庭将军问题)。 现在,我们把所有的交易都想象成一个巨大的账本,这个账本记录了所有的历史交易。在最开始的时候,在这个账本上记录 [张三得到1000W BTC] 这条的信息。 现在大家都认同了这个账本。接下来,交易开始,张三持有了1000W。这个账本将自己的信息通过广播的形式发送到互联网,所有的其他客户端都接收到这个信息,并进行验证。验证成功后,将自己的账本更新为最新的。 每个客户端都想写入一笔交易到账本上,并且他要获得绝大多数客户端的认可。每个客户端都运行着一样的算法检测。当客户端获取到最近的交易信息的时候,他会运行一个hash函数。来证明自己的运算能力更快。证明方法是: Hash(历史的交易信息+当前的最新交易+随机数)生成的Hash满足某个特定的条件,这个条件决定了获取这个Hash的难易程度,比如Hash的结果必须是00开头。 很明显,在这个Hash算法中,历史的交易信息和当前的最新交易,对于客户端来说都是共享的,他们都持有这样的信息,唯一不同的是,他们要在其他客户端算出满足条件的Hash之前算出它,并打上时间戳,广播出去。这样,就是一个区块。作为奖励,你可以在里面增加一条你拥有25BTC的记录。其他客户端在接收到你的广播后,会验证是否有效。而这样你就拥有了25个BTC(如果你私自改动这个值,其他客户端将会拒绝这个区块,并且这个值在每四年会减少一半)。但2140之后,打包区块将不会获得BTC。因为总量被设置了2100万个被分配完毕,收益只是交易创建者支付的手续费。 这里每个CPU都真实的付出了劳动(proof-of-work),它们消耗了电力和资源来产生一个满足要求的随机数。并没有任何投机取巧的办法能获得这个随机数,唯一的方案就是暴力遍历匹配。这个的灵感来自于Hashcash,它很难被找到但很容易被验证。所以,最快算出结果的那个客户端,就创建了一个区块。这个区块里包含了若干条交易记录。 比特币的区块大约每十分钟产生一个。截止目前,每个大小约1M的限制。 一旦A接收到来自B的广播,声称自己发现了新的满足要求的随机数,A就会进行验证,通过后,将新的区块连接到旧的区块上,并将这个消息广播出去。而连接若干个的区块形成一个链条。就是区块链。 当诚实的节点站绝大多数的时候,这个由于无数个计算机节点构成的P2P网络,是可以信任的。而每一台客户端都拥有一个完整的账本。 比特币本身代表了互联网架构下无数人构建起的、没有中央集权的信任网,这个信任不被任何政府和机构控制。所有的节点都扮演了监督的决策,每一笔交易都有迹可循。就像是对黄金的信任是因为黄金极难获得且难以伪造,比特币需要消耗大量的计算才能获得。然而,随着计算难度的加大,没有客户端愿意在于计算。 在解决重复支付的问题上,当一个比特币被重复支付的时候,那一条交易被接受取决于被最先加入到区块链上的区块包含了你的那一条交易信息。剩下的交易信息将会丢弃。 未来的支付场景多样化,密码学货币本身面临着巨大的机遇和挑战。一个威胁是加密算法将不在安全。可以肯定的一点是,任何人都无法停止它。它已经正在互联网这篇肥沃的土地上自由的野蛮生长了…… References (BTC 论文)[https://bitcoin.org/bitcoin.pdf]
基于大量信息的决策
阅读本文你将了解到 信息过载 获取有效信息 了解信息的获得难易程度,有些信息是全部人都可以免费获取的,有些是通过自己分析得到的。 隐藏的可能信息。有时候需要听听没说什么。 基于经验和随机策略来抵抗不可知或极难获得信息的潜在危险 这个世界上每一个时刻都产生大量的数据,这些数据可以被转换成各种各样的信息。在金融操作中,信息绝对是最敏感的杠杆。一条有价值的信息可以在决策中占有很大的权重。而一些无用的信息,大量消耗了你的资源和精力,却往往只是障眼法。并不会产生实际的收益。 我们的周围被大量的信息充斥,这些信息包含了促销广告、情人节优惠活动、午夜电影打折券、股灾、天气预告…在这个数字驱动的时代,信息可以让你获取巨大的收益,但有害的信息往往是你走入歧途。 过滤信息显得尤为重要。信息的过滤意味着,你必须独立的思考,切勿随波逐流,但同样应该将思考的精力集中在某些特定的区域,而不要让其他部分分散注意。有些共识、前人的经验、专家的分析,可以直接获取结果而不需要自己在思考,因为思考可能在很大程度上获取到相似的信息。 但最难的在于,我们不知道那些经验可以直接来用,那些需要自己在去思考分析。有些经验是只能满足某个环境的,而有些则是上下文无关的(一般是知识)。 我们所处的世界,信息的获取成本很低,但也可能很昂贵。有些信息是共享的,如在互联网上,你可以搜索到几乎全部想要的共享信息。而有些信息则带了秘钥,它只是少部分人知道。信息的不对称导致了贫富差距。但往往,通过对获取到的信息分析,总能推测出那少数不可知的信息。 利用这些信息,可以在很大程度抵御来自信息不对称。而你根据大量的信息推测出隐藏的信息,需要很多知识和前面的经验。这些经验只能来自于你的经历、学习、读书和独立思考。 在对一条信息进行分析的时候,还有很重要的一点是,当信息被出现的时候,你的大脑中总是被信息描绘的画面占据,而往往忽视了信息没有传达的信息。当你意识到这条信息没有传达某种你预测中应该要传达的信息,此时必须警惕起来,为什么对方选择隐藏和避而不谈? 在股市中,有一种很有用的策略来抵抗信息的不对称。即对已知的信息采用经验分析获取价值,而对未知或极难知道的信息采用随机策略。在有些时候,这样的决策反而会获得更大的收益。
Git:一种新工作模式的思考
在讨论Git的协作模式的时候,思考一下,git的基因是分布式的多人协作任务流。区别于传统的流水线模式,worker在完成一个任务的时候,或多或少的依赖上一个工作的任务。这就大大阻塞的工作的效率。因为绝大多数情况下,你的任务是没必要依赖上一个环节的处理的。我的意思不是业务上的分离,而是在开发上,至少你在很多情况下,你简单的需要一个mock的data 就可以模拟你的依赖。 所以,Git有branch这个东西。 仔细想想,似乎是,worker在接收到一个任务后,单独的fork出一个完整的工作环境,在其上完成自己的工作,并且merge到主干上。在git上,这很容易实现: git branch fix-some-bug 这样就创建了一个分支,你所有的改变都在这个分支上,最后被合并到master上。 这样的模式有一个问题,这个问题在多人协作模式下很容易就凸现出来,即: 当多人修改同一个地方的时候,冲突(conflict)就出现了。你必须修复它才能够合并到master。 考虑到多人工作的场景,所有人的code都合并到master,这些code将引入新的bug,所以,某些分支是受到保护的,你必须经过容许后才能够合并到其中。 最简单的例子就是,所有的代码都需要一个良好的单元测试来保证功能的正确性,并且,在提交后经过一些core review 才能够合并到master 。甚至,只是一个PR,最终是否Accept,还需要看决策层(可以是一个有权限的人来Merge pull request)。 core review是这个工作模式产生的一个文化,它鼓励你分享你的code并且乐于接受批评。这样做不但保证code的质量,营造了一个open的工程文化,并且能有效刺激你的编程技能迅速提升。 但是,当事情越来越复杂的时候,一些事情的效率就变得很低了。比如,每一个developer都需要运行它的test cases ,找到一个人来review自己的code ,发送一个pull request给指定的人…. 事情渐渐又变成低效且复杂了。这些事情不能自动化么? 自动运行我的测试,自动检测我的代码风格,自动化一切重复的工作….. 没错,这时候,持续集成(CI)该出场了。 你已经理解了CI是什么东西,它提供了一个构建流来持续不间断的进行project的迭代更新。 一个简单的CI的工作流是这样的: 当你push 到一个分支的时候,你的所有工作都已经完毕。CI将自动为了分配容器来运行你的测试。包括但不限于单元测试。 比如当你需要这样的场景: 首先,当你的push到某个分支的代码后,你需要它先自动运行test cases ,然后进行build期间,按照你的规则来进行一些列的构建工作,当一切都完成后,你希望自动部署到某个服务器上。 没错,这就是CI所做的工作。它提供了一个可配置的文件让你来描述究竟要怎么完成你的任务。 你的描述将转换成一个DevOps的Request,比如你需要一台服务器运行LAMP环境,并且安装了Mysql5.6 。这些都可以在CI里面作为一个环,其中类似申请服务器这种指令将转交给DevOps来执行。这时候,开发和部署形成了闭环。 开发完全无感知到这一切是怎么运作的。 所需要做的,只是工具文化和约定。 比如,在git commit 里面增加语义,来触发你所定义的事件。 或者在一个chat room里面进行chapOps。 BTW: 最近一段时间DevOps被重新提起来,这个很早就出现的词再一次进入了公众的视线。 什么是DevOps,似乎首先你想到这事运维干的事情,大概就是某个家伙比较懒,把一切能自动化的工作都自动化了。 是的,确实是这样的。
冤家
1992年,爸爸娶了一个女人,我多了两个仇人。 爸爸和继母结婚的时候,我就发誓跟她们势不两立。他们的婚礼很简单,没有请好朋友,没有红色的喜帖,没有婚纱,甚至连红蜡烛都没有。只是简简单单的一做桌晚饭。西红柿炒鸡蛋,白菜豆腐,还有红烧鱼。我记得清的,就只有这些了。 那是一个阴沉沉的黄昏,我的家里突然多了两个陌生人。一个女人,即将成为我的妈妈,但我从没有叫她妈妈,我知道她不是我的妈妈,永远不是。一个年纪跟我差不多大的小女孩,爸爸说,那是我的妹妹。我知道我没有妹妹。永远都不会有。 他们在一起后,我意识我原来的生活受到了威胁。我会将我的小熊藏在柜子里,再也不会拿出来放在床上了。我会把音乐盒也藏好,把小人书压在枕头下折叠一个特定的形状,以便有任何人翻看都能被我第一时间发现….我做了很多功课应对我生活的巨变。但第一天晚上的时候,她是在我睡着了之后才睡了的。等我早上起床的时候,她已经在厨房了。该死,那时候的太阳照耀到我的脸上,她一张脸笑嘻嘻的端着早饭,站在我面前,第一句话就是:姐姐,我…我以后可以叫你姐姐么? 我愣了片刻,一下子不知道该如何应对。她接着说,姐姐,你吃早饭吧。 还没等我说话,她就把早饭放到床头,自己出去了。在那之前,从没有人这样对我。但是我却一点都不开心。 我心里想,肯定是你妈妈安排来讨好我的。哼,我才不不理你。 我还是对她冷冰冰的。 1993年,她入学了,在拿到所有的证明之前,我一直抱有幻想,希望她因为各种原因被拒绝,这样就可以不用跟我在一个学校读书了。可是,这些期望都没法发生。她不但上学了,而且跟我一个班。 我忘不掉那一天。 爸爸说,“阿丫,从今天起,你要好好照顾你的妹妹”。 我说,“她不是我的妹妹。” 爸爸很生气,继母说,“小丫还小,别难为她…等过一段时间”。 我生气的接过继母的话,说,“谁要你管我”。 爸爸说,“你怎么对长辈说话呢”。 我不知道我为什么那么生气,我对她说,“你不是我的妈妈,你永远都不是。我在也不要呆在这里了。” 爸爸说,“住口!” 我说,“你霸占了我的家,我要我的妈妈。我不要你,我要我的妈妈….你们都是一伙的….你是个坏女人…” “啪”,我的脸上被重重的打了一下。 我记得很清楚,那是爸爸第一次打我。我哭了,我只觉得满肚子的苦水,眼睛一酸,止不住的开始流泪。我推开了他们,朝着门口奔出去。 我撞倒了门口的她。 那天下着磅礴大雨。我大声的哭,没有人关心我。至今我都不明白为什么我会生那么大的气。我甚至不知道我为什么会生气。 我只是一个人漫无目的的跑着,哭着,那时候我十三岁,还是一个少不经事的小女孩。 我不知道我怎么回家的。第二天醒来后,头疼的厉害。我迷迷糊糊的听着家里七嘴八舌的说话。 继母说,“小野,你姐姐生病了,你要好好照顾她,今天学校就不要去了,爸爸已经给老师请假了” 她问,“姐姐是因为不喜欢我才生病的么?” 继母说,“怎么会,姐姐是喜欢小野的,我们是一家人,姐姐怎么会不喜欢小野呢。” 她长舒一口气说,“我还以为姐姐不喜欢我呢。” 然后,她便说,“那我去给姐姐送早饭”。 说完,便咯噔咯噔的跑去厨房了。我连忙闭上眼睛假装还在睡觉。她轻轻的推开门,我用眼睛偷偷的敲她。却看见她轻轻的把早饭放在床头,拿出一直笔在纸上写些什么东西。铅笔轻轻的摩擦着纸张。 等她出去的时候,我偷偷的瞅一眼。 她在纸上用幼稚到极点的笔画扭扭弯弯的画着一幅画: 两个小人手牵着手。 底下还有一行小字,“姐姐,你要快点好起来,妈妈她不是坏女人”。 那一刻,我突然泪流满面。
重置
A 我遇见过一个男人,是在我的生日晚会上。我不知道他是谁,邀请名单里并没有他。我以为是爱丽丝或是肖恩的朋友。他拿着一杯红酒走到我的面前,我朝他礼貌的微笑,他见面的第一句话是:“有没有可能,时空撕裂后,未来和过去重新汇聚,就像是两条逆行的河流”。 他的话莫名奇怪,当时我无法理解他的含义。我愣了片刻。他似乎看出来我的迟疑,把酒杯递给我,“很高兴再次遇见你”。 我接过了他递给我的酒杯,他是个很有魅力的男人。实际上我第一眼见到他就爱上了他。 我喜欢他淡蓝色的眼睛,像是一个黑洞,要把人吸进去一样。 晚会结束后,他并没有说再见,就消失了。是的,消失了,直到现在我都没有见过他。实际上,当我向我的朋友们说起他,我尝试向他们描述他的容貌和淡蓝色的眼瞳,他们似乎谁都想不起这事情了。我最好的朋友爱丽丝对我说,“亲爱的,我们压根就没有见过他。” 那天以后,我很长时间都陷入一种虚无中,我觉得周遭是空荡荡的。我开始吸食大麻,几乎每天都跟不同的男人发生性关系。我知道现在的一切正在毁灭我,我只能眼睁睁的望着它发生,就像是我从来都不存在一样。 B 庭审下午开始。我还有两个小时的时间做准备。首先我召集小组进行短暂的内容梳理,就下午关于美亚的无罪辩护,所有的人都一筹莫愁,事情似乎陷入死局: 尸体是昨天晚上发现的,男人的眼睛被一把剪刀刺透了,致命伤。房间内发现死者的精液,在洗手间发现了少量未冲掉的海洛因。剪刀上的指纹跟美亚的指纹吻合。警方的通告是,昨天晚上23:27分左右,嫌疑人美亚趁着受害人熟睡之际,用剪刀杀死了他。 美亚打电话报了警,但辩称人不是自己杀的。 几个小时前我在监狱的电话里问美亚: “你几点去酒店的?”。 ”晚上11左右“,她似乎很冷静。 我又问她,”之后发生了什么?“。 她说,”我洗完澡,就躺在床上,接着他进来,我们就开始做爱。没有说一句话“。 ”几点结束的“。 ”我记不太清楚了“,她说,”不过那时候,月亮非常圆,我猜测应该在12点“。 ”之后你们还做了什么“,我继续问。 ”没有,我一直在看月亮,我喜欢那个晚上的月亮。他似乎还想要,但是我已经没有了性欲,我拿出了海洛因,问他要不要试试,他拒绝了。“ ”他开始跟我说话,说我是这个世界上他见过最不可思议的女人“。 “他自顾自的说话,但是我完全没有在听,我的全部注意都在月亮上,那个晚上的月亮真的很美” “最后,你有没有吸食海洛因?”,我问她。 “有”。她说道,“那种感觉真是无比的奇妙,就像是我第一个见到他的那个晚上” “他?他是谁?” “是一个男人”,美亚对我说,“一个我一生只见过一次的男人” C 靠近海边的时候,我想象着我是海洋的一部分,这里孕育了全部的生命, 是我们共同的起点。 我现在面朝它,思考一个哲学问题。 这个问题很奇妙,假设你自己被一个神秘的科学家把大脑取下来放在一个容器里,并且用计算机模拟输入情感,让你以为你正在看见大海,正在聆听他,正在呼吸它的味道,而这一切都不存在。你如何证明不是在这样的幻觉中呢?绝不会有这样无聊的科学家。我安慰自己,没有人能创造大海。 最后一个任务即将完成,我可以见到我的妻子跟我九岁的女儿,我好想他们。但有时候我醒来后发现自己的身边是空荡荡的,我总是怀疑他们是不存在的。但每到这个时候,我就会给她们打电话,这似乎是一个确认,但我知道这是因为爱。 我打好领带,擦亮皮鞋,对着镜子,抹上发油,然后走到3309房间去。我轻轻的拿出事先拷贝好的房卡,打开了门。 但我还是晚了一步。他已经死了。 房间里有一个女人,她的手里拿着一把剪刀,但是已经昏迷了。令我疑惑的是,窗子是打开的,月亮正好投射到她的脸上,我的直觉告诉我,她不是一个妓女。但是文件上指示,目标将在今晚与一个妓女寻欢作乐。 我检查了尸体,确认他已经死亡后,便要离开。忽然她开口说话了。 只听见她闭着眼睛,似乎在做梦,口里喃喃自语:“……撕裂后,未来和过去重新汇聚,就像是两条逆行的河流” D 乌鸦把电视台的人训了一顿,台长已经呈上辞职报告,但事情已经失去控制,民众在街上游行。总统的死讯在一天之内传遍了。我走进新闻控制台的时候,已经是下午三点了。我问乌鸦,“现在的情况如何了?” 乌鸦说,“总统的死亡视频已经在网上被公开了,但是我们的技术组仍旧无法检测到上传视频者的真实IP。” “具体什么情况”,我问坐在电脑旁的哪个技术负责人。 “我们已经获取了原视频进行解码,但并没有发现什么异常,对方劫持了根路由,全球的IP都被他控制,似乎要进行某种渗透…..”。 “等等“,我打断了他,“有没有在沙盒里面进行隔离”。 他还未回答我,整个新闻控制室的画面变了。接着,一则向全世界的宣言在国家中央新闻控制中枢发送了出去。 “释放美亚,她是无辜的”。 我意识到,视频只是一个诱饵,他的目标是控制全世界的电脑。当尝试解码或者播放视频的时候,病毒将自动复制自身并迅速接管系统的控制权。 E 三个小时前,我亲吻了她,我的妻子,她看上去那么美。我舍不得离开她哪怕一分钟。 “亲爱的,你是我一生最好的礼物”。 她搂着我的脖子,报以同样的拥吻。 我问她为什么当初选择了我。 她说是因为命中注定。 我不相信命运,但是感谢这次的相遇。我们马上会有自己的孩子。她将是一个可爱的小女孩,一直长大到九岁。世界无时无刻发生着巨大的变化,总统被神秘女人刺杀,核电站爆炸,这些巨大的变故在影响着周围的一切,都没有你在我的身边重要。 我抱着她,听着她的呼吸,触摸这她的肌肤。三小时后,她已经睡觉了,我亲吻了她。在电脑上快速的输入:RESET。 换上礼服,走进那间房子,晚会刚刚开始,我拿起一只酒杯,走近一个女人,她的名字叫美亚,我将对她说,“有没有可能,时空撕裂后,未来和过去重新汇聚,就像是两条逆行的河流”。她将对发生的一切都茫然不知所措。但是我知道,三个小时前,我将拥有她。
撕裂
我躺在房间 灰尘像是老朋友一样 在我的身旁 飘荡 记忆呀 是一个遥不可及的地方 你去了哪里 会不会也丢掉了回来的方向
安妮的夏日
晴朗的一天。 安妮从睡梦中醒来,伸了一个懒腰。 “又到星期天了”,她走进洗手间,看见自己蓬头垢面的样子,“说的还真是没错呢”,她不知道想到了什么,嘴里自言自语的说了起来。 她简单洗漱完毕,就开始煎蛋。 “安妮,又是新的一天,今天也要加油!”,她在厨房一边做早饭,一边儿哼着自己编的不知名调子。 很快,厨房里热气腾腾,一会儿香味便挤满了整间屋子,像是一群热情的朋友。安妮会将厨房内的碟子筷子都起一个好听的名字,比如把一双红色的筷子叫“不听话”,称呼垃圾篓叫“淘气鬼”,把一只从日本海淘回来的碟子叫“没精打采”,她总是乐此不疲,并且拥有惊人的记忆力。她从没用叫错这些家伙的名字。 有时候,她会在厨房里放披头士的音乐。 当然,这是她的小小天地,没有人会说她。 但是,她希望有个人说说她。告诉她,音乐不要开大声。 信件送到她手中的时候,已经是下午了。那封信依旧没有署名,字迹很整齐。那上面写着短短的几行字: 安妮小姐,又是一个夏日,你要勇敢的走出去,一个不愿意告诉你姓名的陌生人。 安妮噗嗤一声笑了,因为她已经猜到这封信是出自谁的手笔。她穿上了裙子,先固定好假肢,然后推开了门跑了过去……
下楼梯的女人
她打开冰箱发现里面是最后一盒已开封的牛奶,除此之外,空荡荡的,什么都没了。 她拿起那盒牛奶,插上吸管用力吮吸了一口,便随手放在茶几上。然后开始用一条湿毛巾搽拭地板。她嘴里哼着一首很轻的旋律,但却听不清歌词是什么。她一边哼着,一边跪在酒红色的地板上,不断的擦拭。地板本来已经很干净,她的脸在地板上映出模糊而稍微扭曲的样子。 但她的脸很好看,很耐看,她有一张精致的瓜子脸,眼睛很大,皮肤却不是很白。她的脖子上带着一条晶莹剔透的珍珠项链。项链和地板接触到的时候,发出仅有的摩擦声。 她把地板擦了两遍,第二遍用热水,细心的擦拭,就像是在擦拭一个男人的身体,从他的脸上,耳朵上,胸口,大腿,脚底,慢慢的耐心的一点点的擦拭干净。 然后她站起身子,捶了捶腰,顺手拿起那盒喝了一半的牛奶,一口都喝干净了。随手丢在垃圾篓里面,打开了电视机和收音机,接着她又打开了全部的电器,夏天用的小电风扇,电动牙刷….最后把空调调整到17度。房子里各种声音一齐响起来。 她走进浴室,脱掉上衣,解下胸针,又脱掉裤子,赤身的站在浴头下,她仔细的看着对面镜子里自己的身体,开始抚摸自己的乳房,接着开始呻吟,等到了高潮后,她打开浴头。洗完澡后,并没有关掉浴头,她赤裸着身体走到衣柜上,挑了一件淡紫色的晚礼服穿上,又回到浴室,涂抹好口红,然后对着镜子笑了一笑。 接着她在电视机旁的靠左第三个抽屉里取出一把蓝色的钥匙,之后走出门,在大楼外的车库旁边的一个暗门里面,她拿出钥匙,打开门,摸到一个开关,打开了一盏灯。 她进入几步,面前有一个木制的楼梯,她伸出了脚,踏了下去。她踩在第一只木板上。楼梯发出吱呀的声音,她忽然回头,只有一盏普通的日光灯在那里。她接着往下走,走到了第二阶,脚下传来透骨的冰冷,她打了一个寒颤。继续往下走,在第三阶上,忽然觉得难以抑制的悲伤,她蹲在那里很久,抱着头,不停的流泪,却不发出半点声音。她继续往下走,在脚踩到第四阶楼梯的时候,立即缩了回来,接着她脸上浮现出难以抑制的兴奋,就像是第一次性交的那个夜晚。她试了几次,终于踩了下去。那盏日光灯忽然灭了,她看不见她走过的楼梯,眼睛里充满了迷惘和恐惧,只有待在原地,开始身体抽搐,接着她用手摸到了第五阶,她先用手触摸,等到了确认位置后,才把脚放在刚才手触及到的位置。但这已经是最后的一阶。 她站起身子,打开了地下室的灯。眼前映出了一个破旧的景象:有一些家具,碗碟,有小孩子玩的木制木马,最后,她的脸部快速抽搐,迅速倒在地上,嘴里流出了白色的液体,那些液体最终流到了她的视线的尽头-一具男人的尸体旁。
小鸟的故事
鸟爸爸和鸟妈妈住在一棵老槐树上,它们生了一个鸟宝宝。一家人很幸福。等它们的孩子长大了,鸟爸爸开始教孩子飞翔的本领, “飞去对面的那片树林,那里的虫子比较多”, “可是我想去那边的山崖看看”,小鸟歪着脑袋望着鸟爸爸。 “不行!那里太危险了,…况且,那里连只像样的虫子也没有” “可….” “再有可是,今晚没虫子吃!” “因为那里虫子多”,小鸟从小到大都听爸爸这个道理,它已经不假思索地,当别人问题它为什么学飞翔的时候,这句话就脱口而出了。 可是它知道,它想要的不是这样的生活。有时候,它会带着奇怪的问题,“我们为什么不去飞去其他地方看看呢?”,这时候总有一群鸟在嘲笑它, “因为你只是一只鸟”,大家笑作一团。 “难道大家都不思考自己么?”,它心里暗想,却也不会说给别的鸟听了。 “反正是一只鸟,有虫子就够了,想那么多干嘛”,这是一只百灵鸟给他说的,后来她成了他的妻子。 一个夏天,和它一起出生的小鸟们都毕业了,它们开始了人生的第一次飞翔。 小鸟们都飞向那片树林,开始捕捉虫子,当它们捉到第一只虫子的时候,欣喜异常,把虫子带回家作为孝敬自己爸妈的礼物。它们的爸妈将煽动翅膀,像邻居炫耀。有些小鸟没有捉到虫子,会被爸妈一顿奚落。它望着那边的山崖,迈出最后一步前却失去了全部的勇气。终于还是跟大多数鸟儿做的那样,嘴里叼者虫子朝家的方向飞去。 这样的日子过了许多年,鸟爸爸和鸟妈妈都老了,小鸟也长大了,娶了那只会唱歌的鸟。它们开始筑巢繁衍。不久后,它们生了一个鸟宝宝。 小鸟的儿子问它,“爸爸,我可以飞去那边的山崖么?”。 小鸟回答,“不行!那里太…..” , 忽然想起什么事情。 它顿了顿,“…..好吧,也许,等你长大些,你就去哪里看看吧…..” 它看着自己的儿子露出了兴奋的表情,心想:“总不能让你变得像我一样,至少为了自己,用力去飞吧!”。 许多年过去了,从来没有谁离开那棵老槐树,除了它的儿子。 而多年后,碧海蓝天,呼啸而过的他,总是对自己的父亲心存感激。
编译器随想
一种图灵完备的编程语言,本身就包涵了实现自举的必要条件。 无论是从哪一种层次,从计算机科学、物理学还是从哲学,这本身就代表了一种伟大的思想:当事物由简单变得复杂的过程中,基础科学总能提供一点点难以影响质变的改变,然后借助这点改变更新自身,不断的迭代进化。 这个最简单和著名的例子就是 先有鸡蛋还是先有鸡。曾今,这似乎是一个难题。 这个问题曾经带来哲学上的偏见,跟著名的一个问题是,人类来自哪里?如果答案是来自另一个人的子宫,那么,另一个人从哪里来…..于此循环,直到这个问题在第一个人类终止。现在我们知道,人类的诞生并非必需依赖子宫,借助实验室也可以做到。但必需获得受精卵和完整的生存环境。 编译器也是一样,如果一个语言实现来自举(一个语言的编译器,是用它自身写的),编译器也是一个程序,那么它本身是如何被编译的呢? 问题有趣的地方在于,我们都被一种看似悖论的东西蒙蔽了。编译器的原理很简单: 假如一种叫x的语言要实现自举 x首先实现一个v1的简单版本(用汇编或c来编译) v1支持IO.可以读取x的源代码,用v1编译x的源代码,实现v2 v2也有能力编译x ,此时,v2编译器就是用x编写的。可以编译自身源代码 简单来说,编译器会将文本转化成一个二进制描述。这个描述本身包含了读取文本并生成二进制的能力。一旦它存在,就不需要在使用之前的编译器了。它自身就可以描述自己并不断进化。 注意!汇编是一种低级的编程语言,仍旧需要被解释成二进制。这个过程借助来指令集(也就是一个map) 这个问题对长生也有很多启发,我们有把身体的构造全部改为硅而非碳为基础的科学基础。我们可以造出一些像我们一样能造出一些人的人…..或者制造出一些上帝…… 所以,回到哲学上,我们现在处于那一个阶段?我们创造了自己,根本就没有上帝,我们就是上帝。 阿门~
时间和宇宙
在处于膨胀相的宇宙内,时间产生的奇怪的性质是:未来是部分可控的,但过去无法被改变。这一点是非常惊人和吸引人的。过去的发生永远无法被修改,但仍旧可以通过对将来的干涉导致一个确定的过去。未来发生的一切都某个概率云上,处于可能性和不确定性中。过去存在的意义出了人类对记忆的情感需求,还导致一个经验积累-即过去发生的事情产生权重以激励未来的可能性坍塌为确定事件。 这些权重从性别、生理结构、记忆、知识经验、情感经历….多个维度激励,正如神经元细胞接受各种刺激用以产生一次化学递质那样,作用于未知事件,从而导致单个事件发生。同样,单个事件仍旧持续更新下一个事件,产生源源不断的事件序列。这些序列按照激励的方向不断的变化,产生跟宇宙膨胀方向相同的时间,正好与心理上的时间方向相同。 事件发生的周围产生了上下文,在一个上下文里面,单个事件将产生“意义”。多个连续的上下文构成了历史。多个连续的历史构成了文明。 对于事件序列表现出的“时间感”,像是时间箭头方向不断变化的单个事件,必须借助因果关系才能被理解。低等的生命并不足以进化出理解负责因果律的智能。但在接近于”时间“起点的地方,因果关系变得越来越难以理解,以至于在”奇点“那里,并不存在因果关系。那里只有单个确定的事件,也就是存在本身,没有原因。 所以,对于讨论”奇点“(一般认为是宇宙大爆炸的那个点)之前的宇宙,是没有意义的。 至少有两种方式回到过去: 第一种借助爱因斯坦描述的相对论,利用超光速的飞船可以实现时空旅行。 还有一种方式,是重建过去的上下文(或者历史),这意味着,你处于跟过去一模一样的时空内,但随着产生越来越多的历史,构建这样一个上下文是无比困难的。但可以作为一种艺术,如电影其实就是构建了剧情的上下文,让人产生参与感。如果这种艺术形式进化成虚拟现实或者沉浸式体验,那么,回到过去和未来都是可能的。至少你获得了跟真正回到过去完全一样的精神体验。
决定性问题的一个猜想
计算机能否在有限步数内,通过一系列是非性的问题确定人类的一个无歧义的陈述的解空间? 假设,人类大脑里面有一个陈述句的想法,这个想法是:今天我要去海边。 计算机能够通过一些列的是非性问题,尽可能的获取道人类大脑的真实想法? 注意:人类的想法不具有歧义,可以通过是或非来确定。 在上面的例子中:“我要去海边”,是人类大脑的一个想法。计算机如何通过一些列的问题来确定人类的想法? 确定参与者 确定动作 确定目的 计算机不能提问:参与者是谁? 这样的问题,而只能提问: “参与者有2人?” 注意有些问题依赖某些确定,如果不清楚参与者的数量,对于参与者的单个描述的确定就是毫无意义的。例如直接提问:“参与者是男是女?” ????
有一天
那时候虽然在分叉路口徘徊,未来的可能性却是无限的。渐渐的,发生的事情变得缓慢了,一切都可以被预测。 多有不甘,心中常常抱着不切实际的幻想,却真的没有打算做点什么? 总是带着许多借口生活,在安逸中忘掉了那个曾遍体鳞伤也好追求的东西。把一切归于长大和成熟。 成年后的你,却仍是不堪一击。 什么时候变的安分了,什么时候规规矩矩,什么时候开始担心这个。多年后的你,是否会懊恼,面对镜子和儿女,是否也会羞愧地流下眼泪来。 经历了一点事情,有浪漫的,有狼狈的,有的痛彻心扉,有的平静如水。 遇见几个人,有人令我开心,有人使我寸步难行。 见过几处风景,有些惊险万分,有些美丽宜人 。 不同的地点,不同的时间,相似的剧本。 不论什么样的寂静,在沉默的人群里,我总能发现你的。 我在公交上、地铁里、天桥上,亦或者,在凌晨5点27分的兰州,我总能发现你。 你像是一块磁体,吸引着我。 我努力地。靠近你。你带着未来的信息,一点儿就令我痴迷。你跟我分享了身体,但灵魂却彼此独立。 你亲口告诉我,希望是这个世界上最美的东西,比生命,比时间,甚至比死亡还要美。 你用一长串难解的字符表证明了未来发生的一切都是可能性中。有时候,我觉得你就是一个神秘的吉普赛人。在我需要你的时候,在我失控的时候,你出现在我的面前,把身体的控制权从人们的眼神和语言里夺了过来,交给我。 一切都是那么不可思议,人们都不会相信,但你知道,我不会。 我肯定你,信任你。 我信任你控制我的骨骼、大脑、声音和午休。 在无限复杂的难题中,你总能迅速找到哪个最优解。 有时候,我会以为你就是我。我的朋友也这样以为。但我知道,我仍旧是哪个躲在你身后的孩子。 我希望有一天我成为你。
我想去的地方
我想找个没人的地方去,至少是没人认识我的地方。 那里将有一条河,我长久的注视和沉默,人们对我的态度有鲜明的改变,他们将不能猜到我在想什么,而我时而睡眠,时而醒来。 假设父亲有一只船,而母亲又恰好不在我身边,我将偷偷的和父亲交谈,告诉他我想去哪里。 身边的人都不会劝我,因为他们不知道父亲将会把他年轻时的地图给我。 我会偷偷的藏好,这是和父亲的秘密,决不能让母亲知道,以她的性格,肯定会阻拦我。但即使她将会发现,我也已经离开。 我将会趁着夜幕穿越峡谷,徒步走过山脉,在早晨的森林里长久的注视僧侣的禅坐,风会把景色变得摇晃,世界动荡不安。 那时,我将会遇到一个女人,向她表达我的爱慕,把我的灵魂交给她,但身体属于河流。 她将问我一些奇怪的问题,我总不能回答出来,她终会离我而去。我会挽留,祈求,悲伤,但总不会迷失在寻找她的长夜里。 我又开始启程,去另一个地方。我将忘记那个地方的名字,但总能跟随父亲的航线找到它。 它将会微笑,但沉默不语。 后来,我会遇见暴风,船只击碎了,木板负担着我身体的重量漂浮在永不停歇的流动中。她发现并拯救了我,给予我帮助和安慰。我们相互诉说自己的故事,谈论彼此的经历。 或是,即将被淹没的陆地皱褶成山脉之前,人们将发现我们的身体,但总不能在河流中辨认。 我想去的地方太遥远,孑然一人独行,却总不会孤单。夕阳将恒久的把我的影子延伸至河畔,而晨钟时而警醒我,并非由于晌午的餐饮。 我将离开身边的亲人,离开近在咫尺。而远方依然遥不可及。 我的朋友都将不清楚我的去向,他们以为我消失,死亡,但总不能知道我要去的地方。 我将背上行囊,沿着绿荫拥簇的小河道一直行走,至河流波涛汹涌的时候,我会发现父亲的船只。 天将下起大雷雨,这时候,妈妈会焦急的望着外面,想着我早该回家的,而父亲将不会告诉她我已经离开。 我将遇见一个诗人。 他教会我把舵,但总不言语。 有天我将问他,他总不回应。 我将会和他分享我的梦。聊至晨,至黄昏,至午夜,我又一个人离开。 等到我终将没有力气再次离开的时候,我将会在一个适当的时间死去。森林即将覆盖的山地塌陷成岩之前,人们即将发现我的身体,但总不能在煤层中辨认。
聊聊随机
经常遇到随机数的问题,大多数的随机目的是产生一个不太可能被预测的结果,这个结果一般具有唯一性。譬如安全的文件名之类的,生成密码重置的token。 计算产生随机 那么,如何来产生一个随机数呢?以PHP为例,足够简单的方式使用如下的函数: $my_rand=rand(1,1000000) 这个随机函数是c原生支持的,在使用rand的函数的时候,php将自动调用srand来设置随机种子。 这个的意思是:所谓的随机结果,只是将这个seed传递给一个hash函数,返回一个“看上去足够随机”的值。这意味着,如果种子能被猜测,那么,结果将被预测。 下面是php常见的三种生成随机数的方法: 线行同余方法 如:lcg_value 梅森旋转算法 如 mt_rand C语言支持的函数 如rand 从物理世界来获取随机 在linux内,维护着一个/dev/random(/dev/urandom), 你可以获得一个随机数 od -An -N2 -i /dev/random 这个random是linux内核维护的,它从周围环境获取随机因子产生一个足够大的熵池。熵代表着系统的混乱程度,越是混乱的系统,它的随机性更大。/dev/random是怎么做的呢? 它会收集很多毫无理由的数据,譬如在一次开机后,鼠标左键点击次数等,这些环境噪音是不可预测的(至少不能被人预测)。这是另一种产生的随机数的办法。这个随机数一般叫真随机数。它是完全不能被预测的(?). 要产生真实的随机数,目前必须借助物理世界的噪音。
透镜
一直以来的困境 透镜 想象金鱼在鱼缸里,透过曲面观测到一个沿曲线运动的小球。这个小球,在外部是沿着直线运动的,但是由于透镜导致,金鱼观察到的小球的运动是曲线的。此时,金鱼利用现有的观测得出一整套完整的物理学体系,并且重新定义了在“该透镜”下的自然定律。现在继续想象,我们的世界处于一个[更大的透镜]下,透过这个[更大的透镜]观测到了万有引力和双缝干涉实验,那么,我们能由此说,这就是真实么? 无穷 如果一种存在是无穷无尽并且永不重复,那么它能遍历所有的数学可能么? 这个问题的数学表述是,是否存在一个大小介于1和0之前的实数(0<ƒ<1),使得它的解空间成为大于1的实数集合的子集? 无穷并不能遍历所有的可能,也许只在某个解空间区域内波动? 自由意志 自由意志存在么? 你是否能真的控制自己的身体。如果存在,那么在肉体死亡后,自由意志可以继续存在? 碳基生命和硅基生命 是否只有碳基生命具有智能? 逻辑的深渊 是否存在某个真理依赖的逻辑推理出的经验是错误的。或者,完全的谬论推理出正确的经验。也就是,在“草地上的奶牛”的问题。
让他继续做梦就好
让他继续做梦就好,千万别叫醒他。 一旦醒来,一切都会变样的。当他发现,他自己是被“囚禁”。在他之外的世界,被一片他所不能理解的幸福原野包围,他将再也不能像是这样子生活了。他会厌恶循规蹈矩的工作,像是负重而行的驴子,他发现周围的其他人都处于一种“知足”之中,他却再也无法回到他们的生活中去了。他看着这些负重前行的驴子,因为短暂的休息时间而兴奋、举行晚宴,因为得到另一头驴的认同而狂喜。它们对一切几乎一无所知,用仅有的古老科学发现证明它们处于最好的时代:充沛的阳光和水源,丰富的交配群体,无限多的时光和发现波粒二象性。 他将再也无法走进它们的生活。他只能看着它们,他一定觉得自己要疯了,他开始怀疑存在的意义,对任何事任何人都持有戒心,并且企图证明世界在一片巨大的精神幻觉中,就像是缸中之脑描述的那样。 “就像是让一头驴保持了它作为人类时的情感记忆,它将再也无法忍受漫长的疲倦和负重前行” 他有一份清闲的工作,拿着每个月不少于13k的薪水,觉得自己很满足,娶了一个丰满的女人当媳妇。每个月的房贷有6k,但他足以应付。他每天都去上班,不论刮风下雨。 他已经很少提出自己的意见了,所有的工作都是计划好的,谁去完成都一样。他根本不用思考,只需要照着上级的指示,一一的完成就好了就像是托着负重前行的驴子。 他之前会思考为什么要托着行李,有一天他偷偷的打开背负了许多年的包裹:“100w、结婚、孩子、房子、车、1000w….”,他翻来翻去想找到一个他想要,他在十四岁那年一直想要的东西,一只彩色的铅笔和一张披头士的专辑,然后并没有。他不知道这些东西为什么要他背着,他不敢问别人这个问题,有天晚上,他偷偷的看了看旁边人的包,发现里面的东西跟他差不多。他终于安心了,也立即得到了答案:“这是我们的基本,大家都在背负着它”。 这样想着,让他终于可以心安理得的上路了。他习惯了天气全球变暖,大家都一样。并且他比很多人都幸福,他的妻子很爱他,他有一个漂亮的女儿。 他带着族群的优越感,看着那些蚂蚁大象,觉得自己是幸福的。当然,他不醒来,这些幸福就都是真实的。
我脑袋里的怪东西
“……像一颗橙子”。 “不对,老师”,我举手,说,“地球并不是球形的”。 同学们一脸惊愕的表情看着我,老师也愣住,把书放在桌子上,“那么,你来说说,我们所生存的地球是什么样的?”。 “至少它不是球形的”,我如此回答,“虽然承认地球是圆的可以解释很多现象,但真相往往不是看见的那样”。 “你是在怀疑唯物主义?”,老师似乎有点生气,他快步走到我的面前,面露不悦,“…..那么,你信上帝?” “在我们承认存在起点的那一刻,所有的科学已经都走向错误的方向了”,我说,“牛顿错了,亚里士多德也错了,所有你们承认真理的东西,都是错的”。 同学们哄然大笑,他们心里一定在想,这个白痴又在胡说八道了。 老师也觉得好笑,但为了维护秩序,还是努力的维持一个严肃的表情,说,“也就是说,你不承认现代物理学?” “从来都只有数学”,我冷静的回答他。 “你所看见的,这个世界是什么?”,他问我。 “无休止的计算和排列组合”,我对他说,“就像是电子在荧光屏上打出了图像,我们的世界只是一个虚幻的影子”。 “你是说,我们的存在只是一种组合”。 “对”,我认真的说,“原子组合成物质,物质构成你,我和整个世界”。 “现在,闭上眼睛,心里默数三声”,老师说,我如此照办。 “然后,慢慢睁开眼睛”,我听到老师的呼吸声,同学们的声音,渐渐散去。像是碎片一样。 呼吸的声音。 味道。 我睁开眼,看见医生站在我的面前。 “你看见了什么?”,他问我。 “老师,同学,教室和墙上的画…..”。 “现在呢?” “看到了你,机器,计算机和2017年5月27日下午3点12分的秒针”。 “你不会相信视觉的,对吧”,医生说,“闭上眼睛,你凭什么知道我就是真实的呢?” “我能感觉到你的呼吸和声音…..”。 我猛地睁开眼。 医生拿着笔边记录什么边对我说,“…你的病情已经得到抑制,暂时隔离观察一段时间,学校的事情,暂时不要想了”。 “现在是非典的特殊时期,学校应该暂时休课了,你的功课不会耽搁的”。 ”等等“,医生在走之前,我叫住他。 ”现在是什么时间?“ ”下午3点11分“。他回答我。 ”是2017年么?“,我问。 ”嗯?“
告白
我不知道该怎么向你开口,请原谅我,我知道你喜欢别人,所以,请原谅我冒昧的来信。不过,你也许不是这封信的接收者,如果你不下心捡到这封信,请停止阅读,因为,它里面只是纪录了一个男孩子朴素无聊的情感,请不要让它浪费你的时间。 海岛,让我这样称呼你好了。在三年前,我跟你相遇,在同一所高中,初次见面的记忆是在图书馆,那时,我们还不知道彼此的姓名。因为偶然看见对方手里拿着跟自己相同书名的书,就自然的产生了一种奇妙的感觉。我记得那时你说话的样子。 我们几乎隔三差五就会在图书馆偶遇,那些看似漫不经意的相逢,是我珍贵的记忆。我会在星期三,星期四和星期六准时的经过你的面前,分别在下午三点,下午三点十分或者下午四点二十七。我以很多种理由路过你,巧遇你,在你困了,或者无聊的时候,说一个笑话,或者扮出滑稽的样子。 你当然会笑,但不是每次。 你偶然会委屈,原因我却不知道。我猜你可能是考试遇到问题,这有什么好伤心的呢?我在想,你是不是跟朋友吵架了?莫非是跟家人的关系不好?这些思考总令我是失眠和焦虑。 有几次我差点没忍住想走过去,走到你身边,拍拍你的肩旁,说些什么甜蜜的话,鼓舞你,使你开心起来。 但我最终还是没有过去。 几天后,你的生活发生了巨大的变化,一种力量干涉了你,你不在去图书馆,甚至不再学校,慢慢的谣言传出来。 你的继父被杀害,警察来的时候,凶手已经走了,人群中传出来你的过去,你不幸的身世和你的经历。 在你离开后的很长一段时间里,我都在想,这样的结果也许是最好的。 你不会知道,是我杀死了那个收养你的男人。 那时候,儿时的记忆瞬间涌入我的大脑,我想起你婴儿般的眼睛眨呀眨,趴在我的肩旁上问我: “哥哥,爸爸什么时候回来呀?”。 那是走向儿童福利院的上坡路。 我想,让你知道我爱你。
解释
早上,大概10点多的时候,我起床了,难得的晴天,太阳很温暖,我出了门,开车前往咖啡店。咖啡店距离我住的地方不是很远,十五分钟,我似乎能预测到在10点45分我准时从写着“难忘天堂“的横幅经过,穿着一条很老的街区-这条街还没有被翻新,可能是遗忘了吧。 11:01分我准时进入咖啡店,开始准备豆子,咖啡店一直是我一个人在经营,盈余是有的,但我没有选择在雇佣一个人。也许是习惯了吧,你知道的,要轻易改变一个人的习惯是很难的事情。尤其是像我这种性子倔强的女人。 我把机器预热——就是给它通电,然后把豆子倒在里面,按下哪个绿色的按钮,就完成了。第一杯咖啡从来都是我喝的。我每一次都会尝试用不同的比例来调配,所以每天都是不同的味道。噢,对了,你肯定尝不出来,还以为这肯定是一种味道呢?其实呢,今天跟任何一天的味道都是不一样的。 至于为什么还保留着这种老唱片,这纯粹是我的个人爱好了。 咖啡店里面的客人到星期五还是很多的,大都是男人,偶而有女性。他们喜欢各种的口味,不过在我这里,他们都能得到满足。 我喜欢看星期四下午三点一刻的阳光透过窗子折射出的五光十色,那种玻璃是我从莫斯比亚高价采购来的,可以将太阳光分解成单色。我喜欢单纯的紫色。所以,这些桌子、咖啡杯都是紫色的。 他们,我的意思是,那些喝咖啡的人,都是不怎么说话的,有时候偶而咳嗽,但大多数时候都是沉默不语的。这件咖啡厅的布局可是我想了好几个晚上想出来的。很奇怪,它们就像是躺在我大脑里的事物,一下子出现来。像是魔法一样。偶尔呢,我会想到新的主意。咯,那边靠窗位置的壁画就是我昨天刚换上的,还有那盆被移植到这里的向日葵,也是最新才有的主意。 房子是我的,我不用负担租金,有的赚就赚,没客人也饿不死我。我不是很喜欢在星期二穿着裙子的,因为这一天的傍晚,我跟人约好爬山。说实话呢,我不喜欢爬山,我只是喜欢在山顶被风吹的感觉。天空一直晴朗,从来没有乌云,我渴望下一场大雨。 我知道,我知道的,这是不可能的。 我是不赞成取消婚姻制的。为什么要抛弃这些传统呢,老东西不是很好吗?反正我是这样想的,但是法令已经出了,谁还能说什么呢? 海山这里的无政府试点的评价? 只要保证交易的公平,我就心满意足了。你知道的,我做我自己的事情,权利被机器接管还是被人接管,有什么关系呢?最近几年,这里很平静,我的意思是,没有任何失误,没有犯罪,没有人哭泣,没有奔跑,大家都安静的走。 我的性评测? 哈哈,这是一个多么难为情的问题。 不过,我愿意告诉你,我每周有两次性体验,这不是很高的。我一般是选择在周一和周四的晚上。我非常享受这种过程,但你知道,每个人的时间都是被评估后精确计算的,我没办法把每一次的高潮时间延长。在政府被机器接管以前呢,我有一个男朋友的,不过他死了,他站错了队伍。 我当然不后悔杀死他,你知道,在海山的永久居住权不是那么容易获得的,而且我还讨厌军队。 是啊,时间差不多了,还有43秒的时间,也许我应该再请你喝一杯咖啡……
为什么计算机越来越复杂
从编程语言的进化路线来看,似乎能发现一些有趣的事情。计算机通过0和1将数字信息转化为电信号控制硬件的运作,所有的一切都建立在这个基础上。计算机最擅长的是重复,而且仅仅只有两种状态间重复。这些简单的规则构成了复杂无比的系统。我也抱着同样的理由深信这个世界的底层是有一系列简单的规则构成的。然而,你无法通过直接操作0和1来控制计算机,虽然这是一种可能性,但现实是,没有人愿意这样做。在计算机迅速发展的历程中,跟计算机交流的语言越来越多,汇编是对机器码(0和1)的抽象。它使用英文单词赋予语言以明确的语义。实际上,它所做的并不仅仅如此,它同样隐藏了大量的重复。用一种指令来代表一系列操作产生的结果集。这种思维在计算机的世界变成一种哲学。不久后,更复杂的需要导致理解汇编变得异常困难。更高级的语言诞生了,在这些语言中,C是一颗耀眼的明星。它的语义更加明确,规范,它隐藏了底层的许许多多细节。用C来创建超大型的软件有了可能,window和unix*是它最伟大的代表作。 C语言是一种艺术,这是一种激动人心的创造。就像是在魔法森林找到的咒语一样。这些咒语被创造出各种奇妙的东西,图形渲染,音频处理。计算机内部拥有无限中状态等待被开启。 在C语言的内部,你仍旧能发现无数对重复的隐藏,函数封装了重复的细节,宏被赋予更伟大的魔力。函数群一种有执行力的软件。软件将功能通过API暴漏出去。抽象时刻在进行,所有的东西都被包装在集装箱里,被打包成更大的集装箱。 对于人类而言最痛苦的是不断的重复(然而我们也一直在重复),在我们有限的生命里,重复是多么可怕的事情,然后对于机器来讲,重复是它们最擅长也乐此不疲的事情。我们刻意隐藏重复,用一种更加乐观的态度,用天气的不同,日历的不同,地理位置的不同来告诉自己,我们不是机器,没有重复自己。 很多更高级的语言由此诞生,它们隐藏了更多的重复(这也是它们慢的原因之一),越是高级的语言速度越慢,隐藏的细节越多,简单的逻辑背后的重复越多,这些重复将表现为磁头在扇区上的物理移动(至少目前的计算机物理架构是这样的)、一次次的内存访问、重复GC、对空间的申请、释放和锁。 为什么事情越来越复杂,为什么普通人无法理解计算机,计算机逃脱意味着什么? 我们很容易跟小孩子讲清楚1+1这样的加法规则,然后加法重复之后。 如2+3=5,他很快就能理解,因为这些法则只是简单的抽象。但变成2*3=6这个过程,你需要解释(2+2+2)或者(3+3),同一个重复被抽象之后有了多层含义,但它们都是多个正确的解。 又如2**4(代表222*2)这样的重复展开后其实是 2+2+2+2+2+2+2+2 。它的语义是:重复4次2的累积过程。要知道2这个数其实是我们定义的一个阿拉伯符号而已。 2代表着1+1这个表达式的值。所以 2+2 +2+2 +2+2+2+2 还可以继续展开变成 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1 减法也可以看做是一种累计。不过它带来的副作用是削弱。 甚至1(实际上,0-9任何一个数都是)本身也是一种抽象,这是我们的世界的基础,代表着存在本身. 计算机正是从这些很简单的规则不断的抽象,隐藏自身,和进化的。所以,越是高级的抽象就越难以描述,为此我们制造了大量的术语和符号来表达这种东西。将重复隐藏的代价就是使用命名它。 这样它就变成一个全新而陌生的东西。
从“熵”的角度看看未来
很多人都对未来抱有幻想,相信那个未知的时空有无限的资源等待挖掘,整个宇宙似乎都触手可及。几百年前的人,是怎么都想象不到现在的变化的。然而却有种种悲观的迹象表明,属于我们最好的时代已经过去,黄昏将至。如你在海滩上惬意的烤一条鱼,随着火的温度的上升,鱼发出的香味越来越浓,你却做出非常乐观的结论:不要停止火,我们就能获得越来越多的香味。 技术的变革解脱了劳动力,从农业时代到工业时代再到信息时代的变革,技术带来的越来越多的裨益。这是一个加速膨胀的过程。而加速的风险却被置若罔闻。 人们最开始用符号记录自己大脑里的奇思妙想,然后以书籍的方式共享自己的内心世界,这些故事变化成戏剧,传说和秘密。电影出现之后,这些故事又被变化成一帧一帧移动的画面,多年后,3D技术又改变了视觉,使那个虚拟的世界更加立体化。这仅仅是短短的十多年的时间。如今进化还在继续,我们似乎感觉到未来进化的方向: 2017年 智能家电领域开始流行,犯罪率上升,黑客成最受欢迎的职业,计算机课程编入小学 2017年 70%的国家和90%的企业被爆出监控个人隐私,此后每年又一至两个国家被合并或消灭 2018年 货币危机,电子货币覆盖全球60%的地区并流行 2018年 3D关键难点攻破,3D打印手机流行 2019年 多个国家联合签署【生物打印技术约束与分享文件】要求共享打印技术,在线教育普及 2020年 虚拟现实关键技术难点突破,虚拟投影普及,电池寿命提高到10年,接着迅速提升到100年,宇宙飞船多个关键项目源码开放 2021年 视网膜智能芯片被成功研发,手机厂商逐步转型,虚拟现实的部分难题如眩晕感被完美解决 2022年 增强现实技术与虚拟现实结合,全球第一家VS(Virtual Space 虚拟空间)体验馆(虚拟头盔,头戴式虚拟) 2023年 生物学有重大的进步,可以成功模拟出婴儿的痛觉和味觉,并重新定义了“对空间的感觉”。Windows开放xp部分源代码。 2023年 哲学上产生新的派系——“唯[我]主义”,这里的“我"介于肉体和思想之间 2023年 第一个基于【虚拟现实】编程的语言被发明,随机其系统内核源码开放 2023年 第一款基于linux的ROS(机器人操作系统)开源 2024年 计算机有革命性的进步,主板被制造成膜状与cpu包裹在一起(微观层次,模拟粒子) 2025年 包括热力学定律在内的诸多定律被质疑 2026年 第一台人工智能机器人被制造,支持医疗功能 2027年 智能机器人可以个人制造,移民浪潮开始,生物技术突破,可以自由操控神经递质(性感受被模拟) 2028年 第一个攻击细胞的微型计算机被发现,致死或伤超过20W人 2029年 【电子护卫】被研制成功,可植入血液中,可记录DNA 2029年 所有的商业软件必须开放源代码并检测后才可以被销售 2030年 互联网覆盖到月球,关键信号传送技术被攻破 2031年 哲学上面临重大的困境(存在主义被重新讨论),第一个虚拟人出生,智能相当于白鼠。拥有部分痛觉。痛觉可以通过软件传送到人体被感知。人类的感情羁绊开始消失,繁衍开始不在通过性。 2032年 VS成功开发出《普罗米修斯》的场景。技术变化缓慢(都去虚拟空间了) 2037年 中国模拟出纯正 武侠世界 的虚拟空间 2038年 人们第一次对”真实感“产生了怀疑,对”第一视角“的模拟有了非常大的提升。 2039年 电影完全淘汰,虚拟馆收到青睐。但仅仅有部分人有能力制造虚拟空间vMaker(类似造梦) 2044年 人类的部分器官开始退化,但智能升级。 2144年 第一个拥有完全智能的生物机器人被制造(也是第一个非受精卵发育的智能生命) 2155年 生物机器人加速进化,人类再也无法理解 2156年 生物机器人完成新的计划,修复相对论等理论 2157年 生物机器人的情感到达再也无法理解的程度(比人类体会到更巨大的悲伤和空虚等) 2158-20000 这段无法理解 进化结束,生物机器人病毒蔓延到宇宙,迅速将宇宙资源消耗转换,最后所有的能量都聚集在一个点,没错,这就是”奇点“。也就是一切的开始的地方。...
虞美人盛开的山坡
(序) 你总把每一件事情都幻想的那么完美,而世界上却有太多的无奈和缺憾。那些事,你一定还没有忘记。 阿海做好了早餐,热气腾腾的白米饭和煎蛋。香气弥漫了整个屋子里,大家都在晨睡里即将醒来。山坡上,可以看见海。海风吹来咸咸的味道,味道像极了小时候的眼泪。 “那是在你消失不见后”阿海想。 “我才开始长大的” 阿海升起了,在晨风中一直唱祝祷歌到夜晚的,红白色的旗帜。蓝色的是海洋么?那在风中翻动的,波浪一样波澜不惊的希望,你能看到么? 虞美人总是那么娇娆而现实,好像只会把她的美丽展示给第一个起床跟她打招呼的人。 而这时候,阿海总不能看见在海面上有一只也把旗帜升起的海船和一声低沉而美丽的笛音…… ( part 1) “早上好,阿空起床了?”阿海一边盛米饭,一边问。 “她还在照镜子呢,这个不勤快的丫头”胖乎乎的牧姐说。 “早上好”北斗姐进了厨房。 “北斗姐,你昨晚又是夜班么?”阿海问。 “今晚也要呢”北斗姐哈了一口气。 “要留晚饭么?”阿海添过调味说。 “麻烦你了呀”北斗说,“实习医生真是幸苦哩” 厨房里面渐渐的热闹起来,大家也都起床了,晨歌中语言渐渐有了温度。 “阿海真是细心呀” “这星期人手不多哎” “姐姐,我的袜子破了” “放在衣车那边吧”阿海边忙着盛饭,一边儿说,“你经常把袜子穿破哩……” “不是我的问题啦,是它很快就会变小”阿陆总是这样子。 “诺,这是给你的”阿海递给一碟子煎蛋。“姐姐,便当要多一点啊”阿陆手里拿着两份早餐从厨房门一本正经的出去了。 “还未够么?”阿海嘀咕着。 “阿陆,我把煎蛋给你” “好耶” “不行,北斗姐!你一定要吃”阿海插话。 “不知道你们谁是医生呢” “哇,你又放许多酱油” “这样子才好吃” “我也要” “真是的” “广小路姐,吃早饭啊” “哎” 起伏在夏天的热闹人群里,许多孩子们唱着赞美花朵和海风的歌曲。你见过这样一个地方么? 这样一个有着两片海洋的地方,同一个地方,两种不同风格的海水,一种是冰蓝色的,一种是橘红色的。 ( part 2) 轮船靠在码头的时候,太阳已经升起来了。阿俊接过爸爸船上的自行车,又解开了船锚。海水泛起了波浪,阿俊骑着自行车飞快的在货店一排排门口驶过。烟囱里高高的竖起的淡黑色在云层下忽然转了个方向,那是风来的预兆。木质的屋子间隙中,一条小路,泥泞而有趣的爬在那里一动也不动了。 那条小路连接着十字路口,油画一样的屋檐下,他穿过了水一样的灵动的路面。 …… 故事应该发生在那堆满杂物的路后,虞美人开满的山坡上。 “我出去啦” “小心走”阿海停下手中熨了一半的衣服嘱咐说,“总是一下子就消失掉……” 阿海穿好刚熨好的校服,背起书包穿过一条米兰色的小径。两根竖起的石雕安静的在小径两侧,走过石雕,就是大路了。 “阿海,要搭顺风车嘛?”带着白头巾的大叔停下三轮车说话的时候,车里下来了一个提着篮子的妇女,那是家里的钟点工川子。 “谢谢,不用了” “好吧,再见” 呼噜噜的车声一溜烟的消失了。 “想拜托你帮我晾衣服”阿海想起刚刚洗掉未干的衣服,对川子说。 “没问题,路上小心” “我走了” 山坡上的虞美人开满了一整个夏天,阿海想起这些的时候,总感觉一阵说不出的味道。火车的轰鸣声从天桥下面忽然的传出来。那时候,她总会被突如其来的引擎摩擦的声音吓哭。 阿海走过一段上坡路,就听到同学们细碎的说笑声。 那时她心里才感觉到好踏实。 教学楼 是一座漂亮的两边对称的建筑。阿海闭着眼睛都能够看到那些校园门前的铁栅栏和葱郁的树林…… 上课的铃声已经响起,阿海也刚刚走进教室。 “她来了”信子嘀咕着说。 “早上好”阿海对她说。 “看啊!这首诗写的是阿海吧?” “一定是写在升旗的阿海” 阿海惊讶的拿起报纸慢慢坐下: “少女,为何你把旗升起……” “让思念寄托早风,向那方呼唤。对着偶然相遇的乌鸦。 少女,今日也是红白色的 以蓝色点缀的旗在翻动。” ……...
孤独蛙
她对这种遇见持有戒心。 一直以来,不得不承认,她已经做好妻子应尽的义务。面对丈夫的背叛,她选择了妥协,以为他们之间存在的一丁点爱情可以带来转机。但是,久而久之,还是没有半点好转的迹象,所有的事都朝着最糟糕的方向发展。为此她彻夜失眠。回忆起大学毕业前的那个晚上,他们在池塘一角的蛙声里说着甜言蜜语。 她的回忆总是恰当的停留在那时候,分毫不差。 所有关于他的记忆都被完整的保存在那个永远在她枕头底下的淡蓝色封皮的笔记本里。 2010年4月22日。天空下着小雨,她这样写道: “……他在我宿舍楼下,我不敢看他,他的手里拿着一束玫瑰。是给心仪的对象吧。一定是这样的。 ….晚些时候去吃饭,好朋友高兴的拿出一朵玫瑰,你猜是怎么着。她笑着对我说呀,这是历史系的某某男生送给她的呢。她笑的真的好开心,替她感到高兴,也有点微微的失落呢。 ”。 她总是胡思乱想,想象着自己有一天从十七层楼那里,忽的生出一对翅膀,旁人都来不及发现,她就已远离。她现在活像个装在套子里的人,几乎没法呼吸,平凡的街景,疲倦的人生,一切如果被毁灭殆尽,那该多好啊。 她开始变得焦虑起来,当从童年的壁橱后窥见十多年后,她上大学的第二年,她遇到他的时候。那一刻,她又这样说: “2010年3月11日,我会永远记得这一天,他劝我打掉孩子,但我终究狠不下心,这一刻,我像是刽子手,又是造物者。” 所有的不痛不痒,事情,也许就这样随着时间的流逝在无数的可能性中发生着,数学家们也许能够预测明天发生的一切。这样的概率存在使她相信了希望。但他的甜言蜜语使得改变了初衷。她做了流产手术。几天后,她又焕然一新。 “希望是什么东西呢?”她对自己说,“希望,究竟是什么呢?”。 有一天,她走进了一片森林中。大雾完全淹没了她的视线。她听到女人的笑声,但看不见她们的样子。她听到无数人的脚步声,但就是无法触碰到任何人。万一有紧急情况,她想,一定得喊出来。很快她发现自己失去了语言的能力。她想起在笔记本上记载的那个风和日丽的星期五下午。 “….像是糖一样,不,跟糖完全不同,是另一种奇妙的感觉”。 她想起跟他接吻后的半小时,她的心脏开始剧烈抖动,她很担心就此怀孕,然后面对他尽情的抚摸,已经失去了抵御能力。 “……就像是一条河流冲破了堤坝”。 但周围还是一样的黑暗,不。不是黑暗,是虚无。是空洞,是死一般沉寂的土壤。像是扼住喉咙。 她开始回忆。 她喊他,他不做声。她只有一直喊,一直喊,久而久之,她看不清他的样子。她想象不起他是以什么方式出现在她的生活里,又在何时悄然消失掉。 直到有一天,她在一片沙滩上捡到一个贝壳,她无比惊讶,记忆瞬间涌入她的大脑。 “石头在沉默,万年不语,石头没有思考,石头只是石头…..”。 她在思考着,她看不清他到底是什么,渐渐她也看不清自己的性别。她只有在无限的空洞和疲乏中享受意造出来的性。 然后,她发现了那条路。荆棘丛生,满目疮痍,很多尸体堆积如山的,唯一通往森林外的路。 当她出现在七年后的婚礼现场时。仍旧,她对这种遇见持有戒心。 修正:2018/8/14
我和我追逐的梦
1 遥远的像做了一场梦,只记得那是一个九月的阴天,我来到了兰州。 那时的心情是非常复杂的,经历了高考,作出了选择,从一个熟悉的圈子走向另一个圈子,对未来完全没有规划。脑袋里还装着刚刚因为高中分别的悲伤,这些悲伤伴随了我好一阵子。 第一次住集体宿舍,几天后舍友们开始熟悉起来,我们大都来自不同的地方,约一周后,可以完整的叫出每个人的姓名。之后在校园内找到了一家网吧,兴奋的玩了好几天。 大学了,第一件不适应的事情就是没有同桌,忽然很怀念高中跟同桌拌嘴的日子,忽然想到那些日子居然也一去不复返了。于是竟也有了一点点失落。开始习惯了没有书包的日子,每天早晨抱着书本或是早餐,随便找一个阳光照得到的角落,一般是最后三排靠窗的位置。趴着睡个回笼觉。老师来的时候,已经醒了,但遇到不喜欢的课程,又继续趴下来,听到老师讲有趣的八卦佚事,又忽然来了精神…..这样的日子一天天过,没有人知道它会通往哪里,亦或者在哪里骤然停止。 高中时一直喜欢听Jay的歌,喜欢刘德华的情歌,但大学居然迷上了Leslie,一首《奔向未来的日子》,听着听着忽然发现已经单曲重播了好几遍了。也有好几个周末在宿舍看《大话西游》,看了一遍又一遍又一遍仍不觉得腻。渐渐跟舍友熟悉,开始慢慢的融入到其中。 没上大学的时候,总听别人讲,大学一定要做的事,谈场恋爱,进入学生会或班干部锻炼自己,加入自己喜欢的社团。 社团纳新,应该是开学后不久发生的事,我居然一口气把所有能报的都报了,有的要交费,有的不交,林林总总下来,也花了好一笔钱。 大一的日子是飞快的,谁跟谁恋爱了,谁当了学生会主席了,谁把作业没有按时交,谁的考试成绩是班里第一….这些事情一点点的把2011和2012年填满。 2 暑假一过完,我们就大二了,教室还是哪里,老师也是以前的老师,朋友是一样的朋友,他们的名字没有变,但很奇怪,我们大二了,变了的是什么呢? 这一年是令我记忆深刻的。大二时我喜欢上了文学,居然参加了文学社团,但只去过一次,什么原因使我放弃的我现在想不起了。后来又喜欢一个女生,但很快就分开。这件事让我一段时间异常痛苦,我开始重新审视自己。后来我发现了《秘密》。 我尝试使用吸引力法则来让我的生活更规律,但开始时收效甚微。我以为我失恋了,好几天都在挣扎。我去了黄河,晒着下午的太阳,静静的思考。那是5月20日,晚上回来后我把它记录在日记里面。保存到现在。 后来我开始去图书馆,刚开始是每个下午,我在那里写小说或是看小说,那段时间我非常迷惘,偶然又做了逐浪的网编,这使我感到一点点希望,但坚持了不到一月,我忽然就放弃了,我厌倦了那些日子。 某个下午,我想开一家网店,自己又不想做代理,于是花了500块买了一个虚拟币充值软件,我开始着手自己装修店铺。那是我第一次知道装修店铺需要一点点CSS技术,我还不知道CSS是什么。几天后,我开始在图书馆学习HTML和CSS,那段时间非常充实,我去图书管借书来看,从简单的CSS开始,慢慢的接触到JS,接触到PHP,几天后我终于写出第一个聊天室。我可以装修我的店铺了,但我却对电商失去了兴趣。相反的,我对计算机充满了好奇,我开始学习编程语言,学会了JS的使用,接触到Jquery,第一次用FTP把写好的代码上传到服务器,并在Web中得以展示。这使我忙碌,从失恋的悲伤中得以解脱。夏天我得到了一个实习的机会,电话那头HR问,你懂javascript么?我知道,我的机会来了。 那是冬天,我一个人去了天津。我进入了公司实习,在那里我又认识了另一群人,并参与了真实的项目,从每天的Stand-up meeting中我开始有了自己的计划,后来我才知道这是Scrum(敏捷开发)。那段时间,我学习了ASP.NET ,每天晚上都会看视频学习,有时候看着看着就睡着了。过年是放假的,但我又不能回家,因为太远,大年初一的前一天傍晚,几乎所有的饭店都歇业了,这让我始料未及,我连忙在超市买了足够多的泡面,我对泡面的情感可能是从那时开始的吧。 过年的七天是非常无聊的,我不得不在宿舍看电视,身边没有一个朋友,孤独感像是水流一样,慢慢使我产生窒息的感觉。但很快我又喜欢上了孤独,它能使人专注于某一件事。就像是黑格尔在《小逻辑》里面提到的哪样。 几天后拿到人生第一笔3000元的酬金全部交给了妈妈,后来妈妈又原封不动的给了我。实习结束,我回来了。 3 吸引力法则上说,专注于快乐的东西,你将吸引更多的快乐。几天后的打赌我输了,赌什么我忘记了,但我记得我输了,从此之后,我一直输。用米乐的话讲,那时候,我们三个还不认识,但我觉得我们已经认识很久了。那时候,三草帽还不叫三草帽,也不叫三剑客。 我们三个的友谊从一次赌约开始,我输了一堆零食,清单是米乐写在纸条上的。从此以后,我们的关系越来越密切。我们一直很好奇,为什么三个完全不同世界的人可以走到一起呢。我们不止一次的考虑这个问题,但始终没有统一的答案。那里的大管家现在已经关门了,但味道却还在,我们去过金牛街,那里的美食总是琳琅满目,我们看过许许多多场电影,那些情节至今都历历在目,那些票根都还在。那些一起走过的路,一起滑过的雪道,一起眺望的夜晚,一起做过的梦,好像都还在哪里。 大二的日子也是飞快的,不久我竟然做了计算机老师,教小学生学计算机是一件特别苦的事情,因为你的声音必须时刻开启广播模式。然而那也是幸福的日子,因为每个月可以有一笔非常可观的收入,1200元。为了这笔巨款我必须每天频繁的切换身份,一个小时前我还在教室听老师讲计算机历史,一个小时后我又得以老师的身份讲给学生。我现在仍能记忆起那些孩子,怀着无比好奇的心情玩游戏和绘画。这样的日子持续了整整一个学期。 4 我们付出了很多在“零时代”这个项目上,当时人人网并没有社团人。这个社团管理系统从构思开始就应该是非常棒的主意了,我们甚至在YY上做公开课来教大家使用域名解析。那时候,上线一个网站是非常棒的事,我几乎每天晚上都在研究discuz和ecshop。“零时代”失败了,我们没有做完它,但我仍旧从中获益良多。 5 那一定是最好的时光了,三剑客还不叫三剑客之前,我经常去轮滑俱乐部跟她俩聊天,不知不觉中我竟然学会了顺滑。有一天,我们回不去宿舍,在网吧又看了《大话西游》,那段台词是:那个人好像一条狗啊。 那时候玉还不是我师父,我们的辈分均等,但米乐已经是小一辈的了。我们讨论电影,讨论时间,讨论机器人和记忆,各种奇思妙想,甚至谈到了我们最初的相遇。 “一定是前世”,这个理论虽然不靠谱,但总能解释一些事,譬如我们完全没有共同的偶像,没有共同的饮食习惯,没用共同的哲学交集,对很多事各持己见,但总能在某一个刹那感觉到彼此是熟悉的。 很多年后,我们仍将回忆起这里发生过的一切。这些最初的相遇和最美的安排。 我们以三剑客的身份参加了校网站设计大赛,获得了二等奖,这是我在大学仅有的荣誉,之后几乎没有任何奖项。Java课程开放,我利用业余时间写了坦克大战,并尝试使用Socket作出局域网,但遗憾的是没有成功。后来这个作品居然被我无数次的当作业交。 对我而言,PS是最难的课,师傅对此有天生的优势,我没有办法把3D抽象到一个平面上。 有段时间我经常旷课,我竟然是去了图书馆看《博弈论》,这本书我至今都没办法看懂,但我却从双人零和博弈中得到了未来的一点信息。我把这个结论在交流课上做了说明,就像当初在高三的生物课上说树长出黄金的可能性是存在的场景一样,我说:“有两个女生,其中有一个非常漂亮,如果我们全部去追求那漂亮女生,那她一定会摆足架子,谁也不睬。然后再去追其他女孩子,别人也不会接受,因为没人愿意当“次品”。但如果他们先追其他女生,那么漂亮女生就会感到被孤立,这时再追她就会容易得多”。 6 加入优时的具体日子我忘记了,那时候,几个年轻人在一起,喝几杯酒,开始对未来做各种猜测,对校内兼职的蓝图做了美好的设想。网站陆续改版。可以讨论一个Button的颜色到很晚。某月初拿到了我与师傅的第一笔500分红。这似乎让我看到了希望,然而正如大多数创业着面临的问题一样,股权的分配,团队的管理以及可信任度都受到了很大的考验,某一天忽然散了。 离开优时后,我冷静了很长一段时间,我开始考虑未来的发展。毕业之后,我们怎样怎样。这些事似乎很遥远,但又近在眼前。 7 被米乐逼着在新图书馆前的池塘前唱生日歌的时候,一定是个月明星稀的晚上,我还记得很清楚。那时候,我们就叫三剑客了,第一次真正意义上的合作是为某个卖头花的姐姐装修淘宝店铺,佣金是500还是更多我忘记了。我们一起吃饭讨论了一些细节,但在Logo的问题上产生了分歧。后来这个项目没有做成。然后幸运的是,我的SC2达到了黄金段位。 (我从她们口里听说,有一段时间她们开始疏远我,原因是很多人开始猜测我们的关系。我应该是感觉到了,也许没有,谁知道呢。) 8 我开始时只想去一个地方,去了西安,又忽然想去华山,于是在晚上 一直爬到早晨。没有看到日出,淫雨霏霏,阴风怒号。很久以后我在笔记里面发现了当初去华山的原因。 9 吸引力法则逐渐开始作用我的生活,所有的事情似乎都是在计划之后,我每天都会做这样的计划,一直保持到现在。 10 日子一天天过着,剧情平缓的过渡,偶尔有高潮,有时候也会心情差到极点。考了几次英语四级,一次是因为早上起来晚了,不舍得花费10块钱的车费,一次是主动放弃,因为天气不好。这件事一直被舍友用来调侃。夏天来了,我又来到了天津实习,在业余时间写了OKUER。 开学后在阿里巴巴上批发了第一笔货物,我实习的全部工资都用来做OKUER,OKUER最初的定位是校内购物街,这是一个非常严重的失误。但那时候,我仍旧信心满满,我负责技术与宅急便的业务,米乐负责出谋划策,师傅负责图片的处理,后来又不停的在各种院校寻找志同道合的人一起做,有朋友,有同学,有邻校的学长。OKUER失败之后,我是幸运的,因为我认识了一群足够优秀的人,我看到他们过的努力。但我又是心存愧疚的。 然而我又渴望这样的失败,因为我知道失败是迟早要来的,我渴望一遍遍的经历。 11 米乐唱《后来》的时候,我就在舞台下,那时候我们还不熟。她有非常适合歌手的声线,这些才能在很早之前就得以展示。她后来又在某促销展的现场作为应邀歌手。 师傅说她喜欢情调,帅哥,没有目的的惊喜与被赞美,她在绘画方面很有天赋。我们聊到了人格分裂。 我在2014年4月15的日记里这样记录道: “多像一个精神病患者啊。我开始觉得这一切都对我太不公平,我不应该面临这样的问题,我还年轻,还有很长的路要走,觉对不能这样子结束。 然而事情偏偏不受我的控制,总在我意料之外,朋友圈乱成一团糟。不知不觉中发现自己正变成另一副摸样,我讨厌这样但有乐于此,我试着接触未来,但信息少的可怜,我不能做主。面对爱情,我显得无能为力,既无力守护,更无法追求,我好怕这样的我。站在六楼,我开始想象当我跳下去的时候,我的尸体渗出血,骨骼被强力压碎,我仿佛能听到那些声音。黑夜,暴雨和雷声,让我有安全感,我无力在回头看自己少年时的梦想,更无法做回那个白日梦。我的记忆力开始衰退,我即将忘记这里发生的一切。 这是其中一个我。 然而,我又经常拥有另一种不可思议的能力,我仿佛能感受到太阳的能量,我看到未来那个灿烂的,不可一世而又善良的我,我看到我做了自己很久前应该做的事,我完成的很好,我拥有极好的食欲,并拥有充裕而适量的睡眠,我把所有的事情都处理的有条不紊,任何事情,对不能对我产生影响,因为我知道未来我应该走怎样的路,并且这路将带我到一个奇妙的世界,这里我做主。我拥有无限有趣的想象力,可以改变这个世界。我会把一切都当做享受,把孤独当做馈赠,并时常感谢这种慷慨的赐予,我对天空,土地,我所共享的一切都产生根深蒂固的虔诚。乐于助人,喜欢说话,喜欢新鲜的事情。明确自己的目标,坚持永不动摇的梦想,对于将来遥不可及的世界,已经初见端倪。我仿佛拥有了所有的快乐之源,好朋友很多,喜欢听我 讲笑话,并且对这种笑话产生强烈的共鸣,喜欢夜晚和白天,喜欢河流和蜂蜜。每一天都感谢上帝赐予的生命,并发誓要在这一日作出令自己感到舒服的事情。偶然偷懒,但目标明确。而且这种坚持,是任何事情都不能阻止的。这是一种力量。 这两种力量同时作用于我,如果我不能被其中一方击溃,我将变得异常强大。然而现在的我却在左右摇晃徘徊。我知道终有一日,我会成为一个怎样的人,但在此之前,我时常迷失。 但是呢,毕竟明天会来的。毕竟,明天是美好的,不是吗?” 12 以后的日子,我是说,大三后,我喜欢上了咖啡。我的习惯渐渐影响了米乐,师傅对这些事是漠不关心的。大四的课程已经很少了,但学校面临审查,我们也不能离校。我在兰州找了一份工作,每天早晨必须站1个半小时的公共汽车去上班,学校还偶而有课,我必须得有两天待在学校。那段时间是非常辛苦的,每天早晨起床听着Adele的Someone like you出门。不久,三剑客就改叫三草帽了。因为我们都喜欢海贼王,以及海贼王拥有的梦想_!_ 13 在一个地方呆的太久,就会渐渐忘记时间,有时候我会忽然想起我是昨天才来到这个叫城院的大院子,背着行囊焦急的等待,亦或者忽然出现在某个晚上的团会日现场,这样的日子终究是不会在来了。我们再也不会漫不经心的在晚上围着操场一圈又一圈的散步,那些电影再也不会重新上映,开过的玩笑和说过的谎,惊喜与悲伤,还有漫长的等待与深情的告白,都只是一个做了很久很久的梦。 14 离开那天,我有这样的错觉,我觉得在下个周五或是周六,我们三个还会出现在师大对面的那条街,出现在电影院,出现在2015年的黄昏。米乐说她能在五分钟内流眼泪,背对着她们离开的那一瞬间,忽然感觉胸口很闷。终于才恍然醒悟,这样的日子真的一去不复返了。
夏·刻意
(1) 刻意说,我从一个地方来到另一个地方,就是为了遇到这样一群人,他们在我哭泣的时候,一边安慰,一边开玩笑说一切都将过去。 园子把一切打点好,包括那只陪伴了她三年的小K猫,这样一来,所有事情都安排妥当,终于可以毫无牵挂走掉。离开这座空荡荡的房间—–曾挤满了不知名牌子的spice,开始一扫而光。 手指碰到那个背包,上面挂着一个小铃铛,园子顺手扯了下来,扔在垃圾篓里,忽然又像是想到什么,仔细地在看了一眼,确定没有丢错东西之后,重重的甩门离开。 (2) 有一种力量能把两人,两个原本完全陌生的人变得亲密无间,刻意转着铅笔,脑海里全是园子出现的画面,奇怪,已经分手三个月了,居然对于她的记忆保持地那么新鲜。生物课上,刻意学到了记忆是以一种怎么的方式存在在细胞中,所有他知道,完全强迫自己忘记过去是一件多么愚蠢的事,然而,挥之不去的记忆却时而刺痛他的脑袋。比如和别的女孩约会,当他吻着陌生女孩的唇,刻意总是有一种失落感。 然而,三个月前,就已经和园子分手了。就像是两条交线在相交之后。再无相交的可能。 (3) 园子走出弄堂,走出这条她以为永远不可能有尽头的街。以前,刻意曾陪她走了很久,直到天黑还是没有走出去,刻意当时说,这条街通往世界上任何一条路,没有终点。所以,无论你走到那里,我都找到你。园子弯起嘴角,原来自己这么轻易就可以走出这里,真是可笑的理论。 (4) 那个漂亮的,年轻的,叫直晒的女孩又一次把邀请函递过来,对刻意说,这次你不答应我的话,我就真的不再理你了。 刻意想好拒绝的理由,但没想到直晒会说出这样的话,倒是在他预料之外。说起直晒,刻意总是会露出一副无可奈何的表情。直晒说,我喜欢你,让我做你的女朋友。刻意却想到了园子,想到了第一次跟园子表白时,他说,我喜欢你,让我做你的男朋友。 (5) 离开A城市去B城市,辗转C城市终于到了 D城市,只是换了一个名称,一群人,改变了地球上的经纬度坐标并不能让人从失恋的失落中走出来。园子望着另一群陌生人,想起初次遇见刻意的那个夜晚,霓虹灯闪烁不定,车流匆匆,两个人站在公交牌下,瑟瑟发抖的情景。园子以前以为,如果刻意没有把羽绒服借给她, 她真的会冻死在那晚。所以,她对朋友们讲,当刻意说,我喜欢你,让我做你的男朋友,那时候,她感动的要哭,觉得是刻意给予了她新的生命。 (6) 刻意还在转着铅笔,从小中第一次转笔,到现在已经十年了,十年养成的习惯,现在几乎炉火纯青了。他回忆起高中的课桌,图书馆,园子说,你要是能坚持转10分钟,我就答应你。 刻意转了三分钟,结果园子吻了他。但可以觉得还是自己输了,输给了余下的七分种。 (6.1) 直晒看着刻意转笔,黄昏的光线透过玻璃把他的轮廓衬托的好美。直晒趴在刻意旁的课桌,眼睛一眨也不眨,就像是在观赏一部刺激的电影。她的认真感染了谷子。 (7) 谷子透过玻璃看着直晒的背影,她的头发可真好看,在夕阳下发着好看的光,那种光在棱镜反射实验中他并没有发现。好像不在已经发现的光谱中。然而,当他第一眼发现直晒的眼神望着另一个男生的时候,心里还是有点疼。 谷子想,只要她开心就好。 然而,他发现直晒并不开心,有时候也会一个人哭。她是有什么难过的事么?但谷子却无法分担她的痛苦,所以当直晒哭的时候,他总会用数倍的痛苦还击他的身体,谷子总是伤痕累累。 (8) 刻意问谷子,你身上的伤是怎么回事? 谷子说,是我不自己不小心,不碍事的,不要告诉我妈。 刻意说,你要是有什么事,就跟我讲。 谷子说,刻意,我喜欢上了一个女孩。 刻意笑了笑,说,追到了吗? 谷子说,还没有。 刻意说,你可要早点下手哦,不要像中学时候那样…..。 幸好园子走了过来,刻意连忙说,对了,我给你介绍一下,这是我女朋友,园子。 (9) 园子想起那时候。刻意的好朋友,谷子。 刻意对他说,谷子是我最好的朋友。 园子笑着问,那我呢? 刻意说,你也是。 刻意说起谷子的故事,他们从小玩到大,谷子家里很有钱,但却从不乱花,很听话,就是有点腼腆。 园子喜欢听刻意讲他们的过去,那些故事真的好长,有许多要用很久的时间才能想起,园子说,要是时间在久一些,我怕我真会记不住,要是有一天我忘记了,你一定要提醒我啊。 刻意说,好。 刻意说,但是有一点你一定要记清楚,一定不要再谷子面前提起他的过去。 园子问,发生了什么? 刻意并没有告诉她。 园子走在街上,这条街已经改了名字,好像叫‘幸福大道’,街上的人看起来真的很幸福,好像他们的生活中充满了各种甜蜜,刻意现在会在哪里呢?园子想。 (9.1) 刻意望着直晒,说,我不可能喜欢你的。 直晒迎着他目光,可是我喜欢你。 刻意没有说话。而是继续保持转笔的动作,他想起园子,想起她说过的话,我一点都不喜欢你,从来都没有。 分手之前,园子把围巾丢在街口,一个人跑了出去。 (9.2) 直晒望着刻意,忽然又想哭,但这次她并没有哭出来,而是把邀请函递给了他。然后默默得等待。她总会想起每次见到刻意的时候,心里砰砰乱跳的场景。她低他一年级,每天看着他念英文,听他的声音,感觉就已经很知足了。可是,后来她喜欢的他居然交了女朋友。她想哭,但就是不敢告诉他,她哭着哭着,想既然不喜欢她,为什么不让她撞死呢?如果没有救她的话,就不会这么难受吧。 直晒现在做噩梦还是能梦到那个晚上,穿过马路是被迎面而来的车辆撞倒,她恍惚间还能记忆起来,那时候有一只手推开了她。速度太快,她醒来的时候已经在医院,家里好多亲属哭成一团,妈妈抱着她说谢天谢地没事。妈妈说直晒,多亏了你朋友及时送你来。 直晒那时候却不记得有什么朋友。直晒的脸贴着门偷偷听到了妈妈和医生的谈话,短暂性失忆,这是什么病?直晒想,我才没有失忆呢。 她听到妈妈问医生救她的那人的名字,说要好好谢谢人家,医生说是个很帅的男生,但是就是不留下名字,说是举手之劳,不过,他临走的时候把学生证落下了,医生说,叫刻意,是SIN中学三年级学生。 (10) 谷子记得自己进入SIN中学的时候,爸妈已经离婚了。法院把他判给了妈妈,就像是战利品,被胜利者拥有。妈妈是个强势的女上司,一点都不懂得感情,在她的眼里,所有的一切都能转化为价值,从一日三餐到年终考试,任何事情都要一 一干涉。爸爸在离婚后的第三个月出了车祸,后来终于忍受不了高昂的医药费自杀了。自杀的前一晚,爸爸说,等将来谷子长大了,一定不要恨你妈妈。 不管怎么样,谷子想,妈妈总有一天会明白的。 顺利和刻意考进了同一所高中,对谷子来说是一件很愉快的事。然而,谷子还是经常回忆起爸爸。 那时候,初中的时候。骑着单车,刻意说,谷子,你爸爸不反对你这么早恋爱啊? 谷子说,谁才恋爱啊。 刻意笑着问,那是谁每天早上都给真田送牛奶的? 谷子说,反正我家里有很多,我又喝不掉。留给真田她不是很好吗? 你又不是不知道她家的情况。 刻意说,你一定要这样说哦,我也没办法,不过啊,我还蛮希望你跟她在一起的呢,虽然她不太漂亮,但是女大十八变哦。 谷子加速蹬车追了上去,留下‘真田哪里不漂亮了’的几个词飘在空气中。 每次回忆起这些,谷子总是莫名其妙的难受。 (11)...
我仿佛看见你
我仿佛看见你,你的一举一动,你雏鸭般的滑稽表演,都能使人发笑。大多数的时候你都是哭或是在睡觉,你一定不想被人抱在怀里,偶尔挣扎过,试图反抗这个强迫你喊她妈妈的女人。但正如大多数的反抗一样,均以妥协结束。 我仿佛看见你,透过玻璃,看见对面的一座山,遥远的像一幅画,却又真实到可以触碰。这些山上有许多人,他们走着走着慢慢的消失在你的视野中,你哈了一口气在玻璃上,擦干净,试图看的更清些,但反而更朦胧了。 我仿佛看见你,学会走路,一步一脚印,那是你的脚第一次触碰到泥土,在上面留下了痕迹,也许没有,因为你太轻。你笑着或是哭着,日子就一天天过着。你以为这就是全部。但爸爸没有告诉你,几年后你就要去另一个地方。 我仿佛看见你,第一次上学时,背着书包兴奋的手舞足蹈,妈妈不得不重新整理你的红领巾,然后送你走完那一段很长很长的上坡路。你认识了一些有趣的朋友,跟他们一起交谈,一起成长。 我仿佛看见你,第一次跟别人打架,输了回到家里不敢告诉爸爸妈妈,心理藏着小男子汉的梦想发誓一定要练成盖世武功,几天后,你再次面对你的敌人,却还是落败。 我仿佛看见你,你一句话不说的走在路上,你在想些什么?你好像很担心,考试成绩不好,一定不能让别人知道。你忽然变成初中生,那时候才意识到一下子失掉了整个童年,那些动画片,那些星空以及那些遥远的伙伴。 我仿佛看见你,你有了第一个真正喜欢的女孩,开始时你不知道这意味着什么,那段时间充满了希望,同时又被希望折磨,你为此付出过很多很多时间,结果一无所获。 我仿佛看见你,一个人静静的走在黑夜里,走在幻夜里,走在白夜里,走在不知道终点,不知道方向,也不知道时间的隧道里。这期间,有人永远的离开你,有人背叛了你,有人伤害你或者被你伤害。每个人都做出了选择,你也是。爸爸说那条路太危险,告诫你不要那么选。但是你坚持己见。 我仿佛看见你,有段时间异常虚弱,躲在一个没有人的冬天休息,天上永远在下雪,你手指冰凉,饥寒难耐。 那是2010年或者2011年,太阳失去了踪迹。 我仿佛看见你,在大雷雨天的下午,在空无一人的教室里,思绪穿越时间,穿越1984年,穿越吉普赛人出现过的那个村落,穿越指南针失效的那座山谷,穿越奥里雷亚诺被执行枪决的那个遥远的下午,一直到万有引力被发现前的无数个岁月。你爱上了书籍里记录的那些光怪陆离的故事。喜欢上中世纪的伊斯坦堡。 我仿佛看见你,一个人带着耳麦静静的听七里香,在学校的大树下,几百人的喧嚣里,你听了一遍又一遍,下午的阳光透过树叶落下斑驳的影子正好包裹了你整个身体。那是初中的三年级,几个小时后,你又忽然出现在大学里。像是变魔法一样,像是中间的记忆被掏空一样。 我仿佛看见你,一段时间迷失在虚拟中,被控制,被占据。你措手不及,很怕,你大声的喊,但周围没有一个人帮你,他们都听不见你的呐喊,你失去了判断现实的能力,甚至连触觉都不能给你真实感,你怀疑存在的意义,开始思考生命。 我仿佛看见你,你逐渐坚强起来,慢慢,你相信美丽的心灵终会闪耀出永恒的阳光,还有那首歌你终于不再时时刻刻唱了又唱。 我仿佛看见你,从咿咿呀呀起,一定知道我的存在,你哭或者笑得时候,我都在你身边,我见证了你成功时的欣喜若狂,与你失败时的颓废彷徨,你有过踌躇不前,有过悔恨绝望,这些我都看见过。 我仿佛看见你,透过瞳仁,注视着这个世界的一举一动,你的身体在长大。而灵魂偏居一隅,保持着最初的样子。 那时候,我也许会再次遇见你,在你很老的时候,我将一五一十的告诉你真相,告诉你我们当初的决意……
萤火虫
(一) 我梦见过自己身处一片迷雾遮罩的森林之中,完全丢失了方向。不知道该朝哪里前进或者后退。有时候,我明白这只是个梦,但很长时间,我都怕醒来。 我把这个梦告诉过一个人,他的名字我也许忘记,也许从未记得,当我拖着厚重的行李包沿着校园走廊通往宿舍楼的途中,那人对我说,“嗨,等等”。 他是我在这里认识的第一个人,但一 直没有机会问他的名字。他告诉我他一直在找一个代号叫‘萤火虫’的人,我真诚的告诉他我并不认识这样一个人。他似乎很着急,仿佛那个‘萤火虫’对他很重 要。也一直缠着我,好像我一定认识‘萤火虫’似的。纠缠到晚上,我终于摆脱了他,回到集体宿舍,跟其他四人打过招呼,便呼呼大睡。 我又梦到那样的场景。次日早晨,舍友问,“俊,你是从哪里来的?” 他瞅瞅我,解释道:“是填写注册信息用的,对了,昨晚你睡着之后,我们开里舍会,现在我是舍长…..”。 我告诉他准确的地点。 他连忙掏出笔,生怕记不住似的,然后说,“我听人说哪里经常闹鬼,是不是真的啊?”。 我一时语塞,不知道该怎么回答。他微愣,好像知道有点不礼貌,连忙说,“你不要误会啊,我没别的意思。” 我笑笑说:“没关系,经常有人这样问我,反正我是没有见过鬼的”。 他终于一副如释负重的表情,拍了拍桌子,拿起那张单子,“搞定!”。 “他们已经到食堂去了,这会刚刚点完菜,估计还没有开动呢,你要是有时间的话,一起去吧”,他把床铺收拾好后说。 “怎么样?”,他动作像是静止住了一样,盯着我。 “…..唔,我还有点事情,晚些时候在过去吧”,我忽然反应过来,连忙说。 “……要是有什么需要帮忙的话,一定要说啊,顺便祝你早日适应集体宿舍,good luck!”。 他推开门,走里出去。我这才忽然想起了他的名字。 中午吃完饭之后,我又遇见了那个人。他似乎很高兴,主动跟我打招呼,“嗨,兄弟,还记得我吗?”。 我点了点头,“你也是这里的学生吗?”,这句话说出口后,我就有点后悔了。 “怎么不太像吗?”,他耸耸肩。 “没有,没有”,我连忙转移话题,“那边好热闹,是有什么好玩的事情吗?” “好玩的事情?哈哈哈~”,他忽然大笑起来,拍拍我的肩膀,“你一定想不到哪里发生了什么?” 1984年,面临长达19年监禁期,我回忆起高中的那个阳光明媚的日子,照亮那一年白昼的日光也将照亮4年后的冬至。我开始相信,那天中午我确实错过了一件重要的事。或者说,如果我跟那个寻找萤火虫的神秘男子去看看发生了什么好玩的事情,结局可能会朝着完全不一样的方向发展。 他问,“怎样?要过去看看么?”。 我摇摇头,示意还有自己的事情需要忙,他立即理解了我的意思,“不过,一旦有萤火虫的消息,一定要第一时间让我知道……”,他挥手告别我。 从那之后的许多年,我都没有在见过那个神秘的男人。 校 园寂静如岭的深夜,我独自漫步,这个时间已经没有其他人,守楼的老大爷早已不在那里,一切都像是回到了最初,开始的地点。我开始胡思乱想起来,但当脑海中 接触到“为什么要到这里”的疑问之后,我却怎么也想不起自己出现在这里的理由。我接受了足够多的信息和经验来辨别这个世界,却忽然想起,一旦面对“哪里 来”,或者,“为什么到这里“的质疑声,脑中便浮现出无数虫子蠕动的画面。 走了不知道多久的路,可能已经接近黎明了。前面是一片湖,安静如早晨的土壤,湖边站着一个黑乎乎的影子,在即将破晓前的冷静中站立,思考。 她在思考什么呢? 或许她没有思考,只是站在哪里,望着前方,仿佛一棵树,生长在哪里一样。 然而在我作出更多假想之前,她忽然一跃而下,跳入湖中。我随即跟着跳了下去。 那个深夜冰冷澈骨的湖水,在我挣扎着托起她后,疲倦将带给我温暖。 我点燃了烟,望着十九根刚条铸成的监狱的天窗,回忆起审判长最后说的三个字:别说话! 那个女孩,她带着一种恶毒的仿佛巫婆诅咒般的眼神注视着我,很久很久之后,脸上才看出一幅无可奈何的表情,说,“你冷吗?” 她说她的名字叫Dela,我一直不知道她的中文名。 第二天,校报报道了我奋勇拯救一名失恋女生的事,版面几乎占据了整个报纸的三分之一,回到宿舍后,舍长说,“俊哥啊,你可真行”。 我只是笑了笑,什么话也没有说。 那天中午,我们一起吃了酱牛肉,然后去了酒吧。 酒吧很小,几乎是一间小人屋,但是里面居然囤积了很多酒,很多间更小的房间。晚上,我们的快乐随着那首疯狂的匿名DJ曲达到了高潮。我忽然想起那个神秘人。想像他漫步在荒凉的山脉上,不停地寻找。 我喝完一杯酒,望着扭动的舞女慢慢脱掉了最后一件衣服,却怎么也没有性欲,反而一阵恶心。一个打扮绰越的女人走了过来,一只手按在我的肩膀上,在凌乱的光线下,她问我,“你今年多大了” 我望着她,望着她修剪整齐的眉毛,精致的五官,“19岁,已经是成年人了”。 她忽然笑了,然后用左手托起一杯酒,说,“我叫Dela……”。 我忽然想起那个叫Dela的女孩,独自站在深夜的湖边,一面思考着以何种方式死掉,一面又在这灯红酒绿之中寻欢。 “既然是成年人,就应该干些成年人应该干的事”。她带我进一间小房间。我看见一张巨大的沙发上,无数小小的人在上面翻滚和**。她开始脱我的衣服,用最温柔的语调说肉麻的情话。最后当我们赤身裸体拥抱在一起的时候,我发现的我身体正渐渐缩小。 当我们都筋疲力尽后,她抱着我说,“你冷吗?”。 我说,“有个女孩说过同样的话”。 她笑着问,“是不是跟我有同样的名字”。 我没有回答她,反而陷入更深的沉默,沉默像是一堵墙壁,一面湖水。而我在里面苦苦挣扎。 我想到一个阳光明媚的日子,天气放晴之后,一群人在海棠花旁许愿,海啸来临之前,穿着泳裤在沙滩同心爱的对象表白。然后,接连而来的暴风和灾难摧毁这里的一切,毁灭之后,新的物种开始通过自然法则获得均等繁衍的机会。 Dela把她的手机号留给我,并告诉我,一旦有需要,随时都可以找她,我明白她的意思。借着时而昏暗的灯光,我离开了那里。回到校园时候,遇见了班主任,她是个很强势的女人,但说话的声音却很温柔,她说,“哎哟,真巧啊小俊,正好我有点事,你现在忙不忙呀?” 我连忙说自己刚刚逛了一圈回来,闲着没事。 她一副“谢天谢地”的表情,立刻说自己有点急事,但学校领导着急要本班学生的注册资料,问我有没有时间帮她整理一下,我说,好啊。于是跟她去了办公室。 那天黄昏,我都在办公室整理资料,把电话号码一一确认后,填写在年级注册表上。在拨通其中一个电话的时候,对面不停的重复着一个嘶哑的声音:“一定要找到萤火虫,只有它能带你出去…..”。 我试着询问更多信息,但对方不停得重复着这样的话。 我把这件事告诉老师,她的脸部表情立即骤然变僵,“有这样的事?”。 我点了点头。 她陷入了沉思,很久没有说一句话。 那天下午,她仿佛忘记自己原本的计划,只是在办公室盯着那堆厚厚的资料,手指按在“阿美”的家庭电话号码上,整整一个黄昏。第二天放学后,我们仿佛都忘记了昨天的事,而陆老师也没有刻意提起。 但我却连着几夜没有睡好觉,舍友们以为我还沉浸在酒吧女郎的温柔乡里,表示完全的理解。他们以为我睡着了,开始小声讨论我的事情。我的耳朵却仿佛只接受道夏天夜晚虫子的叫声。 那个夜晚,所有的人都在睡眠,只有虫子,仿佛刚来到世界,学着不成调的腔。然而有一种虫子,始终沉默,但发着光…… (二) 我觉得自己一定错过了什么事情。第二天一早,我遇见同班的阿美。她看上去很平凡,唯一吸引人我的是她扎着的好看的马尾。阳光洒落在她的肩上,她笑着跟我打招呼。 我说,早啊。 她笑着调侃我,大英雄这样早,去约会吗? 我笑了笑,抱着书说,要一起去食堂吗?...
以后的日子
想到有一天,我老了,走不动了,我的孩子们围绕着,听我讲六十一年前的故事。 事情也许不会发展得这么顺利,我想,如果我恰好在二十三岁那年,错过了你。 那么一切又该朝着怎样的方向前进呢? 也许你的世界会出现一个幽默风趣的作家,他每天都会在被窝里你跟你讲关于1Q84年天空出现的那两个一大一小的月亮。也许是一个严谨的一丝不苟的学者或者银行家,你忍受了他的呆板和木讷。作为回应,他报以对你的忠诚。 那时候,你将不会在梳妆台上发现我印着我名字的卡片,有关我的记忆将被一种来自乌克兰的鸟的羽毛代替。你也许望着那一片湛蓝色的海洋,拿着削好的铅笔在纸上沙沙地描绘。你将喜欢海鸥和鱼群。这些将是你的未来。 但是亲爱的,这些只存在于你并不了解的未来的可能性中。 你想象着那样一个风和日丽的星期五的下午。站在教堂上穿着世界上独一无二的婚纱,一边迫不及待地想说,“I do”,一边又像个孩子一样回忆起十三年前你跟妹妹一起玩耍的那条小溪,玩具,阳光,涂满蜡油的父亲做的木板。 我躲在通往未来的一扇门后,望着你,望着你的童年,望着你从羞怯到成熟,从懦弱到勇敢。 望着你始终一言不发却又时常调皮的样子。 你对我说,我想要一个大房子,把爸爸妈妈还有妹妹都接进去,一家人永远幸福的生活下去。这是你十三年那年许的愿望。 而以后的日子里,我将想起那一天!
遗失之城 :LIN(修正:2017-10-24)
“千万别照镜子,尤其是在夜晚”。Lin的那个开场白就是这样。 夜晚很快就来临了,跟昨天分毫不差。我回忆起昨天,眼前的一切又都像是回到昨天开始。一样冰冷的监牢,墙壁散发着一种特有的腐尸味。我爱极了这种气息,就像是在深吸生命的灵气。然后,在日复一日的时光流逝中,我不停地看见昨日。 我给这座监狱起了一个我认为非常好听的名称,你肯定猜不着,我叫它,“火柴匣”。 我喜欢赤身躺在地上,旁边有几只老鼠在我的耳边跑来跑去,像是在嘲弄我,我懒得动。我的身体,我很清楚,它已经不堪重负。但思想却不惧这些。我总能想起很多年前,Lin和我,漫步在夕阳下的街道,相互拥抱,亲吻。 那一年,我的父亲因为反对伪政府而倒在黎明前的最后一发炮弹中,母亲接着因为感染了脑膜炎病菌而相继辞世。哥哥屈服于独裁统治,趁着夜晚,离开了莫斯比亚。 在逃亡中,我遇见了Lin。在Lin的眼睛里我发现了活下去的希望。她产生了相同的感应。我们躲藏在一间地下室等待政府被接管。 那个晚上,Lin跟我说起她的出生和她的中国人血统。她对此非常自豪。 我们聊到很晚,才逐渐入睡。 Lin对死亡很着迷,她曾躺在一座无人监管的墓群里,彻夜保持兴奋的大脑,她对我说,“没有一件事比死跟具有诱惑力了,你知道吗?当时有一群蚂蚁,个头比乌托邦时代的蜘蛛还要大,短短几分钟,我的几个姐姐都变成了骨头。我就站在那里,看着无数的蚁群,虫子开始腐蚀我的家园和亲人,然而,我准备闭上眼睛准备享受这奇妙的一刻。却被一个声音唤醒” Lin忽然问,“你有跟谁发生过性关系吗?” 我摇了摇头,她继续说,“他开始抚摸我的全身,他的手指冰凉,划过我的肌肤,我感觉到我的灵魂被唤醒”。 “接着几声枪响,他倒在了我的身上,赤身裸体,他临死前,没有说一句话”。 “我被莫斯比亚的士兵带回了集中营,我总是回忆起那个晚上,回忆起他死在我的身上,那一刻起,我对死产生了深深的迷恋”。 “我做过很多尝试,记得有一天我疯狂的咀嚼泥土,蜗牛的壳割破了我的牙床。还有一次是在海边,趁着暴风雨来临之际,我跳了下去。在几千米的悬崖下坠落到海岩上,我发现我的身体摔得粉碎,可是我还是没有能够死掉。我的思想总是那时候产生强烈的抵触。我想起一句话,‘仍然拥有的仿佛从眼前远遁,已经逝去的又变得栩栩如生’。 “在集中营里,我有了自己的孩子,但我不确定那孩子的父亲是谁。” …… (2) 夜晚,宵禁时间。这座被冠以‘无畏者之城’美誉的城市陷入虚妄和不安之中。不远处的爆炸声不时地响起。有一个号称‘毒’的组织迅速蔓延并占领了莫斯比亚。许多天后,首领将割下独裁者的脑袋,并把它高悬在城楼上,宣誓新世纪的到来。 在逃亡的日子里,Lin以惊人的速度迅速变老。她的乳房不再膨胀,眼睛深深地陷进骨骼里,像是活生生塞了两个煤球。她几乎不能够正常跟我交谈。我们对未来的产生了怀疑。 ‘上帝仍是存在的,我曾亲眼见到它。’,Lin患了坏血病,几天后身体就会被霉菌腐蚀。但她仍旧倔强地,要我对着至高无上的存在宣誓。 在剩下的日子里,她要求我时刻陪伴在她的身边。有一天,一个奇怪的带着长号角的奇怪男人找到了我,他的手里拿着一叠面具。 “时间都是幻觉”,他用嘶哑的声音对我说,“上帝是只恶老鼠,号角吹响之前,每个人都有机会”。 他并未对此做出解释,但是惊奇的事情却发生了,Lin在带上那个面具之后,血液开始重新流动,像是一条阻塞的长渠被打通。她的疾病慢慢消失。 他要求我也带上它。并答应作为回报,将替我们进行占卜。 “所有的事情都是可预测的”,他为了让我们相信,准确的说出了当天下午从莫斯比亚北部响起的三声剧烈的炮声。 他最终说服了Lin,但我却产生了抗拒,他很着急,似乎时间对于他真的很重要。 “我可以改变你的性别”,他开出了极具诱惑力的条件。Lin也颇为渴望。但是占卜师并没有兑现他的承诺。 几天后,暴乱发生了,‘毒’组织发动了最后的战争,所有的人都带着同样的面具作为标志 。 Lin回忆起在集中营里生育的那个孩子。他仿佛在某个地方思考着正在发生的一切。 ‘毒’侵占了莫斯比亚的心脏。颁布了‘自由宣言’的大殿被浩浩荡荡的‘起义军’摧毁,并重新用水晶石铸成一座坚不可摧,灿烂无比的宝塔。几天后的黄昏,一群来自东部的号称‘守卫者’的宗教狂热者试图刺杀‘毒’的领袖,但以失败告终。作为参与政变的奖励,我们获得了在莫斯比亚永久的居住权。 Lin对此感到非常高兴,我们不再疲于奔命。她的才能得以展示,在三年后,成立了制片厂,并拍摄了称赞‘伟大的领袖,精明的政治家’的电影《最后的火种》。 她在里面饰演一个美艳的妓女。票房获得了前所未有的成功。莫斯比亚新一代的人开始接受这种独特的表演方式,许多人争相模仿。 在Lin的事业到达高峰的时候,我患了严重的失眠症,彻夜不寐。她辞掉了演员的工作,专心陪伴在我的身边。 我们牵着彼此的双手,享受最后的时光。 那一定是我生命中最美好的时光。Lin与我相互依偎,我们像是一对密不可分的姐妹,恋人,生命中的挚友。 接着我又迅速变老,Lin越来越年轻。她的身体时刻散发着一种气息,这种气息能让任何人着迷。她开始学习各种语言,并能熟练的用中国话说出‘诸神黄昏即至’这样晦涩难懂的语言。 有一天,一个男人出现在了。他英俊而幽默,留着两撇胡须。Lin对我说她很喜欢。那天大雨,我透过玻璃看见他们在雨中漫步。谈天说地。几天后他们出现在客厅里。 Lin赤裸着身体。 莫斯比亚日益繁荣。再也不是当初的满目疮痍。教科书对2130年9月17日黄昏的战役做了修正。人们称那段历史叫‘革命前夜’。所有关于‘毒’组织的记忆都在一辈人死掉后被彻底遗忘。但我还记得那天夜晚,暴风雨席卷了莫斯比亚的中央花园,人们带着面具,把‘无畏者’的雕像用鲜血染红。 失眠症让我无比痛苦,但又是一种恩赐,我可以不休不止的工作。我开始学习建筑和工程学,那时候,‘时空计划’刚刚开始。所有的科学家都绞尽脑汁潜心研究时间。我选择暂时离开Lin。她对我的决定很惊讶,但同时又表示完全的理解。我将注意力转移到科学上,Lin说,希望有一天能回到过去,那个深夜,战争开始之前。 “千万别照镜子,尤其是在夜晚”,Lin在临走前叮嘱我。 我成功加入‘时空计划’,并因无休止的工作努力而获得了新一代领袖的接见。领袖暗地里说出了他的愿望,希望回到1983年的深夜。他说起曾梦见那一年深夜的月亮。 “以前我是个占卜师”,他对我说,“但是你知道,对未来的真知灼见往往会使人想回到过去看看”。 “你真是个干劲十足的女孩”,他偶尔夸赞我,并邀请我一同享用晚餐。 我对领袖的多次示好均做出委婉的推辞,但越是如此,他对我的兴趣越是浓重。 数年后,时间机器被成功制造出来,作为轰动世界的一项科技的首席策划师,我赢得了赞誉和数不清的财富。 无数人为了这种不可思与的旅途着迷,发生了几次不小的暴乱,但均被镇压,有人呼吁对于穿越时间产生将不可考究的风险,但被置若罔闻。仍旧有很多人花费极其昂贵的代价回到了过去,但没有人回来过。后来谣言散开,‘上帝已死,地狱之门已经打开’。 领袖做出了决定,永久封存‘时空计划’,但暗地里仍旧进行最后的研究。在一项碰撞实验中,有一个极具智慧的人成功的把记忆从身体分离,并保存在水晶石里,用某种曜石粉末成功的制作了新记忆。 ‘这是最接近永生的秘密’,他把这一项研究成果告诉领袖,‘把记忆保存下来,即使肉体不复存在,但记忆仍旧在不停的运动,而且不受时间和空间的限制’ 领袖对此产生强烈的兴趣,并做了记忆的抽取。 “这就是灵魂”,当领袖看到水晶球里转动的记忆,“思想在这里产生火花”。 这项技术被作为取代‘时空计划’的第二代产品在整个莫斯比亚城市推广,获得了巨大的成功。人们的记忆迅速膨胀,整个国家的交通瘫痪,所有的工业设备停止运转,指南针在那一年失效了。 Lin找到了我,那时候,她已经有了三个孩子,其中一个女孩生着一对翅膀。Lin对我说,她叫安塔拉,不会说话。 ‘看过很多医生,但都束手无策’。 我看着Lin,她终于成为了母亲,我应为她自豪。但那一刻,我发现我们如此疏远。她接受了婚姻,跟另一个人。她抛弃了我。 但我却深爱着她,我渴望她的灵魂,渴望她胜于我自己。我花费高昂的代价提取了安塔拉的记忆,她被保存在距离海洋最近的地方。 Lin说她只有一个愿望,希望能尽快的死去。她感染了我,我对死亡产生了渴望。很多年后,我们在一片荒无人烟的平原上赤足行走,那一刻,谁都没有说话,就像是安静行走的记忆,我们安静的回忆起莫斯比亚最后的那一次暴乱: 那天下午,天空出现了一道裂痕,蜥蜴和蜘蛛般大的蚂蚁在街上逃窜,接着火焰掉了下来。所有保存在水晶中的记忆全部被燃烧殆尽。大火烧了无数个年月,没有人幸存下来。 那一天,我发现我自己是空荡荡的,我不知道我的名字,我忘记了我的性别。 我想象着有一天我从别人的子宫里出来,看着这个世界,看着我疲倦的身躯,看着我生出双翅,我会忽然想起我是被保存在海边的‘安塔拉’的记忆。我受着不死的诅咒,失眠症的诅咒,又时而躺在四下安静的监狱里。想象着一群老鼠在我的耳边跑来跑去,听我絮絮叨叨。想象着无数岁月前,我跟Lin在一起相互拥抱,亲吻。 我给这座监狱起了一个非常好听的名称,我叫它,‘火柴匣’。