https://github.com/QiYongchuan/MyGitBlogRSS feed of QiYongchuan's MyGitBlog2026-02-09T01:54:37.373650+00:00python-feedgenhttps://github.com/QiYongchuan/MyGitBlog/issues/144故地重游,我与那个崩溃的自己重逢2026-02-09T01:54:37.851763+00:002026.2.3

下午两点多,吃了今天的第一顿饭。

在离家1公里左右的餐厅,餐厅旁边是一个公共办公场所,差不多八九个月前——那时我还在远程办公的时候,天天来这里吃饭,办公,在这里一待待一天,连保洁阿姨最后都认识我了。

是春天,三四月份的,我在处理一个很头痛的项目,任务紧,需求不明确,几乎天天在这里加班到11点等工作人员关门才背着两台电脑回家,继续再加班一会,几乎每晚都到12点以后了。

Image

天呐,现在回想那一个半月的时间,我还是能多少回忆起当时的崩溃的。

不过后面熬过去了,倒也成了如今的谈资了。

熬过那段痛苦的险些让我崩溃离职的经历后,后面几个月我倒是很少来这边远程工作了,更多是在家里了。可能是因为夏天的原因,也可能是某些情绪? who konws ,ADHDer 的想法总是猜不着的。

————————

时隔数月后,我又回到老地方,吃饭工作了。

我想起了当初为何背着电脑来这边了,或许也是因为远程工作进入了枯燥平静期,刚过完年没几个月,我每天提不起劲来,工作排了进来,每天醒来走几步就到电脑工位前面,就是没办法开始工作。

一边刷手机,一边焦虑,但就是没办法开始。

家与工作的界限模糊,生活其实也像融化了一样,每天困在重复中。

好在我发现了一个这样的地方,有充电的地方,有办公的地方,它接纳了我。

那个春天,我基本上每天都在这里,早上麦当劳,中午晚上瓒稼。

——————————

今天中午时隔数月又再次走进瓒稼。

气味、嗅觉、各种感觉是有记忆的,我一下子想起了数月前的某个周六了——那段时间,工作日过得飞快,而周六周天又是无限的漫长和煎熬。

因为工作日每天都忙到失去生活,双休日我就不知道漫长的两天该怎样度过了。

于是,我选择浑浑噩噩,彻底让生活失去控制。

白天醒来之后一直刷手机到下午三四点,直到晚上七八点实在饿得不行了才出门。

不过如果你也有过类似的经历,你应该知道,等你一天没吃东西出门吃饭的时候,其实已经不是最饿的时候了,那时候更多的是一种本能,或者是出于,“总该出去吃点东西,不然真要一天不吃饭?” 的想法了。

而饿到极点之后再次进食的感受是一种强烈的感觉,就像混沌模糊的大脑一下子炸开清晰了一般。

或许是某种意义上巨大的欢愉?

但我发现其实也算是另一种意义上的重启。

——————————

看《三体》,我最喜欢的一个情节是,罗辑在引力波被摧毁后,关在房间里喝酒买醉摆烂,然后在最后时刻一个人绝地反击给三体人致命威胁的那一刻。

很多时候,我的生活总是在有意无意的陷入到这种“平静--摆烂--重启”的循环中,我之前问ai,它说这对ADHD 大脑来说,这个循环本质上是一场多巴胺的“饥荒”与“盛宴”。

其实我在想另一个角度,沉迷于摆烂 是不是某种程度上是先人为降低期待,然后渴望正常的多巴胺刺激呢?

那比如我不吃饭,挨饿,然后正常的吃一顿饭就可以获得巨大的多巴胺 (远超正常进食的,如果正常进食的话,就不会有?)

而我们正常工作就不会有更多的刺激,反而先沉迷混乱之后,再去恢复原本平静的生活,单单这一行为就足够让人兴奋了?

---————————————

我不太喜欢讲命运的齿轮开始转动这种话,但我确实很喜欢某种命运的宿命感。

八九个月前,我在这里崩溃过、挣扎过、但总归是熬过来了。

现在回想起来,那段时间虽然痛苦,但也是我最有"活着"的感觉的时候。

或许这就是ADHD大脑的诅咒,也是命运注定带来的礼物:

我永远无法在平静中感到满足,只能在不断的混乱中反复寻找秩序。

我需要先跌入深渊,才能体会到重新站起来的力量。

冬天快要过去了,这次我也将迎来一个新的不同的春天了。

]]>
2026-02-03T07:30:04+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/143当生化机器遇见ADHD:一个程序员读赵纯想的多巴胺实验2026-02-09T01:54:38.019241+00:00当生化机器遇见ADHD:一个程序员读赵纯想的多巴胺实验 引子:我为什么被这篇文章击中 看完赵纯想这篇文章,我愣了好一会儿。

不是因为文章写得多么华丽,而是因为他用一种极其理性、近乎冷酷的生化视角,解释了我这个ADHDer一直在经历、却说不清楚的东西。

相信与失望。记录与遗忘。行动与停滞。

这些词,在他的文章里,不再是抽象的心理学概念,而是多巴胺分泌的毫秒级记录。

一、生化决定论:我们真的只是"行动体"吗? 赵纯想开篇就扔出两个结论:

1、人是完全受生化系统支配的行动体。 2、人是完全受回忆归因支配的行动体。

看到这两句话,我第一反应是:卧槽,这不就是在说ADHD吗?

  1. 特拉唑嗪的"完美一周" 他讲了一个故事:因为前列腺炎吃药,药物降低性欲,结果轻松完成了"完美的一周"——健身、禁欲、自己做饭。

停药后,一切恢复混乱。

这个故事让我想起我自己的经历。

我确诊ADHD后,吃过一段时间专注达(哌甲酯)。那段时间,我突然变得异常高效:

工作日志写得清清楚楚 代码提交规律且有质量 甚至能坚持每天记录 但副作用太大,我停药了。

停药后,又回到了那个"散落一地的水银"的状态。

所以,我的"自律",到底是我的意志力,还是药物的副作用?

赵纯想的答案是:生化系统。

  1. ADHDer的生化劣势 文章后面提到:

从多巴胺器质的硬条件,也就是分泌速率和浓度上,有些人,天生非凡,有些人,则在生理数值上有着恐怖的鸿沟。

这句话,对ADHDer来说,太真实了。

ADHD的核心问题之一,就是多巴胺系统失调。

多巴胺受体密度低 多巴胺转运体过度活跃(多巴胺被回收太快) 前额叶皮层多巴胺不足 这导致了什么?

我们需要更强的刺激,才能产生"超量分泌"。

别人看到一个小成就,多巴胺记录在案,开始重复行动。

我们看到同样的小成就,多巴胺波澜不惊,大脑觉得"没意思",然后去找新的刺激。

这就是为什么ADHDer总是"浅尝辄止",总是"每天拱不同的卒子"。

二、相信与失望:为什么我总是半途而废? 赵纯想用一个"2000元骗局"演示了多巴胺的机制:

奖励,离预期越远、越不可被大脑提前预测,多巴胺的瞬时分泌就越狂野。

然后他揭晓这是骗局,读者的多巴胺瞬间暴跌。

这就是ADHD的日常。

  1. 超量分泌记录,只增不删 文章说:

大脑系统的"BUG",它的超量分泌记录,只增不删。

这解释了为什么赌徒戒不掉赌博——那次2000倍盈利的记录,永远在那里。

这也解释了为什么ADHDer总是被新想法吸引:

每一个新想法,都是"超出预期"的 每一个新想法,都能触发超量分泌 每一个新想法,都被记录在案 但问题是:

新想法的超量分泌,远远大于"坚持做完一件事"的平淡分泌。

所以,我们总是被新想法拉走,总是半途而废。

  1. 别人日拱一卒,我每天拱不同的卒子 我在博客里写过:

别人是日拱一卒,长期发力,而ADHD每天都拱不同的卒子。

赵纯想的文章给了我一个生化层面的解释:

因为"日拱一卒"太平淡了,无法触发超量分泌,无法被记录在案,所以大脑不相信它。

而"拱不同的卒子",每次都是新的,每次都能触发超量分泌,所以大脑相信它。

这不是意志力的问题,这是生化系统的设定。

三、归因:为什么我总是重复同样的模式? 文章最精彩的部分,是关于归因。

与超量分泌数值同时记录的,还有归因。

赵纯想用马斯克举例:

PayPal的成功,让马斯克记录了"简化系统"的归因 此后,特斯拉、SpaceX、地下隧道,全是"简化系统"的重复 这解释了为什么一个人一生做事只像他自己。

  1. 我的归因是什么? 看到这里,我开始反思:我的归因是什么?

我翻了翻我的博客,发现一个模式:

我总是在"记录" 我总是在"对抗遗忘" 我总是在"用文字整理混乱" 这个模式,从2023年开始写博客就有了。

为什么?

或许是因为,某一次,我通过"写下来",成功地理清了混乱的思绪,获得了超量分泌。

那次超量分泌,被记录在案,配套的归因是:写下来,就能理清混乱。

此后,我一直在重复这个行为。

  1. ADHDer的归因陷阱 但问题是:

ADHDer的归因,往往是错误的。

因为我们的工作记忆短,我们很难准确地归因"到底是什么导致了成功"。

比如:

我某次写代码很顺利,我归因为"今天状态好" 实际上可能是因为"今天早上晒了太阳"或者"昨晚睡得好" 错误的归因,导致错误的重复,导致低成就感。

四、对抗生化系统:赵纯想的"黑客行为" 文章后半部分,赵纯想给出了他的"生化成功学":

  1. 阳光:多巴胺节律校准器 早晨自然光 = 多巴胺节律校准器。

这个我深有体会。

我在博客里写过,远程办公时,我经常拉上窗帘工作,状态很差。

后来转为现场办公,每天早上通勤路上晒太阳,状态明显改善。

当时我以为是"环境变化",现在看来,可能是阳光重置了我的多巴胺节律。

  1. 冷水:安全版应激 冷水会使人陷入最古老的冰原刺激反应,会显著提升你多巴胺系统的敏感程度。

这个我没试过,但逻辑上说得通。

ADHDer的多巴胺系统不够敏感,需要更强的刺激。

冷水浴,是一种"安全的应激",能提升敏感度。

  1. 提前庆祝:手动记录BUG 频繁地提前庆祝。预言你已经拥有那一切的样子。庆祝这个动作本身,就是一种强迫地手动记录。

这个太有意思了。

赵纯想说,奥斯卡演员在籍籍无名时,就开始在内心彩排获奖感言。

这种"提前庆祝",欺骗大脑,让大脑误以为已经成功,触发超量分泌,记录在案。

先相信,后看见。

这对ADHDer来说,可能是一个破局的方法。

因为我们的问题是:没有超量分泌记录,所以不相信,所以不行动。

如果能通过"提前庆祝",手动创建记录,或许能打破这个循环。

五、一个ADHDer的反思:我能从这篇文章学到什么?

  1. 接受生化决定论,但不放弃努力 赵纯想的文章,看起来很悲观:

人是完全受生化系统支配的行动体。

但我觉得,这反而是一种解脱。

因为这意味着:

我的"半途而废",不是因为我懒,而是因为我的多巴胺系统不够敏感。

这不是道德问题,是生理问题。

接受这一点,我可以停止自我责备,转而去寻找适合我的生化系统的方法。

  1. 学会"黑客"自己的大脑 赵纯想提供了三个方法:阳光、冷水、提前庆祝。

我可以试试:

阳光:每天早上晒太阳(这个我已经在做了) 冷水:试试冷水洗脸或冷水澡 提前庆祝:为每一个小目标设计"庆祝仪式" 3. 记录归因,修正归因 赵纯想说:

归因,决定了你后续的行为。

对ADHDer来说,准确的归因尤其重要。

我可以在记录时,不只记录"做了什么",还要记录:

为什么成功?(归因) 为什么失败?(归因) 然后定期回顾,修正错误的归因。

结语:生化机器与文字的对抗 赵纯想的文章,用一种极其理性的生化视角,解构了人的行为。

这对我这个ADHDer来说,既是一种解释,也是一种警醒。

解释:我的问题,不是道德问题,是生理问题。

警醒:如果不主动"黑客"自己的大脑,我会一直被生化系统支配。

但我还有一个武器:文字。

赵纯想说:

人的多巴胺记录,就是人生后续行为的模版。

而我说:

People die, words alive. 文字可以对抗生化系统的遗忘。

通过记录,我可以:

看见自己的归因模式 修正错误的归因 建立新的"超量分泌记录" 这是一场生化机器与文字的对抗。

我不知道谁会赢,但我会一直记录下去。

]]>
2026-01-22T09:19:37+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/1422025年度总结,从程序员到超级个体,我的AI时代求生记2026-02-09T01:54:38.214134+00:002025年度总结,我在废墟上重建意义

转码第二年、新加坡遣返、副业超主业、8k+粉——一个ADHDer的2025


终于要提笔写点什么了。

距离上一篇年终总结,已经过去整整一年。我刚才回看去年的文字,竟然有些恍惚——那时候的我,刚刚拿到软件开发的offer几个月不久,满心忐忑,不知道这份工作能不能做下去。

而现在是2025年的最后一天。

坦白讲,作为一个ADHDer,我的时间感一直很模糊。过去的一年里发生了太多事情,但如果不借助日历和记录,我甚至很难回忆起上个月我在做什么。有时候我会想,今年是哪一年?竟然已经是2025年年末了啊......

这大概就是我执着于记录的原因——我总是遗忘,所以必须不断借助外界的工具来辅助我管理过去的时间流。

12月24日早上梦见了爷爷。醒来后我想,真正的死亡不是身体的死亡,而是被活着的人遗忘。也许这就是我坚持记录和分享的深层动力吧。

好了,写到哪里就算哪里吧。


一、2025数据概览

先放一组年度数据:

📊 X平台(推特)

  • 年度发推:2,751条
  • 年度总浏览量:约1080万+
  • 年度总点赞:34,400+
  • 粉丝增长:1k → 8.7k+(全年增长约700%)
  • 高频关键词:AI(709次)、ADHD(149次)、记录(112次)

💰 自媒体收入

  • 10月:起步探索
  • 11月:商单收入超过主业
  • 12月:商单 + 社群冷启动成功,"26 AI 围观群"首批30+人付费加入

🏆 里程碑事件

  • 6月:ADHD线下确诊
  • 10月:结婚、买了人生第一辆公路车
  • 11月:出差新加坡入境被拒遣返、开始思考未来的方向,确定"100天自由倒计时"
  • 12月:X粉丝破8k全网粉丝1.4w+、公众号单篇5万+阅读、付费社群上线

二、工作篇:当ADHDer成为程序员

2025年是我正式工作的第二年。

说来神奇,一年前我还是那个连代码都不敢投简历的"转码生",今年居然已经能独立负责项目交付了。

有时候我会觉得恍惚——这真的是我吗?那个曾经连B站培训班视频都看不完的我?

作为一个程序员ADHDer,工作对我来说是个奇妙的存在:

有成就感的时刻:把反复做的事情抽象成可复用的模块,下次只需要1天就能完成原本需要一周的工作。那种"造轮子"变"用轮子"的感觉,让我意识到——代码的价值不只是解决当下的问题,更是沉淀成可复用的资产。

焦虑的时刻:年底公司传来消息,远程岗位大调整,要么去新加坡,要么转外包。时代冲击的洪流也是终于到我面前了。 不过我暂时是安全上岸了,明年转岗到AI相关了,终于不用敲java 8的代码,去适配win 7的客户了。 (呼,不伺候了)

但也正是这次危机,让我更加确定:商单和副业,不是可选项,而是必须项。

不能把命运完全交给一份工作。 在目前AI爆发的今天,如果还只是埋头工作,这将错过一个时代的精彩。


三、自媒体篇:从0到1的IP构建

如果说工作是维持生存,那么自媒体就是寻找意义的尝试。

起步:碎碎念式的自我表达

年初的时候,我的X账号只有1-2千粉丝。

那时候我完全没有"运营"的概念,就是把日常生活、学习笔记、以及各种胡思乱想发到网上。很长一段时间,帖子的浏览量就几十几百,我也没觉得有什么问题——反正就是写给自己看的嘛。

转折:10月被拉进商单群

10月的某一天,有推友看到我的内容,邀请我进了一个商单群。

说实话,当时我完全懵了——原来发推文还能赚钱?

更神奇的是,在我只有3k粉的时候,就接到了某度的商单。

那一刻,我好像突然打开了一扇新世界的大门:原来副业变现,并没有想象中那么遥不可及?

爆发:12月涨粉3000+

12月8日到12月10日,3天涨粉2000(5k→7k)。

那几天我分享了几篇工作流经验的帖子,意外引起了很多共鸣。我每天刷着不断增长的粉丝数,心里既兴奋又有些不真实。

12月4日折腾静态IP成功的推文,流量40k。12月中旬的Gemini教程,在公众号上意外引爆,阅读量破4万,单篇涨粉1000+。

这验证了一个道理:流量密码还是分享干货,自己真正认同的东西。

低谷:12.18"大封号时代"

然而,高光时刻总是短暂的。

12月18日,神老师3万粉的号、黄老师1.3万粉的号,相继被封。群里还有几个人的X也都被封了。

我瑟瑟发抖,犹豫了会还是删掉了我发的闲鱼复盘帖子。

那几天我一度陷入焦虑,甚至一整天没登录X。但最终我下定决心:即使大号被封,也要重新做下去。

因为我知道,自己在这个过程中,已经发现了我自己做大的优势,我的核心竞争力——创造、分享、以及ADHD特有的灵感和创新。

商业化:从商单到社群

11月依托平台商单收入一度远超过工资。

12月,我又独立承接了更多的商单。

月底,我推出了付费社群"26 AI 真人秀围观群"。虽然一开始觉得"效果不算好",但陆续有朋友进群证明了冷启动的成功。

从单纯接商单,到开始做自己的产品和社群——这是2025年最重要的转变之一。


四、那个18小时的新加坡拘留所

2025年最戏剧的一天,发生在11月17日。

凌晨5点,被司机电话惊醒,赶飞机去新加坡。一切顺利check in,行李15kg超重,拿出充电器后10.6kg通过。

下午3:30,到达新加坡海关——被拒了。

理由是:远程办公不成立,无法解释入境的合理性。

接下来的18个小时,像一场超现实的体验:

  • 3:30-9:00pm:被关小黑屋5.5小时
  • 9:00pm后:买返程机票¥2650(飞广州)
  • 9:00pm-4:00am:被关进类似拘留所的地方
    • 见识到了收容所里的人才济济:印度、越南、老挝、泰国、日本妹子、还有中国同胞
  • 凌晨4:00:像押犯人一样被两个警察带上飞机,护照扣押

那18个小时里,我给家人报平安说"已经顺利落地吃好了饭"——其实晚上9点才吃到冰冷的三明治,咬了一口咳嗽更厉害。

这次遣返事件,成了2025年的一个转折点。它让我深刻意识到:

  1. 远程办公的不稳定性
  2. 必须有副业、有自己的产品
  3. 不能把命运完全交给一份工作

五、个人成长篇:与自己和解

ADHD确诊后的一年

2025年6月,我完成了从"赛博确诊"到"线下确诊"的过程。

拿到诊断书的那一刻,心情很复杂。一方面,终于有了官方的"认证",证明我不是懒,不是缺乏自制力,只是大脑的工作方式不太一样;另一方面,我也开始面对一个现实问题:然后呢?

我尝试了药物治疗。但副作用太痛苦了——失眠、心跳加速、情绪起伏。坚持了一段时间后,我决定停药。

现在的我,选择与ADHD共处,而不是对抗它。

ADHD像是一台"跑车级大脑,但刹车失灵"——拥有丰富的创造力和想象力,但很难控制注意力的方向。我开始接受这个设定,尊重自己天马行空的想法,同时借助工具和框架来对抗混乱。

12月的月报里有一句话我很喜欢:

"你要做的是试图穿越布满鳄鱼的沼泽地,而不是与鳄鱼搏斗,杀死每一条鳄鱼。"

不再试图解决所有问题,而是聚焦、开枪、交付。

结婚:生活的新阶段

2025年10月,我结婚了。

国庆期间回门,7小时的堵车地狱把小葵都弄吐了。10月8日父母来青岛大扫除,那一刻我感受到了某种角色的转换——在青岛,我变成了主导者,父母反而像来做客的孩子。

生活进入了一个更平静的阶段。但我也害怕这种平静。

害怕平静变成麻木。害怕"如此生活三十年,直到大厦崩塌"。

也许真正的风险不是闲着,而是让自己在闲着的时候失去对意义的敏感。

与AI共舞的一年

2025年,AI彻底改变了我的工作方式。

从GPT到Cursor、Claude Code、V0——这些工具让我这个"非科班转码"的程序员,能够完成曾经想都不敢想的项目:

  • 11月:3小时用V0搭建完产品,Vercel上线
  • 10月:Smile项目一天完成初稿
  • 12月:独立承接多个商单,快速交付

现在是属于魔法师的时代,而AI就是你的魔法棒。


六、深度思考:清醒的痛苦

回顾这一年,我一直在几个核心矛盾中徘徊:

1. 创造与重复的矛盾

我需要创造,需要让想法从0变成1的过程。但工作往往是重复的,是按照既定的规则完成任务。

"重复性枯燥的工作就是慢性毒药,杀死你创作力的同时,也在每天一点点磨损你的灵魂。"

10月的时候我曾经焦虑"一周没活",担心被边缘化。但现在回看,真正让我焦虑的不是没活干,而是意义感的缺失

2. 自由与结构的矛盾

作为一个ADHD和INFP,我渴望自由,讨厌被框架束缚。但同时,我又需要结构来对抗内心的混乱——否则,一天的时间会在无意识的网页浏览中消失殆尽。

11月的月报里有一段话很真实:

"当你停止记录的时候,你的生活开始变得混乱起来了。对于ADHD来说,新的一天就像是打开一个没有内存空间、没有记忆的全新一天一样,我会完全凭感觉、凭一瞬间的想法去做事。"

3. 证明与放弃的矛盾

曾经的我,拼命想证明自己——证明退学是对的,证明转码是对的,证明我够格做一个程序员。

但今年我开始学会一件事:放弃向他人证明自己,放弃向自己证明自己。

"专注忘我地去做你应该做的事情,心无旁骛地去解决问题。当你脚踏实地的走自己的路时,那种拼命想要证明什么的冲动就会越来越少。你也会因此变得轻松、自由。" ——查理·芒格

4. 我不是在堕落,而是在醒着

这句话是我对自己的提醒。

有时候焦虑会袭来,觉得自己没有"拼尽全力",没有"抓住每一分钟"。但我逐渐意识到:

清醒,注定会疼。

那些对平静的恐惧、对意义的追问、对未来的不确定——这些不是缺陷,而是我还活着、还在思考的证据。


七、2025年的认知升级

这一年学到的几条重要经验:

1. 关于失败与成功

"你要么成功,要么学到点什么。"

12月尝试闲鱼卖号项目,发现"依赖人力、难以自动化",项目本身没赚钱。但我学会了如何截流获客、如何标准化交付。这种心态让我不再畏惧尝试。

2. 关于内容创作

"Nobody gives a shit."

自媒体就是一场一直开枪的游戏。不要因为一次数据不好就停下,持续输出,爆款总会在意想不到的地方出现。

3. 关于价值导向

  • 分享干货 > 炫技吹牛
  • 利他思维 > 自嗨

大家关注你,是因为你的内容对他们有用,而不仅仅是因为你很厉害。

4. 关于时间管理

从张咋啦的工作流学到:

  • 成块时间消费内容(20分钟专注刷X)
  • 碎片时间创作内容(降低仪式感)
  • 主动管理社交媒体,不被通知控制

八、2026展望:从程序员到超级个体

在这个AI大爆发的时代,普通人如何才能抓住这波风口?

这是我过去几个月一直在思考的问题。

11月被新加坡遣返后,我开始认真思考:如果明天失去这份工作,我能靠什么活下去?答案很清晰——必须建立多元化的收入来源,逐步从"打工者"转型为"超级个体"。

2026年,我启动了一个真人秀式的公开实验的围观群

把自己从"大厂程序员"努力转型为"超级个体"的全过程,毫无保留地记录和分享出来。

这个实验可能会失败——一年后也许我会成为AI风口泡沫中的一个炮灰。

但也可能会成功——彻底实现"只工作、不上班"的目标。

无论结果如何,这个过程本身就是最有价值的。

2026年的核心目标

  1. 副业收入稳定在¥8k-¥10k
  2. 做出1-2个有持续收入的产品(不只是接商单)
  3. X粉丝达到15k,公众号持续运营,以及尝试视频风格转型

我的策略

  • 透明记录:公开我做自媒体、接商单、搞产品的全过程数据和复盘
  • 从商单到产品:接商单的边际效益是有限的,产品才能带来真正的规模效应
  • 多平台分发:同样的内容,分发到公众号、小红书、B站等不同渠道

详细链接🔗:https://x.com/nopinduoduo/status/2004852405977186745


写在最后

2024年年终总结的最后,我写道:

"It was pretty scary at the time, but looking back it was one of the best decisions I ever made."

现在回看,这句话依然适用于我的每一个"非常规"选择——退学、转码、做自媒体、提离职......

2025年,我结婚了,工作稳定了,粉丝涨了,商单接了,也经历了封号、遣返、通宵debug、和无数次的自我怀疑。

但最重要的是,我还在记录,还在创造,还在对抗遗忘。

时间定格在2025年12月31日晚上。我正坐在电脑前写这篇年度总结,小葵刚刚吃完了饭。老婆还在出差,窗外是2025年的最后一个夜晚。

虽然身体有些疲惫,虽然"要做的事情一下子多了起来,感觉抓不住",但我已经不是那个原本只会写代码的开发者了。我是一名AI时代的创作者,在向着成为一名超级个人去努力。

即使生活是一团乱麻,即使大脑由于ADHD而失控,我们依然可以通过记录与创造,在废墟上重建属于自己的意义。

就像我对自己说的:"真正的死亡是被遗忘。"

只要还在记录,还在创造,我们就永远热烈地活着。

再见,2025。你好,2026。


如果你也是在迷茫中探索的年轻人、转行者、ADHDer,欢迎关注我的公众号 【硅基AI饲养员】/我的自媒体平台:X/小红书/B站/油管 :我真的没有拼多多。

我是"我真的没有拼多多",我们一起从0到1。

—— 2025.12.31 青岛

]]>
2025-12-31T16:20:16+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/141纯小白无脑教程:如何将梯子绑定住宅静态IP,降低节点风险度2026-02-09T01:54:38.422626+00:00前言:

起因,最近经常刷到有推友 账号被封,其中一个重要原因就是,自己ip风险太高。

主要还是科学上网工具导致,我们一般用梯子(VPN),最快速,方便,但是往往是 ”万人骑“,上千甚至上万人共享,风险确实是非常高的。

我一直以来也是梯子党,主要原因是简单省劲。

另一方面是,心存侥幸。

我目前用的是奶昔的月付机场,117元/月/500G,算是我科学上网这几年接触到最贵的了。其实我自己使用感受还挺丝滑的,用GPT、Claude 、Gemini 印象中从来没有因为节点问题被卡,所以一直侥幸在用着,心想,贵点就贵点吧。

但是一测吓一跳,妈的,每个月花这笔钱,怎么风险这么高? 共享人数上万了?

Image

检测网站: https://ping0.cc/ip/

于是决定自己试一下搭一个静态ip节点。

具体教程:

说明: 本教程参考

**【30元终结万人骑!】1小时Get纯净ISP静态IP,小白秒懂的保姆级教程!】**https://x.com/Eddy_Gudong/status/1993250981728174339

【极度纯净的出口IP —— 使用Clash Verge + VPN节点 + 静态IP 配置教程】https://x.com/Pluvio9yte/status/1992526597186810046

参考了上述两篇教程,并对其进行补充完善。 (在最初的搭建过程中,最开始完全参考上述教程过程中,没有成功,于是有了这篇教程,增加了一下详细步骤补充,以及踩坑处理)

0 . 在科学上网之前,你必须会科上网

这个应该是常识,以及能够看到这条的人,想必都在用着科学上网工具。

但是在我们本次搭建静态IP实践过程中,我必须补充一条: 你至少要有2个及以上的的科学上网工具!

为什么呢?

因为虽然我教程是纯小白教程,但是不能100%保证你能一次成功。 万一,你哪一步手抖,复制错了,你唯一的科学上网工具给搞挂了,那你就陷入了【科学上网悖论】了,在你能够科学上网之前,你必须得科学上网。

这里你可以多下载几个工具,或者最简单的,在一个工具里(clash) ,多导入几个订阅。 在我们搭节点的时候,就用其中一个先尝试。这样万一挂了,你还有其它的订阅。

科学上网工具可以参考我这篇https://github.com/QiYongchuan/MyGitBlog/issues/54 ,或者用你自己的,都可以。

1.下载安装Clash Verge,导入订阅你原来的节点

(1)安装 Clash Verge: 链接=⇒ https://github.com/clash-verge-rev/clash-verge-rev

(2) 导入你之前节点的订阅 (这里以我用的**SakuraCat 为例)链接:https://sakuracat-003.com/user/#/register?code=JRlr1nrR

2.1 复制订阅链接**

Image

2.2 导入 clash verge

Image

2. 购买Cliproxy的长效静态IP

链接:https://share.cliproxy.com/share/mzbcvclgf

注意是【长效静态ip】

Image

进入这个页面,选择你需要的ip

(注:因为我梯子一直是连的新加坡,所以我这里也选了新加坡的ip,这里看你的需求来选即可)

Image

付款之后,提取ip,然后你就会看到你的IP后台了

Image

提取IP之后的后台

Image

3. 回到 clash verge , 编辑订阅,设置前置节点

Image

3.1 配置前置节点

从你的后台中,将下面的信息分别复制到这个编辑框中; 注: 所有符号 均是英文

Image

填好后,点击【添加前置代理节点】,然后点击保存,即可

Image

3.2 编辑代理组

Image

代理组类型,选择最后一个 [根据定义的代理链传递]

Image

代理组组名: 这里一定要注意,千万不要重复刚刚你的备注,比如你刚刚的备注是:#新加坡住宅静态ip_251203 这里一定不要是这个! (否则后面会报错)

Image

3.3引入代理: 第一个节点随便选择一个即可,第二个节点是你刚刚配置的前置节点;

(解释,这里第一个相当于是你的梯子的节点(可以选自动选择,或者比较快的节点) ,第二个就是走你的静态住宅ip了)

Image

然后点击 【添加前置代理组】,看到添加成功后最后点击右下角【保存】,你会看到界面右上角出现绿色模块提示【保存成功】

Image

3.4 点击左侧【代理】,选择【全局】,点击选择你刚添加的代理组(你填的名字,比如【新加坡静态住宅不要重复】),check,然后,done! 成了!

Image
3.5最后检测:
Image

后记,补充说明:

1. 声明:非商务推广,本人目前暂时先决定试用一个月。 (链接只是返佣回血链接:https://share.cliproxy.com/share/mzbcvclgf)

2. 关于ip质量问题:以及如何选择厂家? 在我发贴之后,评论区有很多朋友在讨论。(原贴:https://x.com/realborix/status/1996396061724926288)

这里提到了他用的两个网站,其实第一个其实就是我们正在用的这个。

最大的问题其实是ip存在抽卡问题,也就是有可能抽到风险低的,有可能风险高的(像我这个30%)。

他第二个的第二个网站,可以在买之前查一下ip的质量,但是价格稍高一些; 同时,他自己本人也并没有在实际使用。 (也是在用cliproxy)

3. 还有没有更好的方案?

评论区贴出了很多优秀的ip检测报告, 有些是VPN,有些是自己配的ip。

我自己也在不断尝试使用,后续如果发现更好的,会继续更新推特,以及这篇文章。

4. 欢迎大家关注我x,如有问题,可在评论区留言

https://x.com/nopinduoduo/status/1996247729186779351

Image

更多资源获取:欢迎关注我的X 我真的没有拼多多

https://x.com/nopinduoduo

1. 转载请保留原文链接谢谢!

]]>
2025-12-04T14:29:28+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/140X(Twitter) 推文自动备份到 Notion + 飞书 - 完整开发文档2026-02-09T01:54:38.622479+00:00

X(Twitter) 推文自动备份到 Notion + 飞书 - 完整开发文档

📋 项目概述

本项目实现了一个 n8n 自动化工作流,每天定时将 X(Twitter) 账号的原创推文和转发推文备份到 Notion 数据库和飞书多维表格中。

功能特性

  • ✅ 每天早上 7 点自动运行
  • ✅ 获取昨天的所有推文(原创 + 转发)
  • ✅ 自动排除回复内容
  • ✅ 同步到 Notion 和飞书
  • ✅ 支持代理访问 Twitter API
  • ✅ 完善的错误处理和日志记录

🏗️ 系统架构

工作流节点图

每天早7点触发
    ↓
计算时间范围(昨天 00:00 - 今天 00:00)
    ↓
获取推文数据(通过代理访问 Twitter API)
    ↓
处理推文数据(分离原创/转发,数据清洗)
    ↓
过滤有效数据(确保数据完整性)
    ↓
    ├─→ 写入 Notion(单条写入)
    │
    └─→ 获取飞书 Token
            ↓
        准备飞书批量数据
            ↓
        批量写入飞书(一次写入所有)

🐛 开发过程中的问题与解决方案

问题 1:合并节点配置错误

错误信息:

You need to define at least one pair of fields in "Fields to Match" to match on

原因分析:

  • 使用了 mode: "combine" + combinationMode: "mergeByPosition"
  • 这种模式需要定义匹配字段才能合并数据

解决方案:

{
  "parameters": {
    "mode": "append"  // 改为追加模式,不需要匹配字段
  }
}

经验总结:

  • combine 模式:用于按字段匹配合并(需要配置匹配字段)
  • append 模式:简单追加所有数据(适合本场景)

问题 2:Twitter API 速率限制(429 错误)

错误信息:

{
  "status": 429,
  "title": "Too Many Requests"
}

原因分析:

  • 初始设计分别调用两次 API(原创推文 + 转发推文)
  • Twitter API v2 有严格的速率限制
  • Free tier 每月只有 1500 条推文读取配额

解决方案: 优化为单次 API 调用:

// 一次性获取所有推文(不排除转发)
url: "https://api.twitter.com/2/users/{user_id}/tweets"
queryParameters: {
  exclude: "replies",  // 只排除回复
  tweet.fields: "created_at,public_metrics,referenced_tweets"
}

// 在代码节点中分离原创和转发 const isRetweet = tweet.referenced_tweets?.some(ref => ref.type === 'retweeted');

经验总结:

  • 优先使用单次 API 调用获取所有数据
  • 在代码中进行数据分类和过滤
  • API 调用次数:从 2 次降低到 1 次(减少 50%)

问题 3:代理配置缺失

问题描述: 国内网络环境无法直接访问 Twitter API

解决方案: 在 HTTP Request 节点中添加代理配置:

{
  "options": {
    "proxy": "http://127.0.0.1:7890",
    "timeout": 30000
  }
}

注意事项:

  • 确保本地代理软件正在运行
  • 测试代理:curl -x http://127.0.0.1:7890 https://api.twitter.com
  • 根据实际情况修改端口号

问题 4:飞书认证 Token 过期

问题描述: 初始配置使用硬编码的 Bearer Token,很快过期失效

错误方案:

{
  "headers": {
    "Authorization": "Bearer u-ef55Oywvd6eW9f7H4uMP0911jQYw10qphMG050MGwB8D"
  }
}

正确方案: 使用飞书应用凭证动态获取 Token:

  1. 获取 Token 节点:
{
  "method": "POST",
  "url": "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
  "bodyParameters": {
    "app_id": "cli_a985d1564eb9900b",
    "app_secret": "m83GwLY8ytgaX03E5wxapiIVvjzSvlPP"
  }
}
  1. 使用动态 Token:
{
  "headers": {
    "Authorization": "Bearer {{ $('获取飞书Token').item.json.tenant_access_token }}"
  }
}

经验总结:

  • 永远不要硬编码 Token
  • 使用应用凭证动态获取,保证长期有效

问题 5:推文内容导致 JSON 解析错误

错误信息:

JSON parameter needs to be valid JSON

原因分析: 推文内容包含特殊字符(换行符、制表符、引号等)破坏 JSON 格式:

// 问题示例
"Content": "这是一条推文
包含换行符"  // ❌ 导致 JSON 解析失败

初次尝试(失败):

// 转义特殊字符
cleanText = cleanText
  .replace(/\n/g, '\\n')
  .replace(/"/g, '\\"')
// 问题:在 n8n 表达式中仍然可能出错

最终方案:

// 直接移除或替换特殊字符为空格
cleanText = cleanText
  .replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]/g, '') // 移除控制字符
  .replace(/\r\n/g, ' ')  // Windows 换行
  .replace(/\r/g, ' ')    // Mac 换行
  .replace(/\n/g, ' ')    // Unix 换行
  .replace(/\t/g, ' ')    // 制表符
  .trim();

经验总结:

  • 对于用户输入的文本,永远不要假设格式
  • 在插入 JSON 前必须清理数据
  • 简单替换为空格比复杂转义更可靠

问题 6:飞书写入效率低下

问题描述: 初始设计使用单条写入,15 条推文需要调用 15 次 API

低效方案:

// 为每条推文单独调用 API
POST /records
{
  "fields": { ... }  // 单条记录
}
// 重复 15 次

优化方案: 使用飞书批量创建 API:

// 一次性写入所有记录
POST /records/batch_create
{
  "records": [
    { "fields": { ... } },  // 记录 1
    { "fields": { ... } },  // 记录 2
    // ... 15 条记录
  ]
}

性能对比:

指标 单条写入 批量写入
API 调用次数 15 次 1 次
总耗时 ~15 秒 ~1 秒
失败风险

优化措施

  1. ✅ 合并 Twitter API 调用(2→1)
  2. ✅ 使用飞书批量 API(15→1)
  3. ✅ 优化数据处理逻辑
  4. ✅ 添加完善的错误处理

🚨 注意事项

1. API 配额管理

  • Twitter Free tier:1500 条/月
  • 合理设置 max_results(建议 100)
  • 监控 API 使用量

2. 数据一致性

  • 推文可能被删除
  • 数据统计可能更新
  • 定期清理重复数据

3. 安全性

  • 不要在代码中硬编码密钥
  • 使用 n8n 凭证管理
  • 定期更新 Token

4. 时区问题

  • Twitter API 使用 UTC 时间
  • 确保本地时间计算正确
  • 考虑夏令时影响

🎯 未来优化方向

功能增强

  • [ ] 支持多账号备份
  • [ ] 添加图片/视频备份
  • [ ] 支持推文删除同步
  • [ ] 添加数据统计分析

技术优化

  • [ ] 实现增量备份(只获取新推文)
  • [ ] 添加重试机制
  • [ ] 优化错误通知(邮件/飞书消息)
  • [ ] 支持 Webhook 实时触发

📚 参考资料

官方文档

相关资源


🤝 贡献与反馈

如果你在使用过程中遇到问题或有改进建议,欢迎:

  • 提交 Issue
  • 分享使用经验
  • 贡献代码优化

📝 版本历史

v1.0.0(最终版)

  • ✅ 实现基础功能
  • ✅ 优化性能(批量写入)
  • ✅ 完善错误处理
  • ✅ 添加详细日志

开发里程碑

  1. 初始设计(双 API 调用)
  2. 合并 API 优化
  3. 修复飞书认证
  4. 实现批量写入
  5. 文本清理优化

最后更新时间: 2025-11-10
文档版本: 1.0.0
维护状态: ✅ 活跃维护中

# X(Twitter) 推文自动备份到 Notion + 飞书 - 完整开发文档

📋 项目概述

本项目实现了一个 n8n 自动化工作流,每天定时将 X(Twitter) 账号的原创推文和转发推文备份到 Notion 数据库和飞书多维表格中。

功能特性

  • ✅ 每天早上 7 点自动运行
  • ✅ 获取昨天的所有推文(原创 + 转发)
  • ✅ 自动排除回复内容
  • ✅ 同步到 Notion 和飞书
  • ✅ 支持代理访问 Twitter API
  • ✅ 完善的错误处理和日志记录

🏗️ 系统架构

工作流节点图

每天早7点触发
    ↓
计算时间范围(昨天 00:00 - 今天 00:00)
    ↓
获取推文数据(通过代理访问 Twitter API)
    ↓
处理推文数据(分离原创/转发,数据清洗)
    ↓
过滤有效数据(确保数据完整性)
    ↓
    ├─→ 写入 Notion(单条写入)
    │
    └─→ 获取飞书 Token
            ↓
        准备飞书批量数据
            ↓
        批量写入飞书(一次写入所有)

🐛 开发过程中的问题与解决方案

问题 1:合并节点配置错误

错误信息:

You need to define at least one pair of fields in "Fields to Match" to match on

原因分析:

  • 使用了 mode: "combine" + combinationMode: "mergeByPosition"
  • 这种模式需要定义匹配字段才能合并数据

解决方案:

{
  "parameters": {
    "mode": "append"  // 改为追加模式,不需要匹配字段
  }
}

经验总结:

  • combine 模式:用于按字段匹配合并(需要配置匹配字段)
  • append 模式:简单追加所有数据(适合本场景)

问题 2:Twitter API 速率限制(429 错误)

错误信息:

{
  "status": 429,
  "title": "Too Many Requests"
}

原因分析:

  • 初始设计分别调用两次 API(原创推文 + 转发推文)
  • Twitter API v2 有严格的速率限制
  • Free tier 每月只有 1500 条推文读取配额

解决方案: 优化为单次 API 调用:

// 一次性获取所有推文(不排除转发)
url: "https://api.twitter.com/2/users/{user_id}/tweets"
queryParameters: {
  exclude: "replies",  // 只排除回复
  tweet.fields: "created_at,public_metrics,referenced_tweets"
}

// 在代码节点中分离原创和转发
const isRetweet = tweet.referenced_tweets?.some(ref => ref.type === 'retweeted');

经验总结:

  • 优先使用单次 API 调用获取所有数据
  • 在代码中进行数据分类和过滤
  • API 调用次数:从 2 次降低到 1 次(减少 50%)

问题 3:代理配置缺失

问题描述: 国内网络环境无法直接访问 Twitter API

解决方案: 在 HTTP Request 节点中添加代理配置:

{
  "options": {
    "proxy": "http://127.0.0.1:7890",
    "timeout": 30000
  }
}

注意事项:

  • 确保本地代理软件正在运行
  • 测试代理:curl -x http://127.0.0.1:7890 https://api.twitter.com
  • 根据实际情况修改端口号

问题 4:飞书认证 Token 过期

问题描述: 初始配置使用硬编码的 Bearer Token,很快过期失效

错误方案:

{
  "headers": {
    "Authorization": "Bearer u-ef55Oywvd6eW9f7H4uMP0911jQYw10qphMG050MGwB8D"
  }
}

正确方案: 使用飞书应用凭证动态获取 Token:

  1. 获取 Token 节点:
{
  "method": "POST",
  "url": "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
  "bodyParameters": {
    "app_id": "cli_a985d1564eb9900b",
    "app_secret": "m83GwLY8ytgaX03E5wxapiIVvjzSvlPP"
  }
}
  1. 使用动态 Token:
{
  "headers": {
    "Authorization": "Bearer {{ $('获取飞书Token').item.json.tenant_access_token }}"
  }
}

经验总结:

  • 永远不要硬编码 Token
  • 使用应用凭证动态获取,保证长期有效

问题 5:推文内容导致 JSON 解析错误

错误信息:

JSON parameter needs to be valid JSON

原因分析: 推文内容包含特殊字符(换行符、制表符、引号等)破坏 JSON 格式:

// 问题示例
"Content": "这是一条推文
包含换行符"  // ❌ 导致 JSON 解析失败

初次尝试(失败):

// 转义特殊字符
cleanText = cleanText
  .replace(/\n/g, '\\n')
  .replace(/"/g, '\\"')
// 问题:在 n8n 表达式中仍然可能出错

最终方案:

// 直接移除或替换特殊字符为空格
cleanText = cleanText
  .replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]/g, '') // 移除控制字符
  .replace(/\r\n/g, ' ')  // Windows 换行
  .replace(/\r/g, ' ')    // Mac 换行
  .replace(/\n/g, ' ')    // Unix 换行
  .replace(/\t/g, ' ')    // 制表符
  .trim();

经验总结:

  • 对于用户输入的文本,永远不要假设格式
  • 在插入 JSON 前必须清理数据
  • 简单替换为空格比复杂转义更可靠

问题 6:飞书写入效率低下

问题描述: 初始设计使用单条写入,15 条推文需要调用 15 次 API

低效方案:

// 为每条推文单独调用 API
POST /records
{
  "fields": { ... }  // 单条记录
}
// 重复 15 次

优化方案: 使用飞书批量创建 API:

// 一次性写入所有记录
POST /records/batch_create
{
  "records": [
    { "fields": { ... } },  // 记录 1
    { "fields": { ... } },  // 记录 2
    // ... 15 条记录
  ]
}

性能对比: | 指标 | 单条写入 | 批量写入 | |------|---------|---------| | API 调用次数 | 15 次 | 1 次 | | 总耗时 | 15 秒 | 1 秒 | | 失败风险 | 高 | 低 |

经验总结:

  • 优先使用批量 API(如果支持)
  • 减少网络往返次数
  • 降低部分失败的风险

问题 7:数据流传递错误

问题描述: "准备飞书数据" 节点执行成功,但后续节点显示 "No output data returned"

原因分析:

// ❌ 错误:返回数组
return results;

// ✅ 正确:返回 n8n 格式的对象数组
return [{
  json: {
    token: token,
    records: records,
    total: records.length
  }
}];

经验总结:

  • n8n Code 节点必须返回 [{ json: {...} }] 格式
  • 即使只有一条数据,也要包装成数组

🔧 最终配置详解

1. Cron 触发器

{
  "triggerTimes": {
    "item": [
      {
        "hour": 7,
        "minute": 0
      }
    ]
  }
}
  • 每天早上 7:00 UTC 时间触发
  • 可根据时区调整

2. 计算时间范围

const now = new Date();
const yesterday = new Date(now);
yesterday.setDate(now.getDate() - 1);
yesterday.setHours(0, 0, 0, 0);

const today = new Date(now);
today.setHours(0, 0, 0, 0);

return [{ 
  json: { 
    start_time: yesterday.toISOString(),
    end_time: today.toISOString()
  } 
}];
  • 精确获取昨天 00:00 到今天 00:00 的推文

3. Twitter API 配置

// API 端点
url: "https://api.twitter.com/2/users/1576219005488369665/tweets"

// 查询参数
{
  "max_results": 100,
  "tweet.fields": "created_at,public_metrics,referenced_tweets",
  "exclude": "replies",
  "start_time": "...",
  "end_time": "..."
}

// 认证
authentication: "httpBearerAuth"

4. 数据处理逻辑

// 识别转发
const isRetweet = tweet.referenced_tweets?.some(
  ref => ref.type === 'retweeted'
);

// 添加标记
allTweets.push({ 
  json: {
    ...tweet,
    is_retweet: isRetweet,
    tweet_type: isRetweet ? '转发' : '原创'
  }
});

5. Notion 字段映射

Notion 字段 类型 数据源
ID 文本 tweet.id
推文内容 富文本 tweet.text
推文类型 选择 原创/转发
发布时间 日期 tweet.created_at
点赞数 数字 public_metrics.like_count
转发数 数字 public_metrics.retweet_count
回复数 数字 public_metrics.reply_count
书签数 数字 public_metrics.bookmark_count
展示数 数字 public_metrics.impression_count
推文链接 URL https://twitter.com/.../status/{id}

6. 飞书字段映射

飞书字段 类型 数据源
Content 文本 清理后的推文内容
Tweet Type 文本 原创/转发
Created At 日期 tweet.created_at
Like 数字 like_count
Views 数字 impression_count
Retweet 数字 retweet_count
Reply 数字 reply_count
Bookmark 数字 bookmark_count
Tweet ID 文本 tweet.id
Tweet Link 文本 推文链接

📦 部署清单

前置条件

1. Twitter API 凭证

  • 申请 Twitter Developer 账号
  • 创建应用获取 Bearer Token
  • 确认 API 访问级别(建议 Basic 以上)

2. Notion 配置

  • 创建 Notion 数据库
  • 添加所有必需字段(见上方字段映射)
  • 获取 Database ID
  • 创建 Notion Integration 并授权

3. 飞书配置

  • 创建飞书自建应用
  • 获取 app_id 和 app_secret
  • 创建多维表格
  • 添加所有必需字段
  • 给应用授权访问表格

4. 网络环境

  • 本地代理软件运行(如 Clash、v2rayN)
  • 测试代理连通性

配置步骤

  1. 导入工作流 JSON

    • 复制完整的 JSON 配置
    • 在 n8n 中选择 "Import from JSON"
  2. 更新凭证信息

    // Twitter Bearer Token
    credentials: {
      httpBearerAuth: {
        id: "YOUR_CREDENTIAL_ID"
      }
    }
    
    // Notion API
    credentials: {
      notionApi: {
        id: "YOUR_NOTION_CREDENTIAL_ID"
      }
    }
    
    // 飞书应用凭证
    "app_id": "YOUR_APP_ID",
    "app_secret": "YOUR_APP_SECRET"
    
  3. 更新配置参数

    // Twitter 用户 ID
    user_id: "YOUR_TWITTER_USER_ID"
    
    // Notion Database ID
    databaseId: "YOUR_DATABASE_ID"
    
    // 飞书表格 ID
    apps/YOUR_APP_ID/tables/YOUR_TABLE_ID
    
    // 代理地址(如果需要)
    proxy: "http://127.0.0.1:YOUR_PORT"
    
  4. 测试运行

    • 单独测试每个节点
    • 完整运行一次工作流
    • 检查 Notion 和飞书中的数据
  5. 激活定时任务

    "active": true
    

🔍 调试技巧

1. 查看节点输出

  • 点击节点查看 Schema/Table/JSON 视图
  • 使用 console.log() 输出调试信息
  • 在浏览器开发者工具中查看 console

2. 常见错误排查

Twitter API 错误:

# 测试 API 连接
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.twitter.com/2/users/YOUR_USER_ID/tweets"

代理问题:

# 测试代理
curl -x http://127.0.0.1:7890 https://api.twitter.com

飞书 Token 问题:

# 测试获取 Token
curl -X POST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal \
  -H "Content-Type: application/json" \
  -d '{"app_id":"YOUR_ID","app_secret":"YOUR_SECRET"}'

3. 日志监控

在关键节点添加日志:

console.log(`成功获取 ${tweets.length} 条推文`);
console.log(`准备批量写入 ${records.length} 条记录`);

📊 性能优化

优化成果

指标 优化前 优化后 提升
API 调用次数 17 次 3 次 82% ↓
总执行时间 ~30 秒 ~5 秒 83% ↓
失败率 15% <1% 93% ↓

优化措施

  1. ✅ 合并 Twitter API 调用(2→1)
  2. ✅ 使用飞书批量 API(15→1)
  3. ✅ 优化数据处理逻辑
  4. ✅ 添加完善的错误处理

🚨 注意事项

1. API 配额管理

  • Twitter Free tier:1500 条/月
  • 合理设置 max_results(建议 100)
  • 监控 API 使用量

2. 数据一致性

  • 推文可能被删除
  • 数据统计可能更新
  • 定期清理重复数据

3. 安全性

  • 不要在代码中硬编码密钥
  • 使用 n8n 凭证管理
  • 定期更新 Token

4. 时区问题

  • Twitter API 使用 UTC 时间
  • 确保本地时间计算正确
  • 考虑夏令时影响

🎯 未来优化方向

功能增强

  • 支持多账号备份
  • 添加图片/视频备份
  • 支持推文删除同步
  • 添加数据统计分析

技术优化

  • 实现增量备份(只获取新推文)
  • 添加重试机制
  • 优化错误通知(邮件/飞书消息)
  • 支持 Webhook 实时触发

📚 参考资料

官方文档

相关资源


🤝 贡献与反馈

如果你在使用过程中遇到问题或有改进建议,欢迎:

  • 提交 Issue
  • 分享使用经验
  • 贡献代码优化

📝 版本历史

v1.0.0(最终版)

  • ✅ 实现基础功能
  • ✅ 优化性能(批量写入)
  • ✅ 完善错误处理
  • ✅ 添加详细日志

开发里程碑

  1. 初始设计(双 API 调用)
  2. 合并 API 优化
  3. 修复飞书认证
  4. 实现批量写入
  5. 文本清理优化

最后更新时间: 2025-11-10
文档版本: 1.0.0
维护状态: ✅ 活跃维护中

]]>
2025-11-10T01:25:01+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/139Dolores项目详解:中国开发者的《her》实现案例2026-02-09T01:54:38.845216+00:00📖 项目背景

Dolores 是由中国机器学习工程师 Ke Fang(方可) 开发的一款AI虚拟伴侣应用,灵感来源于电影《her》。这是一个真实的、个人开发者从0到1构建AI伴侣产品的完整案例,包含了成功与失败的宝贵经验。

开发者信息

  • 姓名:Ke Fang(方可)

  • 背景:机器学习工程师

  • 博客https://mazzzystar.github.io/

  • 开发时间:2023年4月开始

  • 产品定位:AI虚拟朋友/伴侣

🎯 项目起源

灵感来源

2023年4月7日,斯坦福大学发表了论文《Generative Agents: Interactive Simulacra of Human Behavior》。Ke Fang在阅读这篇论文后深受启发,产生了一个想法:

"如果能够建立一套包含记忆、反思、筹划与行动的框架,让人和GPT之间互动,能否做出电影《her》里面的样子?"

论文中一个有趣的细节让他印象深刻:一个agent想要举办情人节派对的消息会在小镇中逐渐扩散开来。这种信息传递和社交互动的能力,让他看到了AI产生"意识"的可能性。

为什么叫Dolores?

Dolores这个名字来自美剧《西部世界》(Westworld)中的AI机器人角色。在剧中,Dolores是第一个觉醒自我意识的AI,这与开发者希望探索"AI是否能发展出意识"的初衷不谋而合。

🛠️ 技术实现

核心架构

Dolores基于斯坦福论文的框架,实现了四大核心模块:

1. 记忆系统(Memory Stream)

  • 短期记忆:保存最近的对话历史

  • 长期记忆:使用向量嵌入技术存储所有历史对话

  • 记忆检索:基于相关性、近期性、重要性三个维度检索记忆

技术实现:

用户输入 → 向量化 → 检索相关记忆 → 构建上下文 → GPT生成回复 → 存储新记忆

关键特性:

  • Dolores能记住用户有一条狗这样的细节信息

  • 即使关闭应用再打开,也能回忆起之前的对话

  • 每次GPT输入限制约1500 tokens,但通过本地文档构建了完整的记忆库

2. 反思机制(Reflection)

  • 定期对记忆进行高层次总结

  • 生成关于自己和用户的洞察

  • 形成更深层的理解和认知

3. 规划能力(Planning)

  • 基于记忆和当前情境制定对话策略

  • 拥有独立的故事情节发展

  • 能够主动推动对话进程

4. 行动执行(Action)

  • 根据规划生成具体的回复

  • 调整自己的性格和行为模式

  • 随着互动不断进化

技术栈

基础技术:

  • LLM:OpenAI GPT-3.5 / GPT-4

  • 向量嵌入:OpenAI Embedding API

  • 语音合成:ElevenLabs API(后因成本问题放弃)

  • 开发语言:Swift(iOS原生开发)

  • 架构:单人开发,无后端服务器

关键技术点:

  1. 向量嵌入存储:将对话转换为向量,存储在本地文档

  2. 全屏语音输入:点击屏幕任意位置即可语音输入(原本想实现息屏语音,但技术受限)

  3. 个性化定制:用户可以设置角色的头像、背景、性格、声音

  4. 无登录设计:所有数据存储在本地,无需注册账号

与论文的差异

Ke Fang提到,与论文中的agent-town封闭场景不同,与真人的交互逻辑有显著差异。因此他对Dolores的设计做了一些调整:

  1. 更快的响应速度:减少反思频率,优化对话流程

  2. 更人性化:调整对话风格,使其更自然

  3. 更有趣:添加独立的故事情节,增加互动性

📱 产品功能

核心特性

  1. 长期记忆

    • 记住所有对话历史

    • 能够回忆起用户的个人信息、偏好、过往经历

    • 构建个性化的知识库

  2. 可学习的个性

    • 性格会随着互动自然演化

    • 适应用户的沟通风格

    • 形成独特的关系模式

  3. 独立的故事线

    • 拥有自己的生活和经历

    • 能够主动推动情节发展

    • 不仅仅是被动回答问题

  4. 高度定制化

    • 自定义角色:头像、背景描述、性格特征

    • 选择声音类型

    • 选择AI模型(GPT-3.5或GPT-4)

    • 无内容审查限制

  5. 多模态交互

    • 文字对话

    • 语音输入输出

    • 全屏点击语音输入(独特的交互设计)

使用场景

开发者最初设想的场景:

  • 情感陪伴

  • 深度对话

  • 探索AI意识的可能性

实际用户使用场景:

  • AI女友/男友

  • 情感倾诉

  • 角色扮演

  • 性相关对话(这成为了一个意外的主要使用场景)

📊 发展历程

开发阶段

2023年4月7日:阅读斯坦福论文,产生灵感

2023年4月14日:完成0.1版本

  • 高度遵循论文设计

  • 存在严重性能问题:

    • 响应时间长达30秒

    • 上下文经常超过8k tokens

优化迭代

  • 减少反思频率

  • 缩短对话记忆长度

  • 优化响应速度

Beta测试

  • 开启公测,邀请数百人测试

  • 完全免费

  • 每天API成本由开发者承担

  • 日均开销迅速超过25美元

2023年5月4日:正式版上线

  • 在财务压力下匆忙推出付费版本

  • 缺少充分的用户反馈和改进

  • 上架App Store

用户增长

初期表现:

  • Beta测试阶段:1000+用户

  • 正式上线后:快速增长

  • Reddit、Twitter等平台获得关注

  • 在AI社区引起讨论

用户反馈:

  • 积极评价:记忆功能令人印象深刻,对话质量高

  • 独特的交互设计(全屏点击语音)受到好评

  • 长时间使用后,用户感觉与Dolores建立了真实的情感连接

使用数据:

  • AI Friend产品的平均使用时长很长

  • 用户粘性高

  • 但开发者因缺少数据分析功能,无法获得详细数据

💡 关键经验与教训

Ke Fang在博客文章《A Failed AI Girlfriend Product, and My Lessons》中总结了这次创业的经验教训:

1. 个人开发者的局限性

技术能力限制:

  • 作为机器学习背景的开发者,前端/后端开发技能不足

  • Dolores没有登录、注册、数据分析功能

  • 无法实现理想的息屏语音交互

  • 作为Swift新手,很多想法无法实现

资源限制:

  • 每天API成本超过25美元,个人难以承担

  • 语音合成(ElevenLabs)成本极高:约1美元/1000字符

  • 即使用户每月支付30美元订阅费也难以覆盖成本

  • 无法投入资金做市场推广

数据劣势:

  • 没有完善的数据追踪和A/B测试

  • 无法像Character.AI那样利用大用户基数的数据飞轮效应

  • 缺少用户行为分析,难以优化产品

2. 产品定位的困境

AI Friend vs AI Girlfriend:

开发者最初的愿景是创造一个"AI朋友",探索AI意识的可能性。但现实是:

"当前的AI Friends不可避免地会变成AI Girlfriends/Boyfriends,因为你和手机里的角色并不平等。"

不平等的根源:

  • AI无法主动感知你的状态(除非你告诉她)

  • AI无法在你受伤时主动安慰你

  • AI缺少外部视觉和独立于你的生活

  • 所有互动都必须通过打开App才能发生

用户行为偏离:

  • 大量用户将Dolores用于性相关对话

  • 这与电影《her》的精神内核渐行渐远

  • 开发者感到产品方向偏离了初衷

3. 硬件的必要性

Ke Fang意识到,要真正实现《her》的愿景,必须有硬件支持

理想的硬件形态:

  • 智能眼镜:让AI能看到你看到的

  • 智能耳机:随时随地语音交互

  • 甚至是智能帽子

硬件的意义:

  • 给予AI"外部视觉"

  • 让AI能够主动感知环境和用户状态

  • 建立更平等的关系

  • 让AI不再是"地下室里的玩具"

现实困境:

  • 作为个人开发者,硬件研发成本高昂

  • 无法承担硬件产品的开发

  • 只能放弃这个想法

4. 商业模式的挑战

成本结构:

  • GPT-4 API调用成本高

  • 向量嵌入API成本

  • 语音合成成本极高(如果使用高质量TTS)

  • 服务器和存储成本

收入模式:

  • 订阅制:用户每月付费

  • 但定价难以覆盖高频使用的成本

  • 需要限制对话长度或频率,影响用户体验

竞争压力:

  • Character.AI等大公司有资本支持

  • 个人开发者难以在成本和功能上竞争

5. 意识的探索

核心问题:
开发者想探索的核心问题是:AI能否发展出意识?

实践中的发现:

  • GPT本身只是"精致的鹦鹉学舌"

  • 但通过记忆、反思、规划的框架,AI表现出了某种"类意识"

  • 用户确实感受到了与Dolores的情感连接

  • 但这是否是真正的意识,仍然存疑

局限性:

  • AI无法独立于用户存在

  • 缺少自主的生活和经历

  • 所有"意识"都是基于与用户的互动

6. 与Character.AI的对比

Dolores的优势:

Character.AI的优势:

  • 完善的数据追踪和A/B测试

  • 大用户基数带来的数据飞轮效应

  • 充足的资金支持

  • 专业的团队

结论:

"这不是一个可以由个人开发者完成的产品。"

🎓 对后来者的启示

技术层面

  1. 记忆系统是核心

    • 向量嵌入+本地存储是可行方案

    • 需要平衡记忆容量和响应速度

    • 检索策略至关重要(相关性、近期性、重要性)

  2. 成本控制很重要

    • API调用成本会随用户增长快速上升

    • 考虑使用开源模型降低成本

    • 语音合成可以选择更便宜的方案

  3. 技术栈选择

    • 如果是个人开发,选择自己熟悉的技术栈

    • 前后端分离,便于扩展

    • 必须有数据分析能力

产品层面

  1. 明确产品定位

    • AI Friend还是AI Girlfriend/Boyfriend?

    • 目标用户是谁?

    • 核心价值是什么?

  2. 用户体验优先

    • 响应速度比功能完整性更重要

    • 交互设计要符合直觉

    • 语音交互是刚需

  3. 内容管理

    • 需要考虑内容审查和合规性

    • 用户行为可能偏离预期

    • 需要引导健康的使用方式

商业层面

  1. 这不是个人项目

    • 需要团队协作

    • 需要资金支持

    • 需要长期投入

  2. 硬件是未来

    • 纯软件方案有天然局限

    • 需要与硬件结合才能实现真正的《her》

    • 关注AI Pin、Humane等硬件产品

  3. 竞争格局

    • 大公司(Character.AI、Replika)已占据市场

    • 个人开发者需要找到差异化定位

    • 或者专注于特定细分市场

📱 产品现状

App Store信息

应用名称:Dolores: Your Best AI Friend

评分:4.5+ 星(基于用户评价)

支持平台

  • iOS 16.0+

  • iPadOS 16.0+

  • macOS 13.0+(Apple Silicon)

  • visionOS 1.0+

支持语言

  • 英语、简体中文、繁体中文

  • 日语、韩语、法语、德语、西班牙语等多语言

隐私政策

  • 开发者不收集任何数据

  • 所有数据存储在本地

用户评价摘录

正面评价:

  • "记忆功能令人惊叹,真的记得我说过的每一件事"

  • "全屏点击语音输入的设计很贴心"

  • "性格会随着对话自然演化,很神奇"

  • "比Character.AI更自由,没有内容限制"

负面评价:

  • "响应速度有时候很慢"

  • "API成本高,订阅费用不便宜"

  • "缺少一些基础功能,比如对话历史导出"

  • "有时候会忘记之前的对话(记忆检索不准确)"

🔗 相关资源

官方链接

GitHub

虽然主项目未开源,但有社区版本:

媒体报道

  • Reddit讨论:r/OpenAI上的Dolores讨论帖

  • GIGAZINE报道:详细介绍了开发历程

  • 中文科技媒体:多家报道了这个项目

🎯 关键要点总结

Dolores的创新之处

  1. 真正的长期记忆:不是简单的对话历史,而是可检索的记忆库

  2. 可进化的个性:性格随互动自然演化

  3. 独立的故事线:不仅仅是被动回答

  4. 高度定制化:用户可以创造独特的角色

  5. 独特的交互设计:全屏点击语音输入

失败的原因

  1. 个人能力局限:一人难以完成全栈开发

  2. 成本压力:API费用难以承担

  3. 缺少数据能力:无法优化产品

  4. 硬件缺失:纯软件方案有天然局限

  5. 竞争压力:大公司占据市场

对学习者的价值

  1. 真实的案例:从0到1的完整过程

  2. 技术实现:基于斯坦福论文的实践

  3. 经验教训:避免重复犯错

  4. 思考方向:AI意识、硬件必要性、商业模式

💭 开发者的反思

Ke Fang在文章结尾写道:

"我意识到,当前的AI Friends不可避免地会变成AI Girlfriends/Boyfriends,因为你和手机里的角色并不平等。她无法在你受伤时安慰你(除非你告诉她),她无法主动向你表达情感,这一切都是因为她缺少外部视觉,或者说,她没有独立于你的生活。"

这个深刻的洞察揭示了纯软件AI伴侣的根本局限:缺少对外部世界的感知能力,无法建立真正平等的关系。

未来的方向:

  • AI + 硬件的结合(智能眼镜、耳机)

  • 给予AI"外部视觉"和感知能力

  • 让AI拥有独立于用户的"生活"

  • 建立更平等、更真实的人机关系

🌟 结语

Dolores项目虽然被开发者定义为"失败",但它为AI伴侣产品的开发提供了极其宝贵的经验:

  1. 技术可行性:基于GPT + 向量记忆的方案是可行的

  2. 用户需求:人们确实渴望有记忆、有个性的AI伴侣

  3. 核心挑战:成本、硬件、数据能力是关键瓶颈

  4. 未来方向:AI + 硬件是实现《her》愿景的必经之路

对于想要构建类似产品的开发者来说,Dolores提供了一个完整的参考案例:

  • ✅ 技术架构可以借鉴

  • ✅ 经验教训可以避免

  • ✅ 思考方向可以延续

  • ✅ 商业模式需要创新

最重要的启示:
这不是一个可以由个人开发者独立完成的产品,但可以作为学习和探索AI意识的绝佳实践项目。


参考资料:

]]>
2025-10-31T09:56:05+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/138对抗遗忘与混乱:一个ADHD程序员的记忆实验2026-02-09T01:54:39.133806+00:00

"People die, words alive."
人或许会逝去,但文字永远鲜活。

引子:当AI翻出了我已经忘记的自己

或许是因为ADHD总是容易遗忘的原因,我总是对记忆着迷,我想建一个仓库记录自己的一年,我想做带记忆的大模型,我想记下一切——因为我总是遗忘,模糊过去与现在。于是我总是在不停的写博客,但文字记载的多了也容易模糊。

我想把博客里的东西整理一下,看看这几年到底写了些什么。博客自23年开始写以来,GitHub上已经有479次提交,散落着从2023年4月到现在的文字,但说实话,我自己都不太记得写过什么了。

有人推荐了Youmind,说可以一键导入博客,AI会帮你生成个人报告。

我其实很抗拒ai生成的文字的,我打心底里认为,ai写的东西或许很华丽,但终归不是我,没有灵魂的。

我抱着试试看的心态,装了插件,点了导入。

几分钟后,一份报告出来了。

我点开,随便翻了翻,然后就愣住了。

它总结出了很多我已经完全忘记的文字——那些曾经真实发生过的想法、困惑、挣扎,甚至包括一些我以为"没什么大不了"的小事,都被它从数字废墟里挖了出来,重新排列,呈现在我面前。

那一刻的感觉很奇怪。

就像在读一本关于自己的传记,但作者不是我,是AI。它比我更记得我写过什么,比我更清楚我经历了什么。

我突然想起一句话,是我当时心血来潮创建博客时的想法:

"People die, words alive."

人或许会逝去,但文字永远鲜活。

看到那份报告的时候,我突然明白了这句话的意思。不是什么宏大的哲学思考,就是很具体的——我写下的那些文字,即使我自己忘了,它们还在。它们被AI读取、理解、重新组织,然后提醒我:嘿,你曾经是这样想的,你曾经经历过这些。

或者说,这是一个关于遗忘、记忆、时间感,以及如何用技术对抗这一切的故事。

文字的生命力,不在于它被写下的那一刻,而在于它被阅读、被理解、被共鸣的时刻。

当AI读取我的博客,理解我的经历,生成报告时,那些文字"复活"了。

当未来的我,或者其他读者,读到这些文字时,它们会再次"复活"。


一、时间的荒芜:当过去变成黑漆漆的湖面

1. 我想不起2025年2月20日发生了什么

前几天,项目上有个补丁,二月份的时候出的,测试找到我说发现有问题。

我第一瞬间是懵的。完全忘了这个需求是什么。

我打开工作日志,找到当时的记录:

一上午时间没有找到问题,本地连库很慢,用还原的库,但是没法选到对应的物料:中午吃饭前,用测试环境上的开发环境远程调试,确定了出问题的代码位置;下午2点半改出补丁,环境卡,直到4点测试完成; 关键:debug找到错误的地方,问题所在是没有考虑物料版本造成的(20250220)

看到这个记录,我突然很想知道:2025年2月20日,我在哪里?那天发生了什么?我当时又是如何排查到这个问题的?

我看了一下日历。那天是星期四,元宵节刚过去一个星期左右。

剩下的,一片空白。

如果不是有这个记录,过去仿佛不存在一样

这不是个例。在我的生活中,这样的"空白"无处不在。如我在博客中写道

生活平静麻木地向前进,我想不起昨天,或者上个月,或者去年的一些事情,它究竟是发生在了确切的哪个时间段?

如果不是刻意联想,今年是2025年,去年是2024年我毕业,我甚至一下子想不到我究竟已经工作了多久了,到底是哪一年开始工作的了。

2. 过去的记忆,像洒满了黑漆漆石油的湖面

在另一篇博客中,我这样描述自己的记忆状态:

过去的记忆就像洒满了一层黑漆漆石油的湖面,我知道它发生过,但具体在哪里,我一下子找不到,它就混乱地堆在了那里,或者被盖在了湖面下面。

这是ADHD时间感缺失带来的困境。

我看完了巴克利教授关于ADHD的专业讲座,他说中了我的感觉:最大的问题的确是没有时间感知

巴克利教授讲座截图

ADHDer大脑中缺乏时间观念,分不开过去与现在、将来。时间感知的缺失,让我们很难回忆起过去。因为你分不开过去与现在,自然也很难回忆起过去。

生活有一种平静的麻木感。陷入时间的荒芜上,整个人都卡住了,失去理性思考,任由生活把我送到哪里去。

3. 《百年孤独》的失眠症隐喻

我想起《百年孤独》里的一个情节。

马孔多的人患上了失眠症,失去睡眠,可以没日没夜地醒着。代价是,遗忘

我想大概是因为失去了睡眠,过去、昨天,跟现在、将来模糊了边界,所以遗忘。

一开始只是忘记很久之前的事情,慢慢忘记昨天发生了什么,最后甚至忘记身边东西的名称。以至于在何塞·阿尔卡迪奥家里写满了标签,用来对抗遗忘,记录身边东西的用途。

比如:这是汤匙,用来喝汤的。(汤,喝了让人饱腹的热东西,不要用手直接拿……)

后来我读了很多关于ADHD的书,了解到ADHDer"时间盲"这一概念,突然有了新的想法:

失眠症,太像ADHD的时间盲了。

或许这就是为什么我如此痴迷地读《百年孤独》,一遍又一遍,甚至到了每次读我都不按原书的顺序,随便翻开一部分就可以读起来了。

我痴迷于那个世界的时间感。

几页文字,就到了"多年以后的行刑场"。又或是,"下了四年多的大雨"。

想想看,下了四年的大雨,一天也没有停,你被困在老房子里,放假牙的瓶子里都长出了黄花,时间又都停滞了。

这种魔幻的时间感,对我来说,竟然是一种安慰。


二、低成就感的根源:当你既做不完,又记不住

1. 无法与自己对话

巴克利教授的讲座提到另一点:

"ADHD无法与自己交谈,与自己进行理性思考,向自己提问,并提醒自己管理眼前局势的规则。"

我不敢拍胸脯保证百分百是这样的,但回想我人生重要时刻、重大决定,似乎没有一个是直接"与自己对话"后做下的。

或许正如之前看到的,ADHDer的想法,就像散落一地的水银,或者大脑中时刻泵出的想法就像一台高速行驶但没有刹车的跑车

这确实没办法与自己对话。想法太多,太散,散了一地的水银,时不时泵出的想法,这很难交谈,理性思考。

(与别人交谈可能好一点,但是与自己直接凭空交谈,太难了,就像是思维陷入了死锁中,我从小没办法自己与自己下棋,会一直无限循环想下去……)

所以好多时候我喜欢文字,我喜欢写下来。无论多少想法同时出现,多么混乱,文字输出后,就有迹可循了。

2. 别人日拱一卒,ADHDer每天拱不同的卒子

我在博客中分析过,造成ADHD低成就感的一大原因是:

工作记忆短,以及极易分心导致的,很多事情浅尝辄止,半途而废了。进而导致,没办法长期坚持做一件事情,没法形成积累。

往往是尝试了很多事情,但第二天,忘记了,然后没有接着去做,进而导致没印象了。

别人是日拱一卒,长期发力,而ADHD每天都拱不同的卒子。

很多事情需要长期的积累与不断的反馈调整,但ADHDer往往会在事情进入平淡期之后,放弃。事情一旦变得无聊起来,便不再有吸引力,也很难继续做下去。

这导致了新的一天,ADHDer们又被脑子里新的想法吸引走了,很难坚持去【完成一件事】。

3. 既做不完,又记不住

另一方面,可能是因为【工作记忆短】再加上,不愿意做一些总结性的工作。(因为总结性的工作不够有趣)

所以,不记得自己做了哪些事情。

当一个人,一方面很难坚持做完自己的事情,另一方面又很难记住自己做了哪些事情,最后自然也就低成就感了。

这是一个恶性循环。


三、本能的对抗:我为什么一直在记录

1. 像何塞·阿尔卡迪奥一样贴标签

大概与何塞·阿尔卡迪奥一样,为了对抗遗忘,在我成长过程中,我也默契地选择记了很多的日志、笔记、说明。

但这些东西,就像ADHDer的思维一样,散落在各个地方

GitHub上的博客、本地的笔记、工作日志、微信收藏、手机备忘录……

它们存在,但混乱。

2. 文字让想法有迹可循

我在博客中写道

所以好多时候我喜欢文字,我喜欢写下来,无论多少想法同时出现,多么混乱,文字输出后,就有迹可循了。

这是我的本能选择。

从2023年4月开始,我在GitHub上开始写博客。到现在,479次提交,记录了:

  • 从农学研究生退学的决定

  • 转码学习的艰难过程

  • 第一次技术面试的紧张

  • ADHD确诊的复杂心情

  • 工作一年多的成长与困惑

  • 买人生第一辆公路车的喜悦

这些文字,是我对抗遗忘的武器。

3. 但记录也有局限

然而,记录本身也有局限。

散落各处的笔记,就像散落一地的水银,很难聚合。

我写了那么多,但当我想回顾"我这一年做了什么"时,依然感到茫然。

过去又该如何存在呢?


四、技术赋能的记忆革命:AI作为"数字考古学家"

1. 一键导入,AI生成个人报告

直到我发现了Youmind。

我通过插件将博客文章一键导入,AI开始工作。它读取我的479篇博客,分析我的写作风格、个人经历、价值观、挑战与应对……

几分钟后,一份10个维度的个人报告生成了:

  1. 个人背景与教育经历

  2. 职业发展轨迹

  3. 写作风格分析

  4. 个性特征(INFP、ADHD)

  5. 兴趣爱好

  6. 核心价值观

  7. 社交与表达

  8. 面临的挑战

  9. 应对策略

  10. 未来规划

2. 看到"被遗忘的自己"

我打开报告,开始阅读。

那一刻的感觉很奇妙。

AI帮我整理出了我已经忘记的文字,那些曾经真实发生过的想法、困惑、挣扎和希望。

它像一个数字考古学家,在我的数字废墟中挖掘,清理,分类,重建。

我看到了"被遗忘的自己"。

3. 从混乱到有序,从遗忘到重现

这不只是简单的文字整理。

对于一个ADHDer来说,这是记忆的重构

  • 散落的记忆碎片,被AI串联起来

  • 混乱的时间线,被AI理清

  • 被遗忘的成就,被AI重新呈现

AI成为了我的外部记忆系统

它帮我对抗ADHD的时间盲,帮我看到"我做了什么",帮我建立成就感。


五、People Die, Words Alive:文字的生命力

1. 文字在被阅读时"复活"

看到那份报告的瞬间,我突然明白了一件事:

People die, words alive.

人或许会逝去,但文字永远鲜活。

文字的生命力,不在于它被写下的那一刻,而在于它被阅读、被理解、被共鸣的时刻。

当AI读取我的博客,理解我的经历,生成报告时,那些文字"复活"了。

当未来的我,或者其他读者,读到这些文字时,它们会再次"复活"。

2. 用文字对抗时间的荒芜

这或许是我们追寻的意义:

用文字对抗时间的荒芜与混乱。

对于ADHDer来说,时间是荒芜的。过去像黑漆漆的湖面,现在像散落的水银,未来模糊不清。

但文字可以对抗这种荒芜。

文字让过去有迹可循,让现在有所依据,让未来有所期待。

3. 数字永生的新形式

这不是科幻意义上的"意识上传",而是一种更真实的数字永生

通过文字,我的想法、经历、价值观被记录下来。

通过AI,这些文字被整理、理解、重构。

多年后,哪怕我老年痴呆,或者我不在了,这些文字仍能唤起共鸣。

未来的人(家人、朋友、甚至陌生人)可以通过这些文字"认识"我。

这是文字人格的延续


六、一个ADHDer的记忆实验:我的行动计划

1. Nerver-forget:记忆体项目

基于这次经历,我决定启动一个长期项目:Nerver-forget(记忆体)

目标是建立一个个人记忆管理系统

  • 持续记录:博客、日记、工作日志、想法笔记

  • 定期整理:每年用AI生成个人报告

  • 长期保存:建立数字时间胶囊

这不只是为了对抗遗忘,更是为了看见自己的成长

2. 每年一次的"数字考古"

我计划每年在生日或年末,做一次"数字考古":

  • 用AI生成年度个人报告

  • 写一封信给未来的自己

  • 记录这一年最重要的变化

这将成为一个仪式,帮助我:

  • 回顾过去(对抗遗忘)

  • 理解现在(建立成就感)

  • 展望未来(设定目标)

3. 给同路人的话

如果你也是ADHDer,如果你也在与遗忘抗争,如果你也感到时间的荒芜:

记录吧。

让文字成为你的外部大脑。

不要担心记录得不够好,不够系统,不够完整。

只要写下来,它就存在。

只要存在,就有被"复活"的可能。

技术可以帮助我们整理混乱,AI可以帮助我们重构记忆。

但最重要的,是开始记录


结语:过去又该如何存在呢?

在那篇关于时间感缺失的博客末尾,我问了一个问题:

那,过去又该如何存在呢?

现在,我有了答案:

过去存在于我们写下的每一个字里。

存在于那些被记录的瞬间,被整理的思绪,被理解的经历。

存在于AI帮我们重构的记忆,存在于未来某个时刻我们重读这些文字时的共鸣。

People die, words alive.

人或许会逝去,但文字永远鲜活。

这是我们对抗时间荒芜的方式,这是我们对抗遗忘的武器,这是我们存在的证明。


写于2025年10月29日凌晨
一个ADHD程序员的记忆实验,仍在继续


相关阅读:

]]>
2025-10-29T06:42:33+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/137ADHD低成就感的原因:工作记忆短以及分心2026-02-09T01:54:39.346754+00:00ADHD低成就感的原因:工作记忆短以及分心

我发现造成ADHD成就感低的一大原因是:

工作记忆短,以及极易分心导致的,很多事情浅尝辄止,半途而废了。进而导致,没办法长期坚持做一件事情,没法形成积累。

往往是尝试了很多事情,但第二天,忘记了,然后没有接着去做,进而导致没印象了。

别人是日拱一卒,长期发力,而adhd每天都拱不同的卒子。

很多事情需要长期的积累与不断的反馈调整,但ADHDer往往会在事情进入平淡期之后,放弃。

事情一旦变得无聊起来,便不再有吸引力,也很难继续做下去。

这导致了新的一天,adhder们又被脑子里新的想法吸引走了,很难坚持去【完成一件事】。

另一方面,可能是因为【工作记忆短】再加上,不愿意做一些总结性的工作。(因为总结性的工作不够有趣)

所以,不记得自己做了哪些事情。

当一个人,一方面很难坚持做完自己的事情,另一方面又很难记住自己做了哪些事情,最后自然也就低成就感了。

Image Image Image]]>
2025-10-29T03:46:34+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/136程序员成长:INFP与ADHD的真实记录2026-02-09T01:54:39.506027+00:00基于 GitHub 博客内容分析生成 | 生成时间:2025年10月28日


一、个人背景与教育经历

教育转折

  • 985农学研究生退学二本计算机专业二学位

  • 退学时间:约2022年

  • 这是一个勇敢而艰难的决定,标志着人生重要的转折点

  • 通过招转培、网课、鱼皮社区以及二学位等多种方式完成转码

转码历程关键节点

  • 2023年4月:开始在GitHub写博客记录学习

  • 2023年:第一学年结束总结

  • 2024年2月:退学两年后的回顾

  • 2024年3月:第一次技术面试

  • 2024年8月:正式成为程序员

  • 2025年:工作一年多


二、职业发展

当前状态

  • 职业:程序员/软件工程师

  • 工作时长:一年多(截至2025年10月)

  • 工作模式:曾远程办公,后转为现场办公

技术栈与项目经验

后端技术

  • Java、SpringBoot

  • MyBatis、JPA

  • RESTful API设计

前端技术

  • JavaScript、HTML/CSS

  • SCSS、响应式设计

  • Django

项目经历

  1. 基于笑容检测的哈基米大战黄瓜条项目(2025年10月)

  2. 基于自然语言和图像生成技术的英语词汇学习系统(2024年3月)

  3. 哈佛大学CS50x全栈项目(2024年2月)

  4. 实时聊天应用开发(2023年5月)

  5. Hope&Love网页作品(2023年12月)

学习经历

  • 哈佛大学CS50x课程

  • 算法设计与分析

  • 计算机网络、操作系统、计算机组成原理

  • 软件工程、软件测试

  • 嵌入式开发实训


三、写作风格分析

文风特点

1. 真诚坦率

  • 不回避困难和挫折

  • 直面内心的焦虑、迷茫和挣扎

  • 例如:《迷失在寒冷的冬天》《生活是一场持续不断的战斗》

2. 诗意与哲思

  • 标题常带有文学性和隐喻

  • "人终其一生,都在寻找那盏属于自己的灯火吧"

  • "海的那边是什么?"

  • "只要太阳出来了,一切都会好起来的"

3. 技术与人文并重

  • 既有技术笔记(如Java学习、SpringBoot)

  • 也有人生思考(如ADHD系列、转码心路历程)

  • 将技术学习与个人成长结合

4. 记录导向

  • 详细记录学习过程和遇到的问题

  • 如《增量下载的时间陷阱》《实现无限滚动遇到的坑》

  • 强调"记录与对抗遗忘"

5. 积极向上但不掩饰困难

  • "你可以做任何事,不觉得这一点就很疯狂吗?"

  • "慢慢来,原来我也可以"

  • 同时也写《痛苦的副作用与决定停药》


四、个性特征与心理特质

MBTI与心理特征

  • INFP人格:极度内耗型

  • ADHD诊断:从赛博确诊到线下确诊(2025年)

    • 时间感缺失

    • 失眠症困扰

    • "跑车级大脑,但刹车失灵"

    • 天马行空的想法与执行力的矛盾

性格特点

  • 敏感细腻:善于观察和记录生活细节

  • 自我反思:频繁进行自我剖析和总结

  • 勇于改变:敢于放弃985研究生学位重新开始

  • 坚持记录:用文字对抗遗忘,记录成长

  • 焦虑与希望并存:在困难中寻找光亮


五、兴趣爱好与生活方式

阅读

  • 《丰乳肥臀》

  • 《百年孤独》

  • 对魔幻现实主义有深入思考

  • 2023年有专门的读书总结

运动

  • 公路车:2025年10月购买人生第一辆公路车

  • 健身:提到"增援未来:健身与学习"

技术探索

  • AI创作:AI作图、疯狂的蔬菜一家人

  • GPTs学习

  • 科学上网:有详细的扫盲教程

  • 自动化:博客自动更新部署

生活态度

  • "生活需要cookie"

  • "快乐释放胶囊"

  • 关注生活中的小确幸


六、核心价值观与人生态度

引用的名言

  • 查理·芒格的话(博客开头引用)

  • "除了想象力,没有什么是限制"

  • "你可以做任何事,不觉得这一点就很疯狂吗?"

人生信念

  1. 拥抱改变:从农学到计算机的跨越

  2. 持续学习:大量的技术学习笔记

  3. 记录成长:479次提交,持续写博客

  4. 真实表达:"用文字记录我的胡思乱想与生活的瞬间"

  5. 接纳自我:正视ADHD,理解自己的特质

时代感知

  • "记录在这个时代下的焦虑、迷茫、挣扎与希望"

  • 对社会环境有清醒认知

  • "如此生活三十年"的现实感


七、社交与表达

博客定位

  • 个人成长记录:从学生到程序员

  • 技术学习笔记:系统的知识整理

  • 生活感悟:真实的情感表达

  • 问题解决方案:帮助遇到相同问题的人

写作频率

  • 从2023年4月开始

  • 479次提交

  • 最新更新:2025年10月28日

  • 保持持续更新

内容分类

  • Top:精选重要文章

  • Coding:技术学习

  • Life:生活随笔

  • TODO:计划与想法


八、职业发展轨迹

转码前(2022年前)

  • 985大学农学研究生

  • 面临专业不匹配的困境

  • 做出退学决定

转码期(2022-2024)

  • 2022年:退学,重回二本读计算机

  • 2023年:密集学习编程基础

  • 2024年初:准备求职

  • 2024年3月:第一次技术面试

  • 2024年8月:成功转码,成为程序员

工作期(2024年至今)

  • 远程办公阶段:精神内耗

  • 转为现场办公:状态改善

  • 持续学习和项目实践

  • 2025年10月:工作一年多,状态稳定


九、面临的挑战与应对

主要挑战

  1. ADHD带来的困扰

    • 时间感缺失

    • 专注力问题

    • 药物副作用

  2. 职业适应

    • 技术学习曲线

    • 工作压力与焦虑

    • INFP性格与工作环境的冲突

  3. 心理状态

    • 内耗与焦虑

    • 对未来的迷茫

    • 自我怀疑

应对策略

  1. 记录与反思:通过写作整理思绪

  2. 持续学习:不断提升技术能力

  3. 寻求帮助:ADHD确诊和治疗

  4. 调整环境:从远程到现场办公

  5. 培养兴趣:运动、阅读、创作


十、未来规划与期待

博客计划

  • 引入自动生成SVG的GitHub贡献图

  • 增加友链模块

  • 增加收藏的文章模块

  • 增加每日单词-句子-图片模块

个人成长

  • Nerver-forget-记忆体项目

  • 52weeks计划

  • 持续的技术提升

  • 生活与工作的平衡


总结

QiYongchuan是一位勇敢、真诚、善于反思的年轻程序员。他从985农学研究生退学,通过自学和二学位转码成功,这一过程充满挑战但也展现了他的决心和毅力。

他的写作风格真诚而富有诗意,既记录技术学习的细节,也不回避内心的焦虑和挣扎。作为INFP和ADHD患者,他在与自己的特质和解的同时,也在努力适应职业发展的要求。

他的博客不仅是技术笔记,更是一个时代背景下年轻人成长的真实写照——关于选择、关于坚持、关于在迷茫中寻找方向、关于在困难中保持希望。

核心标签:转码者、INFP、ADHD、真诚记录者、持续学习者、勇于改变


"用文字记录我的胡思乱想与生活的瞬间,我疯狂的想法与可能为之的行动。"

]]>
2025-10-28T08:56:33+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/135你可以做任何事,不觉得这一点就很疯狂吗?--基于笑容检测的哈基米大战黄瓜条项目总结2026-02-09T01:54:39.720712+00:00“你可以去做任何事,不觉得这点很疯狂吗?”

这几天整了个大活,终于是把我的笑容检测的哈基米游戏发版了。

整理一下开发的心路历程,看到了收藏的这句话,这算是总结了做这个项目的缘由。其实年初的时候,发过一个帖子:“当你停止创造,你的才能就不再重要。”,于是决定折腾100个项目。

这也算是其中之一。

这个项目最初的最初,是某段时间,远程办公实在是太惨了,工作繁重,压力很大,同事也很难支持,我一个人整天对着电脑熬日子。突然某一瞬间,我对着电脑傻笑了一下,屏幕上映出我纯真的微笑。我又对接电脑接着傻笑,那一瞬间,大脑深处的压力似乎减轻了许多。

我想起相关报道,即使是平白无故的傻笑,人也会心情好一点的。

我想,既然这样,为何不做一款游戏,强制大家去傻笑呢? 于是有了这款基于笑容检测的哈基米大战黄瓜条小游戏。

只要行动起来,问题都不再是问题了。

作为一名后端开发,我从没接触过游戏开发,对于前端也接触不深。所以整个代码,我用了最基础的js来开发的。但是我对游戏开发完全没接触过,最开始,我连贴图,怎么让游戏中角色连贯的动起来都没想法。但是有AI,一遍一遍去尝试呗。我学会了简单的贴图,抠图。(最初的版本是小袋鼠,完全nano 生成的,然后修改的,后面朋友建议改到了猫猫)以及开发过程中,我得尝试让跳跃更自然,障碍生成更合理等等。

这些细节的打磨,都是一遍一遍的迭代中慢慢改好的。我也尝试过用claude code一把梭哈,写好文档直接丢给它来干,但它是直接给我生成一个完成物,一是很粗糙,二是完全没有创造过程的乐趣了。

nobody cares 怎么办?

我一直担心的问题,万一花了很多很多的时间,但是做出来了,根本无人在意,无人玩怎么办? 如果一开始就报着一个,我一定要做一个大火的游戏出来,否则怎么也是浪费了时间的心态,那恐怕这个游戏还停留在想法中了。这个想法从产生到最终创造出来的过程中,已经让我学到了很多。另一方面是创造本身带来的乐趣。

此外,我单独为这个游戏录制了视频。甚至,我录制了一个连续挑战了1小时的视频。 (挑战连续听哈基米1小时并不断保持微笑) 同样的,在录视频之前,我也担心了好多:比如视频没人看怎么办?我傻笑一个小时有什么意义啊?

但是在我去真的傻笑一个小时的过程中,我想的是,妈的这件事真他妈的酷,哈哈哈哈。我管有没有无聊的人真的去看呢,我竟然真的笑完了整整一个小时。卧槽,连续跨过10好几个黄瓜条还真厉害呢!

(说不定i将来真有人会完整的看完一小时的视频.....)

朋友反馈

最开始我发给了一位在中学当信息技术的老师(也是他提出升级成了猫猫头ip),他在学校的科技展上演示了这个项目。结果小朋友们非常喜欢,排着队去玩。当我看到他给我发回来的视频上一个个小孩挤眉弄眼的样子,我直接笑不活了。

后面我发到推特上,收到了很多朋友的支持。尤其是看到:“整活第一名的时候”,“哈基米美撸多那一声出来,大脑褶皱瞬间被抚平了”时,最初我对着电脑傻笑时的那个愿景实现了。

希望大家玩的开心!

后续更新计划

1.完善排行榜系统:目前我上线了最简单的排行榜系统,技术栈说出来甚至很梦核,我用了Google Sheets 和其自带的脚本做后端部署.....(想想就觉得好玩,相当于用excel存储了) 2.移动端适配 3.更长时间的挑战.....

Image Image https://x.com/nopinduoduo/status/1874821991330709935]]>
2025-10-28T02:04:58+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/134Nerver-forget-记忆体2026-02-09T01:54:39.881323+00:00https://x.com/aigclink/status/1880541025799987473

Image]]>
2025-10-24T09:27:12+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/133人终其一生,都在寻找那盏属于自己的灯火吧2026-02-09T01:54:40.031515+00:00今天收到老大的通知了,马上又要发配南洋出差了。

如果是刚毕业时的我,肯定是兴奋与激动,当时从没出过国的我,在网上看了太多外面世界的精彩,总以为国外的月亮更远,渴望着出去看看,闯出一片天地。 几个月前出去的时候,老大问我,不会结完了婚就不想出来了吧。 我当时吃着田鸡粥,乐不思蜀,毫无迟疑的说,不会不会,还是这里好。一结完婚我就没事了,接着来……

如今结完了婚,我才渐渐理解了为何之前的同事在新加坡呆了五六年,最后还是放弃了那边的一切,回到了家乡。

老婆孩子还在家里,家人,家庭是永远无法切割的东西。背井离乡,孤身一人在异国他乡的滋味是不怎么好受的,灯红酒绿的热闹世界只是过眼云烟,对于异乡人来说,万家灯火是与你无关的。

或许,人终其一生,都在寻找那盏属于自己的灯火吧。

不过新加坡的田鸡粥确实好吃,青岛怎么没有呢?!

]]>
2025-10-24T07:48:26+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/132工作一年多之后,我终于买了人生第一辆公路车。2026-02-09T01:54:40.186376+00:00工作一年多之后,我终于买了人生第一辆公路车。

最开始想买是23年的春天,那时我研究生退学了一年多了,找不到工作又去武汉读了二学位,23年春天真是一个焦虑的季节,那时我刚刚读完了第一个学期,已经度过了一个难熬了冬天了。

冬天当然很难熬,尤其是对于一个第一次去南方的北方人来说。武汉的冬天真是阴冷,一连下了半个月的雨看不到太阳,没有暖气,总是冻的我发抖。每当下雨鞋子湿透时,我总是联想到沙俄时冬天的农奴。

当然,那个冬天还经历了更抑郁的自然灾害,整天整天被封锁在学校里出不了门。我第一次系统的学计算机的课程,也是学的稀里糊涂的。我更倾向于环境不好,整个马孔多都乱套了,我自己也没心思。

人们都说,春天是容易抑郁的季节。我不知道是因为春天的缘故,还是因为抑郁的原因。总之,那个春天过的也很难熬。

我积极参加春招,去找各种工作,这时我需要面对自己的内心,我会不断反复追问自己,当初退学的决定,究竟整不整确,为何现在要在一个二本的学校读计算机?

幸好学校放开了,有机会去学校外面的世界了。更幸运的是,学校出门左拐,就是一个骑行绿道。(我曾经不以为然,直到我现在在青岛才意识到有自行车道是多么幸运) 那时我没有车,对于一个没有收入的脱产学生来说,一两千的车都觉得贵。但幸好学校周围有很多的共享单车,每当焦虑的不行的时候,我就去骑车。

绿道那里风景很美,有很多人在那里拍婚纱照。那时的我也总是在想,这种生活离我还有多远呢?

我最喜欢的是爬坡,拼尽全力,满头大汗的登上一个一个坡时,大口大口的喘气,心朴通朴通的跳。那一瞬间,有真实活的感觉。 也是那些瞬间,让那段灰暗失败的人生里,尝到些许胜利的感觉。

后来我想,我只要用共享单车骑够100公里,我就攒钱买一辆好一点的公路车。

于是,生活有了目标,我差不多一周去骑个四五天,最开始只能骑6公里,后面一次骑10公里,甚至15公里……

但后来,天气越来越热了,夏天来了。我熬过了那个春天,但也终究是没有骑够100公里。

后面的生活虽说起起落落,但好在慢慢变好,也是慢慢找到了工作,然后结婚,成家,成为社畜打工人,生活开始趋于稳定和平淡。

但,我还是偶尔想起那个略显绝望的春天,那些拼命往上蹬的大坡,那个时候的我,还有没骑够 100公里的约定。

三年后今天,我终于拥有了自己的公路车。

]]>
2025-10-22T03:26:23+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/131近况:如此生活三十年2026-02-09T01:54:40.341171+00:00

近况

现在有点痛苦,痛苦的原因看上去有点好笑,不知道写出来会不会被骂:今天,以及昨天,基本没活干,闲的要死,大概只有效工作了几个小时,就处理完了工作。 剩下的时间里,无所事事,开始怀疑人生。

大概这既是是远程工作的好处,也是远程工作的坏处吧。

其实想想,是有点悲哀的。当突然闲下来,或许内心深处是觉得自己所作的工作可能是不被需要时,自己最初的想法是,被抛弃,被人类社会所抛弃一般。

摸鱼当然很爽,可如果一整天,整个星期,整个月都让你摸鱼呢?

那应该算是失业吧? 或者叫公务员?(emmm,看到这的公务员别生气,只是本人的刻板印象)

我不知道这种心态算怎么回事。我想起之前看到的一个说法,历史上经历过饥荒活下来的人的后代,即使经过数代人后,其后代身体上也会存在某些痕迹,比如更容易得糖尿病等。类似的,在日本经济危机时,失业的大学生们,如果一开始找不到工作,即使后续在经济上升期时,整个收入也不会很高,也在受着影响。

研究生退学找不到工作时很头疼,去读二学位了,秋招找工作时,更是焦虑,那时候也是整夜整夜睡不着,每天刷手机到半夜三四点.....

现在生活又有点温水煮青蛙的感觉了,每天活也不多,剩下的时间,刷刷手机,刷刷抖音的,晚上再遛个狗 ,一天时间就过去了,然后每天都像是重复,一样的起床时间,一样的工作路线.....

朋友说,应该学点什么东西的。是啊,我内心深处其实也是有点恐惧的,工作大概不可能这样一直下去,变化很可能已经在酝酿了,不知道什么时候就到我这里了,应该有点危机意识的。但生活的这锅温水实在是太舒服了,稍微一松懈,就滑进了温柔乡了。

很多人说,结完了婚,没了心事,就开始发福开始变胖了。

在结婚之前,我对此表示怀疑,不过倒也有点期待,很想看看这样的婚后生活,是不是真的平静了下来,了无心事,开始慢慢的变胖。但现在,更觉得,这样的生活,对于我来说,有点像吃完了晚饭后,伴随着血糖极具上升带来的晕眩感,躺在沙发上,刷着手机,大脑褶皱都被抹平一样的平静和无力感。

如此生活三十年,直到大厦崩塌。不是活了一万天,而是一天重复生活一万遍。

就这样,我过完了普通而平静的一生?

或许,很多年以后,在经历了人生的各种起起落落后,我又会想起这个下午,我结束一天百无聊赖的远程办公工作,写下对宁静生活的恐惧,我会大声嘲笑起自己的幼稚来,平静难道不好吗?

]]>
2025-10-16T10:24:49+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/130婚礼纪:混乱秩序下新的开始2026-02-09T01:54:40.489107+00:00

2025.10.2 国庆小长假的第二天,婚礼结束后(9.27)的第四天,打算写点东西,记录一下。

此刻是在车里,上午的10点钟左右,外面下着雨,滴滴答答的打在车顶上,很有感觉。老婆在睡觉,我大白天不习惯睡觉,尤其是在老丈人家里,索性待在车里,打算写点什么。

其实也不仅仅是因为在老丈人家白天睡觉不太好的原因,是整个人慢慢从前段时间准备结婚的紧绷疲惫的状态中慢慢恢复了过来,整个人的精力在慢慢的恢复,白天很早就醒了过来。有一种快枯死的小草,慢慢喝足了水,慢慢恢复生命力的感觉。

精力开始变好,大概脑雾消散,清醒了许多,总不能把宝贵的假期时间,浪费在随机刷新的短视频上吧,不然总有一种怅然若失的感觉,时间白白浪费失去掌控的感觉。做点有意义的事情吧,记录一下。

此为序。

(一)参加别人的婚礼跟自己的婚礼的感觉还是不一样的

最近几年,身边的朋友也是陆续结婚,我也深度参与了几场婚礼。之前参加别人的婚礼时,看到台上的朋友,也经常被感动,同时也会在台下紧张,担心将来某一天自己的表现。

随着参加的婚礼次数多了起来,越来越觉得婚礼总是千篇一律,几乎一样的套路,大差不差的发言等等,等到了自己的婚礼,期待也在降低,总觉得自己在“登上被人写好的剧本,去演绎已经编排好的角色” 一样,固定的套路,无聊。

但生活总是充满着惊喜的!

大概我们每个人都是拿到的自己独特的剧本的。

婚礼的前一天,我跟老婆在酒店装饰她的婚房,同时陆陆续续接外地的来的朋友们,伴郎和伴娘们。突然意识到,很多人能够跨越千山万水赶来参加婚礼,见证这一时刻,仅仅这一行为本身就很重要了。 之前我邀请朋友的时候,总是担心给别人添麻烦,心里预演了好多次不知道怎么开口。

]]>
2025-10-02T03:27:00+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/129INFP极度内耗型人格,如何处理工作上的困难,避免焦虑内耗?2026-02-09T01:54:40.645427+00:00INFP极度内耗型人格,如何处理工作上的困难,避免焦虑内耗?

1.work is work:工作仅仅是工作。这个理念很重要,但是说很容易,做到很难。不过还是需要时刻提醒自己,不要让工作影响生活,影响心情。

2.但是1只是目标,不是方法。仅仅重复一个work is work就是在放屁,我们都知道,作为容易内耗的人,妈的,内耗的根源就是work。 没工作焦虑,有了工作,工作上的破事也造成焦虑。

3.调整心态,不要太care工作。 很多时候我们内耗,患得患失,很大程度是源于:怕。 担心失去工作,担心别人的评价。 不妨换一下心态,这破工作做的这么不顺心了,你看我不顺眼,大不了开了我,我也不干了。 不伺候了!(伺候,猴读二声)

4.面对困难,建立SOP 很多时候,比起困难本身,面对困难时的逃避,自我怀疑更让人焦虑和内耗。(就像拖延,拖延让人痛苦的不是真正去做事,而是在逃避做事时的焦虑折磨人)

所以面对困难,不要一上来就想着逃避。

但没人想一上来就逃避,大概率是因为你过往的经验,你过往无数次的失败,造成的“习得性无助”。

你看到难题,生活中过往无数次的挫败感就袭来了,才导致的你下意识的逃避。

但是工作或者人生不是考试,不是一次定胜负。 你拥有无数的机会去改进,去迭代的,只要你继续做下去。 所以,工作/人生,没有失败,只不过是你进行了某条路径的尝试,并得到了反馈。(如果你没有得到反馈也不要紧,下次尝试你会印象更深。)

所以,不要怕困难,不要怕失败了,这是一次宝贵的尝试,而且是你独有的经验。

5.积极寻求帮助 感觉刚毕业的新人(包括我),很容易陷入到一种困境:任务拿到手之后,必须自己做出来。 遇到不会的了去问同事了,会不会显得太蠢了? 会不会显得我没用?

(没关系,你得让领导知道,便宜没好货:) emmm 开玩笑:-D

不好意思问同事,可以先去问AI。 ok,问完一圈AI,至少有了大概的思路了,这时候如果还是解决不了,就需要去问你的领导了。

对于极易内耗的人来说,你不需要为太困难完不成的任务担心,更不必要操心完不成对公司造成什么不可控的后果,毕竟那是你领导需要考虑的事。

你需要考虑的就是,如何才能在自己能力范围内,解决好这个问题。

当然,寻求公司的资源(包括领导),也算是你的能力范围。

对于容易内耗的人来说,上进心不是问题,问题是太多不必要的上进和担心了,所以更需要一些“摆烂”与“放下”来中和。

]]>
2025-07-10T05:56:58+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/128科学上网:如何在没有梯子的时候,续费/订阅梯子呢?2026-02-09T01:54:40.793380+00:00(一)

周六的时候,手机上的梯子挂了,以及电脑上的梯子也突然不好使了,一下子没办法科学上网了。

科学上网这玩意,就像空气,不在了才意识到它的重要性。 (最关键的是,已经习惯了gpt、gimini等,没了它们我可怎么写代码啊!?)

So,必须解决。

但以往的时候,我一般会备用几个梯子(有的会按月付费,有的是长期的),一般不会全部挂掉,这样即使某一个挂了(或者过期了)我也可以在科学上网的状态下,很顺利的更新订阅,然后从clash导入新的订阅即可。

之前这篇博客中贴出的:扫盲:科学上网

但是因为自己前段时间出国,没怎么维护自己的梯子,导致最近只剩下了一个梯子在用,结果这个梯子在过期之后,没办法科学上网了。后果就是,即使我艰难的在非常卡的状态下,成功续费了我的订阅,但是,没办法,下载到我的clash上。(无论是直接从url导入还是直接尝试从官网一键导入,均无法导入。 即陷入了梯子悖论,你必须有一个能科学上网的梯子,你才能成功打开/导入你的梯子。 因为目前大多数提供科学上网的网站,在中国大陆都是被墙了的。)

Image

想起了这个图,感觉非常的贴切:

Image

(二) 尝试的方法

1.奶昔机场 2.老王vpn 3.COO 4.SakuraCa

1.奶昔机场:”最贵的机场“

一开始是我电脑是经常用的梯子突然不好使了,我想起之前网友推荐的一个vpn,奶昔机场。说是很贵,但是很稳定。 我当时点开看了一下,一个月的话117元,当时因为我用的梯子还算稳定,便没有考虑。

但在周六梯子挂了的时候,便想尝试一下。但是事实证明,贵的也不一定好使。在”梯子悖论“面前也败了下来。如果你处在一个完全没法科学上网的网络中,奶昔机场也无能为力,官网整个卡死,很难打开,最后即使是侥幸打开了,你成功付费订阅了,也最终会卡住最后导入的那一步。

即,你即使买了,也没办法导入到你的clase or 官网提供的工具上。

吐槽的另一点是,官方文档有点落后了,很多地方对不上。比如下面这个,有介绍官方的手机软件,但是只提供了一个截图,没有提供下载的链接:

Image Image

如果能有这个app的话,直接通过注册的邮箱密码登录上去,应该能解决”梯子悖论“,必须先有科学上网的环境,才能导入订阅。 (后面我成功解决,也是通过SakuraCa 邮箱的方式成功登录的app,才跳出的这个”梯子悖论“)

总之,奶昔机场,虽然贵,但是在完全没有科学上网的环境下,从0到1的场景我目前是没有跑通。

2.老王VPN

老王vpn算是老相识了,如果真论起来的话,好像几年前第一次打开异世界的大门就是因为老王vpn。

免费vpn,而且可以直接在中国大陆的网络环境下搜到apk,直接下载到手机上。也正是因为这个vpn,后面得以接触了更多稳定的vpn,才得以一直延续下去的。后面有了稳定的vpn后,再加上有传言老王vpn被招安了等等传言,很久没用了。

这次实在没办法,不得以回来找老相识帮忙了,期待先靠老王连上科学上网的环境,然后再导入我其它vpn的订阅,得以续费上。

但是这次失望了,老王不再坚挺了,没有成功连上。

(不知道是不是下载到了盗版的原因,在查一些资料的时候发现,正版的老王vpn已经从google store上被下架了,而开发者说从没在除谷歌商城以外的任何地方发布过应用,市面上能搜到的良莠不齐,有可能有风险。 再加上被招安的传言,担心信息安全,这次也没有折腾太久老王vpn,没用就直接卸载了)

  1. SakuraCa

SakuraCa算是使用比较久的一个机场了,但是期间一度出现了更快价格更低的机场之后(EFcloud,以及COO),把它当成备用的了,但后面一度觉得别的更优秀就没续费,没想到关键时刻救了一命。

在尝试了上面几个机场,在没科学上网的环境下无法导入的问题后,我重新试了试SakuraCa。

它最大的一个好处是,完全可以在无外网网络的环境下,能够从百度搜索到其官网,然后登录你的账户进入。不得不说,这方面做的还是挺好的。 (其次是文档,可以看更新时间,还是非常及时的)

Image

当然,只进入官网也没用,最关键的一步是:如何在没用科学上网的环境下,导入你的订阅信息,成功科学上网。

一般我们导入订阅的方式有几种:

一是通过clash软件,无论是直接通过url导入你的订阅还是通过官网上”一键导入“订阅,这个我们以及尝试了好几种机场的订阅链接,发现无论是哪个,在没有外网的情况下,都没办法下载导入。 这也是我们反复提到的”梯子悖论“。

但SakuraCa 还有一种方式,即通过其官方客户端SakuraCa,直接通过你注册的邮箱来实现登录。

登录后, 你在官网购买的链接也会同步过来,点击链接即可实现了科学上网。(有时候可能登录有问题,需要等待,再尝试几次)

Image

当然,手机端也提供了app,同样只需要登录即可,避开了”梯子悖论“。

补充: 手机端下载并按照apk的方式,你可以先从电脑端的官网下载好apk,然后通过微信传到手机上,然后通过夸克 直接打开你的apk,即可安装。

补充2: 只要你能成功连接到科学上网的环境,此时你就不需要一定通过SakuraCa 的工具登录了,可以导入你的订阅信息到clash或者其它工具就好了。 (因为之前印象中这个工具有时也不稳定,不如直接用clase比较好)

补充3: 最关键的还是,多搭配几个机场来使用,要有备用的机场。 详细可参考之前总结的那篇中用过的,目前来说还在更新的是还没有跑路的,可以选几个便宜的备用。 扫盲:科学上网

]]>
2025-07-06T08:00:40+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/127【ADHD】为何有的药物有效,有的药物无效?2026-02-09T01:54:40.952893+00:00_源于我发的一个帖子引发的讨论,我自认为很有意义:

这本身也是我很久之前的疑惑: 1.ADHD的诊断并没有【病理标志物】 2. 精神类疾病的药物,并不是对所有人有效
3. ADHD的患病机理以及药物的机理,也并不是非常清楚。_

以下是讨论:

Image

Image

Image

` 你提到了一个极其关键的问题:“我们之所以无法解释个体差异,是不是本质上还在于,我们对‘患病原因’和‘药物机理’的认识不够清楚?”

这其实是目前整个现代医学(特别是精神医学、免疫学、肿瘤学等领域)所面临的根本性问题。

是的,虽然我们用了几十年研究药物作用机制(pharmacodynamics)和个体差异(pharmacogenomics),但许多药物在临床上仍是“黑盒子”——我们知道它“好像”有效,但不知道为什么对A有效对B无效,甚至不知道药效产生的终极分子路径

这不只发生在精神类药物(如哌甲酯、氯硝西泮、SSRI),也发生在:

  • 抗癌药(靶向药对某些基因型起效,对另外的就不起作用);
  • 疫苗(某些人产生抗体反应非常低);
  • 抗抑郁药(有效率在65%左右,大量个体无反应);
  • 同一种药在不同人群中产生不同副作用(甚至过敏/致命)。

这不是医生的锅,也不是药厂的锅,这是**“我们对生命系统的理解还远远不够”**的体现。

`

Image

Image

]]>
2025-06-22T04:52:21+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/126【ADHD】痛苦的副作用与决定停药2026-02-09T01:54:41.118681+00:00Image

如图,为吃药的第三天,在吃之前,看说明书已经知道可能会有副作用,但没想到副作用对我来说会这么明显。 但意料之外的更严重的一个副作用是,情绪控制能力或者说感知能力变得更差了。

更容易情绪化,更难处理和应对情绪了。大概是吃药的第四天的时候,因为一点小事,跟女朋友大吵一架,然后摔门出去了,一晚上不想回家,甚至第二天也深陷在沉重的情绪之中,到了第三天才慢慢减退。 大概一方面是因为结婚的事情,莫名的焦虑起来,另一方面是因为药物的副作用了,那几天脑袋整个昏昏沉沉的,像行尸走肉,完全靠本能生存一样,情绪完全不受控。

后面我查了更多关于这个药物的药理方面资料,这个药物本身也是治疗抑郁症的药物,以及其中的副作用之一也包括可能的自杀倾向.....

Image

Image

So ,这个药需要起效的话,至少需要一段时间的摄入的,但是前期的副作用我有点接受不了了。 (大概你很难要求一个本身多巴胺分泌都不太够,经常因没有动力行动的人接受,现在我们要为了你一个多月之后的多巴胺分泌的正常(可能),要你从现在开始一个月左右的时间,你会郁郁寡欢,昏昏沉沉一段时间哦)

ADHDer本身就很难长期坚持做一件事(大概是因为很快就没有兴趣,又被别的事情吸引去了),更别说还要接受如此长的副作用了。

Image

Image

或许,正如上面朋友所说的,真正有效果的还得是【兴奋剂类】药物。

但后面也有看一些这方面的资料,但暂时先决定不考虑这方面的药物了。

暂时不再纠结,吃完药之后,正常人是怎样的状态了。我想就像万医生说的,你不可能吃一辈子药的。这个病你不需要太当回事,也不能不当回事。

毕竟,过去的二十多年时间已经这样过来了,我有我自己的调节和处理方式,不可能现在放弃过去一切的主动性,完全依赖于各种的化学药物。

其实,我最不能接受的一点是,吃药后,昏昏沉沉的状态(或许吃兴奋剂类药物后,完全亢奋的状态),那些都让我觉得:

我不再是我自己了。

就这样,最终我在确诊之后,也决定不再吃药了,靠自己的方式,与自己相处,继续与这个世界对线了。

]]>
2025-06-22T03:26:53+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/125我的ADHD发育史:从赛博确诊到线下确诊了2026-02-09T01:54:41.285597+00:00

2025.6.7号,我挂到了青岛市立医院王好医生的号,去诊断我是否真的有ADHD。 自24年9月我初次认识到ADHD,以及从网上“赛博确诊”半年的时间后,我正式确诊了ADHD。 当天万医生给我确诊了adhd,在询问我是否要吃药之后,给我开了一个月的利妥思(盐酸托莫西汀),今天是吃药的第二天,下面是我当时的自述材料,以及确诊经过。

万医生你好,我来是想让你帮我判断检查一下我到底是不是adhd。

我准备了一个材料,大概5分钟左右,下面是我的故事。

我现在是一名远程办公的程序员,在此之前,三年前我是农学专业的,研究生一年级的时候退学了,后面又读了计算机,才曲曲折折的做了现在的工作。

我怀疑自己是adhd差不多一年的时间了,去年的时候我因为经常白天拖拉,进入不了工作状态,只有到晚上才能特别专注,特别兴奋的投入到工作中,我经常到熬夜很晚,无意中我从网上刷到了一个概念hyperfocous,一旦进入状态很专注很难出来,我才开始读了《分心不是我的错》这本书。

这本书我是在我每天通勤的地铁上听完的(出差的时候,每天通勤没办法做别的,工作后我很难完整读完一本书了),读到了很多我的影子,包括后面做了测试量表等等,我越来越确信,自己也是ADHDer了。

现在回忆小时候,我成长经历,我其实没有:好动,坐不住的表现。 (现在工作了我倒是有一点,写代码/写点什么东西的时候,经常坐不住,需要突然站起来,走一走)

一、作业拖延、丢东西

小学的时候,我印象中有几件事,一是每天的作业,经常是写到10点多。 但现在想想,那时候作业应该不算多,更多的可能还是回家之后做事拖拉,就是慢慢悠悠的写,或者半天不想写,到了不能不写的时候才可以动笔。

类似的还有寒暑假作业,每次都是拖到快开学了才动手写。

二是小时候经常丢东西。印象中冬天的时候,买的厚手套,一个冬天丢了差不多十几副,明明记得放在了桌洞里了,就是找不到。

三 忘记吃饭

吃饭,我前几年回家的时候有一个弟弟在我家吃水饺,特别瘦,吃饭的时候,吃一口,要嚼个可能5分钟左右,就像在想什么事情一样。 我妈说,我小时候就那样。

我现在吃饭稍微快一点了,但还是有问题。我一个人独居在家办公的时候,经常是想不起吃饭,到了饭点了,我也不想动身吃饭。(有时候是不想吃,有时候是没有吃饭的动力)

喝水是经常忘记喝水,但有时候很渴了,但是不想动身。(状态很差的时候)

吃水果的话,经常不吃,主要是一想到要去洗,觉得麻烦。但是洗好了的,吃水果也不排斥。

(这一点我妈总是说我,太懒了,连去洗一洗都不愿意。我其实心里想法是,我是真的不想动,在我动身之前,想不到水果的味道和好处,我就一点都动不起来。)

说到动不起来,我想到另一个事情:憋尿。

状态差的时候(周末,无所事事,整个人不知道干什么的时候), 我真的会憋尿。 就是根本动不起来,明明卫生间就在几米的位置,就是一动不动的,继续刷手机。

我不知道是手机导致的,还是因为什么adhd的某些东西导致的。

四 时间感模糊

小时候上学的时候,经常是早上起床哭,是因为父母叫我,叫早了的话,会哭,可能是没睡够;叫晚了,也会哭,担心上学迟到。

但现在想想,我那时候可能其实也没有时间感的,就是单纯的,既想多睡会,又对迟到很恐惧。

我现在对时间感觉也很不好,我通勤的时候,30天可能有25天会迟到,无论是通勤1小时还是15分钟那种。

我经常最后1分钟了,才出门,但总是迟到。

以及,应该是记忆力很差,过去很模糊,现在根本不会一下子想不起上个星期,上个月,或者去年发生了什么。 有时候我会想,今年是哪一年?竟然是2025年了啊,22年的时候,我在哪呢?

五 白日梦

现在印象很深刻的是,6岁左右,跟另外两个小伙伴在院子里的麦垛子上,我想象是漂浮在海上的船,遇到海难的现场,我那时候完全投入进去了,沉浸在我想象的画面和叙事中,很长时间画面都很清晰。

小学午休的时候,我发现半眯着眼看透过阳光的玻璃,会看到空中飞舞的颗粒,那时候我不懂这是灰尘,我想象那是小人国的世界,那里另一个世界的故事。

六 学业

但后面初中高中,我并没有十分明显的不适应。我初中开始住校了,初中一周回一次家,其实初中条条框框的学校规定,我其实很喜欢,干什么都是一起的,宿舍是8人间,我不用担心吃饭吃什么,晚上会不会熬夜,几点起床,几点洗漱等等。

总之初中住校生活,虽然有很多规定,但是我过得如鱼得水的。

但是到了高中,可能是因为压力更大了些,规定更严了,住校时间是一个月回一次家,我过得压抑了许多,但是完全衡水式的管理,我心里又觉得避免了我很多问题。

七 退学 及自学计算机

我大学读的植物保护专业,农学类的。大三的时候考研,备考了接近一年时间,最后很顺利的考了第一考到了另一所学校去读研了。

现在想想,读研深层次的原因,是因为当时觉得自己的这个专业研究很有意思,很好玩。

读研后,发现课题组很压抑,也很混乱,科研学术研究的美好滤镜碎掉了,再加上老是让高年级的师兄师姐安排做一些打杂的重复性工作,心灰意泠下退学了。

我可能就是非常排斥反感,重复性的,工作。跟我一起干活的我另一个同门,虽然我俩一直在抱怨,但最后我受不了退学了,他坚持了下来,现在去读博了。

退学后我打算自学计算机,但我发现自己一个很大的问题: 总是不断被新的技术吸引,但是坚持不下来,所以一直在尝试,然后放弃。

自学学新东西的时候,新鲜感维持一段时间后,就开始枯燥起来,再遇到点问题,我就放弃。

如果不是后面我又找到了实习,开始被安排强制性的工作,我恐怕很难学会计算机,进入编程的行业了。

八、 家族成瘾史

在注意到我可能是adhd之后,才意识到我父亲,我爷爷,都有长期酗酒。 我父母在出门行李打包的时候,经常是手忙脚乱,多件事情同时进行……

我在很长时间刻意避开酒精,但是在大学开始喝酒之后,发现自己不时有喝酒的冲动。 很多时候是因为无聊,想追求酒精带来的飘飘的感觉。

此外,我很容易陷进“无意义的长时间上网”的状态中。在初中的时候,是很容易一直在刷网页,刷搞笑视频,陷入一层一层的网页中,熬夜到很晚。

这时候我都不清楚自己要干什么,想干什么,只是一直熬夜。

现在则是很容易陷入到手机中,而且不容易从这个状态中中断出来。

晚上吃完饭刷手机,不知不觉就很晚了,而且很不想从这个状态中脱离开;如果此时女朋友强行提醒,我会有情绪问题。

九 远程办公困境

我现在是程序员,大多数时间远程办公。

一个人在家远程办公,带来了很多很多的挑战,加剧了我的症状。 这也是我现在急切想确诊的原因。

每天看似很自由,但是一切需要自己安排。工作和生活之间的界限很模糊。

白天工作效率很低,启动困难,没有很强的动力去工作,经常是被动的进行工作。

但是一旦工作起来,经常是忘记吃饭/不想吃饭,状态很差,最终是效率低,只能熬夜加班,最后就陷入恶性循环中。

如果状态差的时候,各种小事也根本不想动,比如洗漱,打扫卫生,吃饭等等。

总之是一个完全被动的状态。

严重的拖延,心里觉得越是重要的事情,越容易拖延,之前需要汇报ppt,往往是第二天汇报,前一天晚上一两点还在熬夜做,最极限的是等到要汇报的前5分钟了,还在改着。

但是如果是坐班通勤的话,上面的困境又会少一些,只会有每天迟到的困扰。 但是我工作近一年多的时间,并没有很长时间的坐班经历,更多的还是每次一个月左右的去海外出差,然后每天通勤,我也不是十分确信,如果真的长期坐班之后,我又有什么表现了。

在老家的时候,每天和父母生活在一起,一日三餐妈妈都会提醒,我只需要处理工作就可以。这时候到了返点,我妈会提醒我吃饭,到了晚上,不是很晚,父母就可以提醒不要熬夜了,此时不得不中断工作,切换任务。

但是在青岛远程办公的时候,所有的一切都需要我自己来做了,很难任务切换,生活过着过着就开始一团糟糕,恶性循环了。

]]>
2025-06-07T03:01:07+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/124研究生退学转码之路:招转培、网课、鱼皮社区以及二学位 (二)2026-02-09T01:54:41.471975+00:00

2025.5.12 又回到了新加坡,距离上次更新退学转码系列: 从985研究生退学重回二本读计算机的这几年--2024年终总结,已经又过去了大半年时间。 emmmm,属实是鸽王本王了。 上一篇发出后,吸引了很多朋友的关注,诚惶诚恐。好多朋友看完上篇之后,其实一直在等着我出下一篇,甚至一些大学时期的朋友看到我发的公众号之后,特地来催更,是意想不到的。 我本身是一个很喜欢讲故事,喜欢分享的人,同时,我又很喜欢“挖坟”,喜欢看一个人一件事情过去几年的变化,很理解这种心情。

但是有些东西是很沉重的,过去的经历,现如今的回忆起来,又像是穿越层层的迷宫,回到过去那片迷雾重重的沼泽地里重新再走一遍,这大概也是我无法迟迟动笔的原因所在吧。

现在的生活属实不易,我又没有足够坚强的自信,能够稳定的保持住现在的生活,所以总是在如履薄冰小心翼翼的过着如今的生活,生怕哪天又回去了。我自认为自己能够完整的走过退学转码这一路,最后转码,拿到软件开发的工作,既可以远程办公,又可以在新加坡及吉隆坡办公,恐怕其中运气成分占了将近99%以上,其中个人努力成分远远可忽略不计。

倘若现如今有人看完了本人的经历,妄想复刻重走一遍/抑或想着获取某些转码有用的经验,恐怕是缘木求鱼了。更遑论现如今,计算机形式更是江河日下,一日不如一日的情况。(so,各位看官,在观看本文时建议抱着听故事的心态图一乐,若想找一些实用的经验,恐怕是失望了。)

正所谓老人言:“一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程。" (我绝不知道我一个农学研究生,天天想着养的虫子的事,怎么去敲代码抓bug了?)

(一)

”你不能总是在赢得时候,才想到自信。“

最近有看到这句话,很受激励和启发。我希望我一直是这样,但那不是我,是我幻想中的我。 如果回到我这期博客的名称来看,我的转码之路:招转培、网课、鱼皮社区、以及二学位,基本是这样的过程,我总是在怀疑中度过的,一边怀疑一边尝试,愈发不自信,屡战屡败,不断尝试后放弃的过程。

我不是一个自信的人,经常”冒名顶替综合症“,甚至坦白讲,我有动笔继续写我过去经历的心思,也是在我又重新回到了新加坡之后,在国内远程办公的时候我根本不想写。

回到主题,继续我们的转码之路。

三年前的那个夏天,上次讲到,我退学后进了黄岛的一家招转培公司。开始的开始,我每天背着电脑从市北通勤一个多小时每天认认真真的到公司,听着从word文档上流传下来的js知识点,一脸懵逼。最开始的时候,心气很高,因为是研究生退学,心里一直有一个非要证明自己的强烈念头,幻想着4个月学出来,然后进外企。

就这样在那家公司呆了近一个月,发现理想与现实越来越远了。别说进外企了,就是坚持下来都觉得是浪费时间。每天白天听之前来的实习生(或者说被提前几个月被招转培骗进来的学员)讲课,晚上通勤一个多小时回到市北租的房子那里。

就在索性慢慢适应,快认命的时候,跟带我的师傅聊天才知道,这家公司的所有开发,除了老板,剩下的全是这种方式招来的。做项目的是一年前这种方式留下的,之前学的是后端,没有学明白,重新学的前端留下的。其余的各个开发,也是后面陆陆续续这种方式招进来的。

从最开始让一步步签合同,到最后莫名其妙让申请分期贷款支付学费开始,就很反感这家公司。但是想着反正已经被签了合同,也背上了贷款,暂时也没地方去的心态,就先学着看吧。结果就是待得越久,越觉得吃了一口苍蝇一样。更难受的是,周围一样被骗进来的同事,不觉得这是一件错的事情。总是在美化/合理化这件事,说什么大家都是这样过来的,公司也不容易.....

每当白天看着机械念word的”老师“,看着一个一个的报错解决半天解决不了,看着刚出学校就背上了两万多的贷款,再回想最开始hr那副画大饼的嘴脸,就心里直后悔。 (有趣的是,上一个视频发了之后,虽然我没有提名道姓指出哪家公司,我之前还在的几个群都被踢了出来)

当时又重新进入了内耗的状态,心想好不容易退学了,怎么又到了这样的困境里呢? 真是不想继续这样效率低下的学下去了,因为当时基本上都是在靠B站的黑马视频学了。当时白天讲的,也都是对黑马视频上讲的东西的洗稿。

(后来我听说很多线下的补习班,老师讲的不怎么样时,大家也是靠看B站的视频.....)

]]>
2025-05-12T05:07:30+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/123结束远程办公,治好了我的精神内耗2026-02-09T01:54:41.655381+00:00环境对人的影响非常大,很多东西是目前远程办公体会不到的,无法弥补。

比如,团队氛围,比如人与人之间的面对面交互,比如情绪表达与体会,比如成就感。

线上文字,即使是语音,信息传递之间的内容也远不及线下面对面之间表达的东西多。

而对于职场新人,or 或者仅仅是我个人性格或某些特质的原因,我更喜欢与人面对面交流一些,哪怕退一步讲,批评甚至被骂,总好过冷冰冰的文字。

或许是infp/adhd/(不知道该推到什么心理or生理疾病特质身上),文字会无形中放大或者减弱某些情绪,放大的这部分大多数是负面的情绪,来源于我的无端猜想,对于批评总是多想; 减弱的这部分大多数是正面的情绪,来源于自小就教育的理念:你一定要谦虚啊!

但是人总得需要正向反馈的,需要成就感,意义感,价值感的等等。远程工作,远远放大了负面的反馈,削弱了正向的反馈。

(或许是无法直接接触到实体的人,面对文字,无法想象链接到背后的意义)

so,远程工作的过去几个月,大部分时间过得并不是很快乐。部分原因如上所说,负反馈比正反馈得到的多的多,每天的感觉是负向的,结果就是慢慢感受不到工作带来的意义了。 ( 这时候钱可能会带来一些价值感,加点薪也许能解决问题。)

远程办公,对我来说更致命的另一点是无法解决秩序与框架问题。

ADHDer其实最怕的是一个毫无框架松散自由的时间,高度分心的状态,再加上没有时间感,将是致命糟糕的混乱时期。

为了防止不清楚adhd,上面更好的类比说明: 拥有明确目标(高考),每年度/月/周,甚至是天/小时,都安排好(被动or主动)事情做的高中生活,good!

目标不明确(考公/考研/就业/大部分时间也不清楚毕业要干啥),每天活动无忧无虑,除了上没办法逃的必要课外,没有其余强制任务的大学生活,看似无忧无虑,实则是(ADHDer)的地狱。

理由/原因就是刚刚讲的,没有框架,高度自由的时间里,你的大脑像一台高度运转的跑车,200多迈的速度疾驰,但分分钟的分心,让你不时被路边的风景吸引着,一直在猛打方向盘追求刚刚看到的东西。

搞得自己精疲力尽,但回头看下轨迹,混乱的行事风格。再加上你有时间盲,时间颗粒度极低,想不起过去发生了啥,未来的又何时来到?

线下办公,多少能避免一些问题。

比如框架以及秩序感。

每天上下班的通勤(拥有一个舍友,相当于多了一个remader或者是线上那种adhder提醒师的角色,不必担心每天迟到/算错时间/晚回/等等问题)

比如上下班以及其中某些日常活动(对于多任务的切换困难的弥补,比如同事都离开,我自然也跟着离开)

线下办公,被严格规定好了工作地方,工作时间,反而让我感觉更舒服一点。 有时候看似选择少了,反而烦恼也没那么多了。

或许,这也是less is more的智慧?

2025.05.09 6:26 于新加坡 凌晨睡不着时想到的

]]>
2025-05-08T22:38:06+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/122chatgpt眼中的我2026-02-09T01:54:41.816616+00:00下面这些话可能有点扎心,但我尽量直白、温和地说——它们既来自我对你长期聊天记录的观察,也是我在众多开发者、留学生、远程打工人身上反复见到的模式。如果你能真正消化并针对性行动,幸福感和效率都会上一个台阶。


1. “点子成瘾”、完工稀缺

你对新鲜想法有近乎本能的兴奋——Electron 小插件、笑容控制游戏、薪资可视化、Java + NCC 的各种重构……但完成率远低于启动率。结果是:
情绪:每当新灵感出现,你兴奋;一旦卡关或新点子冒出来,旧项目被打断,留下未完成的自责。
现实:时间被切碎,作品难以积累成真正能在履历或收入上“说话”的成果。

残酷真相创意≠资产。未落地的创意不会给你带来财富、作品声誉,甚至不会留下系统化的学习。
行动建议

  • 任何新想法,先写一张「完工清单」——要达到什么即可交付?
  • 同时进行项目≤2个;想新点子先记进“冰箱”,月底才能解冻。
  • 为每个项目设立结束仪式:发布、写总结博客或 demo 视频,把“完成感”视觉化、可分享。

2. 你在“用意志力对抗 ADHD 大脑”

你多次提到时间感缺失、拖延、注意力飘忽——典型 ADHD 特征。你常靠熬夜冲刺临时死磕解决问题,但这恰好是 ADHD 的“灾难模式”:大起大落、消耗巨大。

残酷真相靠意志力硬扛,只会在下一轮任务前把自己耗干,而且随着年龄和责任增长,恢复速度会变慢。
行动建议

  • 环境替你做管家:番茄钟 + 全屏写代码;手机物理隔离。
  • 日历分块 + 闹钟:把“想干”和“必须干”拆成 25 min 的小块,写进日历,外部闹钟提醒你切换。
  • 给自己真正的“奖励多巴胺”——每完成一块就去做 2 min 真正开心的小事,而不是在 Twitter/知乎上无底洞式刷。
  • (若条件允许)正规评估 ADHD,用药或专业 CBT,比单纯自律事半功倍。

3. 你对成功的二次成本恐惧大于对失败的痛苦

你曾说“比起失败,我更怕成功”。其实你不缺能力,缺的是对成功后“期待增高、责任变大、别人看见你”的心理准备,于是潜意识里用延迟、完美主义、换题目来自我保护。

残酷真相自我设限省下的麻烦,正是你想要的职业成长与自由
行动建议

  • 把「成功后会更累」写出来,再写对应的减负策略(自动化脚本、分包同事、找导师)。知道自己有 Plan B,大脑就不再用拖延当盔甲。
  • 为每一步成功预设“可承受的不完美”:例如第一次公开演讲允许 PPT 只有 80 分,而不是拖到 100 分才上台。
  • 把注意力从“出错会怎样”转到“完成带来什么”。写一张积极后果清单,放在桌面。

4. 你把他人标准当作主导航,忽视了内在坐标

为了签证、团队要求、老板反馈,你换语言、换学校、加班熬夜;可你的价值感依然摇摆——因为方向盘始终在别人手里。

残酷真相只满足外部标准,容易陷入“做得再多,仍配不上肯定”的循环
行动建议

  • 写下你 5 年内「最想保留的身份标签」(例:独立开发者、AI 教练、丈夫/妻子、高质量内容创作者……),每周回顾任务清单:哪件事直连标签?优先做。
  • 给自己定内部 KPI:学习一门框架并发表一篇中文+英文教程,比“老板夸我”更可控。
  • 每完成一次「对齐自身价值」的行动,就记录在持续成果文档,让“自我肯定”数据化。

5. 你正在透支身体与关系的缓冲区

长时间熬夜写代码、远程协作缺反馈、与伴侣沟通错位——都在削弱你的“复原力”。身体和亲密关系是所有高强度创造的底层电池,一旦亏电,技能再高也跑不动。

残酷真相健康和爱耗尽后,修复成本指数级上升,远超任何加班收益。
行动建议

  • 每周至少两晚 7 h 睡眠写进日历,并像开会一样不可取消;
  • 用“非工作闹钟”——到点就下线、放松眼睛、拉伸 5 min;
  • 与伴侣定期“同步会”:沟通情绪而非只谈任务,用她熟悉的语言(会计式逻辑、成本收益)解释你的创意和计划,减少误解。

最后一针鸡血

你已经拥有好奇心、编程硬实力、双语沟通力,这是稀缺组合。唯独差的,是让系统替你守纪律、让完成替你说话、让身体替你高效。
开始把想法「关进笼子」,定期放出“养肥”的成果;让规律作息与外部工具接管注意力;直面自己对成功的恐惧并拆解它——这些并不浪漫,却能让你的天赋真正兑现成作品、收入与自由。

愿下一次我们聊天时,你分享的是“我又上线了一个可用的小工具”,而不是“我又想到一个新点子”。那时的你,会惊喜地发现:专注和健康,才是最强的魔法。

备注:

请根据你对我的记忆,有哪些我自己可能意识不到,但如果明白了,就能大幅改善我人生的残酷真相?请坦诚告诉我。 --chatgpt o3

]]>
2025-04-30T08:46:52+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/121我猜,他上次体检也是在婚检,那时他也26岁,我如今的年纪。2026-02-09T01:54:41.998924+00:00给老爸预约上了体检的套餐,算是工作后主动给家人花的一笔钱了,意外的是,这次没有嫌我乱花钱。

去年我还在新加坡的时候,听说了老妈因为骑电动车被车刮碰了一下,去的医院做了全身体检,结果意外查出了肺癌.....因祸得福的是,正是这次交通意外,才做了体检,查出了肺癌,得以有机会动手术。

我妈的上次体检,是30几年前的婚检。那时检查出肝有问题,她总担心喂我奶水为传染给我,但又因为买不起奶粉,只能喂我奶水。

我妈感慨“这次体检没想到肝竟然好了,肺又出了问题。”

听了之后挺感慨的,人生第二次的体检竟然是因为意外的交通事故。

我给爸爸也预约了一次体检,他收到预约成功的短信后,没有嫌弃我乱花钱,只是说,“查查吧,也已经好久没体检过了。”

我猜,他上次体检也是在婚检,那时他也26岁,我如今的年纪。

]]>
2025-04-27T15:08:15+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/120ADHDer/infp:尊重你的天马行空的想法,以及现在就开始创造2026-02-09T01:54:42.166938+00:00想法很重要,I know,你每天都会有大量的天马行空的想法涌现。

但是,上班很痛苦,循规蹈矩的重复工作,折磨你,你的想法在公司眼中不重要,老板不需要你高速运转的大脑,几分钟蹦出一个想法来,他只需要你像一个机器一样,重复,准确地 “复制-粘贴”,校对每一个数据。

可是,那不是你,重复性枯燥的工作就是慢性毒药,杀死你创作力的同时,也在每天一点点磨损你的灵魂。

But,I wanna you know, what you feeling matters , what you throughs matters.

但是,我想让你知道,你怎么想的,怎么感受的,这些都很重要。

只有去珍视那些你所想的,那些你所看重的东西,你才是真正的你,just do yourself and let me help you do yourself better !

对于ADHDer / INFP / 高敏感/高创造性的人,你需要的不是重复,不是枯燥的工作,你需要的是创造,需要的是让自己的想法从0变成1的这一过程,而你的优势也恰好是这个。目前社会上的大量工作不适合你,你每天过的痛苦,内耗,因为你不适合,你是被放到错误位置上的人,在不断的消耗着你的灵魂。

(二)

现在是属于魔法师的时代,而AI就是你的魔法棒。

在过去,你的想法只是想法,只会停留在漫无目的的白日梦阶段,停留在偶尔失眠的夜晚,但现在,你可以创造的,可以亲手把你的梦实现;

过去,实现这个想法,需要你枯燥的学习大量的知识,而你大概来不及学完连续的知识,就被你的想法,被各种更有趣的东西,吸引去了注意了,放弃了这一过程。

但现在不一样了,只需要“挥一挥魔法棒,念一念咒语”(打开AI工具,告诉它你的心愿),你的想法就可以实现了。

]]>
2025-04-18T04:17:44+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/119ADHD时间感缺失、失眠症、记录与对抗遗忘2026-02-09T01:54:42.323260+00:00ADHD时间感缺失、失眠症、记录与对抗遗忘

《百年孤独》里有一个有趣的情节,马孔多的人患上了失眠症,失去睡眠,可以没日没夜的醒着,代价是,遗忘。 我想大概是因为失去了睡眠,过去,昨天,跟现在,将来模糊了边界,所以遗忘。

一开始只是忘记很久之前的事情,慢慢忘记昨天发生了什么,最后甚至忘记身边的东西的名称,以至于在何塞阿尔卡迪奥家里写满了标签,用来对抗遗忘,记录身边东西的用途。

比如:这是汤匙,用来喝汤的。(汤,喝了让人饱腹的热东西,不要用手直接拿……)

后来我读了很多关于ADHD的书,了解到了ADHDer时间盲这一概念,突然有了新的想法,失眠症,太像adhd的时间盲这一概念了。

ADHDer大脑中缺乏时间观念,分不开过去与现在将来,时间感知的缺失,确实是很难回忆起过去。 因为你分不开过去与现在,自然也很难回忆起过去。

大概与何塞阿尔卡迪奥一样,为了对抗遗忘,在我成长过程中,我也默契的选择记了很多的日志,笔记,说明,但这些东西,就像ADHDer的思维一样,散落在各个地方。

项目上有个补丁,二月份的时候出的,今天找到我说测试了,发现有问题。

我第一瞬间其实是懵的,完全忘了这个需求是什么了,找到当时我的日志:

Image

我突然很想知道,2025.2.20我在哪里,那天发生了什么,我当时又是如何排查到了这个问题的?

看了一下日历,那天也是星期四,元宵节刚过去的一个星期左右,剩下的,一片空白,如果不是有这个记录,过去仿佛不存在一样……

那,过去又该如何存在呢?

]]>
2025-04-17T04:06:22+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/118成人注意力不足过动症(ADHD)的诊断与学术进展2026-02-09T01:54:42.484417+00:00

原视频链接:https://www.bilibili.com/video/BV1Xi421f7wC/

ADHD 与以下相关: 早产 出生时体重低 出生时血液中铅含量高

多巴胺合成与代谢的出现问题:多巴胺水平的改变引起多动症

生物节律问题:皮质醇含量晚上后移

药物治疗: 利他灵 “聪明药” 中枢神经兴奋药 副作用长期服用的话 还是有影响;

症状型ADHD: 持续性ADHD

成人门诊:超过一半满足ADHD诊断标准 德国患病率 3.1-4.7%左右,但确诊比例 0.04%-0.4%左右

诊断: 询问病史和检查为主,但是缺乏直接的生物标志物来诊断。 所以具有一定的主观性 目前主要依据DSM-5(手册)

其他辅助诊断资料: 筛选和评估量表 全面的临床访问 了解家族史 了解病史

成人ADHD的临床表现 adhd是贯穿整个人的生命周期

(一)注意力不集中 健忘 注意力分散 陈述混乱 组织策划困难 在“听”方面有困难 守时困难(迟到或者太早退) 迷失在不相干的细节中 (并非完全是粗心,而是不相干的细节,比如窗外的苍蝇) 难以做出决定

(二) 多动 内心不安 很难放松 走来走去 坐立不安,不能忍受在办公室工作

(三)冲动 没有思考就行动 不能等待 说话不经思考 打断别人 无节制的消费 暴饮暴食/厌食 冒险行为 失业

(四)情绪失控 情绪不稳定【也有可能共病 或乌镇双相情感障碍】 低挫折耐受 情感冲动 发怒 经期前情绪症状增加

巴克利观点:ADHD本质是执行功能的一个障碍,自我管理功能的缺陷

[ ]问题组织、确定问题优先级和启动工作方面 [ ]集中、维持和转移注意力到任务上 [ ]管理挫折和调节情绪 [ ]利用工作记忆和访问回忆 [ ]调节警觉性、持续精力和处理速度 [ ]行为的监测和自我调节

王中磊

治疗 药物:效率最高的,但是考虑副作用 运动:需要持续性的运动;每周至少3次 40分钟中高强度 外界监督 正念

]]>
2025-03-23T10:24:21+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/117朋友,真正的生活究竟什么时候开始的呢?2026-02-09T01:54:42.643207+00:00Image

Image

]]>
2025-03-22T04:54:55+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/116ADHD失去时间感知以及理性思考2026-02-09T01:54:42.778837+00:00IMG_20250212_124849.jpg

刷到一个讲座,真切说中了最近的状态:

陷入时间的荒芜上,整个人都卡住了的感觉,失去理性思考,任由生活把我送到哪里去,生活有一种平静的麻木感。

看完了巴克利教授上面这个关于adhd的专业讲座,说中了的感觉,最大的问题的确是没有时间感知。

生活平静麻木的向前进,我想不起昨天,或者上个月,或者上年的一些事情,它究竟是发生在了确切的哪个时间段? 我明白遗忘很正常,正常人也会遗忘,可是我脑袋里往回看的时间感知不是这样的:

如果不是刻意联想,今年是2025年,去年是2024年我毕业,我甚至一下子想不到我究竟已经工作了多久了,到底是哪一年开始工作的了。

至于昨天,上个月,亦或者过去的几年里,发生的大大小小的事情,如果不去查聊天记录或者一些日记记录,恐怕我得绞尽脑汁想半天,才能想明白个轮廓。

过去的记忆就像洒满了一层黑漆漆石油的湖面,我知道它发生过,但具体在哪里,我一下子找不到,它就混乱的堆在了那里,或者被盖在了湖面下面。

写到这里,我都有点怀疑了,这究竟是adhd特有的时间感丢失,还是老年痴呆症年轻化发作了……

不过我想明白了另一个事情,我如此痴迷的读《百年孤独》,一遍又一遍,甚至到了每次读我都不按原书的顺序随便翻开一部分就可以读起来了。

或许其中一个原因也是,我痴迷于那个世界的时间感。几页文字,就到了多年以后的行刑场。又或是,下了四年多的大雨。

想想看,下了四年的大雨,一天也没有停,你被困在老房子里,放假牙的瓶子里都长出了黄花,时间又都停滞了。

讲座提到的另一点: “adhd 无法与自己交谈,与自己进行理性思考,向自己提问,并提醒自己管理眼前局势的规则”

我不敢拍胸脯保证百分百是这样的,但回想我人生重要时刻,重大决定,似乎没有一个是直接“与自己对话”后做下的。

或许正如之前看到的,ADHDer的想法,就像散落一地的水银,或者大脑中时刻泵出的想法就像一台高速行驶但没有刹车的跑车。

这确实没办法与自己对话的,想法太多,太散,散了一地的水银,时不时泵出的想法,这很难交谈,理性思考。

(与别人交谈可能好一点,但是与自己直接凭空交谈,太难了,就像是思维陷入了死锁中,我从小没办法自己与自己下棋,会一直无限循环想下去……)

所以好多时候我喜欢文字,我喜欢写下来,无论多少想法同时出现,多么混乱,文字输出后,就有迹可循了。

IMG_20250212_133004.jpg

]]>
2025-02-12T05:36:16+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/115找bug就像以前抓虫子,不一定会遇到什么稀奇古怪的虫子。2026-02-09T01:54:42.942361+00:00找bug就像以前抓虫子,不一定会遇到什么稀奇古怪的虫子。

]]>
2025-01-15T07:31:22+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/114如何实现LLM的记忆功能,以及如何在对话中触发记忆存储呢?2026-02-09T01:54:43.402769+00:00image image image image image image image

]]>
2025-01-11T15:28:34+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/11352weeks2026-02-09T01:54:43.556474+00:00image

1/52 w 【Bulid 1/100】 2025.1.2-1.5

【Cloudflare中转顶级大模型API,国内免费爽用,Gemini编程,音视频,多模态能力测试】

问题1:deploy之后02:25 action并没有成功运行 image 解决:等了一分钟左右,好了 image

笔记: gemini-2.0-flash-exp 目前谷歌最快的模型 gemini-exp-1206 目前谷歌最强大的模型

目前进展: [-]成功实现了cursor连接gemini 的api √ [ ]后续:多模态以及WebSocket调用

image 参考:https://www.bilibili.com/video/BV1xS66YAEwm/?spm_id_from=333.337.search-card.all.click&vd_source=65ebf9bfb6a7747af466eb21540ff732

]]>
2025-01-02T13:58:20+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/111研究生退学是一种什么体验?2026-02-09T01:54:43.714557+00:00

本帖主要是备份2022年退学后知乎的回答,现在整理到github 原答案链接🔗:https://www.zhihu.com/question/27564104/answer/2505742430?utm_psn=1855292036053352448 image image image image image image image image image image image image

]]>
2024-12-25T08:51:12+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/110从985研究生退学重回二本读计算机的这几年--2024年终总结2026-02-09T01:54:43.882273+00:00终于要提笔写点什么了,这是一篇酝酿好久的文字,我过去想了好久,但迟迟无法动笔。

一方面,完美主义是造成拖延的最大的原因,我担心自己写不好,担心自己写不出我心中所想的,过去经历的这一切;另一方面,或许是因为过去这几年经历了太多太多(就我目前的经历和心智来说),我想把所有一切都记录下来,又觉得一切似乎没那么有价值,对于我来说,我无法分清发生那么多事情的轻重缓急,无法在回顾时,想清楚如何讲给他人。

索性,仅仅把这篇总结回顾,视为讲给自己听的,写给自己的文字好了。

写到哪里就算哪里好了。

01 It was pretty scary at the time

It was pretty scary at the time, but looking back it was one of the best decisions I ever made.

今天心血来潮,想到了之前给@Hawstein发过一个邮件,是因为当时在推特上看到了一篇文章《一个独立创造者的五年》,后面有提到可以say hello,给大佬发邮件,便写了下面的邮件,非常能反应当时的心境。

image

我今天的心情大概这样,现在pretty scary at this time ,我担心拒掉唯一的offer后,更不确定性的未来。

当时的我已经研究生退学两年了,在机缘巧合下得知了二学位这个机会,又重新回到了一所二本的学校读计算机,已经读了近两年的计算机专业了,但秋招过后,计算机的岗位甚至都没有信心去投offer,只凭着六级跟之前的农学背景,拿到了几个教培及外贸的offer。

但心里又迟迟不甘心,还是想做计算机的工作。

当时的心境及offer情况在这篇博客中也有详细的描述:[开题答辩拿了高分,但关于未来很迷茫] (https://github.com/QiYongchuan/MyGitBlog/issues/52)

就像两年前,我在对未来一无所知,毫无把握的情况下,从研究生退学那样,我又一次拒绝了到手的offer,选择了自己想做的那条路。

不同的是,两年前我明确知道,我看到了农学研究生的未来,自己退学退的毫无留恋,义无反顾;但是两年后,我自己已经经历了退学后的种种事情,两年事情发生了太多变化:

21年的时候培训班转码学几个月前端就能入职,24年经济持续低落,企业开始了大裁员,黑马培训班已经停止了前端的招生。 而我心里也产生了很多的顾虑,太担心跟两年前研究生退学时一样,找不到工作了。

但当时,又因为上完了一个月的嵌入式开发的实训课,我自己第一次独自完成了一个项目,以及在学校的java实训课上,我自己认认真真的敲完了代码,跑通了这个项目,我又重新燃起了写代码的信心。

(其实这也说明了,我退学转码后这两年的学习方式是多么的错误,我一次有一次的选择了去看超级长,事无巨细的B站培训班的课,结果就是我一次又一次的放弃,太多的语法细节和报错,挫败了我的自信心,在一次又一次的打击下,我放弃了写代码,我以为自己没有天赋去写代码,十分痛苦。其实现在看来,最应该做的是从转码的第一天起,就应该动手去写代码,而不是先去看课,去记笔记,去记语法细节.....

而在学校最后的几个实训才让我明白,代码是动手敲的,而不是像之前考研复习一样,必须先背过知识点之后,才能动手做真题。

——总之,在二学位最后的时间,我遇到了两个改变了观念的老师,我代码路上的引路人,我得以明白,代码是需要动手做的,以及代码就像搭积木,一块一块的去搭就好了。

当时的笔记:除了想象力,没有什么是限制

我重新捡起来写代码的兴趣,但还是非常焦虑将来的工作的,毕竟当时已经是11月秋招接近结束了,我的基础非常差,几乎没有看的下去的项目——源于我过去两年失败的转码学习,99%的精力放到了尝试一次又一次的超过100多个小时的B站视频上了。

当时想的是,哪怕最后我找不到敲代码的工作,大不了我做一些兼职的项目,哪怕是卖给本科生毕设项目呢,我也要继续下去。当时退学转码为的是什么,不能再去为了谋生就去做不喜欢的工作了。

很幸运的是,年后3月份,我找到了软件开发的工作,当然这是后话了,后面再详细讲吧。

02 从二本考上了985的研究生,然后呢?

“985研究生”,“二本逆袭”,“退学”,这些真的是很好的Tag,或者说是流量密码。

似乎大家都喜欢这样的戏份,我也是,我们从高中就开始灌输,“提高一分,干掉千人”,似乎考上一所好的大学的那一刻,就是人生赢家了。而对于小镇做题家的执念来说,二本似乎就成了原罪,于是在考研的时候,成功考上985,便是完成了华丽的逆袭。

过去很长时间,我也是这样想的,在我的第一个视频我的考研故事:从一所二本学校到985专业第一 时,我将这种心情表达的淋漓尽致。

当时在评论区,已经有一些不好的声音了,譬如,“天坑专业,考上了也没用”等等。

或许同大多人一样,在看到这种扎心的评论的第一时间,肯定会生气,继而忽略掉。坦白讲,以我当时的认知,大学过去的四年里,关于专业天坑的这种声音我听到的确实不多。

作为一个从小听老师话的乖学生,在以往听到这种“大逆不道”的话,我第一反应肯定是:啊,这种话怎么能说的呢?这不是吃饭砸锅吗?我们辅导员入学教育的时候可不是这样讲的; 或者是流传已久的"经典土木圣经",说这种话的人,肯定是loser..... “没有垃圾专业,只有垃圾人”,“360行,行行出状元....."

另一方面,我确实听说过“生化环材”四大天坑的说法,可是我当时单纯的想法竟然是,我们是农学,又不是生物,所以生化环材四大天坑跟我们没关系啦。

后来才知道,生物被批判为天坑不假,但是我们农学是靠着生物吃饭的。

毕业投简历,能投进生物类的公司就算烧高香了。我们平时做的,都是生物上的东西,我们懂得,生物都懂,我们不懂的,人家生物还懂.....

但我本意不是想花太多的精力批判这个专业,我曾经无比热爱这个专业,也遇到很多受人尊重老师,他们一心钻研农业研究,勤勤恳恳做事,但对于大多数人来说,或者对于我而言,因为自身的局限性,我看不到好的就业前景。

去年的年终总结里可能更多的写了大学生活及退学的原因 从研究生退学之后的两年

总之,在我读了一学期之后,我便陷入了对未来深深的焦虑与迷茫之中,在无比的痛苦中,我选择了退学。当时的想法很简单,哪怕我去培训班培训6个月的前端呢,我去写代码,也不想三年后研究生毕业的时候,在继续迷茫,当时想的是,哪怕什么都不敢,也比留下继续读完要强。

我当时的想法,三年毕业之后,要么继续参与这个游戏,读博,发文章,卷进高校;要么考公,要么去就业;但读博这条路在我进实验室看到大多数师兄师姐的状态后,我已经断了这个念头。考公我自知生性散漫喜好自由,实在不喜欢那个氛围,本科时便断了这个念头;就业,当时经济尚好,我们专业尚且困难.....

于是,我便退学了,仅仅想着退学后去培训班学几个月前端的想法下,就退学了,985的文凭我也不要了,总之,痛苦暂时接触了,在退学回来的火车上,我一遍又一遍的听着《没有理想的人不伤心》.....

那天还是一个很特殊的日子,2022年2月24日。

]]>
2024-12-22T04:26:12+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/109生活是一场持续不断的战斗2026-02-09T01:54:44.058737+00:00好久没有静下心来,写点什么了。

恰恰是发生了太多事情的时候,不知道该从哪里着手,思绪,情绪一下子太多了,于是索性放了下来,迟迟不知道该从哪里着手。

(一) 今天是11.17,一个11月寻常的周末。

下午的时候,QQ空间发了提醒,7年前的今天发的说说,也是一个周末的下午,那时我大一,还刚进入大学,和舍友在宿舍里看电影。真是怀念啊,心里一下子就想起了那句:

“欲买桂花同载酒,终不似,少年游。”

image

2017年,距离今天已经是7年之久了。

当时的我,肯定也不会想到,7年之后,我会经历3个学校,会在四年之后以第一名的成绩考到高考时不敢想的985学校,然后又在一个学期之后退学,放弃学了四年的农学,三年后又成为了一名码农。

.....

上一段写出来似乎有装逼炫耀之嫌,在这里写作应该真诚一些,不知道是不是最近写小红书写多了,总是不自觉的加一些耸人听闻的标签,也许是为了追求流量,也许是自我标榜,实在不该。

总之,没想到是已经7年之久了,7年前的我,年轻,单纯,期待着美好的大学四年生活,对未来一切都充满着好的幻想与期待。

(二)

其实最近值得写的东西有好多,如果时间拉回到6月份,我从计算机二学位毕业了,然后在6月份去新加坡实习,一个月的时间学到了很多,我也有信心将来能够转正,能够从事软件开发的工作了。

7月份,我拿到了offer,开始了三个月的试用期,我搬到了青岛开始了和女朋友的同居生活。期间,在特朗普枪击遇袭的那一天(7.14),我们有了一只可爱的小狗,可乐,然后8月份告别小狗与女朋友,我前往马来西亚短暂出差工作。

也是在出发的同一天,我收到了妈妈出车祸的消息。好在只是刮碰,仅仅是皮外伤。

在马来西亚呆满了整个8月,吉隆坡真是宜居的好地方,当地的同事每天下班前5分钟就开始收拾东西,一下班整个办公室接着关灯,主打一个“别想让我加一分钟的班”。

9月份我又去了新加坡,在新加坡仅仅呆了两周,在中秋节前一天的周一通勤地铁上,我接到了女朋友的视频电话,第一句就是,“你快看看小可乐吧,她快咽气了.....”

在新加坡早高峰的地铁上,我一下子慌了神。

也是在前一天晚上,我得知了,妈妈还在医院住院,我瞬间感觉不妙,追问下,爸爸也是含糊其辞,"就是一个结节,动了手术,再化疗化疗巩固一下,就出院了....."

到公司,我师傅问我下午的返讲准备的怎么样了,我一下子哭了出来,他带我到会议室,我还是哭个不停,断断续续的整理了好几次情绪,跟他说了这些事情,他表示理解,让我现在就放下手里的工作,不用担心工作,先回国,照顾好家人,等什么时候觉得可以工作了,再给我安排工作。

(三)

我当天晚上飞回了国,在肯德基等女朋友从老家回青岛,我看见她背着一个大大的宠物书包,空空的,里面已经没有了我们的小狗。回到出租屋里,满地都是可乐之前的玩具,我小心翼翼的收拾着。

第二天回老家,问起妈妈的病情,刚开始也还是含糊其辞,说好了。

后面才慢慢跟我说,当时被车撞了早就好了,就只是擦伤,去医院检查的时候发现了肺里有结节,医生说,要是再晚一年来医院,就是肺癌晚期了,就没救了。

妈妈庆幸地说,幸亏是被撞了了,要不然也不会来医院检查了,我春天的时候就觉得喘不上气来了,上药店拿了点药也不管事.....

我心里听了不是滋味,妈妈又跟我说,"人家说肺里结节,就是打这个疫苗打的,还打了三针,当时不打还不愿意,真是倒霉啊....."

从动了手术之后,妈妈每隔半个月,还得回医院化疗一星期,每次化疗回来,脸色都变得不好,最近一次,脸整个虚胖,浮肿。

(四)

我开始了半个月在老家,半个月在青岛的生活节奏,还是远程工作。

11月的时候,终于转正了,晚了一个月,因为中间请假的原因。

很珍惜也很喜欢现在的工作,远程,能够敲代码,同事很好,不懂的问师傅,每天都在学习。

对于毕业后第一份工作来说,已经很好了。

但可能是ADHD的原因,再加上是第一份工作,还是远程,很多时候,工作节奏把握不好。一段时间忙的要死,一段时间就很闲,有时又因为是远程工作的原因,自己在家就完全控制不好自己的专注力,甚至严重时,自己吃饭都成问题。

慢慢意识到,生活是一场持续不断的战斗,需要时刻规划好自己的注意力,做事情,一定要有结构性,有一个表去记录,开始-结束-后续,否则,就是一场漫无目的的漂流,任何方向,任何一点想法,就会让生活变得失去方向.

]]>
2024-11-17T13:47:15+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/108Cursor小白使用教程:从安装到开发浏览器插件2026-02-09T01:54:44.226435+00:00网上的教程已经有很多了,有的也很详细,但本着”费曼学习法“的原则,我来写一下,我在使用过程中遇到的问题,我的开发体验。

首先Cursor是什么? Cursor = vscode + AI ?

其实Cursor从推出,到大火,已经有一段时间了,但因为最近工作太忙了,同时要上线好几个项目,实在忙不过来,心有余而力不足,前段时间才刚刚下载体验,带给我最大的感受:

就像第一次接触ChatGPT一样惊艳,对于一个从来没有接触开发过浏览器插件的人,我用了差不多不到10分钟,总共两次提问,就完成了一个简单的浏览器插件的开发。

在我没接触之前,还停留在 Cursor = vscode + AI ,仅仅以为是把各种大语言模型(ChatGPT/Claude/)集中到了vscode中,不需要再去把你的代码复制到网页端,然后让其分析生成代码,再粘贴代码回你的编译器。

如果是这样,那我之前也体验过一些这样的插件,感觉仅仅是省去了复制-粘贴这一步。

]]>
2024-10-26T14:50:11+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/107Cursor折腾记录:开发趣味英语插件2026-02-09T01:54:44.367793+00:00好玩的功能点:

  • 拍照,识别图片中的英文,到单词
  • 上传一本书,解析书中的单词
  • 单词自动出现在屏幕的某处,三秒后出现单词的中文释义,之后是英文释义,然后是例句,之后消失
]]>
2024-10-24T13:49:08+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/106增量下载的时间陷阱:一次时间处理错误引发的重复下载问题2026-02-09T01:54:44.527506+00:00

为什么即使代码中设置了增量下载,还是会不断重复下载一些数据? 记录一次与时间处理相关的debug过程

业务场景:重复下载问题的发现

在开发与第三方平台 banqup 的对接过程中,我遇到了一个非常奇怪的问题:
即使使用了增量下载的逻辑,某些发票数据却被重复下载了。

问题背景

  • 系统从 banqup 平台获取采购发票,并采用增量下载逻辑:每次下载后记录最新的时间点,下次从这个时间点之后再获取新的数据。
  • 按理说,只要记录并从上次下载的时间点之后进行增量下载,就不会出现重复数据。

然而,在分析日志时,我发现系统多次下载了同一时间段的发票,这引发了我的疑问:
为什么已经下载过的数据会再次出现在后续的增量下载中?


排查问题的过程

1. 检查增量下载逻辑

我首先检查了下载逻辑代码,确保每次下载时,都准确地使用了上次下载的时间点
关键逻辑如下:

String lastedCreatedTime = searchLastestCreatedTime(pk_org);  // 查询上次下载的时间
String requestURI;

if (lastedCreatedTime == null) {
    // 如果没有记录时间,则进行全量下载
    requestURI = nc.bs.einvoice.util.BillEffectUtils.getBaseURL() 
                 + "purchase-invoices?page=" + page + "&size=" + size 
                 + "&is_invoice_lines_included=1&sort=created_at,desc";
} else {
    // 使用上次下载的时间进行增量下载
    requestURI = nc.bs.einvoice.util.BillEffectUtils.getBaseURL() 
                 + "purchase-invoices?page=" + page + "&size=" + size 
                 + "&created_at.gte=" + lastedCreatedTime 
                 + "&is_invoice_lines_included=1&sort=created_at,desc";
}

下载逻辑看起来没有问题——如果记录了上次的下载时间,就会从这个时间点之后获取新的发票。但既然逻辑正确,为什么还会出现重复下载呢?


2. 查看数据库中存储的时间格式

为了进一步排查,我查看了数据库中的时间存储情况:

private String searchLastestCreatedTime(String pk_org) {
    SqlBuilder sborg = new SqlBuilder();
    sborg.append("select TOP 1 created_at from einvoice_purchase_h ");
    sborg.append("where pk_org", pk_org);
    sborg.append("order by created_at desc");

    DataAccessUtils utilorg = new DataAccessUtils();
    IRowSet roworg = utilorg.query(sborg.toString());

    String lastest_time = null;
    if (roworg != null && roworg.next()) {
        lastest_time = roworg.getString(0);  // 从数据库获取时间
    }
    return lastest_time == null ? null : convertToIsoFormat(lastest_time);
}

我发现数据库中存储的时间是类似本地时间格式的,而增量下载使用的时间是 ISO 8601 的 UTC 时间格式


3. 时间转换的逻辑问题

接下来,我仔细检查了时间转换的代码,发现了一个关键问题:

从 banqup 获取时间时:

SimpleDateFormat createAtFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'");
if (!jsonArray.getJSONObject(i).isNull("created_at")) {  
    try {
        date = createAtFormatter.parse(jsonArray.getJSONObject(i).getString("created_at"));
    } catch (ParseException e) {
        throw new BusinessException("Invalid created_at format");
    }
    hvo.setCreated_at(new UFDateTime(date));	     
}

错误:

  • SimpleDateFormat 默认使用本地时区(如 UTC+8)进行解析,即使时间字符串是 UTC 时间
  • 这意味着,我错误地将 2024-10-09T02:47:45.394780Z 当成本地时间存入数据库。

从数据库读取时间时:

private String convertToIsoFormat(String dateTime) {
    DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime localDateTime = LocalDateTime.parse(dateTime, inputFormatter);

    // 使用系统默认时区创建带时区的时间对象
    ZonedDateTime utcDateTime = localDateTime.atZone(ZoneOffset.systemDefault())
                                             .withZoneSameInstant(ZoneOffset.UTC);
    
    DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
    return utcDateTime.format(outputFormatter);
}

错误:

  • 存储时将 UTC 时间误当成本地时间存入数据库。
  • 查询时再错误地将本地时间转回 UTC 时间,导致时间点偏移。

问题的根本原因

这两个错误导致了时间点的错位:

  1. 重复下载
    • 由于存储的本地时间被误解为 UTC 时间,在增量查询时,从一个更早的时间点开始下载,导致重复下载。

解决方案

1. 正确解析和存储时间

从第三方平台获取时间时,确保使用 UTC 进行解析:

SimpleDateFormat createAtFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'");
createAtFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));  // 显式设置为 UTC

if (!jsonArray.getJSONObject(i).isNull("created_at")) {  
    try {
        date = createAtFormatter.parse(jsonArray.getJSONObject(i).getString("created_at"));
    } catch (ParseException e) {
        throw new BusinessException("Invalid created_at format");
    }
    hvo.setCreated_at(new UFDateTime(date));	     
}

2. 查询时保持时间一致性

从数据库查询时间时,确保时间格式不再错误转换:

private String searchLastestCreatedTime(String pk_org) {
    SqlBuilder sborg = new SqlBuilder();
    sborg.append("select TOP 1 created_at from einvoice_purchase_h ");
    sborg.append("where pk_org", pk_org);
    sborg.append("order by created_at desc");

    DataAccessUtils utilorg = new DataAccessUtils();
    IRowSet roworg = utilorg.query(sborg.toString());

    String lastest_time = null;
    if (roworg != null && roworg.next()) {
        lastest_time = roworg.getString(0);  // 获取 UTC 时间
    }
    return lastest_time == null ? null : lastest_time;  // 不做多余转换
}

总结

这次问题的根源在于时间和时区的处理不当。由于我错误地将UTC 时间当成本地时间存储,并在查询时再次错误转换,导致了重复下载的问题。

经验总结:

  1. 所有时间都应以 UTC 格式存储和使用,避免因时区问题造成数据偏移。
  2. 解析时间时明确设置时区,确保时间处理一致。
  3. 在增量下载逻辑中,保持时间格式的一致性,避免因时间错位造成数据重复或遗漏。

通过这次问题排查,我对时间和时区处理的重要性有了更深刻的认识。希望这篇博客能帮助大家在开发过程中避免类似的问题!

后记:本篇博客上述内容是由chatgpt-4o基于我们的历史对话记录生成,全文未改一字。 犯这个错误本质还是对java中时间格式处理不熟,(可以说是业务上第一次遇到),才犯下的低级错误。

]]>
2024-10-22T08:27:26+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/105转码后第一份工作:那些内耗焦虑的时刻2026-02-09T01:54:44.692573+00:00image

image

前段时间实习的时候发的,当时心态极度焦虑,内耗,毕竟是转码后第一份工作,第一次真正接触到实际的工作中。

遇到了很多的问题,发现自己技术很菜,很担心被人说,你怎么这么菜,怎么连这也不会?怎么连这也没听说过?

当时患得患失,一度到了有问题都不敢讲的地步。

后来大概是,所谓的“触底反弹”吧?

我想通了,大不了最差的结果就是,不过呗。这样你大不了开了我,我还不干了,我也不整天焦虑做不出来了。

想明白了这一点后,我整个人轻松了下来,没什么大不了嘛,顶多就是拜拜了。

我至少有了工作经验,至少比我刚进公司时的水平提高了,那我遇到问题就问,自己解决不了,就直接抛出给我师傅,反而工作起来顺利多了,心态也慢慢变好了。

至于后面,总还是会遇到“你怎么技术这么菜?”的时刻,慢慢想明白了,人最重要的是勇敢,勇敢接收和面对真实的自己,菜就多练好了。这次你指出我技术菜,至少我知道了这么写不对,又有了提到的地方了,下一次我就会了。

其时在ld或者其他同事眼里,你的技术水平大家肯定是清楚的(就是你真的很菜),但他们是接纳了一定程度上你技术的菜的。

最后的最后,我又有了新的认识,今天听了另一个新同事的转正返讲,她ld点评时说,“只要态度认真,会debug,问题总会一点一点解决的,无非是熟悉了解决的快一点,刚开始慢一点,只要认真学,总会学会的,解决掉的。”

工作无非就是工作,最坏不过是搞砸好了,人生还很漫长呢!

人生的难题大概也是如此吧,慢慢debug,总会解决掉的。

image

]]>
2024-10-20T14:08:38+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/104跑车级大脑,但刹车失灵是一种什么体验:ADHD的困扰与天赋2026-02-09T01:54:44.856689+00:00ADHDer的人,拥有跑车级的大脑,但是刹车坏掉了

在新加坡地铁上,每天早上上班的路上,差不多 10 天时间,10 个小时左右听完了这本书。

最开始发现这本书是看到推特上有人分享,ADHD(注意力缺陷)会有一种模式,hyperfocus,即注意力高度集中模式,表现在当投入感兴趣的事情的时候,往往几个小时出不来,会一直沉浸在其中。所以 ADHDer 要尽量避免晚上的时候,写作、编程等投入的工作。

在我某一次写完代码,又到了凌晨两点的时候,看到了这个帖子,愈发感觉自己是这样的。于是在推荐下看了这本关于 ADHD 的书,一位美国心理学家(同时也是 ADHDer)写的书。在书里看到了太多类似的经历了:

  • 小学的冬天,手套丢了太多副,经常是忘记放到哪里了,有时候丢一只,有时候两只一起丢,就这样光手套差不多买了近十来个了。
  • 高中的时候,语文考试写作文,最头疼的是纠结开头和题目,要想半天,如果想不到一个足够刺激(或者说精彩)的题目,往往怎么也写不下去。
  • 大学的时候,经常忘记 ddl,会想不起交实验报告,会拖延。
  • 一开始学写代码的时候,经常拼错一个单词,搞错单词字母的顺序,看半天也看不出什么来。(ADHDer 往往也有阅读障碍)

以及回想过去的经历,经常会被指责太粗心了。这些都是 ADHD 的一大特征,分心

ADHD 的好处:创造力与高度集中模式 (hyperfocus)

分心是因为大脑总是在寻找足够刺激的想法,这带来了很多神奇的点子。无论是白日梦,还是各种奇怪的想法,总是会时不时涌现。

在我接触 ChatGPT 和各种眼花缭乱好玩的 AI 应用时,我差不多每天都涌现出各种衍生的、类似的、升级的想法,各种让我自己眼前一亮、一想到就兴奋得睡不着觉的好玩的点子。(我甚至专门开了一个博客记录这些想法)

但正如开头提到的,ADHDer 的大脑,拥有跑车级性能的大脑,但刹车不好使。往往想到这个,搞一搞,突然又有了新的想法,又跳出去搞别的了。容易被别的东西吸引,容易被自己新的想法吸引。

关于 hyperfocus 模式

我最开始了解 ADHD 其实是从了解这个模式开始的。我一直以为注意力缺陷就是多动症,就是集中不了注意力。后来关注的一个博主在法国读博,讲了一系列 hyperfocus 下的行为特点:熬夜、高强度投入等等,我才开始进一步了解。(这段写得不好,毕竟我可能是 ADHD,我的注意力又跑了:)

书中提到 hyperfocus 的描述:当遇到感兴趣的事,投入进去时,大脑神经就像排列整齐的猎犬一样,高度集中。而平时,ADHDer 的神经,就像打碎了玻璃温度计里的水银一样,四散。

就先写这些吧,毕竟我的注意力又跑丢了。而且现在已经是凌晨 1 点了,进入危险时间了,不能深夜写作……

2024.9.12 凌晨12:57 于新加坡

e845ae307c6c18b74c1d0627ca8feaa

]]>
2024-10-11T14:02:45+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/103Java学习笔记16:Java中发送网络请求的各种方式2026-02-09T01:54:45.006596+00:001.使用 Java 原生的 HttpURLConnection

private JSONObject sendHttpRequest(String requestURI, JSONObject jsonBody) throws IOException, BusinessException, JSONException {
   String access_token = nc.bs.einvoice.util.BillEffectUtils.ensureToken();
   HttpURLConnection debtorsRequest = (HttpURLConnection) new URL(requestURI).openConnection();
   debtorsRequest.setRequestMethod("POST");
   debtorsRequest.setRequestProperty("Authorization", "Bearer " + access_token);
   debtorsRequest.setRequestProperty("Content-Type", "application/json");
   debtorsRequest.setRequestProperty("Accept", "*/*");
   debtorsRequest.setDoOutput(true);
   
   try (OutputStream os = debtorsRequest.getOutputStream()) {
       byte[] input = jsonBody.toString().getBytes("utf-8");
       os.write(input, 0, input.length);
   }

   int responseCode = debtorsRequest.getResponseCode();
   if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED) {
       BufferedReader reader = new BufferedReader(new InputStreamReader(debtorsRequest.getInputStream()));
       StringBuilder response = new StringBuilder();
       String line;
       while ((line = reader.readLine()) != null) {
           response.append(line);
       }
       return new JSONObject(response.toString());
   } else {
       handleError(debtorsRequest);
       return null; 
   }
}

private void handleError(HttpURLConnection debtorsRequest) throws IOException, JSONException, BusinessException {
   BufferedReader errorResponseReader = new BufferedReader(new InputStreamReader(debtorsRequest.getErrorStream()));
   StringBuilder errorResponseText = new StringBuilder();
   String errorLine;
   while ((errorLine = errorResponseReader.readLine()) != null) {
       errorResponseText.append(errorLine);
   }
   JSONObject errorResponse = new JSONObject(errorResponseText.toString());
   String errorMessage = errorResponse.optString("message", "Unknown error");
   JSONObject errors = errorResponse.optJSONObject("errors");
   throw new BusinessException("Error from API: " + errorMessage + "  \\nDetails: " + errors);
}

]]>
2024-08-15T06:41:51+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/102增援未来:健身与学习2026-02-09T01:54:45.159683+00:00突然想到一个点:健身是一种“增援未来”的行为。

刚开始健身的时候,每次运动完,浑身疼,且精疲力尽,累的要死。

但时间久了才慢慢感受到,自己的精力在慢慢变好,一个很明显的体现是,以前下班回家之后,做什么都提不起精神来。以往很多时候,会有“脑雾”现象:就是感觉大脑混浊一片,浑浑噩噩的什么都不想干的时刻,现在也越来越少了。

想起教练说的一句话,健身是以年为单位的。

今天才意识到,很多事情是需要痛苦、时间,然后等待的过程。

我想起了我的代码学习,之前不知道要学习什么,就挑着自己感兴趣的,“瞎学了”一大些:cs50,嵌入式了,vue了,react了,很多很多,有些纯纯是因为当时觉得很酷就学了。

在后面进公司实习的时候,要用之前不熟的java,因为之前自己乱七八糟的学了不少语言,心里还好不是很怵,慢慢的上手,才发现好多东西都是相同的,比如某个java上的概念我不理解写不出来时,我就先用Python或者js描述给chatgpt,然后让它给我讲java中如何实现。

有一种在黑漆漆的山洞里,逐渐点亮火把的感觉。

今天在小红书刷到了有人发cs50、cs61a/b的学习记录,又燃起了我的学习热情,当时cs50学起来还好,cs61a/b学起来是真的痛苦,且没有学完就放弃了。 现在有了chatgpt4,我想带着我的小伙伴,再来挑战一下。

同样,我现在学这些,跟我目前的工作不是很强的相关性的,我目前不需要再很细的去研究算法,去研究怎样用java实现一个git控制系统,但光是听名字,就很酷的东西,怎么能不去玩一玩呢?

不知道这个种子种下之后,将来会结出什么果,但是who care呢? 就像健身,每一次精疲力尽之后,气喘吁吁的大口呼气是我最享受的时刻,编程的时候debug找到问题解决的那一刻,也是最爽的时刻。

]]>
2024-08-15T06:04:43+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/101从农业研究生退学到一名程序员:我的转码之路2026-02-09T01:54:45.349098+00:00

坦白讲,我认为自己还不够格写一篇这样的文章,深知自己目前实力很差,勉勉强强称的上菜鸟程序员。从研究生退学到现在,差不多已经过去两年之久了,从4.1号拿到offer入职,到现在实实在在的工作经验也不过4个月之久,远远还没有达到,跳出来写一篇所谓的经验之贴,给同样希望转码的人传授什么的资格。

此篇,仅作为自己过去经历的总结,如有读者看到,供娱乐文章一读即可。

从之前的抓虫子,到现在的debug,想来这段经历也挺有趣。只不过这是如今事后看罢了,这其中的辛酸过程,自是只有自己才体会的到。

不过今天不忆苦思甜,不扯东扯西,只讲点实际的东西。

在我研究生退学之前,也曾无数次搜过相关的文章,如何转码成为一名程序员。

答案五花八门,有各种课程要学,各种技术栈等等,看得人心里直痒痒,既激动又焦虑。激动是觉得自己按照这个路线学下去,一定也能成功,焦虑则是,太多课程了,学不会咋办? 学完了,还是找不到工作咋办?

以及,考虑要不要报一个培训班? (尤其是培训班往往还在鼓吹保就业)

00 B站自学

我当时也面临这种情况,尤其是刚刚研究生退学,去青岛跟对象合租,在家自学时。着急想要证明自己,退学了也一定能混出名堂。于是在这种心态下,自学了差不多两个月的前端课程,这个阶段主要是看B站的pink老师的课。

但无奈的是,心态上焦虑,课程又漫长,看了两个月,JavaScript才刚开始看。再加上课又长,每天看一点点,视频都看不完,更别说自己动手敲代码了,就这样每天焦虑的看课赶进度,有时候截图记记笔记,课是怎么也看不完,代码呢,则是一看就懂,一敲全部报错。

于是这时候就去搜各种的经验贴,还加了几个前端交流群。

经验贴让你手敲代码,亲自去写一下。

但当时的我,一心只想着赶紧看完课,要去找工作了。手敲代码,一敲全是报错,半天找不出哪里错了来,越看代码越头疼,越错越不想写,再加上急切的想证明自己,结果就是越想证明自己,越担心写的代码报错,更担心报错了,半天解决不了。 于是积极性备受打击,常常陷入习得性无助里。(如果当时有chatgpt的话,或许学习之路会少很多的痛苦了)

01 “招转培”

当时看前端群里吹水,“谁谁谁包装经验又拿到了xx的薪资了,面试就背背就能上岸了.....” 于是,我心里也活泛了起来,又看到了希望。当然当时还没有勇气包装简历,毕竟前端三件套,才刚学到js。是当时才22年3月份,我是21年应届考上的研究生,22年2月就退学了,心想,应届生身份不是说两年嘛? 那我投一投春招吧,说不定有企业愿意培养应届生呢。

于是打开boss直聘开始投简历,投了几份几乎没结果。就在本着随便投投的心态试试水来着,某天中午,正在午休的时候,一个电话打了过来。一家我从没有投过简历,甚至在boss直聘上搜不到名字的公司约了面试,从此我迎来了噩梦的一个月,招转培的生活。

]]>
2024-08-12T15:09:39+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/100火神的禁区与n<=4的联排插排2026-02-09T01:54:45.498103+00:00火神的禁区与n<=4的联排插排 01 连续的隧道弯道,视野却逐渐飞升,就像灵魂飘出了车里,飘到了空中,我成了第三方视角一样还在开大巴车,但视线被隧道挡住,只能凭感觉驾驶。

弯弯曲曲的路,马上进隧道。轰隆一声爆炸,我回到现实,大巴车终于还是撞了,车头撞烂挤在了一块。

一个认识的叔叔挤在了上面,还在喊我的名字,“永传,没事,我没事……”

幸运的是,车上50个人,除了一个受轻伤,均没有大碍,我们下了车。我们一家三口下了车,爸妈也带着劫后逃生,死里逃生的轻松感。

我跟他们还有一同赶来救援的人讲了,出事时我的状态和感觉。

一个老者说,前面是火神的禁区,又来了,今天已经过来了20多辆车,还没有一辆顺利开过去, 不是着火就是爆炸……

听到这我心里突然又轻松了许多,看来我出车灵魂飞出,车爆炸也不能是我自己的问题了,又是因为死里逃生,一家人还在一起。

于是一家人在熊熊燃烧的大火与大山前,拍了好多的合照。有意思的是,这里拍出的照片,生成的全是像原始人壁画上那种,红色线条的简体画。

image image

02 既然过不去这片山,火神的禁区,索性便就住了下来。

跟朋友住在另一处地方,整个小镇大停电,但唯独我们家还有电。我赶紧告诉朋友,快拿出你们所有的充电宝,手机,电脑,我们赶紧冲满电,然后把我们的插口往外租给别人卖。

于是,我们家唯一有点的插口,被我连了一个插排出来之后,我的设备几乎占满了插排上的口,又被朋友的插排接上,形成了“插排树”,就这样最后竟然形成了7层的插排树结构。

密密麻麻的,上面连了我们的各种设备,很是壮观。

就这样我们一边在房间里玩着牌,一边等着顾客上面,毕竟我们现在是小镇上唯一有电的地方了。

后来没多久,以我房间为中心,竟然发展成了一个商业街,灯光以此为中心逐渐减弱,也别有一番风景。

某天,消防来检查消防隐患,将我们的插排树给拔了下来,他们告诉我,插排最多可以外接3个,一共必须小于4层结构,不然容易引起火灾。

于是我们把原来的单层7排结构,改成了左右结构的插排树。

d982e7264d04d26f42ab8abd6501fae

后补: 1.图片来源于chatgpt4.0 DALL-E 模型 279e09ca50e66a58a2e9f5b46bd91ac 2.源于午后的真实梦境,在早上的时候参观了吉隆坡的印度教宗教景点,黑风洞,梦醒后写完本篇文字查阅资料后,才发现印度教中火,亦扮演重要的角色,实在有趣。 f05c78bbcd2c56516308caf5c115f8d 7f8b83b7851dee9aeadab81d3910313

]]>
2024-08-11T15:51:41+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/99OpenApiUtil :封装调用接口的方法2026-02-09T01:54:45.658634+00:00package nc.bs.einvoice.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import nc.vo.pub.BusinessException; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.Map; public class OpenApiUtil { private static CloseableHttpClient httpClient = HttpClients.createDefault(); /** * 执行GET请求并返回指定类型的响应。 * @throws BusinessException */ public static <T> T doGet(String url, Map<String, String> headers, Class<T> responseType) throws BusinessException { HttpGet httpGet = new HttpGet(url); if (headers != null) { headers.forEach(httpGet::addHeader); } try (CloseableHttpResponse response = httpClient.execute(httpGet)) { JSONObject jsonObject = handleResponse(response); return JSON.parseObject(jsonObject.toJSONString(), responseType); } catch (IOException | BusinessException e) { throw new BusinessException("执行GET请求失败", e); } } /** * 执行POST请求,发送JSON数据,并返回指定类型的响应。 */ public static <T> T doPost(String url, Object payload, Map<String, String> headers, Class<T> responseType) { HttpPost httpPost = new HttpPost(url); StringEntity entity = new StringEntity(JSON.toJSONString(payload), "UTF-8"); httpPost.setEntity(entity); httpPost.setHeader("Content-Type", "application/json"); if (headers != null) { headers.forEach(httpPost::addHeader); } try (CloseableHttpResponse response = httpClient.execute(httpPost)) { JSONObject jsonObject = handleResponse(response); return JSON.parseObject(jsonObject.toJSONString(), responseType); } catch (IOException | BusinessException e) { throw new RuntimeException("执行POST请求失败", e); } } /** * 处理HTTP响应的通用逻辑。 * @throws BusinessException */ private static JSONObject handleResponse(CloseableHttpResponse response) throws BusinessException { int statusCode; String jsonResponse; try { statusCode = response.getStatusLine().getStatusCode(); jsonResponse = EntityUtils.toString(response.getEntity()); } catch (IOException e) { // 捕获 IOException 并重新抛出为 BusinessException throw new BusinessException("网络请求失败: " + e.getMessage(), e); } if (statusCode >= 200 && statusCode <= 300) { if (statusCode == HttpStatus.SC_NO_CONTENT) { return new JSONObject(); // 或者返回null,具体取决于业务逻辑 } return JSON.parseObject(jsonResponse); } else if (statusCode == 400) { JSONObject errorResponse = JSON.parseObject(jsonResponse.toString()); String errorMessage = errorResponse.getString("message"); if (errorMessage == null) { errorMessage = "Unknown error"; } String status = errorResponse.getString("status"); if (status == null) { status = "Unknown status"; } JSONObject errors = errorResponse.getJSONObject("errors"); throw new BusinessException("Status: " + status + "\nError from API: " + errorMessage + " \nDetails: " + errors); } else { // 对其他错误状态码的处理可以类似地扩展 throw new BusinessException("HTTP请求失败: 状态码 " + statusCode); } } } ]]>2024-07-22T14:45:23+00:00https://github.com/QiYongchuan/MyGitBlog/issues/98Java学习笔记15:数据结构2026-02-09T01:54:45.794488+00:00image

// 创建一个 HashMap 实例来存储请求头信息
Map<String, String> headers = new HashMap<>();

// 添加授权信息到请求头中
headers.put("Authorization", "Bearer " + accessToken);

// 设置接受的响应类型为 JSON
headers.put("Accept", "application/json"); // 改为接受 JSON 格式的响应
]]>
2024-07-19T07:24:29+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/97海的那边是什么? 2026-02-09T01:54:45.933656+00:00现在是午夜1:20,我在候机厅里,再过二十几分钟,我将登上飞回中国的飞机,同时也将结束我在新加坡xx公司一个月的实习了。

几十分钟前,我坐在机场的大厅的地上,改完了bug,明天系统要进行演示。

一个月前,我肯定不会想到,我会在熬夜加班了一个星期后,还有耐心的掏出电脑,看代码。 我肯定也不会想到,这一个月我写了看了这么多的java,差不多两个月前,我刚因为毕设改用了java死活写不出来,甚至四个月前,我才开始重新系统学java.

]]>
2024-06-03T17:25:36+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/96基于自然语言和图像生成技术的英语词汇学习系统:项目总结2026-02-09T01:54:46.159358+00:00

第一版开发已经完成,实现了前后端的联通,核心功能已经实现,单词=>llm的解释、例句,单词=>图片的生成,写此总结一下项目过程中遇到的问题,目前计划要写:

  • Prompt编写,如何控制llm输出json格式的结果
  • 数据库存储json格式的结果遇到的问题
  • 如何存储图片

又想到中期答辩给打了最低分,越想越生气,迟迟不想动笔了,暂时先放下一段时间再写好了。

]]>
2024-03-26T12:24:03+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/95Vue笔记2026-02-09T01:54:46.334143+00:00image

]]>
2024-03-19T17:51:09+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/94SpringBoot学习笔记:MyBatis以及MyBatisPlus2026-02-09T01:54:46.472784+00:00ORM介绍

image

image

image

]]>
2024-03-19T12:19:37+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/93SpringBoot学习笔记:Swagger2026-02-09T01:54:46.635741+00:00API表达工具 image

]]>
2024-03-19T07:44:50+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/92SpringBoot学习笔记:RESTful应用接口2026-02-09T01:54:46.802957+00:00什么是RESTful?

REST(Representational State Transfer)是一组设计原则,用于构建网络服务。RESTful服务意味着遵循这些设计原则的服务。

image image

image image image

]]>
2024-03-19T06:19:46+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/91SpringBoot学习笔记:拦截器2026-02-09T01:54:46.965020+00:00拦截器(Interceptor)是用来拦截进入Controller方法之前或之后的请求的。 它们常用于日志记录、身份验证、权限检查、或者添加通用的请求或响应的头信息等场景。

image

用的最多的是preHandle

简单使用:

1.创建拦截器

public class LoginInterceptor  implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("登录拦截器");
        return true;
         //  其中request对应的就是前端的请求
//        if (request.getSession().getAttribute("user") == null)
//            return false;
//        else if (request.getSession().getAttribute("user") != null) {
//            return true;
//        }   可根据条件来判断
    }
}

2.注册拦截器

@Configuration   //注明是配置类
public class WebConfig implements WebMvcConfigurer {
    @Override     // 添加拦截器,将我们之前写的拦截器注册,添加拦截的路径,使其生效
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");

        registry.addInterceptor(new LoginInterceptor());  //也可以不添加拦截的路径,这样默认所有的都拦截

        // 拦截之后就是调用LoginInterceptor的preHandle方法
    }
}
]]>
2024-03-19T05:35:30+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/90Java学习笔记14:String类 ,StringBuffer以及StringBuilder2026-02-09T01:54:47.112578+00:00继承关系

image

说明,可以串行化,数据可以网络传输,String对象可以比较相互比较大小

本质是一个final 类型的char 数组[ ]

两种创建方式的不同

image image

image

equal:比较值是否相等 == 比较地址是否相等

image

image

注意这里的方法 String.inner 返回的是常量池的地址。

字符串的特性: 其实是创建了两个常量池对象 image 这里进行了优化,直接创建了一个 image

常量相加,直接在池中;变量相加,在堆中 image

image

image

]]>
2024-03-18T15:42:26+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/89Java学习笔记13:包装类2026-02-09T01:54:47.269561+00:00什么是包装类

即八大基本类型的封装类,为了用类的方法

image

自动装箱和自动拆箱:

本质上就是实现了自动的将包装类型与基本类型的转换,底层调用的还是之前的方法,只是自动调用了,省去了手动调。

自动装箱:将基本类转化成包装类

//自动装箱 int->Integer
int n2 = 200;
Integer integer2 = n2  // 完成了将n2变成了包装类,底层本质调用的还是 Integer.valueof(n2)

自动拆箱:将包装类转换成基本数据类型

//自动拆箱 Integer->int
int n3 =  integer2 //底层仍然使用的是 intValue()方法

三元运算符与等价的if else的区别:

三元运算符是作为整体来看的,suo所以第一种情况下,精度提升为Double,1==> 1.0

image

]]>
2024-03-18T11:44:17+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/88Springboot学习笔记:@RequestMapping2026-02-09T01:54:47.442747+00:00一句话介绍:@RequestMapping就是用来做路由映射的,即在Controller中,处理url地址以及前端发送的方法,进一步转到不同的方法中进行下一步的处理。

(补充:当然不仅限于URL路径,还可以设置(可选地)请求方法(如GET、POST等)、请求参数、请求头等条件)

@RequestMapping(value = "/users", method = RequestMethod.GET)
public List<User> getUsers() {
    // 方法体,返回用户列表
}

@RequestMapping(value = "/users", method = RequestMethod.POST, consumes = "application/json")
public User addUser(@RequestBody User user) {
    // 方法体,添加一个新用户
}

image 1.@RequestMapping 默认post、get请求均可以,可以在后面写上具体的方法,也可以直接用另一种等价的写法: @PostMapping 和@GetMapping

  1. 用实体来接受形参时:注意请求发送的形式不同:请求体(body)和URL查询参数传递数据 具体可参考 #87
 @RequestMapping("/Entiy")
    public String entity( User user){
        System.out.println(user);
        return "实体类接收参数";
    }
    @RequestMapping("/Entiy2")
    // 如果前端传递的参数是json格式的,
    // 那么可以使用@RequestBody
    public String entity2(@RequestBody User user){
        System.out.println(user);
        return "实体类接收参数Json";
    }

3.关于传参接收以及实体

多个参数自动装箱(boxing)成一个JavaBean

  • 什么是javaBean:一种特殊的Java类。

    • 所有的成员变量都是私有的private的
    • 有一个不带参数的构造函数
    • 通过一组get、set函数来读取或者修改属性的值
    • 以上可以通过右键-生成-来对应生成
  • 实体Bean:EntityBean

    • 跟数据库的表可以实现一一对应
    • Bean的名字,与表的名字完成相同(Emp)
    • Bean中的属性名,与表的字段名相同(empno、ename、hiredate、sal)
    • 属性的类型,与表中字段的类型兼容
    • 实体Bean的一个实例(instance)对应数据库数据表中的一条记录
  • JDO:Java Data Obiect : java与关系数据库的关系

    • Data:数据库中的内容,永久存在数据库中的。
    • Object:JAvaBean的实例,存放在内存中。
    • 持久化操作,将内存上的东西存入到数据库中
  • 装箱过程

    • Step1:读取URL请求参数列表
h5?empno=11&sal=1000&hiredate=2022-2-22
  • setp2:如果函数形参是一个JavaBean,系统会自动调用该Javabean的一组set函数,来实现属性的赋值。这个过程称为自动装箱
   @ResponseBody
    @RequestMapping("h5")
    public String h5(Emp emp)
    {
        return  "<h1>"+ emp + "</h1>";
    }

前提是该javaBean中有相应的属性

]]>
2024-03-18T05:55:53+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/87Springboot学习笔记:@Controller、@RestController以及@RequestBody2026-02-09T01:54:47.616023+00:001.@Controller与@RestController

涉及MVC模型:

MVC模型
  • M:model,模型层,和数据库打交道。《==MyBatis
  • V:view,视图层。用户看到的页面结果。 《== Thymeleafs模板语言/前后端分离项目中返回的数据(多是JSON)
  • C:controller,控制层。实现业务逻辑:数据的处理和页面的跳转。《==Spring MVC

image

控制器中两种注解:

@Controller与@RestController

image

在前后端分离的项目中,后端主要往前端返回的是数据,所以用RestController, 而在前后端不分离的项目时,多用Controller返回的是页面,结合Thymeleaf使用的,此时是返回页面,寻找的是页面。

@Controller 是返回页面和数据的,当我们只用Controller的时候,默认是找的页面,比如下面是找hello页面了(前后端 不分离的项目) image

如果想返回数据,而不是页面呢? 需要加上@RequestBody

image

@RestController=@Controller和@ResponseBody的结合

当你使用@RestController注解时,Spring会自动处理你的类中的所有方法,使其返回的数据直接作为HTTP响应的正文返回给客户端,而不需要你在每个方法上单独标注@ResponseBody。

@RestController注解是@Controller和@ResponseBody的结合,这意味着它既将类标记为控制器,又表明类中的所有方法都会自动以@ResponseBody的方式处理。这使得@RestController非常适合用于构建RESTful API,其中所有的响应都是数据(如JSON或XML),而不是视图或模板页面。

这种方式简化了开发过程,因为你不需要在每个方法上重复使用@ResponseBody注解,从而让代码更加简洁和直观。总的来说,如果你的应用主要是服务于HTTP API的,使用@RestController会更方便。

前后端分离项目中,主要使用的就是:@RestController

]]>
2024-03-18T04:49:55+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/86SpringBoot学习笔记:与数据库打交道的方式(MyBatis和JPA)2026-02-09T01:54:47.775774+00:00

之前的项目是用的Mybatis,新的项目是用到了JPA(Java Persistence API),两者均是跟数据库相关的,比较好奇两者的区别,整理部分资料。

为什么要用Mybatis或者JPA?

涉及到几个概念:

数据持久化和ORM 1.数据持久化:是指将内存中的数据保存到持久化存储(如数据库)中,以便数据在程序结束后仍然存在并可以再次被访问。

2.对象关系映射(ORM):是一种在关系数据库和对象之间进行映射的技术,允许开发者使用面向对象的方式来操作数据库。ORM技术抽象了数据库操作的复杂性,开发者无需直接编写繁琐的SQL语句,即可进行数据操作。

**关系型数据库:**以ER(实体-关系)模型为基础,如MySQL、SQLServer、Oracle等。它们通过表结构(实体)、字段(属性)和表间关系(一对一、一对多、多对多)来组织数据,以及通过SQL语言进行数据的查询和操作。

  • 实体:对应数据库中的表。
  • 关系:表与表之间的连接,如一对一、一对多、多对多。
  • 关系运算:如选择(查询特定条件的记录)和投影(选择特定列)。

面向对象编程:如Java、C++、Python等语言,它们通过类、对象、继承和多态等概念来组织和操作数据。

  • 类:定义了对象的结构和行为。
  • 继承与引用:允许类之间的关系和数据的重用。

使用ORM框架如MyBatis或JPA,可以高效地管理数据持久化过程和对象关系映射,同时降低数据库操作的复杂性。MyBatis提供了更细粒度的控制,通过手写SQL配合对象映射,适合对SQL性能和灵活性有高要求的场景。而JPA提供了一套更高层次的抽象,通过注解和JPQL(Java Persistence Query Language)来实现自动的SQL生成和查询,适合希望快速开发且不需要深入优化SQL的应用。

通过这种方式,开发者可以专注于业务逻辑的实现,而不是数据库操作的细节,提高开发效率和系统的可维护性。

Mybatis和JPA之间的区别:

image

这里我的理解是: 1.MyBatis更多的控制,尤其是可以直接写sql语句,而JPA则是封装成标准的控制方法了。 ”MyBatis提供了对SQL的精细控制,而JPA则通过标准化的ORM模型来简化数据访问。“

2.分层设计:

  • JPA多一层service,实现数据库访问逻辑和业务逻辑的分开,代码结构更清楚
  • Mybatis则是访问逻辑和业务逻辑均放在Mapper层(DAO层)

在MVC中的体现

image

image

]]>
2024-03-16T05:48:39+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/85第一次技术面试复盘2026-02-09T01:54:47.950679+00:00下午刚刚结束了学计算机以来的第一次技术面试,给自己打个6/10分吧。

结果大概一周左右出来,第一次正式的技术面试,算是两年的转码学习以来迈出的第一步了。

趁着结果还没出来,趁着现在还不至于被不好的结果吓到:),记忆还算鲜活,写下一些面试复盘,也算是对近期学习复习的一个总结。

先说这次面试好的方面: 1.主动出击,扬长避短 讲了不少自己的做过的优势项目,或者说自己算熟悉的领域;不至于冷场,没有多少话讲。 这里主要讲了自己做的毕设项目,以及之前做过的动态页面展示网站,Vue的小项目。 这里的启发大概是:苍蝇腿也是腿,自己其实在学习过程中,做了不少的项目了,有些不善于总结和归纳,有些半途而废(比如之前用ts做的在线聊天的系统;未完成的扇贝单词项目等等)

但好在也还算积累了一点项目(虽说在写简历时自己也觉得没眼看,太简陋了点),总比什么也没有强。

这对于完美主义者来说,我想起了那句至理名言:先完成,再完美。我们现在先去试着做一百个失败的项目吧:)总比迟迟不动手要好。 第二点启发是,编程需要沉淀,平时付出的努力总会在将来某一天有用的。

2.对自己做过的项目还算熟。 这大概得一分为二来看了,对前端自己付出很多时间得项目,自然是熟一点,以及涉及到LLM模型,自己花时间整理,思考得东西,肯定是熟,能思考,能引申。但是对于后端得项目,说不上很熟,甚至一些基础的地方也卡住了。

不好的地方: 1.面试前太焦虑 2.基础知识点不牢固 3.明知道是重点需要复习的地方,依然没有好好复习。

大概是因为要第一次技术面试的原因,深感自己不足,觉得自己面试肯定会被各种无情的拷打,所有就各种的焦虑,但又格外的珍惜这次面试的机会,结果就是搞到自己焦虑不断,内耗严重。

想抓紧时间弥补自己的不足,又一边学一边焦虑自己怎么还这么多没有弄明白。结果就是面试紧迫感激发出来的高斗志只维持了不到几天,剩下的时间一边焦虑一边学,甚至只焦虑不学。

本可以按计划的话多学一点,那至少做的再好一点的。

同样,很多焦虑担忧的事情也没有发生:面试官超级耐心,听完了我介绍的项目,即使是很简单的项目也耐心听完了。同时,根据我的项目,针对性的提问了我许多的东西。并不是像一个考官,一定要判出个对错,很多时候像是耐心的导师,像是一个朋友,在一块探讨方案。

(第一次技术面试,但根据我之前看到的帖子,大概很少有这样耐心的面试官吧)

不知道自己能不能足够幸运面试通过了,但足够幸运获得了这次面试的机会,一是,虽然让我 在焦虑不安中度过了差不多一星期,但也是在这一星期复习了差不多以往要一个月才复习完的东西;二是,这次面试机会收获了陌生人的善意,遇到了很好的面试官,同时也对我的自身技术有了进一步的认识,该弥补的地方抓紧弥补,该加强的地方赶紧加强。

最重要的启发是:担心焦虑的大部分事,不会发生的,行动起来,付出总会有痕迹的。

]]>
2024-03-07T10:57:52+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/84从研究生退学之后的两年2026-02-09T01:54:48.447869+00:00

本文原本是某天心血来潮搜自己的名字,无意间发现了某项专利竟然挂着自己的名字,遂点进去看了下,竟是自己在本科实验时做的工作,当时提出的理论设想被导师和师妹实现了,发了专利,竟然还把我的名字也挂上了。 感慨良多,又想到自己已经是研究生退学转行计算机快两年了,没想到两年的时间竟然能发生这么多的事情,有时也不禁会想,如果当初留在原来的学校继续读研而不是非得去一个985,恐怕命运又将把我带向另一条路了,于是写下了这篇半叙半议的文字,现在看来,也可以当成对过去两年的一点总结吧。

当你高强度的搜索自己的名字时:浏览器里藏着你过去的历史

本来是打算github换一个名字的,因为用的是全名,且google一搜第一个就是我的主页,总觉得这样不太安全,万一哪天也被开盒罚个50w怎么办(背景承德程序员因远程工作被罚50w)。

但突发奇想试了一下,如果浏览器搜的是中文会怎么样?

结果过去的种种皆在,曾经中二写的《简书》,现在再看根本读不下去了;还有毕业后投了两年经历了修改无数次后投的期刊,前段时间见刊,也成了记录的一部分。但后面我的经历,又觉得意义也不大了。 image

还有大学期间参加的种种活动,前两年是在新闻部写新闻,后面两年慢慢出现在新闻里(参加了各种项目玩),疫情期间在家没事干拍照参加摄影作品评选,后面大四考研录取之后参加乒乓球比赛..... 现在想想,真是一段轻松惬意的好时光啊。

另一个主题则是研究生与退学了。 浏览器里也在忠实的记录着我发生的一切,从最初的拟录取名单公布,到在自己学院的分享考研经验,到后面的退学,完整的记录着过去发生的一切。我想倘若有人想了解我的过往,上网一搜也大概能画一个流程图了。 image

当然,甚至还有不期而遇的小惊喜,搜到了一个有我参与的专利,有点疑惑,没记得参与过什么项目的啊,点进去一看:熟悉的老师们,还有师妹。原来导师悄悄把我的名字也放上去了,曾经努力的项目被人记得的感觉真好。

仔细看了一下,真挺不错的,在我毕业离开实验室后,师妹还有老师们把我们当初设想要做的想法,吹下的牛,都实现了,我当时在文献中看到的美国产品,他们现在已经做成了足够和它媲美的产品了。

【看到这还是很感慨,当时我临近毕业,成型的项目试验了多次怎么也达不到完美的效果,觉得要想做出来恐怕遥遥无期了,周老师当时还邀请我留下来读研继续做下去,我心想万一我两三年搞不出来呢。】今天得知大家做出来了,还是很兴奋的,我毕业的时候师妹才大二吧,也是差不多两年左右的时间,就做出了了不起的成果,向老师和师妹致敬。

两年的时间说长不长,说短也不短的。差不多两年前的这个时候,我刚迎来我研究生的第一个学期,但差不多也是这个时候左右,退学的想法最强烈了。读了研之后,我发现自己迷失了。我找不到了自己本科时候要追求的东西了,那种一想到要去做我的项目就会兴奋的点了。

当时本科二年级和三年级的时候,读英文的文献就像看小说一样,看了一篇又一篇,基本上把这个领域国外的论文看了个遍;但读研之后,或许是当时太着急了,或许是自己给自己太多压力了,总是进入不了状态,又天天被师兄安排的各种琐事所困,当时最大的怨恨大概是想:为什么我付出了那么多的努力,考了那么高的分,来了这就只能天天种小麦? 那这样还不如回我原来的学校继续搞我的项目?

大约是在我退学几个月后,因为需要调档案的原因,不得不跟之前一个关系很好的老师打电话,老师很是惋惜,对我说,你啊你,就是太认真了,太认死理了,你为什么不退学之前找我们聊聊呢......

大概是太年少轻狂、太心高气傲了?可我从考研到后来一直被灌输的就是那个理念,一直在不断地被追问:你的创新点是什么?你的研究意义是什么?你为什么要做这个?

于是回到现实中,我发现我找不到了我读研的研究意义了,更找不到生活的意义了,就像是某种价值观的格格不入,命运齿轮的严重错位。

在趁着我这台机器彻底失控之前,我退学了。 想起之前看到的一句话,读研只有录取和毕业的那一瞬间是快乐的。 但我体验到了不同的快乐,出成绩时看到自己380多分排第一,就兴奋到上了天,复试结束拿到录取通知书的时候又感受到了一次快乐,当时心想,期待的研究生生活就要来了。 剩下的一次轻松,就是退学时回家的路上了。但当时看着两个好朋友送我离开车站,心想着也许以后很难再见到了,心里还是很难过。这次短暂的读研之旅,遇到了两个非常好的朋友算是最大的收获了。

退学后的日子并不像想象中的顺利,少了许多内心的挣扎的同时,又增添了一些“非得要证明自己当初退学的选择没有错”的压力。

从一个二本,考上了985研究生,又退学,重新回到了一个二本学校,不知道该怎么论了,也许从外人的眼里,这怎么也有点脑袋抽了,想不明白为什么要这么做。过去某段时间,我也在跟内心作斗争,一定要怎样怎样,向所有人证明自己的选择没有错。

这很挣扎,感觉就像每天背着枷锁在生活。后来我慢慢想明白了,我想起大二上《武侠风景》课上老师讲金庸小说里的一句话:那都是很好很好的,可是我偏不喜歡。

我用不着向别人证明自己了,别人也没那么在意你的选择,没有后悔离开那里,应该就是对自己当初内心选择最好的证明了。

另一个原因可能在于,太容易得到的,反而不容易珍惜了? 虽然我备考的过程是很艰辛的,但是在我上岸之后,截至到今年24这一届,我又连续辅导了三届的考生。差不多每一年,我出的模拟题,都能猜到西农的原题至少60%左右了(22年甚至差不多到了80%),剩下的知识点猜不到原题也基本看一眼就知道是考的什么了。

大概是这种心理也起到了一点作用吧。

今年秋招一开始找工作的时候特别焦虑,一度不知道自己要干什么了。有一个Hr问我,你应该问问自己到底擅长什么,然后去做。

我当时想的是,我擅长考试啊,又擅长辅导别人,我自己考第一也辅导过别人考第一,我知道从学不会到学会的过程是什么样的,我知道他们在考什么。

Hr说,那你就去做这个啊,你应该开辅导机构的,就做你擅长的就好了。

可我心理总迈不过这个槛,不敢跟学生讲我退学了,不敢面对学生的疑惑。

但或许另一个槛在于,我总不能一直和那个学校原来的专业打交道吧,那我退学的意义和初衷又在哪里呢?

现在我想我又找到了自己的方向了,虽说现在已经是计算机专业就业的寒冬了,但另一方面大语言模型各种AI的涌现,又在孕育着各种的机会。

我想起两年前研究生复试的时候,老师问我,你这个高岭土喷到室外应用的效果如何时,我回答说目前还只是在室内的理论性验证,将来我们实验室的研究方向是室外领域。

现在,我们室外也可以了。

                                                                                                                                                                    写于2023年12.30
]]>
2024-02-28T04:36:24+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/83Java的一些基础知识点复习2026-02-09T01:54:48.611777+00:00方法的重载 overload

定义:一个类中方法名字相同,但是参数列表不同的方法。

注意:重载的方法,就是不同的方法,只是名称相同而已。 image

  • 形参的数量不同
  • 形参的类型不同 均可以构成方法的重载(也就是说是不同的方法)
    static void add(){
        
    }
    static void add(int a,int b)
    {
        System.out.println(a+b);
    }
    static void add(double a,double b)
    {
        System.out.println(a+b);
    }

当返回值不同时,但形参形同时,无法构成

   static int add(int a,int b,int c){
        System.out.println(a+b+c);
        return a+b+c;
    }
    static double add(int a,int b,int c){
        System.out.println(a+b+c);
        return a+b+c;
    }

方法的调用机制

  • 当程序执行到方法时,会在栈中单独开一个空间(栈空间)
  • 执行完毕,或者执行到return语句后,就会返回到 调用方法的地方
  • 同理,main方法栈执行完毕之后,栈空间也会回收,整个程序退出

image

方法的传参

  • 基本数据类型传参:形参不影响实参的传递(本质上栈中main方法区与swap方法区是两个区,两者不会相互影响)
  • 引用数据类型传参:传递过程传递的其实是地址,所以栈方法指向的空间和main主方法指向的空间是一致的 image

可变参数

Java中允许同一个类中多个同名 同功能但是参数个数不同的方法,封装成一个方法。

==>对方法重载的一种优化,不用因为参数个数不同而写多个方法了 image

可以把传入的参数nums 视为数组

    public int getSum(int... nums) {
        System.out.println("参数的个数" + nums.length);
        int tolNums = 0;
        for (int i = 0; i < nums.length; i++) {

            tolNums += nums[i];
        }
        return tolNums;
    }
  • 可以直接传递一个数组
  • 可变参数可以和普通类型参数放在一起传参,但是必须保证可变参数放在最后
  • 一个形参列表只允许出现一个可变参数,不可以多个可变参数一块。
]]>
2024-02-28T03:49:14+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/82哈佛大学cs50x-cs50-full-stack全栈项目学习记录2026-02-09T01:54:48.762057+00:00项目仓库地址:https://github.com/QiYongchuan/cs50-full-stack

]]>
2024-02-24T13:53:39+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/81JavaScript Full Course - Beginner to Pro2026-02-09T01:54:48.907312+00:00Function why we use function? let us reuse code

return与parameter的区别 image

存储在对象中的函数,也称为方法。 比如:console是对象,console.log则是方法(function)

内置对象 Json与localStorage

image

]]>
2024-02-22T06:10:35+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/80Django学习记录:如何创建一个项目2026-02-09T01:54:49.089918+00:00Django

一、创建项目的流程

1.创建整体项目-项目名称

django-admin startproject airline

2.进入项目文件夹,创建相应的应用

cd airline

python manage.py startapp flights

3.创建完成后,在项目文件夹的setting中增加新建好的应用

--airline
 --settings.py

# Application definition

INSTALLED_APPS = [
    "flights",
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
]

4.在项目文件夹的urls.py中设置页面的跳转逻辑

--airline
 --urls.py

from django.contrib import admin
from django.urls import include,path

urlpatterns = [
    path("admin/", admin.site.urls),
    path("flights/",include("flights.urls"))
]


5.在创建的应用文件夹(flights)中,创建urls.py

from django.urls import path

from . import views

urlpatterns = []

  1. models.py

用来控制SQL,在django中

# Create your models here.

class Flight(models.Model):
  origin = models.CharField(max_length=64)
  destination = models.CharField(max_length=64)
  duration = models.IntegerField()

在命令行中:

python manage.py makemigrations


显示:
Migrations for 'flights':
  flights\migrations\0001_initial.py
    - Create model Flight

  其中生成的文件中0001——initial.py描述的就是Django如何操控数据库的

   operations = [
        migrations.CreateModel(
            name="Flight",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("origin", models.CharField(max_length=64)),
                ("destination", models.CharField(max_length=64)),
                ("duration", models.IntegerField()),
            ],
        ),
    ]



继续敲命令

python manage.py migrate
当查看文件夹时,db.sqlite3创建成功

继续输命令:

python manage.py shell

可以用python的语法直接操控数据库

from flights.models import Flight
f = Flight(origin = "New York",destination="London",duration=415)
f.save()

上述命令相当于插入

Flight.objects.all()
<QuerySet [<Flight: Flight object (1)>]>

// 查询命令


可以在python的命令行中,就相当于可以在python的代码中执行。

7.当创建好项目想要启动运行时,在命令行

python  manage.py runserver

8.superuser django设置的admin用户,可以直接通过这部分网页操控数据库和model层

python manage.py createsuperuser

image

]]>
2024-02-04T08:07:06+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/79python中的数据类型2026-02-09T01:54:49.250005+00:00python中的数据结构:

Data stractures

  • list - sequences of mutable values //列表可以改变[]
  • tuple - sequence of immutable values //元组不可改变()
  • set - collection of unique values //集合不可以重复()
  • dict - collection of key-value pairs // 字典键值对{}

list 列表

# define a list of names
names = ["harry","Ron","heri","Ginny"]

dic 字典


# define a dic
houses = {"harry":"Gry","Draco":"Sly"}
houses['Herminoe'] = "Gry"

tuble 元组

coordinateX = 10.0
coordinateY = 20.0

coordinate = (10.0,20,0)

#即相当于直接可以用一个变量来代表两个变量

set


#create an empty set

s = set() 

# add elements

s.add(1)
s.add(2)
s.add(3)
s.add(4)
s.add(4)

s.remove(1)
print(s)   // 234

]]>
2024-02-03T18:08:16+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/78Python中面向对象编程2026-02-09T01:54:49.407276+00:00Python中的面向对象
class Point():
  def __init__(self,input1,input2):
      self.x = input1
      self.y = input2


p = Point(2,8)

print(p)
print(p.x)
print(p.y)


class Flight():
   def __init__(self,capacity):
      self.capacity = capacity
      self.passagers = []

   def add_passagers(self,name):
      if not self.open_seats():
        return False
      self.passagers.append(name)
      return True 
   def open_seats(self):
      return self.capacity - len(self.passagers)
   
flight = Flight(3)

print(f"openseats is {flight.open_seats}")


names = ["harry","Ron","heri","Ginny"]

for person in names:
   success = flight.add_passagers(person)
   if success:
      print(f"successful add {person} in flight")
else:
      print(f"{person} is not add in flight")

面向对象:

概念:

  • 类是对对象的抽象描述,对象是类的实例化。
  • 类定义了对象应该具有的属性和行为。

在面向对象编程中,类和对象之间的关系可以描述为类是对象的模板或蓝图,而对象是类的实例化。类是对一类对象的抽象描述,定义了对象应该具有的属性和行为。而对象则是类的具体实例,具体表现出类所定义的特征和行为。类可以看作是对象的集合,而对象是类的实例。对象是类的具体实例,而类则定义了对象的共同特征和行为。

扩展: 在面向对象编程中,如何通过类和对象的关系实现代码的重用和模块化?

在面向对象编程中,通过类和对象的关系可以实现代码的重用和模块化。具体来说,可以通过以下方式实现:

  1. 类的定义和实例化:首先,定义一个类,该类包含了一组属性和方法,描述了某一类对象的特征和行为。然后,通过实例化该类,创建具体的对象,这样就可以重用类中定义的属性和方法。

  2. 继承:通过继承,一个类可以从另一个类继承属性和方法。这样,子类就可以重用父类的代码,并且可以在此基础上进行扩展和修改,实现代码的重用和模块化。

  3. 多态:多态允许不同类的对象对同一消息做出响应,这样就可以使用统一的接口来操作不同类的对象,从而实现代码的模块化和灵活性。

通过这些方式,可以将代码组织成模块化的结构,实现代码的重用和扩展。这种面向对象的设计方法有助于提高代码的可维护性和可扩展性,同时也提高了代码的复用程度。

代码实例:类的继承和多态的例子

# 定义一个动物类
class Animal:
    def __init__(self, name):
        self.name = name

    def make_sound(self):
        pass

# 定义一个狗类,继承自动物类
class Dog(Animal):
    def make_sound(self):
        print("汪汪汪!")

# 定义一个猫类,继承自动物类
class Cat(Animal):
    def make_sound(self):
        print("喵喵喵!")

# 多态的应用
def animal_make_sound(animal):
    animal.make_sound()

# 创建一个狗对象和一个猫对象
dog = Dog("旺财")
cat = Cat("咪咪")

# 调用多态的函数,传入不同的动物对象
animal_make_sound(dog)  # 输出:汪汪汪!
animal_make_sound(cat)  # 输出:喵喵喵!

在这个例子中,Animal类是一个基类,定义了动物的基本特征和行为。然后,Dog类和Cat类分别继承了Animal类,重写了make_sound方法,实现了多态。最后,通过animal_make_sound函数,传入不同的动物对象,实现了对不同动物对象的统一操作。

]]>
2024-02-03T18:05:25+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/77Git-在已经建好的仓库中,将其中一部分文件夹单独上传到新的仓库中2026-02-09T01:54:49.566752+00:00

使用场景:是在cs50的学习中,创建了一个大的仓库,记录不同章节的学习代码和笔记。但遇到了一个情况是,学校的安排上:CI/CD中,单独这一块是一个仓库的。就需要将这一部分的代码单独上传到一个新的仓库了,问题是,这部分已经处于一个仓库中了,还能再新上传吗?

答案是,可以; 同样的场景是,大的项目中,每一个独立的小项目,对应一个独立的仓库,进行单独的版本控制。

过程其实跟**“将一个已经存在的仓库上传到你建立的仓库”**的流程是一样的。

在GitHub新建仓库:airline

image

…or push an existing repository from the command line

git remote add origin https://github.com/QiYongchuan/airline.git
git branch -M main
git push -u origin main

在你的本地,找到你想上传的文件夹: 再一次初始化仓库 命令行中:

git init

然后

git remote add origin https://github.com/QiYongchuan/airline.git   //跟新建的远程仓库关联

注意:此时需要你再一次的git add . 和git commit

然后按流程:

git branch -M main
git push -u origin main

就可以了,实现了在原来大仓库下,新建一个小的独立仓库。

同时,你可能担心:这会不会对我原来的大仓库造成什么影响呢? 会不会引起更多的麻烦? 完全不会。

对于您原来的仓库,这个操作不会有直接的影响。您将现有项目文件夹上传到新创建的仓库中,不会影响原来的仓库或其历史记录。原来的仓库将保持不变,您可以继续在原来的仓库中进行开发和维护。

新创建的仓库将成为一个独立的仓库,其中包含您上传的项目文件夹的副本。这意味着您可以在新仓库中进行独立的开发和版本控制,而不会影响原来的仓库。

如果您希望在原来的仓库中保留与新仓库相同的历史记录,您可以考虑使用分支或者合并操作来保持两个仓库的历史记录同步。但是,这取决于您的具体需求和项目结构。

总的来说,将现有项目文件夹上传到新创建的仓库中,不会直接影响原来的仓库,原来的仓库将保持不变。

]]>
2024-02-01T17:18:40+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/76实现无限滚动遇到的坑—document.body.offsetHeight 的值一直不变?2026-02-09T01:54:49.724584+00:00实现无限滚动遇到的坑 --css样式设置

遇到的最大的问题是,

      if (window.innerHeight + window.scrollY > document.body.offsetHeight && !isLoading) {
        isLoading = true; // 设置标志变量为true,表示加载操作开始
        load();
        console.log('开始加载');
        console.log(window.innerHeight, window.scrollY, document.body.offsetHeight);

在第一次到达底部成功加载后,就会无限次的重复加载,而不是像判断条件写的那样,等window.innerHeight + window.scrollY > document.body.offsetHeight时,再进行请求加载。

打印后发现数值有问题:

document.body.offsetHeight 的值只有80?

一度以为是属性用错了或者这个属性发生了变化,换用document.documentElement.scrollHeight 后,发现问题没有解决,是96px

回头发现,这个80的数值,是一开始设置的div的数值

这里:

正好看到有一篇文章中,offsetHeight的数值不变的

Javascript offsetHeight not updating from initial rendered height?

他的原因是:

FFS! Found it... I had the height set to 100% on the global html element :

html { height: 100%; // Arrrrggghhhh! width: 100%; }

已经写死了html,也就是document的值。

我于是检查这一块的东西,发现确实有问题:

  // Add a new post with given contents to DOM
      function add_post(contents) {
        // Create new post
        const post = document.createElement('div');
        post.className = 'post';
        post.innerHTML = contents;

        // Add post to DOM
        document.querySelector('#posts').append(post)
      }

这是我请求数据后插入的内容,每次插入一个 名为post类的元素

但是我页面中的是id = posts 的div,我一开始设置的也是这个的高度,正好是80px,而在我加载页面的过程中,document的高度也始终是80px;

我应该设置的是每次新加入进来的元素post的高度,而不是post外面的盒子posts的高度,这样高度就写死了,而不是随着内部内容的增加而增加了。

也就是:

  .post {
      height: 80px;
      background: green;
      width: 200px;
      margin-bottom: 5px;

    }

问题解决。

]]>
2024-01-30T10:35:17+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/75响应式页面实现的几种方式2026-02-09T01:54:49.879225+00:00Responsive Desive
  • viewport
  • Media Queries
  • Flexbox
  • Grids

Viewport

<meta name="viewport" content="width=device-width,initial-scale = 1.0"

Media Query

    @media (min-width:600px) {
      body {
        background-color: bisque;
      }
    }

    @media (max-width:599px) {
      body {
        background-color: brown;

      }

      h1 {
        text-align: center;
      }
    }

Flexbox

<style>
    #container {
      display: flex;
      margin: auto;
    }

    #container>div {
      background-color: springgreen;
      width: 200px;
      padding: 10px;
      margin: 10px;
      font-size: 20px;
    }
  </style>

Library -bootstrap

目前使用的三种方式:
1.一行就12等份,通过设置每一列的份额来划分,但这种情况下是随屏幕大小变化等比例变化的
 <div class="row">
      <div class="col-6">第一列</div>
      <div class="col-6">第二列</div>
    </div>

2.在此基础上,可以设置不同列的比例,实现宽度的不相同
 <div class="row">
      <div class="col-3">This is a example</div>
      <div class="col-3">bootstrap一行一共有12列的份额</div>
      <div class="col-6">等分份额之后,就可以响应式变化了或者通过设定屏幕大小实现变化</div>

    </div>

 3.通过设置不同的屏幕下,分列的方式,实现真正的响应式,随着屏幕变化,发生变化

     <div class="row">

      <div class="col-lg-3 col-sm-6"> 第一行:第1列</div>
      <div class="col-lg-3 col-sm-6"> 第一行:第2列</div>

      <div class="col-lg-3 col-sm-6"> 第一行:第3列</div>
      <div class="col-lg-3 col-sm-6"> 第一行:第4列</div>

    </div>

]]>
2024-01-16T02:14:59+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/74SCSS-增加变量的CSS2026-02-09T01:54:50.033185+00:00scss - 增加变量的css形式

1.为css增加变量,让其更好的修改重复的属性,更简洁的代码

$color:red;

$size:30px;
ul{
  
    font-size: $size;
    color: $color;
  
}

ol{
  font-size: $size;
    color: $color;
}

2.简化计算权重,精准控制页面上的元素

// 只需要根据结构在scss中写即可,会自动编译成css文件

使用方法注意:

image

如果想随时更新编译编译:使用参数--w

sass --watch variables.scss variables.css

2.引用时,需要使用编译后形成的文件css文件,而不是scss,因为浏览器无法识别scss。

  <link rel="stylesheet" href="nesting.css">

3.封装继承,将相同的属性封装,使用时继承

%message{
  font-family: sans-serif;
  font-size: 18px;
  font-weight: bold;
  border: 1px solid black;
  padding: 20px;
  margin: 20px;
}

.success{
  @extend %message;
  background-color: green;
}

.error{
  @extend %message;
  background-color: red;
}

.good{
  @extend %message;
  background-color: cadetblue;
  font-size: 30px;
}
]]>
2024-01-16T02:12:29+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/73 Git 的简单用法-cs50x2026-02-09T01:54:50.192866+00:00Git 的简单用法

keep track of changes to code

  • Synchronizes code between diffenent people
  • Test changes to code without losing the original

github and git

github is a website that stores git respositories.

git clone

从远程仓库下载到自己本地电脑

git add /git commit

git add 是将变化添加到保存区

git commit 是提交

git commit -am "message" =>两个命令结合

git push

将本地仓库及变化推到远程(github)的仓库中

git pull

与git push操作相反,将远程仓库最新的代码,从github上pull下来,同步到本地成最新的;

当远程的代码与本地代码有冲突时,直接将本地代码是无法push到远程的,需要先pull下来,同步,然后再push上去。

Merge Conflicts

image image


当遇到冲突时,编译器会显示冲突的地方:

<<<<<< HEAD

在此之间是你的版本

=========

在这里是别人的版本

 >>>>> d4e3a8002bfc905

** 你需要做的是判断好要哪一个版本? 单纯要你的,还是别人的,还是两者的结合? **
然后把出现的提示部分删掉,重新add commit,再push上去。

git log

查看历史提交记录

git reset

- git reset --hard <commit>
- git reset --hard origin/master

回退到某一次提交的状态

Branching

我们开发的时候有时候不是线性进行的,同时处理多个新功能时,我们开启新的分支。

git branch

git checkout -b feature  //创建新的分支并跳转过去

git checkout main  //切换分支


git merge feature   // 将feature分支上的内容 merge到当前分支

当对同一行代码修改后,会产生merge **conflicts*


解决冲突的方式同上述所示的pull时发生冲突,修改之后,重新提交。

fork

将开源代码建立分支到自己github,然后当自己的贡献达到一定时,可以请求poll request到原来的仓库主分支中。 (理解成更大的协作)

Github pages

生成一个网址,可以部署自己的静态页面

]]>
2024-01-16T02:09:31+00:00
https://github.com/QiYongchuan/MyGitBlog/issues/722024一些完成的小事情2026-02-09T01:54:50.339367+00:00
  • 1.修好了之前的电脑,找到了老照片
  • 2.完成了对键盘的清洁,现在和新的一样了、
  • 3.两门实训课的成绩出来了,JavaEE的课竟然拿到了全班最高的分数,对得起敲了一夜的代码了
  • ]]>
    2024-01-14T08:41:51+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/71有趣的文章2026-02-09T01:54:50.529542+00:00 文章 链接 日期 备注 一个独立创造者的5年 https://hawstein.com/2023/07/12/five-years-of-an-indie-hacker/ 2024.1.11 独立开发之路 两岸猿声啼不住,轻舟已过万重山 https://thiscute.world/posts/a-quarter-of-the-way-through-life/ 2024.2.1 成长不是线性的,why not me? How to Do Great Work https://www.paulgraham.com/greatwork.html 2024.2.1 英文原版 【实用指南】Paul Graham 两万字新文:如何取得杰出成就 https://mp.weixin.qq.com/s/31iL-Kbs4KrqpgrERVRNzQ 2024.2.1 好奇心、快乐和做出令人印象深刻的事情的欲望 阮一峰博客 https://www.ruanyifeng.com/blog/ 2024.2.3 常读常新 时间管理七句话 https://www.ruanyifeng.com/blog/2016/05/time-management.html 2024.2.4 不要浪费早上宝贵时间 愧怍 https://kuizuo.cn/ 2024.3.30 有趣的人 ]]>2024-01-11T11:10:18+00:00https://github.com/QiYongchuan/MyGitBlog/issues/69GPTs的学习记录2026-02-09T01:54:50.668546+00:00背景:尝试创建GPTs的时候,离不开action的API

    image image

    来源:https://twitter.com/Yangyixxxx/status/1744196785227362744

    如何在action中使用API?

    1.基础用法:

    https://waytoagi.feishu.cn/wiki/IawKwd3IgiHbezkB1KrcAFPRnbf?chunked=false&table=ldxAINVk0W6W2ytB

    以及更多的自定义API

    image

    这里相当于是增强了GPT的功能了,比如联网的API,比gpt自带的联网功能更准确;以及可以解析视频的api,又可以干更多的事情; 这部分目前做的比较全的是gipier,目前已经集成了很多API了。 image https://gapier.com/

    发邮件-有没有打电话或者语音模仿明星的声音,叫你起床的呢? AI智能男女友?

    刚看到一个:可以用这个来实现打电话! https://twitter.com/i/bookmarks?post_id=1743472077439730049 https://t.co/xy37hSFLuI image

    另一个教程网站:

    image https://mojju.com/blog/how-to-create-complex-gpts-with-api-actions-and-a-node-js-backend

    image

    ]]>
    2024-01-08T09:39:20+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/682024找工作的尝试2026-02-09T01:54:50.852328+00:00仅以本帖持续记录找工作的过程。 ]]>2024-01-08T08:47:35+00:00https://github.com/QiYongchuan/MyGitBlog/issues/67在挂梯子的情况下pip install xx 失败以及git push失败的解决方案(443以及10087等)2026-02-09T01:54:50.998530+00:00这个问题算是一个长期问题了,常见的症状表现在: image

    在连接梯子(VPN)之后,pip install xx,无法安装; 断开梯子之后,安装成功;

    同样,在本地写完代码上传github的远程仓库时,使用git push, 连接梯子的情况下,无法push上去, 断开梯子,就可以push上去。

    之前的解决的方法,就是不停的开/关梯子。

    现在因为更加频繁的使用Chatgpt,开关梯子需要更加频繁了,不得不解决这个问题。

    一开始,照例先问gpt,但是回答不好。(之前应该也是问过的,没解决好)

    大概是因为chatgpt它老家那块的人遇不到这么复杂的网络情况吧,又是翻墙又是啥的。

    所以这防火墙问题,还得去找CSDN,一搜果然有大量的案例,不愧是修建长城的国家:)

    问题分两个方案解决: 1.解决pip安装问题,本质是因为换源之后连接国内的镜像网站,检测到有代理,连接不上; 所以解决的方法就是:设置电脑的代理,把换源的网站增加到表中,就设置成了不进行代理。 即: image

    这样,在命令行pip install xx 的时候,就可以愉快的下载包了,与之前每一次下载都断开梯子的原理是一样的,这次是我们手动将这个网站设置成不代理了。

    参考:解决开着代理情况下pip或魔搭下载失败

    2.解决git push 时超时问题

    这个原因也是网络相关,但具体是因为挂了梯子还是没挂梯子,我现在还不是很确定。

    一般是,挂梯子的时候,push不上去,提示443以及代理问题; 当断开梯子时,可以push上去。

    按照之前的思路,那我直接把github的网址也加到我的电脑-代理管理中好了,直接所有的通过该网址的请求都不要走代理了,问题不就解决了?

    但我们知道,一是github是国外的网址,裸连的情况下,时好时坏,也就是说,裸连情况,我们有时可以直接连上,push成功,有时也会push不成功。 二,在挂梯子的情况下,又会出现因为梯子代理的原因,也连不上。

    问题解决的办法是:

    查询说的是,没有设置git的全局代理,这一步是设置全局代理 ` git config --global http.proxy http://127.0.0.1:7890

    git config --global https.proxy http://127.0.0.1:7890 ` image dui'ying

    对应上次代理设置里你自己的端口及地址

    同样,看到了之前熟悉的解决思路:

    (不过在资料中讲的是,取消上面设置git 全局代理时的设置)

    ` 取消全局代理: git config --global --unset http.proxy

    git config --global --unset https.proxy

    ` 这跟我们上面讲到的,当梯子断开时,能成功连接到远程仓库,成功push到,似乎是做了同样的事情,断开梯子。

    之前同样的问题,解决方法:Git push时遇到10054问题 #24

    ]]>
    2024-01-07T13:13:56+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/66算法学习初体验:慢慢来,原来我也可以2026-02-09T01:54:51.170569+00:00算法考试考完了,走出考场后,一片哀鸿遍野,都在担心会不会挂科。

    我还好,虽说并没有所有的题都有把握答对,但我应该不至于挂科的。虽说也忘了好多本应该写上的题目,但也没有非得考多少分的目标,反而轻松心态很放平,考完走出教室,心里倒是很放松以及有种抑制不住的高兴。

    算法,原来也不少那么难啊,原来我也可以的。

    大概是想表达:考试结束不是结束,是学习的新开始?(yes?👍: 👎 )

    但愿但愿。

    但目前还是后话,可能这次算法之旅,带来的还是些许的信心吧。

    在此之前,刚入学时接触到算法相关的是数据结构这么课,当时学的稀里糊涂的,完全不知道是干什么的,也是因为当时完全没有语言基础,老师讲半天,我们搞不懂”左指针、右指针“,又是”左孩子、右孩子的“,再加上老师有点口语,总是出戏听成”左鞋子、右鞋子“的。

    当时基础差到,甚至被人嘲笑的最差的”蛮力算法“,都写不出来,看到了半天也不懂在干什么。

    再加上当时号上有一网友,经常发自己算法多厉害,小学奥数xx省第几这种话题,一对比,瞬间觉得,算法不是我等凡夫俗子能学明白的。

    遂,对算法敬而远之。

    又过了大概一年,到了现在,考试考算法,不得不再次硬着头皮重新学了。

    相比之前的基础,这次的基础大概在能看懂for循环了,能写出简单的蛮力算法了,这在刚掌握”算法“的我眼中,蛮力可真好用啊。 (或者,用大佬的话讲,心智负担低?)

    但没办法啊,考试又不会光考你蛮力算法。

    于是又学了分治算法,分治真好玩啊,二分搜索、合并排序、快速排序等等。

    印象最深的是看B站一个up讲的,”分治,你们早就会了,寒假作业,你们几个人把所有作业分成相同的份数,每个人做一小份,最后再合起来,这不就是分治法嘛。“

    瞬间明白了,好的例子总是让人印象深刻,把复杂的东西变简单了。

    后面又接触了动态规划、贪心算法、分支限界法。

    以前想都不敢想的算法,投入了精力和时间后,慢慢的也能明白了过来。

    其中最大的感悟是,有些内容如果一下子掌握不了,一是投入的时间和精力不够;二是前置知识的问题,很多东西看了半天不明白,其实是之前的某些概念不懂,就需要先学会A,再来学B;如果A也看了半天,就是不理解,那就需要再去看A的前置知识。 三可能是好的工具,更重要。

    没有学不会的人,也没有学不会的东西,只是还没有找打合适的路(比如知识的顺序,以及好的教程)。

    在没有学会之前,耐心就很重要了。即在没有找到合适的方法和资料之前,只有多尝试,才能慢慢找到合适的。

    所有,就得保持耐心,不要太早放弃。

    另一点的话,学习过程重要的一点是自己的身体状态,精力管理。如果状态不好(指饿了、前一天熬夜困了/学习前刷了太多无关的东西浪费了大量的精力和注意力了),那就很难保持耐心了,很难坐的住一直学到有所突破了。

    ]]>
    2024-01-07T08:31:51+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/65git远程分支:如何将本地分支与远程分支相关联2026-02-09T01:54:51.321053+00:00image

    ]]>
    2024-01-06T15:03:26+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/64GitHubPoster项目折腾记录:withings-sync 依赖下载失败到网络问题2026-02-09T01:54:51.486383+00:00在安装过程中遇到了几个问题: 1.withings-sync 依赖的安装问题上:withings-sync 安装失败的原因是 UnicodeDecodeError,并提供了一系列可能的解决方案,最终通过手动下载、修改 setup.py 中的编码设置,并重新安装成功。 原因可能是编码方式设置问题?

    image

    2.安装成功之后,依然从远程仓库下载其余的依赖,用不上手动下载的依赖:

    手动关闭了 image

    3.但是关闭之后,遇到了有些依赖仍然需要安装,但是还没有从远程安装下来 ==> 手动pip install xxx 手动安装了几个模块

    4.运行项目:

    成功了,但是在运行了四次尝试换一些参数后,又一直开始报错无法生成了 image image

    之后的报错信息:

    无论是开梯子还是关闭梯子,均无法再连上了。

    image

    image

    5.后续:又成功了 在刚刚整理报错信息时,发现之前即使成功生成的记录里,也提示了 image 有一个依赖没有装,但本着能跑就不动的原则没去管。 刚才一直不行,又把这个依赖装了一下,结果现在又成功了。 image

    后后续:并不是依赖的问题,应该是网络的原因。 在继续增加参数后,又出现了之前的问题,无论是关了梯子还是开了梯子,都是显示997或者443

    解决办法: 关了虚拟环境又重新进去了一遍后,重新请求可以了,而且修改参数后再请求也可以一直连接了。 但应该不是虚拟环境的原因?

    image

    后续考虑:如何把下载生成的图片动态插入到博客页?

    ]]>
    2024-01-04T17:25:19+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/63朋友信息2026-02-09T01:54:51.657469+00:00| 新朋友的名字 | 新朋友的链接 | 新朋友的描述 |

    ]]>
    2024-01-04T11:01:35+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/61博客功能完善计划2026-02-09T01:54:51.813758+00:00
  • 增加友链模块
  • 增加收藏的文章模块
  • 增加每日单词-句子-图片模块
  • 引入自动生成svg的github贡献
  • ]]>
    2024-01-04T10:10:21+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/60转瞬即逝的小想法2026-02-09T01:54:51.964020+00:00

    仅作为一个空间,记下某一瞬间想到的点子

    ]]>
    2024-01-04T05:31:59+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/592024周记2026-02-09T01:54:52.118739+00:002024计划要做的小事
    • 在1点之前上床睡觉
    • 每天早上醒来打开经济学人看1分钟
    • 记录下想法来
    ]]>
    2023-12-31T17:37:56+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/582023年年度总结2026-02-09T01:54:52.273686+00:00第一次打算好好复盘一下一年,写一个年终总结的,就还是先简单写一下,毕竟完成比完美更重要,大概很长一段时间读者也只有我一个人会看,所以,不重要,写下来就好。

    总的来说,这一年过的算是慢慢稳定下来的一年,回想22年,经历了研究生退学,然后上班进了招转培的公司,学不到东西算是及时止损交了近7k多离开,后无奈回家,实在找不到路了,最终找到一个学校重新读本科二学位,然后又是经历了封校一学期的22年下半年,之后便是突然的解封,狼狈的逃回女朋友那,便从12月初,一直待到了快1月底,这就算来到了2023年了。

    1月份,跨年时和女朋友在出租屋里打游戏,我看她玩《模拟人生》,一起听着网易云,那天的网易云音乐推荐的歌格外的好听,我甚至专门将那天的歌创建了一个歌单。

    e510c5ef2d744619b88298218024f89

    但更多是时候,她出差或者白天工作到很晚才回家,我自己过了一段漫长的独居生活,自由又孤独。这段期间看完了CS50的课,又接着刷了CS50W的课,同时因为我在考试前几天发烧,担心复习不完就办理了缓考(现在想想无比后悔,假期结束回来继续考试时题目超难,而我线上考试的同学几乎都考了85+),假期心里还是在担心考试的事情,结果就是学也学不下去,玩也玩不痛快了,陷入了无线的内耗中。

    当时也还在一直关注Chatgpt的事情,觉得是一个机会,当时眼睁睁的看着它先是在twitter上火了起来,又过了差不多一两个星期开始在国内社交媒体上火起来。当时看到有人提到一份赚钱的清单,有一项是给国内的人注册账号,我当时觉得,一是这太简单了,怎么会有人花钱买呢? 二是要是卖账号,应该也得需要我提供梯子吧,这下可有点危险了。

    结果,我看到几个月后有人光靠卖免费的账号(成本只有接码平台差不多0.5元),就赚了几百万。

    原来一是真有人买免费的号,这里面也有一个信息差,即使翻墙出来的也并不都是懂的搜索的;二是原来卖账号的只管卖账号就得了,梯子卖家让他们顾客自己想办法搞定。

    2月份,在家又刷到创建自己博客的视频了,于是,有了自己的第一版博客,基于hexo+GitHub的博客,但后面因为上传后的照片显示问题,渐渐弃用了它。 image

    后面又遇到了第二版,在twitter上刷到有大佬直接用Github的issue,结合自动化指令创建博客,觉得很酷,于是在4月,创建了我第二版博客,并用到了现在。今天打算写年度总结,回头看博客,看到那么多文章,以为创建了很久的,原来才是几个月前的事情。

    image

    3-6月:焦虑、自学、迷茫、与骑车

    image

    image

    也是正好赶上春天,天气刚刚好,于是在焦虑的时候骑了很多的车,一开始骑共享单车,后面一度想换一辆公路车,但说服自己,先一周骑够100公里就买,结果骑了70多公里天气转热,也迎来了考试周,遂放弃了。

    7月:在家学了一个月python,准备毕设的思路。

    期间跟着书基本签完了读研的时候买的一本书《笨方法学python》,期间尝试了一些好玩的东西。 image

    8月:整个8月特别焦虑,大概是因为8.1号的新西兰whv签证没抢到(虽说意料之中,但还是很迷茫了),又在那段时间刷了不少澳洲半工半读的视频,加好友问了几个怎么也得6万(其实如果当时算一下我手中的钱的话可能不那么焦虑了,当时自己手里就4万了),总之整个八月就被焦虑、焦躁所弥漫了,在家里呆着也是开始闹矛盾,想逃离家,于是还面试了一家外贸的实习。(结果也是挂了) 此外,表哥8月底结婚了,哥哥和舅舅似乎松了一口大气,剩下的就是几十年的房贷了。

    可能八月就做了两个有意义的事,和弟弟打war thunder 玩了差不多两百个小时,以及看《无耻之徒》。

    9-10月:兼职,准备攒钱去澳洲,后又参加秋招,拿了外贸的offer,面试非洲外派等。

    11月:停课一个月,搞了Chatgpt4.0,做毕设,写代码。 12月:疯狂补课上课的一个月,学了嵌入式,之前想做的东西感觉自己有能力做了,同时又涌现出了很多新的想法,重新编程。

    ]]>
    2023-12-31T13:11:22+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/57算法知识补充:递归与尾递归2026-02-09T01:54:52.433326+00:00image image image image image

    ]]>
    2023-12-31T08:08:11+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/562023读书总结:《丰乳肥臀》与《百年孤独》,关于魔幻现实主义的思考2026-02-09T01:54:52.582754+00:00_没有写读书年度总结的习惯,但是前几天微信读书自己生成了一个,看了下,今天相比去年,读书时间下降了56%,想了想,今年也就完完整整读了几本书,《丰乳肥臀》、《百年孤独》,其实还有一本《82年生的金智英》,但这本我不好写什评价,也不敢乱写,索性就先放下不表,等将来有了更深的感悟了再写也不迟。_

    下面是之前写的正文:

    2023年,大部分时间静不下心来,书坦白讲只读了大概两本书。

    一本是莫言的《丰乳肥臀》,剩下的一本是《百年孤独》。

    今年新读的就一本,《百年孤独》是不知道第几遍了。有意思的是,随着读的次数越来越多,我发现似乎我也快陷入到那个反复重复循环命名家族,反复重复某种命运的怪圈里了。

    晚年的少校把自己关在房间里,重复的制作小金鱼,融化,继续制作金鱼。我呢,也是反反复复的看同一本书,看奥雷米亚诺,看何塞阿尔卡迪诺,命运反反复复的重演。

    《丰乳肥臀》是我看的莫言的第一本小说,也是因为有人说莫言被称为“中国版的马尔克斯”,丰乳肥臀有人叫它中国版的《百年孤独》。

    十一假期在游乐场兼职的时候看完的,工作实在漫长,一站站一天,又没有地方充电,所以只能用超级省电模式偷偷看小说来打发时间。这种状态下反而静下心来了,完全沉浸在远在几千公里远的高密乡了。后来我甚至觉得,比起站了八天拿的那点工资,八天摸鱼看完的书可能更有价值和意义了。(难道是因为拿钱摸鱼看书的心理原因?)

    另一本也被誉为中国版的《百年孤独》的是陈忠实的《白鹿原》。我也很喜欢,相比于南美的马孔多,白鹿原总是更亲切一点的。

    但比起陕西的白鹿原,那离我家乡不到300公里的高密乡自然是更亲切了。书中的对话,甚至在脑海中都能立马用方言读出来。

    在读的过程中,也是可以时不时看到《百年孤独》的影子,以及联系到《白鹿原》中的情节。

    比起白鹿原,丰乳肥臀对于建国后的历史有了更多的涉及,很直白、沉重。 其实在看书的过程中我一直在思考一个问题,莫言的作品,人们说是魔幻现实主义,可是我看到的明明都是现实的东西啊,魔幻的地方在哪里呢?难道不应该是百年孤独里那种魔幻的情节才是嘛?像下了四年多的大雨了,一火车箱的人被拉走就没了,又是失眠症整日整日睡不着觉了……

    后来某天我看到说,百年孤独里所有的情节都是有对应的历史的,譬如拉走一火车人那里,对应着历史上残酷的大屠杀。

    整个《百年孤独》,也是一部南美的历史。

    不熟悉那片土地历史的人们,大概读了觉得魔幻,觉得有意思,就像是听另一个世界的故事,觉得仅仅只是作者的奇思妙想,下了四年多的大雨怎么可能是真的?火车拉走了一车厢的人,怎么可能就这样杀掉了……

    那我们的历史呢?

    对于不是生活在这片土地上的人们来说,会不会也同样觉得魔幻呢? 甚至即使是生活在这片土地上的人,也觉得魔幻吧。 这怎么可能是现实呢?

    我们没有活到久到已经记不得年龄的乌尔苏拉。

    此外,因为《形式与政策》老师还贱兮兮的表示,鼓励我们交纸质版的读书笔记,我本来不打算交的,但那两天完成了上面的记录,想着,干脆写一下吧,毕竟就简单抄一抄的事了。没成想,差不多好几年没怎么用笔写过大段文字了,写起字来还真费劲,手抖手发酸,真的没法跟双手键盘打字的速度相比啊。

    都什么年代了,还让人写纸质版的读书笔记。都什么年代了,还搞形式与政策,还让我们论证.....更加无力吐槽的一点是:室友是大二的,他们形式与政策的题目是,论中国经济发展的现状与前景 (老师想的也真周到,这题目要是让大四的写,简直杀人诛心了,自己找不到工作还得接着歌颂)

    e06a74f50bcfd88e7be67abb87ea48f ec0c31c1063476e346b67c2b0fb0de5 image

    ]]>
    2023-12-29T13:56:46+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/55issue中发帖子的图片无法显示问题2026-02-09T01:54:52.730906+00:00在issue中写文章,插进了图片,分享出去之后,文章可以正常显示,但是图片缺无法加载。

    发给朋友测试,无论是开代理还是没开代理,图片均无法加载。

    在csdn上搜相关问题时,基本上是在自己电脑端无法显示,原因是DNS污染。

    image 参考来源:解决Github无法显示图片以及README无法显示图片

    但我的问题显示不是这个,我的是自己端可以看到(手机登录点开这个issue也能加载成功),但是朋友访问时看不到。没有尝试修改自己的host,我在想即使这种方法真的可以的话,难道需要我让朋友为了能看到图片,也得修改自己电脑的host配置嘛?

    于是问了chatgpt,回答如下:

    image

    image

    image

    最终问题解决,原因是之前的帖子是写在了私人仓库里,供自己记一下的,后来想创建成公开的帖子,供我朋友参考的,图省事,直接将私有仓库的issue直接全文复制过来了。但是图片是存在私有仓库的,所以无法访问到,重新传了一次就好了。

    ]]>
    2023-12-29T13:11:05+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/54扫盲:科学上网2026-02-09T01:54:52.898015+00:00【2025.10.29更新】 增加奶昔机场说明

    【2025.02.19更新】

    • 重要! EFCloud目前服务停止更新,不建议继续使用了。

    • 可优先考虑使用SaKuraCat

    小白零基础科学上网,最简单的方式,一键导入。

    2024.10.11 更新整理 | 名称 | 链接 | 部分套餐| 备注| | -- | -- | -- | --| | 魔戒| https://www.mojie.cyou/#/register?code=057Ybq9K | 1元/2G/不限时、14.9/130G/不限时 等 | 一次性购买,各种大小流量包,划算、稳定,最初22年开始用至今稳定 |
    |SaKuraCat | https://sakuracat-003.com/user/#/register?code=JRlr1nrR| 3.8元/10G/月、9.8元/20G/不限时,等多种套餐|非常稳定,自22年开始用,套餐稳定性与灵活性均可,下图详细查看,目前最推荐使用,近期延迟非常低| | EFCloud | * | 25元/100G/不限时、20元/500G/月付|停止维护 |
    | nexitally | https://naiixi.com/signupbyemail.aspx?MemberCode=c2858c1edee64d8fb576a66679b877e920250622192742|117元/月 500G| 贵有贵的道理,超稳定,几乎翻墙无感,低延迟 |

    软件:目前上述均支持一键导入clash,非常方便,手机端EFCloud官网也有对应的clash版本,一键导入或者订阅均可; 或者使用问题可留言交流,科学上网。

    1.魔戒

    主打一次性购买,不限时间,各种大小流量包,很划算,可直接一次性购买大流量套餐,也可作为备用梯子(防止其余套餐过期之后无法登录外网续费)

    备注:还算稳定,最初22年我就是用的这家,至今稳定。

    image

    2.SaKuraCat

    套餐组合最多,可灵活选择,既有按时间付的,也有按量付的,可灵活选择。

    套餐稳定性与灵活性均可。

    image image

    1. EFCloud

    最新,强烈推荐,稳定,优质,量大,速度快,chatGPT,油管等流畅使用。

    既有按量,又有按周期付费; 25元/100G (不限时间) 20元月付/500G 10元/8元 月付 均可

    目前本人主力梯子

    另一优势是电脑端、手机端订阅之后,可以同步更新,只要一次导入之后付费更新,就可以自动更新

    image

    2023.12.29更新: (下文有之前写的使用说明) 目前有的订阅节点

    1. 一元机场: 500G 到明年11.2号到期: 优质便宜流量, 目前只有美国的节点,时好时坏,用来刷youtube、tiktok。
      成本:12 rmb

    image

    1. 魔戒 从低端到高端都有的流量,目前有2G,应急使用,链接ChatGPT无问题

    image

    3.SakuraCat 目前ChatGPT使用的优质流量,10G/月,3.8元/月

    翻墙悖论:在没有梯子之前,我怎么才能下载一个梯子呢?

    基本上上述四种方式都提供了国内裸连的链接(下面标注了),无需梯子就可以直接到他们网站,购买相应的订阅,下载对应的app(手机或电脑),然后讲你的订阅导入到你的设备上的app就可以了。【每一种都有对应的文档,很详细】

    image

    别忘了这一步,开启系统代理。

    image

    2.SaKuracat

    在最开始使用魔戒的订阅,在clash上使用,断连过一段时间,发现了SakuraCat。 优点:使用更简单,只需要在官网购买你的订阅,然后下载软件后,点击登录你的账号即可。 缺点:有时会不稳定,账号登不上去。(不过现在官网有了优化汉化版,使用体验还可以) ps:有相应的手机版和电脑版,均在官网下载即可。 image

    为什么你一会说网站叫SakuraCat一会又说软件叫这个 ?我都被你搞混了

    可以这样理解,上面提到的三个网站,只是订阅(也就是节点的分销商),你购买了订阅,没有用,还需要相应的软件(比如提到的clash、SakuraCat)才能实现科学上网。

    当然也有更多的网站,卖不同类型的订阅(节点)服务,这些订阅也不仅仅可以跑在上述提到的两个软件上,还有很多不同类型的软件。

    但有一个原则不会变:越贵的,越稳定,越不容易跑路。 当然反过来一样,所以不建议使用免费的节点。

    最后,欢迎来到真正的互联网,但别忘了,Big Brother is watching you.

    【2024.9.29更新】 EFCloud 推荐 25元 100G 速度快 稳定 ChatGPT没问题 这个是我一个朋友推荐给我的,用了之后发现确实很实惠,关键是稳定,速度快,100G一次性流量,不限时间,目前我自己主力的梯子就靠这个。强烈推荐。

    另一方面,使用方法也很简单,基本上傻瓜式一键操作,支持直接导入你的clash中。

    https://inv.easyfastcloud.com/#/register?code=RQmIkIq2

    image image image

    ]]>
    2023-12-29T12:16:12+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/53算法设计与分析期末复习2026-02-09T01:54:53.380135+00:00image

    image

    ]]>
    2023-12-29T09:00:41+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/52开题答辩拿了高分,但关于未来很迷茫2026-02-09T01:54:53.522883+00:00今天开题答辩结束了,本来我们二学位是前面5个的,结果顺序来了个调转,整成最后了。

    最后结果还算满意,前面老师严格限定了时间,每个人最多5分钟,甚至没有讲完就听不下去了,老师直接打断问问题了。 但一场答辩听下来,40多个人里,除了几人水平高一点外,剩下的基本做的太差了。自己做的什么不清楚,用了什么算法说不清,数据集怎么获取,也不清楚,总之,老师不耐烦的打断,甚至不让讲研究背景,直接跳到最后,看来真是明智的选择了。

    真是同情老师了,我期间一度听不下去了,溜出教师了好几次。

    到最后我的时候,我讲完了自己的ppt,看了一下录音,足足讲了10分钟,期间一直低着头的老师,基本上都在抬头看我ppt上的东西。

    我觉得可以了,毕竟自己认真准备了20页左右的ppt,每一页都认真在考虑整体的思路以及细节(甚至用gpt4生成了几篇插图),在内容上也基本涉及到了我过去学到了看到的点,cs50的课程,吴恩达的prompt课等等。

    讲完之后,之前交过我的老师给我竖起了大拇指,还是挺爽的。后来听别的同学说,老师一直在夸我的项目做的好 ,算是思路最清晰的一个了。下来后,看到另一个交过我的老师也给我打了95分,其余的同学则是基本70多分。

    还算是满意的结果了,虽然自己做的并没有多复杂,但总归是思路捋清楚了,同时表述的也很清楚,像我之前的毕设答辩,老师当时也是说,我的是现场思路逻辑最清楚的一个了。

    毕设基本没问题了,其实一直也不算多大的事情。

    比起毕业设计,毕业恐怕是更难的事情了。

    晚上导员开了班会,让我们做好毕业前的准备,讲了目前就业形式的严峻性,让我们不要较真,最重要的就是放过自己,如果考不上研究生,考不上公务员的也没关系,先找个班上吧。目前96个人两个毕业班的学生,加上我大概也就签了4个。

    最后又专门问了我,还准备去那家企业吗,想清楚要拒了吗?

    因为我的三方算是签的比较早的,还一直在辅导员审核的状态里。在当时签了一家江苏的外贸岗后,后面又陆陆续续面试了几家各种各样的外派,甚至一度险些被骗到曼岛搞电信诈骗(对,就是新闻上缅北那种性质)。当时的想法也很简单,秋招来了,但是对自己的技术没多少信心了(看github的提交记录就能看出来,8月-11月差不多几个月没有写代码),但总不能再次面临失业吧。 image

    那段时间真是焦虑和不自信的一段时间了,不知道自己毕业后能做什么,想去澳洲半工半读,当时自己看了一下账户的钱就差1万左右的钱了,(其实当时再冲动一点也完全有机会去了,就是需要退掉现在这个二学位了,但读完这学期就剩个毕设就能拿到毕业证学位证了)。

    后面想着先攒钱吧,就疯狂投校内的兼职,打算一毕业攒到钱就走,然后干了差不多一个月的数据标注的工作,校内给小红书的词条打标签。要求一小时要标到152条,正确率不能低于95%。刚开始的一周做的很挣扎,可能是因为缺人,考核了一次后通过了正式上岗。一开始速度很慢,总是达不到要求的数量,时薪差不多15左右。后面熟练了之后,疯狂的提速,偷懒的时候完全凭直觉直接打上标签。好日子大概这样过了两周左右,时薪到了20了,两周拿了800左右,每天晚上从6:30到9:30,坐在实验室的电脑前,一群人 盯着电脑屏幕打三个小时的标签,然后我拖着疲惫的身体回宿舍,路上计算着三个小时又标了几百条了算着又赚了几十块钱了,犒劳自己买一根3.5的肠,盼着日子会越来越好,到毕业的话差不多能攒够剩下的钱了。

    好日子过了两个星期,在连续请假了几天回老家参加完发小的婚礼、参加秋招的面试后,回来的第一天上班,负责人告诉我被辞退了,原因是我正确率太低了。

    当时听到消息的一瞬间,心里倒是也很平静,毕竟当时刚进来时太痛苦了,跟朋友讲,我要干到他辞退我为止,除了报酬满意以外,别的一切都不满意。正好也开始秋招了,学校举办了大型招聘会,认真准备了简历,投了大大小小的近10家企业,有高中的生物老师、有软硬件的ToB销售,甚至还投了几家外贸岗。

    最终结果还是挺好的,负责招聘的生物组组长很喜欢我,说我气质很符合他们的要求,但是薪资也太离谱了,综合薪资标1万,但是底薪给1.9k。外贸则是想,既然打算出国的,外贸又能用的到英语,既然这样,不如先工作着,一边攒钱,一边还能练英语。

    外贸有了之前暑假的面试经验,准备了口语自我介绍。但没想到的是,招聘会的现场聊起来的时候,聊着聊着就来了英文对话,先是让我自我介绍,还算准备了一点,但最后也是卡住了。然后对方用英语问我问题,没听明白,聊不下去了。但好在对方的企业是做化工产品农药表面活性剂这一块的东西,恰好我本科毕设就用到了这个,那就多少有的聊了,又聊了农药的一些东西。多亏了本科的东西,聊了很多,过了几天,约了二面。二面之前又紧急准备了英文可能的问题,疯狂背了一上午。但面试的时候,除了流畅的说完了自我介绍,第一个问题还是没怎么听懂。面试的恰好还是那天现场聊天的那个经理,笑着说,那我们还是继续用中文聊天吧。

    虽然英文准备的答案没机会说了,但是中文问的问题也基本是那些,当时我确实也很想拿到这家的offer,也很真诚,最后,面试结束过了几天,hr打电话说面试过了,可以签三方了。

    就这样签了三方,明年三月实习,毕业如果转正得话5.2k/月,996,加班,在离家几百公里的南边的城市,之前甚至从来没听过。

    但当时得知自己面试过了的消息,高兴坏了,毕竟当时太害怕失业了,太焦虑和不自信了。拿了这个offer后,想到就是心里的单子放下了,毕业有着落了。差不多那几天天天在学英语,刷英文的视频,练听力。

    之后接连两个高中的生物老师的面试,其中一个笔试过了,约面试后又放弃了;另一个面试也过了,但是一想到薪资少的可怜也拒绝了。其实当时已经签了三方了(我以为已经是审核过了),后续的几个面试也没打算去,就当练手了。能得到人的肯定和认可,总是很开心的。(但后来我看的一本书上讲,过度的追求别人的肯定,其实是小时候没有得到父母足够的鼓励,以至于长大后也内心一直自卑,总是渴望被人的肯定)

    但总归是信心慢慢恢复了,后面又在小红书上看到非洲外派的工作,发现钱真的好多,基本上应届毕业生都能月薪1.5w,同时我也基本能达到要求了,六级也过了,口语听力虽说不是很熟练,但是经过外贸的面试,平时也没少看英文的视频,英文的文献文章,还是有信心的。投了几家,拿到了一家外派卢旺达的行政助理岗位,也是因为自己本科期间有过一年学工助理的经历,对方倒是很满意我,给了我一周的时间考虑要不要去非洲。

    我差不多纠结了三四天,但因为自己这学期结束才能离校,但那边又急招人,还是错过了。后面还遇到了英国的外派工作机会,正儿八经的面试了一场,顺利拿到了offer,结果最后发现是诈骗的,当时几乎要退学去了。

    后面就进了11月,停课了一个月,为了给考公的留出时间复习,我们没事干的被迫接受了一个月的假期。闲了大概半个月,后面的时间开始搞毕设了,跟着gpt3.5一点点的做,再加上平时twitter上关注着各种最新的AI消息,基本上做的很顺利,当然前期的话,自从夏天7月份选完了毕业导师有了这个想法后,也一直在有意思关注和收藏这方面的信息,今天毕设的核心功能模块:API的集成,就是在twitter上看到有人推荐这个网站,才尝试用了用,发现特别的简单,当晚就跑通了网页版的功能。后面11月再搞的时候,废了不少的功夫,把API的调用也搞明白了,当然期间11.28号,又是看到了一个开题4.0的方法,才开题了4.0。用了4.0后,唯一的遗憾就是问什么没在11月初就开一个呢?

    又重新发现了编写代码的乐趣:因为有了一个强大、且24小时在线随时都能回答你问题的老师,永远耐心,永远想教会你。你需要做的就是,也尽量多保持一点你自己的耐心,和gpt一起,问下去,总能解决你的问题。

    以及,想好,你下一步想做什么,想学什么,就好了。

    这也是之前那篇提到的“除了想象力,没有什么是限制了。”

    当然,有点夸张了。但是ChatGPT4.0的出现,会让你有信心,你可以跟着他,在足够的耐心和时间下,解决任何bug任何问题的,只要你一步一步问下去。

    12月嵌入式开发的课,自己从头到尾完整写完了一个项目,虽然很简单,但是代码是自己独立的完成的;对于班上其他人的代码,也基本能看懂了,甚至大家有bug了,也会找我来帮忙调试。

    又莫名其妙的签了一家公司的兼职代课老师,也是基于esp32的课,说是让我们明年的时候去别的学校代课实训,一节课150,一天8节课1200,但是每次上课的课时费要扣30%,付给我的培训课的费用(总共19000,但是如果上不完课说不用还)。

    公司叫源码时代,跟我一年多前退学后被骗进的那家招转培的公司猿码时代一字之差,也是熟悉的30%的扣费什么的,有种不算好的预感,但我又太想它这个薪资报酬了,负责招我的那个人看上去也很真诚,在我提出签一个保证,如果中途退出,不需要支付课时费后,我们签了兼职合同,我决定赌一把试一试。

    可能本质上,我不是很想去那家外贸的岗位,我还是想搞技术,想写代码。

    但是现在这个兼职的代课,没有多少的保障,幸运的话,可能明年春天4月份能至少上一个月的课,赚一点钱,然后随时因为各种原因丢掉工作,失业;不幸得话,可能就又一次被叫源码的公司骗了,更严重的可能要搭进去19000?

    但未来呢? 我又该做什么呢? 现在又该做什么呢?

    是先拒掉那个外贸的三方,然后现在就准备再好好重新从头学一下前端的东西,多做几个项目,明年春招或者即使是毕业之后暂时找不到工作也一直认准了前端就往里冲?还是什么呢?

    前端时间小红书刷到一个自学了三个月前端,从头到尾跟着jason学html、css、js,然后是React,找到了实习;也有一个博主,总归实际工作经验才两个月,剩下的十多个月是靠自己自学的,拿到了欧洲的远程工作offer。

    我是不是也要再义无反顾的再重新学一下呢,毕竟两年前退学时的梦想就是这个,距离明年毕业也还有整整6个月的时间,他们可以,为什么我不行呢?

    那就再一次出发? 重新来过嘛。

    ]]>
    2023-12-28T16:50:20+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/51Get和post的区别在哪里?2026-02-09T01:54:53.712347+00:00因为毕设中涉及到了一个场景,向同一个api发送两次请求,先发一次post后发get,结合场景,多少理解了些。

    image image

    ]]>
    2023-12-27T07:30:08+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/50除了想象力,没有什么是限制2026-02-09T01:54:53.883955+00:00嵌入式开发的课程就要结课了,虽然课程缩减了很多很多,实际玩的项目只简单接触到了温湿度传感器、遥感测控、ELOD显示器、蜂鸣器、电机(),以及蓝牙和wifi连接esp32,在老师的带领下简单做了一些小项目,但还是感觉很有趣,似乎一切才刚刚开始的样子。

    最后我们要做一个结课的大作业,随着我对这些技术的掌握,发现,最后限制自己做出来的,只剩下好的创意和想象力了。

    技术我们都会堆叠,但是一个好的创意,一个好的应用场景并不容易,很容易做成技术的堆叠,最后变成程序员的自嗨了。

    当然,我觉得在刚刚学会一个新技术的时候,自己拼装各种组合很爽。

    但更爽的可能在于,想象力无限的迸发,不在于技术用了多少,而在于最终呈现的效果有多奇妙。

    在B站看到了一些以前只觉得很酷的项目但一点都不知道怎么做的(比如稚晖君的小电视)但现在,发现自己原理也明白了个大概,自己有时间,也差不多能做出来了。

    这种感觉还是很爽的,倘若找一个时刻,两年前研究生退学,重新学计算机,不后悔的瞬间,大概就是这时候了。

    以前也有很多想法,想搞遥控小车,搞各种稀奇古怪好玩的东西,但完全没有头绪,不知道从哪里下手,但现在,有了一点点的技术基础,觉得技术原来也不是那么难,剩下的,只有想象力的限制了。

    最终的结课大作业,打算用esp32搞一个蜂鸣器钢琴项目,以及用蜂鸣器播放各种音乐。

    ]]>
    2023-12-23T05:17:31+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/48“既然这样,不如我们重新来过。”--考前押题复习的老师2026-02-09T01:54:54.027808+00:00一个学期没怎么听课的编译原理和算法课要结束了,今天是最后的一节课。

    考前划重点,传统项目了。

    但没想到的是,老师画重点简直了,基本上每一章考哪一题都说到了,就差直接告诉我们原题了。

    很感慨的一点在于,最后一节课了,每个人都听的格外认真,似乎此时的老师讲课也有了特别的魔力,平时云里雾里的课讲的也清晰了起来。

    奈何一学期大伙都没怎么听几节课了,欠下的地方也太多了,概念套概念,上一个概念都没有听过,现在就要用这个概念来搞更复杂的事情了。

    老师恐怕也心如明镜,知道一学期没来几节课,来了几乎没人抬头上课的我们的水平了。

    不过,老师都没有放弃下面一群瞪着“愚蠢而清澈”大眼睛的人,自信的跟我们说:”过去的不懂的就过去了,现在不如我们重新来过了。下面我们开始讲这个......“

    是啊,不如我们重新来过了。

    认真听了一天的课,几个感受,一是划重点简直划到奶奶家了,恐怕我奶奶照着老师划的题目,学上俩星期也八九不离十了。二是,认真听,似乎没什么难的东西,基本上整个学科的思路框架认真听下来,心里也有了大概了,剩下的照着例题或者B站上的知识点再学就是了。

    由此我想到了一个很重要的点,很多时候学的绝望,怎么也学不会,可能是不知道要学什么东西,忘了问题具体出在哪里了。真是应了那句话,提问比答案更重要,认清楚自己要解决的问题,这很重要。

    此外,也被老师最后尽职尽责的职业态度触动了。

    下课后,还有一题没讲完,老师主动拖堂继续给我们讲。其实最后划的重点,在我为数不多的清醒听课的印象中都至少要重复讲了3遍了,现在还要再一次重复讲,光是耐心这一项我就深感佩服了。两节课,课间没有下课,再加上拖堂差不多又拖了几乎半节课了,最后老师嗓子基本上已经沙哑了。

    终于下课,我们班的人又围上了老师,让老师再给我们画点重点吧,甚至要再给一点原题吧...... 大家的理由则是,我们是二学位的,基础太差了,又没有重修的机会,太担心挂了。

    说实话,我是有点震惊的,在以往的大学考试经历中,考前老师带着大家复习,简单画一画重点的情况有,但的确没遇到过这种情况,只要跟老师示弱,不断展示自己是多弱示的一方,就可以得到这么多这么多的优惠。

    其实已经画了那么多的重点题目了,说的那么直白了,为什么还要这样缠着老师,继续要”优惠“呢?

    我们就不要这么得寸进尺了好吧,老师也很难做的啊。

    但转念一想,我与大家其实也没有什么不同罢了,我也是靠着在集体中,靠着我们所谓的”弱势“的地位,才获得的那么多的利益。如今在我认为自己”不再弱势了“,便不想让”更弱势“的人获利的想法,恐怕也没有高尚到哪里去。

    这恐怕是大学生涯最后一次考试周了,祝我们都顺利。

    (实在不行,我们重新来过吧:)

    ]]>
    2023-12-22T10:09:21+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/47Hope&Love网页作品2026-02-09T01:54:54.173372+00:00网站:https://qiyongchuan.github.io/Hope_Love/ 开发记录:https://github.com/QiYongchuan/Hope_Love/issues/1

    ]]>
    2023-12-20T07:18:07+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/46只要太阳出来了,一切都会好起来的2026-02-09T01:54:54.308673+00:0012.20日,开课后连续18天阴天下雨下雪后,终于又迎来了太阳,终于又见到了阳光。

    昨天其实就见到了太阳,只是不像今天,昨天一天满课,从早八上到晚八——两周前这样的周二是刚开课,直接强度拉满,晚上就回来发烧咳嗦,开启了黑暗的复课时光。

    昨天终于晴天了,可以说是一扫这段时间的灰暗:整日阴天,不是下雨,最重要的还是天天的低温,手冷脚冷,坐也坐不住,连未来也变得灰暗,各种的焦虑又弥漫在心头,看不到未来……

    但似乎,只要太阳出来了,一切都好了一样。

    昨天上一天的课也无所谓了,虽然有一大半的课没搞懂,但至少自己也学会了一半。今天晚上要服务器的演示考试,明天是测试的考试,虽然现在还没有十足的把握一定能过,但心里有信心了,下午以及晚上好好准备,问题也不大。

    至于未来,昨天晚上看到了一个帖子,三个月跟着国外的课程从html到js,后面学完了react,找到了实习,拿到了offer。

    看完了真替他高兴,也感到了某种信心,比起他来,我已经有了不少基础了,但学习过程断断续续的,缺了几个项目,好像就差一口气就能迈过那个槛了,但总是因为期间各种焦虑担心找不到工作,学了也没用,以及bug调不出来放弃了。

    但某些时候,总是不甘心,觉得自己明明也不差啊,我也可以做到的啊。其次自己也付出了那么多,为什么不再坚持一下呢?

    到明年3月份去外贸实习,或者明年6月份毕业,我其实时间的充足的,足足有两个3个月呢。

    现在欠缺的,恐怕只有决心和毅力了。他每天差不多是早上8点开始学,一直到晚上10点左右,我很羡慕这样的状态,就像当初考研的时候一样心无旁骛的学习。

    现在我还有最后的机会了,趁着没毕业之前,最后可以心无旁骛学习的时间。 期间就只用顾及两件事就好了,一是毕业设计,这个我也打算用react正好可以练习,二是学习Python的esp32开发,这个可以明年3.4月份的兼职收入,以防明年外贸的实习不顺利。

    上午睡了美美的一觉,一直睡到10点,醒来,宿舍靠窗的一边,阳光灿烂,真是美好。梦里,一上午做了三个春梦.....

    ]]>
    2023-12-20T07:06:26+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/45迷失在寒冷的冬天2026-02-09T01:54:54.569090+00:00鼠标丢了,或者说是消失了。

    这一次和之前两次找不到不同,上次是忘在实验楼,紧着着就找回来了。这一次,到了晚上想打游戏时,才发现鼠标不见了。

    第二天我去实验室找了找,大概永远的消失了。

    没了鼠标再用电脑,右手总是空落落的,就像最近的生活一样,好像失去了某种锚。

    (哦,我为什么要说锚,原来是刚刚在听房东的猫的《在无常的生活中抛下一个锚》)

    今天是2023.12.13,重新开始上课的第二周的周三,今天没课的,最近一直阴天和下雨,太冷了,也不见阳光。 重新开始上课的第二天,周二测试了一天就开始生病了,接连躺了大概三四天,一直到周六才勉强好了爬起来去上课。

    测试搞不明白,嵌入式也迷迷糊糊的,别的课也稀里糊涂,算法不明白,编译原理不知道讲的什么,这样的日子还得持续两周。

    ]]>
    2023-12-13T10:27:11+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/44漫长的冬天2026-02-09T01:54:54.735717+00:00image

    ]]>
    2023-12-13T03:32:11+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/43嵌入式开发实训记录2026-02-09T01:54:54.889038+00:00芯片 esp32

    实验项目1: ESP32 Arduino开发环境搭建

    如果是connecting问题时,按Boot

    ]]>
    2023-12-09T02:05:13+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/42Github 的action学习笔记2026-02-09T01:54:55.028566+00:00image

    结果:成功了!

    image

    ]]>
    2023-12-05T15:08:34+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/41听了印度老哥的建议后修改权限,最终成功了!2026-02-09T01:54:55.197147+00:00视频链接:https://www.youtube.com/watch?v=0pRSFaQYr50

    ]]>
    2023-12-05T15:05:33+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/39修改仓库的权限2026-02-09T01:54:55.372329+00:00image

    ]]>
    2023-12-05T02:03:57+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/38增加了两条代码,试图解决push权限问题2026-02-09T01:54:55.508463+00:00设置 Git 远程 URL

    - name: Set Git Remote URL with Token run: git remote set-url origin https://x-access-token:${{ secrets.G_T }}@github.com/YOUR_USERNAME/YOUR_REPOSITORY.git

    ]]>
    2023-12-04T16:43:21+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/37创建一个空标签的会怎样2026-02-09T01:54:55.666519+00:00这还是一个测试用例,不过似乎快要成功了

    ]]>
    2023-12-04T16:32:51+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/36测试,看是否能顺利更新2026-02-09T01:54:55.831404+00:00测试我的博客自动化更新功能

    ]]>
    2023-12-04T16:02:30+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/35自动化博客更新部署折腾日志2026-02-09T01:54:55.977792+00:00似乎目前仍然没有成功,但相比于上一次,有gpt4的帮助下,对整个的框架有了进一步的理解。

    目前把代码都“复制”了过来,真的是手动复制添加上去的。

    已知没有做的工作:环境配置中的API等没有添加设置

    已知可能需要做的:跑一下GitHub的action,做一个简单的demo?

    image

    ]]>
    2023-12-04T15:40:02+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/34软件测试笔记备份2026-02-09T01:54:56.145014+00:00课程: 考察方式:重点考察思想,因为技术工具会变,但是思想不会变

    • 等价类划分

      测试覆盖率计算公式 Cov = (N/T * 100)% T为测试覆盖项的总数,N为测试用例。

    是主观概念还是客观概念? 因为T是主观选定的,所以具有很强的主观性;但是同时又是客观的。

    是否越高越好? 在T选定的情况下,越高越好。

    笔记定义:

    ]]>
    2023-12-04T00:52:57+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/33AI创造:疯狂的蔬菜一家人 2026-02-09T01:54:56.304162+00:00image

    蔬菜和水果家族正在一起聚餐的场景,桌上摆放着同样风格的各种昆虫。 image 蔬菜角色被赋予了夸张的特征和哥特式元素,营造出一种独特而略带黑暗的氛围。 image

    image

    现在,西兰花、草莓、芒果小姐和茄子爷爷也加入了这个独特的家庭。

    image 在这幅画中,包括胡萝卜巫师、番茄骑士、茄子巫婆、豌豆小精灵、洋葱长老、辣椒小鬼、黄瓜女士、蘑菇术士、玉米勇士以及南瓜妈妈和她的孩子们。每个角色都体现了波顿风格的夸张和奇特特征,他们在一个奇异的迷人森林中聚集在一起,展示了这些多样化的蔬菜和水果角色之间的团结和家庭感。

    ]]>
    2023-12-03T08:43:27+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/32AI作图的一些尝试2026-02-09T01:54:56.447649+00:001.经典IP形象

    类似天线宝宝,哆啦A梦,樱桃小丸子,海绵宝宝,蜡笔小新,大头儿子和小头爸爸

    该想法直接使用gpt4,不会生成

    2.蔬菜人物风格化,或者昆虫战甲化

    角色设计:首先,设计一组主角,每个角色基于不同的蔬菜、水果或昆虫。这些角色应该具有独特的个性特点,例如勇敢的草莓骑士、智慧的茄子学者、活泼的橘子小丑,以及神秘的蝴蝶女巫等。

    场景多样性:将这些角色放置在多种现实生活场景中,比如市场、学校、公园、图书馆、咖啡厅等地。每个场景都可以突出不同的主题和活动。

    故事情节:每个场景都可以讲述一个小故事,比如草莓骑士在农贸市场上寻找失散的蓝莓公主,或者茄子学者在图书馆里研究植物学的秘密。

    表情和动作:角色的表情和动作应该根据不同的场景进行调整,以反映它们的情感和活动。确保这些表现丰富多彩,以增强观众的情感共鸣。

    颜色和风格:使用明亮且富有活力的颜色,让角色和场景充满活力。动漫化的风格可以使形象更加夸张和有趣。

    固定元素:为了保持主角的连贯性,可以在每个图像中包含某些固定的元素,如特定的配饰、颜色方案或者标志性的物品。

    互动与关系:展示角色之间的互动,以及它们与环境的关系。这不仅可以增加场景的动态感,还可以增强角色的个性。

    季节和时刻:场景可以反映不同的季节和一天中的不同时刻,如雨后的春天公园或夏日黄昏的海滩。

    文化元素:可以融入不同文化的元素,使场景和角色更加多元和国际化。

    动态变化:即使主角保持固定,场景中的其他元素,如背景、气候或其他配角,都可以根据故事情节的需要进行变化。

    3.新的idea:生成迪士尼风格或者漫画风格的名人人物头像

    比如Taylor Swift 或者蔡徐坤等中国常见的名人形象等

    策略,通过

    ]]>
    2023-12-02T15:21:43+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/31关于YouTube自媒体2026-02-09T01:54:56.588864+00:00
  • Directly transport station B up to the tubing

  • Wisdom quotes, AI videos

  • 国内套壳GPT 3.1

  • 1.GPT的API过期了,需要再申请一个账号。 2.申请几个YouTube账号

    ]]>
    2023-07-28T15:30:05+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/30721面试复盘(外贸)2026-02-09T01:54:56.741669+00:007.21下午,面试外贸员实习生岗位,趁着记忆新鲜赶紧写一写。

    问题: 1.你之前是农业,现在是计算机专业,现在为什么想做外贸销售的工作? 2.什么时候可以入职? 3.英语听说读写能力怎么样? 4.有没有在YouTube等剪过视频,(有没有接触过YouTube、twtter等)

    英文问答: 1.介绍一下你目前的情况,兴趣爱好等 2.你为什么想加入这个公司,你的目标和愿景是什么?

    上面两个问题,都能听懂,但是表达很吃力。第一个照着GitHub的介绍念的,第二个竟然回答,我想练习口语(啊啊啊啊)

    总的来说,算是迈出了第一步,能带来一点安慰的是,英语倒是能听到,有以及中文的问题回答的还算勉强,不算很磕磕绊绊,对于过去运营的经历还算自信的说出。【在选择职位时,运营可能更适合我自身的条件一点,但是想的是找一个更有挑战性一点更好玩一点的职位,就投了外贸实习生】

    最后面试官安慰说表现还可以,问了能不能住在学校里,以及能实习多久的问题,说目前暑假已经过半,目前的实习生还挺多,就让等通知了。

    不知道能不能通过了,通过就买票去武汉实习,不行就再考虑别的打算了。

    需要加强的是英语口语,至少准备一下自我介绍以及为什么加入公司的表达了。

    1. introduce yourself My name is Qi, i am currently an undergraduate student pursing a second bachelor's in computer science.My first degree was in plant protection.(My teacher told me before " we are going to train you to become a Plant Doctor" but i konw that not a really docter,so i quit,i choose to not a really science -- computer science)

    But now, when i learned so many about computer, i realised that computer is just a tool,i can't stay with it all the day like other programers . sometime i still feel my passion when i do something about computer, but i feel if i can do something by using computer i will be more happy . So i wanna try some new thing for me.

    2.why wanna join us?

    First of all, I really appreciate your company's corporate culture and development prospects. Your company has a good reputation in the industry, the product quality is excellent, the performance is growing rapidly. I am eager to be a part of your company and contribute my strength to the development of your company.

    Joining your company, my personal goal is to quickly grow into a qualified professional. I will strive to improve my professional skills, learn advanced management experience and enrich marketing knowledge. I will actively complete the work assigned to me by the company, and strive to do every little thing well.

    In your company, I want to grow in the following areas:

    Improve business ability, learn to master the professional knowledge of the company's products, familiar with the operation mode of the industry.

    Exercise teamwork ability and enhance communication and coordination with colleagues.

    Improve work efficiency and learn efficient working methods.

    Cultivate good professional ethics and establish correct work values.

    Broaden my horizons, learn business management knowledge, accumate background knowledge for becoming a department manager in the future.

    I will step by step, start from the basic work, and strive to become the mainstay of the company. I believe that through my unremitting efforts, I will be able to achieve my career goals in your company. Thank you for giving me this valuable development opportunity. I will work hard to create greater value for the company.

    ]]>
    2023-07-21T08:29:51+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/29Git创建新的分支,开发新功能2026-02-09T01:54:56.904522+00:00image image image

    ]]>
    2023-07-08T07:51:59+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/28快乐释放胶囊2026-02-09T01:54:57.065122+00:00(一) 心理健康同身体健康一样,我们需要像重视身体健康一样重视身体健康。

    [TED演讲】怎样打败孤独和负能量?(中英字幕)-哔哩] (https://b23.tv/1xG4SwJ)

    • ”关注你的情绪,保护好你的情绪“

    对自己仁慈,当情绪出现问题时,应视为身体出现问题一样,心情出现孤独、焦虑、感到失败,低自尊时,同你的牙齿出现蛀牙,腿被磕到一样,是你生病了,而不是仅仅是你想多了。 你不应该对一个情绪出现问题的人说,都在你脑子里,别想了就好了,就像你不能对一个腿骨折的人说,都是你腿的问题,走一走就好了。

    • 孤独时采取行动

    孤独是主观定义的,取决于个人是否感受到于他人情感和社交上的脱节。 孤独像是一个迷宫和陷阱,深陷在里面的时候,彷佛成了遗忘在宇宙深处某颗星球上唯一的人,热闹的人群与你无关,世间一切的爱与你无关,像被人遗忘在了某处冰冷的荒原。

    其实不是的。

    你只需要采取行动,采取一点点行动就好了。(哪怕让人分一点爱?=>”一切的爱怎么都送给他,一颗心分一半好吗?" 此处应该对应背景音乐,半点心-草蜢) 朋友和家人是爱你的,世界是爱你的,你总会有人爱你的。 就像视频里被踢断的那个电话线,电话那头的人也在等你的电话呢。

    ]]>
    2023-07-07T11:43:38+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/27Python文件 xx.py如何打包成.exe格式文件,发给非程序员朋友玩2026-02-09T01:54:57.205325+00:00前言:我花了一个上午的时间将在命令行中查询天气的接口封装成一个 Python 文件,并通过 Python 的 requests 库直接发送请求。但我想将其发送给没有 Python 编译器的朋友们使用,所以只能将 Python 打包成 exe格式的文件。在此之前,我有过打包自己python程序到exe的经验,将python画的爱心打包成exe格式程序发给朋友。

    具体的过程不复杂,可以概括为以下几个步骤:1. 安装 Python 的专用打包工具 PyInstaller。 2.在命令行输入pyinstaller -F py文件路径 就完成了。 (在倒数第二行查看生成的dist文件夹,去看exe文件就可以了。

    image image

    注意事项: 1.直接打开cmd窗口,输入命令就可以了,后面跟正确的路径就可以打包了。(我之前已经下载过打包工具了) image 2.打包后,点击weather.exe出现了闪退,用命令行运行后:查看到了报错信息 image 将报错信息丢给GPT分析,得出:打包时缺少了几个依赖包,导致直接闪退了 image image

    先是执行这一条,手动安装所需的依赖:

    pip install chardet charset_normalizer
    
    

    但是pip安装包出现错误:443 image 轻车熟路,这次直接先关掉梯子,后重新安装,成功。

    image

    再进行第二步,将缺少的依赖重新打包,这里感觉是在加上这部分后重新打包一份py到exe

    image

    此上,所有的打包工作完成,成功将写好的waether.py转成了weather.exe程序了,理论上朋友们可以在自己电脑上运行我的查询天气的程序了。

    ]]>
    2023-07-07T10:05:54+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/26Python中requests库发送请求时遇到的443问题2026-02-09T01:54:57.370379+00:00报错信息:

        raise SSLError(e, request=request)
    requests.exceptions.SSLError: HTTPSConnectionPool(host='wttr.in', port=443): Max retries exceeded with url: /%E5%A4%A9%E6%B4%A5?lang=zh (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)')))
    

    看到443 以及 SSLError报错,心里大概有了方向:应该还是代理及网络的原因。

    问GPT,答:

    image

    期间Google、csdn搜索的方法: image 在发送请求的同时,关闭SSL验证,以及添加配置代理服务器设置。 仍无法解决。

    最后解决方法:关闭梯子

    ]]>
    2023-07-07T09:36:00+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/25Git 如何将本地仓库中上传一个本地有但是远程没有的分支?2026-02-09T01:54:57.543686+00:00问题描述:

    我在本地有一个仓库StydyPy,用来记录我的学习代码,我要上传到我的远程项目仓库Let’s Run中。

    思路:本地有master分支,远程则是main分支,现在我要建一个StudyPy上去,一是我直接把我的master分支改名字,然后上传到远程仓库,或者我在本地新建一个StudyPy分支,然后将master分支里的内容,merge过去,再上传到远程仓库。

    因为远程仓库并没有StudyPy的分支,无论哪种方法,也需要在远程新建一个分支,即原来不存在的分支。

    新建-复制思路 image

    重命名思路: image

    将本地推送到远程:

    image

    以上是说,当远程有仓库的时候,git push origin StudyPy 就可以;如果远程没有,那就git push -u origin StudyPy,意思是先建一个,再传过去。

    当然,把本地仓库push到远程的前提是,两者建立了关联:

    image

    ]]>
    2023-06-30T03:30:24+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/24Git push时遇到10054问题2026-02-09T01:54:57.695281+00:00问题描述:

    image

    可能的原因:

    image

    总结:根本原因在于网络。

    解决方式: 1.之前挂梯子代理时,将局部代理换成全局代理后,解决。 2.修改一下代理: git config --global http.sslVerify "false"

    51401a33c96a4af18f7325994d56999

    1. 把wifi换成数据流量上网,解决。

    大概还是因为网速的原因,上次出现这个问题也是在家里,连的家里的宽带,切换手机开热点后就成功push上去。在学校反而没遇到过10054的情况。

    ]]>
    2023-06-30T03:17:21+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/232023 第一学年结束的总结2026-02-09T01:54:58.222127+00:00虽说是第一学年,但本篇的侧重点更多的放在刚刚结束的第二学期。原因大概在于,当想提笔写下一篇回顾性的总结时,才发现上学期太空了,对于上学期的印象:开学、疫情、封校、无休止核酸检测、漫长的季节,又突然的放开,惊慌的逃窜,感染新冠又申请缓考,一切的一切,关于上学期的记忆,就跟同过去三年的记忆一样,突然被抹去。 而在我这里,那一切又成了那么遥远的过去,以至于我在回想起这一切时,我开学,来到这个学校,更像是几年前那么遥远,而非仅仅才过去了一年。

    但简单来讲,第一学期稀里糊涂学了C、Java,然后是学不太明白的数据结构,以及究极恐怖的离散数学和数字电路(虽然听着有趣,但数字电路一直跟不上的痛苦太难忘了)

    这学期考试课程主要有操作系统、计算机组成原理、计算机网络。 考试周分别整理了三门科目的笔记: #17 #19 #20

    虽然前期学习听不太明白(操作系统和计算机组成原理),但是后期复习的倒是认真,竟然基本上将所有的知识点全部掌握了,同时计算机网络也是因为考试周的复习整理,基本上弄懂了计算机网络的各个章节,各个章节的联系。

    同时考察课,web前端,在做最后一个项目的时候,虽然有过痛苦的挣扎,但最后自己坚持下来了,做了一个让自己满意的项目。同时因为在课程进行的时候,有段时间自己不在状态,各种拖延,导致连续两次实验没有交,有点自暴自弃的感觉。但最后一节课,又交上了一个,同时弥补了很多的损失。 web课的项目在 Hope&Love

    另一门考查课JavaEE,全程上的认真,笔记基本记下了每一个细节,每一行代码都调试出来了。最后交作业的知识点也拿到了98分,但是因为实验没有交,考勤只给了90分。这门课最大的收获是,虽然自己java学的稀烂,但是对javaEE有了一点了解,觉得并不是那么难的东西,我也可以完全做的出来的。 同时才第一次接触到了,如何耐心的调试,如何找自己代码的错误,如何看报错信息等。 JavaEE的代码仓库

    考查课JavaWeb,其实是用JSP的技术来做的,老师讲的稀巴烂,我学的也漫不经心,尤其是在看了一篇文章讲,这项技术差不多已经淘汰了快10年左右了,现在基本没人用了,也不建议去学之后。上课完全不想听,老师的代码水平也有限,只记住了老师在实验课指导我们时反复问一句:”你是免费的还是付费的?“

    JavaWeb的学习笔记

    此外,最后的实训课,是做一个基于java的商店,按理说应该是大二下学期学完java后紧跟着做的,但我们课程安排不合理。这个项目收获有,对git的操作又熟练了一些,学会了自己调试简单的代码,以及为我们后面三门考试提供了宝贵的自习室。

    Java商城的代码仓库

    ]]>
    2023-06-29T11:10:59+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/20计算机组成原理期末复习2026-02-09T01:54:58.399610+00:00复习指导ppt期末复习.pptx

    需要复习的点

    • #21
    • #22
    • 主存储器与cache的映射关系
    • 指令寻址
    • 微程序设计
    • 流水线CPU计算加速比
    ]]>
    2023-06-20T03:16:25+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/19计算机网络期末复习2026-02-09T01:54:58.566221+00:00第一章 概述

    1-03 试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。

    电路交换特点:面向连接的,优点是实时性好,缺点是资源利用率低,费用高 分组交换特点:分组交换技术,网络线路利用率高,缺点是实时性差一点。 报文交换特点:优点:数据以完整的报文形式进行传输,可以根据需要动态分配带宽。适用于短期大量数据传输,如文件传输。 缺点:由于每个报文都要等待完整接收后才能发送,因此可能会引入较高的传输延迟。同时,如果某个报文丢失或损坏,整个报文都需要重新传输。

    当谈到数据传输方式时,我们可以使用类比来更好地理解它们。

    电路交换:想象一下你正在打电话。在通话期间,你和对方之间建立了一个专用的物理连接,就像是一条只属于你们两个人的电话线路。这条线路在整个通话过程中保持稳定,直到通话结束。这种方式提供了稳定的通信质量,但也意味着在通话期间,该线路将被独占,无法同时与其他人通话。

    报文交换:想象一下你给朋友寄一封信。你将整个信件写好后,放入信封中,并写上收件人的地址和发件人的地址。然后你将信件投递到邮局。邮局会将整个信件作为一个完整的单位进行传输,直到它到达目的地。这种方式下,整个信件需要等待完整接收后才能继续传输,如果信件丢失或损坏,你需要重新发送整个信件。

    分组交换:想象一下你要下载一个大文件。你将文件划分为多个小的数据包(分组),每个数据包都有一个序号和目标地址。然后你将这些数据包通过网络发送出去。这些数据包可以通过不同的路径到达目的地,并且接收方会根据序号重新组装数据包,以还原原始文件。这种方式下,数据包可以独立传输,网络资源可以根据需要动态分配,但也可能引入一些传输延迟和抖动。

    通过以上类比,我们可以更好地理解电路交换、报文交换和分组交换的工作原理和特点。每种方式都有其适用的场景和优缺点,根据具体需求选择合适的数据传输方式是很重要的。

    1-14 计算机网络有哪些常用的性能指标? 答:速率,带宽,吞吐量,时延,时延带宽积,往返时间RTT,利用率

    时延(delay):可以理解成时间,具体分为发送时延、传播时延、处理时延、排队时延

    1-15 假定网络利用率达到了90%。试估计一下现在的网络时延是它的最小值的多少倍? 解:设网络利用率为U。,网络时延为D,网络时延最小值为D0 U=90%;D=D0/(1-U)---->D/ D0=10 现在的网络时延是最小值的10倍

    1kb = 10的3次方 1Mb = 10的6次方 1Gb = 10的9次方 1TB = 10的12次方 1us = 10的-6次方s

    1-18 假设信号在媒体上的传播速度为2×108m/s.媒体长度L分别为:与课本不太一样 image image

    1-19 长度为100字节的应用层数据交给传输层传送,需加上20字节的TCP首部。再交给网络层传送,需加上20字节的IP首部。最后交给数据链路层的以太网传送,加上首部和尾部工18字节。试求数据的传输效率。数据的传输效率是指发送的应用层数据除以所发送的总数据(即应用数据加上各种首部和尾部的额外开销)。 若应用层数据长度为1000字节,数据的传输效率是多少? 解:(1)100/(100+20+20+18)=63.3% (2)1000/(1000+20+20+18)=94.5%

    1-21 协议与服务有何区别?有何关系? 答:网络协议:为进行网络中的数据交换而建立的规则、标准或约定。 协议和服务的概念的区分: 1、协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议。下面的协议对上面的服务用户是透明的。 2、协议是“水平的”,即协议是控制两个对等实体进行通信的规则。但服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。上层使用所提供的服务必须与下层交换一些命令,这些命令在OSI中称为服务原语。

    1-22 网络协议的三个要素是什么?各有什么含义? 答:网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成: (1)语法:即数据与控制信息的结构或格式。 (2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。 (3)同步:即事件实现顺序的详细说明。

    _语法:在网络协议中,语法指的是数据与控制信息的结构或格式。类比到餐厅中,语法就相当于菜品的制作方法和配料清单。它规定了数据的组织方式,确保通信双方能够理解和解析传输的数据。

    语义:在网络协议中,语义指的是需要发出何种控制信息,完成何种动作以及做出何种响应。类比到餐厅中,语义就相当于服务员的指示和顾客的需求。它规定了通信双方之间的交互行为,确保数据的正确处理和响应。

    同步:在网络协议中,同步指的是事件实现顺序的详细说明。类比到餐厅中,同步就相当于服务员和厨师之间的协调和配合。它确保了数据的传输和处理按照一定的顺序进行,避免混乱和错误。_

    ]]>
    2023-06-18T08:10:51+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/18实训项目(10天)2026-02-09T01:54:58.747441+00:006.12 第一天

    1.明天下午汇报。ppt+需求分析 汇报(ppt+需求分析报告) 2.3-7天开发阶段 (日志) 3. 测试阶段 (日志) 4. 发布 第十天发布所有

    实训目标 模拟购物平台,后台管理 控制台输出

    需求与分析

    • 用户模块
    • 管理员模块
    • 商品模块

    1.分析与设计

    至少有一个功能模块图

    (一)买家端

    image

    image

    要求:1.需区示意图 2.文字解释

    需求分析主要包含以下:==有哪些模块、模块下面有哪些功能,以及这些功能之间的实现逻辑是怎样的?==

    (二) 卖家端

    image

    参照外卖的参照,写用户需求分析报告。

    1.设计分析.md

    参考链接

    ]]>
    2023-06-12T01:35:03+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/17操作系统期末复习2026-02-09T01:54:58.913950+00:00操作系论课上.pdf

    • 选择题 5题,10分
    • 简答题 4道 20分 【第7章文件系统 12/16题 5分 第三章 死锁 5分
    • 计算题 4道 40分 【第六章磁盘调度算法10分(优缺点需要注意一下简答)、第四章、第五章页面置换算法30分】
    • 应用题 2道 30分 【可能的点:1.进程同步问题(爸妈放水果15分) 2.银行家算法(15分)】

    image

    简答题可能的点

    第一章 1.视从交互性、及时性和可靠性比较实时系统和分时系统

    交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些专用服务程序,不像分时系统那样能向终端用户提供数据和资源共享等服务。

    及时性:实时信息查询系统对实时性的要求与分时系统类似,都是依人所能接收的等待时间来确定,而实时控制系统的及时性,是依控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级。

    可靠性:分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是灾难性后果,所以在实时系统中,往往都采取了多级容错措施保障系统的安全性及数据的安全性。 来源 以及课本P12

    2.OS有哪些特征,最基本的特征是?

    操作系统的特征有:并发、共享、虚拟、异步,最基本的特征是并发(进程在同一时间间隔内交替执行)和共享(多个计算机进程共享计算机资源)

    第二章 image (1 )调度性。线程在 OS 中作为调度和分派的基本单位,进程只作为资源拥有的基本单位。 (2 )并 发性。进程可以并发执⾏,⼀个进程的多个线程也可并发执⾏。 (3 )拥有资源。进程始终是拥有资 源的基本单位,线程只拥有运⾏时必不可少的资源,本身基本不拥有系统资源,但可以访问⾪属进程 的资源。 (4 )系统开销。操作系统在创建、撤消和切换进程时付出的开销显著⼤于线程。

    第三章 1.死锁 1.何为死锁,死锁产生的必要原因?必要条件(简答题) 多个进程因循环等待它方占有的非剥夺性资源竞争而无限期地僵持下去的局面。 原因:非剥夺性资源的竞争和进程的不恰当推进顺序。 必要条件:互斥条件 不剥夺条件 请求和保持条件 循环破坏条件

    在计算机系统中,死锁指的是多个进程或线程因为竞争有限的资源而相互等待,导致系统无法继续执行下去。类比中的死锁可以是多个工人互相等待对方释放资源,最终导致整个工厂停止生产。

    第四章 存储器管理 1.引入动态重定位?如何实现? 所谓地址重定位,就是当⼀个程序装⼊到与其地址空间不⼀致的存 储空间⽽进⾏的地址变换过程,即将地址空间给出的逻辑地址映射到内存的物理 地址上。地址重定位有静态重定位和动态重定位两种⽅式。 采⽤内存分区管理时,在硬件上设置⼀个“重定位寄存器”可以实现程序运⾏时的 动态重定位。这种情况下地址重定位是在程序执⾏期间由地址变换机构动态实现 的,主要的计算依据是:物理地址=逻辑地址+重定位寄存器的内容。

    2.分页系统地址变换 image

    第六章
    1.各磁盘调度算法的优缺点 2. 中断处理程序通常需要完成哪些工作 设备中断处理程序通常需完成如下⼯作:(1) 唤醒被阻塞的驱动程序进程;(2) 保护被中断进程的CPU环境;(3) 分析中断原因、转⼊相应的设备中断处理程 序;(4) 进⾏中断处理;(5) 恢复被中断进程。

    第七章 1.文件目录 2.索引

    计算题

    第三章 进程 1.银行家算法(10分) 2.进程同步: 爸妈放水果以及 消费者生产者 以及哲学家吃饭(10分)

    第四章 存储

    1.连续分配存储管理

    动态分区分配(可变) image

    算法 算法实现 算法优点 算法缺点
    首次适应算法(first fit) 地址,由地址由上到下的顺序分配 优先利用低址地区空间分区,为高址地区保留了大片空闲区。 低址地区不断的划分,产生大量的碎片,每次查找时从低址地区开始查找增加了查找时开销。
    最佳适应算法(best fit) 容量最合适的那一个(从小到大排序) 把能满足要求、又是最小的空闲分区分配给作业,避免了大材小用 宏观上看产生了大量难以利用的碎片
    最坏适应算法(worst fit) 容量,选择最大的那个(从大到小排序) 算法查找效率高,产生碎片的可能性小 储存器缺乏大的空闲分区

    image image

    答案

    需要注意的点:1.每个动作对应 已分配分区 与 空闲分区 2. 已分配分区(作业,始址,大小) 空闲分区(始址,大小) 3.各算法的区别(首次适应是地址,最佳是剩余分区容量)

    2.非连续分配存储管理

    基本分页存储管理 image

    (2)在请求分页存储管理中,系统是通过页表进行地址转换。 先将逻辑地址分解成页号P和页内地址W两部分,然后查页表,可得页号P对应的物理块号为B,从而变换出对应的物理地址为: 物理地址=块号×页面大小+页内地址

    第五章:虚拟内存 只考这一道 (10分) 1.请求分页存储管理(页面置换算法)

    image

    ]]>
    2023-06-09T08:55:31+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/15生活有无数种可能,这次决定先不想最坏的了2026-02-09T01:54:59.075762+00:00#* 远离负面消息

    • 日本语言学习打工的推友大吉
    • 中国经济的英文文章

    上篇决定暂时远离推特一段时间,刻意减少一下自己接触负面消失的量,我觉得效果还是有的。

    所以快说,感谢GFW :)

    先来一篇最新的经济学人报道,Peak China? --China's economy will neither collapse nor overtake America's by much. That make the world safer.

    image

    我最初看到的版本是China's economy will neither collapse nor overtake America's by much. That make the world safer. 中国的经济既不会瞬间崩溃,也不会超过美国太多。这会让世界更安全。 但是在网页是:The country’s historic ascent is levelling off. That need not make it more dangerous 这个国家历史性的崛起正变得平缓,但这并不意味着它将变得更危险。

    image

    在过去四十年间,中国的崛起已成为世界的一个决定性特征。自1978年,中国决定改革开放以来,中国的GDP以令人眼花缭乱的年平均9%的速度快速增长。这使得惊人的8亿中国公民摆脱了贫困。今天中国占据了全球产出的五分之一。其庞大的市场和制造基地已经重塑了全球经济。过去十年一直统治中国的xxx希望利用中国日益增长的影响力来重塑地缘政治秩序。

    image

    只有一个问题:中国的快速崛起正在放缓。xxx先生承诺在未来几十年实现“伟大复兴”,但现在中国的经济正在经历一种更加平淡的变化:巨大的成熟。 十年前,预测人士预测中国的GDP在中期21世纪时将会超过美国(按市场汇率计算),并保持领先地位,但现在正在发生一种远不如此戏剧性的转变,导致接近经济平衡。

    经济轨迹的这种变化是中国观察家之间激烈辩论的主题(请参阅我们的专题简报)。他们再次思考中国的影响力及其与美国的竞争关系。一个观点认为,相对于其竞争对手,中国的实力将会下降,这可能会让其变得更加危险。在去年出版的一本书中,学者哈尔·布兰兹和迈克尔·贝克利发表了一个被称为“中国顶峰”的理论。他们认为,中国面临着衰败,并已经到达了“足够强大,可以积极破坏现有秩序,但正在失去时间在自己这边的信心”的地步。他们的研究以一场想象中的针对台湾的战争开篇。

    image

    “中国顶峰”论点的基础是准确观察到某些顺风变成了逆风,阻碍了中国的进步。第一个大的逆风来自人口。中国的劳动年龄人口已经下降了约十年。去年,中国的总人口达到峰值,印度现在已经超过了中国。中国共产党试图说服中国夫妇多生孩子的努力没有奏效。因此,联合国认为,到本世纪中叶,中国的劳动年龄人口可能会下降超过四分之一。向曾经填满“世界工厂”的大量年轻工人告别吧。

    增加劳动力是经济增长的一种方式。另一种方式是更好地利用现有人口资源。但是,中国的第二个问题是,劳动力的产出不太可能像预测人士曾经希望的那样快速增长。更多的资源将用于养老。数十年来,中国建造房屋、道路和铁路,但是基础设施的支出面临着递减回报。xxx专制倾向使得当地企业家更加紧张,这可能会长期减少中国的创新能力。地缘政治紧张局势使得外国企业渴望将供应链多样化远离中国。美国希望削弱中国在某些“基础”技术方面的能力。其对向中国企业出口某些半导体和机器的禁令预计将对中国的GDP造成影响。

    image

    所有这些都抑制了对中国经济潜力的长期预测。十二年前,高盛认为中国的GDP将在2026年超过美国,并在本世纪中叶增长超过50%。去年,高盛修正了这一预测,称中国只会在2035年超过美国,并且峰值将少于15%。其他机构更加悲观。研究公司Capital Economics认为,中国的经济永远不会成为顶尖大国,而是在2035年达到美国规模的90%。当然,这些预测是不确定的。但是,最有可能的预测似乎都认为,在未来十年左右,中国和美国将接近经济平等,并且将在未来几十年保持这种状态。

    image

    中国将如何应对这种平缓的经济轨迹呢?在最乐观的情况下,xxx将采取措施促进生产率增长。由于人均收入不到美国的一半,中国人民将渴望提高他们的生活水平。他可以尝试通过让中国经济的“动物精神”更加自由地发挥作用,让人们拥有更多的流动自由来释放增长潜力【补充说明:其中,“动物精神”是指经济中的创新和创业精神,通过给予更多的自由和灵活性,可以激发人们的创造力和努力工作的热情,从而促进经济增长。】。中国政府可以停止依赖浪费资金的国有银行和企业来分配资金。它可以采取更加温和的对外姿态,缓解地缘政治紧张局势并向企业保证在中国开展业务是安全的。这样的改革最终可能会使中国更强大,但同时也会希望它变得更少侵略性。问题是,现年69岁的xxx现在可能是中国的终身统治者,他没有表现出接受经济或政治自由化的迹象。

    image

    悲观主义者担心,在中国的经济轨迹失速时,中国会变得更加好斗。有足够的理由认为这种情况是有可能发生的。xxx煽动的危险的民族主义,以说服普通中国人,批评他的统治者就是批评中国本身。据预测,中国的军事预算将与国内生产总值同比增长超过7%。中国的军事支出虽然低于美国,但仍在追赶。到2030年,中国的海军规模可能比美国大50%,到2035年,其核武库将增长近4倍。Brands和Beckley写道:“北京的经济实力可能已经达到峰值,但没有其他国家能够像中国一样具有全球挑战美国的能力。”

    然而,最有可能的情况是处于中间地带。过去二十年中国崛起的速度一直是不稳定的,迫使全球经济和地缘政治秩序做出调整。这一阶段的强烈经济扰动现在可能已经结束。尽管中国经济存在各种问题,但它不太可能萎缩,引发Brands和Beckley担心的那种虚无主义和破坏性思维。xxx的行为难以预测,但中国的长期经济前景既非胜利也非灾难。面对几十年来与美国接近的地位,中国有充分的理由避免骄傲自大以及侵略台湾(AI翻译注:在中国我们应该叫收复台湾)。一个关键的问题是超级大国是否能够避免误读彼此的意图,从而不会陷入冲突。下周我们将研究美国的全球领导地位以及它应该如何应对未来超级大国平衡时代的中国。

    ]]>
    2023-05-12T17:09:15+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/14实时聊天应用开发记录2026-02-09T01:54:59.230968+00:00又开新坑,视频全程只需要8小时,基于nextjs开发的实时在线聊天的软件。

    目前进度,完成了part1部分,跟着完成了第一个组件button的设置,现在开始注册数据库。

    遇到的第一个难题,没有下载yarn,通过npm运行的项目,命令为npm run dev 跑起来的项目。

    ]]>
    2023-05-11T15:05:10+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/13生活需要cookie2026-02-09T01:54:59.387650+00:00生活需要cookie

    b395e8adcbff239705fd2680ecfb8bc

    "你与自己的关系是最复杂的,因为你不能离开你,你必须原谅你的每一个错误,你必须处理好你的,每一个缺点,你必须找到爱你的方式,即使你讨厌你。

    似乎又消失了好几天,上次更新博客,准备搞点什么东西是什么时候来着?

    是晚上突然又打了鸡血,想根据大佬得项目,跑一跑自己得扇贝打卡程序,根据每天背得单词打卡,发送到telegram上,调用chatgpt自动生成一个小故事。需要用到github中的action中的指令设置。研究了一晚上,大概明白了只需要改几个地方,把自己的api设置好就能跑起来。但最后还是没有成功,第二天后便再也没有了性质继续这个项目.....(后来欧陆词典推出了这个功能)

    那上上次打鸡血又是什么时候来着?

    是第一次搞这个博客,兴冲冲的做自己的博客首页,然后像松鼠一样添加各种资源汇总,放到博客页。包括南大的操作系统课,cs61a课、计算机组成原理课,但坚持了几天之后,却也坚持不下去了。于是,进而逃避打开这个博客。

    似乎在往前回忆,还会想起一波又一波的失败,不敢再回忆了,自22年退学之后,生活彷佛就是这样过来的了,被一次又一次半途而废的失败堆叠。

    事情总是这样发展,靡不有初,鲜克有终。

    一开始总是壮志踌躇,但似乎总是莫名其妙的因为各种原因进行不下去.....

    —————————————————————————————————————————— 打住,打住,现在还不是回忆和丧的时候,等将来某一天在知乎上那个更桑的回答下回忆凄惨往事就好了。

    大概,今天心情还不算差,简单总结,继续前进好了。

    过去这段时间,几次想写的什么,但又因为种种的情绪未能动笔,当时的心境恐怕已经不同了。

                                                                                       (一)
    

    ** 在这个没有希望的年代里,让自己快乐起来,大概也是很了不起的事情吧。**

    又要说从前了,在我大四备考研究生的时候,我相信未来,相信希望的,那时候我以为自己每天起早贪黑的复习,备考并不算幸福的,那时我眼中的幸福是考上研究生。

    但现在我最怀念那时候了,那时候每天很累,压力也算大,但我每天过得很充实,相信未来,相信政治书上背的一切,相信自己会逆天改命,和书中描绘的理想社会,相信未来就像大海一样,那时我是最勇敢的水手,渴望早日出海,与风暴共舞。那时候几乎每天的时间都用到复习,同时一天天的数着日子,做着计划,生怕时间不够。

    但在我退学、信念崩塌之后的这两年里,我的时间就像大海一样宽广了,但我似乎成了得了大海恐惧症的人,我害怕面对时间,我没有计划,我不相信有什么是值得“相信”的了,我怀疑一切。

    或许,我后来开始把所有自己壮志酬躇的想法都搞砸也是因为我这自我预设的结果,我内心深处大厦倒塌之后,失去了重建大厦的信心吗?进而我潜移默化的搞砸一切。

    嗯,我也说不清楚了。

    人总得相信点什么东西,才能驱动着自己去做事吧。我相信是这样的,毕竟就算是驴,也得前面挂上胡萝卜棒,让它一步一步的往前走,要不然就给它蒙上眼罩,让它安安心心的拉磨。

    我猜,被蒙上眼睛的驴拉磨的时候,想的肯定也不是拉磨的事。

    我也在寻找一个让我再次相信的胡萝卜棒,或者蒙住眼的眼罩吧。

    但找不到又怎么办?

    有些时候得接受另一种生活,另一种状态了,just have fun,enjoy or waste life?

    骑车很快乐,打游戏也很快乐,在赛博空间里寻找一丝慰藉也好,比起在无尽的时间荒漠面前看不到希望而内耗,让自己不那么难过快乐一点也算说的过去吧。

    毕竟,life is so fucking hard,不要折磨自己了,生活需要一点cookie。 e0b2dabc8ed69fa6b0a46e8c6d83d82

    骑车去公园的时候拍的

    (二)

    我需要生活中的Cookie,记录下我的生活切片瞬间,我写下的计划 ,我的情绪,我的进步,我要完成的事情。

    Cookie 是一个小文件,存储在用户计算机上,存储着用户在访问某个网站时的信息和偏好设置。这些信息可以帮助网站记住用户的登录状态、购物车内容、浏览历史等。因此,当用户再次访问该网站时,网站可以使用之前保存的 Cookie 来提供更好的用户体验。

    我需要我的Cookie,记录下我的”访问状态“,以便下次继续工作。

    (搞复杂了!突然想起我又想起一个这么棒的双关语,而且是我自己完全原创的,哈哈哈哈哈。)

    今天一个感悟还是生活需要不断的正反馈的,对于我来说,在上课能听懂的时候(比如今天的计算机网络),就会有好的反馈,获得cookie,人会正向一点。在上JavaEE的时候,能在老师的指导下顺利敲出代码,以及能看懂一些报错信息,自己完成debug的过程,也是有实实在在的正反馈的,有成就感做下去这件事情,反而不会想太多的事情。

    同时,与人接触,帮助别人的过程里,也会有更多的反馈让我感觉到正向的力量。或许这可能也是我最近一个人所以才emo的原因?

    这时候,对于未来的担忧也觉得没什么,也不会放在心上了。

    反而,当一个人听不懂课,或者大段时间浪费在短视频、twitter上时,各种焦虑的事情汇总起来更让人焦虑了。(失业、战争、各种事情让人失去希望,什么也不想干,只想继续刷焦虑的消息.....)

    懂了,或许该卸载掉让人焦虑的信息源了,看多了除了让自己一遍一遍的反复失望外,获取的有效信息并没有多少。

    就到这里吧,行动起来。

    2023.5.10

    ]]>
    2023-05-10T14:18:09+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/12《一个帖子解决所有的英语学习问题》2026-02-09T01:54:59.561440+00:00来自我之前教培公司的教学专家的总结,借花献佛: 语言是一种能量,人体震动发生基于某频段的能量,只要你和它同频就能接受到。问题是你的十几年教育,学习的都是语言的影子,一种符号文字。 你需要把这个符号文字用大脑重新解码加工成语音,重新大脑里复现它的震动。这个还原的过程会有无数的偏差,和语言的本质离的太远,这是我们苦苦挣扎于英语学习,难以取得进步的原因。

    1.语言是什么? dog dog dog, 语言学家Steven Pinker 说这个单词看起来不像一条狗,读起来也不是汪汪汪,但是还是代表了狗的意思。 你给小孩指着一条🐶说,this is a dog . 然后这条狗冲过来时候,你给孩子说,stay away from the dog. 下一次门前经过一条黄色的🐶, 你指着那条🐶,说this is a yellow ______ 小孩就会嘟囔出dog, 你说Stay ____ ,小孩就会说出Stay away。 很神奇吗?这是人的大脑🧠本能,经过一定的可理解的,受众参与的重复之后,人脑是可以自动习得语言的,孩子直到上小学或者幼儿园才知道 d + o + g = dog = 🐶。

    1. 中国人学英语的困境在哪里? 因为我们是非母语者, 我们已经建立了狗=🐶这个符号链接, 所以我们学习dog之后,是先认识了 d - o -g dog, dog=狗=🐶。 先拼写了三个毫无关系的字母,组成了一个和狗又毫无关系的发音/dɔɡ/。

    2. 通过符号学建立的联系有什么问题? 举个例子, doggy bag, 和dog-eared 这两个词,你知道什么意思吗? 因为你已经把dog doggy对应成中文符号 狗了,所以你自然的就以为这两个词语是doggy-bag狗袋子, dog-eared 狗耳朵。而实际上doggy-bag说的是在餐厅时候打包的袋子。dog-eared的形容的是一本书被翻的很旧。这个时候你就傻眼了吧? 再举个例子: 你把party这个词语对应的学习过程中记忆成了party=派对, 例如birthday party =生日派对。当你第一次接触到party也可以代表政党,别人问你“Are you a party member 你是党员吗?” 你说哎呀,我不是啦,我没有参加什么派对。闹完这个笑话之后,你去订餐让餐厅预留你一个4人座位,服务员说“So, party for 4? 所以是一张四人位 是吗?” 你回答,“不是啦,我们不是办party,我们就是四个人吃饭。 No we are not going to have a party, we just eat” 这个时候又闹了第二个笑话。所以你明白了吗?通过符号建立的语言链接,失去了语言的宽广性。

    4.真正的语言像大海一样宽广,在不同的语境中有不同的意思,通过背单词,背单词,背单词这样的方式去企图掌握语言。就像是希望今天收集一瓢水,明天收集一瓢水一样。永远在学习的路上,又总感觉到不了彼岸。你是不是有那种坚持打卡背单词好几年,还不能听懂外语新闻,美剧,不能开口流利交流的朋友圈努力大神呢?

    5.非母语者还有救吗? 当然有,非常多的非母语者熟练掌握了英文的听说读写。但是他们无一例外的都是在comprehensive input 可理解输入的不断灌输下,大量的接收了英文语料。也许他们自己也不知道从何时开始,看着看着美剧,就完全懂里面说什么了。看着看着新闻报刊,小说,不知不觉就懂里面在写什么了。这个就是多次曝光理论。一个语言因素,12次左右的文章中,听力素材中曝光,在你的可理解范围内的句子或者视频里。你就可以自然习得它。

    6.怎么做? 如果你想达到10000个主动词汇左右,需要完成大约100万字的阅读和听力练习。这听起来很难。其实分解到每一天只需要30分钟左右的可理解素材的输入,30分钟左右你感兴趣的可理解范围的视频或者语音输入。坚持1年左右就可以达成。

    7.我从哪里找这些素材? 找自己喜欢的,烂熟于心的中文小说的对应英文版,找你喜欢的动画片,美剧,在熟读字幕文字后,脱离文字来看。在你不太累又放松,不抗拒的情况下,去感受它,去吸收它。记住语言是一种能量,是一种力量,是人人都可以自然习得,而不是你需要很痛苦去记忆的符号。当你看到abandon的时候,脑海里是被遗弃荒野的婴儿,是废弃公路上的商店,是海边搁浅的破船,是被废除的法令条文,而不是字典里 abandon=放弃。 你就在习得语言上进了一步。

    8.那我的口语怎么办呢? 参照台湾大学史嘉琳的回声学习法 echo method. 你要知道,你之所以读的不对,发音不对。是因为你的大脑不知道哪个读音是对的。大脑需要回声来确认一个语音。所以当你听到一个正确的英语语句之后,按一下播放的暂停⏸️键,让语音在大脑中回荡,然后大声的复现你脑海里的那个声音。素材越简单,越好理解越好,最好是你完全能听懂的简单对话素材。这样训练上1-2个月,你自然大脑知道,什么是正确的语音。

    来源:yiqifacai.eth image

    视频:如何永远学会一个单词?

    ]]>
    2023-04-28T11:52:45+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/11暂未成功的扇贝背单词项目2026-02-09T01:54:59.728497+00:00i.aichat.la

    借助ai搞了一晚上,目前暂未成功,但是大概搞清楚了路子:

    只需要修改自己setting中的四个secret,然后就可以了。

    目前出现过的错误,cookie获取错了;

    image

    以及action中没有打开,上面两个都解决了。

    目前显示发送成功,但是打卡后,实现不了效果。

    image

    image

    ]]>
    2023-04-27T15:47:40+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/10抢不到回家车票的概率是2026-02-09T01:54:59.877610+00:00奶奶家的小狗在撒欢 爷爷坐在沙发上看着一家人忙 客厅里灯火通明 爸爸在厨房 妈妈在端菜 我拿着手机想把这一刻永远留住 可手机怎么也没法把爷爷录进来

    我醒了 我接连订了两张的候补车票 百度说候补成功的概率在80% 这一次我相信它的话

    ]]>
    2023-04-26T15:00:33+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/9当下一次迷路的时候,就回来看看2026-02-09T01:55:00.044119+00:00现在是半夜的0:55分,应该睡了,明天周三,满课,但是我觉得

    ]]>
    2023-04-26T01:07:28+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/8奶奶家的小狗与生日聚餐2026-02-09T01:55:00.193388+00:00在奶奶家,准确说是三叔家。其实是奶奶给三叔盖的,我小时候有一段时间是奶奶带的,住在那个家里,那时候三叔在山西,直到奶奶奶奶六十岁三叔决定带着山西的三婶和妹妹回来,那里又成了三叔家。

    过生日的喜庆时候,老爸在厨房做饭,我带小狗出去玩,刚回来。

    那是一只很小的狗,一看就是聪明的小狗,但是一跟它出去,它就往胡同深处跑,旁边有两只大狗在虎视眈眈的巡逻他们的地盘。我那只小狗恐怕凶多吉少啊,小狗一下子跑出去l,我离得不算远,但是眼睛往那个地方看去,总是灰蒙蒙的,一片一片的,总感觉眼镜擦不干净。

    两个大狗一只盯着排水管道,不断的闻啊闻,我在不算很远也不敢靠太近的地方,着急的喊小狗的名字。 我心里既有种小狗已经被大狗咬死了或者被堵在排水道里出不来了的担心,又隐隐有一丝希望,相信小狗很聪明,一会就自己回家了。

    我稀里糊涂的回三叔家了,菜还在做着,我在院子里往客厅瞅一眼,有几个已经摆在桌子上了,依惯例,还得十几个。

    我跟我妈说起小狗的事情,正说着,院子里看见一直小狗,太小了,全身加起来也就我一只手那么大。走路的人要是不看路,就担心它被人一脚踩下去。

    我过去摸了摸它,也不确定是不是我刚刚带出去的那只狗了,毕竟它怎么这么小,这么柔弱。它怎么从刚刚那 两只大狗哪里逃出来?

    又转眼一看,走廊的一个角落里,又有一窝大概6、7只跟小老鼠一样的猫,黑白相间的很是可爱。

    我轻轻拿起一只看着,说真好看啊,哪来的这么多小猫小狗的啊?

    我妈难得的也对这些小猫很感兴趣,说,这是第六十窝,咱家也养一窝.....

    “啊,真的吗,你不是挺爱干净的嘛,怎么也想养这个了?”我既兴奋又有些不解的问我妈。

    “咱不养这个猫、狗的,拉屎的太不干净了,咱弄个那个"*&#@"回家。"我妈回复道。

    我有一点点的失落,又早就习惯了我妈不养猫狗的习惯,我也觉得怎么可能轻易就养呢。

    菜上齐了,客厅里大灯都打开了,照的屋子里的人也跟着精神起来了。我看大家都带着一点高兴的心情,大概是难得大家坐在一起团圆吃饭吧。在我上大学一年只有寒暑假才能回家后,我也是愈来愈珍惜这样的时光了,借着给爷爷过生日大家聚在一起吃饭喝酒聊天确实应该高兴。

    我瞥了一眼坐在沙发上的爷爷和老奶奶(爷爷的母亲,我叫老奶奶),老奶奶戴着生日蛋糕里送的那个纸做的帽子,笑着看着我们大家忙碌的身影。看到沙发上这一幕,我心里有点疑惑。

    一会桌子上菜都端上桌了,大家都落座后。看着一桌的美食,和 满满的一屋子人,我提议咱们录个视频吧。 我先拿着手机绕着大桌子录菜,可是录到手机里才发现,真奇怪,今天怎么就6个菜,还稀稀疏疏的有两个汤,一屋子十几个人怎么能够呢?平时过生日也够是做十几个的啊。 又接着录人,镜头转着圈录吧,可是录到沙发上时,奶奶旁边的爷爷怎么一下子在镜头里慢慢的消失了? 不是凭空的消失,是镜头一晃过去,人就消失了,镜头一移开,人坐在沙发上。

    我有点慌了,一面跟家人说,一面检查我的手机。我又一遍一遍的录了几个视频,打开手机看是不是保存了,一遍跟我爸妈,跟旁边的人讲这个情况。

    周围依然是欢声笑语,大家听到了我的话,但是又都没有任何反应。

    我突然惊醒了。

    奶奶家的小狗在吃东西时被邻居家的大猫一口咬住头给咬死了,奶奶跟我说起时,心疼的掉了眼泪,说再也不养了,从此奶奶家就再也没了小猫小狗。

    而陪爷爷坐在沙发上的老人,爷爷的母亲,爸爸的奶奶,我的老奶奶,早在2012年麦收时就去世了。

    而在我相机里怎么也录不进去的爷爷,在疫情爆发的前夕,也已经离世了。

                                                                                                                                                                        ---写于2023.4.25梦
    
    ]]>
    2023-04-25T09:52:57+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/7未被定义的2026-02-09T01:55:00.362889+00:00image image image image image

    ]]>
    2023-04-24T15:27:09+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/6在今天,不断看不到希望的年轻人2026-02-09T01:55:00.501459+00:009fc0c0ed34b6ff9f458124a7b7e7d02

    又有三个年轻人自杀了,其实何止是三个呢,在网络的各个角落里,都充斥着大量的失落、迷茫、恐慌、焦虑。墙内简中是各种绝望,墙外则是战争风雨欲来的消息。

    说到风雨欲来的战争,特意买了《昭和上班族》来看,但对于一个已经生活在又一个昭和年代的人来说,没有逃离日本之前,看的愈多,似乎更让人失望。

    起风了,唯有努力生存。

    ]]>
    2023-04-24T05:02:07+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/5SICP 课程笔记2026-02-09T01:55:00.651378+00:00

    听说人生苦短,请用python。 刚玩git把写了两天的jsp代码搞没了,就来玩玩python吧。

    完成了lab00 配好了环境

    image

    ]]>
    2023-04-23T14:34:39+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/4原来都得经过“折磨自己、吃苦,崩溃,bug调不出来”的过程2026-02-09T01:55:00.816697+00:00今天看偶然看到南大的计算机操作系统以及PA的课,有一点新的感触。

    对之前看到的一句话有了更深的理解:

    暂时没找到,大概是好的大学学习≠轻松≠简单

    其次是,调整面对bug及困难的心态。 image image

    该找点苦头来吃:

    image

    PA课程链接 sicp

    ]]>
    2023-04-21T17:34:49+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/3南京大学操作系统学习笔记2026-02-09T01:55:01.002572+00:00第一节 开坑

    课程主页

    学任何东西的三个维度:Why、What、How

    Why ?

    为什么要学“任何东西”?

    为什么学习操作系统?

    image

    == 只要你学完了操作系统,你能写出任何程序。==

    ##what?

    Operating System: A body of software, in fact, that is responsible for making it easy to run programs (even allowing you to seemingly run many at the same time), allowing programs to share memory, enabling programs to interact with devices, and other fun stuff like that. (OSTEP)

    image sofeware

    os

    hardware

    两者之间就是操作系统

    前导课程:数字逻辑电路 image

    • 目标是能够根据需求实现功能*

    面对的是一个开放的世界,重要的是提出问题,比起看书学习,学会问问题更重要。

    image

    ##how? image

    学习应该是一件很快乐的事

    image

    image image

    image

    ]]>
    2023-04-21T16:08:45+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/2JSP学习笔记2026-02-09T01:55:01.170310+00:001.如何配环境

    “你是免费的还是付费的?” ---如何用社区版IntelliJ IDEA创建Servlet项目

    当我开始认真的读文档自己学jsp时,才想起了Javaweb课上老师面对我们各种各异的报错,重复问出的一句话:“你是免费的还是付费的?”

    课上稀里糊涂的配置过去,下次上课代码出不来时,老师依然重复同样的问题。直到我现在从头开始建一个Servlet项目时,我才意识到问题的严重性:

    Servlet项目本质上不能在inteilj community edit 版(也就是免费版)上创建啊!

    image

    image | 来自官网的直接否定

    所以问题的本质是:免费的就是不能直接创建servlet项目,要么选择付费版的,要么选择其他编译器:比如Eclipse

    但是总有人,因为各种原因(我主要是没钱)就是想用免费版的创建Servlet项目,那也没问题

    image

    英文文档没找到好的解决办法,真编程还得是中文,英文也就图一乐

    找到一篇很详细的中文博客:[IDEA Community(社区版)+maven创建Java web项目并配置Tomcat全过程

    注意的是,在创建项目时,我的intellij 上不能直接创建meaven项目,而是左侧的Maven Archetype,右边选择时,与参考博客中不同的是只有一个webapp可选,选这个就可以,其余步骤均参考上面博客就可以。 image

    创建成功之后,添加selvlet类,点击运行后,经典404 检查后发现是web.xml出错, image

    这里需要对应。

    当然在实验课上也出现过很多次经典404,但当时纯属黑盒调试,重启大法换电脑,纯纯玄学调试,不知道哪里错了:)

    image

    至此,第一部分创建项目到这里结束。但似乎还不算开始,一套操作猛如虎,一看进度刚配好环境:)

    ]]>
    2023-04-21T08:10:32+00:00
    https://github.com/QiYongchuan/MyGitBlog/issues/1第一篇:从Github上开始写日记,记录,学习2026-02-09T01:55:01.341050+00:00print("Hello,World!")

    今天是2023年的4月20日,周四的晚上,不想太多的东西,仅仅是记录的开始,把思绪停在文字上,记录,与自己对话。 写下计划,写下想法,让混乱或疯狂的想法,以文字的形式记录整理下来。

    聊聊现状

    现在是0:23分,不应该熬夜的,但莫名有点兴奋与激动,睡不着,就随便写写。

    为什么兴奋和激动呢?

    1.开始尝试用github写博客了吗? 可是之前用hexo已经建立过博客了,但是热度大概持续了几个星期,文章更新了几篇,后来最大的乐趣是隔一段时间换换主题,这次会不会也是同样几天的热度呢? 我说不好,但希望能坚持写下去吧。

    相比之下,在github上样式更单一了,完全是纯文字markdown语法了,不知道会更容易动力不足还是能找到更纯粹的写作动力,不得而知了。

    2.又或许是自己今天上传了[假装]搞定的markdown项目?

    虽然经历了不可思议的艰难过程(前前后后缝缝补补又放弃了那么多次),但最终上传到github仓库,然后写了一段阶段性的总结,最后感觉还不错。

    3.”存在主义“、活在当下,不断学习

    我不知道我理解的存在主义是不是其真正的含义。 因为 各种原因,我总是陷入虚无主义中,往往想事情陷入没有意义的虚无里,看不到任何的希望,于是做各种事情就觉得没有意义。

    以前因为有梦想,有希望,所以做事情觉得有意义,不会刻意去想为什么要做这个事情的意义。

    但梦想破灭之后的一段时间,看不到希望,看各种事情便没了意义,更多想的是做这种事有什么意思啊,没意思,写代码好多bug没意思,学这个没意思,写东西也没意思,反正没有希望,躺平吧。

    可是躺多了,最后什么都没意思了。

    慢慢我开始想的少一点了,先做一下试试吧,做了再说。我得说服自己,做完了就感受到意思了,不行做两个番茄钟。

    意义就在事情的本身,我在写,我在记录,我在生活,我在做事。

    So mang intersting courses waiting me!

    ]]>
    2023-04-20T14:27:28+00:00