光剑书架上的书
程序员光剑,AI天才研究院和光剑读书创始人兼CEO。
展开
-
【加入进来,我们一起互相学习,共同成长】知行合一:成为我们想要成为的那个人!
专栏文章中的每个道理,都有和我、我的团队、家庭相关的案例故事,我主要会讲自己是如何实践这些方法的,并讲解自己的实践经验。所以这个模块中,我会带你了解创业要关注的几件最重要的事、给你讲讲我是怎么通过“啰嗦”把事情做成的,以及创业公司到底怎么样才能生存下去,让你知道怎么经营一家公司,以及怎么在一家初创公司更好地生存。那么我就想,也许最好的方式,是每年对这个专栏做个修订,将我最新的理解补充进去,并且增加过去一年中我学习到的新的方法。我还会附上对我影响非常大的阅读资料,可能是书,也可能是文章,给你一些源头的东西。原创 2024-09-26 22:56:00 · 49 阅读 · 0 评论 -
【字节跳动面试题详解】实现图模型-树模型互转
定义出图模型、树模型数据结构,然后实现如下两个方法:Graph tree2graph(Tree tree){ }Tree graph2tree(Graph g) { }原创 2024-09-25 19:57:33 · 162 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Python极简入门教程
Python是一种高级、解释型、通用编程语言。它以简洁、易读的语法著称。Python支持多种编程范式,包括面向对象、命令式和函数式编程。它有丰富的标准库和第三方库,适用于各种应用场景。理解这些基本特征有助于我们认识到Python的优势和应用领域。stagesolutionPython的基本特性和环境设置基本语法、控制流和函数重要的数据结构面向对象编程基础模块和文件操作一个简单的项目实战这只是Python庞大生态系统的冰山一角。原创 2024-09-23 21:31:01 · 533 阅读 · 0 评论 -
【字节跳动面试100题精讲】解释操作系统的上下文切换
在现代操作系统中,多任务处理是一个核心特性。为了实现多个进程或线程的并发执行,操作系统需要一种机制来在不同任务之间快速切换。这种机制就是上下文切换(Context Switch)。上下文切换允许CPU在多个任务之间分时复用,从而创造出多个任务同时运行的假象。stagesolution上下文切换是操作系统多任务处理的核心机制,但它也面临着一些挑战和未来的发展趋势:减少不必要的上下文切换,如使用协程或用户空间线程。改进硬件支持,如Intel的FSGSBASE指令,可以加速某些类型的上下文切换。原创 2024-09-23 20:39:18 · 817 阅读 · 0 评论 -
【字节跳动面试100题精讲】什么是操作系统的系统调用?系统调用的执行顺序会影响程序性能吗?
stagesolution系统调用是操作系统提供的一种机制,允许用户程序请求操作系统内核的服务。它是用户程序与操作系统内核之间的接口,使得用户程序能够访问硬件资源、执行特权操作,以及获取操作系统的各种服务。提供了一个统一的接口,简化了应用程序的开发。保护了系统资源,确保了系统的安全性和稳定性。实现了用户态和内核态的分离,增强了系统的可靠性。理解系统调用的概念和重要性,是深入学习操作系统的基础。原创 2024-09-23 20:33:49 · 659 阅读 · 0 评论 -
【字节跳动面试100题精讲】解释虚拟内存的概念
本文深入探讨了虚拟内存的概念、原理和应用。我们从虚拟内存的历史背景开始,详细分析了其核心概念、工作原理和数学模型。通过具体的代码实例,我们模拟了虚拟内存系统的基本功能,使得抽象的概念更加具体和可理解。虚拟内存技术在现代计算机系统中扮演着至关重要的角色,从大型软件开发到移动设备,从数据库管理到云计算,它的应用无处不在。我们探讨了虚拟内存在各种场景下的应用,以及相关的工具和学习资源。展望未来,虚拟内存技术仍面临着诸多挑战和机遇。原创 2024-09-23 20:29:12 · 1488 阅读 · 0 评论 -
【字节跳动面试100题精讲】MySQL 索引文件写入磁盘的完整过程
MySQL索引是数据库管理系统中用于提高查询效率的重要数据结构。它类似于书籍的目录,可以帮助数据库快速定位和访问数据。在MySQL中,索引文件的写入是一个复杂的过程,涉及内存管理、磁盘I/O操作以及文件系统交互等多个方面。理解索引文件写入磁盘的过程对于优化数据库性能、进行故障排查以及设计高效的数据库应用程序都具有重要意义。stagestage。原创 2024-09-23 16:08:44 · 528 阅读 · 0 评论 -
Java 反射原理与应用:利用反射实现动态代理实战
Java 反射(Reflection)允许程序在运行时动态获取类的信息、访问类的成员和方法、创建类的实例等。尽管反射的性能不如直接调用高,但其灵活性使得反射在许多场景中非常有用。原创 2024-09-20 10:36:30 · 217 阅读 · 0 评论 -
【技术Owner进阶宝典】如何做好技术团队的绩效管理
在当今快速发展的科技行业中,技术团队的绩效管理已成为企业保持竞争力的关键因素。随着项目复杂度的增加和市场需求的不断变化,传统的绩效管理方法往往难以适应现代技术团队的特点和需求。技术Owner作为团队的领导者,面临着如何有效评估、激励和提升团队成员绩效的巨大挑战。技术团队的绩效管理可以被视为一个复杂的优化问题,其目标是最大化团队的整体产出和个人成长。我们可以将这个过程抽象为一个迭代优化算法,类似于机器学习中的梯度下降法。原创 2024-09-14 03:00:08 · 399 阅读 · 0 评论 -
Raft 协议原理深度解析与Go源代码实现
在分布式系统中,一致性是一个至关重要的概念。简单来说,一致性指的是多个节点对数据达成一致的视图。例如,在一个分布式数据库中,如果一个节点对某个数据的修改被认为是成功的,那么其他所有节点最终都应该看到相同的修改。为了实现分布式一致性,人们提出了各种协议,其中 Paxos 算法是最著名的一个。然而,Paxos 算法以其复杂性和难以理解而著称。为了解决这个问题,Diego Ongaro 和 John Ousterhout 提出了Raft 算法,这是一种更容易理解和实现的分布式一致性算法。原创 2024-09-12 02:22:40 · 253 阅读 · 1 评论 -
Raft 协议原理:分布式一致性算法的优雅实现
在分布式系统中,一致性问题一直是一个核心挑战。为了解决这个问题,许多一致性算法被提出,其中最著名的莫过于 Paxos 算法。然而,Paxos 因其复杂性和难以理解而饱受诟病。在这样的背景下,Raft 协议应运而生。Raft 协议由 Diego Ongaro 和 John Ousterhout 于 2014 年提出,旨在创造一个更易于理解和实现的分布式一致性算法。Raft 的设计目标是提供与 Paxos 相同的容错性和性能,同时大大降低理解和实现的难度。原创 2024-09-12 01:55:31 · 411 阅读 · 0 评论 -
UNIX “一切皆是文件思想” 原理与实际应用
UNIX操作系统自诞生以来,一直以其简洁、强大和灵活性而闻名。其中,“一切皆是文件”(Everything is a file)的设计哲学是UNIX最为核心和独特的思想之一。这一理念不仅简化了系统的设计和实现,还为用户和开发者提供了一种统一的、直观的方式来与系统进行交互。本文将深入探讨这一思想的原理、实现方式以及在现代计算环境中的应用。文件描述符:每个打开的文件都由一个整数(文件描述符)来标识。虚拟文件系统(VFS):提供了一个统一的接口来访问不同类型的文件系统。原创 2024-09-11 02:32:43 · 369 阅读 · 0 评论 -
Go语言的goroutines:可以在多核上并行执行,Go运行时会自动管理实现机制与代码详解
Go语言(Golang)自诞生以来,以其简洁的语法、高效的并发模型和强大的标准库赢得了众多开发者的青睐。作为一种现代编程语言,Go的设计初衷之一就是充分利用多核处理器的计算能力,以应对当今复杂的软件开发需求。在这个背景下,goroutines作为Go语言并发编程的核心特性应运而生。goroutines是Go语言中的轻量级线程,它们由Go运行时(runtime)管理,能够在多核处理器上实现真正的并行执行。原创 2024-09-11 02:26:37 · 520 阅读 · 0 评论 -
新硬件环境下的UNIX内存与进程管理机制优化
随着计算机硬件技术的快速发展,新型存储技术(如非易失性内存)、新型处理器架构(如多核、异构计算)不断涌现。这些新硬件为计算机系统带来了巨大的性能提升潜力,但同时也对传统的操作系统设计提出了新的挑战。UNIX系统作为现代操作系统的基础,其内存管理和进程管理机制需要不断调整和优化,以充分发挥新硬件的性能优势。内存分层管理:针对非易失性内存等新型存储技术多核感知调度:针对多核处理器异构资源管理:针对GPU等异构计算设备量子态管理:针对量子计算设备多核感知调度算法显著提高了系统在多核环境下的性能。原创 2024-09-11 02:10:39 · 262 阅读 · 0 评论 -
UNIX 源代码/程序/进程/线程/协程 进程管理/内存管理原理与源代码详解
UNIX操作系统自1969年诞生以来,一直是计算机科学和软件工程领域的重要基石。它不仅是现代操作系统的鼻祖,也是开源运动的先驱。UNIX的设计哲学 —— “做一件事,做好它”,深刻影响了后来的软件开发实践。本文将深入探讨UNIX系统的核心概念,特别是进程管理和内存管理的原理,并通过源代码分析来揭示这些机制的内部工作原理。UNIX的发展历程可以追溯到贝尔实验室的Ken Thompson和Dennis Ritchie。他们最初的目标是创建一个简单、高效、多用户的操作系统。原创 2024-09-11 01:53:41 · 693 阅读 · 0 评论 -
UNIX 进程唯一标识 ID 生成算法原理和源代码详解
在UNIX和类UNIX操作系统中,进程ID(PID)是一个非常重要的概念。PID是操作系统分配给每个运行中进程的唯一标识符。它在进程管理、资源分配、进程间通信等方面起着关键作用。理解PID的生成算法不仅有助于深入了解操作系统的工作原理,还能帮助开发者更好地进行系统级编程和调试。UNIX系统中的PID通常是一个正整数,范围从2到32767(在某些系统中可能更大)。PID 0通常保留给调度进程,PID 1则分配给init进程(系统引导后启动的第一个用户级进程)。原创 2024-09-11 01:38:28 · 402 阅读 · 0 评论 -
UNIX 操作系统设计原则/思想/哲学
20 世纪 60 年代末,大型机时代,操作系统庞大而复杂,难以维护和移植。贝尔实验室一群程序员在开发 Multics 操作系统时,深感其复杂性带来的困扰,转而开发了一个小巧、简洁、可移植的操作系统——UNIX。保持系统简洁明了,易于理解和维护。将系统分解成独立的模块,每个模块负责一个明确的功能。使用高级语言编写,方便移植到不同的硬件平台。使用文本文件存储配置信息和数据,方便用户阅读和处理。通过管道机制将多个程序连接起来,实现复杂的功能。原创 2024-09-11 01:19:00 · 204 阅读 · 0 评论 -
深入理解DAG任务调度系统:核心原理与实现
任务调度系统是计算机科学中一个重要的研究领域,它主要关注于在并行计算系统中有效地分配和调度任务的问题。任务调度系统的主要目标是在满足所有任务执行需求的前提下,最大化系统的资源利用率和任务执行效率。原创 2023-12-27 18:07:02 · 2800 阅读 · 2 评论 -
调度器 原理与代码实例讲解
在现代计算机系统中,CPU是一种宝贵的资源,需要合理高效地分配和利用。多任务环境下,多个进程同时运行,它们之间相互竞争CPU的使用权。如何公平合理地安排进程的执行顺序,使CPU时间片得到充分利用,成为一个亟待解决的关键问题。这就是调度器(Scheduler)应运而生的根本原因。调度算法是调度器工作的核心和基础,不同的调度算法旨在实现不同的目标,如最大化CPU利用率、最小化等待时间、保证公平性等。先来先服务(FCFS)算法按照进程到达就绪队列的先后顺序,先来先服务。简单公平,但可能导致长进程"饥饿"。原创 2024-06-25 00:28:01 · 42 阅读 · 0 评论 -
软件架构设计与模式之:模块化设计与组件化架构
模块化与组件化是现代软件工程的一个重要发展方向。模块化设计是一种将复杂系统划分为多个相对独立、功能完整、可替换和可维护的模块的方式,它能够使复杂的软件系统更容易理解、开发、测试、修改和扩展。而组件化设计则在这一基础上进一步提出将复杂的软件系统由单个大型软件拆分成不同层次的小型软件组件的观点。模块化与组件化设计都是为了解决软件系统复杂性问题。它们的关键是通过结构化的方式将复杂的软件系统分解成多个相互协作的模块或组件。但是,两者也存在着一些区别,下面我们就分别阐述一下二者之间的差异。模块(Module)原创 2023-10-29 01:54:37 · 628 阅读 · 1 评论 -
Kotlin 入门极简教程
Kotlin 是一种现代、简洁且功能强大的编程语言,非常适合用于 Android 开发和服务器端开发。通过本教程的学习,你应该已经掌握了 Kotlin 的基础语法和核心概念。希望你能在实际项目中灵活运用这些知识,提升开发效率和代码质量。如果你对 Kotlin 有更多的兴趣,建议深入学习其高级特性和应用场景,并尝试开发一些实际项目来巩固所学知识。祝你在 Kotlin 的学习和使用中取得成功!原创 2018-11-05 14:10:00 · 8417 阅读 · 0 评论 -
HTTP传输编码方式:分块传输编码(chunked transfer encoding)原理与代码实战
HTTP协议中的传输编码方式用于指定消息体内容的编码方式,常见的传输编码方式包括identity和chunked。identity表示消息体内容直接传输,而chunked则表示消息体内容以块的形式进行传输。分块传输编码(chunked transfer encoding)是一种允许服务器将数据分成多个块,并在每个块前面加上块大小的传输编码方式。原创 2024-05-25 01:20:04 · 274 阅读 · 0 评论 -
架构设计思想:服务化/异步/高并发/高可用/可扩展
架构设计是软件系统实现其功能和性能目标的关键。现代软件架构需要考虑服务化、异步通信、高并发、高可用和可扩展性等因素,以应对日益复杂的业务需求和海量用户访问。让我们逐一探讨这些架构设计思想。原创 2024-05-20 01:02:02 · 200 阅读 · 0 评论 -
文件系统实现 File-System Implementation
文件系统在磁盘上存储几个重要的数据结构:Akboot block引导控制块(每个卷)又名 UNIX 中的引导块或 Windows 中的分区引导扇区,包含有关如何从此磁盘引导系统的信息。如果该卷上加载了可引导系统,则这通常是该卷的第一个扇区,否则该块将保留为空。Asuperblock卷控制块(每个卷)又名 UNIX 中的主文件表或 Windows 中的超级块,其中包含分区表、每个文件系统上的块数以及指向空闲块和空闲 FCB 块的指针等信息。原创 2024-04-11 12:40:51 · 81 阅读 · 0 评论 -
【编程实战】用golang实现DAG scheduler代码
DAG,指directed acyclic graph,是一个有向无环图。在计算机科学中,DAG 通常用于描述计算依赖关系,比如在数据流编程中,DAG 可以表示数据流图,其中节点表示操作,边表示数据依赖关系。scheduler,即调度器,是系统中负责管理和分配资源的组件。在计算机系统中,scheduler 可以根据 différents 策略调度任务,以实现 load balancing 和 resource utilization。原创 2024-03-19 00:37:30 · 234 阅读 · 0 评论 -
ReactFlow中的未来发展:展望技术趋势
ReactFlow,作为一款基于React的流程图库,已经在许多前端开发项目中得到了广泛应用。它的出现,为开发者提供了一种全新的方式来构建和管理复杂的用户界面。然而,随着技术的不断发展,ReactFlow也面临着许多新的挑战和机遇。本文将对ReactFlow的未来发展进行深入探讨,希望能为广大开发者提供一些有价值的参考。随着前端技术的不断发展,ReactFlow面临着许多新的挑战和机遇。例如,如何提高渲染性能,如何支持更多的布局算法,如何提供更好的用户体验等。原创 2024-02-15 13:10:23 · 142 阅读 · 0 评论 -
大数据库:NoSQL和关系型数据库
大数据库是现代信息技术中的核心组件,它们用于存储、管理和处理大量数据。随着互联网、大数据和人工智能等技术的发展,数据库技术的需求也不断增加。在现实生活中,我们可以看到各种各样的数据库应用,如电子商务网站、社交网络、搜索引擎、财务管理系统等。原创 2024-01-02 01:30:03 · 839 阅读 · 0 评论 -
The Art of Load Balancing: Optimizing Parallel Workloads
在现代计算机系统和分布式系统中,负载均衡是一个关键的技术问题。随着数据量的增加和计算需求的提高,如何在多个计算节点之间分配任务,以便充分利用系统资源,提高系统性能,成为了一个重要的研究和实践问题。负载均衡算法的设计和优化,对于提高系统性能和资源利用率具有重要意义。在本文中,我们将讨论负载均衡的核心概念、算法原理、实现方法和数学模型。我们将通过详细的解释和代码实例,揭示负载均衡算法的工作原理,并探讨其在实际应用中的优缺点。最后,我们将讨论负载均衡的未来发展趋势和挑战,为读者提供一个全面的理解。原创 2023-12-27 01:59:47 · 68 阅读 · 0 评论 -
正则表达式的设计模式:如何设计出高效的正则表达式
正则表达式的历史可以追溯到1950年代,当时的计算机科学家们开始研究如何用有限的状态机(Finite State Machine,FSM)来描述和匹配字符串。随着计算机技术的发展,正则表达式逐渐成为了一种通用的字符串处理方法,被广泛应用于各种编程语言和工具中。正则表达式的设计模式涉及到多个方面,包括语法、算法、数据结构等。在设计正则表达式时,我们需要考虑到其性能、可读性、可维护性等方面。同时,我们还需要了解正则表达式的应用场景和限制,以便更好地选择合适的方法来解决问题。核心概念与联系。原创 2023-12-15 11:42:40 · 99 阅读 · 0 评论 -
分布式缓存原理与实战:分布式缓存的高可用
分布式缓存是现代互联网企业中不可或缺的技术,它可以大大提高系统的性能和可用性。然而,分布式缓存的设计和实现也是非常复杂的,需要深入了解其原理和算法。本文将从原理、算法、实现和应用等多个方面深入探讨分布式缓存的高可用性。原创 2023-12-07 02:16:33 · 83 阅读 · 0 评论 -
Java必知必会系列:分布式系统与RPC
分布式系统是现代计算机系统中一个基本特征,其根本目的是为了将单机的应用拆分成不同的模块,分布在多台服务器上,共同完成复杂的任务。因此,分布式系统所涉及的计算机网络、通信协议、分布式并行编程等方面都要比单机系统复杂得多。而实现分布式系统的关键技术之一就是分布式远程过程调用(Remote Procedure Call,RPC)。在分布式系统中,一个服务通常会部署到多台服务器上,客户端通过远程调用的方式调用这些服务,各个服务器之间需要相互协作才能提供完整的服务功能。原创 2023-11-04 03:11:03 · 239 阅读 · 0 评论 -
Go必知必会系列:并发模式与锁
Golang从2009年诞生至今已经十多年的时间了,而它的并发特性也已经成为开发者们非常关注的问题。多线程、协程等编程模型虽然可以提高并行处理能力,但同时也带来了复杂性问题,导致编码难度变高,维护困难等一系列问题。为了解决并发编程中的各种问题,Golang在语言层面上提供了一些并发模式和同步机制,使得开发者可以方便地进行多线程和协程编程。这篇文章将要对Golang中最常用的几种并发模式和同步机制做个简要介绍,并结合具体的代码实例进一步阐述其工作原理。原创 2023-11-04 03:09:58 · 118 阅读 · 0 评论 -
框架设计原理与实战:理解框架的代码重用与模块化
什么是框架?它与类库、组件、工具集之间的区别在哪里?框架最初的意义是什么?为什么现在还需要了解框架设计的原理与实践?这几个问题将作为框架的介绍。框架(Framework)是指一个或多个代码文件以及这些文件所依赖的其他资源集合,用来简化开发过程并提供特定功能的工具箱。在计算机编程领域,框架是一种设计模式,提供了一套模板或标准,用于解决常见的编程任务,比如输入/输出、网络通信等。框架有着广泛的应用,包括数据库访问、业务逻辑处理、Web应用开发、多媒体、科学计算、图形用户界面(GUI)等。原创 2023-11-03 01:09:21 · 189 阅读 · 0 评论 -
SpringBoot编程基础教程:Spring Boot集成Elasticsearch
Elasticsearch是一个开源的搜索和数据分析引擎,基于Apache Lucene构建,主要用于全文检索、日志分析等领域。它的优点之一是支持分布式实时文件存储,在大数据量下提升了查询性能。由于其强大的查询能力,近年来越来越多的人开始关注并尝试使用Elasticsearch作为业务数据的查询、分析和存储平台。本文将通过实例学习如何用Spring Boot框架集成Elasticsearch,从而更好地利用其强大的搜索功能和高级特性。原创 2023-11-03 01:09:53 · 358 阅读 · 2 评论 -
Java必知必会系列:Web框架与Spring MVC
在企业级应用开发中,采用前后端分离模式和RESTful API风格的Web服务架构逐渐成为主流。基于这些技术,前端可以采用JavaScript、HTML、CSS等多种技术进行开发,而后端则可以通过各种Web框架构建出高性能、可扩展性强的应用系统。在本章节中,我将介绍Java最具代表性的Web框架Spring MVC,并结合实际案例,展示如何利用Spring MVC开发具有一定复杂度的Web应用程序。原创 2023-10-31 01:26:18 · 169 阅读 · 0 评论 -
架构师必知必会系列:多层次缓存与缓存策略
缓存(Cache)是一种高速存储设备,用于临时存储最近访问的数据,从而使得数据访问速度更快。当用户访问一个数据时,如果此数据已经被缓存了,那么就可以直接从缓存中获取数据,不需要再访问实际的数据源,这样可以提升用户体验、减少服务器负担、降低网络带宽占用等。在计算机系统中,除了CPU、主存和磁盘外,还有一块非常重要的存储设备——缓存。缓存就是一个快速的存储器,它位于CPU和内存之间,用来存储最近使用的信息。缓存主要分为本地缓存和分布式缓存两种。原创 2023-10-31 00:45:35 · 113 阅读 · 1 评论 -
开放平台架构设计原理与实战:如何设计开放API
在软件开发领域,API(Application Programming Interface)即应用程序编程接口,是一个允许不同软件组件进行交流的窗口,它定义了一些明确的规则或标准,供各个组件使用。通过API,不同的软件能够互相调用,实现功能的集成、数据共享、服务协同等。API可以使得各个公司的开发者共同开发某项产品或服务,也可以让第三方开发者接入我们的产品或服务。权限控制是指对API的访问进行限制,只有合法的用户才可以访问指定的资源。权限控制可以保护API的安全性和可用性。原创 2023-10-31 00:48:14 · 403 阅读 · 0 评论 -
Java编程基础教程:Java虚拟机原理
Java是一种广泛使用的编程语言,特别适合开发Web应用和企业级应用程序。它的主要优势在于跨平台性,Java源代码在编译后会生成一个称为“字节码”的目标代码,可以在任何支持Java虚拟机的操作系统中运行。因此,编写一次,到处运行。然而,这种跨平台性也带来了一些问题。例如,由于各种不同版本的JVM实现方式可能不同,因此在实际运行时可能会遇到一些兼容性问题。此外,虽然Java在功能上可以满足大多数需求,但在某些方面仍然有一些局限性,例如内存管理、性能等。这些问题促使了Java虚拟机的出现。原创 2023-10-30 01:57:59 · 193 阅读 · 0 评论 -
Go必知必会系列:并发模式与锁
Golang作为一种静态编译型语言,其编程模型中并不提供像Java、C++那样的基于运行时特性来控制线程或并行的机制。相反,它提供了一套并发模型——基于channel的并发模型,并通过关键字go语言的协程机制来实现对协同式多任务的支持。协程的特点是轻量级的线程,但却不是真正的并行线程,它们之间共享内存空间,因此在一些需要同时访问数据的场景下可能会出现竞争条件的问题,而采用锁机制来避免竞争条件则又是一个复杂又耗时的过程。原创 2023-10-29 02:12:38 · 182 阅读 · 0 评论 -
Java必知必会系列:RESTful API与Web服务
Web服务,顾名思义,是指通过互联网进行的服务,它是一种新的应用层协议,让不同的应用程序之间可以互相通信和交换数据。Web服务的历史可以追溯到1990年代中期,当时万维网(World Wide Web)刚刚出现,互联网上的文档、图片等资源都是静态的,不能动态地响应用户的操作。为了实现动态的内容展示,人们提出了CGI(Common Gateway Interface)标准,这是一种简单的服务器端脚本语言,可以让网页程序动态获取来自浏览器的请求,并将结果返回给浏览器。原创 2023-10-29 02:13:42 · 163 阅读 · 0 评论