编辑
2026-06-23
undefined
00

为什么你要学习编译原理?

编译原理深入编程语言的结构、语法、语义和复杂的算法,涉及计算机体系结构、操作系统和编程语言之间的交互,还包括存储器管理、进程调度和并发控制等关键概念。通过编译原理的学习,我们知道如何将高级语言转换为底层的机器语言或中间代码,从而理解程序的执行过程及其背后的原理,进而了解如何优化和转换程序代码,程序的抽象思维能力对于解决各种计算机科学问题和设计复杂系统也是非常有帮助的;另一发面,这也有助于我们开发语言处理工具,如编译器、解释器、静态分析工具等。

编辑
2026-06-23
undefined
00

前言

前端性能关系到页面的用户体验,页面的用户体验影响了产品的留存率,而产品则直接决定了一个公司的生死存亡。

Global Web Performance Matters for ecommerce的报告中指出:

编辑
2026-06-23
undefined
00

前言

本篇重在介绍前端工程化中可能会用到的lint工具和配置,不深入原理,阅读大概需要十分钟。

简介

规范的代码可以带来一致、无歧义、高效的阅读体验,也可以在某种程度上避免一些低级的错误甚至提高代码的执行效率。大部分现代前端项目都会配置Eslint、Stylelint、Prettier等前端代码校验工具,通过预设规则校验代码,检测其是否存在错误和漏洞,并提示修复方案并尽可能依据修复方案格式化出正确代码。

编辑
2026-06-23
undefined
00

软件架构是什么?

软件架构到底是什么?每个人的理解可能不尽相同,下面举几个例子 维基百科的解释

软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

IEEE结构定义:架构=系统宏观结构+系统组件关系+系统设计原则

the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution --ANSI/IEEE

在我的理解里,我们可以将架构理解为对一个系统内部各部分及其相互作用的高度概括。这不仅包括了物理和信息的属性及其相互之间的配对,也涵盖了组成部分之间以及它们与环境之间关系的界定。通过遵循特定的原则对系统进行细分,架构使得不同参与者能够同时在各自的领域内高效工作,从而证明了有组织的创造过程远胜于无序的努力。软件架构的核心目的在于管理和降低系统的复杂性,实现业务逻辑与技术实现之间的清晰分离和解耦。

架构的不同视角

你所认知的架构和别人所说的架构可能是两码事。

不同职位对架构的视角是不一样的。比如,对老板来说,他看到的是企业架构;对产品同学,他看到的是产品业务架构;对于销售同学,他看到的是市场渠道架构;对开发人员,他看到的是服务技术架构;对于运维人员,他看到的是运维架构;而对于技术支持,他看到的是网络和物理架构。

编辑
2026-06-23
undefined
00

引言

在介绍函数式编程之前,我们先来看下函数在JS中的作用。在JS中,函数是一等公民,除了传统函数的使用,它可以作为普通变量一样作为函数参数,还可以在函数中被返回。除此之外,函数还可以当做类来使用,我们使用new加上函数就可以构造一个实例,并且子类还可以通过构造函数的prototype属性实现原型继承。在React中,组件其实也是一个函数。所以在JS中,函数无处不在。

在软件开发中,我们常见的编程形式有命令式编程和声明式编程。而函数式编程是一种较为抽象的编程方式,是一种强调以函数为主要开发风格的编程方式。在函数式编程中,我们以函数的形式思考和编程。