对于自己的软件产品，希望别人付费、或者在我们授权的情况下才允许使用。那么我们应该如何去这个授权码 / 许可证的机制呢？前言离线授权的方案无非就是两种，一种是软件层面的授权，一种是硬件层面的授权。软件层面：我们向用户提供一串特定的字符串，用户在软件中输入我们提供的字符串，在使用端校验用户输入的授权码，即可完成软件的授权操作。硬件层面：我们向用户提供一个 USB Key（加密狗），用户在运行软件时我们可以通过硬件加密狗来判断授权信息，这种加密狗在网上 几块钱到十几块钱就能买一个，有的加密狗还内置独立时钟，可以杜绝用户进行时钟回拨等。这种加密狗可以用在对授权安全级别更高的场景中，但需要承受额外的成本：用户的使用成本，授权分发成本（加密狗+快递费+快递时间）。软件层面的加密方案使用起来更加灵活，硬件层面加密狗安全级别更高，本篇文章主要是探讨软件层面的授权方式。授权码要点那么设计一个相对安全的离线授权码，需要满足那些哪些特征呢？绑定性：每个授权码对应一台设备的授权，客户无法通过一个授权码激活多台设备。安全性：授权码应难以被伪造或篡改可验证：授权码应能被系统快速验证其合法性可复现：当客户授权码遗失时，我们可以根据客户的机器码重新生成授权码，避免用户无法使用软件的情况。时效性（可选）：授权码可包含授权有效期，限定授权使用时长。可扩展（可选）：可根据自己需求来灵活扩展授权码内容，以方便携带更多信息。你可以以任何形式生成一个满足上方条件的授权码，无需纠结生成的思路是否与我的思路一致唯一标识在离线授权场景中，我们需要确定授权设备的唯一标识，这个标识需要具有不可更改性质，在正常情况下该唯一标识都不会发生变化（例如重启软件、重启系统不会发生变化，但重装系统、更换硬件等行为会发生变化是可接受的）。在这种场景中，我们唯一标识一般采用 CPUID、主板 BIOS UUID、网卡 MAC 地址、或自定义算法来生成唯一ID，提醒一下 如果产品是服务器应用，不应使用 硬盘序列号作为唯一标识的组成部分，因为服务器硬盘都有明确的生命周期会定期更换。当更换后就会造成授权失效的情况。这个唯一标识没有明确的授权规定，大家可以根据自己的需求来选择，也可以通过现成的开源库来获取。例如我开发的主语言是 Golang，我一般会使用 github.com/denisbrodbeck/machineid 这个库来获取硬件ID，并且可以在各个系统下运转良好。授权码方案对称方案对称方案是指授权码的生成逻辑、校验逻辑完全一样。所谓校验就是客户端内部生成正确的授权码，然后和用户输入的授权码做对比，对比成功，则说明授权有效。以我个人习惯为例，授权码的字符串一般包含“机器码”、“项目名称”、“到期时间”、“盐值”，其中盐值用于增加授权码的复杂性，即使客户知道了授权码的生成方式，在不知道盐值的情况下，无法自行伪造授权码。生成过程我们先生成一个明文的字符串，然后通过特定分隔符拼接出明文的授权码，格式可以是: 机器码:项目名称:到期时间:盐值，例如：123456:tpamis:281231:abcdef123456：客户提供的机器码，这里以 123456 代替tpamis：授权项目名称，同一个机器上可能存在多个软件产品，可以加一个项目名称用于区分。281231：到期时间，这里取 2028-12-31 的后6位作为到期时间。这里也可以写成授权天数，先选定一个时间作为起始日期，然后在这个时间上叠加偏移时间，得到的最终时间作为授权到期时间。例如：我出生的时间是：1998-11-11，我以此作为起始时间。偏移时间：9628 天，得到授权到期时间为 2028-12-31。abcdef:盐值，可以防止彩虹表攻击，即使攻击者知道生成算法，也无法通过预计算破解授权码。接着，我们通过一个 MD5 算法（也可使用其他 HASH 摘要算法）得到一个签名 "cfb9fc32230fa1a19423ef8b6af63a61"，此签名就是一个授权码。但这时的授权码有一个问题，签名是不可逆的，所以我们无法在验证签名时通过签名得到授权到期时间，所以我们需要人为的拼接一下：直接拼接： cfb9fc32230fa1a19423ef8b6af63a61281231使用分隔字符： cfb9fc32230fa1a19423ef8b6af63a61-281231舍去后六位，以 UUID 的方式呈现： cfb9fc32-230f-a1a1-9423-ef8b6a281231掩藏到期时间这个时你会发现 后六位明晃晃的摆在那里，太容易被人猜到是到期时间了，虽然不会被篡改，但仍希望隐藏在授权码中，我们可以通过 十进制转十六进制来实现：281231 转十六进制为：44a8f，这时授权码变成：cfb9fc32-230f-a1a1-9423-ef8b6a44a8f。同时你可以将到期时间藏在授权码中间，替换掉对应位置的签名值，得到这样的授权码：cf44a8f2-230f-a1a1-9423ef8b6af63a61。验证授权码到这一步，已经完成了授权码的生成过程，客户端程序需要提前内置盐值和同样的生成算法，在用户输入授权码激活时，先从授权码中截取出到期时间。再用客户端生成的授权码进行对比验证是否正确，以及是否过期。用户体验优化签名生成的授权码以及可以满足正常的离线授权的功能了，但有一些不允许插入U盘或联网的场景中，客户可能需要手动输入授权码，我们应该尽可能缩短授权码长度，方便用户输入。我们可以在前面授权码的基础上，参考 Windows 的授权码长度 （AAAAA-BBBBB-CCCCC-DDDD-EEEEE）,每组5个字符，5 组共25个字符，通过横杠分割方便用户输入。前面 MD5 生成的签名是 128 位的二进制，转换为16进制后，长度为 32 个字符。其实我们可以 MD5 转为 36 进制得到: CAQ3DFUC0YPEHDZLA7ZKHHYLD。我们再拼接上前面得到的十六进制到期时间，并转为全大写，就得到了方便输入的授权码格式：CAQ3D-FUC0Y-PEHDZ-LA7ZK-HHYLD-44A8F。如果需要长度和 Windows 一模一样，则需要在 36 进制转换后，再截取掉 5 位，拼接时间戳。这里提供一个 Go 语言 十六进制转36进制的方法示例：package main import ( "crypto/md5" "encoding/hex" "fmt" "math/big" ) // 将 MD5 哈希值转换为 36 进制字符串 func md5ToBase36(md5Hash string) string { // 将 MD5 哈希值（十六进制）转换为大整数 bigInt := new(big.Int) bigInt.SetString(md5Hash, 16) // 定义 36 进制的字符集 const charset = "0123456789abcdefghijklmnopqrstuvwxyz" // 将大整数转换为 36 进制 base36 := "" base := big.NewInt(36) zero := big.NewInt(0) remainder := new(big.Int) for bigInt.Cmp(zero) > 0 { bigInt.DivMod(bigInt, base, remainder) base36 = string(charset[remainder.Int64()]) + base36 } return base36 } func main() { // 计算字符串的 MD5 哈希值 data := "123456:tpamis:281231:abcdef" hash := md5.Sum([]byte(data)) md5Hash := hex.EncodeToString(hash[:]) // 转换为十六进制字符串 fmt.Println("MD5 哈希值:", md5Hash) // 输出: cfb9fc32230fa1a19423ef8b6af63a61 // 将 MD5 哈希值转换为 36 进制 base36Code := md5ToBase36(md5Hash) fmt.Println("36 进制编码:", base36Code) // 输出: caq3dfuc0ypehdzla7zkhhyld }几个问题补充为什么要转 36进制而不是直接截取 MD5？因为截取后过短的 MD5 增加了碰撞的概率，转为 36进制，会包含 0-9、A-Z 36 个字符。36进制相比 16进制更为紧凑，在缩短长度同时保留较高的信息密度。且 36 进制在客户输入时，不需要考虑大小写问题，用户体验更好。摘要算法选择MD5 算法已被证实存在碰撞漏洞，但在安全性要求相对不是很高的场景中，还是可以接受的。如果需要安全性更高的摘要算法，可以换成例如 SHA-256、国密 SM3 等更为安全算法，在得到签名后截取 32 位 当作 MD5 使用，实现安全性、用户体验的兼顾。36进制字符集因为 36 进制是自行实现的，所以可以自定义字符集，大家可以在这一步对字符集排布顺序进行打乱，实现混淆效果。非对称方案前面的授权码方案可以提供一个方便输入，长度较短的授权码字符串，但携带授权信息较少、密钥（盐值）需要内置在客户端中，遇到逆行破解场景，有盐值泄露的可能性。授权码设计非对称加密我们可以使用 RSA 算法来实现。当我们使用 RSA 算法时，我们可以通过授权码给客户端携带更多信息，所以我们就以 JSON 为许可证内容的载体。我们可以这样设计：{ "iss":"tpamis", "sub":"pord", "aud": "123456", "exp": "1861804800", "nbf": "1743436800", "iat":"1742728673", "rge":["功能a","功能b","功能b"] }接参考了 JWT 官方规定的 Payload 字段，设计的许可证 JSON 内容，且这些字段可以根据需求随意添加调整。iss (issuer)：授权项目sub (subject)：授权方式，prod 正式授权、test 测试授权aud (audience)：授权对象，客户的机器码exp (expiration time)：过期时间nbf (Not Before)：生效时间iat (Issued At)：签发时间rge：授权功能列表生成授权码我们生成一对 RSA 公私钥，公钥保存在客户端，私钥在我们手里，我们根据用户的机器码，生成一个授权码，以上面为例，我额外扩展了授权模块功能，可以精确控制客户允许使用的功能范围。生成包含许可证信息的JSON 字符串{"iss":"tpamis","sub":"pord","aud":"123456","exp":"1861804800","nbf":"1743436800","iat":"1742728673","rge":["功能a","功能b","功能b"]}然后我们使用 RSA 私钥加密生成密文，这个密文就是我们需要提供给客户的授权码。[binary]当许可证内容过多，导致密文过长时，可以考虑输出一个密钥文件给客户，客户在产品中上传、选择 密钥文件，我们通过读取密钥文件来获取授权码。这样体验更好。授权码验证用户将我们的授权码输入到软件中，客户端使用公钥解密，解密成功则读取进入进行进一步的授权校验，解密失败直接提示授权码错误。说明：将公钥内置到客户端，在极端情况下，存在反编译的可能性。所以我们可以假设公钥已经泄露、不安全的状态。不过只要私钥不泄露，别人拿到公钥也只能解密我们的许可证密文，而不能伪造一个许可证，相对来说也是可以接受的。代码示例以 Go 语言为例 加密解密过程如下package main import ( "encoding/json" "fmt" "github.com/dromara/dongle" ) func main() { // 声明 map[string]any 许可证结构 licenseData := map[string]any{ "iss": "tpamis", "sub": "pord", "aud": "123456", "exp": "1861804800", "nbf": "1743436800", "iat": "1742728673", "rge": []string{"功能a", "功能b", "功能b"}, } // 将 map 转换为 JSON 字符串 jsonData, _ := json.Marshal(licenseData) // 使用RSA 私钥 授权Json cipherText := dongle.Encrypt.FromBytes(jsonData).ByRsa(pkcs1PrivateKey).ToBase64String() fmt.Println("RSA密文", cipherText) // 客户端 使用 公钥进行解密 licenseJson := dongle.Decrypt.FromBase64String(cipherText).ByRsa(pkcs1PublicKey).ToString() fmt.Println("许可证Json", licenseJson) } var pkcs1PublicKey = []byte(`-----BEGIN RSA PUBLIC KEY----- MIGJAoGBAK12MTd84qkCZzp4iLUj8YSUglaFMsFlv9KlIL4+Xts40PK3+wbsXPEw cujGeUmdgMeZiK7SLLSz8QeE0v7Vs+cGK4Bs4qLtMGCiO6wEuyt10KsafTyBktFn dk/+gBLr7B/b+9+HaMIIoJUdsFksdAg3cxTSpwVApe98loFNRfqDAgMBAAE= -----END RSA PUBLIC KEY-----`) var pkcs1PrivateKey = []byte(`-----BEGIN RSA PRIVATE KEY----- [binary] -----END RSA PRIVATE KEY-----`)JWT 方案JWT 方案则是直接使用标准的 JWT 库来实现授权码的签发功能，客户端和服务端共享 JWT 的密钥来验证授权签名的有效性。本方案的优点是可以充分利用现有的标准化 JWT 库，只需定义一个密钥，而无需进行过多的开发，但许可证内容会直接暴露给客户，也可以考虑 JWE，需自行抉择。JWT Header { "alg": "HS256", "typ": "JWT" } JWT Payload { "iss": "tpamis", "sub": "pord", "aud": "123456", "exp": "1861804800", "nbf": "1743436800", "iat": "1742728673", "rge": [ "功能a", "功能b", "功能b" ] } 密钥 dbkuaizi.com JWT Token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0cGFtaXMiLCJzdWIiOiJwb3JkIiwiYXVkIjoiMTIzNDU2IiwiZXhwIjoiMTg2MTgwNDgwMCIsIm5iZiI6IjE3NDM0MzY4MDAiLCJpYXQiOiIxNzQyNzI4NjczIiwicmdlIjpbIuWKn-iDvWEiLCLlip_og71iIiwi5Yqf6IO9YiJdfQ.izIAwMyiLxPiHrWf-FDGu3fHMvfaC7bqEh40ha8YYAA结尾没有绝对的安全任何安全领域的手段都是相对安全，没有绝对的安全。再复杂的授权码的本质只能是 防君子不防小人，例如用户可以通过逆向 得到你的盐值、甚至直接修改你的程序逻辑跳过验证的逻辑，更何况我们的场景中只有离线校验的逻辑。防止时钟回拨时钟回拨是指，就是用户直接通过修改系统时间到软件授权到期之前，从而继续使用软件的目的。那么我们在离线场景中如何去避免这样的情况发生呢？首先我需要声明的是，离线授权场景中，不能彻底避免这种情况（除了独立时钟的加密狗），我们能做的就是通过代码逻辑尽可能规避这种情况的发生，一般有这几种手段：记录上一次运行时间众所周知，时间是不会倒流的，也就是说软件的第二次运行时间，不可能小于上一次运行时的系统时间。所以，在软件每次运行时我们可以先记录当前时间，并与上一次系统时间做对比，若第二次运行时的系统时间小于之前记录的时间，则认为出现了系统时钟回拨的问题，直接提示用户并终止软件运行。安全的存储时间标记那么如何保证我们存储的时间没有被篡改呢？我们可以通过 （时间戳.盐）+md5 的方式实现：例如：时间戳为 1717487962 盐 是 abcdefg，通过： md5('1717487962.abcdefg') 摘要算法，获得时间戳签名:a06de98fc28e45bf38a9a5f27630cd03。然后将这样的字符串进行存储：1717487962.a06de98fc28e45bf38a9a5f27630cd03，启动时再通过上面的逻辑进行校验，即可保证 记录的时间不被修改。如何防止用户删除时间标记可以在打包的时候，就记录一个打包时间作为初始化时间戳，这样即使用户第一次运行也必须有时间戳。若没读取不到时间戳标记，则说明用户人为清理了时间标记，结束运行。与业务数据强关联如果你产品运行过程中产生的业务数据很重要，也可以使用业务中的时间戳来做时钟回拨校验，例如使用最后一条订单的创建时间。若业务数据很重要，用户总不可能为了继续使用软件而删掉业务数据吧。抛砖引玉授权码的设计方案有很多，这里只是整理了我用过的几种方案，大家可以根据自己的需要对逻辑进行调整，如果你有更好的方案，欢迎留言交流。
去年环完海南之后，本以为短时间内不会再去海南环岛，后来又总想着还有中线没有骑、东线没有去东郊椰林、没有去木兰湾，都是挺遗憾的，所以今年年底又去了海南。这次的路线规划是 中线+东线 的方式，从海口走中线到五指山、在保亭向东到陵水，接着一路向北，最后走东线过木兰湾回到海口。因为休假时间是两周，所以骑行并不是很赶，基本上每天都是休闲骑，30 ~ 80 公里的样子，一共骑了 10 天，总里程 676 公里。今年的运气还行，基本上没下雨。准备和去年一样骑行用的是自己的车子，12 月 10 日去家附近的车店打包车子，然后寄到海口，去年是和朋友一起去环岛的，今年朋友因为时间的原因无法成行，只能自己一个人去环岛了。14日下午坐飞机到海口直接去联系好的海口车店取车，已经叫老板帮忙装好了，所以赶着车店下班时间去店里直接取了车子，在附近找了个酒店住宿。过程海口 ~ 定安县 57.85KM12 月 15 日，从海口出发已经是中午 12 点了，按照网上的中线这一天是要到屯昌的。海口到屯昌有大概 80 公里的距离，想到有两周的假期没必要那么赶，主打一个休闲骑，所以第一天先到了定安县。因为路程不长，下午四点就到了，从海口到定安县都是平路，骑起来也没太多压力。定安县 ~ 琼中县 104.77KM从定安到屯昌只有不到 50 公里，所以第二天的目的地设在了琼中县，一百公里左右。从定安往西骑行20多公里，然后向南拐上了 224 国道，顺着 224 国道可以一路直达三亚。中午在 屯昌 吃的午饭，吃完饭后就开始爬坡，不过到琼中这段路爬升不多，海拔只有300多，爬升也才不到 200 米，压力也不是很大。等到琼中县已经是下午五点半了，就近找了个地方住下。琼中县 ~ 五指山 78.95KM从琼中到五指山，是中线难度最大的一段路，海拔最高点 790M，断断续续的有好几个坡，一会爬升到 450 一会又下到 300 多再爬上来，到下午三点才到 毛阳镇。当时分不清是我体力的原因还是上坡的原因，我当天下午的速度很慢，遇到坡的时候只有 6 ~ 8 公里/小时的骑行速度（这个时候轮应该扎了一个小钢丝，但是没有完全没气，所以没有及时发现）。在毛阳镇吃了午饭后已经三点半了，就继续赶路往五指山市出发。从毛阳镇到 五指山要翻越中线上爬升最多的一个坡（阿陀岭），毛阳镇海拔 220 左右，需要爬升到 790M。因为后轮气不够的原因，爬升很慢，等我到山顶的时候已经六点半了，掏出手机拍了张照片，一眨眼的功夫天就开始黑了下来，打开车灯骑着车慢慢往山下走，不过好在从山顶到五指山一路下坡，半个小时就到五指山市了。五指山 ~ 保亭 35.97KM从五指山出发的时候已经时中午了，因为前一天到五指山市已经七点多了，今天不想骑太远，本来计划中这一天到陵水县的。中午出发的时候才发现后轮偏软，猜测可能是扎胎了，但一想气没有跑完，应该不是扎胎，所以只是将气补到 60 等到了保亭再看看要不要补一下。接着吃完早饭，沿着三月三大道一路向南，出了市区就开始爬坡，最高爬升到 450M 左右，到了保亭界的路牌后，开始下坡一路到保亭和三亚的分岔口。从分岔口拐向保亭方向，可能是因为昨天爬坡的原因，腿开始有点疼，后面到保亭的这段路 有一些起伏路，骑的也慢。到保亭已经下午三点了，就近找了地方住宿。入住后看了一下后轮，又只有一半的气，基本上确定是扎胎了，好在今天时间较早，可以慢慢补不着急。保亭 ~ 石梅湾 89.41KM早上九点多出发，出了保亭一路向东，一直到陵水全是平路，胎补好了速度也能快一些。这一天的上午是阴天，也没有大风，所以速度也比昨天快很多，一路20+的速度，十一多点就到了陵水。说是路过陵水，但因为直接导航的是石梅湾那边，跟着导航提前向东北方向拐去，走乡村小路，也没路过陵水县城的城镇区域。路上因为一些琐事耽误了些时间，到 223 国道的时候已经快一点了。拐上 223 国道一路向北，接下来几天的线路就和去年走东线的路线重合了。拐到223 国道向北就开始爬坡，如果你走东线+西线的话，这个坡是全程爬坡最多的一个坡，但实际爬升也才一百多米，没有什么难度，到山顶的时候也才一点多。今年走这段路的时候，发现车特别多，去年这一段基本上没有车。后来在网上才了解到 这段时间 日月湾到三亚的高速修路封掉了，所有的汽车在这一段路得走国道。这一段路级别上都是从日月湾向三亚方向去的汽车，我爬坡对向来车是下坡，一路上超车逆行，加上下坡速度都比较快，所以这段路还是挺危险的，尤其是大车逆行，离我不到一米远，从我旁边过的时候车头都扶不稳，再后面看到有大车逆行过来时就会先停下，等大车过去后再继续骑。骑到山顶后拍了张照，因为路过的车太多，车速也快，所以没有停留直接继续向北下山。向北继续骑行 20公里左右 到南桥镇，吃了午饭，先用手机定好了住的地方直接导航过去。这一天说是到石梅湾，实际上是到了石梅湾更北一点的神州半岛， 吃完饭从南桥镇开始重新导航，想着尽量多走靠近海边的线路。从南桥镇出来没多久就向东拐上了一条去往海边的路，我以为和去年走 223 国道一样，到石梅湾都是平路，结果走了没多久就开始爬坡。好在坡不长，不到一个小时就开始下坡，爬升应该还不到 100M 来着。日月湾修路，这段路不好走。到神州半岛的时候天还没黑，住下后洗了洗衣服，晾在阳台再出去吃晚饭。石梅湾 ~ 博鳌 83.89KM早上九点多从神州半岛出来，继续向北骑往博鳌镇走。从石梅湾到博鳌镇是海南环岛旅游公里中风景最好的一段路，前半段没有坡顶多是起伏路，本应是没有什么难度的一天。但不幸的是赶上台风了，虽然台风离海南挺远的，但是受台风影响，我骑东线的时候一路逆风。提到这次逆风我就来气：去年东进西出，西线就是一路吹逆风，骑都骑不动。很多人告诉我西线就是风大，所以现在流行西进东出，不受逆风的影响。没想到我今年只走东线，依然受到了逆风影响 <(T-T)>。从石梅湾到博鳌，如果一路走环岛旅游公路的话，几乎没有什么吃饭的地方，买水的地方也不多，骑到下午3点多路过一个村口，还好有猪脚饭吃。吃完之后继续往博鳌走，我印象里不到30公里就到了。继续骑行不久就到了正门岭，这是今天唯一一个可以之为坡的地方，但爬升也不多十多分钟就可以到最高点。再继续骑行一个小时就到了博鳌镇，去吃我心心念念的椰子鸡，去年和朋友骑行的时候在这里吃了一家椰子鸡，味道超好吃，以至于我今年路过博鳌镇的时候特意住在附近，又来吃了一次。博鳌 ~ 会文 43.04KM如果正常骑行的话，应该是直接从博鳌到龙楼的。我是从24年初开始喜欢文玩，盘一些手串啥的。而文昌市会文镇则是国内最大的星月菩提集散地，国内能买到的大部分星月菩提都是从这里出去的，所以我想顺路在会文镇逛逛，看看有没有喜欢的手串。最后手串没买到，但是接触到了一种新的体验。从博鳌到会文镇并不远只有40多公里，我中午从博鳌镇出发，骑了20多公里就进入了文昌界，没多久就到了文昌市区和会文镇的分岔口，在这里休息了一下，订了会文镇住宿的地方，便又继续出发。会文镇因为小的缘故吧，住宿的条件稍微差一些，但也还算干净。住下后已经三点多了，收拾一下到附近的“会文佛珠交易市场”转了一会，感觉线下的种类还是没有线上的多，但是量很大（应该是很多商家在这里批发原材料，回去再加工）。逛完出来四点半左右，后面的时间就很悠闲了，不用继续骑车，就在会文镇的街上溜达，我个人是很喜欢去一个陌生的地方，街头漫无目的的闲逛。走了一会之后发现会文镇这边有很多“中西茶餐厅”，其实就是海南这边说的 "老爸茶"（说到这里，推荐看一个b站up主的海口vlog：野的海口），就随便找了一家坐下来，点了一些东西一边吃一边打发时间。也不是第一次吃老爸茶了，去年和朋友一起时，在海口去了网上好评较多的正方华体验过一次。上一次在海口的感受就是感觉老爸茶和我们这边的小吃街差不多，坐下吃小吃，吃完就走，没有什么特别的感受。但这次在会文镇，对老爸茶有了一些新的理解，会文镇这边老爸茶店铺的老板大多是做镇上老顾客的生意，所以感觉会文镇的老爸茶餐厅更有生活气息、烟火气一些。点一些小吃、一杯茶，坐了一个多小时，听着当地人在茶餐厅里聊天，坐到五点多人家要关门了，才继续在镇上溜达着往回走。（一个多月过去，我依然时不时想起那个下午的在会文镇的放松和惬意）。在镇上溜达了一会，走回去的路上天已经开始黑了，晚霞是粉红色的，搭配着小镇上宁静的街道，别有一番景色。会文 ~ 龙楼 57.12KM早上八点多起来，去了会文镇另外一家茶餐厅吃早餐，待到十点多就出发继续骑行往龙楼方向。出发没多久就拐上了海南环岛旅游公路，过了文昌市区和清澜大桥，就开始进入东郊椰林的区域，因为去年是直接从海口走 S201 省道到的文昌市，所以没有走东郊椰林一直觉得挺遗憾的，今年必然是要补上这个遗憾的。前面提到过，这几天有台风经过，博鳌到会文这段路走的里面，没有太靠海边感觉影响不大。但是到了东郊椰林，逆风就开始了，不过在椰树下骑行，风的影响不是很大。出了东郊椰林，没有太多遮挡，环岛旅游公路就贴着海边蜿蜒。风，真大 <(T-T)>！一直到龙楼镇，风都没停过。逆风慢慢骑，到龙楼镇已经是下午六点了，在附近找了住的地方，洗了衣服 就去龙楼的街上逛，主要是看看有什么吃的，吃了一碗抱罗粉，或许是因为离抱罗镇不远把，味道很不错，应该算很正宗。龙楼 ~ 潮滩鼻 60.82KM在很多环岛骑行攻略上，从海口到龙楼只有 125KM，但我在龙楼实际导航下来，有 140 公里左右。如果早点出发倒是也能骑完，问题是我运气不好碰上逆风了，所以就分成两天来骑，从龙楼到铺前镇没有找到合适的住宿点，最好在飞登的攻略中，找到潮滩鼻有一家可以住宿的地方（但这里确实除了住宿也没什么，吃饭也只能在驿站吃，所以不是很推荐住在这里）。从龙楼出发时已经是早上九点半，出发时就下着小雨，出了龙楼镇又开始刮起了大风。一路逆风骑速度在15左右起不来，这个大风一直伴随着我到铺前镇。本来出了龙楼后是一直沿着海南环岛旅游公里走的，结果风越来越大，雨也越来越大。而这一段路的两遍都是拦腰断掉的大片树林，想来也是前两个月“台风摩羯”造成的影响。因为风的影响，继续沿着海边骑行速度越来越慢，于是计划从走里面过翁田镇，到翁田镇的时候已经是一点多了，顺便吃了午饭，休息了一下就继续向潮滩鼻骑。出了翁田镇没多久又回到了海南环岛旅游公路上，还是不过这里的风小了一些，也没有下雨，比刚出龙楼要强得多。到了潮滩鼻，联系客栈的老板住了下来，这是海边很小的一个村子，大概只有十几户的样子，因为时间还早就在村子附近转了一下。潮滩鼻 ~ 海口 66.85KM第二天早上九点从潮滩鼻出发往海口走，刚出发不久就看到海边的一排风车，想来应该是木兰湾的风车海岸了。今天的风小了很多，因为只有60公里，所以也不赶，一路慢慢骑，十点多就到木兰灯塔了，在木兰灯塔拍了照，休息了一会就继续向海口骑，印象里 从木兰灯塔向西骑行 会下一个挺长的坡，如果是东进西出的话，应该是需要花一些时间爬坡的。到了铺前镇，过了海文大桥就是海口市区，这次 中线+东线 骑行的行程也就由此结束了。这次骑行补上了中线的经历，以及东线 东郊椰林+木兰湾的遗憾，也算是满足了我最初的规划。结尾到了海口后又在海口待了两天，重新去了一次正方华，和去年的感受差不多，第二天又去了正方华对面的东隆茶店，这里没有那么网红，本地人会多一些，至于味道其实大差不差。连着两年来海南骑车，走完了 东线、西线、中线，全是补全了海南环岛的所有遗憾了。去年是和朋友两个人，今年是我自己一个人。各有优点吧，一个人自由，两个人结伴出行路上不会感觉无聊。至于骑行的花费、自行车邮寄等问题可以参考我上一篇海南游记：海南环岛：东线+西线回家之后发现网上开始推海南环热带旅游公路，后面有计划再说吧，暂时是不打算再去海南骑车了。
从 2020 年川藏回来之后，就有了年底去海南环岛的想法，结果因为一些众所周知的原因导致未能成行。转眼来到 2023 年，终于在年底实现了这一计划已久了想法。和朋友两人，12 月 16 号从西安飞到海口，12 月 17 号从海口 517 出发，东线 + 西线 共 823 公里，骑行花了 10 天。 游记分为两部分，首先是个人的环岛游记，然后是个人角度的一些环岛攻略（也不能算攻略，就一些参考）。骑行游记准备这次出去骑车，我一共休了 2 周的假期，原本的计划是在路上留出足够的时间，一路上不想那么赶。我是一个怕麻烦的人（也可以说比较懒），所以一开始我是打算去 517 驿站租车的。但朋友为了去环岛专门买了新车，在他的坚持下，让我和他一起把车子寄去环岛。于是我们提前在网上联系了 517 海口驿站的工作人员，要到 517 在海口驿站的地址。12 月 13 号 去家附近的车店打包，再下单走顺丰邮寄到 517 海口驿站。因为车子已经寄到海口了，所以行李直接用驼包装好，坐飞机的时候直接带驼包过去。16 号到海口已经是中午 11 点了，下午在骑楼老街逛了逛，晚上去了南大夜市。或许是我攻略没做好，个人感觉海口玩的地方不多，所以也没有过多停留。第二天吃过早饭，就和朋友打车去了 517 驿站，因为车子是直接寄过来的，所以还需要驿站的工作人员帮忙组装好（主要还是懒，不想自己折腾）。工作人员帮忙装好的话一辆车是需要收取 80 块钱的费用。师傅速度还是很快的，我们到驿站九点多，十一点就装好了。海南环岛线路比较热门的有三条，分别是中线，东线和西线。三条线的难度不同，风景也不同。我们这次选择的是从东线进西线出顺时针的方向环岛，这个顺序也是比较经典的一种环岛方式。不过现在选择西进东出的人也是比较多的，具体的原因在后面攻略部分会提到。出发前在 517 驿站门口让老板帮忙拍了一张照片，然后就开始了我们环岛的旅程。海口-文昌 82KM2023-12-17我们出发的时候是 11 点半，想当天晚上赶到文昌市，所以我们没有选择沿着环岛公路去木兰湾，而是做沿着 201 省道直接去了文昌。我们这次旅行的运气好像不太好，昨天到海口的时候还有 30 度，到了住的地方，气温骤降到 16 度。今天也是刚出发的时候就开始下小雨，从海口到万宁这段路，基本上都在淋雨。虽然从海口到文昌这段路，我们走的是201省道，但因为现在是环岛的旺季，所以一路上也遇到了几个骑友。201省道基本上没有烂路，但起伏路比较多，再加上下雨速度也起不来，我们到文昌的时候已经是晚上七点了。因为是省道，所以一路上货车还是比较多的，而且速度也不慢，如果走201省道的话，需要注意安全。文昌-博鳌镇 73KM2023-12-18早上八点起来，准备收拾东西出门，结果文昌开始下大雨，也没有办法赶路，所以我们先去吃了早餐，回来的时候雨已经小了很多，看了一眼天气预报，还有半个小时就不下了，所以和朋友商量好之后便准备出发，出发的时间是早上十一点多了。出了市区不久 ，我们便导航了环岛旅游公路，一路向南。虽然叫环岛旅游公路，但其实离海边还是有几公里的距离，也没怎么看到海。中午在路上遇到了一个西进东出的一个骑友，交流后我们才知道，如果想一直沿着海边走，需要全程走乡道，这也和517提供的行者路书一致，但因为同行者队友比较赶时间，而且我也比较懒，所以我们并没有完全根据这位骑友的建议走乡道。不过我们原本是计划去琼海市区，经过这位骑友提醒，我们把目的地改到了更靠海的博鳌镇。下午的路程，我们又遇到了暴雨，在路边一户人家的棚子里躲了半个小时。或许这也是旅行的一种魅力吧，这种突如其来的状况，都将丰富我们这趟旅程的宝贵经历（正如过去多年，我依然记得东达山脚下那场大暴雨）。今天的路况比较好，都是平路，但因为我们中午出发的比较晚，所以到博鳌镇的时候已经是将近下午六点钟了。我们在这里吃的清补凉和椰子鸡都挺好吃。博鳌镇-石梅湾 90KM2023-12-19早上起来不出意外，又开始下雨了，我们先去吃早饭，吃完早饭回来已经九点半将近十点了。今天早上我又一如既往的问了，每天早上出发前会问的那句话，下雨了，咱还走吗？我朋友说：“走吧，我要在 26 号回到海口，赶时间。”，所以我们又穿上了雨衣，做好防雨罩，开始向下一站出发。在这一天，我们在路上遇到了更多的骑友。他们大都是西进东出，虽然一路上东进西出，和我们同向的骑友也有几个，但大部分还是选择西进东出。走了没多远，我们就会进入到万宁的地界。我们本来是计划住在东澳镇，但是到东澳镇时才下午四点，和朋友在东澳镇吃完午饭后继续向前赶路 19 公里到石梅湾。到石梅湾的时候已经是下午六点，因为住的地方是一个村子，也没什么逛的，老板说石梅湾可以看日出，但是我们一想到这两天每天早上都在下雨，所以也没打算看。石梅湾-海棠湾 90KM2023-12-20早上天起来，乌云密布，但是没有下雨，也是从今天开始不怎么淋雨了。今天起的比较早，早上八点半拾东西就和朋友出发了，因为今天的行程，需要爬整个环岛线路中爬升最大，长度最长的一个坡。这个坡爬完之后，后面的路基本上都是平路。网上说这个坡挺难爬的，我起初还是比较担心，因为我带了比较重的行李。实际爬升过程中感觉还好，也就两三公里的一个坡，爬升也才200米，需要费一些力气，但也不多。因为朋友的进度比较慢，我在他前面五公里的位置先走，结果我在坡顶等他的时候，发现他是推上来的，我倒是挺意外，因为他的体力一直都比我好。如果让我拿西安的爬坡来形容的话，我认为半个白鹿原的坡。下了这个坡，就是陵水县。刚进县城不久，朋友就运气爆棚，扎胎了。因为朋友是第一次骑长途，没有补胎经验，我在大理扎过一次，所以补胎换胎的工作必然就交给我了。虽然我有一些补胎经验，但经验也不是很足，20 分钟才弄好。中午和朋友在陵水县吃了当地特色的酸粉，接着就继续赶路到海棠湾。海棠湾其实是海棠区已经属于三亚市了，离三亚的市区还有 40 公里左右。因为三亚市区的吃饭住宿成本比较高一些，所以很多人选择白天在三亚玩，然后晚上住在海棠湾这里。海棠湾-三亚 39KM2023-12-21、2023-12-22 从海棠湾到三亚市区，这一天的行程只有不到40公里。前一天傍晚，我们准备住下的时候，路边遇到了几个骑友，交流后得知他们计划不在海棠湾停留，直接到三亚。我们从海棠湾出发的时候，已经是将近十点钟，因为路程不是很远，所以我们骑的也不是特别快，到三亚市区的时候已经是快两点了。我们选择住在大东海附近，在三亚停留了一天半。我们两个对海鲜没有太大的兴趣，所以在三亚的时候，更多的选择还是东北菜。因为我想的是三亚的东北人比较多，一些那边的东北菜会比较正宗。尝试了几次之后，证明我想多了。第二天上午我们去，三亚的南山海上观音景区逛了逛，下午去免税店帮各自家里人带了一些东西。最开始我们计划在三亚待两天半的，但是和朋友沟通后，我们还是想把更多的时间留在西线，希望骑行的进度不要那么赶。所以第三天早上我们就离开三亚了。三亚-莺歌海镇 108.6KM2023-12-23从三亚离开的这天早晨，是我们整个环岛过程中出发最早的一天。因为今天的距离比较远，需要骑行100多公里，所以我们八点多就出发了。或许是因为休整了一天，也或许是因为路况比较好。中午的时候已经走了有一半的路程。莺歌海镇上的时候已经将近下午五点，虽然说今天的路程比较远，但路况很好，如果只算骑行时间的话，只需要大概六个小时。从今天下午开始，逐渐有一些逆风，但风力不大，对我们的影响也不是很大。个人感觉莺歌海的住宿应该是整个环岛过程中相对较少的一个镇子，我记得只有几家住宿的地方。莺歌海镇-东方市 77.5KM2023-12-24今天我们的计划是从莺歌海镇到东方市，走之前在地图上搜了一下，距离大概只有70多公里，所以我们起来的比较晚，大概九点多的时候才出发。从莺歌海出发没多久，就开始一路逆风，而且风力也很大，再加上有一些起伏路，所以我们速度也很慢。风大的时候，我们每小时只能骑 13 公里的速度。将近11点的时候已经被风吹傻了，于是我们查看地图后， 看到225国道和今天的路程基本平行，而且更靠里一些我们想的风或许会小些，所以就转到了225国道上，不过这样的话就看不到海了。下午四点半离东方市还有15公里左右的距离，路边开始出现许多风力发电机，一直持续到我们进入东方市。后来查了攻略才知道，海南环岛西线如果从三亚向北边骑行，大概率都会碰上这种不小的逆风。这也是为什么西进东出环岛的骑友越来越多的原因 。他们顺着风起，不但不受逆风的影响，而且遇到大风，反而会让他们更加节省体力。东方市-白马井镇 103.75KM2023-12-25今天我们从东方市出发的时候，已经是早上九点半，不出意外的，我们又碰上了逆风。说起来还挺有意思的，东线一路下雨到万宁，西线一路逆风到临高。不管是东线还是西线，都有各自的特色。今天很大一部分路程都是小路和烂路，坡多坑多。不过后面则小路逆风倒是小了很多，我们到白马井镇的时候，已经是晚上七点了。白马井镇-临高县 69.64KM2023-12-26如果从白马井镇到，海口的话，大概有一百三四十公里，一天骑的话也可以骑到，但是不想那么累，和朋友商量后，我们决定先到临高县，在临高县休息一晚，第二天再从临高县去海口。因为是把一天的路程拆成了两天，为了住宿需要多绕一下临高县，但是今天的路程也不长，大概只有 70 公里 , 而且今天一直沿着环岛公路骑，路况也很好。在路边等队友的时候，遇到了一个同方向的骑友，简单交流后才知道他是第二次来环岛了，而且这一次全程都是带有帐篷，一路上大概有一半，住宿都是靠搭帐篷解决的。并且他今天打算赶到临高角，在那里搭帐篷，和我们一样，第二天他从临高角回海口。等了大概半个小时，我队友也赶到了。和队友查了导航之后，如果去临高角，我们大概有多30公里的路程，而且也不确定那边有没有住宿。所以就决定去县城。我们重新导航的时候，导航提示了我们一条更近的路，我们也没有细看，直接就沿着导航推荐的这条近路走了。结果在这条小路上遇到了一个比万宁更陡的坡，那个坡大概有二三百米长，晚上看码表记录，那个坡度最多到了 16 度。临高县-海口市 89.72KM2023-12-27环岛的最后一天是从临高县到海口，大概距离是90公里。这一天早上依旧是九点左右出发，输了线程变更的导航一直在走乡村小路，虽然路况不怎么好，并且路口也多，但也看到了一些大路上没有的风景。下午到澄迈县的时候，我的运气也爆棚了，本来以为这次环岛我不会扎胎，没想到你还好，还有不到40公里的距离，我也扎胎了。这下环岛的旅程算是圆满了。本来时间还是挺宽松的，但因为补胎耽误了时间，而且第一次扒这个车子的外胎费了一些时间。导致到海口的时候已经七点多了。到海口之后，我们环岛的旅程已经结束，第二天早上在住的附近找了一家车店，把车子打包寄回家，然后我们在海口玩了几天，结束了这趟旅程。结尾因为朋友需要尽早回去，并且我们也相对比较懒，所以说一路上我们走的可能是最近的环岛线路，按照 517 的骑行路书一圈正常下来是 1050 多公里，我们一路抄近道，骑了大概只有 823 公里，并且自东方市过来之后，基本上就再没有见到海。不过总归是骑完了，也算是实现了，我一直想环岛的梦想。最主要的是这一次没有搭车。环岛建议下面是根据个人环岛一圈的经历，总结出的一些个人建议供大家环岛时，做一些参考。首先我们先说一下环岛的一个难度问题，相比之前的川藏南线318，或者说其他的长途路线来说，海南的环岛路线是相对骑行难度很低的一条路线。全程没有海拔和缺氧问题，也没有特别大的爬坡（万宁那个坡，推车一个小时也能上去），而且今年的环岛公路开通之后，整个环岛的线路路况也特别好。而且沿途的旅游业相对比较发达，住宿条件也相对好很多。时间选择因为海南是中国最南边的一个省份，所以常年比较热。所以年底的 11 月到次年的三四月份一直是环岛的一个热门时期，其他时间会很热，多雨多台风，不适合长途骑行。而年底到次年年初的这段时间，海南的温度大概是在20度左右，比较适合骑行，并且天气也比较稳定，很少会下雨 (但是我连着四天都有雨，只能说运气特别背)。车子问题关于车子的问题，无非就是邮寄自己的车子和去驿站租车。不管是租车子还是邮寄自己的车子，都可以通过驿站来完成海口，目前有三家比较大的驿站，分别是57、517 和 飞登，如果你环岛的话，这三家任选一家都可以。 具体的可以根据自己在海口住的位置进行选择，比如说比如飞登和517这两家，都是在海口城区，57驿站在机场的方向。如果想骑自己的车子，可以通过各家驿站的公众号联系客服，要海口驿站的地址和联系方式。把自己的车子直接通过快递还是物流的方式寄过去。如果你像我一样不想自己打包的话，可以把车子骑到家附近的一个车店，然后让他们帮你打包好，再自行快递下单，从车店寄到海口。一般车店打包自行车的价格是 100 块钱，有一些车店可以讲价的话，会更便宜。但是太贵的话就可以换一家车店问一下。我从西安寄过去的快递费是 140 块钱左右，加上车子打包的价格大概是 240 块钱，寄回来的价格也差不多，如果你自己不会保养的话，寄回来的时候尽量找车店去保养一下，寄车子的时候可以把一些随车的东西一起带过去，让车店打包的时候放在箱子里面。这样你去海南的时候会少很多行李。比如说头盔，骑行眼镜，补胎工具之类的。如果你没有车子，或者说不想这么麻烦，也可以选择租车。这个就可以提前联系这几家驿站的客服，向他们询问租车的价格。如果在驿站租车，一般都会免费提供头盔，驼包以及补胎工具这些必需品。线路问题海南环岛目前有三条线是比较火的 ，就是前面提到的东线西线以及中线。大部分环岛的骑友会走东线和西线，绕一个完整的圈。其实这个环岛线路也不是绝对的，我在路上，还遇到有骑友西线骑一部分，然后再转到中线。如果你和我一样想环东线和西线，那么我建议你先走西线再走东线，也称西进东出。原因有二第一，如果从逆时针走，不会碰上逆风。再者我们骑行是靠右走的，如果你是顺时针走，它是全程走在公路不临海的那一侧，如果你想看海的话，就需要穿过马路，相对来说会比较危险。海南环岛旅游公路是今年修通的，路况很好，如果你不像我这样抄近道的话，一般不会碰上什么烂路。如何导航关于导航的问题，在环岛的途中，如果从当天的出发点直接导航到目的地，大概率地图软件会让你走最近的一条路，那么这条路大概率离海很远。解决这个问题的办法，就是在导航途中去设置途经点，将图中的1至2个村镇设置为途经点，这样导航就会沿着你的途经点一直靠着海边走。最后，即使你走的是离海最近的一条路，也会有很多地方看不到海。因为旅游公路和海边有一定的距离，大概是500米到一公里，比如下图这样：住宿问题沿途的住宿环境相比其他骑行线路好很多，基本上每隔二三十公里都有城镇可以住宿，好处就是你不需要严格按照驿站或者网上制定好的攻略来走，每天骑多少公里？目的地是哪里都可以根据自己的进度来调整。比如我就是每天下午三四点左右，就看好晚上住在哪个城镇，然后在网上看好住宿的地方。联系前台确认是否能将自行车放在房间内。确认好之后会直接订酒店，然后导航过去入住。或者每天早上出发前查一下，今天预计要到的目的地，有没有住宿的地方？再根据自己的体力，适当的调整当天的目的地。因为长途骑行不会带很多换洗衣物，沿途可以尽量找能洗衣服，可以烘干的酒店，会省很多事。我和朋友两个人全程住双人间，基本上价格都是在 80 到 150 左右，三亚的话会贵一些，双人间价格在 300 左右。年底是旅游旺季，去三亚旅游的人也比较多，建议提前一天到两天订好三亚住宿的酒店。花销问题从内地去海南最方便的方式是坐飞机，因为没有高铁的缘故，所以去海南的机票一般都比较贵，尤其是年底的时候。我买的是往返的机票，大概是1600块钱左右。一路上没有景区门票的开销，每天吃饭住宿的花销大概在200到300左右，我和朋友环岛十天的总花销差不多 6000（纯环岛花销，不算大交通）。
三个小时，宛若大梦一场。通过这部话剧认识到了不一样的法海，也对青蛇这个故事有了新的体会。正如剧中台词所说：＂大多数同情多于思索，却从不去考察。＂之前从未想过话剧的感染力可以这么强，或许这就是话剧的魅力吧。遗憾的是，这部话剧只演了十场，而且已经过去十年之久，应该没有机会再看到现场版了。这是看到最后大家给的评分：【1080p高清修复/字幕】话剧《青蛇》（袁泉、秦海璐、辛柏青主演，田沁鑫执导）https://www.bilibili.com/video/BV1vz4y1G7z5
这次去出去骑车与之前去川藏不同，之前是完全没有环洱海这个计划的，虽然和朋友提起过一次，不过也属于聊天时的顺嘴一说，也没有像是川藏或者海南那样计划很久。自从川藏那次回来之后再也没出过省旅行，更别提出去骑车了，原本 2020 年底就计划环海南的，因为各种原因一拖再拖。或许是太久没出去了，还是其他的什么原因导致个人的状态不太好，在三月底四月初这个时间就特别想出省玩几天，但是去哪合适呢，环青海湖 现在有点冷、环海南 和朋友已经约好了年底去，而且时间也不太够边骑边玩得十天左右。在 4 月 3 日 刷到了 B站UP主 “VKKKKK大魔王”发的视频 【骑游中国】没有人能拒绝这条路线！在最浪漫的季节环洱海｜公路车视角带你体验大理的春天｜大理骑行｜一起感受大理慢节奏生活这让我想起之前和朋友提过一次的洱海，现在这个季节去大理也是个不错的选择。而且去骑车的话三天就够了（两天在路上，一天骑车），但我不想那么赶，毕竟出去还是想放松一下。于是第二天早上和公司 leader 沟通了一下工作安排，确认好时间后就申请了调休。4 月 10 日、11 日调休，拼上两个周末一共四天（4 月 8 日 ~ 4 月 11 日）。接着就买了 4 月 8 日早上七点多西安飞昆明的机票，然后再从昆明乘高铁到大理，返程也是如此，从大理到昆明再飞西安。西安到大理4 月 8 日到大理高铁站已经是下午两点了，出了高铁站对面就是公交车站。坐三塔专线到三月街口大约一个小时，路上会经过“兴盛大桥”往右边看的话就能看到洱海。在公交往大理古城行驶的路上已经用手机看好了住宿的地方，在古城里面的复兴路和玉洱路附近，所在位置很不错。可能是淡季的原因吧，再加上环境不如民宿那么好（不过我一个人住也不太挑这些）。房价是 80 一天，于是我直接定了 8 号晚上和 10 号晚上两天的住宿，住宿的地方找好后，我就去找地方租自行车。在美团上看了一下，找了评价相对好一点的一家店，去店里和老板沟通了租车的时间还有价格。我租的是一个捷安特的山地车，租一天是 60，租两天有优惠 108，我选择租两天的，这和我的骑行计划有关：如果只计算环洱海一圈的路程则在 120 公里上下，而我算上从租车点绕一圈再回到租车点的距离， 一共是 130 公里。我的计划是第一天到骑到双廊 60 公里，第二天再从双廊骑回大理古城 70 公里，相对来说没有那么赶 比较轻松，同时也能可以在双廊玩半天。和老板确认好租车的事情后已经是下午四点多了，想起今天的午饭还没有吃。经过老板的推荐，吃了一家离他们店并不远的土鸡米线，一碗 15 元，价格不贵，味道也非常好。吃完饭后已经是五点了，在大理古城逛了一下，拍了点照片（包含找车店前闲逛拍的）：有人评价说这张自拍看着油腻，像三十多的样子。大理到双廊4 月 9 日上午七点多就起来了，去美团评分还不错的一家店铺吃过桥米线，离住的地方有一些距离，早上也没什么事，慢慢的晃悠着，很快就到了。吃完早饭回去拿背包，顺便在路上拍了一些照片。清晨，大理古城街道上没有什么人，与昨日见到的喧嚣不同，有一种别样的宁静。吃完饭同样晃悠着回到了住宿的地方，已经九点多了。带上自己的背包，去昨天看好的车店租车。车店九点开门，我到那里时已经九点半了。或许是早上，店里也没什么人，只有老板娘一个人在店里，办完租车的手续后，交了200元押金，老板娘给我大概讲了一下骑行路线，在哪个位置需要怎么走才能一直沿着洱海骑，同时发给了我一份洱海周边几个古城的美食攻略。除了这些，还给我提供了 补胎工具、上管包、头盔等骑行装备，本来我是不想带补胎工具的，因为我骑车这几年，一万多公里一直没有扎胎，环洱海只有一百多公里，更没有必要带补胎工具了。不过在老板娘的强烈建议下，还是带上了补胎工具。从店里出发已经快要十点了，按照老板介绍的路线，我先导航到了“才村码头”，沿着生态廊道顺时针方向开始环洱海。今天只需要到双廊，只有 60 公里的路程不算太远，边骑边玩很轻松。从大理到双廊这一段基本上都是平路，因为桃园码头那一段的生态廊道还在修需要走一段大丽线（大理到丽江的一条路，贴着大理古城、喜洲古镇过去），这段路是有几公里的长坡，不过坡度不大，骑起来还算轻松。一路骑过去，十二点左右就到了上关镇，查了一下地图，离双廊古镇还有十五公里，干脆等到了双廊再吃午饭。到双廊古镇已经是下午两点多了，在古镇里找到了住宿的地方，老板在院子里种了很多植物，虽然小院不大，但看起来很舒服。住宿也很便宜，环境比我在大理古城住的那家好很多，大床房 115 一晚上，很划算（回来后在美团查了一下五一期间的价格，这间房在 500 左右，看来错峰旅游不但人少，还能省下不少钱呢）。住宿安排好了之后，简单收拾一下，就在双廊古城的街道闲逛，顺便看看午饭吃什么。顺着双廊的主街道民族文化街一直往南诏风情岛逛着。路过了一家卖四川柴火鸡的铺子，店里没什么人，有可能是因为不是饭点的缘故。因为本人爱吃鸡肉类的食物，就去尝试了一下，本来在景区吃饭对味道不会抱有什么期望，没想到味道超级棒，算是一个意外收获了，服务态度也很好，老板过来好几次问我味道合不合适，缺什么的话还可以调。因为店里没什么人，吃完饭后和老板很热情闲聊了一会。才知道这家店刚开业不久，老板是四川德阳人，这几个月才来这边开的店。现在回想起来，这次柴火鸡是我在大理四天吃的最符合个人口味的一餐，如果后面再去大理时，这家店还在的话，我一定会再去。吃完午饭后继续在双廊古镇闲逛，拍了很多不错的照片。因为双廊古镇本身也不大，吃完饭逛了不到三个小时就回去了，回去的路上夕阳很美，路过一个小巷子，巷子那头就是洱海，顺手拍了张照片。在回去的路上，买了一罐大理当地的啤酒“风花雪月”，包装设计的很好看，酒精度也不高，蛮好喝的。双廊回大理4 月 10 日起床比较晚，出发的时候已经将近九点了，按照租车店老板给的美食攻略，去了一家馄饨铺，或许是因为昨天柴火鸡给我带来的惊喜拔高了我的期望，感觉只是中规中矩的一顿早餐。吃完饭就沿着洱海继续往下关方向走，今天的路程比较远一点。有 70 公里，有几个坡，但坡都不长，基本都在一两公里以内，坡度也不是很高（没带码表只能估算了）。十点多太阳已经升的很高了，气温也开始热起来了。没有拍很多照片，一直在赶路，只是偶尔停下来拍了一些：快到挖色镇的时候，运气很好，后轮爆胎了，终结了我自16年开始骑车到现在一万多公里没有爆胎的记录。其实还好，在租车店老板娘的建议下，我带了补胎工具，自己补一下就好了。或许是因为自己第一次补胎的原因吧，没有什么经验，一个后轮补了一个小时。这个时候我想起了川藏线上同行的小马，在泸定到康定的这天下午，连着扎了三次还是四次胎，或许是因为熟练吧，补胎速度飞快，好像十分钟就完成了拆后轮、扒内胎、补胎、装回去这些步骤。补完胎继续环洱海的行程，或许是因为温度太高、或许是自己太菜、也或许和海拔有关系，速度一直起不来，等到下关镇，体会到了下关风，速度就更慢了，直到再次回到生态廊道，速度才稍微快一些。在下午五点左右，回到了“才村码头”，自此我环洱海骑行计划顺利完成，从才村码头骑回大理古城租车店，已经是五点半了，将车子归还后结束了我骑车的行程。回到第一天住宿的地方，因为提前付房费了，所以老板还有留一间房，简单冲了个澡，休息到晚上八点多，去苍山门拍了两张照片，接着去三月街逛了一下，人不是很多，也没什么摊贩（后来才知道早市比较热闹，并且在 5 月 4 日 到 5 月 10 日，这里会举行“大理三月节” 有数十万人参加）。最后一天4 月 11 日睡到九点多才起来，早餐去东门那家吃了土鸡米线，离去高铁站还有三个多小时，就在大理古城的街道闲逛，周二的大理古城相比周末人少了很多，本来想和以往一样，买点明信片和书签，但只找到了一个邮政的小房子，也没有自己喜欢的明信片。因为古城核心区域的街道第一天就逛的差不多了，就想着找一家书店逛逛，买一两本书在回去的路上看，然后就搜到了“大方书店（古城店）”，很多人评价，理我也不远，就去看了一下。一进门就感觉到了这家书店和其他书店的不同，其他书店在一进门的推荐位上，放的大都是畅销书，书不一定好，但一定畅销。这家书店显得有点另类，推荐位放了很多冷门的好书，它们不一定畅销，但都值得一读。《叫魂》就是一本非常冷门的书，书店还贴心的附上小纸条对内容进行介绍，除此之外，作者年代，写作风格，以及获奖原因等信息在书架上进行标注，看得出来是一家很用心的书店。可惜走之前几个小时才发现这个书店，没有逛多久，但也发现了不少好书，自己也买了几本，一本在路上看，剩下的书可以免费寄回去（寄到家我拆快递的时候才发现包的很严实，没有因快递的原因受到一丁点的损坏，对书店的好感倍增，可惜只有线下书店，如果有线上书店的话，我或许不会再选择当当了）。在书店一直待到将近十二点，因为要赶高铁的缘故，在选了几本书之后，就匆匆离开了，赶下午两点多的高铁到昆明，晚上七点多的飞机回西安，结束了匆匆几天的旅行。补充与推荐关于租车大理租车很方便，租汽车、摩托车、电动车（在大理，充满电的电动车能跑 200 公里）、自行车的店铺很多，我租车这家店服务很好，个人还是很推荐这家店的。柴火鸡要说我在大理吃的最满意的一顿，就是这个柴火鸡了，如果路过双廊古镇的话，推荐品尝一下。(人均 50 多的价格在我们西安也就这价了 更何况是在景区，感觉性价比很高。)大方书店书店这个就因人而异了，我比较喜欢逛书店，而且相比其他书店这家书店的风格确实很喜欢，如果在大理古城想逛书店的话，也是很推荐的。防晒这是我这次旅行最坑的一点，没有做防晒。心里想着就两天晒一下无所谓，没拿防晒霜、没拿补水的东西，结果就。。。。分享一下我川藏当时防晒的技巧：UPF50+ 的防晒霜：每天出发涂上，到了住宿的地方就洗掉。芦荟胶： 晚上休息时给 手、胳膊、脖子处厚涂补水面膜，每天睡觉前敷一张（效果巨好）结尾第一次独自旅行，并没有想象中的彷徨、孤独。反而与以往的旅行相比，有了很大程度的自由，或许从这次开始，我会喜欢上独自旅行吧。虽然现在的体重在200左右，相比川藏那次重了 30 斤，但环洱海还是没问题的。
很久之前在某处看到过这么个说法：“24 岁是一个很有意思的年龄，因为它离 18 岁和 30 岁一样近（18岁成年，30岁成家立业）。”在以往的认知里，我一直把这段话当作是一段无病呻吟的鸡汤。但在我傍晚一个人出门的路上，不知怎么的，忽然就开始迷茫起来。也不知道具体是在迷茫什么，好像就觉得，日子一天天过着，忽然就迷茫起来了。我和一个三十多岁依然单身的朋友聊了一下，我们就叫他 LPK 吧。我问 LPK：“到了三十多岁，身边人都结婚了、有了家庭、有了孩子。但你好像除了工作之外，什么都没有，会不会有一种迷茫感，因为在我看来，或许这个年龄段的人，有了家庭和孩子，那么他做的很多事情将会变得有意义。那如果三十多岁这些都没有的话，日子一天天就那么过着，会迷茫吗？”我自以为，以我对 LPK 的了解，他会这么说：“我没有想过这个问题”，或者他会说：“我不看重这些，这只是你这个二十多岁才会有的想法，阅历多了之后，不会觉得这是什么问题。”结果他回答我说：“坦然的讲，我有时会迷茫的，你有没有发现我之前是一个效率很高的人，周末的我往往会和工作日一样，100% 或者超过 100% 的劲头去做一些事，但我现在只有工作日在忙，周末慢下来了，去溜溜弯，做做饭，下午的时候学一会东西，晚上再玩会游戏，十点半就睡了。在我看来这已经是自己迷茫的一种表现了，我以往是不会去做这些事的，吃饭只会点外卖或者出去吃，也不会出去遛弯，认为做这些事情只是在浪费时间。"接着他说到：“虽然我会迷茫，但是我又能不断地纠正自己，因为我想知道我要什么，我也知道我现在做的事情是对还是不对的。”“如果想让人生不空洞，就要有自己的目标，俗一点的话，赚钱也好，这也是一个目标。或者按你自己说的，到处转转，读读文学，做一个文艺青年。”LPK 一提到读书，我忽然意识到今年我在阅读喜好上的转变，在 2020 年前后，除了技术性的图书外，我只会看一些现代文学，用 LPK 的话说就是：“都是一些臭鱼烂虾的心灵鸡汤，我看不上。”每次他这么说，我都会从心底觉得：“他已经三十多了，不像二十多的我有激情，愿意看一些个人成长方面的书，追求上进。”现在的我，阅读的喜好已经从这些现代文学，转换到了经典文学或者人文历史方面的读物。或许是想从一些经过时间考验的文学作品中，感受作者的想表达的东西，充实自己的思想，起码在一些事物上，不再迷茫。除此之外，我还有一个非常大的改观，以往我是不会去考虑买房的，因为在我看来：“买房贷款几十年，压的人喘不过气，很多人的梦想、自由都因此束缚。”但从今年开始，我也有了攒钱买房的想法，说不上是为了我自己，还是为了未来的 TA，心里想着：“或许买了房就能稳定下来，有了稳定的生活，就不会再迷茫了”。不过说了这么多，有一点还是好的：“保持求知欲”，不管是 技术上的，还是其他方面，或许在未来的某个时间，这种求知欲消失后，我才会真正的迷茫吧。结尾：其实我不太愿意写这种东西，总觉得是无病呻吟。不过这次说不出为什么，总想写下来。或许等到三十多再翻到这篇文章，会有一种“黑历史”的既视感，但那又如何，确实是当下二十四岁的我，一些迷茫的感想和转变。
幕布回来了，我又用起了幕布起因三月中旬在幕布核心用户群里看到群友发消息说：“flomo 的老板从字节手里接手了幕布”，之后 flomo 的两位老板在群内说幕布暂时不会对外承诺更新，今年的重点的求稳。不管怎么说，幕布正常运营下去应该是不会再有什么疑问了，最起码打消了我之前所担心忽然关闭服务器的顾虑。几年前因为幕布不能满足我的笔记需求，我将笔记方式从幕布的大纲笔记换到了 Markdown 的文档型笔记。像是一些偏向技术性的阅读笔记、或者经验积累文章，Markdown 的记录方式的确更友好。不过在一部分笔记场景下，我还是常常怀念起幕布的大纲笔记。其实我对幕布一直有一种比较特殊的感情，因为我记笔记这个习惯就是从使用幕布开始培养起来的。传统的笔记方式，需要我长篇大论的去记录大段的内容，让我对记笔记这件事有非常大的压力。尤其是像我这种不会总结的，基本上就属于摘抄型笔记（其实也就是我现在阅读技术书籍的笔记方式）。后来接触到了幕布，用大纲的方式去记录笔记，对于阅读一些非技术性的书时，一般都是想到什么就顺手记录一条，或摘抄书中短短的一句话，没有了长篇大论的笔记压力，逐渐的就养成了记录笔记的习惯。当养成了记录笔记的习惯后，即使目前使用 Markdown 这种笔记方式，单篇笔记达到数万字，也不会有太大的记录压力。记录多了之后反而会有一些成就感，有点像仓鼠的意思。ALL IN ONE前面提到了，因为技术类的笔记更适合在 Markdown 场景下记录。所以从我开始看技术类图书起，我就将笔记用 Markdown 的去方式记录，加上本人有 All In One 的软件习惯，加上幕布更新延缓的问题，逐渐的我只用 Markdown 来记笔记，抛弃了幕布的大纲笔记。为什么要换回来对于一些非技术性的阅读笔记，用幕布记录的话，体验更好。而且写完的笔记可以一键转为思维导图，这个功能作为幕布的核心竞争力，还是非常实用的，可以让我更好的整理阅读笔记内容、对一些工作中的内容梳理也更方便。换句话说，用回幕布还是因为思维导图和大纲笔记太好用，尤其是在移动端上的记录体验，因为非技术性的阅读我大部分不会坐在电脑面前，所以手机上的记录体验也很重要。所以就着幕布转手到 flomo 团队的这次机会，没有了后顾之忧。我决定将工作记录、非技术性阅读笔记、个人一些杂七杂八的规划、灵感记录等内容，重新移到幕布。将 技术性笔记、经验积累继续使用 Markdown 的方式。数据掌握在自己手里?之前我曾写过一篇文章，说笔记数据要掌握在自己手里，所以这次把笔记换回幕布，与我当时的想法有一些背离，只能说幕布的功能对我的吸引力还是太大了，而且个人使用幕布到现在已经稳定的走过了六个年头，加上有大佬接盘（bushi），对于数据安全现在也不会有太大的顾虑。最后附上一个几年前的读书笔记思维导图：https://share.mubu.com/doc/2aofdnSYxF
使用笔记软件过程幕布做笔记这个习惯是从 2016 年开始的，刚好那个时候幕布刚兴起，对比传统笔记方式来说，大纲笔记也能满足我那不多的笔记需求。Markdown再后来到了 2019 年的时候，开始有意识地写一些技术类的文章，然后发现幕布对大段文字的笔记内容支持并不是特别理想，也不支持代码块（后来迭代支持了行内代码块，但目前为止依然不支持多行代码块）。于是我把笔记载体转向了更适合程序员的 Markdown，在尝试了语雀、有道云、wolai、Notion 等一系列基于云的笔记软件然后选择了语雀，支持的功能很多 虽然UI样式不太喜欢但好在够用。云笔记的烦恼在使用语雀有两个月之后，我觉得语雀基本上能满足自己对笔记软件的需求，然后就想把之前在幕布上积累的笔记逐步移到语雀上。然后意识到一些很尴尬的问题：幕布是大纲笔记，直接粘贴到语雀或通过 Word 文件导入导出，都会造成排版混乱的问题。既然不能导入语雀，那么我把幕布的笔记下载到本地，在本地查阅也是好的，但好巧不好的是幕布不支持批量下载导出，要么逐个复制出来、要么逐个下载导出。 于是我意识到一个严重问题，为了避免云笔记厂商终止提供服务或者功能变更导致自己的笔记数据丢失，笔记的数据需要掌握在自己手里，最好还是多重备份的。 我的方案于是我对笔记的需求进行了重新梳理，归纳为了：云同步 和 可控。然后选择了 Vnote + 坚果云的笔记方案。通过坚果云，我可以实现在 公司的电脑、个人电脑、移动设备上笔记数据同步，且在未来的时间 如果坚果云停止了服务，那么我在三个设备上依然有笔记数据，找个其他服务把坚果云替代掉就好了。笔记软件最开始使用的是 Typora, 当单篇笔记内容超过 5W 字之后就会开始卡顿，于是换到了 Vnote，实测 单篇文章 8W 字笔记也不会卡顿。因为 Vnote 仅是本地 Markdown 编辑器，在未来不再维护的时候也可以被轻松替代掉。这个笔记的方案已经使用了三年多，除了笔记、包括简历也是使用 Vnote 来完成的，基本上文字工作都可以被满足。
开头自从我骑完318回来之后，一直想找个时间写一篇游记，但因为我懒，拖了有大半年之久。最近决定开始把这篇游记补上，原因有二，大过年的比较闲，有充足的时间可以写。写这个的原因呢，主要是第一次按照自己的想法去尝试一件事情。经历的过程对我来说，有着不同寻常的意义，所以我想把这个过程用文字的方式记录下来。也不打算写的很详细，一方面没必要和流水账一样，还有就是网上或各家骑行驿站的攻略都很好了。我就不要再写一个偏攻略类的游记，我也写不了那么全，单纯作为一个对我本身这件事的一个记录去写好了。如果想看比较详细的骑行纪录，可以去看我的掘金沸点。时间太长可能要翻很久，骑行的时候几乎每天都有发。缘由第一次去西藏是在2015年（14年还是15年有点记不清了），那时候对西藏的印象只有两个，高原、缺氧。后来对川藏线（G318，川藏南线）陆续有了了解之后，感觉15年这个时间点去川藏线，是一个比较合适的时间点。烂路不是很多，同时路也没有被修的特别好，很多隧道还在施工，所以大部分老318的一些垭口，值得打卡的一些地方都还会路过（比如高尔寺山垭口、后面的排龙天险等等，因后续隧道通车，已经不走这些地方了），这是我后面骑车再去的时候无法经历的。因为时间太久远，过程中很多事已经记不清了，只记得西藏的风景和骑车的人。或许从这次旅行开始，就埋下了骑 318 的想法。后面就 16 年的6月份，买了第一辆自行车，UCC 阿帕奇3 2016 款。然后就加一些微信骑行群的，开始参加一些骑游活动，但作为一个菜腿，基本上就是最慢的一个。开始骑车之后，就关注一些骑行相关的纪录片，最早接触成系列的纪录片应该是况露拍的《行疆》，并不精致的画面、略显粗糙的剪辑、加上况露的配音，一部看起来并不是很成熟的纪录片，在豆瓣上有着 9.5 的高分。或许是因为这部纪录片的真实感，又或者是因为其他什么说不清楚的原因，让我也对骑行西藏这件事开始上瘾，后来在18年左右，有了骑行川藏线的想法。那时候虽然有骑行川藏的想法，但没有一个很明确的计划，只知道川藏我是肯定要去的。至于什么时候去？ 和谁去？要做什么准备？都不知道。但是开始对骑行和西藏这两个事情开始上瘾。一直到了20年2月份左右，过年加上疫情，哪也不能去老实在家待着。那时候看到了B站有个UP叫 “咕噜哥的环球旅行日记”，发了他在 2019 年骑川藏线的视频。算是一个小火苗吧，引燃了我一直想骑川藏线的心，于是我决定该起程了，在20年去骑川藏线。那时候的我 220 多斤。骑川藏线，第一个要做的事就是先瘦下来，二百多斤的体重还想在高原爬坡，想屁吃呢。后面通过各种方式吧，到了六月份，瘦到了 170 多斤。当时想法就是，虽然瘦不到150吧，但起码我减掉了行李的重量（当时预计驮包在50斤内）。启程前面说过了，我不会写得很细，所以我就不按照攻略那样写，而是一段段的，记录一些东西。离开了我待了两年的公司，同时开启了一段让我期待了很多年的梦想。我记得很清楚，6月17号办完离职，6月19号的高铁从西安到成都。出发前一周，我把16年买的 UCC 寄到了成都的波尔店里，和队友约好在波尔店里碰面，然后一起买了一些需要用到的装备。后来经过波尔店里三姐的推荐，在第二天去了心旅在成都的驿站。打算第三天，也就是6月21号出发。出发前一天还在成都见了一位认识挺久的网友，本来计划顺便见见另一位网友分分（百分的作者，起码我是这么一直称呼他的），但因为分分暂时不在成都，只能作罢。过程2020 年 6 月 21 日，伴随着小雨，开启了我的318之旅。2020 年 7 月 20 日到达拉萨，用了刚好30天。成都 318 第一个打卡点关于队友一路上，陆续遇上了后来一起走的队友（老哥、老八、小马），也与最开始在网上相约的队友（未成年）半路分别。或许这也是长途旅行中的一种有趣的经历吧，有些人你认为是可以一起走到终点，但却半路分别。而有的人，半路相遇，以为只是一面之缘，却相互鼓励走到了拉萨。至于与未成年半路分别，现在看来也算是很正常的事情。每个人体力的情况都不相同，很多时候我感觉是骑不动了，但从队友的体力上来说，可以骑得更远。而后面遇到的 老哥、老八还有小马，我们四个人体力相差不多，但更多的是缘分吧，我们或许骑得很慢，但总归是一起到了拉萨。关于爬坡在出发前，在西安一起骑车的骑友对我说，还是别去了，你分水岭（一个爬升高度 1500多米 ，34公里的一个垭口）都没上去过，四五千米的山，怎么爬得上去。从成都到拉萨 ，海拔在4000米以上的雪山有 14 座。其实在出发前，我的心里并没有底，到底能不能骑到拉萨。但人嘛，总要去试试。现在的我不管是从体力上来说，还是时间上来说，都是更轻松的。而且对于一个热爱骑行的人来说，318 更是一种以自己方式的朝圣之旅。二郎山 H2140第一个爬的山是二郎山，二郎山早早的修通了隧道，所以骑行到隧道海拔 2000 只有出头，第一次拖着驮包爬坡的我，爬的是相当痛苦。折多山 H4200第二个爬的山是折多山，也是川藏路上第一个海拔超过4000米的山，早上八点多就从折多塘村出发，下午将近四点才到折多山垭口，我骑得很慢，但慢慢骑，也能爬到山顶。等爬到折多山垭口时，其实我是松了口气的，当时心想这下稳了，四千多的都能爬上来，五千多的咬咬牙，不就完了嘛。高尔寺山 H3900 + 相克宗 H3500过了新都桥，算是真正的进入了高原，休整一天后往相克宗出发。新都桥镇到高尔寺隧道其实还好，海拔从 3400 到 3900，慢慢爬难度不大。难的地方是下了高尔寺山，从雅江县城往相克宗走，雅江县城海拔 2500 距离 17 公里的 相克宗 海拔 3500，十七公里爬升1000米，再加上上午爬了高尔寺山的小缓坡，体力有一定的消耗，爬起来那叫一个痛苦。新都桥到高尔寺山隧道的路上雅江到相克宗现在还能想起路边的留言，“往回骑，全是下坡。”，别的不说，川藏骑友们苦中作乐的性格蛮是有趣。看到路边着写留言，笑一笑，仿佛也不是那么累了。天路十八弯从相克宗到红龙乡，一天要翻过四座海拔在4000米以上的垭口，剪子湾山、尼玛贡神山、卡子拉山、还有一个记不起名字的垭口。这一天应该是出发最痛苦的一天，每次快到垭口的时候，就下暴雨，雨大的眼睛都睁不开。只能咬牙往前骑。到了下午五六点的时候，坚持不住了。第一次有了想搭车的念头，多次遇上暴雨、4000+ 的海拔、连续上坡下坡，感觉我的体力已经到了极限，甚至当时停下车 站在路边休息都站不稳了。当时就想给红龙乡的心旅联盟的老板打电话，然后掏出手机，发现，没网。只能休息了十几分钟后，硬着头皮继续骑行，好在骑了不远，就看到联盟的老板在路边等我们，问了才知道，说有很多骑友就是从这里开始搭车的，所以现在每天下午四五点的时候，在这里等需要搭车的骑友。我记得很清楚，第一次搭车，老哥、小马和我，三个人的体力都近乎透支的状态。老板开车往红龙乡走的时候，我们才发现，在距离接我们不远的地方，又开始了爬坡，这是今天的第四个垭口，卡子拉山垭口，海拔 4429。现在回想起来，这个垭口 13公里的上坡路，如果不是那天老板来接我们，我就废了，真的，我绝对可能从理塘坐飞机回家。海子山 H4600海子山海拔4600，缓坡。爬起来还好，只是缺氧，让人慢了些。觉巴山 H3991到了觉巴山，我已经有些适应了川藏线的爬坡风格，虽然还是很慢，但都能爬上来，觉巴山的海拔并不高，主要是路抖，弯多。你爬的累得不行，往山下望去，昨晚住宿的地方就在眼前，而你已经骑了三个小时了。东达山 H5097东达山在川藏线上绝对有非比寻常的感触，因为它是川藏线上第一座海拔5000米以上的高山，出发的时候是早上八点出发，将近八个小时，我最终骑上了东达山，在前一天晚上我还在想，如果我半路骑不动了，我就搭车，毕竟5000海拔，怂是正常的。快到垭口的两公里，边休息边骑，将近用了一个小时，骑五十米，休息一会，再骑五十米。骑行顶着暴雨骑到了东达山垭口，队友早已下山，我只能给自行车拍一张照。当天晚上我发了个朋友圈 “翻过东达山，遇见更好的自己”。在我以后的人生中，翻过东达山这件事，总能给我很多自信心去尝试自己未曾尝试过的事情，让我的人生有更多的可能性。过了东达山，再往后走，感觉翻山的压力也没那么大了，因为我知道，我肯定可以。关于搭车整个川藏的骑行过程中有三段搭车经历。第一段是相克宗到红龙乡，最后的30公里；第二段是波密到林芝，因为车子坏了，在波密也没办法修车，只能搭车。第三段是松多到拉萨，因为感冒的原因，再加上高原缺氧。感觉体力跟不上，没有冒险爬最后5000米的米拉山。其实我出发前对搭车挺排斥的，认为既然出来骑川藏，就应该一圈一圈的踩到拉萨。但上路之后才意识到骑行川藏线的难度有多大，后来也想通了。我是来体验的，不是来作死的，当坚持不下去的时候，该怂还是要怂的。关于留言看着路边栏杆上写的留言，忽然意识到 这特么不就是现实生活中的 “弹幕” 嘛。可以让来自不同地区，不同时间的人们，通过这种方式交流。很有意思，算是川藏线上独有的一种文化吧。也有人觉得，这不就是鸡汤么。但实际当你在那种筋疲力尽的环境下时。虽是鸡汤，但真的香啊不是吗，下面是我在路上收集的一些留言：有人说，人生是一本书，不旅行的只读了一页。人生的苦乐，只有经历，方能体悟；世上的悲欢，只有上路，才会逐渐明白，单车骑行西藏的路上难免会有孤独失落，但遇到的困境越多，心也就越来越强大。即使最终被打败，最少也应该在失败前看清自己到底是如何就范！一个坚强的屁股，一颗自由的心。人生就是一段路，当你觉得费力时，你已经走上坡路了！加油，少年！西藏是一种病，不去治不好。西藏是一种瘾，去了戒不掉人生就像川藏线一样，有时高有时低。 你是否告诫自己，坚强的度过每一个时期！困难不就是个坡，等你去翻越。听人讲：一个没有去过西藏的人，都会深信有一天会踏上那片土地。每一个离开西藏的人，都深信自己还会回去。我只是这条路匆匆的过客，它终会把我的痕迹擦去，而我却在这条路上，满载回忆！天空不曾留下鸟的痕迹，但我已飞过。照片虽然不会写太多的细节，但仍想把路上的风景分享出来。遗憾关于遗憾，这个要看你怎么想，我认为 遗憾更像是为下一次出发留下的一个 “种子”，等着我下次去填上这个遗憾。第一个遗憾，最后的一天因为感冒了，全身没力气，就搭车去了拉萨，没有爬米拉山。第二个遗憾，没有看到南迦巴瓦峰，15年因为修路堵车的原因，过色季拉山垭口的时候已经是晚上了。这一次因为搭车的原因没有看南迦巴瓦峰。或许下次再去就有机会一睹南迦巴瓦峰的真容了。结尾对于这次旅行我的目的是什么，出发前我也说不清楚，知道上路之后，在路上我找到了我旅行的目的：“去经历，遇到的人、发生的事、还有路上的风景”318的骑行结束了，但我已经开始期待和规划下一次启程的故事了。从左到右（小马、我、老哥、老八）能骑到拉萨，要感谢路上队友对我的帮助鼓励，如果没有他们，或许我根本到不了拉萨。路上认识了这么多朋友，发生过这么多事，也是我最宝贵的回忆。