<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on Yosgi</title><link>https://yosgi.github.io/zh/tags/engineering/</link><description>Recent content in Engineering on Yosgi</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Mon, 29 Jun 2026 09:20:52 +0000</lastBuildDate><atom:link href="https://yosgi.github.io/zh/tags/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>AI 不会杀死软件工程师，它只会杀死我们最讨厌的那部分工作。</title><link>https://yosgi.github.io/zh/post/ai-%E4%B8%8D%E4%BC%9A%E6%9D%80%E6%AD%BB%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88-%E5%AE%83%E5%8F%AA%E4%BC%9A%E6%9D%80%E6%AD%BB%E6%88%91%E4%BB%AC%E6%9C%80%E8%AE%A8%E5%8E%8C%E7%9A%84%E9%82%A3%E9%83%A8%E5%88%86%E5%B7%A5%E4%BD%9C/</link><pubDate>Thu, 21 May 2026 23:28:56 +1200</pubDate><guid>https://yosgi.github.io/zh/post/ai-%E4%B8%8D%E4%BC%9A%E6%9D%80%E6%AD%BB%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88-%E5%AE%83%E5%8F%AA%E4%BC%9A%E6%9D%80%E6%AD%BB%E6%88%91%E4%BB%AC%E6%9C%80%E8%AE%A8%E5%8E%8C%E7%9A%84%E9%82%A3%E9%83%A8%E5%88%86%E5%B7%A5%E4%BD%9C/</guid><description>这场争论，已经太熟悉了</description></item><item><title>React 状态与 3D 引擎的高频同步架构</title><link>https://yosgi.github.io/zh/post/react-%E7%8A%B6%E6%80%81%E4%B8%8E-3d-%E5%BC%95%E6%93%8E%E7%9A%84%E9%AB%98%E9%A2%91%E5%90%8C%E6%AD%A5%E6%9E%B6%E6%9E%84/</link><pubDate>Sat, 31 Jan 2026 23:42:31 +1300</pubDate><guid>https://yosgi.github.io/zh/post/react-%E7%8A%B6%E6%80%81%E4%B8%8E-3d-%E5%BC%95%E6%93%8E%E7%9A%84%E9%AB%98%E9%A2%91%E5%90%8C%E6%AD%A5%E6%9E%B6%E6%9E%84/</guid><description>一套适用于海量即时数据的同步范式：中间层隔离高频数据源，React 只消费可视窗口的线性投影。</description></item><item><title>vue + express + mongodb 搭建一个后台登录系统</title><link>https://yosgi.github.io/zh/post/legacy/vue-express-mongodb-%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%90%8E%E5%8F%B0%E7%99%BB%E5%BD%95%E7%B3%BB%E7%BB%9F/</link><pubDate>Mon, 27 Oct 2025 14:17:43 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/vue-express-mongodb-%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%90%8E%E5%8F%B0%E7%99%BB%E5%BD%95%E7%B3%BB%E7%BB%9F/</guid><description>关键词 nodejs vue express mongodb</description></item><item><title>关于二叉树的总结</title><link>https://yosgi.github.io/zh/post/%E5%85%B3%E4%BA%8E%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%80%BB%E7%BB%93/</link><pubDate>Sun, 28 Feb 2021 00:00:00 +1300</pubDate><guid>https://yosgi.github.io/zh/post/%E5%85%B3%E4%BA%8E%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%80%BB%E7%BB%93/</guid><description>为什么前中后序遍历用栈，而层序遍历使用队列 ？ 二叉树的前中后序遍历的迭代时，我们用栈来简化操作，因为它们都是DFS的递归结构，也就是从下到上处理，但是我写代码一定是从root节点开始，所以需要栈，而栈正好是先进先出的。这样我才可以把处理root放在最后。 层序遍历是BFS，由上至下。最先入队的root也是我想最先处理的。这就是为什么DFS 使用栈而BFS使用队列的原因。 DFS的算法流程与模板 首先将根节点放入stack中。 从stack中取出第一个节点，并检验它是否为目标。如果找到所有的节点，则结束搜寻并回传结果。否则将它某一个尚未检验过的直接子节点加入stack中。 重复步骤 2。 如果不存在未检测过的直接子节点。将上一级节点加入stack中。 重复步骤 2。 重复步骤 4。 若stack为空，表示整张图都检查过了——亦即图中没有欲搜寻的目标。结束搜寻并回传”找不到目标”。 function dfs(root) { if (满足特定条件）{ // 返回结果 or 退出搜索空间 } for (const child of root.children) { dfs(child) } }BFS 的算法流程与模板 首先将根节点放入队列中。 从队列中取出第一个节点，并检验它是否为目标。 如果找到目标，则结束搜索并回传结果。 否则将它所有尚未检验过的直接子节点加入队列中。 若队列为空，表示整张图都检查过了——亦即图中没有欲搜索的目标。结束搜索并回传”找不到目标”。 重复步骤 2。 function bfs(root) { var que = [root] while(que.length) { var node = que.shift() if (node 是我们要找到的) return node node.left &amp;&amp; que.push(node.left) node.right &amp;&amp; que.push(node.right) } }</description></item><item><title>关于登陆注册需求的复盘</title><link>https://yosgi.github.io/zh/post/%E5%85%B3%E4%BA%8E%E7%99%BB%E9%99%86%E6%B3%A8%E5%86%8C%E9%9C%80%E6%B1%82%E7%9A%84%E5%A4%8D%E7%9B%98/</link><pubDate>Sun, 21 Feb 2021 00:00:00 +1300</pubDate><guid>https://yosgi.github.io/zh/post/%E5%85%B3%E4%BA%8E%E7%99%BB%E9%99%86%E6%B3%A8%E5%86%8C%E9%9C%80%E6%B1%82%E7%9A%84%E5%A4%8D%E7%9B%98/</guid><description>年前公司登陆注册的需求，预估一个月的工期，结果在过程中项目变得不可控，最后完成用了几乎三个月，为了不辜负这段时间的加班，故复盘一下项目完成的过程。 关于需求评审 先简单回顾一下需求，注册 / 登陆 都有三个通道 ： 账号/密码 ，手机号，三方 （包括微信扫码和，QQ授权，微博授权），通过一系列的规则和引导，最终走到 登陆/注册 成功页面 ， 再跳转到来源网页。 需要完成的包括 PC 端，移动端 以及 微信端 其中移动端和微信端的区别很小，只有能否微信扫码登录的区别。 看起来简单明了的需求，貌似很多逻辑都能复用，所以 PC 端 估半个月，移动端估一周，剩下的用来IE适配和解决问题。 关于技术选型 因为涉及到微信扫码登录，后端提议接口使用轮询的方式，我不断去轮询状态的接口从而获取状态，比如微信登陆的流程，需要微信扫码 &gt; 获取手机号 &gt; 引导关注公众号 &gt; 创建 / 绑定 网站账号 的流程，那么大致对应着后端给我的 4 个字段，而我由字段的存在与否来判断进入哪个路由。 遇到了哪些问题，及解决方案 老代码 老代码用屎山来形容毫不为过，页面由各种html 内连 css / js 和php 语句拼凑而成，一个页面四五千行的代码，甚至还和其它项目的css 产生着耦合 （引用其公共css )，php 的include 层层嵌套，在深层中还存在着JS的逻辑（我唯一保留的一点三方登陆的老代码在后面引入了难以排查的bug） 解决办法是对前端进行了重构，一开始为了把多个页面的逻辑写进一个PHP文件中，监听浏览器的hash值改变路由，后面发现每个路由都存在自己的初始化逻辑，于是又加上了简单的生命周期。 后面又发现有复用组件的需求，干脆上了 vue框架，script 标签引入。 代码复用 因为老项目路径的一些原因，import 是无法使用的，只好使用include 来代替。 需要复用的变量全部做成全局，用 symbol 或者 单例 防止变量污染。 vue 的模板写在一个html文件，逻辑部分用 x-template 的 script 标签 include 引入 vue的模板代码。</description></item><item><title>Hexo 升级到 5</title><link>https://yosgi.github.io/zh/post/legacy/hexo-%E5%8D%87%E7%BA%A7%E5%88%B0-5/</link><pubDate>Fri, 11 Dec 2020 12:37:55 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/hexo-%E5%8D%87%E7%BA%A7%E5%88%B0-5/</guid><description>填坑日记</description></item><item><title>时隔一年的更新</title><link>https://yosgi.github.io/zh/post/legacy/%E6%97%B6%E9%9A%94%E4%B8%80%E5%B9%B4%E7%9A%84%E6%9B%B4%E6%96%B0/</link><pubDate>Fri, 11 Dec 2020 00:17:30 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E6%97%B6%E9%9A%94%E4%B8%80%E5%B9%B4%E7%9A%84%E6%9B%B4%E6%96%B0/</guid><description>从大华离职一个月之后</description></item><item><title>css伪类选择器nth-child</title><link>https://yosgi.github.io/zh/post/legacy/css%E4%BC%AA%E7%B1%BB%E9%80%89%E6%8B%A9%E5%99%A8nth-child/</link><pubDate>Thu, 07 Mar 2019 17:32:19 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/css%E4%BC%AA%E7%B1%BB%E9%80%89%E6%8B%A9%E5%99%A8nth-child/</guid><description>关于nth-child 和 HTML规范</description></item><item><title>ajax数据传输优化</title><link>https://yosgi.github.io/zh/post/legacy/ajax%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E4%BC%98%E5%8C%96/</link><pubDate>Wed, 28 Nov 2018 14:47:40 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/ajax%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E4%BC%98%E5%8C%96/</guid><description>《高性能Javascript》 知识点整理</description></item><item><title>UI界面响应优化</title><link>https://yosgi.github.io/zh/post/legacy/ui%E7%95%8C%E9%9D%A2%E5%93%8D%E5%BA%94%E4%BC%98%E5%8C%96/</link><pubDate>Thu, 22 Nov 2018 16:55:21 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/ui%E7%95%8C%E9%9D%A2%E5%93%8D%E5%BA%94%E4%BC%98%E5%8C%96/</guid><description>《高性能Javascript》 知识点整理</description></item><item><title>正则表达式性能优化</title><link>https://yosgi.github.io/zh/post/legacy/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</link><pubDate>Tue, 06 Nov 2018 15:48:14 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</guid><description>《高性能Javascript》 知识点整理</description></item><item><title>算法和流程控制优化</title><link>https://yosgi.github.io/zh/post/legacy/%E7%AE%97%E6%B3%95%E5%92%8C%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E4%BC%98%E5%8C%96/</link><pubDate>Thu, 25 Oct 2018 14:33:59 +1300</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E7%AE%97%E6%B3%95%E5%92%8C%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E4%BC%98%E5%8C%96/</guid><description>《高性能Javascript》 知识点整理</description></item><item><title>vue易错易混知识点整理</title><link>https://yosgi.github.io/zh/post/legacy/vue%E6%98%93%E9%94%99%E6%98%93%E6%B7%B7%E7%9F%A5%E8%AF%86%E7%82%B9%E6%95%B4%E7%90%86/</link><pubDate>Mon, 10 Sep 2018 18:30:10 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/vue%E6%98%93%E9%94%99%E6%98%93%E6%B7%B7%E7%9F%A5%E8%AF%86%E7%82%B9%E6%95%B4%E7%90%86/</guid><description>知识点整理</description></item><item><title>数组，栈，队列</title><link>https://yosgi.github.io/zh/post/legacy/%E6%95%B0%E7%BB%84-%E6%A0%88-%E9%98%9F%E5%88%97/</link><pubDate>Wed, 22 Aug 2018 15:09:45 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E6%95%B0%E7%BB%84-%E6%A0%88-%E9%98%9F%E5%88%97/</guid><description>Javascript数据结构</description></item><item><title>async</title><link>https://yosgi.github.io/zh/post/legacy/async/</link><pubDate>Wed, 11 Jul 2018 14:47:05 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/async/</guid><description>《ES6标准入门》 知识点整理</description></item><item><title>promise</title><link>https://yosgi.github.io/zh/post/legacy/promise/</link><pubDate>Wed, 27 Jun 2018 13:18:47 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/promise/</guid><description>《ES6标准入门》 知识点整理</description></item><item><title>proxy</title><link>https://yosgi.github.io/zh/post/legacy/proxy/</link><pubDate>Fri, 18 May 2018 09:59:26 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/proxy/</guid><description>《ES6标准入门》 知识点整理</description></item><item><title>观察者模式和vue监听对象变化</title><link>https://yosgi.github.io/zh/post/legacy/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F%E5%92%8Cvue%E7%9B%91%E5%90%AC%E5%AF%B9%E8%B1%A1%E5%8F%98%E5%8C%96/</link><pubDate>Sat, 05 May 2018 22:38:54 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F%E5%92%8Cvue%E7%9B%91%E5%90%AC%E5%AF%B9%E8%B1%A1%E5%8F%98%E5%8C%96/</guid><description>《Javascript设计模式》 知识点整理</description></item><item><title>对象的拓展</title><link>https://yosgi.github.io/zh/post/legacy/%E5%AF%B9%E8%B1%A1%E7%9A%84%E6%8B%93%E5%B1%95/</link><pubDate>Tue, 24 Apr 2018 00:00:00 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E5%AF%B9%E8%B1%A1%E7%9A%84%E6%8B%93%E5%B1%95/</guid><description>《ES6标准入门》 知识点整理</description></item><item><title>迭代器模式</title><link>https://yosgi.github.io/zh/post/legacy/%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F/</link><pubDate>Fri, 20 Apr 2018 09:41:05 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F/</guid><description>《Javascript设计模式》 知识点整理</description></item><item><title>代理模式</title><link>https://yosgi.github.io/zh/post/legacy/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F/</link><pubDate>Thu, 19 Apr 2018 09:46:11 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F/</guid><description>《Javascript设计模式》 知识点整理</description></item><item><title>Js单例模式</title><link>https://yosgi.github.io/zh/post/legacy/js%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/</link><pubDate>Fri, 13 Apr 2018 20:06:30 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/js%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/</guid><description>《Javascript设计模式》 知识点整理</description></item><item><title>函数的拓展</title><link>https://yosgi.github.io/zh/post/legacy/%E5%87%BD%E6%95%B0%E7%9A%84%E6%8B%93%E5%B1%95/</link><pubDate>Thu, 12 Apr 2018 00:00:00 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E5%87%BD%E6%95%B0%E7%9A%84%E6%8B%93%E5%B1%95/</guid><description>《ES6标准入门》 知识点整理</description></item><item><title>数组的拓展</title><link>https://yosgi.github.io/zh/post/legacy/%E6%95%B0%E7%BB%84%E7%9A%84%E6%8B%93%E5%B1%95/</link><pubDate>Wed, 11 Apr 2018 00:00:00 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E6%95%B0%E7%BB%84%E7%9A%84%E6%8B%93%E5%B1%95/</guid><description>《ES6标准入门》 知识点整理</description></item><item><title>变量的解构赋值</title><link>https://yosgi.github.io/zh/post/legacy/%E5%8F%98%E9%87%8F%E7%9A%84%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC/</link><pubDate>Tue, 10 Apr 2018 11:07:34 +1200</pubDate><guid>https://yosgi.github.io/zh/post/legacy/%E5%8F%98%E9%87%8F%E7%9A%84%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC/</guid><description>《ES6标准入门》 知识点整理</description></item></channel></rss>