【Django】学习笔记

文章目录

    • @[toc]
      • MVC与MTV
        • MVC设计模式
        • MTV设计模式
      • Django下载
      • Django工程创建与运行
        • 创建工程
        • 运行工程
      • 子应用创建与注册安装
          • 创建子应用
          • 注册安装子应用
      • 数据模型
        • ORM框架
        • 模型迁移
      • Admin站点
        • 修改语言和时区
        • 设置管理员账号密码
        • 模型注册
        • 显示对象名称
        • 模型显示中文
        • App显示中文
      • 视图函数与路由系统
        • 定义视图函数
        • 配置路由系统
      • 模板渲染
        • 配置模板路径
        • 建立视图
        • 建立模板
      • 配置文件与静态文件
        • BASE_DIR
        • DEBUG
        • 静态文件
      • 数据库配置
        • 建立数据库book_manager
        • 配置settings.py
        • 安装MySQL驱动
        • 数据插入
      • 数据增加
        • save()方法
        • objects.create()方法
      • 数据修改
        • save()方法
        • objects.filter().update()方法
      • 数据删除
        • delete()方法
        • objects.filter().delete()方法
      • 数据库查询
        • 基础查询
          • objects.all()方法
          • objects.count()方法
          • objects.exclude()方法
          • objects.filter()方法
        • 过滤查询
          • exact
          • contains
          • endswith
          • isnull
          • in
          • gt
          • year
          • gte
        • F对象
        • Q对象
          • 逻辑与
            • objects.filter()方法
            • Q对象
          • 逻辑或
          • 逻辑非
        • 聚合函数
        • 排序函数
          • 正序
          • 倒序
        • 关联查询
          • 访问
            • 一对多的访问
            • 多对一的访问
          • 过滤查询
            • 多对一的查询
            • 一对多的查询
        • 切片
        • 分页
        • 惰性执行
        • 缓存
      • HttpRequest
        • 路由参数
          • 配置views.py
          • 配置urls.py
        • 查询字符串
          • 配置views.py
          • url
        • 表单数据
          • 配置views.py
          • 关闭CSRF
        • JSON数据
          • 配置views.py
        • 请求头数据
          • 配置views.py
        • 转换器
          • 配置converters.py
          • 配置views.py
          • 配置urls.py
      • HttpResponse
        • 配置views.py
      • JsonResponse
        • 配置views.py
      • Redirect
        • 配置views.py
      • Cookie
        • 设置Cookie
          • 配置views.py
        • 获取Cookie
          • 配置views.py
      • Session
        • 设置Session
          • 配置views.py
        • 获取Session
          • 配置views.py
        • 保存Session到Redis
          • 配置settings.py
      • 类视图
        • 类视图定义
          • 配置views.py
          • 配置urls.py
        • 多继承
          • 配置views.py
      • 中间件
        • 中间件定义
          • 配置middleware.py
          • 配置settings.py

MVC与MTV

MVC设计模式

1

MTV设计模式

2


Django下载

pip install django==2.2.5

Django工程创建与运行

创建工程
django-admin startproject book_manager
运行工程
python manage.py runserver

子应用创建与注册安装

创建子应用
python manage.py startapp book
注册安装子应用
  • 配置settings.py中的INSTALLED_APPS
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','book.apps.BookConfig',
]

数据模型

ORM框架
  • 配置models.py
from django.db import models# Create your models here.# 书籍信息表
class BookInfo(models.Model):name = models.CharField(max_length=10, verbose_name='书籍名称')pub_date = models.DateField(null=True, verbose_name='出版日期')read_count = models.IntegerField(default=0, verbose_name='阅读量')comment_count = models.IntegerField(default=0, verbose_name='评论量')is_delete = models.BooleanField(default=False, verbose_name='是否删除')def __str__(self):return self.nameclass Meta:db_table = 'book_info'verbose_name = '书籍信息管理'verbose_name_plural = verbose_name# 人物信息表
class PersonInfo(models.Model):GENDER_CHOICES = ((0, 'male'),(1, 'female'))name = models.CharField(max_length=10, verbose_name='人物名称')gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='人物性别')description = models.CharField(max_length=100, null=True, verbose_name='人物描述')book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='人物所属书籍')is_delete = models.BooleanField(default=False, verbose_name='是否删除')def __str__(self):return self.nameclass Meta:db_table = 'person_info'verbose_name = '人物信息管理'verbose_name_plural = verbose_name
模型迁移
  • Tools->Run manage.py Task
makemigrations
migrate

Admin站点

修改语言和时区
  • 配置settings.py
LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'
设置管理员账号密码
  • Tools->Run manage.py Task
createsuperuser
模型注册
  • 配置admin.py
from django.contrib import admin# Register your models here.from .models import BookInfo, PersonInfoadmin.site.register(BookInfo)
admin.site.register(PersonInfo)
显示对象名称
from django.db import models# Create your models here.# 书籍信息表
class BookInfo(models.Model):name = models.CharField(max_length=10)def __str__(self):return self.name# 人物信息表
class PersonInfo(models.Model):name = models.CharField(max_length=10)gender = models.BooleanField()book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)def __str__(self):return self.name
模型显示中文
from django.db import models# Create your models here.# 书籍信息表
class BookInfo(models.Model):name = models.CharField(max_length=10)def __str__(self):return self.nameclass Meta:verbose_name = '书籍信息管理'verbose_name_plural = verbose_name# 人物信息表
class PersonInfo(models.Model):name = models.CharField(max_length=10)gender = models.BooleanField()book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)def __str__(self):return self.nameclass Meta:verbose_name = '人物信息管理'verbose_name_plural = verbose_name
App显示中文
  • 配置apps.py
from django.apps import AppConfigclass BookConfig(AppConfig):name = 'book'verbose_name = '书籍管理'

视图函数与路由系统

定义视图函数
  • 配置views.py
from django.shortcuts import render# Create your views here.from django.http import HttpResponsedef index(request):return HttpResponse('OK!')
配置路由系统
  • 创建子路由:在book文件夹下建立urls.py文件
from django.urls import path
from . import viewsurlpatterns = [path('index/', views.index),
]
  • 配置总路由
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('', include('book.urls'))
]

模板渲染

配置模板路径
  • 在项目根路径下建立templates文件夹
  • 配置settings.py
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(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',],},},
]
  • templates文件夹下建立book文件夹
建立视图
def index_2(request):context = {'name': '从心','age': '22'}return render(request, template_name='book/index_2.html', context=c ontext)
建立模板
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>index_2</title>
</head><body><div>书籍列表<ul><li>西游记</li><li>三国演义</li></ul></div><div>个人信息<div>{{ name }}</div><div>{{ age }}</div></div></body></html>

配置文件与静态文件

BASE_DIR
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DEBUG
DEBUG = True
  • 默认工作在DEBUG模式下
  • 修改源代码程序会自动重启
  • Django程序出现异常时会向前端显示详细的错误追踪信息
DEBUG = FalseALLOWED_HOSTS = ['*']
  • ALLOWED_HOSTS为指定的IP访问白名单
静态文件
  • 在项目根目录下建立static文件夹
  • STATIC_URL是静态文件访问路由
  • STATICFILES_DIRS是静态文件存放路径
STATIC_URL = '/static/'STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')
]
  • 通过http://127.0.0.1:8000/static/1.jpg访问静态文件

数据库配置

建立数据库book_manager
  • 字符集:utf8mb4
  • 排序规则:utf8mb4_bin
配置settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': 'localhost','PORT': 3306,'USER': 'root','PASSWORD': 'root','NAME': 'book_manager',}
}
安装MySQL驱动
  • 配置__init__.py
import pymysqlpymysql.install_as_MySQLdb()
  • 测试运行,修改最后一个链接
if query is not None:query = query.encode(errors='replace')
数据插入
insert into book_info (name, pub_date, read_count, comment_count, is_delete) values
('射雕英雄传', '1980-5-1', 12, 34, 0),
('天龙八部', '1986-7-24', 36, 40, 0),
('笑傲江湖', '1995-12-24', 20, 80, 0),
('雪山飞狐', '1987-11-11', 58, 24, 0);
insert into person_info (name, gender, description, book_id, is_delete) values
('郭靖', 0, '降龙十八掌', 1, 0),
('黄蓉', 1, '打狗棍法', 1, 0),
('黄药师', 0, '弹指神功', 1, 0),
('欧阳锋', 0, '蛤蟆功', 1, 0),
('梅超风', 1, '九阴白骨爪', 1, 0),
('乔峰', 0, '降龙十八掌', 2, 0),
('段誉', 0, '六脉神剑', 2, 0),
('虚竹', 0, '天山六阳掌', 2, 0),
('王语嫣', 1, '神仙姐姐', 2, 0),
('令狐冲', 0, '独孤九剑', 3, 0),
('任盈盈', 1, '弹琴', 3, 0),
('岳不群', 0, '华山剑法', 3, 0),
('东方不败', 1, '葵花宝典', 3, 0),
('胡斐', 0, '胡家刀法', 4, 0),
('苗若兰', 1, '黄衣', 4, 0),
('程灵素', 1, '医术', 4, 0),
('袁紫衣', 1, '六合拳', 4, 0);

数据增加

save()方法
from book.models import BookInfo
book_info = BookInfo(name='完美世界',pub_date='2013-8-16'
)
book_info.save()
objects.create()方法
from book.models import BookInfo
BookInfo.objects.create(name='斗破苍穹',pub_date='2014-5-4'
)

数据修改

save()方法
from book.models import BookInfo
book_info = BookInfo.objects.get(id=5)
book_info.name = '斗罗大陆'
book_info.save()
objects.filter().update()方法
from book.models import BookInfo
BookInfo.objects.filter(id=6).update(name='炼气十万年')

数据删除

delete()方法
from book.models import BookInfo
book_info = BookInfo.objects.get(id=6)
book_info.delete()
objects.filter().delete()方法
from book.models import BookInfo
BookInfo.objects.filter(id=5).delete()

数据库查询

基础查询
objects.all()方法
from book.models import BookInfo
BookInfo.objects.all()
objects.count()方法
from book.models import BookInfo
BookInfo.objects.all()
objects.exclude()方法
from book.models import BookInfo
BookInfo.objects.exclude(id=1)
objects.filter()方法
from book.models import BookInfo
BookInfo.objects.filter(id=1)[0]
过滤查询
exact
from book.models import BookInfo
BookInfo.objects.get(id__exact=1)
contains
from book.models import BookInfo
BookInfo.objects.filter(name__contains='湖')
endswith
from book.models import BookInfo
BookInfo.objects.filter(name__endswith='部')
isnull
from book.models import BookInfo
BookInfo.objects.filter(name__isnull=True)
in
from book.models import BookInfo
BookInfo.objects.filter(id__in=[1, 3, 5])
gt
from book.models import BookInfo
BookInfo.objects.filter(id__gt=3)
year
from book.models import BookInfo
BookInfo.objects.filter(pub_date__year=1980)
gte
from book.models import BookInfo
BookInfo.objects.filter(pub_date__gte='1990-1-1')
F对象
from book.models import BookInfo
from django.db.models import F
BookInfo.objects.filter(read_count__gt=F('comment_count') * 2)
Q对象
逻辑与
objects.filter()方法
from book.models import BookInfo
BookInfo.objects.filter(read_count__gt=20, id__lt=3)
# BookInfo.objects.filter(read_count__gt=20).filter(id__lt=3)
Q对象
from book.models import BookInfo
from django.db.models import Q
BookInfo.objects.filter(Q(read_count__gt=20) & Q(id__lt=3))
逻辑或
from book.models import BookInfo
from django.db.models import Q
BookInfo.objects.filter(Q(read_count__gt=20) | Q(id__lt=3))
逻辑非
from book.models import BookInfo
from django.db.models import Q
BookInfo.objects.filter(~Q(id=1))
聚合函数
from book.models import BookInfo
from django.db.models import Sum, Max, Min, Avg, Count
BookInfo.objects.aggregate(Sum('read_count'))
排序函数
正序
from book.models import BookInfo
BookInfo.objects.all().order_by('read_count')
倒序
from book.models import BookInfo
BookInfo.objects.all().order_by('-read_count')
关联查询
访问
一对多的访问
from book.models import BookInfo
book = BookInfo.objects.get(id=1)
book.personinfo_set.all()
多对一的访问
from book.models import PersonInfo
person = PersonInfo.objects.get(id=1)
person.book
# person.book_id
person.book.id
过滤查询
多对一的查询
from book.models import BookInfo
book = BookInfo.objects.filter(personinfo__name='郭靖')
book
book = BookInfo.objects.filter(personinfo__description__contains='八')
book
一对多的查询
from book.models import PersonInfo
people = PersonInfo.objects.filter(book__name='天龙八部')
people
people = PersonInfo.objects.filter(book__read_count__gt=20)
people
切片
from book.models import BookInfo
BookInfo.objects.all()[0:2]
分页
from book.models import BookInfo
from django.core.paginator import Paginator
books = BookInfo.objects.all()
paginator = Paginator(books, 2)
page_1_books = list(paginator.page(1))
page_1_books
paginator.num_pages
惰性执行
  • 如果用变量接收查询语句的返回结果,那么查询语句不会立即执行,而是等到调用该变量时执行
from book.models import BookInfo
books = BookInfo.objects.all()
books
缓存
  • 变量的值存放在系统内存中,如果通过变量进行查询,那么不会对数据库进行查询,而是从内存中查询
from book.models import BookInfo
books = BookInfo.objects.all()
[book.id for book in books]
[book.id for book in books]

HttpRequest

路由参数
配置views.py
def url_data(request, cat_id, sku_id):print(cat_id, sku_id)return HttpResponse('OK!')
配置urls.py
path('<cat_id>/<sku_id>/', views.url_data)
查询字符串
配置views.py
def query_str_data(request):print(request.GET)a = request.GET.get('a')b = request.GET.get('b')print(a, b)a_list = request.GET.getlist('a')print(a_list)return HttpResponse('OK!')
url
http://localhost:8000/query_str_data/?a=1&b=2&a=3
表单数据
配置views.py
def form_data(request):print(request.POST)username = request.POST.get('username')password = request.POST.get('password')print(username, password)return HttpResponse('OK!')
关闭CSRF
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]
JSON数据
配置views.py
def json_data(request):json_data = request.bodydict_data = json.loads(json_data)print(dict_data['username'], dict_data['age'])return HttpResponse('OK!')
请求头数据
配置views.py
def headers_data(request):print(request.META)print(request.META['CONTENT_TYPE'])print(request.method)print(request.path)print(request.user)return HttpResponse('OK!')
转换器
配置converters.py
from django.urls.converters import register_converterclass TelConverter:regex = '1[3-9]\d{9}'def to_python(self, value):return int(value)def to_url(self, value):return str(value)register_converter(TelConverter, 'tel')
配置views.py
import convertersdef tel_data(request, tel_data):print(tel_data)return HttpResponse('OK!')
配置urls.py
path('<tel:tel_data>/',views.tel_data)

HttpResponse

配置views.py
def http_response(request):response = HttpResponse(content='OK!', content_type='text/plain', status=200)response['key'] = 'value'return response

JsonResponse

配置views.py
def json_response(request):books_info = [{'id': 1,'name': '射雕英雄传','pub_date': '1980-5-1'},{'id': 2,'name': '天龙八部','pub_date': '1986-7-24'}]return JsonResponse(data=books_info, safe=False)

Redirect

配置views.py
from django.shortcuts import redirectdef redirect_url(request):return redirect('https://www.baidu.com')

Cookie

设置Cookie
配置views.py
def set_cookie(request):username = request.GET.get('username')password = request.GET.get('password')print(username, password)response = HttpResponse('OK!')response.set_cookie('username', username)response.set_cookie('password', password)return response
获取Cookie
配置views.py
def get_cookie(request):print(request.COOKIES)username = request.COOKIES.get('username')password = request.COOKIES.get('password')return HttpResponse(f'username: {username}, password: {password}')

Session

设置Session
配置views.py
def set_session(request):username = request.GET.get('username')user_id = 1request.session['username'] = usernamerequest.session['user_id'] = user_iddel request.session['user_id']# request.session.clear()# request.session.flush()request.session.set_expiry(60)return HttpResponse('OK!')
获取Session
配置views.py
def get_session(request):username = request.session.get('username')user_id = request.session.get('user_id')return HttpResponse(f'username: {username}, user_id: {user_id}')
保存Session到Redis
配置settings.py
CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache','LOCATION': 'redis://127.0.0.1:6379/1','OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',}}
}SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'

类视图

类视图定义
配置views.py
from django.views import Viewclass LoginView(View):def get(self, request):return HttpResponse(f'当前请求为: {request.method}')def post(self, request):return HttpResponse(f'当前请求为: {request.method}')
配置urls.py
path('login/', views.LoginView.as_view())
多继承
配置views.py
from django.contrib.auth.mixins import LoginRequiredMixinclass OrderLoginView(LoginRequiredMixin, View):def get(self, request):return HttpResponse('个人中心页面')def post(self, request):return HttpResponse('个人中心页面')

中间件

中间件定义
配置middleware.py
from django.utils.deprecation import MiddlewareMixinclass TestMiddleware(MiddlewareMixin):def process_request(self, request):print('每次请求前, 进行调用')username = request.COOKIES.get('username')if username is None:print('用户信息不存在')else:print('用户信息存在')def process_response(self, request, response):print('每次响应前, 进行调用')return response
配置settings.py
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','book.middlewares.TestMiddleware'
]

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

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

相关文章

分布式锁实现方案-基于zookeeper的分布式锁实现(原理与代码)

目录 一、基于zookeeper的分布式锁 1.1 基于Zookeeper实现分布式锁的原理 1.1.1 分布式锁特性说明 1.1.1.1 特点分析 1.1.1.2 本质 1.1.2 Zookeeper 分布式锁实现原理 1.1.2.1 Zookeeper临时顺序节点特性 1.1.2.2 Zookeeper满足分布式锁基本要求 1.1.2.3 Watcher机制 …

UE5增强输入系统 Enhanced Input

关键字&#xff1a; Enhanced Input 、 输入、映射、事件、鼠标、键盘、键鼠、动作、Trigger、触发器、 疑问&#xff1a; 新输入系统怎么做一个基础的案例&#xff1f;Trigger修改器中每个项都是什么功能&#xff1f;功能边界问题&#xff1a;如时刻、时段、单次事件、持续事…

Linux驱动开发——(一)设备树的基本属性及其应用

目录 一、常见基本属性 1.1 compatible属性 1.2 status属性 1.3 reg属性 1.4 #address-cells属性和#size-cells属性 二、基本属性在设备树的表现 三、基本属性在驱动代码的表现 3.1 驱动代码 3.2 驱动代码中的OF函数 3.2.1 of_find_node_by_path 3.2.2 of_find_prope…

Unity类银河恶魔城学习记录13-5,6 p146 Delete save file,p147 Encryption of saved data源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili FileDataHandler.cs using System; using System.IO; using UnityEngine; p…

Spring Boot + Thymeleaf 实现的任务发布网站

角色&#xff1a; 管理员雇主雇员 功能 雇主&#xff1a;登录、注册、发布任务、选择中标雇员、评价雇员雇员&#xff1a;登录、注册、查看任务列表、投标任务、收藏任务、完成任务管理员、登录、任务管理、雇主管理、雇员管理 部分功能截图 部署 导入数据库…

.NET 邮件发送 SMTP邮件发送

SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;是用于电子邮件传输的规则集&#xff0c;可以从邮件客户端向接收电子邮件服务器发送、中继或转发邮件。发件人可使用SMTP 服务器来执行发送电子邮件的过程。SMTP服务器则是按照这些规则中转电子邮件的服务器。 IMAP…

视频质量评价 PSNR 算法详细介绍

PSNR PSNR(Peak Signal-to-Noise Ratio,峰值信噪比)是一种常用的评价图像质量的指标,尤其在图像压缩和图像处理领域。它基于最大可能的图像信号功率和图像的噪声功率之间的比率,通常用于衡量图像恢复或图像压缩算法的效果。 原理 PSNR是基于MSE(Mean Squared Error,均…

node-sass报错

node-sass报错 解决方案 有几种解决方案&#xff0c;但感觉都是为了下载vsta_sdk这个工具的。 有的电脑下载C开发程序时可以顺带下载这个插件。 可以直接下载VS之后点击下载C桌面开发&#xff0c;但是有的不行&#xff0c;所以网上也就有另外一种方式&#xff0c;就是下载V…

C# danbooru Stable Diffusion 提示词反推 OpenVINO Demo

C# danbooru Stable Diffusion 提示词反推 OpenVINO Demo 目录 说明 效果 模型信息 项目 代码 下载 说明 模型下载地址&#xff1a;https://huggingface.co/deepghs/ml-danbooru-onnx 效果 模型信息 OVVersion { BuildNumber 2023.1.0-12185-9e6b00e51cd-releases/20…

桌面软件使用到的开源库

想了解一下桌面软件开发中可能使用到的dll库 联想锁屏 libcef-常用概念-框架特点-CSDN博客 libcurl库使用详情、libcurl库的制作-CSDN博客 使用Cef和Qt做一个跨平台的多标签多窗口浏览器_cef3 多个标签-CSDN博客 cef 依赖的文件 libcef - Bigben - 博客园 (cnblogs.com) Q…

Hikyuu 2.0.2 发布,高性能量化交易研究框架

新增特性 历史财务信息入库&#xff0c;对于使用 MySQL 存储&#xff0c;可以直接使用服务端的财务数据&#xff08;之前只能在执行数据下载的机器上获取&#xff09;增加指标 FINANCE 获取相应历史财务数据&#xff0c;具体财务字段信息可通过StockManager.get_history_finan…

Android AIDL接口

一.AlDI接口简介 AIDL&#xff08;Android Interface Definition Language&#xff09;是一种 IDL 语言&#xff0c;用于生成可以在 Android 设备上两个进程之间进行进程间通信&#xff08;IPC&#xff09;的代码。 通过 AIDL&#xff0c;可以在一个进程中获取另一个进程的数据…

开源博客项目Blog .NET Core源码学习(16:App.Hosting项目结构分析-4)

本文学习并分析App.Hosting项目中前台页面的文章专栏页面和文章详情页面。< 文章专栏页面 文章专栏页面总体上为左右布局&#xff0c;左侧显示文章列表&#xff0c;右侧从上向下为关键词搜索、分类导航、热门文章等内容。整个页面使用了layui中的面包屑导航、表单、模版、流…

MySQL数据库外键约束打开与关闭 ️

MySQL数据库外键约束打开与关闭 &#x1f6e0;️ MySQL数据库外键约束打开与关闭 &#x1f6e0;️摘要 &#x1f4dd;引言 &#x1f680;正文内容&#xff08;详细介绍&#xff09; &#x1f4a1;关闭外键约束检查外键约束检查关闭的作用风险与最佳实践建议 &#x1f914; QA环…

使用Spring进行文件的上传和下载

概览 使用Spring进行文件的上传和下载Spring上传文件接口设计dubbo接口设计上传文件流的RPC的接口设计 Spring文件下载接口设计dubbo接口设计下载文件流的RPC的接口设计 spring上传文件大小控制 使用Spring进行文件的上传和下载 本文主要介绍在Spring框架下面调用微服务的dubb…

LeetCode36: 有效的数独(Java)

题目&#xff1a; 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例…

一次Ambari安装记录

引言 Ambari是一个开源的Apache项目,它提供了一个直观易用的Web界面,用于管理、监控和配置Apache Hadoop集群。它是一个集群管理工具,可以帮助管理员轻松地部署、管理和监控Hadoop集群的各种组件,如HDFS、YARN、MapReduce、Hive、HBase等。通过Ambari,用户可以在集群中添…

OerOerlikonTCO1200欧瑞康LPCVD system操作使用说明

OerOerlikonTCO1200欧瑞康LPCVD system操作使用说明

DQ-DETR: DETR WITH DYNAMIC QUERY FOR TINY OBJECTDETECTION 学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2404.03507.pdf 此DQ-DETR与IDEA提出的同名&#xff0c;该文主要集中于小目标的检测 尽管之前的类似DETR的方法在通用目标检测中取得了成功&#xff0c;但在小目标检测方面仍然具有挑战性&#xff0c;因为目标 Query 的位置信息并未…

LWIP开启ARP之后进入硬件错误中断

遇到个很奇怪的问题&#xff0c;如下图只要开启ARP之后&#xff0c;就会进入硬件错误中断&#xff0c;关掉就好了。 而无法开启ARP&#xff0c;就不能ping 通&#xff0c;所以必须要解决这个问题。 最终debug发现死在memcpy函数位置 这样原因就很好分析了&#xff0c; 共4个拷…