django中models field详解

2023-11-09

本文参考自:django官方文档models/field

在model中添加字段的格式一般为: field_name = field_type(**field_options)

一 field options(所有字段共用)

1 null 默认为False,True则表示可以为null。(空字符串在数据库中可能被存储为’’)

2 blank 默认为False,True表示可以为空。

3 choice 可选的,限制了该选项的字段值必须是所指定的choice中的一个。

from django.db import models

class Student(models.Model):
FRESHMAN = ‘FR’
SOPHOMORE = ‘SO’
JUNIOR = ‘JR’
SENIOR = ‘SR’
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, ‘Freshman’), #第一个参数是真正的model参数,#第二个参数则是方便人们理解阅读
(SOPHOMORE, ‘Sophomore’),
(JUNIOR, ‘Junior’),
(SENIOR, ‘Senior’),
)
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)

def is_upperclass(self):
    return self.year_in_school in (self.JUNIOR, self.SENIOR)

4 db_column 数据库column名称。默认为本字段的名称。

5 db_index 如果为True的话,该字段的数据库索引将会被创建

6 default 设置该字段的默认值,可以是值也可以是对象。

7 editable 默认为True,若为False,则不会在admin/界面显示

8 primary_key 若设置为True,则表示将该字段设置为主键。一般情况下django默认会设置一个自增长的id主键。

9 unique 若设置为True,该字段值不可重复

二 field type(字段类型,细分的话可以分为普通字段以及关系字段)

1 普通字段

1 AutoField() 根据已有id自增长的整形唯一字段,一般每个model类不需设置该字段,因为django会为每个model自动设置。

django默认会为每个model类添加如下语句:id = models.AutoField(primary_key=True) 当其他字段添加了primary_key属性,则不会创建id字段了

每个model类仅能有一个主键

2 BooleanField() 布尔型字段,默认的表单窗口部件是CheckBoxInput

3 CharField() 字符型字段,默认的表单窗口部件是TextInput。该字段类型有一个必需参数:max_length 在数据库水平限定了字符串最大长度

4 DateField() 日期字段,字段的值是python中datetime.date的实例,默认的表单窗口是TextInput有几个可选的参数:

auto_now=True/False:当设置为True时,每当该对象使用save()时,该字段的值就会被更新。

auto_now_add=True/False: 当设置为True时,该字段的值为该对象被创建时的日期

5 DateTimeField() 日期和时间字段,值为datetime.datetime实例。默认的表单窗口以及可选参数同上。

6 DecimalField() 混合精度的小数型数字字段。有两个必需的参数:

max_digits=ingt_number:限定数字的最大位数(包含小数位)

decimal_places=int_number:存储数字的小数位

#to store numbers up to 999 with a resolution of 2 decimal places, you’d use
models.DecimalField(…, max_digits=5, decimal_places=2)
  7 EmailField(max_length=254, **options) 邮件字段,使用EmailValidator进行验证

8 FileField(upload_to=None, max_length=100, **options) 文件上传字段。

这个字段不能设置primary_key和unique选项.在数据库中存储类型是varchar,默认最大长度为100.

有两个可选参数:

upload_to

如果使用默认的FileSystomStorage,文件将会存储到settings文件中配置的MEDIA_ROOT路径中。

upload_to的值也可以为可调用对象,通过调用这个对象可以获得上传路径。

instance=: 定义了FileField的模型实例

filename=’’: 文件名称。

class MyModel01(models.Model):
# file will be uploaded to MEDIA_ROOT/uploads
upload = models.FileField(upload_to=‘uploads/’)
# or…
# file will be saved to MEDIA_ROOT/uploads/2015/01/30
upload = models.FileField(upload_to=‘uploads/%Y/%m/%d/’)

#upload_to=可调用对象
def user_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/user_/
return ‘user_{0}/{1}’.format(instance.user.id, filename)

class MyModel02(models.Model):
upload = models.FileField(upload_to=user_directory_path)
    storage 用来设定文件存储仓库

9 FilePathField(path=None, match=None, recursive=False, max_length=100, **options)

这个字段的值被限制在系统上某个目录中的所有文件名集合中。有三个参数

path=’’: 该参数必需。上行所说的‘某个目录’的绝对路径。Example: “/home/images”.

match=‘pattern’: 可选参数。格式是正则表达式。用来拣选符合匹配正则表达式的文件

recursive=True/False: 可选参数,默认为False。设定是否递归该目录下所有子目录的所有文件。

FilePathField(path="/home/images", match=“foo.*”, recursive=True)
  10 FloatField() 浮点字段,默认的表单窗口部件是NumberInput。和DecimalField经常混淆不清,

FloatField在内部使用Python中的float对象,而DecimalField在内部使用Python中的decimal对象。

11 ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)

图像字段。继承了FileField的所有属性和方法。而且还能自动验证上传的对象是否为合法的图像。

12 IntegerField 整形字段。

13 GenericIPAddressField(protocol=‘both’, unpack_ipv4=False, **options) ip地址字段

protocol=‘both/ipv4/ipv6’ 默认为both

unpack_ipv4 用处不大。

14 NullBooleanField 类似于BooleanField,不同的是其允许值为null

15 TextField() 与CharField类似,但一般用来存储体积较大的文本。

16 TimeField(auto_now=False, auto_now_add=False, **options) 时间字段,其值为datetime.time实例

17 URLField(max_length=200, **options) URL字段

类似于CharField的子类,默认最大长度为200.

18 UUIDField(**options) 通用唯一标识字段,当不想用django默认设置的AutoField字段时,可以用该字段代替。

2 关系字段

关系字段:一对一,多对一,多对多

一对一: 现在有很多一对一辅导班,也就是上课时,一个老师对应一个学生,一个学生对应一个老师

多对一: 很多偏远山区的学校可能整个学校只有一个老师,这一个老师对应多个学生,所有的学生对应这一个老师

多对多: 而我们则很幸福,学校里有许多老师,一个老师教习一科,学生有多个老师,老师有多个学生。

1 ForeignKey(othermodel, on_delete, **options) 多对一或者一对多或者外键字段。

othermodel: 所关联的模型,‘多’ model使用外键关联 '一’model。

当所关联的模型为他自己时,使用’self’

当引用的模型为其他app中的模型时,要加上app名称标签: ‘app_name.model_name’

数据库会自动在外键字段上创建索引,可以使用de_index=False关闭该功能。

on_delete: 当删除 “一” 模型对象时,django会根据该参数的值对与该对象相关联的其他对象(也就是 ‘多’)进行操作。

在django1.9以及之前的版本中,on_delete作为一个关键字参数。而在1.10则可以作为第二个参数

models.CASCADE: 默认为models.CASCADE 级联删除。当删除’一’时,‘多’会被删除。比如:

mysite项目下名为polls的app中的models.py

class follower(models.Model):
name = models.CharField(max_length=200)
menpai = models.ForeignKey(‘menpai’, on_delete=models.CASCADE) #定义了models.CASCADE属性

def __str__(self):
    return self.name

class menpai(models.Model):
name = models.CharField(max_length=200)

def __str__(self):
    return self.name

#运行 python3 manager.py shell进入交互页面

from polls.models import follower,menpai
m1=menpai(name=‘huashanpai’)
m1.save()
m2=menpai(name=‘riyuejiao’)
m2.save()
f1=follower(name=‘linghuchong’,menpai=m1)
f1.save()
f2=follower(name=‘renwoxing’,menpai=m2)
f2.save()
f1.menpai
<menpai: huashanpai>

m1.delete()
(2, {‘polls.menpai’: 1, ‘polls.follower’: 1}) # 删除华山派时,将令狐冲也删除了

modles.PROTECT : 当删除一个具有外键关系的对象时,会引发一个异常,阻止删除该对象

models.SET_NULL: 设置删除对象所关联的外键字段为null。但字段的null属性必需为True

models.SET_DEFAULT : 设置删除对象所关联的外键字段为默认的值。

models.SET(value) :设置删除对象所关联的对象的外键字段为value,value也可以是一个可调用函数。

from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models

def get_sentinel_user():
return get_user_model().objects.get_or_create(username=‘deleted’)[0]

class MyModel(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET(get_sentinel_user),
)
      models.DO_NOTHING : 不做任何操作

limit_choices_to 限制该字段为选项形。格式:limit_choices_to={‘is_staff’: True}。值也可以为可调用函数。

def limit_pub_date_choices():
return {‘pub_date__lte’: datetime.date.utcnow()}

limit_choices_to = limit_pub_date_choices
    related_name 设置从关联对象到自身的关系的名称,若值为’+’ 则关联对象与自身无逆向关系。详解请看官方文档。

to_field 设置所关联对象的关联字段。默认为关联对象的主键字段。

2 ManyToManyField(othermodel, **options) 多对多字段。

othermodel: 所关联的model名称

db_table: 多对多关系会在两个模型所对应的表中间创建一个‘中间表’ ,将多对多转换为两个多对一,该选项为这个中间表设置名称。一般来说django会默认为中间表创建名称,但人们读起来可能搞不清楚究竟中间表关联到了哪里。

related_name: 同多对一字段中的related_name

limite_choices_to: 同…

symmetrical: 当多对多关联对象为自身时可能会用到的参数。默认为True。a,b同属于person模型,person中的friends字段与自身设置了多对多关系,当该值设置为True时,django假定关系为对称,即:a是b的朋友,那么b也是a的朋友。设置为False时,django会强制为逆向关系创建描述信息。

though: 不想让django自动创建中间表,手动创建中间表所对应的model,通过though指定对应的model名称。

though_field: 当though参数被使用时,该参数才会有效。指定使用哪些中间模型字段来确立两个模型的多对多关系。

对于第一次碰到django这样类activerecord的ORM,初学者可能比较疑惑的是ManyToManyField这个字段。老鸟可以绕开,这里拿djangobook没有说明的地方来仔细解释下。

from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.**ManyToManyField**(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

有出版商,作者,和书。一本书有多个作者,只有一个出版商。
作者和出版商好理解,各一个表就是了。书应该作为几个表呢?1个和2个都可以。如果你主要是以出版商和作者为对象操作,可以把书看成一个纽带而已,书这个表里存放着出版商和作者的关系。又因为一行存不下所有作者的id(假设没有压缩),所以book表里面会有很多book会重复。所以book表的名字改成author_publisher搞不好还更妥当。
如果你要认真的把书也看成一个表(不想看到重复的书名),那么就需要把书和作者的关系又单独提出来。这里是个多对多的关系所以用ManyToManyField,如果一对多呢?就用ForeignKey。
我们用
python manage.py sql books
查看生成的表结构

BEGIN;
CREATE TABLE "books_publisher" (
    "id" serial NOT NULL PRIMARY KEY,
    "name" varchar(30) NOT NULL,
    "address" varchar(50) NOT NULL,
    "city" varchar(60) NOT NULL,
    "state_province" varchar(30) NOT NULL,
    "country" varchar(50) NOT NULL,
    "website" varchar(200) NOT NULL
)
;
CREATE TABLE "books_author" (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(40) NOT NULL,
    "email" varchar(75) NOT NULL
)
;
CREATE TABLE "books_book" (
    "id" serial NOT NULL PRIMARY KEY,
    "title" varchar(100) NOT NULL,
    "publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id") DEFERRABLE INITIALLY DEFERRED,
    "publication_date" date NOT NULL
)
;
CREATE TABLE "books_book_authors" (
    "id" serial NOT NULL PRIMARY KEY,
    "book_id" integer NOT NULL REFERENCES "books_book" ("id") DEFERRABLE INITIALLY DEFERRED,
    "author_id" integer NOT NULL REFERENCES "books_author" ("id") DEFERRABLE INITIALLY DEFERRED,
    UNIQUE ("book_id", "author_id")
)
;
CREATE INDEX "books_book_publisher_id" ON "books_book" ("publisher_id");
COMMIT;

结果确实是生成了四个表。
其中book_authors表是关联表,不能直接插入数据,实际上也不存在叫做BookAuthors的对象。所以要插入这里面数据,建立起book和author的联系时,必须取出book实例,并给book赋值

#首先是创建一个book,book创建之后才能添加联系表,这是显然的
book = Book()
book.save()
#添加三个作者,传如一个列表
book.authors = Author.objects.all()[0:3]
#或者添加一个作者,传入一个实例
book.authors.add(Author.objects.all()[0])
#最后是save
book.save()

那么,使用ManyToManyField的好处是不是就是省去了创建一个简单联系表(如果不满足于这么简单的表,也可一通过through参数来指明存在的表)?使用它我们还可以做到通过把一张表中某键值在另一张表中全部映射的对象找出来。比如把某书的所有作者,或者某作者的所有书找出来。
book.authors.all()
author.book_set.all()

可是如果用最土的三张表的方法:一个publisher,一个author,一个publisher_author,在PublisherAuthor模型不指定ManyToManyField而只用ForeignKey也可以这么方便么?(找出映射的对象)
猜想是可以的……可以查出publisher或author对应的PublisherAuthor对象……就相当与只执行了
select publisher_author.* from publisher_author, author where publisher_author.author_id = author.id

我们还得拿着这些author的id才能找出真正的这些author。
而之前的ManyToManyField做了什么呢?
select * from publisher where publisher.id in (select publisher_id from publisher_author, author where publisher_author.author_id = author.id)


3 OneToOneField(othermodel, on_delete, parent_link=False, **options) 一对一字段。

othermodel: …

on_delete:…

related_name:…

点赞 4

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django中models field详解 的相关文章

  • 利用遗传算法GA和粒子群算法PSO优化算法,将BP神经网络训练集的MSE作为适应度函数

    利用遗传算法GA和粒子群算法PSO优化算法 将BP神经网络训练集的MSE作为适应度函数 获取最优的权值和阈值在反向输入到BP神经网络里构建回归预测模型 同时能够打印出模型的多个评价指标 具体效果可以看图 ID 325066919444354
  • Pycharm在导入虚拟环境变量的时候报错:Please specify a different SDK name解决方法

    发生的错误的远影是因为虚拟环境的命名有重复 是因为你重复导入同一个虚拟环境所致 解决方法 在设置的Project Interpreter中选择你所需要的虚拟环境 在下拉框中选择Show All 然后你就可以看到你的所有虚拟环境 点击 删除名
  • 初级项目——记账系统、双色球

    一 记账系统 主功能 展示收支明细 登记收入 登记支出 退出系统 package com wfl test import java util Scanner author wfl Version 1 0 date 2022 5 17 17
  • Linux网络-数据链路层,MAC帧解析,ARP协议

    目录 数据链路层VS网络层 以太网概念 以太网的帧格式 报文格式 也可以称之为MAC帧 MAC地址的概念 MAC帧格式 局域网通信原理 MTU MTU说明 MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ARP协
  • 使窗口只第一次访问时弹出

    有时为了某种需要 要求进入一个页面时弹出一个窗口 但每次进入时都会弹出 就使人感受到烦 怎样实只弹出一次呢 下面的程序将实现浏览才第一次访问这页时弹出窗口 以后再进入则不会弹出 在 之间加入下列代码
  • ILRuntime来实现热更新的优与劣!

    热更新 Q1 使用ILRuntime来实现热更新的可行度有多高 大家有没有使用经验分享 一般热更新分两块 代码 资源 资源热更几乎都是通过AssetBundle来搞 代码热更可以用某种解释器 解释执行的语言来搞 可供选择的有Lua as3
  • 发现一个hibernate针对derby数据库的问题bug,及解决办法

    最近apache软件基金会 发布了derby10 7 由于derby到10 7版本才支持boolean数据类型 今天发现一个hibernate针对derby数据库的一个bug 特意把它贴出来 以提醒他人 2011 01 01发现的hiber
  • qwt之获取动态变化x轴和y轴坐标的最大值和最小值

    一 新建工程 将qwt基本画图功能配置完毕 开始进行页面布局 如图所示 二 在值变化按钮中 可以实现每次进行点击x轴的时候 都会获取动态的x轴的最大值和最小值 进行点击转到槽之后x轴部分加入以下代码 void Widget on pushB
  • Basic Level 1093 字符串A+B (20分)

    题目 给定两个字符串 A 和 B 本题要求你输出 A B 即两个字符串的并集 要求先输出 A 再输出 B 但重复的字符必须被剔除 输入格式 输入在两行中分别给出 A 和 B 均为长度不超过 1 0 6 10 6 106的 由可见 ASCII
  • 利用DDA、中点画线和Bresenham法画直线

    一 实验目的 在空白图像上绘制两个点 坐标分别为 24 26 和 140 624 并且绘制出以该点为端点的直线 要求利用DDA 中点直线及Bresenham算法进行绘制 二 设计方案 使用DDA 中点画线和Bresenham画线法绘制直线
  • VideoCapture.get()(python)

    param define cv2 VideoCapture get 0 视频文件的当前位置 播放 以毫秒为单位 cv2 VideoCapture get 1 基于以0开始的被捕获或解码的帧索引 cv2 VideoCapture get 2
  • 机器学习分类算法(六)-随机森林算法

    集成算法 集成学习 ensemble learning 是目前非常流行的机器学习策略 基本上所有问题都可以借用其思想来得到效果上的提升 基本出发点就是把算法和各种策略集中在一起 说白了就是一个搞不定大家一起上 集成学习既可以用于分类问题 也
  • 多线程之线程同步

    多线程内容大致分两部分 其一是异步操作 可通过专用 线程池 Task Parallel PLINQ等 而这里又涉及工作线程与IO线程 其二是线程同步问题 鄙人现在学习与探究的是线程同步问题 通过学习 CLR via C 里面的内容 对线程同
  • leetcode 200. 岛屿数量——java题解

    题目所属分类 flood fill 算法 dfs算法经典 原题链接 给你一个由 1 陆地 和 0 水 组成的的二维网格 请你计算网格中岛屿的数量 岛屿总是被水包围 并且每座岛屿只能由水平方向和 或竖直方向上相邻的陆地连接形成 此外 你可以假
  • java运行jar文件中某个类

    size medium 运行jar文件的方法是 1 java jar xxx jar 但是有时 我们希望运行里面的具体某个类 这时可以通过 1 java cp xxx jar xxx com xxxx 其中 cp命令是将xxx jar加入到
  • 定时任务中的cron表达式

    目录 cron 表达式的定义 cron 表达式时间域的定义 cron 表达式中的通配符 常用cron表达式示例 cron 表达式的定义 虽然之前用过 cron 表达式 但对其表达式的含义只是粗略了解 恰逢最近需要使用 经查询资料 对其进行详
  • 【数据挖掘】用户画像

    概念区分 Persona和Profile 经常都翻译为用户画像 二者的概念有相关的部分 但是也有区别 Persona 也叫做用户角色 是描绘抽象一个自然人的属性 用于产品和用户调研 Profile 是和数据挖掘 大数据息息相关的应用 通过数
  • STM32-keil5仿真调试

    借着备考蓝桥杯 整理一下32的调试技巧 1 在魔术棒里找到Debug栏 选择软件仿真 注意右下角Parameder 2 进入调试界面 3 点击进入示波器 点击setup设置 点击右上角新建 输入例如PORTA 6 再选择Display Ty
  • 背包算法的实现

    实现了将一些数据构成的一个背包问题做简单的实现 但不知道有没有理解对 如有错误 还请指出 物品类的javabean package main public class goods private int weight private int
  • 利用JDBC同步不同数据库间的历史数据(脚本)

    1 例如线上线下订单之间的同步 Controller RequestMapping import public class O2oImportOrderPaymentsController Autowired private O2oImpo

随机推荐

  • 解决绕过android下apk使用usb设备权限查询相应问题,自动获取usb权限

    转载请注明 http blog csdn net hubbybob1 article details 50263925 很多Android的应用在使用usb设备时 尤其是usb摄像头 前段时间编写了一个有关usb设备的apk 但是在使用时总
  • JS-style属性

    HTML元素 style 样式属性 值 document getElementById titles style color ff0000 document getElementById titles style fontSize 25px
  • HTML5上的LocalStorage(本地存储)基本用法

    获取localStorage的长度 window localStorage length 添加 编辑localStorage的内容 window localStorage setItem 键 值 根据对应的索引去获取对应localStora
  • Redhat5 安装序列号及版本说明

    为了保证安装的组件和订阅相匹配 红帽企业 Linux 5 需要输入一个安装号 它被用来配置安装程序来提供正确的软件包 安装号码包含在你的订阅里 如果您没有输入安装号码 只有核心服务器或 Desktop 将会被安装 其它功能可以在以后被手工安
  • Matlab Simulink 常用快捷操作和功能(1)

    1 快速查找library里面的模块 双击左键 然后输入要查询的模块名称 gt 2 block 和 signal 的命名修改 单击block 显示 修改名字 3 Simulink支持从块参数对话框中创建变量 可以在Simulink中创建MA
  • vue element admin 拖拽dialog v-el-drag-dialog

    1在vue element admin master里找到src directive el drag dialog文件夹复制到自己的相同目录下 2页面引用 import elDragDialog from directive el drag
  • 读者写者模型

    前一节介绍完了生产者消费者模型 它是一种一方生产数据 另一方消费数据的模式 下面介绍另外一种不同于生产消费的模型 即读者写者模型 两者相同 和前面的模型相比 读写模型中写者与写者之间还是互斥关系 写者与读者之间还是互斥与同步关系 两者差异
  • 数字信号处理第一次试验:系统响应及系统稳定性

    数字信号处理第一次试验 系统响应及系统稳定性 前言 一 实验目的 二 实验原理与方法 三 实验环境 四 实验内容及步骤 五 实验结果截图 含分析 六 思考题 七 实验报告要求 前言 为了帮助同学们完成痛苦的实验课程设计 本作者将其作出的实验
  • unity+高通vuforia开发增强现实(AR)教程(三) (勘误)

    按照原作者的想法 是可以实现手机观察到播放封面 但没法点击播放 针对这个问题 我翻看了官方论坛 因为最新的unity包缺少了一个C 文件 把缺少的文件加上 可以实现播放 以下为详细说明 The objective here is to sh
  • C++异常处理try和throw以及catch的使用

    异常捕获的基本构成方式 try c 异常的处理方式 包含可能抛出异常的语句 catch 类型名 形参名 捕获特定类型的异常 处理异常的语句 条件是抛出的异常类型是与catch参数类型匹配 try捕获异常并不能保证程序就不会崩溃 通常还需要做
  • python中关于requests里的timeout()

    timeout 超时 首先是 为防止服务器不能及时响应 大部分发至外部服务器的请求都应该带着 timeout 参数 在默认情况下 除非显式指定了 timeout 值 requests 是不会自动进行超时处理的 如果没有 timeout 你的
  • Oracle identified by values

    有时候需要使用user的密码 却不知道user密码是什么 我常常使用如下把戏 1 记录密码hash值 2 更改为自己的密码 3 使用完后 利用identified by values 更改回原来的密码 在oracle 10g的时候 密码是h
  • opencv图像灰度重心算法

    原文 http blog csdn net moses1213 article details 44679603 导师交给的项目 其中一步就是求光斑的重心 网上有很多关于重心的代码 大体是利用cvFindContour函数找出图像的轮廓 然
  • 开源项目 xijia-plus 启动教程 (通用后管理系统)

    一 说明 xijia plus 是什么 xijia plus 是一个 通用后管理系统 脚手架 采用 springboot vue 进行开发 可以在该脚手架进行业务的快速开发 xijia plus 可以做什么 如果你想快速开发一个项目 可以用
  • Graphpad Prism9.5.1 安装教程 (含Win/Mac版)

    GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件 它可以将科学图形 综合曲线拟合 非线性回归 可理解的统计数据 数据组织结合在一起 除了最基本的数据统计分析外 还能自动生成统计图 安
  • 【程序员必须要掌握哪些算法】

    一个程序员一生中可能会邂逅各种各样的算法 但总有那么几种 是作为一个程序员一定会遇见且大概率需要掌握的算法 今天就来聊聊这些十分重要的 必抓 算法吧 你可以从以下几个方面进行创作 仅供参考 一 引言 算法作为程序员的核心技能之一 在软件开发
  • 安卓面试之轻松战胜内存优化问题

    熟悉如何内存优化 无疑是安卓工程师进阶的一个必要条件 同时也是面试的重点和难点 面试常见问题 1 如何优化内存 2 如何加载10M大小的图片 3 如何线上监控内存 为什么要优化内存 移动设备中 内存是非常重要的资源 如果内存使用不当 轻则出
  • 利用短时傅里叶变换(STFT)对信号进行时频谱分析和去噪声

    利用短时傅里叶变换 STFT 对信号进行时频谱分析和去噪声 1 背景 傅里叶变换 TF 对频谱的描绘是 全局性 的 不能反映时间维度局部区域上的特征 人们虽然从傅立叶变换能清楚地看到一整段信号包含的每一个频率的分量值 但很难看出对应于频率域
  • 基于Spring Gateway路由判断器实现各种灰度发布场景

    文章目录 1 灰度发布实现 1 1 按随机用户的流量百分比实现灰度 1 2 按人群划分实现的灰度 1 2 1 通过Header信息实现灰度 1 2 2 通过Query信息实现灰度 1 2 3 通过RemoteAdd判断来源IP实现灰度 2
  • django中models field详解

    本文参考自 django官方文档models field 在model中添加字段的格式一般为 field name field type field options 一 field options 所有字段共用 1 null 默认为Fals