2024-2025-1 学号20241315《计算机基础与程序设计》第十一周学习总结

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11
这个作业的目标 <写上具体方面>计算机网络 网络拓扑 云计算 网络安全 WebHTML,CSS,Javascript XML
作业正文 https://www.cnblogs.com/tanzitian11/p/18592779

教材学习内容总结

计算机科学概论学习

计算机网络的定义与组成
定义:计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
组成部分:
硬件:包括计算机(服务器、客户端)、网络接口卡(NIC)、传输介质(如双绞线、光纤、同轴电缆)、网络连接设备(如路由器、交换机、集线器)。例如,服务器用于存储和管理网络资源,网络接口卡使计算机能够连接到网络,双绞线常用于短距离的以太网连接,路由器则用于连接不同的网络并转发数据包。
软件:主要有网络操作系统(如 Windows Server、Linux 等)、网络协议软件和网络应用程序。网络操作系统管理网络中的资源和用户,网络协议软件确保数据能够正确地在网络中传输,网络应用程序(如浏览器、电子邮件客户端等)是用户使用网络服务的工具。
协议:网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,TCP/IP 协议族是互联网的基础协议,其中 TCP 协议负责可靠的数据传输,IP 协议负责数据的路由和寻址。
计算机网络的分类
按地理范围分类:
局域网(LAN):覆盖范围较小,一般在几十米到几千米范围内,如家庭网络、办公室网络。它的特点是传输速率高、延迟低,通常采用以太网技术,使用双绞线或光纤作为传输介质。
城域网(MAN):介于局域网和广域网之间,覆盖范围一般是一个城市,距离可达几十千米。城域网可以连接多个局域网,实现城市范围内的资源共享和通信,通常采用光纤作为主要传输介质。
广域网(WAN):覆盖范围很广,可以是一个国家或全球范围,如互联网就是最大的广域网。广域网通过通信运营商的通信线路(如光纤、卫星通信等)将不同地区的网络连接起来,其传输速率相对较低,延迟较高。
互联网连接的基本原理
数据传输过程:当用户设备(如计算机、智能手机)想要访问互联网上的资源时,数据会从本地设备出发,经过一系列网络设备最终到达目标服务器。这个过程中,数据会被分割成一个个小的数据包。例如,在浏览网页时,浏览器发送的请求数据(如获取网页内容的 HTTP 请求)会被封装成数据包。这些数据包包含了源 IP 地址(用户设备的 IP 地址)、目标 IP 地址(服务器的 IP 地址)、端口号(用于标识应用程序)和数据内容等信息。
IP 路由:数据包在网络中的传输是依靠 IP 路由来实现的。互联网是由众多的网络组成的,每个网络都有自己的路由器。路由器会根据数据包的目标 IP 地址,通过查询路由表来确定数据包应该转发到哪个下一跳网络。路由表包含了网络地址和对应的下一跳接口或下一跳 IP 地址的信息。例如,当一个数据包从家庭网络发往互联网上的一个网站服务器时,家庭网络的路由器会将数据包转发到互联网服务提供商(ISP)的网络,然后经过多个 ISP 的路由器逐步转发,直到数据包到达目标服务器所在的网络。
域名系统(DNS)的作用:由于 IP 地址是一串数字,很难记忆,因此引入了域名系统。DNS 服务器负责将域名(如www.example.com)解析为对应的 IP 地址。当用户在浏览器中输入域名时,浏览器会首先向 DNS 服务器发送查询请求。DNS 服务器通过查询自己的数据库或者递归查询其他 DNS 服务器,找到域名对应的 IP 地址并返回给浏览器。之后,浏览器就可以使用这个 IP 地址来建立与目标服务器的连接并获取资源。

开放式系统的概念
定义与特点
开放式系统是一种计算机系统或软件系统,它的设计遵循开放标准,允许不同厂商的设备、软件相互兼容和交互操作。其核心特点是开放性,这意味着系统的接口、协议、规范等都是公开透明的。例如,在计算机硬件领域,开放式系统允许用户使用不同品牌的硬件组件来构建计算机系统,只要这些组件符合相应的开放标准,如主板上的扩展插槽标准(PCI、PCI - e 等),用户可以选择不同厂商生产的符合 PCI - e 标准的显卡插入主板,实现图形处理功能。
互操作性也是开放式系统的重要特性。不同的软件或硬件在开放式系统环境下能够协同工作。以企业级软件系统为例,一个开放式的企业资源规划(ERP)系统可以与不同供应商的客户关系管理(CRM)系统进行数据交互和业务流程整合,只要它们遵循共同的开放接口标准,如通过标准化的应用程序编程接口(API)来交换数据,实现销售订单从 CRM 系统到 ERP 系统的无缝传递,提高企业运营效率。

云计算的基本概念
定义:云计算是一种通过互联网提供计算服务(包括服务器、存储、数据库、网络、软件、分析等)的模式。这些计算服务可以根据用户的需求进行快速提供和释放,用户无需像传统模式那样购买和维护大量的硬件设备和软件许可证。例如,一个小型创业公司如果想要搭建一个电商网站,以往需要购买服务器、存储设备,还要安装操作系统、数据库软件等,现在通过云计算服务,只需要在云服务提供商的平台上选择相应的计算资源、存储资源和软件服务,就可以快速搭建起网站。
特点:
按需自助服务:用户可以根据自己的需求,通过云服务提供商的控制台或 API,自行选择和配置所需的计算资源,如选择服务器的配置(CPU 核心数、内存大小等)、存储容量等,就像在超市购物一样方便。
广泛的网络访问:云计算服务是通过互联网提供的,用户可以使用各种终端设备(如电脑、智能手机、平板电脑),只要有网络连接,就可以访问和使用云服务。例如,用户可以在手机上使用云存储服务来查看和管理自己的文件。
资源池化:云服务提供商将大量的计算资源(服务器、存储、网络等)集中起来,形成资源池。这些资源可以根据用户的需求灵活分配,多个用户可以共享这些资源,就像住在公寓里的居民共享水电等资源一样。例如,一个云数据中心的服务器可以同时为多个不同的企业提供网站托管服务。
快速弹性伸缩:用户可以根据业务的变化,快速地增加或减少使用的资源。例如,一家电商企业在促销活动期间,流量大增,可以迅速增加服务器的数量来应对高流量,活动结束后再减少资源使用,避免浪费。
可计量的服务:云服务是可以计量的,用户根据使用的资源量(如使用的存储空间大小、服务器使用时间、数据传输量等)来付费,就像使用水电一样,使用多少付多少钱。
区块链的知识
区块链的基本概念
定义:区块链是一种分布式账本技术,它是由一系列按照时间顺序相连的区块组成的链式数据结构。每个区块包含了一定时间内产生的交易信息,这些信息通过密码学算法进行加密和验证。例如,在比特币系统中,区块链记录了每一笔比特币的交易,包括交易的发送方、接收方和交易金额等信息。
万维网的基本概念
定义:万维网(World Wide Web,简称 WWW 或 Web)是存储在 Internet 计算机中数量巨大的文档的集合,是一个由许多互相链接的超文本组成的系统,通过互联网访问。
组成部分:万维网主要由三部分组成,分别是超文本标记语言(HTML)、超文本传输协议(HTTP)和统一资源定位符(URL)。其中,HTML 用于创建网页的结构和内容;HTTP 规定了浏览器与服务器之间的通信规则;URL 则用于标识互联网上的各种资源的位置。
HTML(超文本标记语言)知识
基本概念:HTML 是用于创建网页结构和内容的标记语言。它使用各种标签来定义网页中的元素,如标题、段落、链接、图像等。这些标签由尖括号包围,例如、等。HTML 文档就像是一个建筑蓝图,规定了网页各个部分的布局和内容。
文档结构:
:这是 HTML5 文档类型声明,告诉浏览器这个文档是按照 HTML5 标准编写的。它应该位于 HTML 文档的最开头。
标签:是 HTML 文档的根标签,所有其他的 HTML 标签都应该包含在这个标签内部。它分为和两个部分。
head标签:包含了文档的元数据,如文档标题(title标签)、样式表引用、脚本引用等。这些信息不会直接显示在网页内容区域,但对于浏览器理解和呈现网页很重要.
body标签:包含了网页中所有可见的内容,如文本、图像、链接、表格等。
常用标签:
标题标签:h1 - h6,用于定义网页中的标题级别,h1表示最高级别的标题,通常用于页面的主标题,h6表示最低级别的标题。例如:h1这是主标题/h1。
段落标签:p用于定义段落。例如:p这是一个段落内容。/p。
链接标签:a用于创建超链接。它的属性包括 href(指定链接的目标地址)和 target(指定链接在何处打开,如_blank 表示在新窗口打开)。例如:a href="https://www.example.com" target="_blank"点击这里访问示例网站/a。
图像标签:用于在网页中插入图像。它的属性包括 src(指定图像的来源路径)、alt(当图像无法显示时的替代文本)等。例如:img src="image.jpg" alt="这是一张示例图片"。
CSS(层叠样式表)知识
基本概念:CSS 用于控制网页的样式和布局,它可以使 HTML 页面更加美观和易于阅读。CSS 的规则由选择器和声明块组成。选择器用于选择要应用样式的 HTML 元素,声明块包含一个或多个属性 - 值对,用于定义元素的样式。例如,p { color: red; }这个 CSS 规则中,p是选择器,{ color: red; }是声明块,它将所有的

段落元素的文本颜色设置为红色。

Java 小程序(Applet)概述
定义:Java 小程序是一种嵌入在 HTML 页面中,通过支持 Java 的浏览器来运行的小型 Java 程序。它扩展了网页的功能,使网页能够具备更复杂的交互性和动态行为。例如,在早期的网页游戏或者具有动态图形效果的网页中,Java 小程序发挥了重要作用。
JSP(Java Server Pages)基本概念
定义与作用:JSP 是一种基于 Java 的服务器端技术,用于创建动态网页。它允许将 Java 代码嵌入到 HTML 页面中,使得网页内容可以根据不同的条件(如用户输入、数据库数据等)动态生成。例如,一个新闻网站可以使用 JSP 来根据用户的浏览历史或搜索关键词动态显示相关的新闻文章。
工作原理:当客户端(通常是浏览器)请求一个 JSP 页面时,服务器首先会将 JSP 页面转换为一个 Java Servlet。Servlet 是一个运行在服务器端的 Java 程序,它负责处理客户端请求并生成响应。这个转换过程是由 JSP 容器(如 Apache Tomcat)完成的。然后,Servlet 会被编译并执行,生成的动态内容会以 HTML 的形式返回给客户端浏览器。
JSP 语法基础
脚本元素:
表达式(<%= %>):用于在 JSP 页面中嵌入 Java 表达式,表达式的结果会直接输出到 HTML 页面中。例如,<%= 2 + 3 %>会在页面中输出数字 5。
脚本片段(<% %>):可以在其中编写完整的 Java 代码块。例如,可以在脚本片段中编写循环或条件语句来控制页面内容的生成。

XML(可扩展标记语言)的基本概念
定义与用途:XML 是一种标记语言,用于存储和传输数据。它的设计宗旨是既具有良好的可读性,又能方便地被机器解析。与 HTML 主要用于展示网页内容不同,XML 更侧重于数据的描述和交换。例如,在企业间的电子数据交换(EDI)中,XML 可以用来定义订单、发票等业务数据的格式,使得不同企业的信息系统能够准确地理解和处理这些数据。

c语言第10章教材学习

字符串定义
在 C 语言中,字符串是用双引号括起来的字符序列,例如 "Hello, World!"。从本质上讲,字符串是以 '\0'(空字符)结尾的字符数组。
可以通过字符数组来定义字符串,例如:char str[20] = "Hello";,这里定义了一个长度为 20 的字符数组 str,并初始化为 "Hello"。字符数组的大小应该足够容纳字符串中的字符以及结尾的 '\0' 字符。
字符串的存储
字符串在内存中是连续存储的,每个字符占用一个字节的存储空间。以 char str[6] = "Hello"; 为例,在内存中存储的内容为 'H'、'e'、'l'、'l'、'o'、'\0'。
当使用指针来处理字符串时,例如 char *p = "Hello";,p 指向字符串常量 "Hello" 存储区域的首地址,这个字符串常量通常存储在只读数据段,不能被修改。
字符串操作函数
strcpy 函数
功能:将一个字符串复制到另一个字符串中。
原型:char *strcpy(char *dest, const char *src);。例如:

     char str1[20];
     char str2[] = "Copy this string";
     strcpy(str1, str2);

运行后,str1 的内容变为 "Hello, World!"。同样,dest 必须有足够的空间来容纳连接后的字符串。
strcmp 函数
功能:比较两个字符串的大小。
原型:int strcmp(const char *s1, const char *s2);。
比较规则:按照字符的 ASCII 码值,从左到右逐个字符比较。如果 s1 小于 s2,返回一个负整数;如果 s1 等于 s2,返回 0;如果 s1 大于 s2,返回一个正整数。例如:

      char str1[] = "apple";
      char str2[] = "banana";
      int result = strcmp(str1, str2);

这里 result 的值为负,因为 "apple" 在字典序上小于 "banana"。
字符串的输入输出
输入
可以使用 scanf 函数来输入字符串,例如:scanf("%s", str);,但是 scanf 在读取字符串时,遇到空格、制表符或换行符就会停止。如果要读取包含空格的整行字符串,可以使用 fgets 函数,例如:fgets(str, sizeof(str), stdin);。不过 fgets 会读取换行符并存储到字符串中,可能需要根据实际情况进行处理。
输出
可以使用 printf 函数输出字符串,例如:printf("%s", str);。它会从字符串的首地址开始,逐个字符输出,直到遇到 '\0' 字符为止。
遍历字符串
可以使用循环来遍历字符串中的字符。例如,使用 for 循环:

 ```
 char str[] = "Hello";
 for(int i = 0; str[i]!='\0'; i++){
   // 对str[i]进行操作,比如打印每个字符
   printf("%c", str[i]);
 }
也可以**使用指针**来遍历字符串,例如:

    ```
     char str[] = "World";
     char *p = str;
     while(*p!='\0'){
       printf("%c", *p);
       p++;
     }

字符串数组
可以定义一个字符串数组,例如:char strArray[3][20] = {"Apple", "Banana", "Cherry"};,这是一个二维字符数组,其中包含 3 个字符串,每个字符串的最大长度为 20(包括 '\0')。
访问字符串数组中的字符串可以像访问普通二维数组一样,例如 printf("%s", strArray[1]); 会输出 "Banana"。

使用字符数组传递字符串
原理:在 C 语言中,字符串本质上是一个以'\0'(空字符)结尾的字符数组。当你把字符数组作为参数传递给函数时,实际上传递的是数组的首地址,也就是指向字符串第一个字符的指针。

#include <stdio.h>
// 函数声明,参数为字符数组
void printString(char str[]) {
    printf("%s\n", str);
}
int main() {
    char myString[] = "Hello, World!";
    printString(myString);
    return 0;
}

解释:在main函数中定义了一个字符数组myString,并初始化为"Hello, World!"。当调用printString函数并将myString作为参数传递时,printString函数中的str就指向了myString数组的第一个字符H。在printString函数内部,通过%s格式化输出字符串,从str所指向的位置开始,一直打印字符,直到遇到'\0'为止。

使用字符指针传递字符串
原理:字符指针可以直接指向一个字符串常量或者存储字符串的内存地址。当通过字符指针传递字符串时,和使用字符数组传递类似,传递的也是字符串的首地址。

#include <stdio.h>
// 函数声明,参数为字符指针
void printString(char *str) {
    printf("%s\n", str);
}
int main() {
    char *myString = "Hello, World!";
    printString(myString);
    return 0;
}

返回静态字符串
原理:可以在函数内部定义一个静态(static)的字符串,然后返回这个字符串的指针。由于静态变量存储在静态存储区,其生命周期是整个程序运行期间,所以即使函数执行结束,该字符串仍然存在。

#include <stdio.h>
char *getStaticString() {
    static char str[] = "Hello, Static String!";
    return str;
}
int main() {
    char *result = getStaticString();
    printf("%s\n", result);
    return 0;
}

解释:在getStaticString函数中,定义了一个静态字符数组str,并初始化为"Hello, Static String!"。这个函数返回str的指针。在main函数中,调用getStaticString函数,并将返回的指针存储在result中,然后通过printf函数使用%s格式化输出这个字符串。
返回动态分配内存的字符串指针
原理:使用malloc等函数在堆上动态分配内存来存储字符串,然后返回这个动态分配内存的指针。需要注意的是,在使用完这个字符串后,要使用free函数释放内存,以避免内存泄漏。

#include <stdio.h>
#include <stdlib.h>
char *getDynamicString() {
    char *str = (char *)malloc(sizeof(char) * 20);
    if (str == NULL) {
        return NULL;
    }
    sprintf(str, "Hello, Dynamic String!");
    return str;
}
int main() {
    char *result = getDynamicString();
    if (result!= NULL) {
        printf("%s\n", result);
        free(result);
    }
    return 0;
}

解释:在getDynamicString函数中,首先使用malloc函数分配了足够存储一个长度为 20 个字符(包括'\0')的字符串的内存空间,并将返回的指针存储在str中。如果malloc分配内存失败(返回NULL),则函数直接返回NULL。然后使用sprintf函数将字符串"Hello, Dynamic String!"复制到str所指向的内存空间。最后函数返回str的指针。在main函数中,调用getDynamicString函数并将返回的指针存储在result中。如果result不为NULL,则输出这个字符串,并使用free函数释放result所指向的内存空间。

教材学习中的问题和解决过程(先问 AI)

(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

基于AI的学习







代码调试中的问题和解决过程

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

上周考试错题总结

  • 错题1
    用字符数组作函数参数编程,利用一个数组实现字符串(允许输入带空格的字符
    串)的逆序存放。要求如下:
    (1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符
    调用Inverse()函数将字符串逆序存放,然后在主函数中输出逆序后的字符串。
    (2)在子函数Inverse()中实现字符串的逆序存放。函数原型为:
    void Inverse(char str[]);
    (3)**输入提示信息:"Input a string:\n"
    **输出提示信息:"Inversed results:\n"
    **用gets()输入字符串,用puts()输出字符串
    注:(1)不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。
    (2)用纯C语言编程,所有变量必须在第一条可执行语句前定义。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void Inverse(char str[]);
int main()
{
char str[80];
printf("Input a string:\n");
gets(str);
Inverse(str);
printf("Inversed results:\n");
puts(str);
return 0;
}
void Inverse(char str[])
{
int len = strlen(str);
int i;
char temp;
for (i = 0; i < len / 2; i++)
{
temp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = temp;
}
}

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第8周 200/200 1/2 20/20
第9周 300/500 1/4 18/38
第10周 500/1000 1/7 22/60
第11周 900/1300 1/9 30/90

参考资料

posted @ 2024-12-08 16:27  779315  阅读(4)  评论(0编辑  收藏  举报