神光的编程秘籍

其他

我最近的生活,一地鸡毛。。。

万装修。这两天和家里亲戚做完我爸的遗产分割之后拿到了公证书,也就是我奶奶放弃继承我们的房子。这样我们即墨的房子就可以卖了。我也不想留着了,因为不知道未来会怎么样。去年我同学的朋友出价
3月17日 下午 11:17
其他

一次恶心的面试经历

的机会。并且和朋友说可能节后要去上海了。之后没想到还有个大老板面,就是那种公司的创始人:这时候正好赶上国庆,然后就到节后了。说实话,本来就差一轮走完流程了,然后赶上个国庆再等
2023年10月19日
其他

通过调试技术,我理清了 b 站视频播放很快的原理

请求是能连起来的,也就是说边播边下载后面的部分。视频进度条这里的灰条也在更新:当你直接点击后面的进度条:观察下
2023年7月13日
其他

调试 Jest 测试用例,有更强大的方式

这个测试用例,那就可以加上对应的参数:加上文件名和用例名。但这样每调试一个用例都得改下配置也太麻烦了,能不能我打开哪个文件,就跑哪个文件的用例呢?可以的。VSCode
2023年4月28日
其他

领导提拔你,第三看能力,第二看态度,第一看…

随着ChatGPT的大火,网络上都在担心未来会取代很多人的工作。移动时代淘汰了不少技术专家,IT人要学会抓住时代浪潮,不仅要精进自己的技术能力,更要加强自己的沟通表达能力和管理能力。想起之前某大厂的内部管理培训:“老板提拔你不是让你把下属的活也做了,不会管理下属,你就会成为员工的下属。”在座带过团队的都点头表示赞同。作为带过团队的过来人,我也深有体会。特别是刚从业务骨干升上来时,忙到脚不着地、厕所都来不及上,而下属却整天摸鱼划水,像个没事人一样。根本原因就是,管理者帮员工做了事情,担了责任。比尔翁肯曾提出一个有趣的管理理论——“背上的猴子”,意思是管理者把下属的活都大包大揽到自己身上来,导致团队效率低下,管理者面临被换的下场。想轻松做优秀管理,首先得“让猴子归位”。谁的猴子,就让谁自己背。1怎么归位?很多人也不会。我的一位朋友,兢兢业业干了4年基层后,去年年末终于晋升成技术主管。结果还不到3个月就向我抱怨要离职。刚晋升没几天,很快就被各种麻烦淹没:“比自己干累多了,时时刻刻盯着;底下不是自己招的人,不服管,拖延还老是顶嘴;领导开始冷落部门,对我也不这么上心了,感觉自己真的不适合做管理……”朋友一说,我立马明白了。这是典型的缺乏系统管理方法的表现,明明自己干的时候如鱼得水,做管理反而一塌糊涂,还常常给人擦屁股。时常陷入了自我怀疑——以前,你的业绩是有目共睹的,现在,你的团队业绩却亮起了红灯;以前,自己花10分钟就干好的工作,现在,要花2个小时教下属做;以前,工作轻松时间充足,现在,疲于奔命沦为“救火队长”这些都很正常,至少90%的管理者都遇到过。职场上大多数老板,只会让你当管理,而不会教你怎么做管理。一没有经验,二没有人带,三没有现成的方法。团队很难做出成绩,你的职业瓶颈也很快到来。我们常说“兵熊熊一个,将熊熊一窝”。要想快速适应角色转变,成为一名优秀的管理者,我建议你学习下MTP管理(Management
2023年4月26日
其他

为什么说前端监控系统离不开 RabbitMQ?

前端监控系统是采集用户端的异常、性能、业务埋点等数据上报,在服务端做存储,并支持可视化分析的平台。用户量可能很大,采集的数据可能比较多,这时候服务端的并发压力会比较大,要是直接存入数据库,那数据库服务很可能会崩掉。那就用现在的数据库,如何保证面对大量并发请求的时候,服务不崩呢?答案就是消息队列,比如常用的
2023年4月24日
其他

快速入门 Redis 并在 Node.js 里操作它

是数据卷,也就是挂载本地目录到容器的一个目录。为什么要挂载数据卷呢?因为镜像是不可修改的,每次运行都是全新的,但如果每次跑
2023年4月21日
其他

为什么说 Nest.js 提供了 Express 没有的架构能力?

并不是一个框架,它只是提供了基于中间件的请求响应处理流程。但它并没有规定代码应该怎么组织,怎么复用,怎么集成各种方案,所以代码能写成各种样子,这对于大项目开发来说是很难维护的。所以出现了更上层的
2023年4月19日
其他

卧槽,字节面的问题好多啊。。。

、web综合问题、css相关、JavaScript、jQuery、Bootstrap、webpack相关、编程题、大厂高频题、综合性问题...)第二部分:进阶篇(Javascript、浏览器
2023年4月18日
其他

React SSR 实现原理:从 renderToString 到 hydrate

的过程,组件和元素分别有不同的渲染逻辑:组件的话就传入参数执行:元素的话就拼接字符串:这样递归渲染一遍,结果就是字符串了:服务端渲染的部分还是挺简单的,再来看客户端渲染的
2023年4月16日
其他

lerna 还是 pnpm + changesets?monorepo 工具核心就看这三个功能

仓库每个都要单独来一套编译、lint、发包等工程化的工具和配置,重复十多次。工程化部分重复还不是最大的问题,最大的问题还是这三个:一个项目依赖了一个本地还在开发的包,我们会通过
2023年4月11日
其他

基于 HTTP Range 实现文件分片并发下载!

'image.png';document.body.appendChild(link);link.click();link.addEventListener('click',
2023年4月7日
其他

快速入门 GraphQL:一个接口实现 CRUD

CRUD。比如想查询所有的学生,就可以这样:想再查询他们的年龄,就可以这样:想查询老师的名字和他教的学生,就可以这样:而这些都是在一个
2023年4月5日
自由知乎 自由微博
其他

这一次,我还是想选择自由

辞职回老家有一周多了。这几天我啥也没写,一直在考虑是继续找工作还是真正开始自由职业。找下份工作肯定是有高和稳定的收入,但很有可能还是做不喜欢做的事情,可能是和之前一样一成不变的状态,每天准时上下班通勤,下班在一线大城市的出租屋里打游戏看小说,偶尔写点技术文章。自由职业的话收入不稳定,赚多赚少都要靠自己。但可以住在小县城的家里,有妈妈做的好吃的菜,有可爱粘人的猫猫,有我新买的投影仪可以和妈妈一起看电视,可以和美好的一切在一起。我不喜欢旅游之类的,宅在家里就已经是我最幸福的状态了。而且具体做啥可以自己来决定,我有挺多想研究的东西的。这两天也在面试了,还是那些八股文,卷来卷去的,没啥意思。可能如果真的去了字节,我会更不适应。要不还是不继续面了。我去年也自由职业过,现在和那时候的区别是我粉丝更多了,技术积累也更多了,而且给我妈新买了个房子,可以在这里继续我的神光实验室。上图是神光实验室
2023年4月3日
其他

webpack 的 scope hositing 实现原理,它也是一种 tree shaking!

的时候,生成的代码是这样的,它会被导出,只是没被使用:这时候如果你要删掉它,你需要分析模块之间的依赖关系,导出的变量哪些被使用了,哪些没被使用。还要保证这段代码没有副作用,才能把它删除掉。也就是
2023年3月23日
其他

为什么说 Module Federation 天生是模块级的微前端?

是在主应用里注册微应用的地址:并且在微应用里写一下加载、卸载等生命周期的函数:这样就可以在路由切换的时候自动加载微应用并执行它的生命周期函数来激活它。微前端也就是多了一个异步加载应用的逻辑。而
2023年3月17日
其他

git submodule 和 git subtree,你会选择哪个来管理子项目?

的形式来组织呀,也就是一个项目下包含多个包,它们之间可以相互依赖。这样确实可以频繁改动源码,然后另一个包里就直接可用了。但如果这个包是一个独立的
2023年3月15日
其他

174 页前端必收的面试真题集,JS、Vue、React、Angular…

页前端大厂高频面试题近半年精华总结,可谓是进大厂必撸八股!就算平时技术积累不俗,拿它查漏补缺也是相当不错~每道题都附有答案详解哦~二、3
2023年3月14日
其他

这个 git 命令你每天都在用,但你却不知道

这些命令,其实它们涉及到一个底层命令。这个命令你每天都在用,每天都能看到它的输出,但你却不知道你用到了这个命令。那这个命令是啥呢?git
2023年3月13日
其他

Nest.js 的微服务,写起来也太简单了吧!

github:https://github.com/QuarkGluonPlasma/nest-microservice-demo总结http
2023年3月7日
其他

写一个可以当镜子照的 Button

,也就是这样的:现在画面显示的位置就对了。其实现在还有一个特别隐蔽的问题,不知道大家发现没,就是方向是错的。照镜子的时候应该左右翻转才对。所以加一个
2023年3月3日
其他

搞懂 useState 和 useEffect 的实现原理

fiber.childLanes,用来区分是当前节点的更新还是子节点的更新。标记完更新就是调度下次渲染了。也就是
2023年2月23日
其他

React Context 实现原理:它在 antd 源码里简直用的太多了

context._currentValue,然后传入组件渲染:那有的同学可能会问了,这不就是一个全局的对象么,然后
2023年2月14日
其他

加速几十倍 git clone 速度的 --depth 1,它的后遗症怎么解决?

的时候,就是只保留了最新的入口,历史入口就没下载了。这样自然快很多,代码也是完整的。但这么好的事情也是有代价的,它有一些后遗症。最容易想到的就是切不到历史
2023年1月9日
其他

console.log 一定会导致内存泄漏?不打开 devtools 就不会

devtools,内存就稳定了。但之前打印的对象依然被引用着,那部分内存不会被释放。这样,我们就可以得出结论:不打开
2023年1月6日
其他

千万别让 console.log 上生产!用 Performance 和 Memory 告诉你为什么

后内存占用依然增长了。快照记录着这个时刻内存中所有对象的状态:对比两次快照,就可以找到变化的部分:比如这时候可以看到最大的内存增长是
2023年1月5日
其他

彻底搞懂 React 18 并发机制的原理

调度执行的,它维护了一个任务队列,上个任务执行完执行下个。没渲染完的话,再加一个新任务进去不就行了?判断是否是被中断的还是已经渲染完了,这个也很简单,当全部
2022年11月29日
其他

CSS 的快乐:画一个可爱的三只小鸟 Button

50px;}从效果上也可以看出来分别是左上、右上、左下、右下的圆角。其实还可以设置椭圆角,椭圆和圆的区别是圆的半径都是一样的,而椭圆则是有长轴和短轴,可以不一样。可以分别设置长半轴和短半轴的长度,用
2022年11月18日
其他

我是怎么调试 Element UI 源码的

的源码。定位到组件的代码,是通过事件断点的方式,因为我们知道它触发了什么事件,但却不知道事件处理函数在哪。但是组件的代码是被编译打包过的,不是最初的源码。为了调试最初的源码,我们下载了
2022年10月27日
其他

为什么说 90% 的前端不会调试 Ant Design 源码?

的函数组件被调用的时候断住不就行了?这种在某种条件下才断住的情况可以用条件断点:右键选择添加条件断点:输入断住的条件:当组件名字包含
2022年10月25日
其他

会用 Performance 工具,就能深入理解 Event Loop

的调用栈,因为像燃烧的火焰,所以也叫做火焰图。鼠标划到想看的部分,向下拖动,就可以放大那个区域:左右拖动可以调整看的位置:展示的信息中很多种颜色,这些颜色代表着不同的含义:灰色就代表宏任务
2022年10月17日
其他

用 Charles 断点调试 HTTPS 请求,原理揭秘

breakpoints:然后开启断点:刷新页面你会发现它断住了:下面三个按钮分别是取消、终止、执行修改后的请求的意思。上面可以改
2022年10月13日
其他

Chrome DevTools 远程调试安卓网页的原理

如何远程调试安卓网页呢?它的实现原理是什么?今天我们就来了解一下:远程调试安卓网页用数据线把安卓手机和电脑连接起来,在手机设置里打开
2022年8月15日
其他

用 Node.js 手写一个 DNS 服务器

设计了一层本地域名服务器,由它来负责完成域名的解析,并且把结果缓存下来。这样某台具体的机器只要向这个本地域名服务器发请求就可以了,而且解析结果其他机器也可以直接用。这样的本地域名服务器是移动、联通等
2022年6月5日
其他

HTTP 的缓存为什么这么设计?

304,响应体是空的,浏览器会直接读缓存。这样多了一个协商的阶段,那在本地缓存过期但是服务端改资源没有变化的时候就能避免重复的下载。那如果文件确定不会变,不需要协商的话,怎么告诉浏览器呢?可以用
2022年5月23日
其他

TS 类型体操:图解一个复杂高级类型

string,会返回解析出的参数对象,如果有同名的参数,会把值做合并。先不着急实现,我们先回顾下相关的类型体操基础:类型体操基础模式匹配模式匹配是指用一个类型匹配一个模式类型来提取其中的部分类型到
2022年2月12日
其他

TS 类型体操:索引类型的映射再映射

等类型都是映射类型。但是,现在的映射类型还是有局限性的,不能对索引名做修改、过滤等操作,功能还不够强。如果想实现过滤、转换,那就得用到映射类型的重映射了。重映射重映射就是在索引后加一个
2022年1月19日
其他

用 HTTP 提交数据,基本就这 5 种方式

分隔的字符串传递数据。比如:http://guang.zxg/person?name=guang&age=20这里的
2022年1月7日
其他

模式匹配-让你 ts 类型体操水平暴增的套路

声明的局部类型变量里,如果匹配就能从该局部变量里拿到提取出的类型。这个模式匹配的套路有多有用呢?我们来看下在数组、字符串、函数等类型里的应用。数组类型的模式匹配poppop
2021年12月25日
其他

TypeScript 想更深入一层?我推荐自定义 transformer 的 compiler api

transformed[0]);console.log(code);测试效果经测试,我们达到了求出类型添加到后面的注释里的目的
2021年10月18日
其他

“覆盖率检测”的实现原理,就这?

覆盖率就是执行过的代码占总代码的比例,比如执行了多少行(Line),执行了多少个分支(Branch),执行了多少个函数(Function),执行了多少条语句(Statement)。
2021年10月15日
其他

少年,我把珍藏的这个 VSCode 插件 API 传给你了

vscode.window.createTextEditorDecorationType({
2021年9月30日
其他

给大家变个 Node.js 的小魔术

还有覆盖率测试,其实是通过函数插桩做到的,也就是你每执行一条语句都会计数。怎么插桩呢?跑单测的时候也没手动插桩啊,就是因为工具内部偷偷通过
2021年9月26日
其他

JavaScript Debugger 原理揭秘

我们利用不同的语言描述业务逻辑,然后运行它看效果,当代码的逻辑比较复杂的时候,难免会出错,我们希望能够一步步运行或是运行到某个点停下来,然后看一下当时的环境中的变量,执行某个脚本。完成这个功能的就是
2021年5月13日