作者: admin

  • 《保重》读书笔记

    看胶东往事感觉很熟悉,看大冰的书就像回到了儿时,夏日悠长的小巷子里,还是土路,还是绿树成荫,蝉鸣阵阵。好多小孩子,下雨了我们去看水铃铛,枣熟了,我们一起去打枣,哈哈哈,shiwei掉到废弃的粪坑了,下雨了,他妈妈提溜着他在路上的车道水坑里边骂边洗。

    85个笔记

    点评
    2025/07/24 认为好看
    人嘛,努力未必会进步 不努力就一定和进步没关系。大冰是儿时《阳光快车道》的主持人,当时每周等待他。现在看他的书也有亲切感。最近在B站看到他连线直播的切片,感觉说的事情对我很有启发,又找来他的书看。本来去首图借来看,他的书总是被借出的状态。又跑到首图四层看库本,看第一个故事就掉泪了。

    婉儿,有苦有坚强。不想用悲剧就是把有价值的东西毁灭给人看来形容,因为婉儿的剧本还没有完结,愿她未来都是励志全家欢剧。大冰是一个很好的讲故事的人,不急不躁,需要向他学习。也有慈悲之心,包容之心。

    我是容易急躁的,也需要学会平静。

    (四)
    2025/07/16 发表想法
    为爱自己的人而活

    原文:轻轻告诉她,再忍忍,想想爸爸,你还有爸爸。

    女孩们太明白自己年龄的优势,知道法律对未成年人制裁有限。
    没过两天,爸爸辞去了工作放弃了五险一金,来学校当了一名保安。他决定24小时卫护女儿,身为一个没什么办法的父亲,这是他能想到的唯一办法。
    (五)
    对方说没钱,赔不了,不信的话可以拉个QQ群找人做证,好几个人都能证明吉他是丢了。你莫夸张唔,对方道,讹人也没用,我们都打听过了,报警了警察也不会管,那把吉他根本不值钱,立不了案
    (七)
    2025/07/16 发表想法
    太难了,比我上学难多了。

    原文:痒疼难忍,起皮翻边,忍不住撕去几片,鲜亮的嫩肉裸露出来,她不敢逗留太久怕被说成怠工,抓紧时间扇风,害怕嫩肉红肿发炎,耽误打工赚钱。

    胶东往事(上)
    纵离乡千里万里,愿故土借我心力。
    (一)
    她总说那个年代哪个当大姐的是大个子?从小都得日日往家挑水,扁担压的……浇地更累人,没水车,得摇辘轳挽水,坠着腚使全身的劲儿,一不小心手扳不动脱了把,摇把子能打死个人。
    一代人的习惯养成自有一代人的历史背景,改变一个50后老太太潜意识里的节俭,就像劝说着一个00后告别手机永别网络,2G都不行。
    (二)
    因为俺爹俺娘,那可是许世友的兵!
    我用我的方式将他记住。
    (三)
    掖县历史上是北派毛笔的重要产地,渊源可追溯到明朝中期,我小时候写毛笔字画国画,用的大白云、小依纹、花枝俏什么的,都是小舅给做的,古法制笔。他
    选、配、垫、梳、圆、修、捋……掖县毛笔需近120道工序。
    an2551797
    (一)
    优越感这种东西无法隐藏,曾狠狠划伤了一个小地方来的年轻人,让他自惭形秽和沮丧。
    (二)
    2025/07/17 发表想法
    暗恋是一个人的兵荒马乱

    原文:我7岁开始喜欢她,17岁出胶东前都坚信她是世界上最好看的兔子牙小姑娘。

    2025/07/17 发表想法
    我都专门往教室后面的钟表看时间的时候偷偷看他,或者是专门看他顺便看一下时间,我的暗恋啊

    原文:至于平常日她是看不见我的,我不搭理她,躲着,迎面走来也绝不冲她笑,怕她发现我在意她。

    (三)
    2025/07/17 发表想法
    得到又失去,错过不重逢

    原文:会得到又失去,错过后不重逢

    (四)
    2025/07/17 发表想法
    2007年上大学,生活费每月100块,天天吃包子既有面又有馅儿当菜了

    原文:1997年的800块钱是笔巨款,我妈帮我在衣服腋下缝了个暗口袋,我扛着铺盖拎着画板下楼时她站在楼梯口,叮嘱面鱼别凉着吃,没地方热的话,放在开水缸子上烘一烘也行

    2025/07/17 发表想法
    我第一次被讹车费也是在济南高铁站,被讹了150块钱,一个壮汉拉着我不许我坐其他人的车。

    原文:一次是济南东站外的黄面的司机,绕路还打人,

    就是这样的,越局促越掩饰,越掩饰越向往,越向往越躲避,越躲避越找出一堆理由来……到今天都没能改。
    我宝贝得不行,一年四季地穿,大学里同寝的室友都记得我每天睡觉前认真擦鞋,先牙刷,后橡皮。
    我们家都是农民工,你们家都是老师,你说咱们谁家困难?
    越想证明越不被证明,越去建造越被解构,徒劳的自尊,虚妄的价值感。
    胶东往事(下)
    2025/07/17 发表想法
    让我想到了 呼啸山庄里面的希斯克利夫喊凯瑟琳,快回来吧,快回来吧

    原文:喊喊我吧,奶奶,喊我回家吃饭。 让黄狗来接接我吧,或升起一缕看得见的炊烟。 奶奶,天快黑了,我要赶回来吃饭。

    (一)
    二十多年兜兜转转,地北天南都一样,都没有陌生感也都早没了新鲜感,都是异乡,也都可以不是异乡,或短或长停停走走,靠岸又离岸的船一条。
    (二)
    她就是个海胆,第一次来到海滩的新海胆,壳虽貌似坚硬有威慑力,心儿里却一定柔软如面团,面团上有个怯怯的小孩,老老实实坐着,小心翼翼往外打量。
    (三)
    我很畏惧一切当面的抒情,果断打断她的话头,问她有没有写什么新歌。
    (七)
    背着父亲和沉重的岁月,紧咬着牙关,一步一挪地爬楼。她曾爬过的楼,比对岸鳞次栉比的任何一座大厦都要高耸,且无有灯火,漆黑的楼洞。
    (八)
    怕你信了,心会不甘,力会用错,你就自自然然的就好,苔花如米小,也学牡丹开
    (一)
    内心戏多,是文字工作者的职业病。
    (三)
    告别济南时的挫败感尚未散去,行囊里只有几件换洗衣裳一台笔记本电脑,却坠得我挺不直脊梁,那是2012年的冬天,落魄潦倒的人生谷底,我揣着最后一点钱从济南上车,计划卖文为生从零开始,北漂。
    他说:反正你记着哈,不管你以后干啥,有名还是没名,咱们都是兄弟。
    (六)
    所有的南墙所有的路, 终究还是要靠自己走完, 就是这么简单。
    2025/07/19 发表想法
    寄蜉蝣于天地 渺沧海之一粟

    原文:不过是潮汐浪涌,海滩被重新拍平,沙雕城堡瓦解崩融,一粒沙子,悄然淹没。

    一山放过一山拦,但起码这场梦啊曾经做过。
    (三)
    我遇到的每个人都不承认自己是在逃避生活,我遇到的很多人都告诉我他们喜欢这个世界的原因之一是不论他们有多菜,都可以一次次从头再来,满血复活。
    (五)
    后来皆被他的能干震惊。底层长大的孩子肯吃苦,他眼里简直不要太有活
    太多人面子重于道理,我是那时候起才真正明白这个道理。
    (七)
    迫切地扣帽子,着急地下定义,表达重于倾听,立场大于道理,自己永远正确,错了也要嘴硬,一切皆可拿来抖机灵,冤枉了人还说清者自清
    更可怖的是,人是不爱否定自己的,爱的是为自己开脱,往往不会认知为是迁怒于人,只道错的是对方,应决绝地将其饭碗砸烂。
    唯一的不普通,是从不曾伸手索取过任何怜悯,他有他的尊严。
    我总觉得他对尊严的理解,是从那一刻起。
    (二)
    2025/07/23 发表想法
    是不敢啊通往通透的快乐者太难,,总是迈不过悲凉,走向浑浑噩噩的快乐者不好吗?

    原文:不想还是不敢

    2025/07/23 发表想法
    看感兴趣的书,有一大乐事,总能从书里找出如葡萄般的一串的相关书籍果实

    原文:张子选

    张子选
    对现世存在的超越感——这是诗人与其他人最大的区别之一。换言之,如若具备了这一点,不论写不写诗,任何人都可以是诗人。
    (三)
    2025/07/23 发表想法
    哇哦,大冰给很多歌手作词作曲指明了方向

    原文:其对比兴手法的善用与活用,往往会是一曲谣唱最易惹人肉痒心疼的关键所在,不光激发人的联想与想象,更能使人对人情事理,理解得更为简单,了悟得更为透辟明白。

    几十年来对民间诗歌的采风搜罗不歇,迄今所得逾4000首,那些鲜活的比兴弥足珍贵,他学原生态、学真民歌,他的诗因此而鲜活。
    人间再不值得,他的诗,也值得爱。
    (四)
    见字如面
    诗人是山,于我而言,山的意义是观,是存在,不是流连扎营或登攀,知有青山驻世即可,其上云蒸霞蔚雾霭青烟,我曾远远睹见。
    (一)
    人嘛,努力了未必会进步,不努力就一定和进步没有关系…
    (二)
    走采风搞创作
    (五)
    发呆是最可怕的事情之一,易让人钻牛角尖。他那时世事不谙,发觉
    听着听着有了种说不清的预感,有一次他和医生说,他认为他将来能认识那个奇怪的写书人,去到书里提到的那些个奇特的小屋,他知道那里的歌手都是和他一样的普通人,来自各行各业,大都不是音乐科班,不乏底层苦出身。
    到底还是买了,收件地址填的是武汉,收件人是元佳佳医生。
    (六)
    此刻你手中的这本书,我已将播音版权保留,即日起全网开放播音版权,期限永久。
    语气些微有点傲气,和所有那个岁数的年轻人一样,多么敏感的少年。
    谁又能指明谁的方向呢?小屋不能,我也不能,能也不能。
    所有的南墙所有的路,终究还是要靠自己走完,就是这么简单。
    (七)
    摸索着握住我的手
    弟弟,我太警惕信心这个东西了,信心几类热血,没有任何一股热血会沸腾永不息,就像没有任何一种信心会不动如山,很多东西并不是说当下有了就一劳永逸了,自此不移不变。
    一辈子那么长,每个人的烛火都会遭遇几次吹灭,每个人都会不止一次地遭遇谷底、抛锚、搁浅,那时你会彷徨苦闷、孤独,不再有人陪伴……当无人再与你行方便的时候,弟弟,回来翻翻这篇文字,回想一下那段短暂的济南时光,重温一下你曾经信心满满的年轻岁月。
    不论那时的境遇有多难熬,不要被困住更不要被击倒,往事能赐予我们的最大能量是将心力重现,愿你能依此心力,将信心重新点燃。
    看不清、听不见、说不出、走不动,别人为你行个方便,归根到底是别人的事,要紧的是这口气别松,自己给自己行出一个方便。
    (续)
    弟弟刘奥博现居北京,做着一份按摩师的工作,听闻收入尚可。希望他依旧在唱歌。2022年5月22日
    (三)
    2025/07/23 发表想法
    你应该打个嗝,因为被喂饱了狗粮

    原文:为什么要让我结识这些稀有品种。

    (四)
    住酒店或租房子乃至雇保姆的钱,他们都省下来变成了医疗物资,捐献回国。阿丽塔这个小名儿其实也是那时候定下来的,战斗天使,战胜疫情。
    (五)
    能力是一个人的底气,底气都没有,羡慕或效仿的话语免提。所以,与其向往他人的生活样态,莫若向往一下人家的能力去吧。
    比如生存,只是能好好活着已是筋疲力尽。
    2025/07/23 发表想法
    猿鸣鹤唳本无意 不知下有行人行

    原文:猿鸣鹤唳

    2025/07/23 发表想法
    欲买桂花同载酒,终不似 少年游

    原文:总有人快老去,总有人正年轻。

    保重
    孤独和孤独不同,咱们大多数人并没有那么高的根器和机缘去享受真正的孤独,却往往在波折时易囿于孤单乃至凄惶,乃至步入抑郁的泥淖…
    故而我建议,事来时,无力应对而求助他人时,期望不必太高,不然一旦失望,坠落感会太强,往往会被放大成无望,乃至成为你无法负荷的最后一根稻草。归根到底还需自救,你的惊涛骇浪既然只有你自己能清晰感知,还需你自渡自救,自帆自桨。
    我失业期间是依靠着妈妈和弟弟的帮扶走出来的,所以我工作的时候也很幸福,觉得能帮到妈妈和弟弟,然后是自己。下一关我还是会勇敢去闯。虽然我沉寂的时间有些长,用了8个多月,用尽了赔偿金的时间,理财的能力还是需要讲究。
    话说不仅要期望,且需未雨绸缪,尽量给自己预备一些支点吧,或觅得一些肩膀,该借力便借力,该倚靠便倚靠,应有一些可陪伴你的选项,很多事不要独自去扛……否则即便通关了,心底还是会难过,形单影只者前后茫茫,下一关会怯于去闯,人也就越活越凑合了。
    把“我快撑不住了,我需要你陪陪我”这个信息直接主动传递给朋友就好。
    某种意义上讲,陪伴,其实是友情最大的实用价值,以及存在的意义。
    不要一个人待着,一定不要
    一 不论你是男是女,最难过的时候别绷着,会憋着,难过就好好难过,要哭出来。
    二 一个人如果知道自己为什么而活,就可以忍受任何一种生活。这话是尼采说的。他另有一句话可以斟酌着听:对待生命不妨大胆一些,因为我们终究要失去它。另有一个叫费尔巴哈的哲人说:凡是活着的,就应当活下去。
    三 遵医嘱。
    (一)
    2018年,经老友协助选址,我将这书店开在了彩云之南点苍山下,唤作小书房。当真是个读书的好去处,宽敞明亮,乱云飞渡落地窗,四壁刷成充满希望的碧翠,书籍满坑满谷砌红堆绿,阳光月光轮流铺洒,琳琅满目盛如繁花…
    2025/07/23 发表想法
    这词写的真妙,沙子堆砌的城堡先大块崩塌后面沙子像水一样消融

    原文:瓦解崩融

    (三)
    2025/07/23 发表想法
    哈哈哈,这个可以拍成电影片段

    原文:。她是个较真的人,因偷拍照片时过于追求完美,身份暴露,被一堆人追着砍,本来没追上就算了,但她远远地停下来咔嚓咔嚓又拍,黑中介的朋友们简直要被气哭了,大姐,要不要这么热爱工作。

  • Chrome无法访问localhost,但Edge可以访问,怎么解决?

     

    问题描述:做了几个项目,用chrome浏览器本地测试的时候发现,无法访问,其他浏览器可以,刚开始以为是缓存很多删除,删除没大会儿继续无法访问。发布到服务器上面chrome可以访问。之后找到了解决方案,故整理一下。

    1. 清除HSTS设置(最可能的原因)

    HSTS(HTTP严格传输安全)是一种安全机制,如果之前通过HTTPS访问过localhost且证书有问题,浏览器可能会将localhost错误地加入强制HTTPS的列表,导致现在无法通过HTTP访问。

    操作步骤:‌

    在Chrome地址栏输入:chrome://net-internals/#hsts
    点击顶部的“Delete domain security policies”标签页。
    在输入框中输入 localhost,然后点击“Delete”按钮。
    操作成功后,关闭所有Chrome窗口,然后重新打开,再尝试访问 http://localhost:端口号。‌
    2. 检查并修改代理设置

    如果您配置过系统代理或浏览器代理,可能会导致Chrome绕过代理访问localhost时出现问题。

    操作步骤:‌

    在Chrome地址栏输入:chrome://settings/system
    点击“打开您的计算机的代理设置”。
    确保“使用代理服务器”选项是‌关闭‌的。如果已开启,请关闭它。‌
    另外,检查“忽略这些主机和域的代理设置”列表中是否包含 localhost 或 127.0.0.1,确保它们被正确排除。‌‌
    3. 检查Chrome扩展程序

    某些扩展程序(如广告拦截器、安全工具或代理插件)可能会错误地拦截对localhost的请求。

    排查方法:‌

    访问 chrome://extensions。
    临时‌禁用‌所有扩展程序。
    然后尝试访问localhost。如果此时可以访问,说明问题出在某个扩展上。您可以重新启用扩展,逐一排查是哪一个导致的问题。‌‌
    4. 检查本地hosts文件(作为排查)

    虽然Edge能访问而Chrome不能,此问题可能性较低,但仍可检查以排除其他干扰。

    操作步骤:‌

    以管理员身份打开记事本,然后打开文件:C:\Windows\System32\drivers\etc\hosts
    确认文件中包含以下一行且未被注释(前面没有#号):
    text
    Copy Code
    127.0.0.1 localhost

    如果没有,请手动添加;如果被注释了,请取消注释。保存文件后重启Chrome。‌‌
    5. 以管理员身份运行Chrome

    有时权限问题也可能导致网络访问异常。

    操作方法:‌

    右键点击Chrome快捷方式,选择“‌以管理员身份运行‌”。‌‌
    总结与建议

    综合来看,‌方法1(清除HSTS设置)是解决此问题的首选‌,因为“Chrome无法访问而Edge可以”是HSTS问题的典型表现。‌ 如果问题依旧,再依次尝试方法2和方法3。

    希望这些步骤能帮助您快速解决问题!

  • Web应用防火墙

    Web应用防火墙(Web Application Firewall,简称WAF)对网站或者App的业务流量进行恶意特征识别及防护,在对流量进行清洗和过滤后,将正常、安全的流量返回给服务器,避免网站服务器被恶意入侵导致性能异常等问题,从而保障网站的业务安全和数据安全。

    功能介绍

       
    功能类别 功能说明
    业务配置 支持对网站的HTTP、HTTPS流量进行安全防护。
    Web应用安全防护 常见Web应用攻击防护 防御OWASP常见威胁:SQL注入、XSS跨站、WebShell上传、后门攻击、命令注入、非法HTTP协议请求、常见Web服务器漏洞攻击、CSRF、核心文件非授权访问、路径穿越、网站被扫描等。网站隐身:不对攻击者暴露站点地址,避免其绕过Web应用防火墙直接攻击。0day补丁及时更新:及时更新漏洞补丁,防护网站安全。友好的观察模式:针对网站新上线的业务开启观察模式,对于匹配中防护规则的疑似攻击只告警不阻断,方便统计业务误报状况。
    深度精确防护 支持全解析多种常见HTTP协议数据格式:任意头部字段、Form表单、Multipart、JSON、XML。支持解码常见编码类型:URL编码、JavaScript Unicode编码、HEX编码、HTML实体编码、Java序列化编码、PHP序列化编码、Base64编码、UTF-7编码、UTF-8编码、混合嵌套编码。支持预处理机制:空格压缩、注释删减、特殊字符处理,向上层多种检测引擎提供更为精细、准确的数据源。支持复杂格式数据环境下的检测能力;支持合理的检测逻辑复杂度,避免过多检测数据导致的误报,降低误报率;支持多种形式数据编码的自适应解码,避免利用各种编码形式的绕过。
    CC恶意攻击防护 控制单一源IP的访问频率,基于重定向跳转验证、人机识别等。针对海量慢速请求攻击,根据统计响应码及URL请求分布、异常Referer及User-Agent特征识别,结合网站精准防护规则综合防护。充分利用阿里云大数据安全优势,建立威胁情报与可信访问分析模型,快速识别恶意流量。
    精准访问控制 提供友好的配置控制台界面,支持IP、URL、Referer、User-Agent等HTTP常见字段的条件组合,配置强大的精准访问控制策略;支持盗链防护、网站后台保护等防护场景。与Web常见攻击防护、CC防护等安全模块结合,搭建多层综合保护机制;依据需求,轻松识别可信与恶意流量。
    虚拟补丁 在Web应用漏洞补丁发布和修复之前,通过调整Web防护策略实现快速防护。
    攻击事件管理 支持对攻击事件、攻击流量、攻击规模的集中管理统计。
    灵活性、可靠性 支持负载均衡:以集群方式提供服务,多台服务器负载均衡,支持多种负载均衡策略。支持平滑扩容:可根据实际流量情况,缩减或增加集群服务器的数量,实现服务能力弹性扩容。无单点问题:单台服务器宕机或者维修,均不影响正常服务。

    更多产品信息,请参见Web应用防火墙产品页面

    产品优势

       
    产品优势 优势说明
    10年以上网络安全经验 建立在阿里巴巴集团10年以上的网络安全经验上,提供与淘宝、天猫、支付宝等成功应用案例同样的安全体验。由专业的安全团队为您提供服务。抵御已知的OWASP漏洞并不断修复披露漏洞。
    防御CC攻击和爬虫攻击 帮助您抵御和减缓CC攻击。帮助您防御网络爬虫,避免网络资源消耗。检测和阻挡恶意请求,帮助您减少带宽消耗,防止数据库、SMS、API资源亏空,减少响应延时,避免宕机等。针对多样业务场景支持自定义防护规则。
    集成大数据能力 每天约抵御数亿次网络攻击。拥有丰富的IP数据库。拥有广泛的应用案例,对各类常见网络攻击的模式、方法和签名有大量研究。大数据分析不断整合先进的技术。
    简易性、可靠性 5分钟内部署和激活。无需安装任何软硬件或调整路由配置。通过防护集群作用,避免单点故障和冗余。防护流量处理性能高。

    应用场景

    适用于阿里云以及阿里云外所有用户,主要用于金融、电商、O2O、互联网+、游戏、政府、保险等行业各类网站的Web应用安全防护。

    说明

    仅支持通过域名或实例方式接入WAF,不支持使用IP直接接入。

    如何使用WAF

    如何使用WAF

    更多信息,请参见快速使用WAF 3.0

    应用防护RASP和Web应用防火墙的关系

    应用防护RASP(Runtime Application Self-Protection)是一种运行在应用程序内部的安全保护机制,它能够在应用运行时检测攻击并进行自我保护。更多详情,请参见接入应用防护

    RASP和Web应用防火墙并不是相互取代的技术,而是在不同业务和安全防护场景下各有所长。例如,RASP更适合应对未知漏洞(0day漏洞)利用和加密流量等场景,而网络访问控制、区域封禁、CC攻击、爬虫攻击等威胁防护则需要WAF的有效补充。因此,对于应用防护来说,您需要根据业务环境和要求接入RASP以及Web应用防火墙,协同构建应用内生与边界双重防护能力,通过设置多层重叠的安全防护系统来构建多道防线,从而降低应用被入侵、数据泄露和服务不可用等风险。

    合规资质

    WAF已通过ISO 9001、ISO 20000、ISO 22301、ISO 27001、ISO 27017、ISO 27018、ISO 27701、ISO 29151、BS 10012、CSA STAR、等保三级、SOC 1/2/3、C5、HK金融、OSPAR、PCI DSS等多项国际权威认证。

    WAF作为标准的阿里云云产品,在云平台层面具备与阿里云同等水平的安全合规资质。详细内容,请参见阿里云信任中心

  • 失掉网站后

    自从服务器切换到阿里云之后,个人网站就荒废了。有主观,有客观。主观,太忙啦,客观,之前是香港主机不用备案,londit挂掉后,就迁移到了阿里云,阿里云规定必须要备案才能访问,在之前出差长春的途中做了各种备案,将近三次,然后断断续续,一步一坑的修改备案申请。。发现以前的文章里面的图片都丢失掉了,今年2024终于备案成功了,可喜可贺。然后现在更新简历,发现,“呀,我啥都没有,啥都不会”做了深刻又虚假的自我批判。

    被前司IBM裁员后,既慌乱又窃喜,慌乱的是我失业了,大龄了,买房了,还总被HR问有没有结婚,技术啥都不会,debuffer重重,天昏地暗。窃喜的是这是唯一一家裁的我,还给了大礼包,真是不错。然后疯狂刷boss直聘,发现时光不再来,我已加不动班了。刷刷B站失业UP主,焦虑满满。只能边走着找工作,边刷博物馆

    最近刷了军事博物馆、国家博物馆、华侨历史博物馆、鲁迅博物馆、奥运博物馆。大家都不容易啊,继续奋往向前啊!

    历史就像是一条河流,那么绵绵不断的奔流,我也在其中,看华侨历史博物馆,感觉未来和中国关系好的国家可能为泰国、菲律宾、马来西亚和新加坡吧。中越的关系估计长期不会变好,已经被记载在历史博物馆了,因为越南20世纪70年代末的排华超过150万华人华侨难民进行二次移民,超过20万人死了。不上图了,华侨历史博物馆值得一看。

    发现看了不记录下来就好像时光流逝刷的一下,毫无记忆,一片空白过去了。

    最近找工作也碰到了骗子,在脉脉上让你下载teams,在招聘上遇到让你去马尼拉的什么工作的,需要谨慎对待。

     

  • 世界,您好!

    欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!

  • vue.js设计与实现(1)

    之前工作中做项目用到了VUE,实现了几个项目的完整开发。基本是后台管理系统,有一些涉及到人员管理树tree、table、search等组件的构建和表单页面的校验,审批流程页面组件的建立等,项目的webpack的打包发布等。后来发现一些原理性东西并没有十分的清晰,把一些东西杂糅在了一起。看到霍春阳的这本书评分很好,特意借来拜读和实践,梳理一遍自己对于vue的认知。

    首先把所有内容做了一个脑图,是按照书中的提示做的。

    文字版本

    vue.js设计与实现

    第一篇框架设计概览

    第1章讨论命令式和声明式,虚拟DOM的性能状况。vvue.js 3.0是一个运行时+编译时的框架。

    第2章主要从用户的开发体验、控制框架代码的体积、Tree- Shaking的工作机制、框架产物、特性开关、错误处理、typescript支持等方面出发,讨论了框架设计者再设计框架应该考虑的内容。

    第3章从全局介绍vue.js 3.0的设计思路,以及各个模块之间如何协作。

    第二篇响应系统

    第4章从宏观介绍vue.js3.0的响应系统的实现机制。从副作用函数开始,逐步实现一个完善的响应系统,还讲述了计算属性和watch的实现原理,同时讨论了在实现相应系统的过程中所遇到的问题,以及相应的解决方案。

    第5章从ECMAScript规范入手,从最基本的proxy、reflect以及js对象的工作原理开始,逐步讨论了使用proxy代理js对象的方式。

    第6章主要讨论了ref的概念,并基于ref实现原始值的响应式方案,还讨论了如何使用ref解决响应丢失的问题。

    第三篇渲染器

    第7章主要讨论了渲染器与响应系统的关系,讲述了两者如何配合完成页面更新。渲染器的一些基本名词和概念,以及自定义渲染器的实现与应用。

    第8章渲染器的挂载与更新的实现原理,其中包括子节点的处理、属性的处理和事件的处理。当挂载或更新组件类型的虚拟节点时,还要考虑组件生命周期函数的处理等。

    第9章主要讨论了简单Diff算法的工作原理。

    第10章主要讨论了双端Diff算法的工作原理。

    第11章主要讨论了快速Diff的工作原理。

    第四篇组件化

    第12章主要讨论了组件的实现原理,介绍了组件自身状态的初始化,以及由自身状态变化引起的组件自更新,还介绍了组件的外部状态props、由外部状态变化引起的被动更新,以及组件事件和插槽的实现原理。

    第13章异步组件和函数式组件的工作机制和实现原理。对于异步组件,我们还讨论了超时与错误处理、延迟展示loading组件、加载重试等内容。

    第14章vuejs内建的三个组件的实现原理,即keepalive teleport和transition的组件。

    第五篇编译器

    第15章讨论vuejs模板编译器的工作流程,接着讨论了parser的实现原理与状态机,以及AST的转换与插件化架构,最后讨论了生成渲染函数代码的具体实现。

    第16章主要讨论了如何实现一个符合whatwg组织的HTML解析规范的解析器,内容涵盖解析器的文本模式、文本模式对解析器的影响,以及如何使用递归下降算法构造模板AST。在解析文本内容时,我们还讨论了如何根据规范解码字符引用。

    第17章模板编译优化的相关内容。具体包括block树的更新机制、动态节点的收集、静态提升、预字符串、缓存内联事件处理函数、v-once等优化机制。

    第六篇服务器端

    主要讨论了同构渲染的原理,探讨了CSR、SSR以及同构渲染等方案的各自优缺点,然后探讨了vuejs进行服务端和客户端即获得原理,最后总结了编写同构代码时的注意事项。

    图片版本

  • SFC

    单文件组件 SFC

    在大多数启用了构建工具的VUE项目中,我们可以使用一种类似HTML格式的文件来书写VUE组件,它被称为单文件组件,也被称为*.vue文件。英文single-file components缩写为SFC。顾名思义,vue的单文件组件会将一个组件的逻辑 js模板html 和样式css封装在同一个文件里。

    VUE3中选项式API optionsAPI

    使用选项式API我们可以用包含多个选项的对象来描述组件的逻辑,例如data、methods和mounted。选项所定义的属性都会暴露在函数内部的this上,它会指向当前的组件实例。

     

    组合式API compositionAPI

    通过组合式API,我们可以使用导入的API函数来描述组件逻辑。在单文件组件中,组合式API通常会与<script setup>中的导入和顶层变量、函数都能够在模板中直接使用

  • mac安装nvm

    之前电脑装过各种环境,直接乱了。重新卸载node npm后再安装nvm。亲测可用,简单快速

    1、卸载node、npm

    brew uninstall node

    2、以上卸载完成后,继续清理

    which node

    //可以看到 /usr/local/bin/node

    which npm

    //可以看到 /usr/local/lib/node_modules/

    //全部删除,通过以下两句

    sudo rm -rf /usr/local/bin/node
    sudo rm -rf /usr/local/lib/node_modules/

    //删除全局node模块注册的软链 
    cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs sudo rm

    3、安装 nvm

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    
    4、关闭重启命令窗口,验证nvm版本
    nvm --vesion
  • 语法糖

    1. 什么是语法糖?‌

    语法糖(Syntactic Sugar)是由英国计算机科学家彼得·约翰·兰达提出的术语,指编程语言中添加的某种语法,这种语法对语言的功能没有影响,但更方便程序员使用。它通过简化代码结构,使代码更易读、更符合人类的思维习惯。

    2. 语法糖的作用

    • 提高可读性:简化代码结构,使代码更直观,更容易被其他开发者理解。
    • 减少错误:由于语法糖通常让代码更简洁,因此可以减少因复杂代码而导致的错误。
    • 提升效率:开发人员能够更快地写出正确的代码,从而提高编码效率。

    3. 语法糖的示例

    • C语言:用 a[i] 表示 *(a+i),用 a[i][j] 表示 *(*(a+i)+j)
    • Java:自动装箱/拆箱、增强的 for 循环、泛型以及Lambda表达式。
    • Python:列表推导式、字典推导式、集合推导式、生成器表达式。
    • VUE:v-bind:src=>:src v-on:click => @click

    4. 语法糖的意义

    语法糖不仅是一种便捷的写法,编译器会帮我们做转换,而且可以提高开发编码的效率,在性能上也不会带来损失。它与其他编程思想一样重要,如duck type、人本接口、最小接口、约定优于配置等,广义来讲都是一些思想上的“语法糖”。

    5. 语法糖的争议

    尽管语法糖带来了诸多便利,但也有反对的声音。例如,图灵奖的第一个获得者Alan Perlis曾对此提出质疑。然而,大多数开发者认为,语法糖是一种让编程语言更加用户友好、更具表现力的方式。

    通过以上分析,我们可以看到,语法糖在编程语言中扮演着重要角色,它不仅简化了代码,还提高了开发效率和代码的可读性。

  • 混沌工程(Chaos Engineering)

    最近在看SLA,看到里面一个词叫混沌工程,故整理一下。

    定义:混沌工程是一门对系统进行实验的学科,旨在了解系统对应生产环境的各种混乱状况的能力,建立对系统的信心。所有系统的用户都希望系统具备可靠性,但影响可靠性的因素有很多。混沌工程师能找到证据,指明那些异常但不可回避的状况下系统的应变情况。

    简单来说:混沌工程是在分布式系统上进行实验的学科,目的是建立对该系统能够承受生产环境的动荡的信心。

    我们的用户将 TiDB 运行在国内某云厂商的机器上面,然后跟我们反映,读延迟会不定期的增长,我们看了看监控,发现唯一的异常指标就是 Cached 的 memory 那段时间会突然下降。当时真的就懵逼了,完全不知道是为啥,最终发现,云厂商的运维监控脚本里面有个 bug,会不定期的将磁盘热拔插,并且将现有的 page cache 刷到磁盘,所以那段时间 TiDB 的 read 操作很多是从磁盘重新读取数据的。

    可以看到,分布式系统真的是一个非常复杂的系统,故障无处不在,那么我们如何在这么复杂的分布式系统的世界里面生存下去呢?现在,一个很好的答案就是 – Chaos Engineering,中文里面叫做混沌工程。

    Netflix工程师创建了Chaos Monkey,使用该工具可以在整个系统中在随机位置引发故障。正如GitHub上的工具维护者所说,“Chaos Monkey会随机终止在生产环境中运行的虚拟机实例和容器。”通过Chaos Monkey,工程师可以快速了解他们正在构建的服务是否健壮,是否可以弹性扩容,是否可以处理计划外的故障。
    2012年,Netflix开源了Chaos Monkey。今天,许多公司(包括谷歌,亚马逊,IBM,耐克等),都采用某种形式的混沌工程来提高现代架构的可靠性。 Netflix甚至将其混沌工程工具集扩展到包括整个“Simian Army(中文可以译为猿军)”,用它攻击自己的系统。

    混沌工程

    相比于我们成天担惊受怕系统会出现什么样的问题,还不如提前就模拟线上环境可能出现的各种情况,来看我们的系统是否能做到容错,仍然能继续对外提供服务。当然,我们并不是简单的就在线上环境上面,把机器给断电,或者把网线给拔掉,在混沌工程领域,有一套指导原则,以及标准的实验步骤,具体的可以参考 PRINCIPLES OF CHAOS ENGINEERING 

    简单来说,要做一次混沌实验,我们只需要做到如下的 4 个步骤:

    1. 定义系统的稳态,这个稳态就是系统在正常运行的时候一些指标,譬如当前请求的 QPS,latency 这些。
    2. 将系统分为实验组以及对照组,做出一个假设,譬如我在实验组引入一个故障,这个稳态仍然能在实验组保持。
    3. 执行试验,给实验组引入现实世界中的故障,譬如拔掉网卡。
    4. 验证第 2 步的假设是否成立,如果实验组的稳态跟对照组不一样了,证明我们的系统在第 3 步的故障中不能很好的容错,所以我们需要改进。

    可以看到,上面的步骤非常的简单,但要在实际从很好的做混沌试验,还是有一些困难的,主要在以下几点:

    1. 自动化,我们需要有一套自动化的系统帮我们进行故障注入,进行假设对比等。
    2. 尽可能多的引入不同故障。现实环境中可能会出现非常多的故障,仅仅不是拔网线这么简单,所以引入的故障越多越好。
    3. 业务方无感知。如果我们每次做混沌试验,都要业务系统去配合,譬如在业务里面写一些混沌相关的代码,让混沌试验调用,或者更改系统的部署逻辑,跟混沌试验配合,这种的就属于紧耦合的。

    你好,ChaosMesh!!!

    所以,为了让大家更好的做混沌试验,我们开发了 ChaosMesh,ChaosMesh 是一套基于 Kubernetes 的云原生混沌工程平台。ChaosMesh 的架构如下:

    相比于其他混沌平台,ChaosMesh 有如下优势:

    1. 基于 K8s,只要你的系统能跑在 K8s 上面,那么就可以无缝的集成 ChaosMesh,而且不用修改任何业务代码,真正是被测系统无感知。
    2. 多种多样的故障注入。ChaosMesh 能全方位的帮你对网络,磁盘,文件系统,操作系统等进行故障注入。我们后面也会提供对 K8s,或者云服务自身进行 chaos 的能力。
    3. 易于使用,你无需关注 ChaosMesh 的底层实现细节,只需用 YAML 配置好混沌试验,就可以实施,后面所有的实验是全自动化的。我们也提供了 Dashboard 能让你在网页上就轻松的进行试验。
    4. 可观测性,ChaosMesh 的 Dashboard 能很方便的让你观测系统,知道什么时候进行了什么试验,知道你自己的系统当前的运行情况,当然,这里需要一点配置,你需要告诉 ChaosMesh 如何去获取你系统的稳态指标,譬如你的系统使用 Prometheus,那么就可以告诉 ChaosMesh 如何去 Prometheus 查询相关的监控指标。
    5. 强大的开源社区支持,ChaosMesh 的社区成长的非常迅速,我们非常高兴的看到大部分的功能已经由社区支持,并且也有很多用户。你无需担心遇到问题不知道如何解决,当然,你可能要担心下 ChaosMesh 做实验的时候把你的数据给完全干掉,所以做实验的时候一定要控制好实验半径,这个也是混沌工程的一条原则。

    来一次 Chaos 实验?

    在我们开始一次 Chaos 实验之前,你首先需要满足两个条件:

    1. 你自己的业务是跑在 K8s 上面的
    2. 在 K8s 上面安装了 ChaosMesh

    另外,在开始实验之前,这里我还是要强调一下 Chaos 实验的一些注意事项,可能你觉得我这个大叔很啰嗦,但小心驶得万年船,因为稍微一不注意,你可能就丢了数据了。

    1. 如果你刚准备将你的系统应用 ChaosMesh,一定要保证首先在测试环境中使用。你的系统应该还非常的脆弱,如果在线上进行试验,会非常的危险。
    2. 在生产系统中,一定要控制好试验的爆炸半径,控制好影响范围,譬如我们可以先对某一个街道的用户进行干扰,然后在扩大到某一个区域,或者某一个城市,如果我们一开始的影响半径就很大,一个稍微不留意,你的 boss 就可能让你第二天滚蛋了。
    3. 做混沌实验一定不是随机的瞎做实验,我们是带有目的的,是需要规划好的,与其漫无目的的对系统随机进行故障注入,我们还不如先问自己一个问题『为了对系统在混乱状况下的表现更有信心,在哪里做混沌实验最有价值?』也就是我们要熟悉了解我们的系统,做高杠杆价值的混沌实验。

    好了,现在你已经完全准备好了,现在就可以踏上混沌之旅了,因为 ChaosMesh 的使用是如此简单,你只需要参考 用户指南 就能上手使用,所以我就不过多介绍了,如果你仍然遇到了问题,欢迎给 ChaosMesh 提 issue,相信我,ChaosMesh 社区会很热情的帮你解决问题的。

    总结

    随着 ServiceMesh,Serverless 等理念的兴起,我们的系统真的趋向于越来越分布式,这样虽然简化了我们单个模块的实现,但整体来看,也可能会导致我们的系统因为过于分布式而变得复杂,那么如何在这种复杂的环境下仍然让我们有信心能保证系统能正常稳定运行,混沌工程可以算是一个很不错的选择。

    现在市面上面,支持混沌工程的平台已经有很多了,但我这里仍然推荐 ChaosMesh,毕竟使用它能让你极大提升你对系统的信心。

    该咋做混沌工程?

    在讨论咋做混沌工程之前,让我们先回答下面5个问题。

    什么是混沌工程?

    先说一个能说出点名堂的我个人对混沌工程的理解,**混沌工程,是Netflix公司当面对具有不可预知的“暗债”的复杂系统时,在“目标一致,关系宽松”的企业文化下,“逼上梁山”的结果**。

    什么是“暗债”?这个词来源于2017年发表的一篇名为[STELLA](https://snafucatchers.github.io/)的报告。这份报告由一群韧性工程专家在聚会后所撰写。就在他们聚会的那几天,这群专家赶上了一场极具破坏性的暴风雪。而那场暴风雪的名字,就是 STELLA。

    **暗债**,指当复杂系统内部子系统间相互作用时,所**必然存在**的**不可预知**的漏洞,最终会由此引发系统的意外故障。

    再说说上面那个“除了‘实验’貌似啥也没说”的定义。

    2015年,Netflix将混沌工程正规化,主持起草了[混沌工程原则](https://principlesofchaos.org/?lang=ENcontent),并给混沌工程下了定义。

    混沌工程是在分布式系统上进行实验的学科,目的是建立对该系统能够承受生产环境的动荡的信心。

    “貌似啥也没说”的背后,其实这个定义是大有深意的。

    • 分布式系统就是一种复杂系统,其活动规律是**不可预知和非线性的**。详情参见我之前撰写的[“不可能构建第二个云环境去做测试”](“不可能构建第二个云环境去做测试”——为复杂混沌的微服务生产环境设计韧性系统 v0.11)和[“混沌工程与系统稳定性设计模式”](https://myslide.cn/slides/22341)
    • 生产环境的动荡,来源于复杂系统内部**所固有的“暗债”**。见与不见,暗债就在那里,不增不减
    • 具有“可证伪性”的科学实验,只关注所定义的稳态是否被证伪,而对于**具体采取哪种方法保持稳态,不做要求**,悉听尊便,这就孕育了混沌猴
    • 要建立对系统能够承受生产环境的动荡的信心,需要**针对生产环境“丰富多彩”的暗债,设计同样“丰富多彩”的防范手段**。依据是控制论学者艾什比的[必要多样性法则(Law of Requisite Variety)](艾什比定律_百度百科)——要实现控制,控制系统能够执行的行为的多样性,必须不低于需要应对的环境动荡的多样性
    • 一个不断演化的分布式系统的复杂性,只会增加,而不会减少。依据是著有《人月神话》的那位大神Frederick Brooks的一篇文章中所谈到的两类复杂性(偶然复杂性与本质复杂性),都不会减少,甚至有一类还会增加。

    其中,偶然复杂性,是在资源有限的条件下,对相互冲突的限制条件作出权衡后的必然结果。

    不存在已知的可持续方法,能减少偶然复杂性,因为资源总是有限的,权衡总是要做出的,暗债总是要欠下的。

    而本质复杂性,是满足不断增加的新需求的必然结果。一个不断演化的分布式系统,新需求能少得了吗?

    混沌工程和测试有什么区别?

    两者的运行环境有区别。

    测试一般运行在**测试环境**上,而混沌猴一般运行在**生产环境**上。因为生产环境必然存在不可预知且与测试环境不同的暗债,所以对测试环境所建立的信心,并不能用在生产环境上。

    两者的侧重点也有区别。

    测试一般只关注**已知**的断言是否通过,而混沌工程会更关注发现更多**未知**的暗债。

    混沌工程和故障演练啥区别?

    两者的侧重点有区别。

    故障演练侧重操练**已知**的故障应对过程,而混沌工程侧重通过实验发现**未知**的暗债。

    生产环境是不允许引入任何风险的。如果混沌工程是在生产环境上做实验,那风险多大呀。领导会答应吗?

    前面提到,暗债是生产系统这个复杂系统所固有且不可预知的。那么即使不人为地引入风险,生产环境也是遍布暗债的。不在生产环境进行最小化爆炸半径的实验,来发现暗债,那么**只能任凭暗债在最不希望发生的时刻爆发**。

    该咋做混沌工程?

    借鉴Netflix的实例,可以从“摆正心态、人员主动和试点业务”三方面入手,来启动混沌工程。

    ### 摆正心态

    承认暗债为复杂系统所固有,而不是一味要求工程师[“不能也不该出现失误”](6月27日阿里云故障说明-阿里云开发者社区)。否则在故障面前,大家就只会花大量时间相互甩锅,耽误了发现更多暗债和防范措施。

    ### 人员主动

    前面说过,根据必要多样性法则,要建立对系统能够承受生产环境的动荡的信心,需要针对生产环境“丰富多彩”的暗债,设计同样“丰富多彩”的防范手段。而技术骨干一个人,是发现不了那么多暗债,并找到那么多的防范手段的。所以,就需要发挥各位工程师的主动性。此时,领导者要创造能调动工程师主动性和创造性的企业文化,来促进工程师更安全地发现与修复更多“花样”的暗债。在修复暗债的过程中,就可以使用文章[【分布式系统稳定性设计入门】如果不想总是半夜爬起来抢修生产事故……《发布!》第2版解读](【分布式系统稳定性设计入门】如果不想总是半夜爬起来抢修生产事故……《发布!》第2版解读 v0.2)所介绍的“分布式系统稳定性设计关键清单”。

    ### 试点业务

    • 选择一个出现生产事故频率较高的业务系统,尝试混沌工程。因为事故的反复,出现会让发现与解决暗债的动力更大
    • 基于能反映用户体验的业务稳态行为建立假设,而不是先聚焦于在系统内寻找弱点。因为这样能更利于进行全局优化,让成效更大
    • 为了让暗债浮现出来,设计引入足够多样化的现实世界可能发生的事件,而不是设计那些易于生成但在现实中不大可能出现的事件,以便切中要害。针对每一个所引入的事件,参考上述“分布式系统稳定性设计关键清单”,来进行稳定性设计
    • 可以先从准生产环境入手进行混沌实验,等条件成熟后,再逐渐过渡到生产环境
    • 自动化地持续进行混沌实验,以起到回归实验的效果,持续发现并解决暗债,避免系统随着时间的推移,在韧性方面逐渐“掉队”
    • 设计更安全的实验方式,以最小化爆炸半径,让实验所导致的业务损失降到最低,而不是明知故障难以控制,还要贸然进行实验。如果实验的假设被证伪,那么就遇到了发现新的暗债的好机会。在寻找暗债的过程中,可以参考上述“分布式系统稳定性设计关键清单”,来启发寻找漏洞及修复

    混沌工程的唯一目标就是证明系统存在缺陷。通过开展混沌工程方面的科学实验,你可以测试系统是否存在缺陷,从而了解系统在混乱的类生产环境条件下如何表现。

    混沌工程属于一门新兴的技术学科,行业认知和实践积累比较少,大多数IT团队对它的理解还没有上升到一个领域概念。阿里电商域在2010年左右开始尝试故障注入测试的工作,希望解决微服务架构带来的强弱依赖问题。

    参考来源1:https://zhuanlan.zhihu.com/p/149599011
    参考来源2:https://zhuanlan.zhihu.com/p/149419512