diff --git a/notebook/docs/basic.md b/notebook/docs/basic.md deleted file mode 100644 index e69de29b..00000000 diff --git a/notebook/docs/basic/math/进制转换.md b/notebook/docs/basic/math/进制转换.md new file mode 100644 index 00000000..f82f7f20 --- /dev/null +++ b/notebook/docs/basic/math/进制转换.md @@ -0,0 +1,89 @@ +进制转换是计算机科学中的一个基本概念。不同的进制表示系统使用不同的基数(例如,二进制的基数是2,十进制的基数是10)来表示数字。以下是一些常见的进制及其转换方法: + +### 常见进制 +- **二进制(Binary)**:基数为2,只使用数字 `0` 和 `1`。 +- **八进制(Octal)**:基数为8,使用数字 `0` 到 `7`。 +- **十进制(Decimal)**:基数为10,使用数字 `0` 到 `9`。 +- **十六进制(Hexadecimal)**:基数为16,使用数字 `0` 到 `9` 和字母 `A` 到 `F`(或 `a` 到 `f`,代表10到15)。 + +### 进制转换方法 + +#### 1. 二进制转十进制 +将二进制数按权展开,从右到左依次乘以 2 的幂,然后求和。 +- 例如,二进制 `1011` 转换为十进制: + \[ + 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11 + \] + +#### 2. 十进制转二进制 +通过不断将十进制数除以2,记录每次的余数,然后将余数倒序排列得到二进制数。 +- 例如,十进制 `13` 转换为二进制: + + - 13 ÷ 2 = 6,余数 1 + + - 6 ÷ 2 = 3,余数 0 + + - 3 ÷ 2 = 1,余数 1 + + - 1 ÷ 2 = 0,余数 1 + + - 结果:`1101` + +#### 3. 二进制转八进制 +将二进制数每三位分组(从右到左),然后将每组转换为对应的八进制数。 +- 例如,二进制 `101011` 转换为八进制: + - 将二进制数分组为 `101` 和 `011` + - `101` = 5,`011` = 3 + - 结果:`53` + +#### 4. 八进制转二进制 +将每个八进制数转换为三位二进制数,拼接得到最终的二进制数。 +- 例如,八进制 `53` 转换为二进制: + - `5` = `101`,`3` = `011` + - 结果:`101011` + +#### 5. 十进制转十六进制 +通过不断将十进制数除以16,记录每次的余数(如果余数大于9,转换为对应的字母),然后将余数倒序排列得到十六进制数。 +- 例如,十进制 `255` 转换为十六进制: + - 255 ÷ 16 = 15,余数 15(对应 `F`) + - 15 ÷ 16 = 0,余数 15(对应 `F`) + - 结果:`FF` + +#### 6. 十六进制转十进制 +将十六进制数按权展开,从右到左依次乘以16的幂,然后求和。 +- 例如,十六进制 `1A3` 转换为十进制: + \[ + 1 \times 16^2 + 10 \times 16^1 + 3 \times 16^0 = 256 + 160 + 3 = 419 + \] + +### Python 实现进制转换 + +Python 提供了一些内置函数来轻松进行进制转换。 + +- **十进制转其他进制:** + +``` python + # 十进制转二进制 + print(bin(13)) # 输出:0b1101 + + # 十进制转八进制 + print(oct(13)) # 输出:0o15 + + # 十进制转十六进制 + print(hex(255)) # 输出:0xff +``` + +- **其他进制转十进制:** + +``` python + # 二进制转十进制 + print(int('1101', 2)) # 输出:13 + + # 八进制转十进制 + print(int('15', 8)) # 输出:13 + + # 十六进制转十进制 + print(int('ff', 16)) # 输出:255 +``` + +通过理解这些转换方法,可以更好地掌握不同进制之间的关系和计算方法。 \ No newline at end of file diff --git a/notebook/docs/basic/program/program.md b/notebook/docs/basic/program/program.md new file mode 100644 index 00000000..e57c6bce --- /dev/null +++ b/notebook/docs/basic/program/program.md @@ -0,0 +1,116 @@ +# 信息学史及基本知识 + +## 一、信息学的定义 + +信息学(Informatics)是一门综合性学科,主要研究信息的获取、存储、处理、传输和应用。它融合了计算机科学、信息技术、数学、统计学、认知科学等多个领域,旨在解决与信息相关的问题,优化信息系统,促进信息的高效利用。 + +## 二、信息学的发展历史 + +### 1. 早期信息处理 + +- **古代计算工具**:早在古代,人类就发明了各种计算工具,如算盘、算筹等,用于辅助计算和记录信息。 +- **印刷术的发明**:15世纪中叶,古滕堡发明了活字印刷术,极大地促进了信息的传播和知识的普及。 + +### 2. 计算机的诞生 + +- **机械计算机**:19世纪,查尔斯·巴贝奇设计了差分机和分析机,被誉为“计算机之父”。尽管他的机器未能完全建成,但为后来的计算机发展奠定了基础。 +- **电子计算机**:20世纪中叶,电子计算机开始出现。1946年,ENIAC(电子数值积分计算机)问世,被认为是第一台通用电子计算机。 + +### 3. 信息理论的建立 + +- **信息理论**:1948年,克劳德·香农(Claude Shannon)发表了《通信的数学理论》,奠定了现代信息理论的基础,提出了信息熵等重要概念,极大地推动了通信技术的发展。 + +### 4. 现代信息学的发展 + +- **互联网的兴起**:20世纪末,互联网的普及改变了信息的传播方式,促进了全球信息化进程。 +- **大数据与人工智能**:进入21世纪,大数据技术和人工智能迅速发展,推动了信息学在各个领域的深入应用。 + +## 三、信息学的基本知识 + +### 1. 数据结构与算法 + +- **数据结构**:组织和存储数据的方式,如数组、链表、栈、队列、树、图等。 +- **算法**:解决问题的步骤和方法,包括排序算法、搜索算法、动态规划等。高效的算法能够优化计算资源的使用,提高程序性能。 + +### 2. 编程语言 + +- **高级语言**:如Python、Java、C++等,用于开发各种应用程序。 +- **脚本语言**:如JavaScript、Ruby,用于快速开发和自动化任务。 +- **编译语言与解释语言**:编译语言(如C、C++)通过编译器转换为机器码,解释语言(如Python)通过解释器逐行执行。 + +### 3. 数据库与信息管理 + +- **数据库管理系统(DBMS)**:如MySQL、PostgreSQL、MongoDB,用于存储、管理和检索数据。 +- **关系数据库与非关系数据库**:关系数据库基于表结构,非关系数据库(NoSQL)适用于大规模、分布式数据存储。 +- **数据建模与设计**:包括实体-关系模型(ER模型)、规范化等,用于设计高效的数据存储结构。 + +### 4. 人工智能与机器学习 + +- **人工智能(AI)**:模拟人类智能行为的技术,包括专家系统、自然语言处理、计算机视觉等。 +- **机器学习(ML)**:AI的一个分支,通过数据训练模型,使计算机能够自动改进性能。包括监督学习、无监督学习、强化学习等。 +- **深度学习**:基于神经网络的机器学习方法,广泛应用于图像识别、语音识别等领域。 + +### 5. 网络与通信 + +- **计算机网络**:包括局域网(LAN)、广域网(WAN)、互联网等,用于信息的传输与共享。 +- **通信协议**:如TCP/IP、HTTP、FTP等,规定数据传输的规则和格式。 +- **无线通信与移动网络**:如Wi-Fi、4G/5G,支持移动设备的连接与数据传输。 + +### 6. 信息安全 + +- **网络安全**:保护网络及其传输的数据不被未经授权的访问、修改或破坏。 +- **加密技术**:如对称加密、非对称加密,用于保护数据的机密性和完整性。 +- **安全策略与防护措施**:包括防火墙、入侵检测系统(IDS)、安全审计等,保障信息系统的安全。 + +## 四、信息学的应用领域 + +### 1. 计算机科学 + +研究计算机系统的理论基础、算法设计、软件开发等,推动信息技术的创新与发展。 + +### 2. 信息技术 + +应用信息学的理论和技术,开发和维护信息系统,支持各行业的信息化需求。 + +### 3. 生物信息学 + +结合生物学和信息学,处理和分析生物数据,如基因序列、蛋白质结构等,推动生命科学研究。 + +### 4. 数据科学 + +通过数据分析、数据挖掘、大数据技术,从海量数据中提取有价值的信息,支持决策和创新。 + +### 5. 人工智能与机器人 + +开发智能系统和自主机器人,应用于制造、医疗、服务等多个领域,提高效率和智能化水平。 + +### 6. 信息管理与决策支持 + +利用信息系统和数据分析工具,优化组织的信息管理流程,支持科学决策和战略规划。 + +## 五、信息学的发展趋势 + +### 1. 大数据与云计算 + +大数据技术和云计算平台的发展,使得海量数据的存储、处理和分析更加高效和便捷,推动各行业的数字化转型。 + +### 2. 人工智能与自动化 + +AI技术的不断进步,推动自动化系统在各领域的应用,提高生产效率和智能化水平。 + +### 3. 物联网(IoT) + +通过互联网连接各种物理设备,实现数据的实时采集和分析,促进智能家居、智慧城市等的发展。 + +### 4. 信息安全与隐私保护 + +随着信息技术的普及,信息安全和隐私保护的重要性日益凸显,推动相关技术和法规的不断完善。 + +### 5. 边缘计算 + +将计算资源从云端向网络边缘移动,降低延迟,提高数据处理的实时性,满足物联网和智能设备的需求。 + +## 六、结语 + +信息学作为一门跨学科的综合性学科,在现代社会中扮演着至关重要的角色。它不仅推动了科技的进步,也深刻影响着人类的生产、生活和社会发展。了解信息学的历史和基本知识,有助于更好地理解和应用信息技术,迎接数字化时代的挑战与机遇。 + diff --git a/notebook/docs/basic/program/信息学发展史(近现代).md b/notebook/docs/basic/program/信息学发展史(近现代).md new file mode 100644 index 00000000..668c2f83 --- /dev/null +++ b/notebook/docs/basic/program/信息学发展史(近现代).md @@ -0,0 +1,92 @@ +### 信息学的近现代发展历史 + +在近现代,信息学的发展经历了从简单的计算工具到复杂的信息系统的演变过程。这段历史充满了技术创新、思想突破和应用实践,特别是从20世纪中期到21世纪的信息革命,彻底改变了全球的信息处理和传播方式。 + +--- + +### 1. 20世纪初期到中期 + +#### 1.1 计算理论的奠基 +- **艾伦·图灵(Alan Turing)**: + - 在20世纪30年代,艾伦·图灵提出了图灵机的概念,奠定了现代计算机科学的理论基础。图灵机是一个抽象模型,能够模拟任何算法的执行过程。图灵的计算理论在逻辑和数学基础上说明了计算机可以处理的任务种类。 + - 他的论文《论可计算数及其在判定问题上的应用》(1936年)提出了可计算性的概念,揭示了哪些问题可以通过算法解决,哪些不能。 + +#### 1.2 香农的信息理论 +- **克劳德·香农(Claude Shannon)**: + - 1948年,香农发表了《通信的数学理论》,正式提出了信息论的基本框架。香农提出了“比特”(bit)作为信息的基本度量单位,并定义了信息熵,描述了信息的不确定性。 + - 香农的工作对现代通信系统和数据压缩有着深远影响,是信息学、计算机科学和电信技术的基础。 + +#### 1.3 早期电子计算机的发展 +- **冯·诺依曼架构**: + - 20世纪40年代,数学家冯·诺依曼(John von Neumann)设计了一个具有存储程序能力的计算机架构,这一架构被称为“冯·诺依曼架构”。它将计算机的五个基本组件:输入设备、输出设备、存储器、控制单元和算术逻辑单元(ALU)分离开来。这个架构成为现代计算机设计的基础。 +- **ENIAC**: + - 1946年,ENIAC(电子数值积分计算机)是世界上第一台通用电子计算机。它是为解决复杂的数学问题而设计的,并且使用了真空管作为核心组件,标志着计算机进入电子化时代。 + +#### 1.4 计算机科学的发展 +- **20世纪50年代至60年代**: + - 在这个时期,计算机科学开始形成一门独立的学科。随着Fortran(1957年)、Lisp(1958年)、COBOL(1959年)等早期编程语言的发明,计算机开始进入学术界和工业界的广泛使用。 + - 1960年,Edsger Dijkstra提出了“结构化编程”的概念,强调通过控制结构和模块化设计来减少程序中的错误。 + - 1965年,戈登·摩尔提出“摩尔定律”,指出芯片上可容纳的晶体管数目每隔两年就会增加一倍,从而推动了计算机硬件技术的迅猛发展。 + +--- + +### 2. 20世纪后期:信息学的爆发 + +#### 2.1 个人计算机的诞生 +- **20世纪70年代**: + - 微处理器的发明使得计算机成本大大降低,个人计算机的概念逐渐成形。1975年,Altair 8800问世,它被认为是首款大众化的个人计算机。随后,Apple、IBM等公司纷纷推出自己的个人计算机产品。 + - 微软推出了MS-DOS操作系统,苹果发布了图形用户界面(GUI)的Macintosh计算机,这些都极大地推动了计算机在个人和商业领域的普及。 + +#### 2.2 编程语言与软件开发 +- **C语言与Unix系统**: + - 1972年,丹尼斯·里奇(Dennis Ritchie)发明了C语言,它成为了现代操作系统和应用程序开发的核心语言。C语言的简洁性和高效性使其迅速普及,并成为许多编程语言的基础。 + - Unix操作系统的诞生(20世纪70年代早期)标志着操作系统的标准化,它的多任务处理和网络功能成为现代操作系统的基础。 +- **面向对象编程的兴起**: + - 20世纪80年代,面向对象编程(OOP)理念逐渐兴起,代表性的语言有Smalltalk和C++。这种编程范式通过封装、继承和多态性等特性提高了程序的可扩展性和可维护性。 + +#### 2.3 互联网的诞生与发展 +- **Arpanet与互联网**: + - 1969年,Arpanet是世界上第一个分组交换网络,它是互联网的前身。Arpanet最初是为美国国防部设计的网络,旨在通过分布式网络确保信息传递的安全性。 + - 1980年代末,Tim Berners-Lee发明了万维网(World Wide Web),使得互联网成为了一个全球性的信息共享平台。HTML(超文本标记语言)、HTTP(超文本传输协议)和URL(统一资源定位符)的发明为互联网的普及奠定了技术基础。 + +#### 2.4 数据库和信息管理的兴起 +- **关系数据库**: + - 1970年,埃德加·科德(Edgar F. Codd)提出了关系数据库模型,它使用表来存储数据,具有强大的查询能力。SQL(结构化查询语言)成为了关系数据库的标准查询语言。 + - Oracle、IBM、Microsoft等公司开发了商用关系数据库管理系统(RDBMS),推动了数据管理在企业中的应用。 +- **非关系型数据库(NoSQL)**: + - 随着互联网和大数据的崛起,传统的关系数据库在处理大规模、分布式数据时逐渐显现出局限性。NoSQL数据库,如MongoDB、Cassandra等,提供了高并发性和扩展性,成为大数据处理的主流工具。 + +--- + +### 3. 21世纪的信息革命 + +#### 3.1 大数据时代 +- **数据的指数级增长**: + - 进入21世纪,随着互联网、移动设备、社交媒体和物联网(IoT)的普及,数据量呈现指数级增长。大数据技术成为新的研究和应用热点。 + - Hadoop(2006年)和Spark等大数据处理框架相继问世,提供了分布式存储和处理能力,使得海量数据的处理变得可行。 + +#### 3.2 云计算的兴起 +- **云服务与虚拟化**: + - 云计算彻底改变了计算资源的使用方式。通过Amazon Web Services(AWS)、Google Cloud、Microsoft Azure等云服务平台,用户可以按需获取计算资源,而不必自己购买和维护硬件。 + - 虚拟化技术(如VMware、Docker)进一步提高了资源利用率和部署灵活性,推动了微服务架构的广泛应用。 + +#### 3.3 人工智能与深度学习 +- **机器学习与AI的崛起**: + - 随着数据和计算能力的增长,机器学习、特别是深度学习技术,在20世纪末和21世纪初迅速发展。AlexNet(2012年)使用卷积神经网络在ImageNet图像识别比赛中获得了突破性成果,标志着深度学习的崛起。 + - 人工智能在语音识别、自然语言处理、图像识别、自动驾驶等领域的应用,推动了智能化技术的广泛应用。 + +#### 3.4 区块链技术 +- **去中心化与加密货币**: + - 2008年,匿名人物“中本聪”提出了比特币的概念,基于区块链技术实现了一种去中心化的数字货币。区块链作为一种分布式账本技术,具有去中心化、不可篡改和透明性的特性,逐渐应用于金融、供应链管理等多个领域。 + +--- + +### 4. 信息学的未来展望 + +- **量子计算**:量子计算机的理论基础在20世纪末提出,目前仍处于早期发展阶段。如果成功实现,它将彻底颠覆现代计算机的计算能力,能够解决目前经典计算机无法处理的复杂问题。 +- **智能边缘计算**:随着5G和物联网的进一步发展,边缘计算将变得更加重要。它允许数据在网络的边缘处理,减少延迟,提升实时性。 +- **隐私保护与数据安全**:随着信息量的增长和隐私意识的提升,数据隐私保护和信息安全技术将成为关键领域。密码学、隐私计算、零知识证明等技术会得到更广泛的应用。 + +--- + +现代信息学不仅仅是计算的科学,更是信息处理、管理和传播的科学。随着技术的不断发展,信息学将继续在塑造社会、经济和文化方面发挥重要作用。 \ No newline at end of file diff --git a/notebook/docs/javascripts/katex.js b/notebook/docs/javascripts/katex.js new file mode 100644 index 00000000..db20eb34 --- /dev/null +++ b/notebook/docs/javascripts/katex.js @@ -0,0 +1,11 @@ +document$.subscribe(({ body }) => { + renderMathInElement(body, { + delimiters: [ + { left: "$$", right: "$$", display: true }, + { left: "$", right: "$", display: false }, + { left: "\\(", right: "\\)", display: false }, + { left: "\\[", right: "\\]", display: true }, + { left: "\[", right: "\]", display: true } + ], + }) +}) \ No newline at end of file diff --git a/notebook/docs/javascripts/mathjax.js b/notebook/docs/javascripts/mathjax.js new file mode 100644 index 00000000..63e06028 --- /dev/null +++ b/notebook/docs/javascripts/mathjax.js @@ -0,0 +1,7 @@ +// markdown_extensions: +// - pymdownx.arithmatex: +// generic: true +// +// extra_javascript: +// - javascripts/mathjax.js +// - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js \ No newline at end of file diff --git a/notebook/mkdocs.yml b/notebook/mkdocs.yml index 322f6e93..caaa92a9 100644 --- a/notebook/mkdocs.yml +++ b/notebook/mkdocs.yml @@ -11,7 +11,10 @@ nav: - 简介: - 介绍: index.md - 编程基础: - - 介绍: basic.md + - 基础概念: basic/program/program.md + - 信息学发展史(近代版): basic/program/信息学发展史(近现代).md + - 数学基础: + - 进制转换: basic/math/进制转换.md theme: name: material @@ -22,3 +25,23 @@ theme: font: text: 'Roboto' code: 'Roboto Mono' + +markdown_extensions: + - pymdownx.arithmatex: + generic: true + +extra_javascript: + - javascripts/katex.js + - https://unpkg.com/katex@0/dist/katex.min.js + - https://unpkg.com/katex@0/dist/contrib/auto-render.min.js + +extra_css: + - https://unpkg.com/katex@0/dist/katex.min.css + +#markdown_extensions: +# - pymdownx.arithmatex: +# generic: true +# +#extra_javascript: +# - javascripts/mathjax.js +# - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js \ No newline at end of file diff --git a/notebook/start.py b/notebook/start.py new file mode 100644 index 00000000..5ef7a8f4 --- /dev/null +++ b/notebook/start.py @@ -0,0 +1,5 @@ +import os +import subprocess + +# 运行 mkdocs serve 命令 +subprocess.run(['mkdocs', 'serve'])