Django企业开发读书笔记(及官方文档学习笔记) 老男孩2019Go语言视频学习
目标:深入理解Django以及web开发深入知识,掌握Gin ,Go micro 框架 ,Kafka ,Zookeeper 为kubernetes Istio 做微服务,服务网格做铺垫 实现Python + Golang + Vue + Bootstrap + 还可以加上fabric提供区块链的服务
Go语言的核心特性:天生为多核心准备,比如8核cpu写一个Go程序自动会跑满,而且写起来十分简单,但是如果像Redis(单核单线程)要跑满8核cpu则需要写8个程序
Go语言的应用领域:
服务端开发:日志处理系统,文件系统,监控服务
容器虚拟化:Docker Kubernetes
分布式存储:etcd(代替zookeeper)TiDB Groupcache
web开发:net/http(核心内置包,就是前面不挂Nginx并发都很高) Gin go micro
区块链:以太坊 fabric
学习知识和学习技能区别:技能需要实践和时间需要多加练习
ORM在线工具:editor.ponyorm
百度脑图
Django企业开发之旅
- HTTP封装
- ORM
- admin后台管理
- Form
- template
- session和cookie
- 权限
- 认证
- 限流
- rest
- 安全
- cache
- logging
- sitemap
- RSS
- 国际化
- 第三方如邮件短信服务
- 监控
- 部署
- 前端框架的集成
选择Flask到最后也需要拼装起来成Django,还不如整体的Django厉害,后来服务拆分才不用flask,tornado呢,用Gin
官网教程: https://www.djangoproject.com
Django 第三方插件: https://djangopackages.org/
基于 Django 的网站 :https://www.djangosites.org/
Python模块:https://pypi.org/
Model:
- meta设置
- ORM有限制,自定义查询
- 事务操作
- makemigrations migrate
- 如何自定义manager(objects)可以用原生SQL
- 历史遗留数据库
View
- 静态文件的处理,404页面的处理
- template
- 上传文件
- CBV
- 把数据导出CSV或PDF
- 中间件
Template
- 基本语法
- Vue集成
Form
- 把Form和Model的Field集成
Settings
- 很多配置插件化
Applications
- 第三方的插件安装
Exceptions
- 异常处理
Manage.py
- 用法
Testing
- 单元测试
Deployment
- Nginx+uwsgi
Admin
- Xadmin
Security
- CSRF
- XSS
- SQL注入
- 事务
国际化
- 汉语的支持
性能优化
Tools
- 用户系统
- 权限系统
- 认证
- 限流
- 缓存
- 日志
- 邮件发送
- RSS
- 分页
- 消息处理
- 序列化
- session
- 静态文件的第三方配置
- 数据校验
Others
- 略
实战
1.python(windows)的大坑:windows下带中文路径创建虚拟环境,pip后不是安装在虚拟环境里面的(醉了)但是在pycharm里面进行开发settings里面却是虚拟环境,需要自己在上面进行图形化install了
2.https://blog.51cto.com/somethingshare/2381237 虚拟环境的一些其他插件实用技巧
3.pycharm可以手动进行选择版本,舒服了
4.verbose_name=“电话” 在models里面每个都有一个这个字段进行注释
5. SEX_ITEM = [
(1, “男”),
(2, “女”),
(3, “未知”),
]
sex = models.IntegerField(choices=SEX_ITEM, verbose_name=“性别”)
可以进行选择有个chioces的字段
5.通常, INSTALLED_APPS 默认包括了以下 Django 的自带应用:
- django.contrib.admin – 管理员站点, 你很快就会使用它。
- django.contrib.auth – 认证授权系统。
- django.contrib.contenttypes – 内容类型框架。
- django.contrib.sessions – 会话框架。
- django.contrib.messages – 消息框架。
- django.contrib.staticfiles – 管理静态文件的框架。
6.在自定义404错误页面时遇到的问题
DEBUG = False
ALLOWED_HOSTS = [“localhost”] # 如果开启DEBUG = False 必须设置可以访问的对象
settings里面的配置
7.在服务器环境下,要通知WSGI应用当前使用的是哪个配置文件,用到 os.environ:
import osos.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
WSGI的配置 告诉他是这个下面的settings文件呀
import osfrom django.core.wsgi import get_wsgi_applicationos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chayeproject.settings')application = get_wsgi_application()
8.在无需配置的情况下,Django配置文件没必要定义任何配置项。因为每个配置项都有一个明确的默认值。默认值都保存在模块 django/conf/global_settings.py 中
9.在 Python 代码中使用 settings,在具体的Django应用中, 通过引入 django.conf.settings 使用配置, 例:
from django.conf import settingsif settings.DEBUG:
10.不建议在运行时更改设置. 比如, 不要在view中这样用:
from django.conf import settingssettings.DEBUG = True # Don't do this!
11.由于配置文件包含敏感信息, 比如数据库密码, 所以应该限制对配置文件的访问. 比如更改文件权限, 从而只能令你和你的WEB服务器能读取配置文件. 这在共享主机的环境中非常重要!
思考:在linux上只有root身份可以打开settings文件
其余的普通用户只是可读
放业务的服务器不会暴露在公网上,前面挂个Nginx给带进来
12.在应用中创建自己的配置文件很简单,只要遵循以下的规范:
- 所有配置项名称都应大写
- 不要重新设置已存在的配置项
13.由于配置文件是序列化的,Django 使用列表,但仅是约定俗成
14.某些场合中, 你想绕过 DJANGO_SETTINGS_MODULE 环境变量来进行配置。比如,你正在使用 Django 自带的模板系统,而你并不想使用环境变量指定某个具体的配置文件。
在这种情况下,可以手动设定 Django 的配置项。要用到下面这个方法:
from django.conf import settingssettings.configure(DEBUG=True)
通过 configure() 可以设置任何配置项,每个参数对应一个值。参数名称必须大写,而且参数名必须是真实存在。没有在 configure() 中出现的设置项在随后用到时,仍会使用默认值。
15.如果你并不想使用整个框架,仅仅是其中一小部分时,如上述这般配置 Django 是非常必要的。事实上,我们建议您这样做
16.因此,通过 settings.configure() 配置 Django 时,并不会对当前进程的环境变量做任何修改。(可以查看 TIME_ZONE 了解为什么要这么做)。这意味着在上述情况下你仍然完全掌控着当前环境。
17.在下面这个例子中,由 myapp_defaults 提供默认值,并令 DEBUG 被置为 True 而不是从 myapp_defaults 中获取:
from django.conf import settings
from myapp import myapp_defaultssettings.configure(default_settings=myapp_defaults, DEBUG=True)
接下来例子使用 myapp_defaults 做为一个位置参数,这和上面的效果是等同的:
settings.configure(myapp_defaults, DEBUG=True)
18.一般来说,没必要自行设置默认值。Django 的默认设置是比较宽松的,你可以放心地使用。要注意的是,如果你传入了新的默认模块,那它就会完全 替换 Django 本身的默认设置。因此,你必须为接下来可能会用到的所有设置项都重新指定默认值。查看 django.conf.global_settings 了解全部默认值。
import django.conf.global_settings
19.configure() 或 DJANGO_SETTINGS_MODULE 二者必用其一,都不用也不行,都用也不行
20.如果你使用了“独立” Django 的组件——比如,编写一个 Python 脚本,它加载了一些 Django 模板并渲染了它们,或使用 ORM 获取数据——你需要额外的配置一下设置文件。
在你已经配置 DJANGO_SETTINGS_MODULE 或调用 configure() 后,你需要调用 django.setup() 来加载你的设置,并填写的 Django 的应用注册表。例子:
import django
from django.conf import settings
import myapp_defaultsettings.configure(default_settings=myapp_default, DEBUG=True)
django.setup()# Now this script or any imported module can use any part of Django it needs.
注意,仅在你的代码是真的独立的情况下调用 django.setup()。当被你的 Web 服务器调用时,或通过 django-admin 调用,Django 会帮你处理这些。
21.django.setup() 只需调用一次。
因此,避免将可服用的应用逻辑代码放入独立脚本中。是故,你必须在你的应用中从此脚本中导入。若你无法避免这样做,将 django.setup() 调用至于 if 块内:
if __name__ == '__main__':import djangodjango.setup()
22.我们认为我们的的模板引擎是最好的,但是我们意识到选择一个模板语言和信仰宗教相似。Django 没有什么必须的模板语言,如果你愿意使用 Jinja2、Mako 或其他的,请随意使用。
23.如果你使用其他的数据库库,你没办法使用 Django 自动生成的后台界面。这个应用是和 Django 数据库层耦合的。
24.django.db.models.fields 一切秘密都在fields里面
25.在你需要一个自定义字段时,只需创建两个类:
- 第一个类是用户需要操作的 Python 对象。它们会复制给模型属性,它们会为了显示而读取属性,就想这样。这里本例中的 Hand 类。
- 第二类是 Field 的子类。这个类知道如何在永久存储格式和 Python 格式之间来回转换。
26.重写Field模块
# This is a much more flexible example.
class BetterCharField(models.Field):def __init__(self, max_length, *args, **kwargs):self.max_length = max_lengthsuper().__init__(*args, **kwargs)def db_type(self, connection):return 'char(%s)' % self.max_length# In the model:
class MyModel(models.Model):# ...my_field = BetterCharField(25)
27.要查看超多的例子,查阅 Django 默认的 filters 和 tags 源码。它们分别位于 django/template/defaultfilters.py 和 django/template/defaulttags.py
28.永远不要在生产环境打开 debug 开关。
开发时,你当然要配置 DEBUG = True,这将方便你在浏览器启用完全回溯功能。
29.不过,对于生产环境来说,这真是一个坏主意,因为这会泄露很多超出预期的信息:代码摘要,本地变量,配置项,使用的库,等等。
30.生产环境与开发环境的数据库连接参数可能是不同的。
数据库密码是机密的。你应该像保护 SECRET_KEY 那样保护它们。
为了最大限度的安全,确保数据库只为来自你应用的连接提供服务。
如果你还未为数据库设置备份,现在就做!
31.部署静态文件rsync
32.ALLOWED_HOSTS 默认值:( [])
表示此Django站点可以提供的主机/域名的字符串列表。这是一种防止HTTP主机头攻击的安全措施,即使在许多看似安全的Web服务器配置下也是如此。
33.此列表中的值可以是完全限定名称(例如’www.example.com’)
34.当DEBUGis True和ALLOWED_HOSTS为空时,将验证主机。[‘localhost’, ‘127.0.0.1’, ‘[::1]’]
35.ENGINE
默认值:( ''空字符串)
要使用的数据库后端。内置的数据库后端是:
‘django.db.backends.postgresql’
‘django.db.backends.mysql’
‘django.db.backends.sqlite3’
‘django.db.backends.oracle’
您可以通过设置ENGINE为完全限定的路径(即mypackage.backends.whatever)来使用Django未附带的数据库后端 。
36.EMAIL_BACKEND
默认: ‘django.core.mail.backends.smtp.EmailBackend’
37.EMAIL_HOST
默认: ‘localhost’
38.EMAIL_PORT¶
默认: 25
39.TEMPLATES
默认值:( []清单)
包含与Django一起使用的所有模板引擎的设置的列表。列表中的每个项目都是包含单个引擎选项的字典。
这是一个简单的设置,告诉Django模板引擎从templates每个已安装的应用程序内的子目录加载模板:
TEMPLATES = [
{
‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’,
‘APP_DIRS’: True,
},
]
以下选项适用于所有后端。
BACKEND
默认值:未定义
要使用的模板后端。内置模板后端是:
‘django.template.backends.django.DjangoTemplates’
‘django.template.backends.jinja2.Jinja2’
您可以通过设置BACKEND为完全限定的路径(即’mypackage.whatever.Backend’)来使用Django未附带的模板后端 。
40.核心设置
- 缓存
CACHES
CACHE_MIDDLEWARE_ALIAS
CACHE_MIDDLEWARE_KEY_PREFIX
CACHE_MIDDLEWARE_SECONDS - 数据库
DATABASES
DATABASE_ROUTERS
DEFAULT_INDEX_TABLESPACE
DEFAULT_TABLESPACE - 调试
DEBUG
DEBUG_PROPAGATE_EXCEPTIONS - 电子邮件
ADMINS
DEFAULT_CHARSET
DEFAULT_FROM_EMAIL
EMAIL_BACKEND
EMAIL_FILE_PATH
EMAIL_HOST
EMAIL_HOST_PASSWORD
EMAIL_HOST_USER
EMAIL_PORT
EMAIL_SSL_CERTFILE
EMAIL_SSL_KEYFILE
EMAIL_SUBJECT_PREFIX
EMAIL_TIMEOUT
EMAIL_USE_LOCALTIME
EMAIL_USE_TLS
MANAGERS
SERVER_EMAIL - 错误发送
DEFAULT_EXCEPTION_REPORTER_FILTER
IGNORABLE_404_URLS
MANAGERS
SILENCED_SYSTEM_CHECKS - 文件上传
DEFAULT_FILE_STORAGE
FILE_UPLOAD_HANDLERS
FILE_UPLOAD_MAX_MEMORY_SIZE
FILE_UPLOAD_PERMISSIONS
FILE_UPLOAD_TEMP_DIR
MEDIA_ROOT
MEDIA_URL - 表单
FORM_RENDERER - 全球化(i18n/ l10n)
DATE_FORMAT
DATE_INPUT_FORMATS
DATETIME_FORMAT
DATETIME_INPUT_FORMATS
DECIMAL_SEPARATOR
FIRST_DAY_OF_WEEK
FORMAT_MODULE_PATH
LANGUAGE_CODE
LANGUAGE_COOKIE_AGE
LANGUAGE_COOKIE_DOMAIN
LANGUAGE_COOKIE_NAME
LANGUAGE_COOKIE_PATH
LANGUAGES
LANGUAGES_BIDI
LOCALE_PATHS
MONTH_DAY_FORMAT
NUMBER_GROUPING
SHORT_DATE_FORMAT
SHORT_DATETIME_FORMAT
THOUSAND_SEPARATOR
TIME_FORMAT
TIME_INPUT_FORMATS
TIME_ZONE
USE_I18N
USE_L10N
USE_THOUSAND_SEPARATOR
USE_TZ
YEAR_MONTH_FORMAT
HTTP
DATA_UPLOAD_MAX_MEMORY_SIZE
DATA_UPLOAD_MAX_NUMBER_FIELDS
DEFAULT_CHARSET
DEFAULT_CONTENT_TYPE
DISALLOWED_USER_AGENTS
FORCE_SCRIPT_NAME
INTERNAL_IPS
MIDDLEWARE - 安全
SECURE_BROWSER_XSS_FILTER
SECURE_CONTENT_TYPE_NOSNIFF
SECURE_HSTS_INCLUDE_SUBDOMAINS
SECURE_HSTS_PRELOAD
SECURE_HSTS_SECONDS
SECURE_PROXY_SSL_HEADER
SECURE_REDIRECT_EXEMPT
SECURE_SSL_HOST
SECURE_SSL_REDIRECT
SIGNING_BACKEND
USE_X_FORWARDED_HOST
USE_X_FORWARDED_PORT
WSGI_APPLICATION - 记录
LOGGING
LOGGING_CONFIG - 模型
ABSOLUTE_URL_OVERRIDES
FIXTURE_DIRS
INSTALLED_APPS - 安全跨站点请求伪造保护
CSRF_COOKIE_DOMAIN
CSRF_COOKIE_NAME
CSRF_COOKIE_PATH
CSRF_COOKIE_SAMESITE
CSRF_COOKIE_SECURE
CSRF_FAILURE_VIEW
CSRF_HEADER_NAME
CSRF_TRUSTED_ORIGINS
CSRF_USE_SESSIONS
SECRET_KEY
X_FRAME_OPTIONS - 序列化
DEFAULT_CHARSET
SERIALIZATION_MODULES - 模板
TEMPLATES - 数据库:
TEST
TEST_NON_SERIALIZED_APPS
TEST_RUNNER - 网址
APPEND_SLASH
PREPEND_WWW
ROOT_URLCONF
41.由于静态文件服务器并不运行 Django,你需要将部署策略改成这样:
当静态文件改变时,本地运行 collectstatic。
将本地 STATIC_ROOT 推送到静态文件服务器提供服务的目录。 rsync 是一个常见选项,因为这种配置只会传输文件修改部分的数据流。
42.从云服务或 CDN 提供静态文件服务
另一种常见的策略是从类似亚马逊 S3 的云存储服务商或 CDN (content delivery network) 提供静态文件服务。这能让你忽略提供静态文件服务可能出现的问题,提供 Web 页面加载速度(尤其是在用 CDN 的时候)。
使用这些服务时,基本的工作流程与上面类似,除了要将静态文件传输给存储服务商或 CDN,而不是用 rsync 将静态文件传输给服务器。
有很多中方法可以实现目的,但是若服务商提供一个 API 自定义文件存储后端,这将会使流程难以置信的简单。若你已编写或正在使用第三方的自定义存储后端,你可以通过将 STATICFILES_STORAGE 指向该存储引擎告诉 collectstatic 启用它。
例如,若你已在 myproject.storage.S3Storage 中写了一个 S3 存储后端,可以这么用:
STATICFILES_STORAGE = 'myproject.storage.S3Storage'
只要完成了上述流程,你就只需运行 collectstatic,静态文件将通过存储包推送给 S3。如果稍后需要切换至另一个存储服务商,只需简单地修改 STATICFILES_STORAGE 配置。
43.https://djangopackages.org/grids/g/storage-backends/ 自定义存储的后端
file:///C:/Users/10430/Desktop/django2.2.x/howto/custom-file-storage.html 编写一个自定义存储系统
44.更新django
pip install -U Django
45.默认情况下, Django 会给每一个模型添加下面的字段:
id = models.AutoField(primary_key=True)
如果你想自己指定主键, 在你想要设置为主键的字段上设置参数 primary_key=True。如果 Django 看到你显式地设置了 Field.primary_key,将不会自动在表(模型)中添加 id 列。
46.除了 ForeignKey, ManyToManyField 和 OneToOneField,任何字段类型都接收一个可选的位置参数 verbose_name,如果未指定该参数值, Django 会自动使用字段的属性名作为该参数值,并且把下划线转换为空格。
47.blank字段 表单的字段 如果blank=TRUE代表可以为空 False:不可以为空
48.要获取该字段二元组中相对应的第二个值,使用 get_FOO_display() 方法
from django.db import modelsclass Person(models.Model):SHIRT_SIZES = (('S', 'Small'),('M', 'Medium'),('L', 'Large'),)name = models.CharField(max_length=60)shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)
>>> p = Person(name="Fred Flintstone", shirt_size="L")
>>> p.save()
>>> p.shirt_size
'L'
>>> p.get_shirt_size_display()
'Large'
49.列出字段的值的列表
from django.db import modelsclass Fruit(models.Model):name = models.CharField(max_length=100, primary_key=True)
>>> fruit = Fruit.objects.create(name='Apple')
>>> fruit.name = 'Pear'
>>> fruit.save()
>>> Fruit.objects.values_list('name', flat=True)
<QuerySet ['Apple', 'Pear']>
50.更新 ManyToManyField 字段有点不同——在字段上使用 add() 方法为关联关系添加一条记录。本例将 Author 实例 joe 添加至 entry 对象:
from blog.models import Author
joe = Author.objects.create(name=“Joe”)
entry.authors.add(joe)
51.http://www.liujiangblog.com/course/django/98 Django中 manytomany用法
你真的理解Python和Django了吗
1.Python基础
- 基础语法是否熟悉?介绍下。
- 有哪些关键字,并且解释其作用?
- 有哪些内置方法,并且解释其作用?
- 解释下什么是动态语言?动态强类型是指什么?
- 是否有编码规范的概念?采用的是哪中编码规范?
- 解释下深拷贝和浅拷贝
- lambda的用法以及使用场景?
- 解释下什么是闭包,以及它的作用?
- 实现一个简单的装饰器,用来对某个函数的结果进行缓存?
- Python中几种容器类型的差别及使用场景?
- 列表推导式的使用和场景?
- yield的使用。
- 常用的内置库有哪些?举例他们的用法。
- 介绍下你了解的"dunder method"(魔法方法)有哪些,以及他们的作用?
- 解释下面向对象的概念,以及在编程中的作用?
- 如何实现单例模式?
- 如何对Python对象进行序列化?
- 是否能够熟练编写多线程和多进程程序?
- 使用socket编写一个简单的HTTP Server,成功返回success即可。
- 如何理解Python中的GIL?对我们日常开发有什么影响?
- 解释下协程、线程、进程之间的差别。
2. Django基础
- 整体结构
- 如何理解设计模式中的MVC模式,你日常中怎么使用这种模式?
- 如何理解Django中的MTV模型?
- 介绍下Django中你熟悉的模块有哪些,分别作用是什么?
- 如何看待Django自带的Admin,以及说说你的使用经验。
- 如何理解WSGI的作用?
- 如何自己实现WSGI协议?
- 为什么正式部署时不要开启DEBUG = True配置?
Model层
- 如何理解Django Migrations的作用?
- 是否有过手动编辑Migrations文件的经历,原因是什么,有哪些需要注意的?
- 介绍下ORM的概念。
- 如何理解ORM在Django框架中的作用?
- 介绍下ORM下的N+1问题,发生的原因,以及解决方案。
- 介绍下Django中Model的作用。
- Model的Meta属性类有哪些可配置项,作用是什么,日常用到的。
- 介绍下QuerySet的作用,以及你常用的QuerySet优化措施?
- 介绍下Pagination的使用。
- 介绍下Model中Field的作用。
- 如何定制Manager?什么场景下需要定制?
- Raw SQL的效率跟ORM的效率是否进行过对比,结果如何?如何理解这种差异?
- Django内置提供的权限逻辑是什么,以及其粒度?
View层
- Django中function view和Class-based View的差别及适用场景?
- 如何给Class-based View添加login required装饰器?
- Middleware在Django系统中的作用?
- settings中默认配置的MIDDLEWARES有哪些?他们的作用分别是什么?是否可以移除?
- Django系统如何判断用户是否为登录用户?
- 对于无Cookie的浏览器如何实现用户登录?
- Django中的request和HttpResponse的作用是什么?
- 如何处理图片上传的逻辑,以及展示逻辑?
- 介绍下用到过的Django的缓存粒度。
Form层
- 介绍下Django中Form的作用。
- Form中的Field跟Model中的Field有何关联?
- 如何在Form层实现对某个字段的校验?
Template层
- 如何理解Django模板对设计师友好的说法?
- 日常开发中如何规划Django的模板继承和include?
- 常用的标签(tag)和过滤器(filter)有哪些?
- 在模板中如何处理静态文件?
- 在模板中如何处理系统内定义的URL?
- 如何自定义标签和过滤器?
3. Django进阶
- 如何排查Django项目的性能问题?
- 如何部署Django项目,以及不同的部署方式之间的差别?
- 部署时如何处理项目中的静态文件?
- 如何实现自定义的登录认证逻辑?
- 如何理解Django中Model、Form、ModelForm和Field、Widgets之间的关系?
- Paginator的原理是什么,如何自己实现分页逻辑?
- Model中Field的作用是什么?
- 什么是SQL注入,ORM又是如何解决这个问题的?
- CSRF全称是什么?Django是如何解决这个问题的?
- XSS攻击是指什么,在开发时应该如何避免这种攻击?
- Signal的作用以及实现逻辑?
- DATABASE配置中的CONN_MAX_AGE参数的作用,以及使用场景?
- CONN_MAX_AGE的实现逻辑是什么?
- 用Django内置的User模型创建用户时是否可以直接:User(username=‘the5fire’, password=‘the5fire’).save()?
- 上面的创建方式有什么问题?应该如何处理用户密码?
- 使用Django-rest-framework如何实现用户认证登录逻辑?
- Session模块在Django中的作用是什么?
- 如何自定义Django中的权限粒度,实现自己的权限逻辑?
- 如何捕获线上系统的异常?
- 如何分析某个接口响应时间过长的问题,假设响应时间为2秒,一次请求涉及到数据库和缓存查询。
4. 部署相关
- 如何来自动化部署项目到生产环境,具体流程?
- 介绍下常用的自动化部署工具?
- 用到哪些监控工具,作用是什么,使用中有什么不足之处?
- Supervisor的作用是什么?为何使用它?
- Gunicorn的作用是什么?为何使用它?
- 如何对系统进行压测?以及流量预估?
- Nginx的作用是什么?是否能独立配置?有没有优化经验?
- 发版逻辑是什么,如何保证新版本发生异常时能快速回滚?
5. MySQL数据库
- 如何确定需要哪些字段需要设置索引?
- 什么情况下需要设定字段属性为unique = True?
- 如何排查某个SQL语句的索引命中情况?
- 如何排查查询过慢的SQL语句?
6. Redis
- 你了解的Redis的特点是什么?为什么会使用它?
- 支持的数据类型
- 如何合理的规划key?
- 比如我需要把所有的文章和分类数据写入Redis,在Django中直接读取Redis拿到分类和文章的数据,问怎么规 划数据存储,如何处理分页?
- 是否支持事务?举个例子。
- 有哪些数据淘汰策略?
- 当你发现有些Redis查询响应时间太长,如何排查?可能是什么引起的?
- 你用到的或者了解的Redis的部署结构是什么?
- 是否了解Redis的持久化策略,不同的策略有什么不同?
- 说说你了解的Redis主从同步的策略。
7. 常用算法
- Python中字典类型的实现算法?
- 你了解的高级语言中的垃圾回收机制有哪些?Python中用的是什么?
- 介绍下你知道的缓存相关的算法?
- 介绍下你知道的负载均衡相关的算法?
- 介绍下数据库索引相关算法?
Django企业开发读书笔记(及官方文档学习笔记) 老男孩2019Go语言视频学习相关推荐
- Django安装教程——4.0(官方文档版)
Django安装教程--4.0(官方文档版) Django安装教程--4.0(官方文档版) 概要 对Django的认识 应用数据模型 使用PythonAPI 一个动态管理接口 规划URLs 编写视图 ...
- Javassist 官方文档 随手笔记
Javassist 官方文档 随手笔记 Javassist.CtClass Class search path Introspection and customization \$0, \$1, \$ ...
- Qt官方文档阅读笔记-对官方Star Delegate Example实例的解析
对应的博文为: 目录 Star Delegate Example StarDelegate Class Definition StarDelegate Class Implementation Sta ...
- python笔记6-python官方文档之format()格式化详解
字符串格式化之format() 字符串的格式化是特别特别重要的一个知识点,自己将通过python官方文档来具体总结学习它,整体为如下一篇笔记文章,以备自己后来复习回顾. 一.format() ...
- Jinja2学习笔记暨官方文档的翻译 -- 转载
为什么80%的码农都做不了架构师?>>> 呵呵, 刚刚看完Python模板引擎Jinja2的文档, 感觉很好, 觉得动态语言真是很好. 模板引擎竟然可以做的如此灵活....真 ...
- Flume官方文档阅读笔记及实际操作
欢迎来到Apache Flume Flume是一个分布式的,高可靠的,高可用的,高性能的海量日志数据采集.聚合和传输的系统.它是基于数据流的简单的灵活的架构.它具有高鲁棒性并且有着可调节的可靠的故障恢 ...
- spring官方文档阅读笔记
前言 几个月前阅读spring文档时做的笔记,记录了以写我认为重要的内容. IOC container IOC(Inverse of Control) 控制反转,也称为DI(Dependency In ...
- [WebApp开发]基础教程-Google官方文档-第四篇
文档内容 在Android Browser中使用控制台API 在WebView中使用控制台API 参考 调试 如果你是在为Android开发web应用,那么,你可以使用控制台(console)的Jav ...
- Qt官方文档阅读笔记-QStyledItemDelegate Class描述
对应的原文为: 笔记如下: 简单描述: QStyledItemDelegate提供了展示和编辑item的功能,让这两种功能更有个性化.QStyledItemDelegate是所有Item View的默 ...
最新文章
- 【Linux】使用xshell登陆时密码框为灰色,无法输入密码
- eclipse 快捷键_eclipse两种注释的快捷键
- iOS开发之图片分辨率与像素对齐
- ​模型优化漫谈:BERT的初始标准差为什么是0.02?
- 找到数组中第k小的值(利用快排的划分函数)
- Spring cloud集成Rabbitmq
- 360浏览器如何进行皮肤更换
- 三子棋の胜负判断(洛谷P1838题题解,Java语言描述)
- [zt]OJ常见的Judge Status
- linux挂载磁盘没有权限,linux肿么知道哪个盘没有被挂载
- 【批处理DOS-CMD命令-汇总和小结】-输出/显示命令——echo
- w3school学习笔记2(MySQL)
- 小米手机无限重启怎么办?
- python数据可视化学习之随机漫步
- 跨境爆款ANC主动降噪耳机,蓝牙耳机厂家分享产品详细参数
- python的手机官方下载地址,手机python下载安装教程
- 静听网+python爬虫+多线程+多进程+构建IP代理池
- 一米OA任意文件读取漏洞
- 关于dll注入方式的学习(全局钩子注入)
- 关于对技术群中群友积极参与问答的一点看法
热门文章
- mysql的count函数统计错误问题
- 如何科学地利用高光谱图像合成真彩色RGB图像?
- 基于自主数字身份的个人数据区块链托管破解征信“断直连”困局
- Gitee崩了?大量仓库被关闭,官方答复“迫于无奈”
- 基于SSM个人财务|记账|账单收入支出统计管理系统
- 视频流分片后的ts片,H265压缩(二)实例
- 图像处理中几何畸变校正,图像纠正的方法有哪些
- 无法启动计算机怎么办,电脑无法启动怎么办?附4种解决方法
- python主要讲什么意思_python:苗先生从影评上说了什么?,中,看妙,讲,啥
- 上美集团三战IPO,“韩束们”老了?