当前位置: 首页 > news >正文

UNIX简史

        从1991年Linux出现至今,由于众多IT巨头以及技术社区的推动,Linux已经成为非常成熟、可用于各种关键领域的操作系统,适当了解其发展历史,对于理顺其技术流派、从而更好地学习和使用Linux具有重要意义。由于其基于UNIX系统二十多年的研发成果,要了解Linux的历史就要先了解UNIX的历史。笔者搜集整理了一些史料分享给大家,本篇先介绍UNIX的历史,有不当之处欢迎批评指正。
        UNIX由AT&T的贝尔实验室(BTL, Bell Telephone Labs)于1969年开发。UNIX源于一个叫MULTICS的项目,该项目于1964年发起,旨在开发一个可同时支持大量用户使用的计算机操作系统。除了BTL,通用电气(Generic Electrics)、麻省理工(MIT)也参与其中,但该项目并未成功(据说是因为进展过度缓慢被最终裁撤,也有人说是因为需求过于超前)。
        在项目进行期间,1969年,BTL的两名工程师Ken Thompson和Dennis Bitchie利用业余时间在一台闲置的DEC PDP7计算机上开发了一个最基本的操作系统内核,同年,Thompson经过两个多月的论证和开发,为该系统内核设计了文件系统,使文件能够在层次结构中有序地存放。
        后来,更多的人投入到了这项工作,这个项目也该有个名字了。因为MULTICS项目是“Multiplexed Information and Computer Services(多路信息和计算机服务)”的缩写,开发团队决定将他们的系统命名为“Unics”,表示“Unixplexed Information and Computer Service(综合信息和计算机服务)”,后来研究员Brian Kernighan干脆就将新系统叫做“Unix”。
         随着系统开发的推进,他们使用的PDP 7显得有些小了,他们需要一台更强的计算机。他们决定以开发新的文本处理程序为由向公司申请购买新的计算机。在当时,文本处理程序是非常受市场欢迎的——公司同意他们购买一台PDP 11。
        PDP 11到货后,他们发现只有CPU和内存,没有磁盘和操作系统,Thompson为它开发了一个驻留内存的RAM盘,一半用作磁盘,另一半用来运行操作系统。磁盘到货后,他们继续开发操作系统以及向公司许诺的文本处理程序。这个文本处理程序就是Troff,后来被用来制作UNIX的man手册。
    1971年11月,Thompson和Ritchie完成了程序员手册。1972年6月,UNIX的第二版V2诞生,此时UNIX的装机数量已经超过10台。
    1973年底,开发团队决定开一次发布会对外公开他们的成果。众多的IT机构和大学向他们申请UNIX的许可。因AT&T作为电信业垄断巨头(尤其是其垄断了长途电话业务),早就被美国司法部盯上,美国司法部在1958年与AT&T签订了一个和解协议,双方约定AT&T不进入计算机领域,不销售计算机相关产品,司法部不以《反托拉斯法》对其发起诉讼。由于这个原因,AT&T是免费向各机构和大学提供UNIX源代码的。但AT&T不向这些用户提供技术支持,也不为他们纠正系统中的错误,这些用户不得不联合起来形成社区来进行技术交流。他们创建了USENIX社区,意为“UNIX用户”,用来共享技术,他们曾在1974年5月举行了第一次交流会,虽然当时只有十多人参加,但对UNIX社区的发展起到了重要的推动作用。
    加州大学伯克利分校也获得了UNIX使用许可,它是Ken Thompson的母校。1975年Thompson回到母校任教,同时带去了最新版本的UNIX。两个刚毕业的学生Chuck Haley和Bill Joy也加入了对UNIX的进一步开发中(Bill Joy后来成为了SUN Microsystems的副总裁之一)。Joy完善了EX编辑器,使其最终演变成了著名的全屏幕编辑器VI。VI不依赖于特定类型的终端,通过Joy创建的TERMCAP通用终端系统与特定终端所对应的控制器结合使VI在各种类型的终端上都可以正确工作。Haley和Joy还开发了一个Pascal编译器,并将其加入了UNIX。Joy将伯克利分校的UNIX版本叫做BSD(Berkely Software Distribution)。
    Bill Joy在伯克利分校完成BSD4.1的开发后,离开伯克利加入了SUN Microsystems公司,在那里他完成了BSD 4.2的开发,在1983年他在此基础上创建了SUN版本的Unix——SunOS。

    再回到AT&T。从1977年开始AT&T开始将UNIX向Interdata和IBM计算机移植,在此之前,UNIX只能在PDP计算机运行。到1979年6月发布的UNIX Version 7是第一个可移植的UNIX版本,该版本还提供了更多的先进功能,如awk, lint, make, uucp等。此时系统手册已达到400页,另有两个各400页的附录。该版本还包含了Kernighan和Ritchie开发的C编译器,用来对UNIX的大部分代码进行重写;以及增强的shell(Bourne shell)、find、cpio、expr等命令。
    此时UNIX已作为计算机工业的一个重要领域开始被各大厂商重视,比如微软和SCO合作开发了Xenix,用于运行在Intel 8086平台的计算机上。AT&T意识到了UNIX是一个非常有商业价值的系统,它在Version 7的使用许可中以防止泄露商业机密为由阻止大学将其作为学术研究的范例,至此各大学只能将操作系统课程的传授限制在理论层面了。
    1983年AT&T发布了UNIX System V(SV),这是一个收费的商业化版本,不允许传播源代码。
    由于在1974年美国司法部再次起诉AT&T违反《反托拉斯法》,1982年哥伦比亚地区法庭判决AT&T败诉,1984年AT&T被拆成了8个小公司(一个新的AT&T和七个本地电话公司,分别是大西洋贝尔、西南贝尔、西部贝尔、太平洋贝尔、南方贝尔、亚美达科以及纽新公司,他们也被称为“贝尔七兄弟”)。这个判决实际上同时表示1958年的和解协议已经无效了,AT&T可以进军计算机领域了。所以拆分后AT&T依然继续开发System V。SV经过了多次修订,1989年发布的System V Release 4(SVR4)是最重要的一个版本,它首次结合了多个UNIX版本的特性,引入了其他厂商的技术,比如SUN Microsystems,实际上SVR4是AT&T和SUN Microsystems共同发布的,它标志着UNIX系统的进一步标准化和商业化。

    再看伯克利分校这边。AT&T对UNIX版权的控制使得伯克利分校仅能将其BSD分发给持有AT&T源码许可的公司,同时伯克利也开始着手在BSD中清除AT&T的代码。80年代后期,几个伯克利的学生成立了一个叫“Berkely Software Design Inc."的公司用来出售BSD的一个商业版本,1990年被AT&T指控其侵权并告上法庭,伯克利分校也成为被告。一直到1994年双方才达成和解,BSD得以继续发展。BSD分裂成不同的版本,FreeBSD,netBSD,OpenBSD(被认为最安全的UNIX)和TrustedBSD。实际上,在1994年和解之前,AT&T就已经将UNIX卖给了Novell,次年Novell又将UNIX卖给了SCO。

        这些年的时间里,各大厂商纷纷有了自己的UNIX产品,比如IBM的AIX,DEC的Ultrix,HP的HPUX,Microsoft与SCO合作开发的 Xenix,SUN的Solaries(SunOS的升级版本)。UNIX系统形成两大主要分支,即SVR4和BSD。所有现代的UNIX系统或多或少地都是基于这两个主流分支开发的。

    由于AT&T对UNIX版权的控制使大学在教授操作系统时没有了范例可用,1987年,荷兰阿姆斯特丹自由大学的美籍教授Andrew Tanenbaum(加州大学伯克利分校物理博士,《操作系统:设计与实现》的作者)决定自己写一个不含AT&T代码的UNIX兼容操作系统用于教学,他将他的系统叫做Minix。Minix就是Linux的前身,1991年芬兰学生Linus Torvalds在Minix的基础上创建了Linux。由于Linux作为开源软件,获得了众多厂商和技术社区的支持,在1995-1999年间,Linux得到很大的发展,支持多种硬件平台,成为商业UNIX的有力竞争对手。

    回望历史,对于UNIX版权的控制深深地影响了UNIX的发展历程。由于IBM在支持Linux时使用了部分AT&T原始代码,掌握版权地SCO在2001年对IBM进行了长达18年的诉讼案,期间SCO的言行表现使得SCO被UNIX世界边缘化了,从现在来看,从SCO拿到UNIX版权的时候,UNIX原始版本的开发就已经结束了。在UNIX的发展过程中形成了一系列的工业标准,比如IEEE POSIX,UNIX97,FHS等,Linux的开发也会参考或升级这些标准。

        下面是笔者从某教材中截取的UNIX发展历史简图,供大家参考。


 

相关文章:

UNIX简史

从1991年Linux出现至今,由于众多IT巨头以及技术社区的推动,Linux已经成为非常成熟、可用于各种关键领域的操作系统,适当了解其发展历史,对于理顺其技术流派、从而更好地学习和使用Linux具有重要意义。由于其基于UNIX系统二十多年的…...

python学opencv|读取图像(十三)BGR图像和HSV图像互相转换深入

【1】引言 前序学习过程中,我们偶然发现:如果原始图像是png格式,将其从BGR转向HSV,再从HSV转回BGR后,图像的效果要好于JPG格式。 文章链接为: python学opencv|读取图像(十二)BGR图…...

ElasticSearch 搜索、排序、分页功能

一、DSL 查询文档 ElasticSearch 的查询依然是基于 json 风格的 DSL 来实现的。 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.15/query-dsl.html 1.1 DSL 查询分类 常见的查询类型包括: 查询所有:查询出所有数…...

MAC虚拟机上安装WDA环境

MAC虚拟机上安装WDA环境 一、MAC虚拟机切换root权限二、macOS上安装xcode若你的macOS系统可以在appstore下载安装若你安装的macOS系统版本太低,无法在appstore上安装xcode 三、macOS上安装WebDriverAgent四、使用xcode配置WDA安装到手机上高版本系统支持 一、MAC虚拟…...

KDD 2025预讲会:10位一作的论文分享与话题思辨|12月18日全天直播

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 圆桌思辨:一作们的KDD 2025投稿经验分享与热点探讨 1. KDD 2025 与往年相比有哪些新变化?两次投稿周期的新规则有哪些影响? 2. 第一篇KDD的工作是如何成功被接收的&#xff1…...

Input system手游的控制

手游离不开触屏控制 新的inputsystem 实现过程 安装input system在projectsetting中的player的othersettings中active input handing设置both打开window的analysis的input debugger。在options中设置为simulate touch input from mouse or pen。 增强触摸控制的相关知识 启…...

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c 1. Installing the extension (在 Visual Studio Code 中安装插件)1.1. Extensions for Visual Studio Code1.2. C/C1.2.1. Pre-requisites 1.3. Makefile Tools 2. Configuring your project (配置项目)2.1.…...

KMP 算法

这里写目录标题 KMP数组计算方式**问题描述****初始准备****逐步推导过程****Step 1: i 1,子串为 ab****Step 2: i 2,子串为 aba****Step 3: i 3,子串为 abab****Step 4: i 4,子串为 ababa****Step 5: i 5,子串为…...

计算机网络中的三大交换技术详解与实现

目录 计算机网络中的三大交换技术详解与实现1. 计算机网络中的交换技术概述1.1 交换技术的意义1.2 三大交换技术简介 2. 电路交换技术2.1 理论介绍2.2 Python实现及代码详解2.3 案例分析 3. 分组交换技术3.1 理论介绍3.2 Python实现及代码详解3.3 案例分析 4. 报文交换技术4.1 …...

echarts图表自定义配置(二)——代码封装

下图是初版,火山图的代码。可以看出,里面的变量,逻辑,函数存在冗余,基本上都是改了参数,同样的get和set,去刷新图表;对于往后继续开发十几二十个图表,会很麻烦。因此需要…...

Serdes技术与Xilinx GT概览

目录 一、前言 二、Serdes技术 2.1 芯片间信号传输 2.2 Serdes技术 三、 Xilinx GT 3.1 7系列器件GT 3.2 Ultrascale GT 3.3 Ultrascale GT 四、参考资料 一、前言 对于芯片间高速信号传输技术,不得不提serdes以及在Xilinx在此基础上的高速收发器GT系列&…...

WEB开发: Node.js路由之由浅入深(三)自动配置路由 - 全栈工程师入门

前面我们一起学习了Node.js路由的两个进阶, (1)WEB开发: Node.js路由之由浅入深(一) - 全栈工程师入门 (2)WEB开发: Node.js路由之由浅入深(二)…...

6-9 捕获 0 异常(1)

中断号的 处理是这样的。 1、 cpu 根据中断号 去中断向量表 去找 第几个 表。、 2、 而 中断向量表 的内容是 GDT 的选择子。 3、 由于使用是的 平坦模型,所以只需要 将具体的函数给到 中断向量表的 offset 字段就可以了。 接下来 就是 在 代码中定义 中断门的属…...

社区团购创新模式与新兴技术融合的深度探索:基于开源、AI 智能名片、2+1 链动模式与 S2B2C 商城小程序

摘要:本文聚焦于社区团购这一新兴零售业态,深入剖析其“线上预售,线下自提,以销定采,落地集配”的 16 字箴言所蕴含的商业逻辑。详细探讨在物流与信息流层面社区团购的独特优势,并在此基础上研究开源理念、…...

day45 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

198.打家劫舍 相邻的房子不可以打劫&#xff0c;所以递推式需要考虑&#xff1b; 初始化也需要考虑&#xff0c;可以从两个方向入手 方向1&#xff1a;从后往前看&#xff0c;dp[i] dp[i-1] class Solution { public:int rob(vector<int>& nums) {if (nums.size(…...

SQL server学习02-使用T-SQL创建数据库

目录 一&#xff0c; 使用T-SQL创建数据库 1&#xff0c;数据库的存储结构 2&#xff0c;创建数据库的语法结构 1&#xff09;使用T-SQL创建学生成绩管理数据库 二&#xff0c;使用T-SQL修改数据库 1&#xff0c;修改数据库的语法结构 1&#xff09;修改学生成绩管理数…...

绘图方式集合

1. 流程图 1.1 PlantUML 代码绘制流程图 1.1.1 简介 1.1.2 网站 你可以使用以下网站来将 PlantUML 代码转换成可视化的流程图&#xff1a; PlantUML 官方网站 网站地址&#xff1a;https://plantuml.com/plantuml此网站提供了一个在线工具&#xff0c;可以直接输入 PlantUM…...

sqoop导入hdfs,hive

sqoop将mysql中的表导入到hdfs中 sqoop import \ > --connect jdbc:mysql://192.168.52.150/test \ > --username root \ > --password 123456 \ > --table emp \ > --delete-target-dir \ > --target-dir /sqoop_works/emp_1将数据导入hive中&#xff0c;首…...

C语言动态内存管理【进阶--5--】

文章目录 [toc] 动态内存管理一、作用即意义二、动态内存函数的介绍Ⅰ、malloc()函数、free()函数Ⅱ、calloc()函数Ⅲ、realloc()函数 三、常见的动态内存错误Ⅰ、对NULL指针的解引用操作Ⅱ、对动态开辟空间的越界访问Ⅲ、对非动态开辟的内存使用free释放Ⅳ、使用free释放动态开…...

Hadoop其四,片与块,MapReduce原理,Shuffle过程,Combiner

目录 一、关于片和块 二、MapReduce的原理 MapTask执行阶段 ReduceTask的执行流程&#xff1a; 三、Shuffle 过程 map端&#xff1a; reduce端&#xff1a; 环形缓冲区&#xff1a; 四、Combiner 【可有可无】 五、需要记忆的内容 一、关于片和块 假如我现在500M这样…...

引领未来的变革:15种前沿RAG技术及其应用探索

在现代人工智能领域&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术逐渐成为推动各种应用的重要力量。这些技术通过结合信息检索与文本生成&#xff0c;能够更有效地处理和利用信息。本文将详细介绍15种前沿RAG技术及其具体应用实例&#xff0c;以帮助您更好地理解这…...

gradle在IDEA 中无法使用的启动守护线程的问题

最近打开一个比较早的项目&#xff0c;Gradle 配置没有问题&#xff0c;IDEA 打开Java项目却不能初始化守护线程&#xff0c;UI 上只能看到失败&#xff0c;看不到具体原因。 首先尝试了升级最新的gradle 版本8.11, 实际上这个版本在本地命令行都不能正常工作&#xff0c;没有…...

C++小白实习日记——Pollnet,Efvi,UDP,数据类型转换(上)

上周主要是熟悉了一下公司内部一些自定义结构体对应的数据类型&#xff0c;要求&#xff1a;读取文件&#xff0c;将文件中数据转化为定义的结构体中的数据类型&#xff0c;按照时间进行排序&#xff0c;用UDP发送数据&#xff1b;在另一台服务器上接收数据&#xff0c;按照定义…...

git安装教程(Git-2.38.1-64-bit)

目录 一、git下载 二、git安装 1.更改安装路径 2.安装组件 3.选择开始菜单文件夹 4.选择Git默认编辑器 5.决定初始化新项目&#xff08;仓库&#xff09;的主干名字 6.修改Git的环境变量 7.选择SSH执行文件 9.选择HTTPS后端传输 10.配置行尾符号转换 11.配置终端模…...

C# OpenCvSharp DNN 实现百度网盘AI大赛-表格检测第2名方案第三部分-表格方向识别

目录 说明 效果 模型 项目 ​编辑 代码 参考 下载 其他 说明 百度网盘AI大赛-表格检测的第2名方案。 该算法包含表格边界框检测、表格分割和表格方向识别三个部分&#xff0c;首先&#xff0c;ppyoloe-plus-x 对边界框进行预测&#xff0c;并对置信度较高的表格边界…...

selenium 验证码滑块对齐没有验证通过

描述&#xff1a; 最近使用seleniuim采集有滑块验证码的数据&#xff0c;遇到了移动滑块对齐后&#xff0c;还是无法通过验证&#xff0c;经过模拟真人多次移动、控制移动时间(避免过快)一番尝试后、最终通过模拟抖动得以解决 解决办法&#xff1a; 把yoffset的值改为-6~6的…...

【Neo4J】neo4j docker容器下的备份与恢复

文章目录 一. 官网说明1. 操作说明2. 注意事项 二. docker 容器化操作1. 导出&#xff08;备份&#xff09;停止容器执行备份 2. 导入&#xff08;恢复&#xff09;停止容器(如果未停止)执行导入 3. 启动容器 一. 官网说明 https://neo4j.com/docs/operations-manual/current/…...

Java实现雪花算法获取id

Java实现雪花算法获取id 在 Java 中实现雪花算法&#xff08;Snowflake&#xff09;时&#xff0c;通常会设计一个工具类来生成全局唯一的 ID。这个工具类可以封装雪花算法的逻辑&#xff0c;并提供简单的接口来生成 ID。 以下是一个完整的 Java 工具类实现雪花算法的例子&am…...

Leetcode1338:数组大小减半

题目描述&#xff1a; 给你一个整数数组 arr。你可以从中选出一个整数集合&#xff0c;并删除这些整数在数组中的每次出现。 返回 至少 能删除数组中的一半整数的整数集合的最小大小。 代码思路&#xff1a; 这个代码的目的是解决一个特定的问题&#xff1a;给定一个整数数…...

【系统思辨】分散注意

注意力在我们的日常生活和工作中扮演着至关重要的角色。注意力可以提高效率和准确性、减少错误和失误&#xff0c;提升学习效率&#xff0c;促进创造力。与此同时&#xff0c;各种各样的生活事件在分散我们的注意力&#xff0c;并且还有很多分散我们注意的手段&#xff0c;比如…...

微信小程序中 Echarts 的巧妙运用

一、引入 Echarts 的准备工作 在微信小程序中引入 Echarts 需要进行一系列的准备工作。首先&#xff0c;我们可以从 echarts 官网或 GitHub 上下载 echarts-for-weixin 项目。找到其中的 ec-canvas 文件夹&#xff0c;这个文件夹将是我们引入到微信小程序项目中的关键部分。 …...

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 听名字有点熟&#xff0c;我们在图像旋转里接触过仿射变换&#xff0c;知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程&#xff0c;转换过程坐标点的相对位置和属性不发生变换&a…...

Gate学习(7)引入体素源

一、从GitHub下载体素源模型源码 下载地址&#xff1a;BenAuer2021/Phantoms-for-Nuclear-Medicine-Imaging-Simulation&#xff1a;用于核医学成像应用的模型&#xff08;闪烁显像、SPECT 和 PET&#xff09; --- BenAuer2021/Phantoms-For-Nuclear-Medicine-Imaging-Simulat…...

腾讯微信Android面试题及参考答案(多张原理图)

Android 应用的启动流程如下: 当用户点击应用图标时,首先会通过 Launcher(桌面启动器)来响应这个操作。Launcher 本身也是一个 Android 应用,它运行在系统中,负责管理和显示桌面上的图标等信息。 系统会检查应用是否已经有进程存在。如果没有,就会通过 Zygote 进程来孵化…...

【Android】View的工作流程

View的工作流程 开始了解一下View的工作流程&#xff0c;就是measure、layout和draw。measure用来测量View的宽高&#xff0c;layout用来确定View的位置&#xff0c;draw则用来绘制View。这一讲我们来看看measure流程&#xff0c;measure流程分为View的measure流程和ViewGroup…...

Linux基础指令

使用 tab 键补全 我们敲的所有的 Linux 命令 , 都可以使用 tab 键来尝试补全 , 加快效率 . 使用 ctrl c 重新输入 如果命令或者目录敲错了 , 可以 ctrl c 取消当前的命令 . ls &#xff1a;列出当前目录中的文件和子目录 语法 &#xff1a; ls [ 选项 ] [ 目录或文…...

Gemini 2.0 Flash重磅发布:多模态AI大模型,赋能实时交互与智能助手新体验

点击访问 chatTools 免费体验GPT最新模型&#xff0c;包括o1推理模型、GPT4o、Claude、Gemini等模型&#xff01; 在AI领域竞争日益激烈的今天&#xff0c;谷歌再次亮剑&#xff0c;推出了新一代至强AI大模型——Gemini 2.0 Flash。这款模型不仅具备强大的多模态输入输出能力&a…...

项目十二 杜甫作品问卷

【项目目标】 理解网格系统的原理。理解媒体查询的工作原理。【項目内容】 使用网格系统进行响应式网页设计。运用媒体查询对不同类型的设备应用不同的样式。【项目步骤】 Bootstrap 框架资源既可以直接从 CDN 服务商服务器中引入,也可以加入本地素材文件夹中给出的资…...

7_Sass Introspection 函数 --[CSS预处理]

Sass 的 Introspection 函数允许开发者检查和操作样式表的内部结构&#xff0c;包括选择器、属性、值等。这些函数提供了对编译过程中 Sass 文件内容的深入访问能力&#xff0c;使得更复杂的逻辑处理成为可能。以下是一些常用的 Sass Introspection 函数及其用法示例&#xff1…...

Qt:Q_GLOBAL_STATIC实现单例(附带单例使用和内存管理)

转载 https://blog.csdn.net/m0_71489826/article/details/142288179 前言 本文主要写Q_GLOBAL_STATIC实现单例以及单例的释放&#xff0c;网上很多教程只有单例的创建&#xff0c;但是并没有告诉我们单例的内存管理&#xff0c;这就很头疼。 正文 使用 Qt 的 Q_GLOBAL_STA…...

HTML/CSS总结

HTML 1.1 标题标签h 为了使网页更具有语义化&#xff0c;我们经常会在页面中用到标题标签&#xff0c;HTML提供了6个等级的标题&#xff0c;即 标题标签语义&#xff1a; 作为标题使用&#xff0c;并且依据重要性递减 其基本语法格式如下&#xff1a; <h1> 标题文本…...

字符串性能对比

效率(1) : String.indexOf与String.contains效率测试_string contains效率-CSDN博客 结论是前者效率高&#xff0c;源码里面conatins是使用indexof 在jdk8中contains直接调用的indexOf(其他版本没有验证),所以要说效率来说肯定是indexOf高,但contains也就多了一层方法栈,so 什…...

【漫话机器学习系列】005.神经网络的结构(architecture on the neural network)

神经网络&#xff08;Neural Network&#xff09;是一种模拟人脑神经系统的计算模型&#xff0c;由大量相互连接的神经元&#xff08;节点&#xff09;组成&#xff0c;广泛应用于深度学习和机器学习领域。以下是神经网络的基本结构及关键组成部分。 1. 神经网络的基本组成 一…...

关卡选择与布局器

unity布局管理器 使用unity布局管理器轻松对关卡选择进行布局。 实现过程 准备普通按钮button设置字体和对应的sprite设置父gameobject&#xff08;levelbase&#xff09; 再创建UI.image&#xff08;selectbackground&#xff09;布局背景和大小gameobject&#xff08;grid…...

数据分析实战—房价特征关系

1.实战内容 &#xff08;1&#xff09; 读取房价特征关系表&#xff08;house_price.npz&#xff09;绘制离地铁站的距离与单位面积的房价的散点图&#xff0c;并对其进行分析&#xff1b; import pandas as pd import numpy as np import warnings warnings.filterwarnings(&…...

@ResponseBody详解

ResponseBody 是 Spring Framework 中的一种注解&#xff0c;用于表示返回的内容应该直接写入 HTTP 响应体&#xff0c;而不是通过视图解析器来渲染一个视图&#xff08;如 JSP 页&#xff09;。当你在控制器的方法上使用 ResponseBody 时&#xff0c;Spring 会将方法的返回值直…...

Harmony Next开发通过bindSheet绑定半模态窗口

示例概述 Harmony Next开发通过bindSheet绑定半模态窗口 知识点 半模态窗口父子组件传值 组件 LoginComponent Component struct LoginComponent {// Prop 父子单项绑定值Prop message:string // Link 父子双向绑定值Link userName:stringLink password:stringLink isSh…...

Redis--高并发分布式结构

目录 一、引言 二、redis 1.什么是redis&#xff1f; 三、基础概念 1.什么是分布式&#xff1f; 2.应用服务和数据库服务分离 3.负载均衡 4.分库分表 5.微服务架构 四、总结 一、引言 本篇文章就简单介绍一下什么是redis&#xff0c;以及一些关于高并发和分布式结构的…...

Day38 动态规划part06

322. 零钱兑换 如果求组合数就是外层for循环遍历物品,内层for遍历背包。 如果求排列数就是外层for遍历背包,内层for循环遍历物品。 这句话结合本题 大家要好好理解。 视频讲解:动态规划之完全背包,装满背包最少的物品件数是多少?| LeetCode:322.零钱兑换_哔哩哔哩_bilib…...

1.1 类型(types)

源码 types.rs文件源码&#xff1a; use euclid::{Point2D, Vector2D};//引用外部泛型/// 绘图中所有事物所使用的笛卡尔坐标系。The cartesian coordinate system used by everything in a drawing. #[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)] pub enu…...