Django学习(2)项目实战
1、环境及简介
前端开发:HTML、CSS、JavaScript
后端开发:Java、PHP、Python、GO
数据库:MySQL、MSSQL、Oracle、Redis
安装Django
pip install Django 或 下载.whl后 pip install D:\xxx.whl
创建Django项目
File--New Project--Django 或 命令django-admin startproject MyDjango
* manage.py 命令行工具 python manage.py help 帮助命令
* __init__.py 初始化文件,一般无须修改
* asgi.py 启动异步通信服务,如在线聊天等异步通信功能
* settings.py 项目配置文件
* urls.py 项目路由设置,设置网站的具体网址内容
* wsgi.py Python Web Server Gateway Interface Python服务器网关接口,用于Django项目在服务器上的部署和上线
查看Django版本
python import django django.__version__
创建项目应用,简称App,相当于网站功能
python manage.py startapp index
* migrations 生成数据迁移文件,自动在数据库中生成相应的数据表
* __init__.py 当前App名的初始化文件
* admin.py 设置当前App的后台管理功能
* apps.py 当前App的配置信息
* models.py 数据库的映射类,每个类关联一张数据表,实现数据的持久化,即MTV的模型
Model
* tests.py 自动化测试的模块,实现单元测试
* views.py 试图文件,处理功能的业务逻辑,即MTV中的视图View
启动项目
python manage.py runserver 8001 http://127.0.0.1:8001/
2、项目需求与设计
软件工程
- 开发流程:需求分析→设计说明(概要和详细设计)→代码编写→程序测试→软件交付→客户验收→后期维护。
- 网站首页:商品搜索功能、网站导航、广告轮播、商品分类热销、网站尾部
- 商品列表页:商品搜索功能、网站导航、商品分类、商品列表
- 商品详细页:商品搜索功能、网站导航、商品基本信息、商品详细介绍、热销推荐
- 购物车页面:商品搜索功能、网站导航、商品的购买费用核算
- 个人中心页面:商品搜索功能、网站导航、用户基本信息、订单信息
- 用户登录注册页面:商品搜索功能、网站导航、登录注册表单
数据库表的数据结构
商品信息表
| id | Int11 | 主键 |
| name | Varchar100 | 商品名称 |
| sizes | Varchar100 | 商品规格 |
| types | Varchar100 | 商品类型 |
| price | Float | 商品价格 |
| discountFloat | Float | 折后价格 |
| stock | Int | 存货数量 |
| sold | Int | 已售数量 |
| likes | Int | 收藏数量 |
| created | Date | 商家日期 |
| img | Varchar100 | 商品主图 |
| details | Varchar100 | 商品描述 |
商品类别表 关联商品信息表的types
| id | Int11 | 主键 |
| firsts | Varchar100 | 一级分类 |
| seconds | Varchar100 | 二级分类 |
购物车信息表
| id | Int11 | 主键 |
| quantity | Int11 | 购买数量 |
| commodityInfos_id | Int11 | 商品信息表的主键id 商品信息表id关联comm.._id |
| user_id | Int11 | Django内置用户表的主键id 关联Django内置用户表的id |
订单信息表
| id | Int11 | 主键 |
| price | Float11 | 订单总价 购物车信息表结算费用写入price |
| created | Int11 | 订单创建时间 |
| user_id | Date | Django内置用户表的主键id 关联Django内置用户表的id |
| state | Varchar20 | 订单状态 |
- MyDjango——与项目名相同
- commodity——网站的商品列表页、商品详细页
- index——网站首页
- media——网站的媒体资源,存放商品的主图、详细介绍图
- pstatic——网站的静态资源,如CSS、JavaScript、网站界面图片
- shopper——购物车页面、个人中心页面、用户登录注册页面、在线支付功能
- templates——存放HTML模板文件,即网站的网页文件
3、项目配置Settings.py
settings.py 添加新增的文件夹,识别这些文件夹
实际开发中,需要根据实际情况对INSTALLED_APPS、MIDDLEWARE、TEMPLATES、DATABASES、STATIC_URL进行配置
完成网站的开发过程,网站上线阶段则配置属性DEBUG、ALLOWED_HOSTS
INSTALLED_APPS:识别新增的项目应用(App),新增新建的App
TEMPLATES:模板文件设置,App中创建的模板文件夹需要在配置属性DIRS中添加如'index/temp,APP_DIRS需要为True,否则无法从项目应用中查找模板文件
MIDDLEWARE:中间件的作用是处理用户请求信息和返回响应内容
DATABASES:配置数据库
"ENGINE": "django.db.backends.mysql",
# "NAME": BASE_DIR / "db.sqlite3",
"NAME": 'xxxs', # 数据库名称
'USER': 'root', # mysql用户名
'PASSWORD': 'xxx', # mysql密码
'HOST': '127.0.0.1', # 数据库主机号
'PORT': '3306', # 数据库端口
或
创建my.cnf
[client]
database = 数据库名称
user = root
password = 密码
default-character-set = utf8
DATABASES = {"default": {"ENGINE": "django.db.backends.mysql","OPTIONS": {"read_default_file": "my.cnf",},}
}
Django可以使用mysqlclient和pymysql模块实现MySQL
django--db--backends--mysql--base.py mysqlclient版本要求
如果是使用pymysql,则需要在项目名目录下__init__.py文件中写入:import pymysql pymysql.install_as_MySQLdb()
如果是使用MySQL8.0版本,加密方式需要改为原来的加密方式
ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; FLUSH PRIVILEGES;
STATIC_URL进行配置:静态资源配置
"""
Django settings for xxxs project.Generated by 'django-admin startproject' using Django 4.2.7.For more information on this file, see
https://docs.djangoproject.com/en/4.2/topics/settings/For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/
"""from pathlib import Path# Build paths inside the project like this: BASE_DIR / 'subdir'.
# 项目路径
BASE_DIR = Path(__file__).resolve().parent.parent# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
# 密钥配置
SECRET_KEY = "xxx"# SECURITY WARNING: don't run with debug turned on in production!
# 调试模式
DEBUG = True# 域名访问权限
ALLOWED_HOSTS = []# Application definition
# App列表
INSTALLED_APPS = ["django.contrib.admin", # 内置的后台管理系统"django.contrib.auth", # 内置的用户认证系统"django.contrib.contenttypes", # 记录项目中所有model元数据(Django的ORM框架)"django.contrib.sessions", # Session会话功能,用于标识当前访问用户的身份,记录相关用户信息"django.contrib.messages", # 消息提示功能"django.contrib.staticfiles", # 查找静态资源路径'index','commodity','shopper',
]
# 中间件 用于处理Django的请求Request和相应Response
MIDDLEWARE = ["django.middleware.security.SecurityMiddleware", # 内置的安全机制,保护用户与网站的通信安全"django.contrib.sessions.middleware.SessionMiddleware", # 会话Session功能"django.middleware.common.CommonMiddleware", # 处理请求信息,规范化请求内容"django.middleware.csrf.CsrfViewMiddleware", # 开启CSRF防护功能"django.contrib.auth.middleware.AuthenticationMiddleware", # 开启内置的用户认证系统"django.contrib.messages.middleware.MessageMiddleware", # 开启内置的信息提示功能"django.middleware.clickjacking.XFrameOptionsMiddleware", # 防止恶意程序单机劫持 LocaleMiddleware:国际化和本地化功能
]
# 路由入口配置 默认值是与项目同名的文件夹的urls.py文件
ROOT_URLCONF = "xxxs.urls"
# 模板配置 配置模板的解析引擎、模板的存放路径地址即内置功能模板使用配置信息
TEMPLATES = [{"BACKEND": "django.template.backends.django.DjangoTemplates","DIRS": [BASE_DIR / 'templates'],"APP_DIRS": True,"OPTIONS": {"context_processors": ["django.template.context_processors.debug","django.template.context_processors.request","django.contrib.auth.context_processors.auth","django.contrib.messages.context_processors.messages",],},},
]
# WSGI配置 告诉Django如何查找WSGI文件
WSGI_APPLICATION = "xxxs.wsgi.application"# 数据库配置
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
# 配置数据库的连接信息,如连接数据库的模块、数据库名称、帐号和密码,默认连接SQLite数据库
# django.db.backends.postgresql/mysql/sqlite3/oracle
DATABASES = {"default": {"ENGINE": "django.db.backends.mysql",# "NAME": BASE_DIR / "db.sqlite3","NAME": 'xxx', # 数据库名称'USER': 'root', # mysql用户名'PASSWORD': 'xxx', # mysql密码'HOST': '127.0.0.1', # 数据库主机号'PORT': '3306', # 数据库端口}
}
或者配置成以下方式
DATABASES = {"default": {"ENGINE": "django.db.backends.mysql","OPTIONS": {"read_default_file": "my.cnf",},}
}# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
# 内置Auth认证的功能配置
AUTH_PASSWORD_VALIDATORS = [{"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",},{"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",},{"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",},{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",},
]# Internationalization
# https://docs.djangoproject.com/en/4.2/topics/i18n/
# 国际与本地化配置 语言设置、不同时区时间的设置
LANGUAGE_CODE = "en-us"
LANGUAGE_CODE = "zh-hans"TIME_ZONE = "UTC"
TIME_ZONE = "Asia/Shanghai"USE_I18N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/
# 静态资源配置
STATIC_URL = "static/"
# 添加并设置配置属性STATICFILES_DIRS
# 静态文件加载路径 如果静态文件不和app挂钩,可以在settings.py中添加STATICFILES_DIRS,之后DTL会在这个列表的路径中查找静态文件
STATICFILES_DIRS = (BASE_DIR / 'static',
)
# STATIC_ROOT = BASE_DIR / 'AllStatic' 该文件夹与服务器之间构建映射关系# 媒体资源配置
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-fieldDEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"# 发送邮件相关配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'xxx@qq.com'
EMAIL_HOST_PASSWORD = 'xxx' # 开启服务授权码,在邮箱的设置更改密码下方的位置进行配置,配置需要发送短信,之后获得的码输入到此处
DEFAULT_FROM_EMAIL = 'xxx@qq.com' # 默认发送者LOGIN_URL = '/auth/login'
4、路由 URL(Uniform Resource Locator 统一资源定位符)
互联网上标准资源的地址,用于指出网站文件的路径位置
5、数据模型搭建
ORM框架,实现面向对象编程
models id = models.AutoField(primary_key=True)
模型字段名称 数据类型 字段属性
__str__() 设置模型的返回值
默认情况:返回值为模型名+主键
模型扩展功能
class Meta: 设置模型的常用属性 元数据db_table = 指定表名unique_together = ('列名1', '列名2', ...) 联合约束,确定唯一记录ordering = ['列名1', '-列名2'] 先按列名1升序排序,再按列名2降序排序app_label = 指定该模型所属的应用abstract = True 抽象模型,不能生成数据库表结构,只能作为其他模型的父类
当模型较多时,用包Package将模型拆分进行统一管理;将models.py文件拆分为xx.py和xxx.py后,需要在__init__.py文件中导入所有模型
settings.py的DATABASES属性中配置MySQL数据库连接信息
数据迁移指令
python manage.py makemigrations 新定义的模型会在项目应用的migrations文件夹中创建新的.py文件
python manage.py migrate 执行新建到数据库操作
python manage.py migrate 应用名 0001_initial 执行某个项目应用中的某个.py文件
其他迁移指令
squashmigrations、inspectdb、showmigrations、sqlflush、sqlsequencereset、remove_stale_contenttypes
数据导入(loaddata)与导出(dumpdata)
python manage.py dumpdata>data.json
data.json项目根目录下,如果要保存到指定的文件夹下,cd到该路径后执行命令
命令行需要python xxx/xxx/manage.py dumpdata>data.json
导出项目应用commodity中所有模型数据
python manage.py dumpdata commodity>data.json
导出项目应用commodity中模型Types的数据
python manage.py dumpdata commodity.Types>types.json
导入数据
python manage.py loaddata data.json
注:数据的导入需要以整个项目或整个项目应用的数据为单位,因为存在外键关联,只导入某张表数据,需要考虑该数据表是否设有外键且外键所关联的数据表是否已有数据
*关联关系型字段*
一对一关系
从表中增加xxx_id字段,关联主表的id
xxx = models.OneToOneField(to_field=’id‘, to='table_name', on_delete=models.CASCADE, blank=True, null=True)
指向主表的id 指向主表 主表中删除一条记录,对应表也同步删除
一对多关系
主表的一条记录对应从表的多条记录
xxx = models.Foreignkey('主表的模型名称', on_delete=models.CASCADE) xxx_id
多对多关系
A表的一条记录和B表的多条记录对应,B表的一条记录和A表的多条记录对应(如:作者和图书,一个作者可以借阅多本图书,一本图书可以由多人借阅)
xxx = models.ManyToManyField(模型名, blank=True) 与模型建立多对多关系
作者信息表 多对多关联中间表 图书信息表
数据库基本操作
新增
- python manage.py shell 交互模式环境
- from xxx.models import goods 导入模型
- g = goods() 构建goods模型实例
- g.xxx = 'xxx' 为属性赋值
- 或 g = goods(xxx='xxx, ...)
- g.save() 通过save()方法将实例保存到数据库表中
- 或
- g = goods.objects.create(xxx='xxx', ...) 通过create()方法新增记录
- 或
- g = goods.objects.get_or_create(xxx='xxx', ...) 新增前检查记录是否存在
- 或
- d = dict(xxx='xxx',...)
- g = goods.objects.update_or_create(**d, defaults={'xxx':xxx}) 数据表中如存在该记录,对记录进行修改
- 或
- g1 = goods(xxx='xxx', ...) g2 = goods(xxx='xxx', ...) goods.objects.bulk_create([g1, g2]) 批量新增
查询
- goods.objects.all() 查找数据库表中所有记录
- QuerySet类型,对应于数据库表的记录集合(字典、元组)
- goods.objects.values() ...所有记录,以字典的形式表示
- goods.objects.values_list() 以列表的形式返回指定模型对象所对应的数据库表所有记录
- goods.objects.get(条件) 返回符合条件的记录
- goods.objects.first() 返回第一条记录 / last() 返回最后一条记录 / count() 返回数据个数
- goods.objects.filter(条件) 可以在组合条件下对数据库表中记录进行查找
- goods.objects.exclude(条件) 排除条件,返回不符合条件的记录
- goods.objects.order_by('id', '列名') 按照指定字段排序
- goods.objects.aggregate()
修改
- models.goods.objects.filter(条件).update(条件)
删除
- models.goods.objects.filter(条件).delete()
- models.goods.objects.filter(条件).distinct() 去掉重复记录
命令行
安装Django
pip install Django 或 下载.whl后 pip install D:\xxx.whl
创建Django项目
django-admin startproject MyDjango
查看Django版本
python import django django.__version__
创建项目应用,简称App,相当于网站功能
python manage.py startapp index
启动项目
python manage.py runserver 8001
访问地址为http://127.0.0.1:8001/
创建Django内置功能的数据表(创建新表)
python manage.py makemigrations 创建模型对应的表结构命令文件
python manage.py migrate 创建新表结构
python manage.py makemigrations 新定义的模型会在项目应用的migrations文件夹中创建新的.py文件
python manage.py migrate 执行新建到数据库操作
python manage.py migrate 应用名 0001_initial 执行某个项目应用中的某个.py文件
数据导入(loaddata)与导出(dumpdata)
python manage.py dumpdata>data.json
导出项目应用commodity中所有模型数据
python manage.py dumpdata commodity>data.json
导出项目应用commodity中模型Types的数据
python manage.py dumpdata commodity.Types>types.json
相关文章:
Django学习(2)项目实战
1、环境及简介 前端开发:HTML、CSS、JavaScript 后端开发:Java、PHP、Python、GO 数据库:MySQL、MSSQL、Oracle、Redis 安装Django pip install Django 或 下载.whl后 pip install D:\xxx.whl 创建Django项目 File--New Projec…...
pdf格式转成jpg图片,pdf格式如何转jpg
pdf转图片的方法,对于许多人来说可能是一个稍显陌生的操作。然而,在日常生活和工作中,我们有时确实需要将pdf文件转换为图片格式,以便于在特定的场合或平台上进行分享、展示或编辑。以下,我们将详细介绍一个pdf转成图片…...
Java的三个接口Comparable,Comparator,Cloneable(浅拷贝与深拷贝)
Comparable 当我们要进行对象的比较的时候,我们是不能直接用>、< 这些符号直接进行比较的。 由于这是引用类型变量也是自定义类型变量,直接进行比较的时候,我们是通过对象的地址进行比较的,我们可以使用、! 进行两个对象的…...
pytorch学习笔记7
getitem在进行索引取值的时候自动调用,也是一个魔法方法,就像列表索引取值那样,一个意思 import torchvision from torch.utils.data import DataLoaderdata_transformtorchvision.transforms.Compose([torchvision.transforms.ToTensor()] ) test_datatorchvision.datasets.C…...
LeetCode热题3.无重复的最长字串
前言: 经过前序的一系列数据结构和算法学习后,开始用leetCode热题练练手。 . - 力扣(LeetCode) 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为…...
Python武器库开发-武器库篇之SQL注入扫描器(五十九)
Python武器库开发-武器库篇之SQL注入扫描器(五十九) SQL注入漏洞简介以及危害 SQL注入漏洞是一种常见的Web应用程序漏洞,攻击者可以利用该漏洞在应用程序的数据库中执行恶意的SQL查询或指令。这可能导致数据泄露、数据损坏、应用程序崩溃或未经授权的访问。 SQL注…...
图说设计模式:单例模式
更多C学习笔记,关注 wx公众号:cpp读书笔记 5. 单例模式 单例模式 模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结 5.1. 模式动机 对于系统中的某些类来说,只有一个实例很重要,例如…...
探索设计模式——单例模式详解
前言:设计模式的作用主要是为了——利用设计方式的重用来自动地提高代码的重新利用、提高代码的灵活性、节省时间, 提高开发效率、低耦合,封装特性显著, 接口预留有利于扩展。 设计模式的种类有很多种,本篇内容主要讲解…...
建筑垃圾/城市固废倾倒转移乱象:EasyCVR+AI智能视频监控方案助力城市环保监管
近日有新闻记者报道,中央生态环境保护督察组在上海、浙江、江西、湖北、湖南、重庆、云南7省市督察发现,一些地方建筑垃圾处置工作存在明显短板,乱堆乱倒问题时有发生,比如,江西湘东区在杨家田地块违规设置弃土场&…...
C的I/O操作
目录 引言 一、文件与目录操作 1. 打开与关闭文件 2. 文件读写操作 3. 文件定位与错误处理 二、字符流与字节流 1. 字符流处理 2. 字节流处理 三、序列化与反序列化 1. 序列化 2. 反序列化 四、新的I/O(NIO) 表格总结 文件与目录操作 字符…...
Android Audio实战——声道信息回调(五)
在前面的 AudioTrack 构造中,我们传入了音频的声道信息,这一节我们就来详细介绍一下声道的配置信息。 一、声道介绍 音频中的声道配置从单声道到双声道(立体声)、再到多声道系统(如5.1和7.1),代表了声音录制和回放技术的发展,旨在提供越来越丰富和沉浸式的听觉体验。 …...
ThreeJS给模型添加介绍文字(贴在模型上 不会一直面向我们)
使用到 FontLoader跟 TextGeometry 引包 import {TextGeometry} from "three/examples/jsm/geometries/TextGeometry"; import {FontLoader} from "three/examples/jsm/loaders/FontLoader";使用 // 创建字体加载器并加载字体 const fontLoader new Fo…...
[Qt] Qt Creator 以及 Qt 在线安装教程
一、Qt Creator 下载及安装 1、从以下镜像源下载安装包常规安装即可 Qt Creator 也可以在第二步Qt 在线安装时一次性勾选安装,见后文 Qt Creator 中科大源下载地址 二、Qt 在线安装 1、根据所在平台选择对应的安装器下载 Qt 在线安装器下载 2、可能的安装报错…...
【大分享05】动态容差归档,打通不动产登记管理“最后一公里”
关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章,来自上海涵妍档案信息技术有限责任公司,作者:陈雪。 一、政策背景 在“互联网政务服务”的浪潮下,各级政府机构…...
嵌入式模拟电路面试题大全及参考答案(持续更新)
目录 理想运算放大器的两个基本特性 共模抑制比(CMRR)及其重要性 负反馈在放大器中的作用 差分放大电路的工作原理 使用运算放大器构建非反相放大器 电源抑制比(PSRR) 带宽(BW)在放大器中的含义 计算RC低通滤波器的截止频率 基本的积分电路及其时间常数 增益-带…...
【C语言】解决C语言报错:Uninitialized Variable
文章目录 简介什么是Uninitialized VariableUninitialized Variable的常见原因如何检测和调试Uninitialized Variable解决Uninitialized Variable的最佳实践详细实例解析示例1:局部变量未初始化示例2:数组未初始化示例3:指针未初始化示例4&am…...
RabbitMQ实践——交换器(Exchange)绑定交换器
在《RabbitMQ实践——交换器(Exchange)和绑定(Banding)》一文中,我们实验了各种交换器。我们可以把交换器看成消息发布的入口,而消息路由规则则是由“绑定关系”(Banding)来定义&…...
使用 Vue 官方脚手架初始化 Vue3 项目
Vite 官网:https://cn.vitejs.dev/ Vue 官网:https://vuejs.org/ Vue 官方文档:https://cn.vuejs.org/guide/introduction.html Element Plus 官网:https://element-plus.org/ Tailwind CSS 官网:https://tailwindcss.…...
C语言中的宏定义(#define)和函数调用的区别
C语言中的宏定义(#define)和函数调用在概念、工作方式以及它们对代码的影响上有显著的区别。以下是它们之间的主要差异: 宏定义(#define) 工作方式:宏定义是在预处理阶段进行的文本替换。预处理器会在编译…...
196. 删除重复的电子邮箱
196. 删除重复的电子邮箱 题目链接:196. 删除重复的电子邮箱 代码如下: # Write your MySQL query statement below delete from Person as p where p.id not in(select e.id from (select min(id) as idfrom Person group by email ) as e )...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
