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

pt24django教程

静态文件访问

不能与服务器端做动态交互的文件都是静态文件,如: 图片,css,js,音频,视频,html文件(部分)

静态文件配置

在 settings.py 中配置一下两项内容:

STATIC_URL

静态文件的访问路径,通过哪个url地址找静态文件 ,STATIC_URL = ‘/static/’

  • 指定访问静态文件时是需要通过 /static/xxx或 127.0.0.1:8000/static/xxx

STATICFILES_DIRS

静态文件的在服务器端的存储位置

配置访问静态文件

1、目录、setting.py配置

# file: setting.py
# 静态文件的访问路径
STATIC_URL = '/static/'
# 静态文件的存储路径
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)[root@vm mysite2]# ls
db.sqlite3  manage.py  mysite2  static  templates[root@vm mysite2]# mkdir -p static/img

使用静态文件的访问路径进行访问,访问路径: STATIC_URL = ‘/static/’

<img src="/static/img/bizhi.jpeg">
<img src="http://127.0.0.1:8000/static/img/bizhi.jpeg">

2、路由配置

# urls.pypath('test_static',views.test_static),# views.py  
def test_static(request):return render(request, 'test_static.html')# templates/test_static.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>静态文件的演示</title>
</head>
<body>
<img src="/static/img/bizhi.jpeg" width="300 px" height="150 px">
<img src="http://192.168.1.11:8000/static/img/bizhi.jpeg" width="300 px" height="150 px">
</body>
</html>

通过 {% static %}标签访问静态文件 了解

  • {% static %} 表示的就是静态文件访问路径
  1. 加载 static {% load static %}
  2. 使用静态资源时
    • 语法:{% static '静态资源路径' %}
    • 示例: <img src="{% static 'images/lena.jpg' %}">

Django中的应用 - app

应用在Django项目中是一个独立的业务模块,可以包含自己的路由、视图、模板、模型

创建、注册应用app

# 创建应用文件夹
[root@vm mysite2]# python3 manage.py startapp music
/root/mysite2#在settings.py里注册应用
[root@vm mysite2]# vi mysite2/settings.pyINSTALLED_APPS = [# ....'user',  #用户信息模块'music',  #音乐模块]

应用的结构

[root@vm mysite2]# ls music/
admin.py    #应用的后台管理配置文件  
apps.py     #应用的属性配置文件
__init__.py #应用子包的初始化文件  
migrations  #文件夹,保存数据迁移的中间文件,不会动
models.py   #与数据库相关的模型映射类文件
__pycache__  
tests.py    #应用的单元测试文件
views.py    #定义视图处理函数的文件

应用的分布式路由

Django中,主路由配置文件(urls.py)可以不处理用户具体路由,主路由配置文件的可以做请求的分发(分布式请求处理)。具体的请求可以由各自的应用来进行处理

include 函数

用于分发将当前路由转到各个应用的路由配置文件的 urlpatterns 进行分布式处理

函数格式 include(‘app命字.url模块名’),子urls模块文件件里必须有urlpatterns 列表

同名文件冲突问题

#主urls.py
from django.conf.urls import include# 分布式路由,将path为music/xxx的路由,交给music下的urls去处理path('music/',include('music.urls')),# music下的urls    
from django.urls import path
from . import viewsurlpatterns = [# http://127.0.0.1:8000/music/indexpath('index', views.index_view),
]# music下的views.py
from django.shortcuts import renderdef index_view(request):return render(request, 'index.html')# 主应用目录下的templates/index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h3>这是主目录下的Index页面</h3>
</body>
</html># music应用下templates/index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h3>这是music应用下的Index页面</h3>
</body>
</html># http://192.168.1.11:8000/music/index   # 这是主目录下的Index页面,APP的未返回

更改下返回的文件名

# music下的views.py
from django.shortcuts import renderdef index_view(request):return render(request, 'index1.html')# music应用下templates/index.html改成index1.html 
# http://192.168.1.11:8000/music/index  #这是music应用下的Index页面,主目录没有

应用的templates模板总结

应用内部可以配置模板目录
1,应用下手动创建 templates 文件夹
2,settings.py中确认 TEMPLATE 配置项中 的 'APP_DIRS' 值例如 : 'APP_DIRS': True#应用下templates 和 外层templates 都存在时,django得查找模板规则
1,优先查找外层templates目录下的模板,再查找APP的
2,按INSTALLED_APPS配置下的 应用顺序 从上到下逐层查找
#主 settings.py
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],  #1、先找主的'APP_DIRS': True,   #True,打开APP查找。    2、再找APP的INSTALLED_APPS = [
...'music',   # 3、APP从上到下,找到就返回
]

解决冲突方案

#在应用的templates,先创建与应用同名的子目录,然后在子目录下添加模板文件。 "应用名/模板名.html" 
[root@vm music]# mkdir templates/music  #templates创建同app同名的目录
[root@vm music]# mv templates/index1.html templates/music/index.html# music下的views.py
from django.shortcuts import renderdef index_view(request):return render(request, 'music/index.html')http://192.168.1.11:8000/music/index  #这是music应用下的Index页面    

练习:

练习:再创建一个user应用,并注册。user应用下,也创建一个index.html页面。"user/index"路由请求,在视图函数返回页面时,使用自己的index页面。url:   index,返回主目录的index.htmlurl:music/index , 返回music应用下的index.htmlurl:user/index,返回user应用下的index.html
# 1、创建应用文件夹
[root@vm mysite2]# python3 manage.py startapp  user  
/root/mysite2# 2、在settings.py里注册应用
[root@vm mysite2]# vi mysite2/settings.pyINSTALLED_APPS = [....'user',  #用户信息模块]
# 3、创建分布式路由
[root@vm mysite2]# vi mysite2/urls.py
...path('user/',include('user.urls')),# 4、创建子路由
[root@vm mysite2]# vi user/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('index', views.index_view),
]# 5、创建子view
[root@vm mysite2]# vi user/views.py
...
def index_view(request):return render(request, 'user/index.html')# 6、 创建子templates/user目录  index文件
[root@vm mysite2]# mkdir -p user/templates/user
[root@vm mysite2]# vi user/templates/user/index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h3>这是user应用下的Index页面</h3>
</body>
</html>#反应略慢,别搞那么快。
# http://192.168.1.11:8000/user/index   # 这是user应用下的Index页面

模型层

Django下配置使用 mysql 数据库

[root@vm mysite2]# apt-get  install python3-dev default-libmysqlclient-dev   #ubuntu
[root@vm mysite2]# yum install python3-devel mysql-devel gcc #centos[root@vm mysite2]# yum -y install mariadb-server  mariadb-client
[root@vm mysite2]# systemctl enable mariadb --now
[root@vm mysite2]# mysql
UPDATE mysql.user SET password = PASSWORD('123456') WHERE user = 'root';
FLUSH PRIVILEGES;
exit
[root@vm mysite2]# pip3 install --upgrade pip
[root@vm mysite2]# pip3 install mysqlclient

创建 和 配置数据库

[root@vm mysite2]# mysql -uroot -p123456
> create database mysite2 default charset utf8 ;
> use mysite2;

数据库的配置为mysql

sqlite 数据库配置

# file: settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}

mysql 数据库配置

DATABASES = {'default' : {'ENGINE': 'django.db.backends.mysql','NAME': 'mysite2','USER': 'root','PASSWORD': '123456','HOST': '127.0.0.1','PORT': 3306,}
}"""  数据库的后端引擎  
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
'django.db.backends.postgresql'"""

模型(Models)

模型是一个Python类,它是由django.db.models.Model派生出的子类。- 一个模型类代表数据库中的一张数据表- 模型类中每一个类属性都代表数据库中的一个字段。- 模型是数据交互的接口,是表示和操作数据库的方法和方式

Django 的 ORM框架

ORM(Object Relational Mapping)即对象关系映射,它是一种程序技术,它允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库

ORM框架的作用

1. 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。
2. 根据设计的模型类生成数据库中的表格。
3. 通过简单的配置就可以进行数据库的切换。
ORM 好处:1. 只需要面向对象编程, 不需要面向数据库编写代码.- 对数据库的操作都转化成对类属性和方法的操作.- 不用编写各种数据库的sql语句.2. 实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.- 不在关注用的是mysql、oracle...等数据库的内部细节.- 通过简单的配置就可以轻松更换数据库, 而不需要修改代码.ORM 缺点1. 对于复杂业务,使用成本较高2. 性能损耗,根据对象的操作转换成SQL语句,再根据查询的结果转化成对象, 在映射过程中有性能损失.ORM 映射示意:类   ---> 数据表  对象 ---> 数据行属性 ---> 字段

模型类Models 创建

模型类需继承自django.db.models.Model

Models的语法规范

from django.db import models
class 模型类名(models.Model):字段名 = models.字段类型(字段选项)""" 模型类名是数据表名的一部分,建议类名首字母大写字段名又是当前类的类属性名,此名称将作为数据表的字段名字段类型用来映射到数据表中的字段的类型字段选项为这些字段提供附加的参数信息   """ 

模型示例

此示例为添加一个 bookstore_book 数据表来存放图书馆中书目信息

添加一个 bookstore 的 app

[root@vm mysite2]# python3 manage.py startapp bookstore
[root@vm mysite2]# vi mysite2/settings.py
# file : setting.py  注册app
INSTALLED_APPS = [...'bookstore',
]

添加模型类

# file : bookstore/models.py
from django.db import modelsclass Book(models.Model): title = models.CharField("书名", max_length=50, default='')price = models.DecimalField('定价', max_digits=7, decimal_places=2, default=0.0)

数据库的迁移

迁移是Django同步您对模型所做更改(添加字段,删除模型等) 到您的数据库模式的方式,步骤如下:

1、生成或更新迁移文件
将每个应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中

[root@vm mysite2]# python3 manage.py makemigrations
/root/mysite2
Migrations for 'bookstore':bookstore/migrations/0001_initial.py- Create model Book

2、执行迁移脚本程序

执行迁移程序实现迁移。将每个应用下的migrations目录中的中间文件同步回数据库。

[root@vm mysite2]# python3 manage.py migrate
Running migrations:
...Applying sessions.0001_initial... OK  #看下数据库

**注意:**每次修改完模型类再对服务程序运行之前都需要做以上两步迁移操作

[root@vm mysite2]# mysql -uroot -p123456 -e "use mysite2;show tables;"
+----------------------------+
| Tables_in_mysite2          |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| bookstore_book             |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+
[root@vm mysite2]# mysql -uroot -p123456 -e "desc mysite2.bookstore_book;"
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| title | varchar(50)  | NO   |     | NULL    |                |
| price | decimal(7,2) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

字段类型

参考文档 https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types

BooleanField()- 数据库类型:tinyint(1)- 编程语言中:使用TrueFalse来表示值- 在数据库中:使用10来表示具体的值CharField()- 数据库类型:varchar- 注意:- 必须要指定max_length参数值DateField()- 数据库类型:date- 作用:表示日期- 参数:- auto_now: 每次保存对象时,自动设置该字段为当前时间(取值:True/False)- auto_now_add: 当对象第一次被创建时自动设置当前时间(取值:True/False)- default: 设置当前时间(取值:字符串格式时间如: '2019-6-1')- 以上三个参数只能多选一DateTimeField()- 数据库类型:datetime(6)- 作用:表示日期和时间- 参数同DateFieldDecimalField()- 数据库类型:decimal(x,y)- 编程语言中:使用小数表示该列的值- 在数据库中:使用小数- 参数:- max_digits: 位数总数,包括小数点后的位数。 该值必须大于等于decimal_places.- decimal_places: 小数点后的数字数量- 示例:  money=models.DecimalField(max_digits=7,decimal_places=2,default=0.0)FloatField()- 数据库类型:double- 编程语言中和数据库中都使用小数表示值EmailField()- 数据库类型:varchar- 编程语言和数据库中使用字符串IntegerField()- 数据库类型:int- 编程语言和数据库中使用整数URLField()- 数据库类型:varchar(200)- 编程语言和数据库中使用字符串ImageField()- 数据库类型:varchar(100)- 作用:在数据库中为了保存图片的路径- 编程语言和数据库中使用字符串TextField()- 数据库类型:longtext- 作用:表示不定长的字符数据

字段选项

文档参见https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-options

指定创建的列的额外的信息,允许出现多个字段选项,多个选项之间使用,隔开

1. primary_key- 如果设置为True,表示该列为主键,如果指定一个字段为主键,则此数库表不会创建id字段
2. blank- 设置为True时,字段可以为空。设置为False时,字段是必须填写的。
3. null- 如果设置为True,表示该列值允许为空。- 默认为False,如果此选项为False建议加入default选项来设置默认值
4. default- 设置所在列的默认值,如果字段选项null=False建议添加此项
5. db_index- 如果设置为True,表示为该列增加索引
6. unique- 如果设置为True,表示该字段在数据库中的值必须是唯一(不能重复出现的)
7. db_column- 指定列的名称,如果不指定的话则采用属性名作为列名
8. verbose_name- 设置此字段在admin界面上的显示名称。

示例:

# 创建一个属性,表示用户名称,长度30个字符,必须是唯一的,不能为空,添加索引
name = models.CharField(max_length=30, unique=True, null=False, db_index=True)

Meta内部类

使用内部 Meta类 来给模型赋予属性,Meta类下有很多内建的类属性,可对模型类做一些控制、

示例:

# file : bookstore/models.py
from django.db import modelsclass Book(models.Model): title = models.CharField("书名", max_length=50, default='')price = models.DecimalField('定价', max_digits=7, decimal_places=2, default=0.0)class Meta:db_table = 'book'  #可改变当前模型类对应的表名

数据库迁移的错误处理方法

# file : bookstore/models.py   #新增一行
from django.db import modelsclass Book(models.Model): 
...# 新增属性/字段 (要有默认值)market_price = models.DecimalField("零售价",max_digits=5,decimal_places=2,default=0.0)pub = models.CharField("出版社", max_length=50,default="")$ python3 manage.py makemigrationsYou are trying to add a non-nullable field 'des' to book without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:1) Provide a one-off default now (will be set on all existing rows with a null value for this column)2) Quit, and let me add a default in models.py
Select an option:  2  退出

错误原因

  • 当对模型类新添加一个字段时可出现该错误
  • 原理是 添加新字段后,数据库不知道原来已有数据对于新建字段该如何赋值,所以新增字段时,务必要添加default默认值。

处理方法:

  1. 选择1 则会进入到shell中,手动输入一个默认值,不建议
  2. 退出当前生成迁移文件的过程,自己去修改models.py, 新增加一个default=XXX 的缺省值(推荐使用)
Select an option:  2  退出修改下。重新makemigrations
# file : bookstore/models.py   #新增一行
from django.db import modelsclass Book(models.Model): 
...# 新增属性/字段 (要有默认值)market_price = models.DecimalField("零售价", max_digits=5,decimal_places=2,default=0.0)pub = models.CharField("出版社",max_length=50,default="")[root@vm mysite2]# python3 manage.py makemigrations
[root@vm mysite2]# python3 manage.py migrate

数据库的迁移文件混乱的解决办法

1. 删除 所有 migrations 里所有的 000?_XXXX.py (`__init__.py`除外)
2. 删除 数据库,要先备份一下- sql> drop database mywebdb;
3. 重新创建 数据库- sql> create datebase mywebdb default charset...;
4. 重新生成migrations里所有的 000?_XXXX.py- python3 manage.py makemigrations
5. 重新更新数据库- python3 manage.py migrate

模型层的基本操作

基本操作包括增删改查操作,即(CRUD操作),CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)

管理器对象

每个继承自 models.Model 的模型类,都会有一个 objects 对象被同样继承下来。这个对象叫管理器对象

数据库的增删改查可以通过模型的管理器实现

class MyModel(models.Model):...
MyModel.objects.create(...) # objects 是管理器对象

创建数据对象

Django 使用一种直观的方式把数据库表中的数据表示成Python 对象,创建数据中每一条记录就是创建一个数据对象

  1. MyModel.objects.create(属性1=值1, 属性2=值1,…)

    • 成功: 返回创建好的实体对象,失败: 抛出异常
  2. 创建 MyModel 实例对象,并调用 save() 进行保存 (不推荐)

    obj = MyModel(属性=,属性=)
    obj.属性=值
    obj.save()
    

使用Django shell

  • 在Django提供了一个交互式的操作项目叫 Django Shell 它能够在交互模式用项目工程的代码执行相应的操作
  • 利用 Django Shell 可以代替编写View的代码来进行直接操作
  • 在Django Shell 下只能进行简单的操作,不能运行远程调式

启动使用方式:

[root@vm ~]# cd mysite2/
[root@vm mysite2]# python3 manage.py shell
...
>>> from bookstore.models import Book
>>> Book.objects.create(title='java',price=50)
<Book: Book object (1)> #返回对象
# 数据库验证
[root@vm ~]# mysql -uroot -p123456 -e "select * from mysite2.bookstore_book"
+----+-------+-------+--------------+-----+
| id | title | price | market_price | pub |
+----+-------+-------+--------------+-----+
|  1 | java  | 50.00 |         0.00 |     |
+----+-------+-------+--------------+-----+[root@vm mysite2]# python3 manage.py shell
...
>>> from bookstore.models import Book
>>> Book.objects.create(title='python',price=50,pub='清华')
<Book: Book object (2)>
>>> Book.objects.create(title='c++',price=100,pub='清华')
<Book: Book object (3)>
>>> Book.objects.create(title='xiyou',price=700,pub='beida')
<Book: Book object (4)>
>>> Book.objects.create(title='honglou',price=90,pub='beida')


相关文章:

pt24django教程

静态文件访问 不能与服务器端做动态交互的文件都是静态文件&#xff0c;如: 图片,css,js,音频,视频,html文件(部分) 静态文件配置 在 settings.py 中配置一下两项内容: STATIC_URL 静态文件的访问路径&#xff0c;通过哪个url地址找静态文件 &#xff0c;STATIC_URL ‘/s…...

Golang开发-new关键字

在Go语言中&#xff0c;new关键字用于创建一个新的零值对象&#xff0c;并返回指向该对象的指针。它是Go语言中用于分配内存的一种方式。 new关键字的语法如下&#xff1a; ptr : new(Type)其中&#xff0c;Type表示要创建的对象的类型&#xff0c;ptr是指向新对象的指针。 …...

遗传算法与粒子群算法的Python实现

遗传算法本文应用的是 python geatpy module粒子群算法本文应用的是 python pyswarm module 遗传算法 它的不等约束是...<0 import geatpy as ea import numpy as npea.Problem.single def evalVars(Vars): x1 Vars[0]x2 Vars[1]x3 Vars[2]x4 Vars[3]f (x1 2)**2 \…...

无涯教程-JavaScript - ASINH函数

描述 ASINH函数返回数字的反双曲正弦值。反双曲正弦是其双曲正弦为number的值,即ASINH(SINH(number))等于number。 语法 ASINH (number)争论 Argument描述Required/OptionalNumberAny real number.Required Notes 如果指定的数字未被识别为数字值,则ASIN返回#VALUE!错误 …...

ActiveMQ面试题(一)

文章目录 前言一、什么是ActiveMQ二、ActiveMQ 服务器宕机怎么办&#xff1f;三、丢消息怎么办四、持节化消息非常慢五、消息的不均匀消费总结 前言 什么是ActiveMQActiveMQ 服务器宕机怎么办&#xff1f;丢消息怎么办持节化消息非常慢消息的不均匀消费 一、什么是ActiveMQ a…...

node:glob语法以及常用的文件查找库glob、fast-glob

背景 前端开发中&#xff0c;我们经常会看到一种配置语法&#xff0c;一般出现在 gitignore里、webpack 配置里、vscode查找文件的时候&#xff0c;如下&#xff1a; ?.js **/*.js dist/**/*.js这种语法其实叫 glob。 glob 历史 glob 来自于 Linux。 1975 年发行的 unix …...

饲料添加剂 微生物 屎肠球菌

声明 本文是学习GB 7300.503-2023 饲料添加剂 第5部分&#xff1a;微生物 屎肠球菌. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了饲料添加剂屎肠球菌的技术要求、采样、检验规则、标签、包装、运输、贮存和保质 期&#xff0…...

二叉搜索树经典笔试题【力扣、牛客】

文章目录 1.根据二叉树创建字符串2. 二叉树的层序遍历3.二叉树的层序遍历Ⅱ4.二叉树的最近公共祖先1.法一&#xff1a;定位p、q在左还是右 分类讨论2.法二&#xff1a;利用stack求出p、q路径 求相交值 5.二叉搜索树与双向链表1.法一&#xff1a;递归&#xff1a;递归过程修正指…...

docker系列(1) - docker环境篇

文章目录 1. docker环境1.1 docker安装1.2 阿里云镜像加速器1.2 docker管理工具(portainer)1.3 docker网络1.3.1 网络说明1.3.2 创建指定网关的网络 1. docker环境 1.1 docker安装 #CentOS 6 rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noar…...

web安全漏洞-SQL注入攻击实验

实验目的 学习sql显注的漏洞判断原理掌握sqlmap工具的使用分析SQL注入漏洞的成因 实验工具 sqlmap是用python写的开源的测试框架&#xff0c;支持MySQL&#xff0c;Oracle&#xff0c;PostgreSQL&#xff0c;Microsoft SQL Server&#xff0c;Microsoft Access&#xff0c;I…...

直接插入排序(C++实现)

文章目录 1. 基础概念&#x1f351; 内部排序和外部排序 2. 直接插入排序3. 动图演示4. 代码实现5. 性能分析 无论是日常生活还是很多科学领域当中&#xff0c;排序都是会经常面对的问题&#xff0c;比如按成绩对学校的学生排序&#xff0c;按薪水多少对公司员工排序等。 根据…...

【k8s】Pod 的钩子

Kubernetes&#xff08;K8s&#xff09;中的 Pod 可以使用以下几种勾子&#xff08;钩子&#xff09;来执行在容器生命周期的不同阶段运行的操作&#xff1a; PostStart&#xff08;启动后&#xff09;&#xff1a;该勾子在容器启动之后立即运行。它可以用于在容器内执行一些初…...

MCU软核 3. Xilinx Artix7上运行cortex-m3软核

0. 环境 - win10 vivado 2018.3 keil mdk - jlink - XC7A35TV12 1. 下载资料 https://keilpack.azureedge.net/pack/Keil.V2M-MPS2_DSx_BSP.1.1.0.pack https://gitee.com/whik/cortex_m3_on_xc7a100t 2. vivado 2018 Create Project -> Next -> -> Project n…...

基于SpringbootShiro实现的CAS单点登录

概述 单点登录&#xff08;Single Sign On,SSO&#xff09;是一种登录管理机制&#xff0c;主要用于多系统集成&#xff0c;即在多个系统中&#xff0c;用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个&#xff0c;无须多次登录。常见的例子就是&#xff0c;…...

SocketTool V4.0 使用说明

TCP/UDP Socket 调 试 工 具 提 供 了 TCP Server,TCP Client,UDP Server,UDP Client,UDP Group 五种 Socket 调试方案。 下面是一份简要的使用流程&#xff1a; TCP 通信测试&#xff1a; 1) 创建 TCP Server 选中左方的 TCP Server, 然后点击 ”创建 ”按钮&#xff0c;软件弹…...

Jenkins结合allure生成测试报告

前言&#xff1a; 我们在做自动化测试的过程中最重要的肯定是报告的输出啦&#xff0c;最近几年allure可以说是最最主流报告展示工具啦。 一、服务端安装allure 在安装Jenkins的机器 安装allure&#xff0c;我们在Jenkins上能跑动前提是在对应服务器上代码能正常运行&#xf…...

【Linux】缓冲区/回车换行

1、缓冲区 C程序默认有输出缓冲区。数据输出时&#xff0c;被及时看到&#xff0c;是立马刷新了&#xff1b;如果没被看到&#xff0c;是被暂存在数据缓冲区中。fflush(stdout); 【强制刷新】\n【行刷新&#xff0c;也是一种刷新方式】 2、回车换行 \n【回车换行】输入完一行内…...

Java手写插入排序和算法案例拓展

1. Java手写插入排序和算法案例拓展 1.1 算法思维导图 #mermaid-svg-jIZ3LAdg1NLcOvaM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jIZ3LAdg1NLcOvaM .error-icon{fill:#552222;}#mermaid-svg-jIZ3LAdg1NLcOvaM…...

Python Opencv实践 - 视频文件操作

参考资料&#xff1a; 视频处理VideoCapture类---OpenCV-Python开发指南&#xff08;38&#xff09;_python opencv videocapture_李元静的博客-CSDN博客 OpenCV VideoCapture.get()参数详解 - 简书FOURCC四字符码对照表_4fvcc_Kellybook的博客-CSDN博客 import cv2 as cv im…...

HCS 中的一些概念(二)

一、Service OM 1、首页&#xff08;资源状态&#xff09; 2、服务列表 计算资源&#xff1a;计算资源又分为可用分区&#xff08;AZ&#xff09;、规格和虚拟机组&#xff0c;可在此处创建虚拟机、虚拟机组、主机组和规格 网络资源&#xff1a;网络资源又分为物理网络…...

Scanner类用法(学习笔记)

Scanner类用法&#xff08;学习笔记&#xff0c;后续会补充&#xff09; 1.next&#xff08;&#xff09;用法 package com.yushifu.scanner; import java.util.Scanner;//util java工具包 //Scanner类&#xff08;获取用户的输入&#xff09; Scanner s new Scanner&#…...

idea2021.1.3版本双击启动,没反应

今天打开电脑&#xff0c;点开idea&#xff0c;界面悬在这里&#xff0c;几秒然后就是没了。然后就一直打不开idea了。 然后又是卸载重装&#xff0c;又是删除缓存文件。我把电脑关于idea的文件全都删除了 。重新安装后&#xff08;首次运行倒是可以打开&#xff0c;但是关掉id…...

MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置

MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置 一个完整的Sentinel模具保护解决方案包括一到四台冲击式摄像机、专用红外LED照明和镜头、Sentinel软件以及所有与模压机连接的必要互连组件。摄像机支架基于磁性&#xff0c;可快速、安全、灵活地部署。此外&#xff0c;一个…...

Error contacting service. It is probably not running.问题解决

一 问题描述 Error contacting service. It is probably not running. 查看zookeeper 目录下数据目录下的zookeeper.out 如果你没找到这个目录那么 OK 你的问题就是 zoo.cfg 文件中数据目录设置错误 zookeeper.out下报错 ERROR [main:QuorumPeerMain86] - Invalid config,…...

01_网络编程_传统IO

网络编程 1.什么是网络编程 在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行的数据传输。 如果想把一个计算的结果&#xff0c;或者是电脑上的文件通过网络传递给你的朋友&#xff0c;就需要用到网络编程。 在实际生活中&#xff0c;网络通信无处不在…...

vue 检查指定路由是否存在

今天路由跳转报错了 RangeError: Maximum call stack size exceeded 但显然 我的代码只有一个简单的路由跳转 并没有很大的的堆栈数据操作 所以 我就联想到了 会不会是因为路由不存在 我们可以通过 console.log(this.$router.options.routes)输出整个路由对象类看一下 或者…...

自动化办公更简单了:新版python-office,有哪些更新?

#职场经验谈# 大家好&#xff0c;这里是程序员晚枫&#xff0c;小破站/小红薯都叫这个名。 去年4月开源了一个Python自动化办公项目&#xff1a;python-office&#xff0c;GitHub和Gitee都能看到。1行代码实现复杂的自动化办公任务&#xff0c;帮助不懂代码的小白&#xff0c;…...

windows flask服务卡死的问题

windows flask服务卡死的问题 最近的工作中&#xff0c;需要用python写一个flask服务&#xff0c;供C端调用&#xff0c;但是偶尔服务会卡住&#xff0c;只接收数据但不进行处理&#xff0c;不过CtrlC后又可以继续运行。 查看了网上的一些解决方法&#xff0c;但似乎都没有什…...

项目上线部署--》服务器部署流程(一)

目录 &#x1f31f;准备工作 服务器购买 域名购买 域名解析&#xff08;配置 DNS&#xff09; &#x1f31f;服务器环境搭建 配置服务器 安装 CentOS 开发人员相关包 ​编辑 配置免密登陆 &#x1f31f;写在最后 &#x1f31f;准备工作 服务器购买 国内服务器&#x…...

Python:函数调用的实参

相关阅读 Python专栏https://blog.csdn.net/weixin_45791458/category_12403403.html 调用就是附带可能为空的一系列参数来执行一个可调用对象 &#xff08;例如函数&#xff09;&#xff0c;它的语法的BNF范式如下所示&#xff0c;有关BNF范式的规则&#xff0c;可以参考之前…...

动态网站开发案例教程/站群优化公司

出现问题的code!!! 1 private void saveImage(String uri, String savePath) throws IOException {2 3 // 创建连接4 HttpURLConnection conn createConnection(uri);5 6 // 拿到输入流,此流即是图片资源本身7 InputStream imputStream conn.getInputStream(…...

网站源码建站教程/石家庄今日头条新闻

Lkstack.h // 链栈的定义 typedef struct node {int data;struct node *next; }LkStk; main.c #include <stdio.h> #include "Lkstack.h"// 链接存储实现栈的基本运算算法// 1. 初始化&#xff0c;建立一个空栈 void InitStack(LkStk *LS) {LS (LkStk *)mallo…...

单位网站维护 网站建设岗位/seo顾问服务咨询

一、开关电源的电路组成开关电源的主要电路是由输入电磁干扰滤波器(EMI)、整流滤波电路、功率变换电路、PWM控制器电路、输出整流滤波电路组成。辅助电路有输入过欠压保护电路、输出过欠压保护电路、输出过流保护电路、输出短路保护电路等。开关电源的电路组成方框图如下&#…...

浏阳做网站报价/seo线下培训班

文章首发于跳跳糖&#xff1a;SnakeYaml反序列化及不出网利用 SPI 正文之前先了解一下SPI机制。 SPI全称Service Provider Interface&#xff0c;是Java提供的一套用来被第三方实现或者扩展的接口&#xff0c;它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的…...

如何进行账号推广/网站优化公司怎么选

Axure RP 8.0 函数对照表axureRP8.0中有很多丰富的函数&#xff0c;这些函数在制作高保真原型时会经常用到&#xff0c;这些函数能够提高我们的工作效率&#xff0c;但一定要注意不要一味地“沉迷”于函数的研究&#xff0c;不要过于纠结某些函数的使用&#xff0c;否则有可能会…...

万网x3主机l系统放两个网站/关键词推广排名

! 下面的工具适合于redis 哨兵模式&#xff0c;不适合于redis cluster模式&#xff01; 在redis cluster模式下&#xff0c;执行redis-dump&#xff0c;会碰到下面的问题。 CROSSSLOT Keys in request dont hash to the same slot redis dump 推荐一个redis cluster下的迁移…...