【Python百日进阶-WEB开发】Day171 - Django案例:03配置工程日志

news2024/11/30 0:43:03

文章目录

  • 八、配置工程日志
    • 8.1 目的和原因
    • 8.2 配置工程日志的步骤
      • 8.2.1 配置工程日志
      • 8.2.2 准备日志文件目录
      • 8.2.3 日志器记录器的使用
      • 8.2.4 Git管理工程日志
  • 九、配置前端静态文件
    • 9.1 准备静态文件
    • 9.2 指定静态文件的加载路径
  • 十、相关文档

八、配置工程日志

8.1 目的和原因

  1. 目的:使用日志记录网站输出信息
  2. 目前终端输出的信息在程序重新启动后会消失,我们无法记录输出信息的历史
  3. 项目部署后,是在后台运行程序的,没有终端实时显示输出信息
  4. 日志如果能够收集,将来可以通过日志分析用户的行为。

8.2 配置工程日志的步骤

8.2.1 配置工程日志

开发环境配置文件dev.py末尾填加

"""
配置工程日志
"""
# 定义三种日志输出格式
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
                  '[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字
simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

# log配置字典
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {'format': standard_format},
        'simple': {'format': simple_format},
    },
    'filters': {    # 对日志进行过滤
        'require_debug_true': {     # django在debug模式下才输出日志
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        #打印到终端的日志,日志级别等级:CRITICAL > ERROR > WARNING > INFO > DEBUG
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        #打印到文件的日志,收集info及以上的日志
        'file': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'verbose',
            'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/meiduo.log'),  # 日志文件
            'maxBytes': 1024*1024*50,  # 日志大小 50M
            'backupCount': 100,
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {    # 日志器
        #logging.getLogger(__name__)拿到的logger配置
        'django': {     # 定义一个名为django的日志器
            'handlers': ['console', 'file'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'INFO',
            'propagate': True,  # 向上(更高level的logger)传递
        },
    },
}

8.2.2 准备日志文件目录

meiduo_mall工程Base目录创建logs文件夹
在这里插入图片描述

8.2.3 日志器记录器的使用

在这里插入图片描述
在这里插入图片描述

8.2.4 Git管理工程日志

Gitee只需要管理到 logs 目录,保证程序能够正常运行,具体的log文件不需要推送到gitee。
忽略掉所有的 log 文件后, logs就是空目录,git默认拒绝管理空目录,需要在 logs 中建立一个 .gitkeep 的文件

九、配置前端静态文件

9.1 准备静态文件

项目主目录meiduo_mall中新建static文件夹,其中包括css、images、js等3个文件夹

9.2 指定静态文件的加载路径

STATICFILES_DIRS = [os.path.join(BASE_DIR, ‘static’)]

十、相关文档

django1.11文档:https://docs.djangoproject.com/en/1.11/
django2.2文档:https://docs.djangoproject.com/en/2.2/
django3.2文档:https://docs.djangoproject.com/en/3.2/
Django 文档¶
你需要知道的关于 Django 的一切。

第一步¶
您是 Django 新手还是编程新手?这是开始的地方!

从头开始: 概述| 安装
教程: 第 1 部分:请求和响应| 第 2 部分:模型和管理站点| 第 3 部分:视图和模板| 第 4 部分:表单和通用视图| 第 5 部分:测试| 第 6 部分:静态文件| 第 7 部分:自定义管理站点
高级教程: 如何编写可重用的应用程序| 为 Django 编写你的第一个补丁
获得帮助¶
遇到麻烦?我们愿意提供帮助!

试试常见问题解答- 它有许多常见问题的答案。
寻找具体信息?尝试索引、模块索引或详细目录。
什么都没找到?有关获得支持和向社区提问的信息,请参阅常见问题解答:获得帮助。
在我们的票务跟踪器中报告 Django 的错误。
文档的组织方式¶
Django 有很多文档。对其组织方式的高级概述将帮助您了解在哪里查找某些内容:

教程将引导您通过一系列步骤来创建 Web 应用程序。如果您不熟悉 Django 或 Web 应用程序开发,请从这里开始。另请查看“第一步”。
主题指南在相当高的水平上讨论关键主题和概念,并提供有用的背景信息和解释。
参考指南包含 API 和 Django 机器其他方面的技术参考。他们描述了它的工作原理以及如何使用它,但假设您对关键概念有基本的了解。
操作指南是食谱。它们指导您完成解决关键问题和用例所涉及的步骤。它们比教程更高级,并假设您了解 Django 的工作原理。
模型层¶
Django 提供了一个抽象层(“模型”)来构建和操作 Web 应用程序的数据。在下面了解更多信息:

模型:模型 介绍| 字段类型| 索引| 元选项| 模型类
QuerySets: 进行查询| QuerySet 方法参考| 查找表达式
模型实例: 实例方法| 访问相关对象
迁移:迁移 简介| 操作参考| 模式编辑器| 编写迁移
高级: 经理| 原始 SQL | 交易| 聚合| 搜索| 自定义字段| 多个数据库| 自定义查找| 查询表达式| 条件表达式| 数据库函数
其他: 支持的数据库| 旧数据库| 提供初始数据| 优化数据库访问| PostgreSQL 特定功能
视图层¶
Django 有“视图”的概念来封装负责处理用户请求和返回响应的逻辑。通过以下链接查找您需要了解的有关视图的所有信息:

基础知识: URLconfs | 查看功能| 捷径| 装饰器| 异步支持
参考: 内置视图| 请求/响应对象| 模板响应对象
文件上传: 概述| 文件对象| 存储 API | 管理文件| 自定义存储
基于类的视图: 概述| 内置显示视图| 内置编辑视图| 使用混合| API 参考| 扁平化索引
高级: 生成 CSV | 生成 PDF
中间件: 概述| 内置中间件类
模板层¶
模板层提供了一种设计人员友好的语法,用于呈现要呈现给用户的信息。了解设计人员如何使用此语法以及程序员如何对其进行扩展:

基础知识: 概述
对于设计师: 语言概述| 内置标签和过滤器| 人性化
对于程序员: 模板 API | 自定义标签和过滤器| 自定义模板后端
表格¶
Django 提供了一个丰富的框架来促进表单的创建和表单数据的操作。

基础知识: 概述| 表单 API | 内置字段| 内置小部件
高级: 模型表格| 整合媒体| 表单集| 自定义验证
开发过程¶
了解可帮助您开发和测试 Django 应用程序的各种组件和工具:

设置: 概览| 设置的完整列表
应用: 概述
例外: 概述
django-admin 和 manage.py: 概述| 添加自定义命令
测试: 简介| 编写和运行测试| 包含的测试工具| 高级主题
部署: 概述| WSGI 服务器| ASGI 服务器| 部署静态文件| 通过电子邮件跟踪代码错误| 部署清单
管理员¶
查找有关自动化管理界面的所有信息,这是 Django 最受欢迎的功能之一:

管理网站
管理员操作
管理员文档生成器
安全¶
安全性是 Web 应用程序开发中最重要的话题,Django 提供了多种保护工具和机制:

安全概述
在 Django 中公开的安全问题
点击劫持保护
跨站点请求伪造保护
加密签名
安全中间件
国际化和本地化¶
Django 提供了一个强大的国际化和本地化框架来帮助您开发多语言和世界区域的应用程序:

概述| 国际化| 本地化| 本地化的 Web UI 格式和表单输入
时区
性能和优化¶
有多种技术和工具可以帮助您的代码更高效地运行——更快,使用更少的系统资源。

性能和优化概述
地理框架¶
GeoDjango旨在成为一个世界级的地理 Web 框架。其目标是尽可能轻松地构建 GIS Web 应用程序并利用空间数据的力量。

常用 Web 应用工具¶
Django 提供了 Web 应用程序开发中常用的多种工具:

身份验证: 概述| 使用认证系统| 密码管理| 自定义身份验证| API 参考
缓存
日志记录
发送电子邮件
联合提要 (RSS/Atom)
分页
消息框架
序列化
会话
站点地图
静态文件管理
数据验证
其他核心功能¶
了解 Django 框架的其他一些核心功能:

条件内容处理
内容类型和通用关系
平面页面
重定向
信号
系统检查框架
网站框架
Django中的Unicode
Django 开源项目¶
了解 Django 项目本身的开发过程以及如何做出贡献:

社区: 如何参与| 发布流程| 团队组织| Django 源代码库| 安全政策| 邮件列表
设计理念: 概述
文档: 关于本文档
第三方发行版: 概述
Django 随着时间的推移: API 稳定性| 发行说明和升级说明| 弃用时间表

编写你的第一个 Django 应用,第 1 部分¶
让我们通过例子来学习。

在本教程中,我们将引导您创建一个基本的投票应用程序。

它将由两部分组成:

一个允许人们查看民意调查并在其中投票的公共网站。
一个管理站点,可让您添加、更改和删除投票。
我们假设您已经安装了 Django。您可以通过在 shell 提示符(由 $ 前缀指示)中运行以下命令来判断 Django 已安装以及哪个版本:

/ 
$ python -m django --version
如果安装了 Django,您应该会看到安装的版本。如果不是,你会得到一个错误提示“No module named django”。

本教程是为支持 Python 3.6 及更高版本的 Django 3.2 编写的。如果 Django 版本不匹配,您可以使用本页右下角的版本切换器参考您的 Django 版本的教程,或者将 Django 更新到最新版本。如果您使用的是旧版本的 Python,请查看我可以在 Django 中使用哪个 Python 版本?找到兼容版本的 Django。

有关如何删除旧版本 Django 并安装新版本的建议,请参阅如何安装 Django。

在哪里获得帮助:

如果您在阅读本教程时遇到问题,请前往常见问题解答的“获取帮助”部分。

创建项目¶
如果这是您第一次使用 Django,您将不得不进行一些初始设置。也就是说,您需要自动生成一些代码来建立一个 Django项目——一个 Django 实例的设置集合,包括数据库配置、特定于 Django 的选项和特定于应用程序的设置。

从命令行,cd进入您要存储代码的目录,然后运行以下命令:

/ 
$ django-admin startproject mysite
这将在您的当前目录中创建一个mysite目录。如果它不起作用,请参阅运行 django-admin 的问题。

笔记

您需要避免在内置 Python 或 Django 组件之后命名项目。特别是,这意味着您应该避免使用 django(这将与 Django 本身冲突)或test(与内置 Python 包冲突)之类的名称。

这段代码应该放在哪里?

如果您的背景是简单的旧 PHP(没有使用现代框架),您可能习惯于将代码放在 Web 服务器的文档根目录下(在诸如 的位置/var/www)。使用 Django,您不会那样做。将任何这些 Python 代码放在 Web 服务器的文档根目录中并不是一个好主意,因为它有可能使人们能够通过 Web 查看您的代码。这对安全不利。

将您的代码放在文档根目录之外的某个目录中,例如 /home/mycode.

让我们看看startproject创建了什么:

mysite/
manage.py
mysite/
init.py
settings.py
urls.py
asgi.py
wsgi.py
这些文件是:

外部mysite/根目录是您项目的容器。它的名字对 Django 无关紧要。您可以将其重命名为您喜欢的任何名称。
manage.py:一个命令行实用程序,可让您以各种方式与此 Django 项目进行交互。您可以阅读 django-admin 和 manage.pymanage.py中的所有详细信息。
内部mysite/目录是您项目的实际 Python 包。它的名称是 Python 包名称,您需要使用它来导入其中的任何内容(例如mysite.urls)。
mysite/init.py: 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果您是 Python 初学者,请阅读官方 Python 文档中有关包的更多信息。
mysite/settings.py:此 Django 项目的设置/配置。 Django 设置会告诉你设置是如何工作的。
mysite/urls.py:这个 Django 项目的 URL 声明;由 Django 驱动的站点的“目录”。您可以在URL dispatcher中阅读有关 URL 的更多信息。
mysite/asgi.py:为您的项目提供服务的兼容 ASGI 的 Web 服务器的入口点。有关更多详细信息,请参阅如何使用 ASGI进行部署。
mysite/wsgi.py: 为您的项目提供服务的 WSGI 兼容 Web 服务器的入口点。有关更多详细信息,请参阅如何使用 WSGI进行部署。
开发服务器¶
让我们验证您的 Django 项目是否有效。切换到外部mysite目录(如果还没有的话),然后运行以下命令:

/ 
$ python manage.py runserver
您将在命令行上看到以下输出:

正在执行系统检查…

系统检查未发现任何问题(0 静音)。

您有未应用的迁移;在应用之前,您的应用程序可能无法正常运行。
运行“python manage.py migrate”以应用它们。

2022 年 2 月 2 日 - 15:50:53
Django 3.2 版,使用设置“mysite.settings”在http://127.0.0.1:8000/
启动开发服务器
使用 CONTROL-C 退出服务器。
笔记

暂时忽略未应用的数据库迁移的警告;我们将很快处理数据库。

您已经启动了 Django 开发服务器,这是一个纯粹用 Python 编写的轻量级 Web 服务器。我们已经将它包含在 Django 中,因此您可以快速开发事物,而无需处理配置生产服务器(例如 Apache),直到您准备好进行生产。

现在是注意的好时机:不要在任何类似于生产环境的环境中使用此服务器。它仅供开发时使用。(我们的业务是制作 Web 框架,而不是 Web 服务器。)

现在服务器正在运行,使用您的 Web 浏览器访问http://127.0.0.1:8000/ 。您会看到“恭喜!” 页面,火箭起飞。有效!

更改端口

默认情况下,该runserver命令在内部 IP 的 8000 端口上启动开发服务器。

如果要更改服务器的端口,请将其作为命令行参数传递。例如,此命令在端口 8080 上启动服务器:

/ 
$ python manage.py runserver 8080
如果要更改服务器的 IP,请将其与端口一起传递。例如,要监听所有可用的公共 IP(如果您正在运行 Vagrant 或想在网络上的其他计算机上炫耀您的工作,这很有用),请使用:

/ 
$ python manage.py runserver 0:8000
0是0.0.0.0的快捷方式。开发服务器的完整文档可以在runserver参考中找到。

自动重新加载runserver

开发服务器会根据需要自动为每个请求重新加载 Python 代码。您无需重新启动服务器即可使代码更改生效。但是,添加文件等某些操作不会触发重新启动,因此在这些情况下您必须重新启动服务器。

创建投票应用程序¶
现在您的环境(一个“项目”)已经设置好,您可以开始工作了。

您在 Django 中编写的每个应用程序都包含一个遵循特定约定的 Python 包。Django 带有一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

项目与应用

项目和应用程序有什么区别?应用程序是做某事的 Web 应用程序——例如,Weblog 系统、公共记录数据库或小型投票应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。

您的应用程序可以存在于Python 路径上的任何位置。在本教程中,我们将在与您的文件相同的目录中创建我们的投票应用程序, manage.py以便可以将其作为自己的顶级模块导入,而不是mysite.

要创建您的应用程序,请确保您在同一目录中manage.py 并键入以下命令:

/ 
$ python manage.py startapp polls
这将创建一个目录polls,其布局如下:

polls/
init.py
admin.py
apps.py
migrations/
init.py
models.py
tests.py
views.py
此目录结构将容纳民意调查应用程序。

写你的第一个视图¶
让我们写第一个视图。打开文件polls/views.py 并将以下 Python 代码放入其中:

民意调查/views.py ¶

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

这是 Django 中最简单的视图。要调用视图,我们需要将它映射到一个 URL - 为此我们需要一个 URLconf。

要在 polls 目录中创建 URLconf,请创建一个名为urls.py. 您的应用程序目录现在应该如下所示:

polls/
init.py
admin.py
apps.py
migrations/
init.py
models.py
tests.py
urls.py
views.py
在polls/urls.py文件中包含以下代码:

民意调查/urls.py ¶

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

下一步是将根 URLconf 指向polls.urls模块。在 mysite/urls.py中,添加一个导入并在列表中django.urls.include插入一个 ,这样您就有:

include()urlpatterns

mysite/urls.py ¶
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

该include()函数允许引用其他 URLconfs。每当 Django 遇到 时include(),它都会切断与该点匹配的 URL 的任何部分,并将剩余的字符串发送到包含的 URLconf 以进行进一步处理。

背后的想法include()是让即插即用 URL 变得容易。由于投票在它们自己的 URLconf ( polls/urls.py) 中,它们可以放在“/polls/”下,或“/fun_polls/”下,或“/content/polls/”下,或任何其他路径根目录下,应用程序仍将工作。

何时使用include()

include()当您包含其他 URL 模式时, 您应该始终使用。admin.site.urls是唯一的例外。

您现在已将index视图连接到 URLconf。验证它是否使用以下命令:

/ 
$ python manage.py runserver
在浏览器中访问http://localhost:8000/polls/,您应该会看到文本“ Hello, world. 你在民意调查索引。”,您在 index视图中定义。

找不到网页?

如果您在此处收到错误页面,请检查您是否要访问 http://localhost:8000/polls/而不是http://localhost:8000/。

该path()函数传递了四个参数,两个是必需的: routeand view,两个可选的:kwargs和name。在这一点上,值得回顾一下这些论点的用途。

path()论据:route¶
route是一个包含 URL 模式的字符串。当处理一个请求时,Django 从第一个模式开始urlpatterns并沿着列表向下移动,将请求的 URL 与每个模式进行比较,直到找到匹配的一个。

模式不搜索 GET 和 POST 参数或域名。例如,在对 的请求中https://www.example.com/myapp/,URLconf 将查找 myapp/. 在对 的请求中https://www.example.com/myapp/?page=3,URLconf 也会查找myapp/.

path()论据:view¶
当 Django 找到匹配的模式时,它会调用指定的视图函数,并将HttpRequest对象作为第一个参数,并将路由中任何“捕获”的值作为关键字参数。我们稍后会给出一个例子。

path()论据:kwargs¶
任意关键字参数可以在字典中传递给目标视图。我们不会在教程中使用 Django 的这个特性。

path()论据:name¶
命名你的 URL 可以让你从 Django 的其他地方明确地引用它,尤其是在模板中。这个强大的功能允许您对项目的 URL 模式进行全局更改,而只需触摸一个文件。

当您对基本的请求和响应流程感到满意时,请阅读 本教程的第 2 部分以开始使用数据库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是跨域?以及解决方案

现在的web项目,很多都是前后端分离,特别容易出现跨域问题 那么什么是跨域问题呢?本篇文章带你彻底从本质上弄明白什么是跨域问题以及如何解决 一、跨域有什么现象 首先我们看一下现象,如何出现的跨域问题。例: 前段&#xff1a…

【Linux】基础IO —— 上

🎇Linux:基础IO详解 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让…

Web渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集,在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息,收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

Java Spring Cloud XVIII 之 Kafka I

Java Spring Cloud XVIII 之 Kafka I Kafka 1.Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。Kafka最初是由LinkedIn开发,并随后于2011年初开源…

C++ 类和对象 (中)

作者:小萌新 专栏:C初阶 作者简介:大二学生 希望能和大家一起进步 本篇博客目标:梳理自己六个小时学到的知识 并且将类和对象知识分享给大家 专注的去做一件事 如果累了就去休息 C 类和对象 中本章学习目标前言一. 构造函数1.1 概…

破解系统密码与重装windows系统

数据来源 一、利用5次shift漏洞破解win7密码 1.1 漏洞 1. 在未登录时,连续按5次shift键,弹出程序C:\Windows\System32\sethc.exe 2. 部分win7及win10系统在未进入系统时,可以通过系统修复漏洞篡改系统文件名! 注意:…

使用Maven部署到远程Linux服务器Tomcat

一、安装JDK 首先给服务器安装jdk,访问官网下载:Java Downloads | Oracle,下载图中的版本。首先我使用的是tomcat10,最低支持jdk1.8。安装了jdk19,是当时的最新版实测tomcat开启失败,新版jdk也不自带jre&a…

Windows上使用QEMU创建aarch64(ARM64)虚拟机

前言 随着国产化的推进,现在采用ARM、MIPS的机器越来越多,作为开发、运维人员要调测软件总不能每种架构的机器都去买一台吧?主要像博主这样的穷B,实在也是承受不起。。 需要的工具 1、QEMU Windows版官网下载地址:…

软件测试最最最重要的事

软件测试用例得出软件测试用例的内容,其次,按照软件测试写作方法,落实到文档中,两者是形式和内容的关系,好的测试用例不仅方便自己和别人查看,而且能帮助设计的时候考虑的更周。 一个好的测试用例必须包含…

Articulate360在线学习课件制作工具

Articulate是一款全新理念的在线和移动学习课件制作工具,可以说是目前国际上用户最广泛的e-learning课件制作工具之一。它包含了全新版的Storyline 360和Rise 360以及大量其他创作应用程序。使用Storyline 360开发可在所有设备上运行的自定义交互式课程,…

Java日志框架的发展历史,你不想了解一下吗

前言 相信大家在项目开发中肯定遇到过log4j,JUL,slf4j,logback,log4j2等日志框架相关名词,这些日志框架之间到底有什么关系,Java日志框架究竟经历了什么样的发展历程,相信有很多人都对此充满了好…

Socket 编程基础

文章目录一、socket 简介二、socket 编程接口介绍1. socket()函数2. bind()函数3. listen()函数4. accept()函数5. connect()函数6. 发送和接收函数read()函数recv()函数write()函数send()函数7. close()关闭套接字三、IP 地址格式转换函数inet_pton()函数inet_ntop()函数本篇会…

决策树与随机森林在分类预测中的应用(附源码)

写在前面 今天给大家分享一下基于决策树和随机森林在乳腺癌分类中实战。决策树和随机森林是白盒模型,数学建模中常用到这两种模型,用于预测或分类,随机森林还可以进行特征选择,故很推荐大家学习!!&#xff…

Qt5.14.2在Windows下使用mysql

第一步:下载依赖 1.1去Qt官方下载Qt5.14.2的源代码: Index of /archive/qt/5.14/5.14.2/singlehttps://download.qt.io/archive/qt/5.14/5.14.2/single/ 下载链接:https://download.qt.io/archive/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.zip 1.2去Mysql官网下载Mys…

面试官:说说TCP如何实现可靠传输

今天来讲一下TCP是如何保证可靠传输的。这也是面试常问的一个题目,这个问题不单止能看出你是否真的了解TCP原理,更看出你是否有一个总结的能力。 我们从三个部分来讲TCP是如何实现可靠传输的。 滑动窗口 首先是讲TCP中的滑动窗口,它和TCP的…

基本的Dos命令

基本的Dos命令 打开CMD的方式 开始系统命令提示符win键R输入cmd (推荐使用)在任意的文件夹下,按住Shift键鼠标右击,打开命令行窗口在资源管理器地址栏路径前面加 “cmd ”管理员运行方式:命令提示符右键以管理员身份运行(最高权…

动态规划--01背包问题详解

代码随想录day42和day43 动态规划 模块01背包问题 “即使到不了远方,心中也要有远方的模样。” 文章目录1. 01背包理论基础1.1什么是背包问题1.2二维dp数组01背包1.3一维dp数组(滚动数组)01背包2.leetcode 416.分割等和子集2.1 详细思路及思考难点2.2具体步骤及代码…

当食品制造业遇见数字化工具,如何借助S2B2C电商系统实现企业新增长

食品制造业是我国产业发展中的重要组成部分,具有点多、面广、投资小、见效快的特点,在经济发展中发挥着重要作用。根据工信部数据统计,从2018至2021年我国食品制造业经营规模稳步增长,2021年我国食品制造业营业收入达21268.1亿元&…

QT·移植Qt到ARM平台及搭建Qt交叉编译环境

目录 一、编译tslib库 二、移植 tslib 到文件系统 三、编译Qt源码(用于移植到ARM) 四、移植Qt到文件系统 五、搭建 Qt Creator 交叉编译环境 六、获得Qt可执行文件的另一种方法 要想在ARM平台上运行Qt程序,得满足以下两个点:1、…

【表达式求值】

目录:前言一、有效的括号(一)题目分析(二)整体代码二、表达式求值(一)题目分析1.栈的基本操作:2. 大体思路:3.具体计算过程:(二)整体代…