Django Admin后台管理:高效开发与实践
title: Django Admin后台管理:高效开发与实践
date: 2024/5/8 14:24:15
updated: 2024/5/8 14:24:15
categories:
- 后端开发
tags:
- DjangoAdmin
- 模型管理
- 用户认证
- 数据优化
- 自定义扩展
- 实战案例
- 性能安全
第1章:Django Admin基础
1.1 Django Admin简介
Django Admin是Django框架自带的一个管理后台工具,它允许开发者通过一个直观的Web界面轻松地管理应用中的数据模型。Admin提供了模型的CRUD(Create,
Read, Update, Delete)操作,以及数据的批量处理和搜索功能,极大地简化了日常的数据库管理。它不仅适用于开发阶段,也非常适合在生产环境中进行数据维护。
1.2 安装和配置Django
- 安装Django:首先确保你的Python环境已经安装了pip,然后在命令行中运行
pip install Django
。 - 创建新项目:在命令行中,使用
django-admin startproject project_name
命令创建一个新的Django项目。 - 激活虚拟环境(可选,推荐):使用
venv
或virtualenv
创建并激活虚拟环境。 - 配置数据库:在
settings.py
中,设置数据库引擎,如DATABASES
配置。 - 运行迁移:创建模型后,执行
python manage.py makemigrations
和python manage.py migrate
来更新数据库结构。
1.3 创建第一个Django项目
- 创建应用:在项目目录下,使用
python manage.py startapp app_name
创建一个新的应用。 - 定义模型:在
app_name/models.py
中,定义数据模型,如from django.db import models; class MyModel(models.Model): ...
。 - 注册模型到Admin:在
app_name/admin.py
中,使用admin.site.register(MyModel)
将模型注册到Admin。
1.4 基本Admin界面操作
- 访问Admin界面:在浏览器中访问
http://localhost:8000/admin/
(假设默认端口)。 - 登录:使用项目的超级用户账户登录,初始默认为
admin
和password
。 - 查看模型列表:登录后,可以看到注册的所有模型的列表。
- 创建新记录:点击模型名称,进入编辑页面,填写字段后点击保存创建新记录。
- 查看、编辑和删除记录:点击列表中的记录,可以查看详细信息并进行编辑或删除操作。
通过这一章的学习,你将对Django Admin有基本的了解,并能够开始使用它来管理你的数据模型。后续章节将深入探讨如何定制和扩展Admin以满足项目需求。
第2章:深入Django Admin
2.1 Admin界面定制
Django Admin提供了丰富的定制选项,允许开发者根据项目需求调整界面。
- 自定义Admin模板:可以通过创建自定义的模板来改变Admin界面的外观,
AD:首页 | 一个覆盖广泛主题工具的高效在线平台例如修改admin/base_site.html
。 - 自定义Admin CSS和JavaScript:可以在
settings.py
中添加自定义的CSS和JavaScript文件,以改变Admin的样式和行为。
2.2 使用Admin类进行高级配置
Django Admin使用Admin类来配置模型的管理界面。
- 创建Admin类:在
admin.py
中,为每个模型创建一个Admin类,例如class MyModelAdmin(admin.ModelAdmin): ...
。 - 注册Admin类:使用
admin.site.register(MyModel, MyModelAdmin)
注册模型和其对应的Admin类。 - 配置选项:在Admin类中,可以设置各种选项,如
list_display
用于指定列表页面显示的字段,search_fields
用于添加搜索框等。
2.3 字段和字段集的管理
- 字段管理:可以在Admin类中使用
fields
或fieldsets
属性来控制编辑页面中字段的显示。 - 字段集:
fieldsets
允许将字段分组,提供更好的用户体验,例如fieldsets = [('基本信息', {'fields': ['name', 'description']}), ...]
。
2.4 列表页面的优化
- 自定义列表视图:使用
list_display
来控制列表页面显示的字段,list_filter
来添加过滤器,ordering
来设置默认排序。 - 添加操作按钮:使用
actions
属性来添加批量操作,如批量删除或标记为已读。
2.5 使用内联模型
内联模型允许在父模型的编辑页面中直接编辑相关联的模型。
- 定义内联模型:在Admin类中使用
inlines
属性,例如class RelatedModelInline(admin.TabularInline): model = RelatedModel
。 - 使用内联模型:在父模型的Admin类中添加内联模型,如
inlines = [RelatedModelInline]
。
通过这一章的学习,你将能够更深入地定制Django Admin,使其更符合你的项目需求,并提供更好的用户体验。后续章节将进一步探讨如何使用Django
Admin处理更复杂的场景和需求。
第3章:权限和用户管理
3.1 Django的认证系统概述
AD:专业搜索引擎
Django自带了一个强大的认证系统,用于处理用户认证、授权和用户管理。
- 认证后端:Django允许定义多个认证后端,用于验证用户凭据。
- 权限和授权:Django的权限系统基于对象,允许为每个对象实例设置权限。
- 用户模型:Django提供了一个默认的用户模型,包含用户名、密码和电子邮件等字段。
3.2 用户、组和权限的管理
- 用户管理:在Django Admin中,可以创建、编辑和删除用户。
- 组管理:组是用户的集合,可以为组分配权限,从而简化权限管理。
- 权限管理:权限分为两种,即对象权限和模型权限。模型权限适用于整个模型,而对象权限适用于模型的特定实例。
3.3 自定义用户模型
Django允许开发者自定义用户模型以满足特定需求。
- 替换默认用户模型:在
settings.py
中设置AUTH_USER_MODEL
指向自定义用户模型。 - 自定义字段:可以在自定义用户模型中添加额外的字段,如手机号码、地址等。
- 自定义认证后端:可以编写自定义的认证后端来处理特定的认证逻辑。
3.4 高级权限控制
- 对象权限:Django允许为模型的每个实例设置权限,这可以通过编写自定义权限类来实现。
- 权限检查:在视图或模板中,可以使用
user.has_perm()
或user.has_perms()
来检查用户是否具有特定权限。
3.5 用户界面定制
- 自定义登录界面:可以创建自定义的登录视图和模板来替换默认的登录界面。
- 自定义用户注册:可以编写自定义的用户注册视图和表单。
- 自定义密码重置:可以实现自定义的密码重置流程,包括发送重置邮件和处理重置请求。
通过这一章的学习,你将能够掌握Django的认证系统,并学会如何管理用户、组和权限,以及如何自定义用户模型和用户界面。这些知识对于构建安全、可扩展的Web应用程序至关重要。后续章节将进一步探讨如何结合Django的其他功能来构建复杂的应用程序。
第4章:数据管理与优化
4.1 数据导入导出
- 数据导入:Django提供了多种方式将数据导入数据库,包括使用
loaddata
命令加载JSON或XML格式的数据,以及编写自定义脚本来导入CSV或其他格式的数据。 - 数据导出:可以使用Django的模板系统生成CSV、Excel或其他格式的导出文件,也可以使用第三方库如
django-excel
来简化导出过程。
4.2 使用QuerySet进行数据查询
- QuerySet API:Django的QuerySet API提供了丰富的查询方法,如过滤、排序、聚合等。
- 链式调用:QuerySet支持链式调用,可以在一个语句中执行多个查询操作。
- 惰性执行:QuerySet是惰性执行的,这意味着它们在真正需要数据时才会执行查询。
4.3 数据库索引优化
- 索引的重要性:索引可以显著提高查询性能,尤其是在大型数据库中。
- 创建索引:可以在模型字段上使用
db_index=True
来创建索引,或者在数据库级别手动创建索引。 - 复合索引:对于涉及多个字段的查询,可以创建复合索引来优化性能。
4.4 使用第三方库进行数据分析
- Pandas:Pandas是一个强大的数据分析库,可以与Django结合使用来处理和分析数据。
- Django-pandas:这是一个Django插件,提供了与Pandas更紧密的集成,如在Django Admin中使用Pandas进行数据分析。
- NumPy:NumPy是另一个常用的科学计算库,可以用于数值计算和数据处理。
在这一章中,你将学习如何有效地管理Django项目中的数据,包括导入导出数据、优化数据查询性能以及利用第三方库进行数据分析。这些技能对于构建高性能和数据驱动的应用程序至关重要。通过实践这些技术,你将能够更好地理解Django的数据层,并能够处理更复杂的数据管理任务。
第5章:高级定制与扩展
5.1 自定义Admin模板
- 自定义Admin模板:Django Admin允许你自定义Admin界面的外观和行为,包括修改模型的列表、表单和详细页面的外观。
- 自定义Admin样式:可以通过覆盖Admin模板或使用自定义CSS来调整Admin界面的样式。
5.2 使用Admin actions
- Admin actions:Django Admin提供了Admin actions功能,允许你在Admin界面上批量处理对象,如批量删除、导出等操作。
- 自定义Admin actions:你可以编写自定义的Admin actions来执行特定的批量操作。
5.3 集成第三方应用
- 第三方应用集成:Django允许你轻松地集成第三方应用,通过安装和配置第三方应用,你可以扩展Django的功能。
5.4 国际化和本地化
- 国际化:Django提供了国际化支持,允许你将应用程序本地化为多种语言。
- 本地化:通过使用Django的内置国际化工具和翻译机制,可以轻松地将应用程序本地化为不同的语言和地区。
5.5 使用Django REST Framework进行API开发
- Django REST Framework:DRF是一个强大且灵活的工具,用于构建Web API。它提供了丰富的功能,包括序列化、视图、认证、权限等。
- API开发:通过DRF,你可以快速构建出符合RESTful设计原则的API,为移动应用、前端框架或其他服务提供数据接口。
AD:漫画首页
第6章:实战案例分析
案例1:新闻发布系统
针对新闻发布系统的需求分析和定制Admin界面,以下是更详细的步骤和代码示例:
1. 自定义Admin模板:
- 首先,创建一个admin.py文件来定义新闻、分类和评论模型的Admin类,并指定自定义的Admin模板。
from django.contrib import admin
from .models import News, Category, Comment@admin.register(News)
class NewsAdmin(admin.ModelAdmin):list_display = ['title', 'category', 'author', 'created_at']list_filter = ['category', 'author']search_fields = ['title', 'content']@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):list_display = ['name', 'description']@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):list_display = ['news', 'author', 'content', 'created_at']list_filter = ['news', 'author']search_fields = ['content']
2. Admin actions:
- 添加批量发布和批量删除等Admin actions,可以在admin.py文件中为相应的模型添加自定义的Admin actions。
from django.contrib import admin
from .models import News, Category, Comment@admin.register(News)
class NewsAdmin(admin.ModelAdmin):actions = ['make_published', 'delete_selected']def make_published(modeladmin, request, queryset):queryset.update(published=True)make_published.short_description = "Mark selected news as published"@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):actions = ['delete_selected']
通过以上步骤,你可以根据需求定制新闻发布系统的Admin界面,包括自定义Admin模板和添加Admin actions,以提高管理员对新闻、分类和评论等模型的管理效率。
案例2:电子商务平台
针对电子商务平台的需求分析和定制Admin界面,以下是更详细的步骤和代码示例:
1. 自定义Admin模板:
- 首先,创建一个admin.py文件来定义商品、订单、会员和统计模型的Admin类,并指定自定义的Admin模板。
from django.contrib import admin
from .models import Product, Order, Member, Statistics@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):list_display = ['name', 'price', 'stock', 'is_active']list_filter = ['is_active']search_fields = ['name']@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):list_display = ['order_number', 'member', 'total_amount', 'status']list_filter = ['status']search_fields = ['order_number']@admin.register(Member)
class MemberAdmin(admin.ModelAdmin):list_display = ['username', 'email', 'date_joined']search_fields = ['username', 'email']@admin.register(Statistics)
class StatisticsAdmin(admin.ModelAdmin):list_display = ['date', 'total_sales', 'total_orders']
2. Admin actions:
- 添加批量上架和批量下架商品、批量取消和批量发货订单等Admin actions,可以在admin.py文件中为相应的模型添加自定义的Admin
actions。
from django.contrib import admin
from .models import Product, Order@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):actions = ['make_active', 'make_inactive']def make_active(modeladmin, request, queryset):queryset.update(is_active=True)make_active.short_description = "Mark selected products as active"def make_inactive(modeladmin, request, queryset):queryset.update(is_active=False)make_inactive.short_description = "Mark selected products as inactive"@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):actions = ['cancel_orders', 'ship_orders']def cancel_orders(modeladmin, request, queryset):queryset.update(status='Cancelled')cancel_orders.short_description = "Cancel selected orders"def ship_orders(modeladmin, request, queryset):queryset.update(status='Shipped')ship_orders.short_description = "Mark selected orders as shipped"
通过以上步骤,你可以根据需求定制电子商务平台的Admin界面,包括自定义Admin模板和添加Admin
actions,以提高管理员对商品、订单、会员和统计等模型的管理效率。
案例3:社交网络应用
针对社交网络应用的需求分析和定制Admin界面,以下是更详细的步骤和代码示例:
1. 自定义Admin模板:
- 首先,创建一个admin.py文件来定义用户、社区、帖子和评论模型的Admin类,并指定自定义的Admin模板。
from django.contrib import admin
from .models import User, Community, Post, Comment@admin.register(User)
class UserAdmin(admin.ModelAdmin):list_display = ['username', 'email', 'is_active']list_filter = ['is_active']search_fields = ['username', 'email']@admin.register(Community)
class CommunityAdmin(admin.ModelAdmin):list_display = ['name', 'created_at', 'is_active']list_filter = ['is_active']search_fields = ['name']@admin.register(Post)
class PostAdmin(admin.ModelAdmin):list_display = ['title', 'author', 'created_at', 'community']list_filter = ['community']search_fields = ['title', 'author__username']@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):list_display = ['content', 'author', 'post', 'created_at']search_fields = ['content', 'author__username']
2. Admin actions:
- 添加批量禁用和批量启用用户、批量删除社区和帖子等Admin actions,可以在admin.py文件中为相应的模型添加自定义的Admin
actions。
from django.contrib import admin
from .models import User, Community, Post@admin.register(User)
class UserAdmin(admin.ModelAdmin):actions = ['activate_users', 'deactivate_users']def activate_users(modeladmin, request, queryset):queryset.update(is_active=True)activate_users.short_description = "Activate selected users"def deactivate_users(modeladmin, request, queryset):queryset.update(is_active=False)deactivate_users.short_description = "Deactivate selected users"@admin.register(Community)
class CommunityAdmin(admin.ModelAdmin):actions = ['delete_communities']def delete_communities(modeladmin, request, queryset):queryset.delete()delete_communities.short_description = "Delete selected communities"@admin.register(Post)
class PostAdmin(admin.ModelAdmin):actions = ['delete_posts']def delete_posts(modeladmin, request, queryset):queryset.delete()delete_posts.short_description = "Delete selected posts"
通过以上步骤,你可以根据需求定制社交网络应用的Admin界面,包括自定义Admin模板和添加Admin
actions,以提高管理员对用户、社区、帖子和评论等模型的管理效率。
第7章:性能优化与安全
1. 性能测试与优化技巧
-
性能测试:
- 使用工具:如Apache JMeter, LoadRunner, Gatling等进行压力测试,模拟大量用户同时访问,检查系统的响应时间和资源消耗。
- 基准测试:定期进行基准测试,对比不同配置或优化措施下的性能差异。
- 代码审查:检查代码中的瓶颈,如数据库查询优化、缓存使用、I/O操作等。
- 数据库优化:如索引优化、查询优化、减少数据冗余等。
- 代码重构:减少不必要的计算和复杂的逻辑,提高代码执行效率。
2. 安全最佳实践
- 身份验证和授权:确保只有授权的用户可以访问特定功能,使用强大的密码策略和多因素认证。
- 输入验证:对用户输入进行严格的验证和清理,以防止SQL注入、XSS攻击等。
- 数据加密:对敏感数据(如密码、信用卡信息)进行加密存储,使用HTTPS传输数据。
- 安全配置:根据应用需要调整服务器和应用的安全配置,如防火墙设置、最小权限原则等。
- 安全更新:定期更新软件和库,修复已知的安全漏洞。
3. 防止常见安全漏洞
- SQL注入:使用参数化查询或预编译语句,避免直接拼接用户输入。
- 跨站脚本攻击(XSS) :对输出的数据进行HTML编码,或使用Content Security Policy(CSP)。
- 跨站请求伪造(CSRF) :使用CSRF令牌保护表单提交。
- 文件上传安全:限制上传文件类型、大小和扩展,防止恶意文件上传或执行。
4. 定期更新和维护
- 软件更新:定期更新操作系统、数据库、框架和库以获取最新安全补丁。
- 日志监控:监控应用日志,及时发现异常和潜在威胁。
- 安全审计:定期进行安全审计,识别潜在问题并修复。
- 备份和恢复:定期备份数据,以防数据丢失,同时测试恢复流程。
- 安全培训:对开发团队进行安全意识培训,提高安全防范能力。
相关文章:

Django Admin后台管理:高效开发与实践
title: Django Admin后台管理:高效开发与实践 date: 2024/5/8 14:24:15 updated: 2024/5/8 14:24:15 categories: 后端开发 tags: DjangoAdmin模型管理用户认证数据优化自定义扩展实战案例性能安全 第1章:Django Admin基础 1.1 Django Admin简介 Dj…...

Centos7网卡启动失败(Failed to start LSB: Bring up/down)
好雨知时节 当春乃发生 随风潜入夜 润物细无声 报错内容 启动虚拟机时,Ceotos的虚拟网卡没有一起启动,导致服务无法正常使用 查询网络启动状态 systemctl status network.service报Failed to start LSB: Bring up/down 查看网络启动日志 journalctl…...

【NOIP2008普及组复赛】 题4:立体图
题4:立体图 【题目描述】 小渊是个聪明的孩子,他经常会给周围的小朋友讲些自己认为有趣的内容。最近,他准备给小朋友讲解立体图,请你帮他画出立体图。 小渊有一块面积为mn的矩形区域,上面有mn个边长为1的格子&#…...

【Leetcode每日一题】 动态规划 - 简单多状态 dp 问题 - 删除并获得点数(难度⭐⭐)(76)
1. 题目解析 题目链接:LCR 091. 粉刷房子 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 1. 状态定义 在解决这类问题时,我们首先需要根据题目的具体要求来定义状态。针对房屋粉刷问题&#…...

Windows---CMD常用指令大全
CMD是什么? Windows操作系统中的命令行界面程序,全称为命令提示符 CMD可以干什么? 允许用户在文本界面下输入命令来执行各种操作,如文件管理、系统设置、软件安装等 帮助用户更好地控制和管理Windows系统 windows系统CMD指…...

消息中间件是什么?有什么用?常见的消息中间件有哪些?
1.什么是消息中间件? 消息中间件基于队列模型在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。 2.现实中的痛点: 1.Http请求基于请求与响应的模型,在高并发的情况下,客户端发送大量的请求达到服务器端…...

富锂锰基材料极具发展潜力 我国产业化进程加速
富锂锰基材料极具发展潜力 我国产业化进程加速 富锂锰基材料以锰元素为主,我国锰资源较丰富,相比于铁锂材料、高镍三元材料,富锂锰基材料具有一定的降本潜力。此外富锂锰基材料在能量密度、充放电倍率等方面也具有明显优势。富锂锰基材料是富…...

聚水潭和金蝶云星空单据接口对接
聚水潭和金蝶云星空单据接口对接 对接系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造…...

OpenAI深夜震撼发布最新模型GPT-4o,送上最快速便捷教程
北京时间5月14日凌晨,有人说OpenAI一夜改变了历史。 在我们的深夜、太平洋时间的上午 10 点,OpenAI 召开春季发布会,公布了最新的GPT-4o模型,o代表Omnimodel(全能模型)。20多分钟的演示直播,展…...

没有申请域名的情况下,用navicat远程连接我们的服务器的Mysql数据库
我们可以根据公网ip用shell来远程连接 首先我们打开自己买的服务器 例如你看这个,就是我们的公网IP 如果服务器里面没有安装mysql数据库的话,那么我们可以用一个轻量级的docker来安装数据库代替一下 我们用docker弄个轻量级的mysql5.7.36,…...
Hive中小文件过多的几种处理方式
1、使用concatenate(只支持RCFile和ORC格式) 2、减少map数量,调整参数:输入合并文件相关的参数 3、减少reduce的数量(例如直接设置reduce为xx个、或者设置reduce的大小,系统自动根据大小确定reduce的个数…...

用户登录认证和权限授权(SpringSecurity、JWT、session)
文章目录 前言一、登录认证1. 问题引入2. Session2.1 实现原理2.2 过滤器Filter2.3 上下文对象 3. JWT3.2 实现步骤3.3 拦截器 HandlerInterceptorAdapter3.4 上下文对象 4. Session VS JWT 二、权限授权1. 权限类型1.1 页面权限(菜单项权限)1.2 ACL模型…...

第十二届蓝桥杯省赛真题 Java A 组【原卷】
文章目录 发现宝藏【考生须知】试题 A: 相乘试题 B: 直线试题 C : \mathrm{C}: C: 货物摆放试题 D: 路径试题 E: 回路计数试题 F : \mathrm{F}: F: 最少砝码试题 G: 左孩子右兄弟试题 H : \mathrm{H}: H: 异或数列试题 I \mathbf{I} I 双向排序试题 J : \mathrm{J}: J: 分…...
工作随机:linux 挂载LVM管理模式的磁盘
文章目录 前言一、创建一个分区二、创建PV三、创建VG四、创建LV五、格式化并挂载目录 前言 在数据库管理中,常有比较头疼的问题,就是一段时间发展后我的磁盘空间不够了,想要扩容原有的目录很是头疼,那么LVM管理的优势就体现出来了…...
打印kafka最近的消息
使用 kafka-run-class 指令,获取topic的最小offset和最大offset #查看各个分区的最小offset(这个意思就是,这个offset之前的消息已经被清除了,现在consumer是从这个offset之后开始消费): ./kafka-run-class.sh kafka.tools.GetOffsetShell …...

e行64位V11.17.4 安卓全局虚拟定位APP
e行最新版11.17.4 支持全局虚拟位置 小米手机 百度地图 高德地图 实测成功 其他app自测 不一定支持所有app 下载:https://www.123pan.com/s/HAf9-tsyCh.html...
vue项目通过点击文字上传html文件,查看html文件
上传html文件 解决思路:新建一个上传组件,将它挪到页面之外。当点击文字时,手动触发上传组件,打开上传文件框。 <template><BasicTable register"registerTable"><template #bodyCell"{ column, …...

【WEEK12】 【DAY1】整合JDBC【中文版】
2024.5.13 Monday 目录 11.整合JDBC11.1.SpringData简介11.2.新建springboot-04-data项目11.3.新建application.yaml11.4.连接数据库11.5.修改Springboot04DataApplicationTests.java11.5.1.查看DataSourceProperties.java和DataSourceAutoConfiguration.java 11.6.JDBCTempla…...
23种设计模式(软考中级 软件设计师)
设计模式 23个设计模式,23个意图 1. 设计模式概要 设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的设计和体系结构 设计模式的类别 创建型结构型行为型类工厂方法模式适配器模式(类)解释器模…...

记录一下 log4j的漏洞
目录 背景 bug的产生 bug复现 JNDI 网络安全学习路线 (2024最新整理) 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明: 背景 log4j这次的bug,我相信大家都已经知道了,仅以…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...