note

  1. 知识点概要
  2. - Session
  3. - CSRF
  4. - Model操作
  5. - Form验证(ModelForm
  6. - 中间件
  7. - 缓存
  8. - 信号
  9. 内容详细:
  10. 1. Session
  11. 基于Cookie做用户验证时:敏感信息不适合放在cookie
  12. a. Session原理
  13. Cookie是保存在用户浏览器端的键值对
  14. Session是保存在服务器端的键值对
  15. b. CookieSession对比
  16. c. Session配置(缺少cache)
  17. d. 示例:实现两周自动登陆
  18. - request.session.set_expiry(60*10)
  19. - SESSION_SAVE_EVERY_REQUEST = True
  20. PS: cookie中不设置超时时间,则表示关闭浏览器自动清除
  21. - session依赖于cookie
  22. - 服务器session
  23. request.session.get()
  24. request.session[x] = x
  25. request.session.clear()
  26. - 配置文件中设置默认操作(通用配置):
  27. SESSION_COOKIE_NAME "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
  28. SESSION_COOKIE_PATH "/" # Session的cookie保存的路径(默认)
  29. SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
  30. SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
  31. SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
  32. SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
  33. SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认)
  34. # set_cookie('k',123)
  35. SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)
  36. - 引擎的配置
  37. 2. CSRF
  38. a. CSRF原理
  39. b. CSRF时存在隐患
  40. c. Form提交(CSRF
  41. d. Ajax提交(CSRF
  42. CSRF请求头 X-CSRFToken
  43. 6. 中间件
  44. 7. 缓存
  45. 5种配置
  46. 3种应用:
  47. 全局 #a. 全站使用
  48. 视图函数 #b. 单独视图缓存
  49. 模板 #c、局部视图使用
  50. 8. 信号 http://www.cnblogs.com/wupeiqi/articles/5246483.html
  51. - 内置信号
  52. - 自定义
  53. - 定义信号
  54. - 触发信号
  55. - 信号中注册函数
  56. 3. Model操作
  57. a. 字段类型 + 参数
  58. b. 连表字段 + 参数
  59. c. Meta
  60. d. SQL操作:
  61. - 基本增删改查
  62. - 进阶操作
  63. - 正反查询
  64. - 其他操作
  65. e. 验证(弱)
  66. 4. Form操作 http://www.cnblogs.com/wupeiqi/articles/6144178.html
  67. 完成:
  68. - 验证用户请求
  69. - 生成HTML
  70. (保留上一次提交的数据)
  71. 自定义:
  72. -
  73. - 字段(校验)
  74. - 插件(生成HTML
  75. 初始化操作: bj = FM(initial=dic)
  76. ============= 作业:xxxoo管理 =============
  77. 用户验证:session
  78. URLForm验证
  79. 中间件:IP过滤
  80. 信号:记录操作
  81. CSRF
  82. a. Form验证用户请求
  83. b. Form生成HTML
  84. c. Form字段详细(自定义字段,Model...) + 插件
  85. d. 自定义验证(钩子以及__all__)
  86. e. 注册示例:
  87. 用户名、密码、邮箱、手机号(RegexValidatorRegexField)、性别、爱好、城市
  88. f. 初始化值
  89. 5. ModelForm
  90. a. Model+Form功能集合
  91. b. save
  92. c. save + save_m2m
session

  1. def index(request):
  2. # 获取、设置、删除Session中数据
  3. request.session['k1']
  4. request.session.get('k1',None)
  5. request.session['k1'] = 123
  6. request.session.setdefault('k1',123) # 存在则不设置
  7. del request.session['k1']
  8. request.session.clear()
  9. request.session.delete(request.session.session_key)
  10.  
  11. # 所有 键、值、键值对
  12. request.session.keys()
  13. request.session.values()
  14. request.session.items()
  15. request.session.iterkeys()
  16. request.session.itervalues()
  17. request.session.iteritems()
  18.  
  19. # 用户session的随机字符串
  20. request.session.session_key
  21.  
  22. # 将所有Session失效日期小于当前日期的数据删除
  23. request.session.clear_expired()
  24.  
  25. # 检查 用户session的随机字符串 在数据库中是否
  26. request.session.exists("session_key")
  27.  
  28. # 删除当前用户的所有Session数据
  29. request.session.delete("session_key")
  30.  
  31. request.session.set_expiry(value)
  32. * 如果value是个整数,session会在些秒数后失效。
  33. * 如果value是个datatimetimedeltasession就会在这个时间后失效。
  34. * 如果value0,用户关闭浏览器session就会失效。
  35. * 如果valueNone,session会依赖全局session失效策略
  36.  
  37. SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认)
  38.  
  39. SESSION_COOKIE_NAME "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
  40. SESSION_COOKIE_PATH "/" # Session的cookie保存的路径(默认)
  41. SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
  42. SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
  43. SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
  44. SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
  45. SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认)
  46. SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)

mdoels

  1. from django.db import models
  2. # Create your models here.
  3. class UserInf(models.Model):
  4. user = models.CharField(max_length=32)
views

  1. from django.shortcuts import render,redirect,HttpResponse
  2. def login(request):
  3. # from django.conf import settings
  4. # print(settings.CSRF_HEADER_NAME)
  5. # HTTP_X_CSRFTOKEN
  6. # X-CSRFtoken
  7. if request.method == "GET":
  8. return render(request,'login.html')
  9. elif request.method == "POST":
  10. user = request.POST.get('user')
  11. pwd = request.POST.get('pwd')
  12. if user == 'root' and pwd == "":
  13. # session中设置值
  14. request.session['username'] = user #1.生成随机字符串 2.写到用户浏览器cookie 3.保存到session中 4.在随机字符串对应的字典中设置相关内容
  15. request.session['is_login'] = True
  16. if request.POST.get('rmb',None) == '':
  17. # 超时时间
  18. request.session.set_expiry(10)
  19. return redirect('/index/')
  20. else:
  21. return render(request,'login.html')
  22. from django.views.decorators.csrf import csrf_exempt,csrf_protect
  23. @csrf_protect
  24. def index(request):
  25. # session中获取值,获取当前用户的随机字符串,根据随机字符串获取对应信息
  26. if request.session.get('is_login',None):
  27. return render(request,'index.html',{'username': request.session['username']})
  28. else:
  29. return HttpResponse('gun')
  30. def logout(request):
  31. # del request.session['username']
  32. request.session.clear()
  33. return redirect('/login/')
  34. class Foo:
  35. def __init__(self,req,html,dic):
  36. self.req = req
  37. self.html = html
  38. self.dic = dic
  39. def render(self):
  40. # // 创建钩子
  41. return render(self.req,self.html,self.dic)
  42. def test(request,nid):
  43. print('小姨妈-->没带钱')
  44. # return render(request, 'index.html', {...})
  45. return Foo(request, 'index.html', {'k1': 'v1'})
  46. from django.views.decorators.cache import cache_page
  47. @cache_page(10) #10秒失效,优先级比300秒高
  48. def cache(request):
  49. import time
  50. ctime = time.time()
  51. return render(request, 'cache.html', {'ctime': ctime})
  52. def signal(reuqest):
  53. from app01 import models
  54. obj = models.UserInf(user='root')
  55. print('end')
  56. obj.save()
  57. obj = models.UserInf(user='root')
  58. obj.save()
  59. obj = models.UserInf(user='root')
  60. obj.save()
  61. from sg import pizza_done
  62. pizza_done.send(sender="asdfasdf",toppings=123, size=456)
  63. return HttpResponse('ok')
  64. ######################## Form #####################
  65. from django import forms
  66. from django.forms import widgets
  67. from django.forms import fields
  68. class FM(forms.Form):
  69. # 字段本身只做验证
  70. user = fields.CharField(
  71. error_messages={'required': '用户名不能为空.'},
  72. widget=widgets.Textarea(attrs={'class': 'c1'}),
  73. label="用户名",
  74. )
  75. pwd = fields.CharField(
  76. max_length=12,
  77. min_length=6,
  78. error_messages={'required': '密码不能为空.', 'min_length': '密码长度不能小于6', "max_length": '密码长度不能大于12'},
  79. widget=widgets.PasswordInput(attrs={'class': 'c2'})
  80. )
  81. email = fields.EmailField(error_messages={'required': '邮箱不能为空.','invalid':"邮箱格式错误"})
  82. f = fields.FileField()
  83. # p = fields.FilePathField(path='app01')
  84. city1 = fields.ChoiceField(
  85. choices=[(0,'上海'),(1,'广州'),(2,'东莞')]
  86. )
  87. city2 = fields.MultipleChoiceField(
  88. choices=[(0,'上海'),(1,'广州'),(2,'东莞')]
  89. )
  90. from app01 import models
  91. def fm(request):
  92. if request.method == "GET":
  93. # 从数据库中吧数据获取到
  94. dic = {
  95. "user": 'r1',
  96. 'pwd': '',
  97. 'email': 'sdfsd',
  98. 'city1': 1,
  99. 'city2': [1,2]
  100. }
  101. obj = FM(initial=dic)
  102. return render(request,'fm.html',{'obj': obj})
  103. elif request.method == "POST":
  104. # 获取用户所有数据
  105. # 每条数据请求的验证
  106. # 成功:获取所有的正确的信息
  107. # 失败:显示错误信息
  108. obj = FM(request.POST)
  109. r1 = obj.is_valid()
  110. if r1:
  111. # obj.cleaned_data
  112. models.UserInf.objects.create(**obj.cleaned_data)
  113. else:
  114. # ErrorDict
  115. # print(obj.errors.as_json())
  116. # print(obj.errors['user'][0])
  117. return render(request,'fm.html', {'obj': obj})
  118. return render(request,'fm.html')
m1

  1. from django.utils.deprecation import MiddlewareMixin
  2. class Row1(MiddlewareMixin):
  3. def process_request(self,request):
  4. print('王森')
  5. def process_view(self, request, view_func, view_func_args, view_func_kwargs):
  6. print('张欣彤')
  7. def process_response(self, request, response):
  8. print('扛把子')
  9. return response
  10. from django.shortcuts import HttpResponse
  11. class Row2(MiddlewareMixin):
  12. def process_request(self,request):
  13. print('程毅强')
  14. # return HttpResponse('走')
  15. def process_view(self, request, view_func, view_func_args, view_func_kwargs):
  16. print('张需要')
  17. def process_response(self, request, response):
  18. print('侯雅凡')
  19. return response
  20. class Row3(MiddlewareMixin):
  21. def process_request(self,request):
  22. print('刘东')
  23. def process_view(self, request, view_func, view_func_args, view_func_kwargs):
  24. print('邵林')
  25. def process_response(self, request, response):
  26. print('连之泪')
  27. return response
  28. def process_exception(self, request, exception):
  29. if isinstance(exception,ValueError):
  30. return HttpResponse('出现异常》。。')
  31. def process_template_response(self,request,response):
  32. # 如果Views中的函数返回的对象中,具有render方法
  33. print('-----------------------')
  34. return response
s14day22_init

  1. import pymysql
  2. pymysql.install_as_MySQLdb()
  3. import sg
settings

  1. import os
  2.  
  3. # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
  4. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  5.  
  6. # Quick-start development settings - unsuitable for production
  7. # See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
  8.  
  9. # SECURITY WARNING: keep the secret key used in production secret!
  10. SECRET_KEY = 'm1ueaxz!w8cgj%mx&!ol#14i3fxbco&_!_6eg@k^$_f29%t4&^'
  11.  
  12. # SECURITY WARNING: don't run with debug turned on in production!
  13. DEBUG = True
  14.  
  15. ALLOWED_HOSTS = []
  16.  
  17. # Application definition
  18.  
  19. INSTALLED_APPS = [
  20. 'django.contrib.admin',
  21. 'django.contrib.auth',
  22. 'django.contrib.contenttypes',
  23. 'django.contrib.sessions',
  24. 'django.contrib.messages',
  25. 'django.contrib.staticfiles',
  26. 'app01',
  27. ]
  28. from django.middleware.csrf import CsrfViewMiddleware
  29. from django.middleware.cache import FetchFromCacheMiddleware
  30. from django.middleware.cache import UpdateCacheMiddleware
  31. MIDDLEWARE = [
  32. # 'django.middleware.cache.UpdateCacheMiddleware',
  33. 'django.middleware.security.SecurityMiddleware',
  34. 'django.contrib.sessions.middleware.SessionMiddleware',
  35. 'django.middleware.common.CommonMiddleware',
  36. 'django.middleware.csrf.CsrfViewMiddleware',
  37. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  38. 'django.contrib.messages.middleware.MessageMiddleware',
  39. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  40. # 'Middle.m1.Row1',
  41. # 'Middle.m1.Row2',
  42. # 'Middle.m1.Row3',
  43. # 'django.middleware.cache.FetchFromCacheMiddleware',
  44.  
  45. ]
  46.  
  47. ROOT_URLCONF = 's14day22.urls'
  48.  
  49. TEMPLATES = [
  50. {
  51. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  52. 'DIRS': [os.path.join(BASE_DIR, 'templates')]
  53. ,
  54. 'APP_DIRS': True,
  55. 'OPTIONS': {
  56. 'context_processors': [
  57. 'django.template.context_processors.debug',
  58. 'django.template.context_processors.request',
  59. 'django.contrib.auth.context_processors.auth',
  60. 'django.contrib.messages.context_processors.messages',
  61. ],
  62. },
  63. },
  64. ]
  65.  
  66. WSGI_APPLICATION = 's14day22.wsgi.application'
  67.  
  68. # Database
  69. # https://docs.djangoproject.com/en/1.10/ref/settings/#databases
  70.  
  71. DATABASES = {
  72. 'default': {
  73. 'ENGINE': 'django.db.backends.sqlite3',
  74. 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
  75. }
  76. }
  77.  
  78. # Password validation
  79. # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
  80.  
  81. AUTH_PASSWORD_VALIDATORS = [
  82. {
  83. 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
  84. },
  85. {
  86. 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
  87. },
  88. {
  89. 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
  90. },
  91. {
  92. 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
  93. },
  94. ]
  95.  
  96. # Internationalization
  97. # https://docs.djangoproject.com/en/1.10/topics/i18n/
  98.  
  99. LANGUAGE_CODE = 'en-us'
  100.  
  101. TIME_ZONE = 'UTC'
  102.  
  103. USE_I18N = True
  104.  
  105. USE_L10N = True
  106.  
  107. USE_TZ = True
  108.  
  109. # Static files (CSS, JavaScript, Images)
  110. # https://docs.djangoproject.com/en/1.10/howto/static-files/
  111.  
  112. STATIC_URL = '/static/'
  113. STATICFILES_DIRS = (
  114. os.path.join(BASE_DIR,'static'),
  115. )
  116.  
  117. CACHES = {
  118. 'default': {
  119. 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
  120. 'LOCATION': os.path.join(BASE_DIR,'cache')
  121. }
  122. }
urls

  1. from django.conf.urls import url
  2. from django.contrib import admin
  3. from app01 import views
  4. urlpatterns = [
  5. url(r'^admin/', admin.site.urls),
  6. url(r'^login/$', views.login),
  7. url(r'^index/$', views.index),
  8. url(r'^logout/$', views.logout),
  9. url(r'^test/(?P<nid>\d+)$', views.test),
  10. url(r'^cache/$', views.cache),
  11. url(r'^signal/$', views.signal),
  12. url(r'^fm/$', views.fm),
  13. ]
cache

  1. {% load cache %}
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title></title>
  7. </head>
  8. <body>
  9. <h1>{{ ctime }}</h1>
  10. <h1>{{ ctime }}</h1>
  11. {% cache 10 c1 %}
  12. <h1>{{ ctime }}</h1> {# 只缓存这一个 #}
  13. {% endcache %}
  14. </body>
  15. </html>
fm

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <form action="/fm/" method="POST">
  9. {% csrf_token %}
  10. <p>{{ obj.user.label }} {{ obj.user }} {{ obj.errors.user.0 }}</p>
  11. <p>{{ obj.pwd }} {{ obj.errors.pwd.0 }}</p>
  12. <p>{{ obj.email }}{{ obj.errors.email.0 }}</p>
  13. <p>{{ obj.f }}{{ obj.errors.f.0 }}</p>
  14. {{ obj.city1 }}
  15. {{ obj.city2 }}
  16. <input type="submit" value="提交" />
  17. </form>
  18. </body>
  19. </html>
index

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <h1>欢迎登录:{{ username }}, {{ request.session.username }}</h1>
  9. <a href="/logout/">注销</a>
  10. </body>
  11. </html>
login

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <form action="/login/" method="POST">
  9. {% csrf_token %}
  10. <input type="text" name="user" />
  11. <input type="text" name="pwd" />
  12. <input type="checkbox" name="rmb" value="1" /> 10秒免登录
  13. <input type="submit" value="提交" />
  14. <input id="btn1" type="button" value="按钮" />
  15. <input id="btn2" type="button" value="按钮" />
  16. </form>
  17. <script src="/static/jquery-1.12.4.js"></script>
  18. <script src="/static/jquery.cookie.js"></script>
  19. <script>
  20. $(function(){
  21. $.ajaxSetup({
  22. beforeSend: function(xhr,settings){
  23. xhr.setRequestHeader('X-CSRFtoken', $.cookie('csrftoken'));
  24. }
  25. });
  26. $('#btn1').click(function () {
  27. $.ajax({
  28. url: '/login/',
  29. type:"GET",
  30. data: {'user': 'root', 'pwd': '123'},
  31. // headers: {'X-CSRFtoken': $.cookie('csrftoken')},
  32. success:function(arg){
  33. }
  34. })
  35. });
  36. })
  37. </script>
  38. </body>
  39. </html>
sg

  1. from django.core.signals import request_finished
  2. from django.core.signals import request_started
  3. from django.core.signals import got_request_exception
  4.  
  5. from django.db.models.signals import class_prepared
  6. from django.db.models.signals import pre_init, post_init
  7. from django.db.models.signals import pre_save, post_save
  8. from django.db.models.signals import pre_delete, post_delete
  9. from django.db.models.signals import m2m_changed
  10. from django.db.models.signals import pre_migrate, post_migrate
  11.  
  12. from django.test.signals import setting_changed
  13. from django.test.signals import template_rendered
  14.  
  15. from django.db.backends.signals import connection_created
  16. def f1(sender, **kwargs):
  17. print("xxoo_callback")
  18. # print(sender,kwargs)
  19. pre_save.connect(f1)
  20. import django.dispatch
  21. pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])
  22. def callback(sender, **kwargs):
  23. print("callback")
  24. print(sender,kwargs)
  25. pizza_done.connect(callback)

python学习笔记_week22的更多相关文章

  1. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  2. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  3. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  4. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  7. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  8. Pythoner | 你像从前一样的Python学习笔记

    Pythoner | 你像从前一样的Python学习笔记 Pythoner

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

随机推荐

  1. 前端js 省市联动

    代码下载地址 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  2. linux 系统下有sda和hda的硬件设备分别代表什么意思

    linux 系统下有sda和hda的硬件设备分别代表什么意思/dev/sda1 # SCSI设备,sda,sdb,sdc,三块盘,1,2,3代表分区(PV)/dev/sda2/dev/sdb1/dev ...

  3. FB的破解与安装

    1使用破解序列号安装 先找到host文件,一般可能是隐藏的windows/system32/drivers/etc在下面加入127.0.0.1 activate.adobe.com127.0.0.1 ...

  4. python函数 传参的多种方式 解读

    1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: 2.带参数的函数调用: 函数定义了参数,那么 ...

  5. mybatisz中一个可以替代between..and 的技巧

    用mybatis进行时间段筛选时,如果,查询本日,本月的信息量,我们可以使用like concat()函数来替换between..and <select id="queryMyStaf ...

  6. 解决Kubernetes 1.7.3 kube-apiserver频繁异常重启的问题(转)

    原文的帖子无法访问,我只能粘贴内容 近期将之前的一个用Kubernetes 1.3.7的环境更换为最新发布的用kubeadm安装的Kubernetes 1.6.4 Dashboard无法访问的问题&g ...

  7. [UE4]条件语句Select

    select接收3个参数,输出一个值. 当条件为true时,返回输入到True节点的值. 当条件为false时,返回输入到false节点的值. select的输入和输出参数也可以是整数.float.V ...

  8. UI 性能因素考虑

    浏览器的最大并发连接数一般在4到6之间,首先了解影响加载的性能因素: (1)下载的文件太大 (2)发出的请求太多 (3)请求相应不及时 针对这些因素,一般会考虑减少请求次数: (1)对静态文件设置缓存 ...

  9. 好文推荐:转载一篇别人kaggle的经验分享

    转载:https://www.toutiao.com/i6435866304363627010/ 笔者参加了由Quora举办的Quora Question Pairs比赛,并且获得了前1%的成绩.这是 ...

  10. CentOS 关闭图形用户界面

    1 centos 7以下版本 vim /etc/inittab :initdefault: #改为 :initdefault: 2. centos 7.x版本 rm -f /etc/systemd/s ...