Web框架:Django基础(1)

news2024/9/17 9:27:02

文章目录

  • Web框架:Django基础
    • 1.web框架底层
      • 1.1 网络通信
      • 1.2 常见软件架构
      • 1.3 手撸web框架
      • 1.4 告诉你两个关键点:
      • 短连接
      • 长连接
    • 2.web框架
      • ==网络通信的基本流程==
      • 2.1 wsgiref
      • 2.2 werkzeug
      • 2.3 各框架的区别
    • 小结
    • 3.快速上手django框架
      • 3.1 安装
      • 3.2 命令行
      • 3.3 Pycharm
    • 4.虚拟环境
      • 4.1 创建虚拟环境 - 命令行
      • 4.2 Pycharm
        • 4.2.1 项目+虚拟环境
        • 4.2.2 django+虚拟环境【最新】
        • ==4.2.3 django+虚拟环境【指定版本】==
        • ==4.2.4 带点与不带点==
      • 总结
      • 小结
    • 5.关于创建app
      • ==多目录结构==
    • 6.关于纯净版

Web框架:Django基础

概要:

  • 网络底层引入,到底什么是web框架?
  • 常见web框架对比
  • django快速上手(创建网站)
  • 常见操作:虚拟环境、django项目、多app应用、纯净版
  • 逐点剖析:路由、视图、模板、静态文件、ORM

1.web框架底层

1.1 网络通信

在这里插入图片描述

注意:局域网。

在这里插入图片描述

个人一般写程序,想要让别人访问:阿里云、腾讯云。

  • 去云平台租服务器(含公网IP)
  • 程序放在云服务器

在这里插入图片描述

让网络中可以互相通信的双发收发数据。

  • 我的电脑【服务端】

    import socket
    
    # 1.监听本机的IP和端口
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind(('192.168.10.3', 8001))  # 我自己的电脑IP,端口8001
    
    # 2.让多少人等待
    sock.listen(5)
    
    while True:
        # 3.等待连接请求的申请,有人来连接(阻塞)
        conn, addr = sock.accept()
    
        # 4.连接成功后立即发送
        conn.sendall("欢迎使用xx系统".encode("utf-8"))
    
        # 5.断开连接
        conn.close()
    
    
    # 6.停止服务端程序
    sock.close()
    
  • 女朋友的电脑(同一个局域网)【客户端】

    import socket
    
    # 1. 向指定IP发送连接请求
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('192.168.10.3', 8001))
    
    # 2. 接收你发的消息
    message = client.recv(1024)
    print(message.decode("utf-8"))
    
    # 3.断开连接
    client.close()
    
  • 姓王的好兄弟【客户端】

    import socket
    
    # 1. 向指定IP发送连接请求
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('192.168.10.3', 8001))
    
    # 2. 接收你发的消息
    message = client.recv(1024)
    print(message.decode("utf-8"))
    
    # 3.断开连接
    client.close()
    

    我们自己写时,通过socket模块可以实现网络上的两端进行通信。

1.2 常见软件架构

  • bs架构

    浏览器:充当客户端
    服务器:网站
    
  • cs架构,开发应用程序,例如:QQ、Pycharm、网易云音乐(安装在电脑上的软件)

    客户端:安装在电脑上的软件。 网易云音乐
    服务端:网易服务器
    

对于程序原来说:

  • 网站,只需要写服务端程序。

    基于django开发的本质就是网站(web应用)
    电脑上浏览器本质上是socket实现网络通信。
    
  • 软件,客户端 + 服务端。

1.3 手撸web框架

http协议的特点:

无状态的短连接

基于TCP/IP,可靠

基于请求响应模式

浏览器本质上发送请求时,包含请求头和请求体。

  • GET请求

    • 只有请求头 + 没有请求体
    • 请求头之间用 \r\n
    • 请求头和请求体之间用 \r\n\r\n
  • POST请求

    • 只有请求头 + 有请求体
    • 请求头之间用 \r\n
    • 请求头和请求体之间用 \r\n\r\n

快速自己写以为网站(不能用django、flask等)。

import socket

# 1.监听本机的IP和端口
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('192.168.0.6', 9000))  # 我自己的电脑IP,端口8001

# 2.让多少人等待
sock.listen(5)

while True:
    # 3.等待连接请求的申请,有人来连接(阻塞) -> 登录浏览器来连接我
    conn, addr = sock.accept()

    # 4.收到浏览器发送的消息
    buf = conn.recv(2048)
    print(buf)

    # 5.给浏览器返回数据
    conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
    conn.send(b"Hello, World")

    # 6.断开连接
    conn.close()

# 6.停止服务端程序
sock.close()

再引出一个知识点,浏览器再与服务端的网站进行通信时,多了几个规则。

  • 服务端:网站

  • 客户端:浏览器

    • 创建连接

    • 发送数据,固定格式

      # 请求头首行
      GET /xxx/xxx/?name=xxx&age=111 HTTP/1.1\r\n
      
      # 请求头
      Host: 192.168.0.6:9000\r\n
      Connection: keep-alive\r\n
      Upgrade-Insecure-Requests: 1\r\n
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36\r\n
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n
      Accept-Encoding: gzip, deflate\r\n
      Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7\r\n\r\n'
      
      # 请求头首行
      POST /xxx/xxx/ HTTP/1.1\r\n
      
      # 请求头
      Host: 192.168.0.6:9000\r\n
      Connection: keep-alive\r\n
      Upgrade-Insecure-Requests: 1\r\n
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36\r\n
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n
      Accept-Encoding: gzip, deflate\r\n
      Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7\r\n\r\n
      # 请求体
      username=wupeiqi&password=123
      
      浏览器本质上发送请求时,包含请求头和请求体。
      - GET请求
      	- 只有请求头 + 没有请求体
      	- 请求头之间用 \r\n
      	- 请求头和请求体之间用 \r\n\r\n
      	
      - POST请求
      	- 只有请求头 + 有请求体
      	- 请求头之间用 \r\n
      	- 请求头和请求体之间用 \r\n\r\n
      
    • 一次请求和一次响应后,断开连接。

1.4 告诉你两个关键点:

  • http协议?

    http协议特点:无状态的短连接。
    http的应用:浏览器向服务端发送请求,就是按照http协议来的。
    	- 请求头+请求体 ;请求头和请求体之间用 \r\n\r\n ;请求头之间用 \r\n
    	- 一次请求和一次响应后,断开连接。  -> 短连接。  ->无状态如何体现?
    	- 后期记住 请求头+cookie
    
  • GET请求和POST到底有什么区别?


短连接

  1. 连接建立和关闭频繁:每次通信都需要建立一个新的连接,通信结束后立即关闭连接。
  2. 开销大:每次建立连接都需要进行三次握手,增加了通信的延迟和开销。
  3. 适用于请求少的应用:适合于请求频率较低的应用,例如偶尔的文件下载或信息查询。
  4. 无状态:每次通信都是独立的,服务器不需要维护任何状态信息。
  5. 简单易实现:由于每次通信都是独立的,实现起来相对简单。

长连接

  1. 连接持久性:连接一旦建立,可以持续一段时间,期间可以进行多次通信,不需要频繁建立和关闭连接。
  2. 减少了连接开销:由于连接持久,减少了因频繁建立和关闭连接而产生的开销。
  3. 适用于频繁通信的应用:适合于需要频繁通信的应用,例如实时通信、在线游戏、实时数据传输等。
  4. 可能需要状态维护:服务器需要维护连接的状态信息,以便在多次通信中保持一致性。
  5. 实现复杂度较高:需要处理连接的持久性和状态管理,实现起来相对复杂。

2.web框架

网络通信的基本流程

socket网络通信这部分,一般是使用第三方的wsgiref,uwsgi等已经封装好的网络通信服务端。

他们都是基于,socket这种底层的网络通信机制来接收和发送数据,的网络通信服务器

在这里插入图片描述

瓶盖相当于很多类似于werkzeug,wsgiref这样的的socket服务端。

瓶子相当于很多类似于django,flask这样的web框架。

他们之间也有一些协议或规定,来建立的连接

在这里插入图片描述

常见的web框架:django、flask、tornado、sanic、fastapi…

在这里插入图片描述

web应用程序:

  • 用户网络通信的socket
  • web框架
  • 业务开发

以django为例:

  • wsgiref模块、uwsgi、daphne -> 本质上都是socket实现。
  • 原来实现了框架

以flask为例:

  • werkzurg、uwsgi、…
  • flask框架

以tornado为例:

  • tornado、werkzurg、uwsgi、…
  • 框架

2.1 wsgiref

from wsgiref.simple_server import make_server


def run_server(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]


if __name__ == '__main__':
    httpd = make_server('127.0.0.1', 8000, run_server)
    httpd.serve_forever()

2.2 werkzeug

pip install werkzeug
from werkzeug.wrappers import Response


def application(environ, start_response):
    response = Response('Hello World!', mimetype='text/plain')
    return response(environ, start_response)


if __name__ == '__main__':
    from werkzeug.serving import run_simple

    run_simple('localhost', 4000, application)

2.3 各框架的区别

django、flask、tornado、sanic、fastapi..
  • 内部集成功能的多少

    • django,内部提供了很多组件。 【相对大】
    • flask、tornado、sanic、fastapi… 本身自己功能很少+第三方组件。【相对小】
  • 同步框架 vs 异步非阻塞

    • 异步非阻塞:tornado、sanic、fastapi、django

    • 同步:django、flask、bottle、webpy…

      1.django、flask
      2.tornado,异步非阻塞,特别NB。
      	- 同步:常见应用。
      	- 异步:IO应用 + conroutine装饰器 + redis/MySQL/...
      3.sanic,路飞小猿圈平台
      4.fastapi
      	- 参考flask
      	- py最新注解
      	- restfulAPI
      	- 异步
      	
      目前不看好:
      	- 增加编程的难度,功能&效率
      	- 项目中不会有那么IO操作 ---> 100功能/2-IO ---> celery
      

感受不深刻,只是听我讲完了,鬼吹这么NB东西到底是怎么实现的?

  • socket & 多线程 & 多进程
  • IO多路复用
  • 顿悟
https://www.cnblogs.com/wupeiqi/p/6536518.html

异步非阻塞:就是让进程(线程)在IO等待的时间中不等待,而去执行其他的事件,这种机制适用于多IO的网站。

异步非阻塞框架的实现思路:

有一个循环列表,有任何IO等待的事件开始后都放到里面,线程不等待,而是有一个专门循环的线程来检测列表中的事件是否有变化。

在这里插入图片描述

同步框架要想实现异步:

可以通过celery,建立任务队列结果队列,任务队列中的任务一次提交给worker,worker的结果返回给结果队列。并且也可以创建多个worker来提高效率。

在这里插入图片描述

小结

  1. django项目开发。 默认可以在局域网部署访问。要想广域网的所有人访问要在云服务器上部署。
  2. bs架构、cs架构。
  3. 基于socket实现web框架(所有web框架的祖宗)
  4. 常见web框架的区别。
    • 功能
    • 异步非阻塞

3.快速上手django框架

3.1 安装

pip install django==3.2
C:\Python39
	- python.exe
	- Scripts
		- pip.exe
		- django-admin.exe
	- Lib
		- re.py
		- random.py
		- site-pakages
			- django==3.2
			  ...

3.2 命令行

  • 创建项目

    cd 指定目录
    django-admin startproject 项目名
    

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

    mysite
    ├── manage.py              [项目的管理工具]  
    └── mysite
        ├── __init__.py
        ├── settings.py        【配置文件,只有一部分。程序启动时,先读取django内部配置,再读settings.py】
        ├── urls.py			   【主路由,在里面编写  /xxx/xxx/xxx ---> index 】
        ├── asgi.py            【异步】
        └── wsgi.py            【同步,主】
    
  • 编写代码 urls.py

    from django.contrib import admin
    from django.urls import path
    
    from django.shortcuts import HttpResponse
    
    def info(request):
        print("请求来执行了")
        return HttpResponse("xxxx")
    
    def xxxx(request):
        print("请求来执行了")
        return HttpResponse("。。。。。。")
    
    urlpatterns = [
        # path('admin/', admin.site.urls),
        path('api/index/', info),
        path('api/show/', xxxx),
    ]
    
  • 运行

    cd 项目
    python3.9 manage.py runserver
    python3.9 manage.py runserver 127.0.0.1:8000
    python3.9 manage.py runserver 127.0.0.1:9000
    
  • app概念

    cd 项目
    python manage.py startapp 名字
    
    mysite
    ├── manage.py              [项目的管理工具]  
    ├── web
        ├── __init__.py
        ├── views.py           [视图函数]
        ├── models.py          [ORM,基于models可以对数据库进行简便的操作]
        ...
    └── mysite
        ├── __init__.py
        ├── settings.py        【配置文件,只有一部分。程序启动时,先读取django内部配置,再读settings.py】
        ├── urls.py			   【主路由,在里面编写  /xxx/xxx/xxx ---> index 】
        ├── asgi.py            【异步】
        └── wsgi.py            【同步,主】
    
    mysite
    ├── manage.py
    ├── mysite
    │   ├── __init__.py
    │   ├── asgi.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── web
        ├── __init__.py
        ├── admin.py
        ├── apps.py
        ├── migrations
        │   └── __init__.py
        ├── models.py
        ├── tests.py
        └── views.py
    

3.3 Pycharm

在这里插入图片描述

在这里插入图片描述

django-admin startproject 项目名称

cd 项目目录
python manage.py startapp
python manage.py runserver

4.虚拟环境

当你通过 virtualenv 创建一个新的虚拟环境时,这个虚拟环境默认情况下是干净的,不会包含你原来系统环境中已经安装的包

C:\Python39
	- python.exe
	- Scripts
		- pip.exe
	- Lib
		- re.py
		- random.py
		- site-pakages
D:\envs\crm
	- python.exe
	- Scripts
		- activate.exe
		- pip.exe
	- Lib
		- re.py
		- random.py
		- site-pakages
			- requests
			- django
			- flask
			- tornado
D:\coding\crm
	crm
		manage.py
		crm
			settings.py
D:\envs\city
	- python.exe
	- Scripts
		- activate.exe
		- pip.exe
	- Lib
		- re.py
		- random.py
		- site-pakages
			request
			...
			....
D:\coding\city
	crm
		manage.py
		crm
			settings.py

注意:以后再创建项目时,不要一直用系统解释器,为每个项目:虚拟环境 + 项目文件。

4.1 创建虚拟环境 - 命令行

  • venv,Python官方用于创建虚拟环境的工具。

    cd xxx/xxx/crm
    python3.9 -m venv ddd
    python3.7 -m venv xxxx
    python3.7 -m venv /xxx/xxx/xxx/xx/ppp
    
  • virtualenv 【推荐】

    pip install virtualenv
    
    cd /xxx/xx/
    virtualenv ddd --python=python3.9
    
    virtualenv /xxx/xx/ddd --python=python3.7
    

操作:

  • F:\envs\ 创建虚拟环境。

    cd F:\envs
    virtualenv crm --python=python3.9
    

    在这里插入图片描述

  • 激活虚拟环境

    • win

      cd F:\envs\crm\Scripts
      activate
      
    • mac

      source /虚拟环境目录/bin/activate
      

      在这里插入图片描述

  • 安装包

    pip install 包名
    
  • 创建django项目 D:\project\crm

    cd D:\project
    django-admin startproject crm
    
    D:\project\crm
    ├── manage.py              [项目的管理工具]  
    └── crm
        ├── __init__.py
        ├── settings.py        【配置文件,只有一部分。程序启动时,先读取django内部配置,再读settings.py】
        ├── urls.py			   【主路由,在里面编写  /xxx/xxx/xxx ---> index 】
        ├── asgi.py            【异步】
        └── wsgi.py            【同步,主】
    
    python manage.py startapp xxxx
    python manage.py runserver 
    
  • 退出虚拟环境

    deactivate
    

    在这里插入图片描述

4.2 Pycharm

4.2.1 项目+虚拟环境

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

你需要做的:

  • 创建项目+虚拟环境

  • code.py,写代码运行

  • 在虚拟环境中安装 requests

    pip install requests
    
4.2.2 django+虚拟环境【最新】
pip install django

直接通过pycharm创建django项目:

默认安装最新的django以及最新的配置文件,但是一般不用最新的开发

在这里插入图片描述

注意:创建django最新版可以。

4.2.3 django+虚拟环境【指定版本】

要想创建指定版本的django项目:

  1. 创建纯净的python项目

  2. pip install django==3.2
    

    先下载指定版本的django

  3. django-admin startproject demo_name .
    

    再创建项目,要在最后加一个点,表示在当前目录创建,而不是在子目录中创建

  4. 配置快速运行

    在这里插入图片描述

选择Edit configrations

在这里插入图片描述

选择Django Server

改名字,一般同名

选择FIX

在这里插入图片描述

勾选Enable Django Support

选择Django project root (选择到项目的根目录)

选择settings (选择前面命名的文件下的settings)


4.2.4 带点与不带点
  • 不带点

    bash
    django-admin startproject demo_name
    

    这会创建以下目录结构:

    /home/user/projects/
    ├── demo_name/
    │   ├── demo_name/
    │   │   ├── __init__.py
    │   │   ├── asgi.py
    │   │   ├── settings.py
    │   │   ├── urls.py
    │   │   └── wsgi.py
    │   └── manage.py
    
  • 带点

    bash
    django-admin startproject demo_name .
    

    这会创建以下目录结构:

    /home/user/projects/
    ├── demo_name/
    │   ├── __init__.py
    │   ├── asgi.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    

总结

使用点(.)是为了明确地告诉 Django 项目应该被创建在当前目录下,而不是在某个子目录中。这有助于保持项目的目录结构清晰和一致。

在这里插入图片描述

pip install django==3.2

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


小结

  1. 快速使用django + 目录结构(系统解释器)

  2. 虚拟环境

    • 命令行

      virtualenv 环境名 --python=python3.9
      
      环境目录/Scripts/activate
      
      pip install django
      pip install requests
      ...
      

      创建django项目

      django-admin ...
      ...
      
    • pycharm项目+虚拟环境

  3. python+django+3.2版本

    • 先创建纯净的项目 + 虚拟环境(代码+环境放在,.venv)

      D:\code\crm
      	- .venv
      
    • 再次虚拟环境中创建django

      pip install django==3.2
      
    • 创建项目

      cd 项目根目录
      django-admin startproject crm .
      
      D:\code\crm
      	- .venv
      	- manage.py
      	- crm
      		...
      		..
      
    • 命令行

      python manage.py startapp app01
      python manage.py startapp app02
      
      python manage.py runserver
      
    • 为了更方便运行,pycharm配置。

5.关于创建app

  • 项目只需要一个app,目录结构的建议。

    在这里插入图片描述

  • 项目只需要一个app,目录结构的建议。

    day002
    	.venv
        day002
        	...
            ...
        manage.py
        apps
        	web
            backend
            api
    

    在这里插入图片描述

多目录结构

将api,web都放在apps下

然后执行以下代码

在这里插入图片描述

或者

在这里插入图片描述

并且还要修改web和api下apps中的name

在这里插入图片描述

或者

在这里插入图片描述


6.关于纯净版

在这里插入图片描述

问题:给别人的代码+requirements.txt

  • 给别人项目

    pip freeze > requirements.txt
    压缩文件,排除虚拟环境。
    
  • 要一个项目

    虚拟环境 + 安装依赖 + 运行项目
    

若有错误与不足请指出,关注DPT一起进步吧!!!

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

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

相关文章

【分布式】分库分表知识点大全

为什么要分库分表 随着业务量的增加导致数据库中数据量的增加&#xff0c;可能拖慢查询的性能&#xff0c;影响业务的可用性&#xff1b;如果数据库采用读写分离&#xff0c;可能会导致从库的延迟较大&#xff0c;主库进行写操作后&#xff0c;从库因为延迟无法及时同步&#…

基于RK3588+YOLO模型打造稳固型电力巡检机器人控制器

创新打造电力巡检机器人用计算机产品方案 目前&#xff0c;智能电网建设和增强供电可靠性已上升到国家战略&#xff0c;使得我国基数庞大的电力设备的监测、运维等需求充分释放&#xff0c;变电站/配电站巡检机器人市场需求高涨。 1、电力巡检机器人的市场优势 电力系统智能巡…

MySQL的索引与SQL优化

索引 官方的定义索引是一种数据结构,从生活维度讲,假如将一本书看成是一张表, 这本书的目录就是表中的索引(Index).在数据库中数据量比较大时,为了快速找到们需要的数据可以使用索引,这样可以提高查询的效率,开发过程中,如果发现查询时频繁使用到的字段,也可以添加索引进行优化…

苹果手机相片删除了怎么恢复回来?4个妙计,任你选择

使用iPhone的用户们&#xff0c;是否曾因手误或其他原因不小心删除了重要的相片&#xff0c;不知道如何找回而手足无措&#xff1f;别急&#xff0c;这里有高效的解决方案等你来挑选。本文将直接切入主题&#xff0c;为你提供4种实用的解决苹果手机相片删除了怎么恢复回来的小妙…

2024杭电多校01——1003树

补题链接 官方题解 补充: ( ∑ u ∈ t r e e i a u ) 2 (\sum_{u \in tree_i} a_u)^2 (∑u∈treei​​au​)2 ∑ u ∈ t r e e i a u 2 2 ∑ x ∈ t r e e i , y ∈ t r e e i a x ∗ a y \sum_{u \in tree_i} a_u^{2}2\sum_{x \in tree_i,y \in tree_i} a_x*a_y ∑u∈t…

Prompt——3分钟掌握,润色论文的7条经典指令。帮助很大,一定要看!

这是一篇帮助你润色论文的ChatGPT指令合集&#xff0c;整理了润色过程中语法优化、审阅校对、专业风格等7个主要方面。 建议收藏&#xff0c;需要的时候直接CtrlV即可&#xff0c;一定对你科研有所帮助~ 1. 修复语法和句法 第一个提示是修复语法和句法。这是任何写作的关键部…

vue页面左右箭头手动切换中间app列表

1 效果: 2 HTML代码分析: HTML代码: <div class"all_app"><div class"app-container"><el-button icon"el-icon-arrow-left" circle click"switchList(left)"></el-button><div class"middle-list&q…

【包邮送书】码农职场:IT人求职就业手册

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

HarmonyOS APP应用开发项目- MCA助手(Day04持续更新中~)

简言&#xff1a; gitee地址&#xff1a;https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5注&#xff1a;…

Educational Codeforces Round 168 (Rated for Div. 2)(A~D题题解)

A. Strong Password 思路&#xff1a;想要最长的时间&#xff0c;那么肯定就是如果存在前后相同的字母的时候&#xff0c;在中间插入一个不同的字符 &#xff0c;如果不存在前后相同的字符&#xff0c;直接在最后插入一个和原字符串最后一个字符不同的字符 #include <bits/…

等保学习干货|等保测评2.0技术中间件自查阶段,零基础入门到精通,收藏这一篇就够了

0x01 前言 以下是根据我国网络安全体系制订的一系列保护流程进行的等级保护测评。该测评针对已有和将上线的业务服务的基础设施&#xff08;系统、数据库、中间件等&#xff09;&#xff0c;执行一系列检查以确保安全合规。本次先行分享学习等保中的技术自查阶段知识&#xff…

ubuntu24.04 LTS安装BackupPC备份软件

一、安装BackupPC 默认情况下&#xff0c;BackupPC 在 ubuntu24.04 LTS 默认存储库中可用。您只需运行以下命令即可安装它&#xff1a; apt-get install backuppc -y在安装过程中&#xff0c;您将被要求选择邮件配置的类型&#xff0c;如下所示&#xff1a; 选择仅限本地&…

在 VueJS 中使用 Keep-Alive 处理窗口调整事件(在使用keep-alive缓存组件时,处理多个vue页面的resize事件)

前言 我们在使用 VueJS 开发复杂的单页应用程序时&#xff0c;我们经常需要管理组件的生命周期事件&#xff0c;以确保它们在特定的条件下正常工作。例如&#xff0c;当窗口大小调整时&#xff0c;我们可能需要重新绘制某些组件。这里我们详细介绍一下&#xff0c;如何在使用 …

安装docker-东方通tongRDS

首先&#xff0c;确保你的系统已经安装了Docker。你可以在终端中运行以下命令来检查Docker是否已经安装&#xff1a; docker --version接下来&#xff0c;你需要从Docker hub上拉取东方通tongRDS的镜像。在终端中运行以下命令&#xff1a; docker pull dongfangtongrds/tongr…

Unity Camera

课程目标 1. 了解摄像机&#xff08;camera&#xff09;不同视角的设计与实现&#xff1b;2. 感受在不同摄像机视角下观察虚拟场景。 喜欢玩游戏或者看3D动漫的朋友可以回忆在虚拟场景中摄像头的运动变化带来的视觉感受&#xff0c;例如&#xff1a;摄像头给场景中的主角来个…

创客项目秀|基于XIAO SAMD21的多功能笔筒

作者&#xff1a;Arnov Sharma 来自&#xff1a;MIT 发表日期&#xff1a; 2024年6月17日 这个多功能笔筒项目是使用3D打印零件进行搭建的&#xff0c;在笔筒的前端添加了XIAO扩展板&#xff0c;给这个笔筒添加一个显示器&#xff0c;可以在显示器上显示许多内容&#xff0c…

【Devops】CertD 完全免费、自动申请、自动部署SSL证书一站式管理工具 | 自动化HTTPS | 3个月SSL自动轮换

CertD CertD 是一个免费全自动申请和自动部署更新SSL证书的工具。 后缀D取自linux守护进程的命名风格&#xff0c;意为证书守护进程。 关键字&#xff1a;证书自动申请、证书自动更新、证书自动续期、证书自动续签 一、特性 本项目不仅支持证书申请过程自动化&#xff0c;还…

P2048 [NOI2010] 超级钢琴(纪念紫题)

原题 题面 具体实现讲解 首先想到用 s u m sum sum记录 a a a数组的前缀和&#xff0c;把每种和弦都试一遍&#xff0c;很明显会超时。 定义 c a l ( s , l , r ) cal(s,l,r) cal(s,l,r)代表以 s s s为左端点&#xff0c;右端点在 l l l到 r r r的范围内&#xff0c;能得到的…

css:grid的使用(部分)

一&#xff1a;grid的使用&#xff08; 平分宽度 &#xff09; <template><view class""><view class"main"><view class"main-item">1</view><view class"main-item">2</view><view cl…