当前位置: 首页 > news >正文

【二】Django小白三板斧

今日内容

【一】Django小白三板斧

image-20240229170127292

  • HttpResponse
    • 返回字符串类型的数据
  • render
    • 返回HTML文件
  • redirect
    • 重定向

【补充】django自带重启功能

  • 当识别到项目中代码有变化之后 隔段时间会自动重启 但是有时候较慢

【项目的前提条件】

# settings.py
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,"app01/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',],},},
]

首先,让我们创建 app01 应用程序的 urls.py 文件。在你的项目中,应该有一个名为 urls.py 的主 URL 配置文件,其中包含了所有应用程序的 URL 配置。在这个文件中,你需要添加一个路径配置来引入 myapp 应用程序的 URL 配置。

# 项目的 urls.py 文件
from django.urls import include, pathurlpatterns = [# 其他路径配置...path('app01/', include('app01.urls')),
]

接下来,创建 app01 应用程序的 urls.py 文件,其中包含了路径配置和视图函数的映射。

# myapp 的 urls.py 文件
from django.urls import path
from . import viewsurlpatterns = [path('', views.index_view, name='index'),path('home/', views.home_view, name='home'),path('redirect/', views.redirect_view, name='redirect'),
]

​ 在 app01 应用程序的 views.py 文件中,你可以编写视图函数来处理每个路径的请求。

# app01 的 views.py 文件
from django.shortcuts import render, HttpResponse, redirectdef index_view(request):return HttpResponse('Hello, world!')def home_view(request):return render(request, 'login_success.html')def redirect_view(request):return redirect('/app01/home/')

【二】静态文件

我们将html文件默认都凡在templates文件夹下

我们将网站所使用的静态文件默认都放在static文件夹下

【1】什么是静态文件

  • 前端已经写好了的 能够直接调用使用的文件

    • 网站写好的js文件
    • 网站写好的css文件
    • 网站写好的图片文件
    • 第三方前端框架
    • 拿来就可以直接使用的
  • django默认是不会自动帮你创建static文件夹 需要你自己手动创建

  • 一般情况下我在static文件夹内换回做进一步的划分处理

    • –static
      • –js
      • –css
      • –img
      • 其他的第三方文件
  • 在浏览器中输入url能够看到对应的资源

  • 是因为后端提前开设了该资源的借口

  • 如果访问不到资源 说明后端没有开设该资源的借口

  • http://127.0.0.1:8000/static/bootstrap-3.3.7-dist/css/bootstrap.min.css

【二】在Django配置静态文件

  1. 在Django的默认静态文件渲染系统中
  2. 默认的文件访问位置为当前APP的静态文件
  • 在settings.py文件中

  • # 默认的静态文件配置
    STATIC_URL = '/static/'
    
  • 在app 下创建一个static文件夹

    • 创建一个子分类文件夹
  • 访问静态文件http://127.0.0.1:8000/static/avatar/1.jpg

  • 在页面上可以渲染出当前静态文件

第一种

  • 如果想访问到项目目录下指定文件夹内容的静态文件

​ 因为我将static文件夹放在个django文件是同一级文件夹下因此我的默认的配置文件如下:

# 默认的静态文件配置
STATIC_URL = '/static/'# 添加配置条件
STATICFILES_DIRS = [os.path.join(BASE_DIR, r'F:\PicGo\djangoProject\static'),    
]

(http://127.0.0.1:8000/static/photos/21.jpg)

image-20240227200702898

第二种

# 第一步
# 在前端页面中的第一行  
# {% load static  %}# 第二步:使用静态文件
# {% static 'static/phots/21.jpg' %}
<!-- login.html -->
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
{#    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>#}<link href="{% static 'js/bootstrap-theme.min.css' %}" rel="stylesheet">{#    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>#}
</head>
<body>
<h1 class = 'text-center'>登陆</h1>
<div class="container"><div class="row"><div class="col-md-8 col-md-offset-2"><form action="" method="post"><p>username:<input type="text" 			name="username" class="form-control"></p><p>password:<input type="password" name="password" class="form-control"></p><input type="submit" class="bth btn-block"></form></div></div>
</div>
</body>
</html>
  • <form action="" method="post">
    
  • form表单action参数

    • 不写 默认当前所在的url提交是数据
    • 全写 指名姓名
    • 只写后缀 /login/

在前期我们使用Django提交post请求的时侯 需要取配置文件中注释掉一行代码

# <!-- 在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',
]

image-20240227214405151

【三】request对象方法

【1】request.method

  • 获取到当前请求方式

【2】request.GET

  • 获取到get请求携带的请求参数
# 请求参数携带在路由地址上以键值对的形式携带
http://127.0.0.1:8000/register/?username=&password=&hobby=music&hobby=sport&hobby=swim
  • request.GET.get(key)
# 获取键值对数据(单个的键值对数据)
  • request.GET.getlist(key)
# 获取GET请求携带的列表数据(一个键多个值的数据)
# hobby=music&hobby=sport&hobby=swim

【3】request.POST

  • 获取POST请求携带的请求体
# 请求数据携带在请求体重,并且在路由地址上看不到
  • form表单提交 post 请求时会报错
# 解决办法:注释掉 middleware中带有 CSRF 参数的中间件
# CSRF verification failed. Request aborted.

【三】pycharm链接数据库(MySQL)

  • 三个位置查数据库相关的

    • 右侧上方的database
    • 左下方database
    • 配置里面的plugins插件搜索安装
    • 不行就卸载安装

    pycharm可以充当很多款数据库软件的客户端

【配置】

要在 Django 中连接 MySQL 数据库,你需要进行以下步骤:

  1. 确保你已经安装了 MySQL 数据库,并且知道数据库的连接信息,例如主机名、用户名、密码和数据库名称。

  2. 在 Django 的项目设置文件 settings.py 中,找到 DATABASES 配置项,并进行如下修改:

# settings.pyDATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'bai', # 你的数据库名字'USER': 'root', # 一般来说就是root'PASSWORD': '12186', # 忘了就要百度'HOST': '127.0.0.1',  # 默认为 'localhost''PORT': '3303',  # 默认为 '3306'  }
}

请将 'your_database_name''your_username''your_password''your_host''your_port' 替换为你的 MySQL 数据库的实际连接信息。

你直接使用会出现以下错误

image-20240228092911234

​ 这个错误提示是在 Django 中连接 MySQL 数据库时出现的。它指出无法加载 MySQLdb 模块,可能是因为没有安装 mysqlclient。

  1. 如果你还没有安装 mysqlclient 库,请在终端中运行以下命令安装:
# pip install mysqlclient

这是一个用于连接 MySQL 数据库的 Python 库。

  • 安装这个mysqlclient库需要运气
    • win 电脑给力一点,安装就不会报错
  • mac系统安装 mysqlclient 费劲
win报错解决办法
  • 访问 whl文件的官网
  • https://pypi.org/project/mysqlclient/#files
# pip install mysqlclient-2.2.4-cp310-cp310-win_amd64.whl
  1. 运行数据库迁移命令,以创建 Django 所需的数据库表:
# python manage.py migrate

​ 这将根据你的 models.py 文件创建数据库表。

​ 现在,你的 Django 项目应该能够连接到 MySQL 数据库了。你可以在你的应用程序的 models.py 文件中定义模型,并使用 Django 的 ORM (对象关系映射) 功能与数据库交互。

​ 以下是一个简单的示例,展示了如何在 Django 中连接 MySQL 数据库和定义一个简单的模型:

# models.pyfrom django.db import modelsclass Book(models.Model):title = models.CharField(max_length=100)author = models.CharField(max_length=100)publication_date = models.DateField()def __str__(self):return self.title

​ 在这个示例中,我们创建了一个名为 Book 的模型,它有三个字段:titleauthorpublication_date__str__ 方法定义了模型对象的字符串表示形式。

​ 确保在定义模型后运行以下命令,以将模型更改应用于数据库:

# python manage.py makemigrations
# python manage.py migrate

【四】Django链接MySQL

【1】Django自带的数据

  • 在 settings.py 文件中有一个配置项就是配置数据库的
  • 但是Django默认的数据库是sqlite3数据库
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', # 修改sqlites'NAME': BASE_DIR / 'db.sqlite3',}
}

image-20240227225240559

image-20240227230040791

  • 将上图中黄色警告缺少驱动程序文件下载
  • 就是傻瓜模式

image-20240227230230096

【五】Django中的ORM操作

【1】什么是ORM

ORM. 对象就是关系映射

  • ORM 的基本思想是将数据库表映射为对象

【2】作用

​ 能够让一个不用sql语句的小白也能通过python 面向对象的代码简单快捷的操作数据库不知之处:

  • 封装程度太高
  • 有时候sql语句的效率偏低
  • 需要你自己写SQL语句
# 类					表
# 对象			   记录
# 对象属性			  记录某一个字段对应的值 

【3】ORM 的优点包括:

  1. 简化数据库操作:ORM 提供了高级的抽象层,使开发人员无需直接编写复杂的 SQL 查询语句,而是使用简单的方法和语法来执行数据库操作。
  2. 提高开发效率:ORM 可以减少开发人员的工作量,提供了便捷的方式来处理数据库,减少了手动编写 SQL 语句的时间和错误。
  3. 跨数据库支持:ORM 框架通常支持多种数据库后端,使开发人员能够在不同的数据库系统之间切换,而无需更改大量的代码。
  4. 数据库独立性:通过使用 ORM,应用程序的数据库访问逻辑与具体的数据库实现解耦,使得应用程序更容易迁移到不同的数据库系统上。
  5. 更好的可维护性:ORM 提供了一种结构化的方式来管理数据库操作,使得代码更易于理解、维护和扩展。

【4】建表操作

【1】定义模型表

  • 在自己的应用程序的文件如:app01下面的models.py文件中定义模型表
from django.db import models# Create your models here.# 建表 : 数据库中的表映射为Python中的类
class User(models.Model):# 数据库中的字段映射为Python中的属性# 定义一个用户名 : 字符串类型 长度 # MySQL中字符串类型的字段 : char varchar(32)# CharField :字符串类型的字段# max_length :最大长度# verbose_name : 注释# help_text : 解释username = models.CharField(max_length=32, 			verbose_name="用户名", help_text="这是一个用户名字段")password = models.CharField(max_length=32)# IntegerField : 相当于MySQL中的 int 字段age = models.IntegerField()# FloatField : 相当于MySQL数据库中的 float 字段salary = models.FloatField()

​ 一旦你定义了模型,你可以使用 Django 的数据库迁移工具来创建数据库表。迁移工具会根据模型的定义自动生成相应的 SQL 语句,并将其应用到数据库中。你可以使用以下命令进行数据库迁移:

python manage.py makemigrations  # 生成迁移文件
python manage.py migrate  # 应用迁移文件,创建数据库表

​ 这样,Django ORM 将会根据你的模型定义创建一个名为 User 的数据库表,该表包含了 usernamepasswordsalaryage 四个个字段。

image-20240229194104071

默认数据库

  • 在 settings.py 文件中有一个配置项就是配置数据库的
  • 但是Django默认的数据库是sqlite3数据库
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}

指定数据库

  • 修改 settings.py 中的数据库配置项
  • 模版
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',# 数据库名字'NAME': "",  # 如 bai# 数据库用户名"USER": "", # 一般是 root# 数据库密码"PASSWORD": "",  # 忘了就拜拜# 数据库 IP,本地默认是127.0.0.1/localhost"HOST": "localhost",# 数据库端口"PORT": 3306,   # 可以查看自己数据库文件夹中的min文件# 数据库编码"CHARSET": "utf8mb4",}
}

【2】指定MySQL数据库报错

先创建一个新的数据库

image-20240301150856572

  • django 默认使用mysqldb模块链接mysql
  • 但是该模块的兼容性不好,需要手动修改为pymysql链接

(1)解决办法一:猴子补丁

  • 在项目下的 __init__ 或者任意的应用名下的 __init__ 文件中书写一下代码
import pymysqlpymysql.install_as_MySQLdb()

(2)解决办法二:下载第三方模块

  • 直接安装
pip install mysqlclient
  • 运气好不会报错,但是运气不好就会报错

(3)Win报错解决办法(下载whl文件)

  • https://pypi.org/project/mysqlclient/#files

image-20240209185757398

  • 下载对应的whl版本文件
  • 安装(切换到指定目录下执行 pip 安装命令)
pip install pip mysqlclient-2.2.4-cp310-cp310-win_amd64.whl

【3】ORM操作之字段操作

https://docs.djangoproject.com/en/3.2/topics/db/

这个是django数据库语句的官网

【1】字段属性

(1)允许为空

  • 在定义模型类的相应字段时,可以为该字段添加 null=True 属性以允许其值为 None 或空字符串。
class MyModel(models.Model):name = models.CharField(max_length=50, null=True)  # 允许name字段为空

(2)指定默认值

  • 设置字段的默认值可通过在字段定义时附加 default 参数实现。例如,给字段 age 设置默认值为 18
class MyModel(models.Model):age = models.IntegerField(default=18)  # 默认年龄为18岁

【2】字段增加

  • 要在 Django 模型表中增加新的字段,只需在相应的 Model 类中添加新字段及其类型和所需属性。
from django.db import modelsclass MyModel(models.Model):name = models.CharField(max_length=50) created_at = models.DateTimeField(auto_now_add=True)  # 新增一个自动记录创建时间的datetime字段is_active = models.BooleanField(default=True)  # 新增一个布尔类型字段,默认激活状态为True

【3】字段删除

  • 要从模型表中删除字段,请直接在 Model 类中注释掉该字段或者将其完全移除。
  • 不过,在生产环境中删除字段前请确保不会影响现有数据,因为这可能导致数据丢失或结构不一致。
class MyModel(models.Model):name = models.CharField(max_length=50) created_at = models.DateTimeField(auto_now_add=True) is_active = models.BooleanField(default=True)  # 移除is_removed字段

【补充】

  • 每次修改关于数据库字段的操作时,都要执行数据库的迁移相关操作
python manage.py makemigrations
python manage.py migrate

【六】ORM操作之数据操作

【1】增加

(1)语法

模型表名.objects.create(字段名=字段值)

(2)示例

new_instance = MyModel.objects.create(name="张三", age=25,email="zhangsan@example.com"
)

【2】查询

(1)语法

  • 获取到当前表中的全部数据
模型表名.objects.all()
  • 根据指定条件筛选数据
# 方式一
模型表名.objects.get(筛选字段名=筛选字段值)# 方式二
模型表名.objects.filter(筛选字段名=筛选字段值)
  • 去除指定条件的数据
模型表名.objects.exclude(筛选字段名=筛选字段值)

(2)示例

# 获取表中所有数据
all_records = MyModel.objects.all()# 根据特定条件筛选数据(方式一)
filtered_records = MyModel.objects.get(name="张三")# 根据特定条件筛选数据(方式二)
# 查询包含"张"的所有name
filtered_records = MyModel.objects.filter(name__contains="张")  # 去除满足指定条件的数据
# 过滤掉所有年龄小于18岁的记录
excluded_records = MyModel.objects.exclude(age__lt=18) 

【3】更改

(1)语法

# 方式一:先查询直接修改
模型表名.objects.filter(筛选字段名=筛选字段值).update(修改字段名=修改字段值)# 方式二:先查询后修改
obj = 模型表名.objects.get(筛选字段名=筛选字段值)
obj.修改字段名=修改字段值
obj.save()

(2)示例

# 可以使用.filter() 和 .update() 方法批量更新符合条件的数据
# 所有年龄为25的记录年龄改为26
MyModel.objects.filter(age=25).update(age=26) # 更新已有记录的值,可先通过查询获取对象实例后调用 .save() 方法
instance_to_update = MyModel.objects.get(name="张三")
instance_to_update.age = 26
instance_to_update.save()

【4】删除

(1)语法

# 方式一:删除需要先查询直接删除
模型表名.objects.filter(筛选字段名=筛选字段值).delete()# 方式二:删除需要先查询再删除
instance_to_delete = MyModel.objects.get(筛选字段名=筛选字段值)
instance_to_delete.delete()

(2)示例

# 删除满足特定条件的记录,通常先通过查询获取对象实例再调用 .delete() 方法
instance_to_delete = MyModel.objects.get(name="张三")
instance_to_delete.delete()# 可以使用 .filter() 方法批量删除
MyModel.objects.filter(name="李四").delete()  # 删除所有名字为"李四"的记录

常用的操作语法:

在Django中,ORM(对象关系映射)提供了一种便捷的方式来执行数据库操作。ORM允许您使用Python代码而不是SQL语句来操作数据库。下面是一些常见的ORM操作语法:
  1. 创建对象:
new_object = MyModel(field1='Value 1', field2=123)
new_object.save()
  1. 读取对象:
all_objects = MyModel.objects.all()  # 获取所有记录# 根据条件过滤记录
filtered_objects = MyModel.objects.filter(field1='Value 1')# 获取单个记录
single_object = MyModel.objects.get(pk=1)
  1. 更新对象:
object_to_update = MyModel.objects.get(pk=1)
object_to_update.field1 = 'New Value'
object_to_update.save()
  1. 删除对象:
object_to_delete = MyModel.objects.get(pk=1)
object_to_delete.delete()
  1. 聚合操作(Aggregation):
from django.db.models import Count, Sum, Avg# 计算记录总数
count = MyModel.objects.count()# 对字段进行求和
total = MyModel.objects.aggregate(Sum('field2'))# 对字段进行平均值计算
average = MyModel.objects.aggregate(Avg('field2'))
  1. 排序:
# 按字段升序排序
sorted_objects = MyModel.objects.order_by('field1')# 按字段降序排序
sorted_objects = MyModel.objects.order_by('-field1')
  1. 关联查询:
class RelatedModel(models.Model):my_model = models.ForeignKey(MyModel, on_delete=models.CASCADE)# 获取关联模型的记录
related_objects = RelatedModel.objects.select_related('my_model')# 获取关联模型的记录并预先加载
related_objects = RelatedModel.objects.prefetch_related('my_model')

​ 这些是常见的ORM操作语法示例。Django的ORM还提供了更多高级的查询和操作方法,如跨表查询、事务管理等。https://docs.djangoproject.com/en/3.2/topics/db/

ggregation):

from django.db.models import Count, Sum, Avg# 计算记录总数
count = MyModel.objects.count()# 对字段进行求和
total = MyModel.objects.aggregate(Sum('field2'))# 对字段进行平均值计算
average = MyModel.objects.aggregate(Avg('field2'))
  1. 排序:
# 按字段升序排序
sorted_objects = MyModel.objects.order_by('field1')# 按字段降序排序
sorted_objects = MyModel.objects.order_by('-field1')
  1. 关联查询:
class RelatedModel(models.Model):my_model = models.ForeignKey(MyModel, on_delete=models.CASCADE)# 获取关联模型的记录
related_objects = RelatedModel.objects.select_related('my_model')# 获取关联模型的记录并预先加载
related_objects = RelatedModel.objects.prefetch_related('my_model')

​ 这些是常见的ORM操作语法示例。Django的ORM还提供了更多高级的查询和操作方法,如跨表查询、事务管理等。https://docs.djangoproject.com/en/3.2/topics/db/

相关文章:

【二】Django小白三板斧

今日内容 静态文件配置 request对象方法初识 pycharm链接数据库&#xff08;MySQL&#xff09; django链接数据库&#xff08;MySQL&#xff09; Django ORM简介 利用ORM实现数据的增删查改 【一】Django小白三板斧 HttpResponse 返回字符串类型的数据 render 返回HTML文…...

MyBatis的基本应用

源码地址 01.MyBatis环境搭建 添加MyBatis的坐标 <!--mybatis坐标--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!--mysql驱动坐…...

Day80:服务攻防-中间件安全HW2023-WPS分析WeblogicJettyJenkinsCVE

目录 中间件-Jetty-CVE&信息泄漏 CVE-2021-34429(信息泄露) CVE-2021-28169(信息泄露) 中间件-Jenkins-CVE&RCE执行 cve_2017_1000353 CVE-2018-1000861 cve_2019_1003000 中间件-Weblogic-CVE&反序列化&RCE 应用金山WPS-HW2023-RCE&复现&上线…...

使用generator实现async函数

我们先来看一下async函数是怎么使用的 const getData (sec) > new Promise((resolve) > {setTimeout(() > resolve(sec * 2), sec * 1000);})// aim to get this asycnFun by generator async function asyncFun() {const data1 await getData(1);const data2 awa…...

go并发请求url

sync.WaitGroup写法 package mainimport ("database/sql""fmt""net/http""sync""time"_ "github.com/go-sql-driver/mysql" )func main() {//开始计时start : time.Now()//链接数据库&#xff0c;用户名&#xf…...

刷题之Leetcode704题(超级详细)

704. 二分查找 力扣题目链接(opens new window)https://leetcode.cn/problems/binary-search/ 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&am…...

leetcode热题100.前k个高频元素

作者&#xff1a;晓宜 &#x1f308;&#x1f308;&#x1f308; 个人简介&#xff1a;互联网大厂Java准入职&#xff0c;阿里云专家博主&#xff0c;csdn后端优质创作者&#xff0c;算法爱好者 ❤️❤️❤️ 你的关注是我前进的动力&#x1f60a; Problem: 347. 前 K 个高频元…...

LangChain Demo | Agent X ReAct X wikipedia 询问《三体》的主要内容

背景 LangChain学习中&#xff0c;尝试改了一下哈里森和吴恩达课程当中的问题&#xff0c;看看gpt-3.5-turbo在集成了ReAct和wikipedia后&#xff0c;如何回答《三体》的主要内容是什么这个问题&#xff0c;当然&#xff0c;主要是为了回答这问题时LangChain内部发生了什么。所…...

Revit 2025新功能一览~

Hello大家好&#xff01;我是九哥~ Revit2025已经更新&#xff0c;安装后&#xff0c;简单试了下&#xff0c;还是挺不错的&#xff0c;流畅度啊&#xff0c;新功能啊&#xff0c;看来还是有听取用户意见的&#xff0c;接下来就简单看看都有哪些新功能。 好了&#xff0c;今天的…...

Head First Design Patterns -代理模式

什么是代理模式 代理模式为另一个对象提供替身或者占位符&#xff0c;以便控制客户对对象的访问&#xff0c;管理访问的方式有很多种。例如远程代理、虚拟代理、保护代理等。 远程代理&#xff1a;管理客户和远程对象之间的交互。 虚拟代理&#xff1a;控制访问实例化开销大的对…...

第十三题:天干地支

题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个&#xff0c;分别为&#xff1a;甲&#xff08;jiǎ&#xff09;、乙&#xff08;yǐ&#xff09;、丙&#xff08;bǐng&#xff09;、丁&#xff08;dīng&#xff09;、戊&#xff08;w&#xff09;、己&a…...

8000预算可以购买阿里云服务器配置整理

一个月8000元预算如何选择阿里云服务器配置&#xff1f;八千预算可选的阿里云服务器配置相当高了&#xff0c;这个预算可以购买阿里云企业级独享型云服务器&#xff0c;至少8核以上的配置&#xff0c;这个预算可以支持复杂、高负载或大规模的业务需求。阿里云服务器网整理8000元…...

游戏APP如何提高广告变现收益的同时,保证用户留存率?

APP广告变现对接第三方聚合广告平台主要通过SDK文档对接&#xff0c;一些媒体APP不具备专业运营广告变现的对接能力和资源沉淀&#xff0c;导致APP被封控&#xff0c;设置列入黑名单&#xff0c;借助第三方聚合广告平台进行商业化变现是最佳选择。#APP广告变现# 接入第三方平台…...

Linux ulimit命令教程:如何查看和设置系统资源限制(附实例详解和注意事项)

Linux ulimit命令介绍 ulimit是一个内置的Linux shell命令&#xff0c;它允许查看或限制单个用户可以消耗的系统资源量。在有多个用户和系统性能问题的环境中&#xff0c;限制资源使用是非常有价值的。 Linux ulimit命令适用的Linux版本 ulimit命令在所有主流的Linux发行版中…...

(delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)

8.5.2 封闭类和Final方法 如前所述&#xff0c;Java 采用非常动态的方法&#xff0c;默认情况下采用延迟绑定&#xff08;或虚函数&#xff09;。因此&#xff0c;Java 语言引入了一些概念&#xff0c;如不能继承的类&#xff08;封闭类&#xff09;和不能在派生类中覆盖的方法…...

vue3从精通到入门12:vue3的生命周期和组件

生命周期&#xff1a; 生命周期钩子主要包括&#xff1a; beforeCreate&#xff1a;组件实例被创建之前调用。在这个阶段&#xff0c;组件的 props 和 data 还未被初始化。created&#xff1a;组件实例创建完成后调用。在这个阶段&#xff0c;组件的 props 和 data 已经被初始…...

力扣热题100_链表_21_合并两个有序链表

文章目录 题目链接解题思路解题代码 题目链接 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例…...

探索未来智慧酒店网项目接口架构

在数字化时代&#xff0c;智慧酒店已成为酒店业发展的重要趋势之一。智慧酒店网项目接口架构作为支撑智慧酒店运营的核心技术之一&#xff0c;其设计和优化对于提升用户体验、提高管理效率具有重要意义。本文将深入探讨智慧酒店网项目接口架构的设计理念和关键要素。 ### 智慧…...

os模块篇(十三)

文章目录 os.mknod(path, mode0o600, device0, *, dir_fdNone)os.major(device, /)os.minor(device, /)os.makedev(major, minor, /)os.pathconf(path, name)os.readlink(path, *, dir_fdNone)os.remove(path, *, dir_fdNone)os.removedirs(name)os.rename(src, dst, *, src_di…...

【JavaEE初阶系列】——文件操作 IO 之 文件系统操作

目录 &#x1f4dd;认识文件 &#x1f6a9;树型结构组织 和 目录 &#x1f388;绝对路径和相对路径 &#x1f6a9;文件类型 &#x1f4dd;文件系统操作 &#x1f388;File 概述 &#x1f388;File类的使用 1. 绝对路径 vs 相对路径 2. 路径分隔符 3. 静态成员变量 4…...

JAVA 学习·类与方法

不同于 C &#xff0c;Java 是一门面向对象的编程语言。C 也有面向对象的内容&#xff0c;但是 C 和 Java 在方法的具体实现上存在区别。 方法的定义 方法(method)是为执行一个复杂操作组合在一起的语句集合。一个类中可以声明多个方法。其语法是采用 BNF 范式&#xff08;Bac…...

4. python练习题4-水仙花数

4. python练习题4-水仙花数 【目录】 文章目录 4. python练习题4-水仙花数1. 目标任务2. 水仙花数的特点3. 如何判断一个数是否是水仙花数&#xff1f;4. 打印3位水仙花数5. 判断一个数是不是水仙花数6. 列表推导式6. 列表推导式判断一个数是不是水仙花数 【正文】 1. 目标任务…...

【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt 开发环境的搭建 | Qt 安装教程 文章编号&#xff1a;Qt 学习笔记 /…...

ids工业相机与电控位移台同步控制及数据采集

通过VS2017和OpenCV,实现ids工业相机与电控位移台同步控制及数据采集 目录项目环境配置代码流程及思路项目架构项目开发运行效果开发关键ids相机配置位移台环境配置相机头文件相机参数设置保存图像函数设置电控位移台头文件电控位移台设置参数最后就是通过main函数进行调用和控…...

景联文科技提供高质量医疗健康AI大模型数据

医疗行业是典型的知识和技术密集型行业&#xff0c;其发展水平直接关系到国民健康和生命质量。 医疗健康AI大模型&#xff0c;作为人工智能的一个分支&#xff0c;能够通过学习大量的数据来生成新的数据实例&#xff0c;在医药研发、医学影像、医疗文本分析等都有广泛的应用前景…...

【Python第三方库】lxml 解析器和xpath路径语言

1.lxml是做什么的 是xml/html的解析器&#xff0c;主要是用来解析和提取html/xml数据 2.lxml语法 使用etree.HTML(html字符串)&#xff0c;将字符串转换为Element对象通过使用Element对象.xpath(语法)提取信息,返回的是一个列表的内存地址&#xff0c;需要通过使用索引获取信…...

Java(Lambda、集合)、题解

一、Lambda表达式 标准格式 &#xff08;&#xff09;对应方法的形参 &#xff1b;->固定格式 注意点&#xff1a; Lambda表达式可以用来简化匿名内部类的书写 Lambda表达式只能简化函数式接口的匿名内部类的写法 函数式接口: 有且仅有一个抽象方法的接口叫做函数式接口&…...

Transformer学习: Transformer小模块学习--位置编码,多头自注意力,掩码矩阵

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Transformer学习 1 位置编码模块1.1 PE代码1.2 测试PE1.3 原文代码 2 多头自注意力模块2.1 多头自注意力代码2.2 测试多头注意力 3 未来序列掩码矩阵3.1 代码3.2 测试掩码 1 …...

easyexcel 动态列导出

1. 引入easyexcel <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version></dependency> 2.导出write public void export(HttpServletResponse response) {try {String f…...

flink源码编译-job提交

1、启动standalone集群的taskmanager standalone集群中的taskmanager启动类为 TaskManagerRunner 2 打开master启动类 通过 ctrln快捷键&#xff0c;找到、并打开类&#xff1a; org.apache.flink.runtime.taskexecutor.TaskManagerRunner 3 修改运⾏配置 基本完全按照mas…...

只做硬件网站/seo攻略

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*************************************************************************************** 外部中断0实验 *实现现象&#xff1a;下载程序后按下K3按键可以对D1小灯状态取反。注意事项&#xff1a;无。***********************…...

房地产怎么做网站推广/自己创建个人免费网站

Linux是一个多用户的操作系统。每个用户登录系统后&#xff0c;都会有一个专用的运行环境。通常每个用户默认的环境都是相同的&#xff0c;这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制&#xff0c;其方法就是修改相应的系统环境变量。什么是环…...

wordpress禁用主题字体/推广网站大全

案例&#xff1a;电脑清理怎么做&#xff1f; 【求一个电脑清理的好方法&#xff01;电脑垃圾文件太多了又不敢随意删除&#xff0c;怕误删重要的文件&#xff01;哪位友友可以帮我出出主意呀&#xff1f;到底应该怎么清理电脑呢&#xff1f;】 电脑使用的时间长了都会慢慢变…...

做网站的机构/推广普通话手抄报图片

关于跨域问题 网上一般都是两种解决方案 1.通过实现接口 WebMvcConfigurer &#xff08;拦截器的方式实现&#xff09; 2.通过CorsFilter 实现 package com.take.takeDemo.Common.config;import org.springframework.context.annotation.Bean; import org.springframework.co…...

网站的开发方法有哪些/seo实战培训视频

2019独角兽企业重金招聘Python工程师标准>>> 1. 背景 1.1. 原生NIO类库的复杂性 在开始本文之前&#xff0c;我先讲一件自己亲身经历的事&#xff1a;大约在2011年的时候&#xff0c;周边的两个业务团队同时进行新版本开发&#xff0c;他们都需要基于NIO非阻塞特性构…...

那个网站做排列五头比较准/做了5天游戏推广被抓了

kubesphere删除节点 停止调度节点 将节点标记为不可调度可以防止调度程序将新的Pod放置到该节点上&#xff0c;同时不会影响该节点上现有pod。 以admin身份登录控制台&#xff0c;访问【集群管理】页面。若要将节点标记为不可调度&#xff0c;从左侧菜单中选择【节点】下的【…...