上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧

在最后面有我自己的示例代码,html部分太多了就不贴了

“简单”视图函数

正如名字所言,简单视图函数封装在django.views.generic.simple模块里面,主要有direct_to_template和redirect_to两个简单视图函数,主要使用范围是:没有任何的视图逻辑,仅仅需要重定向一个url

django.views.generic.simple.direct_to_template

描述:使用从url中获取的参数封装而成的在模板中名为{{ params }}的一个字典去渲染一个给定的模板

必选参数:

  • template: 正如描述所说,必须给定一个模板的全名

可选参数:

  • extra_context: 一个用来渲染模板的字典变量,默认是一个空字典
  • mimetype: 返回的文档类型,默认是DEFAULT_CONTENT_TYPE 里面的设置
    from django.views.generic.simple import direct_to_template
    
    urlpatterns = patterns('',
    (r'^foo/$', direct_to_template, {'template': 'foo_index.html'}),
    (r'^foo/(?P<id>\d+)/$', direct_to_template, {'template': 'foo_detail.html'}),

第二个url里面传递的参数为{{ params.id }},对于/foo/15/这个请求来说,{{ params.id }}的值是15

django.views.generic.simple.redirect_to

描述:重定向到一个url

必选参数

  • url: 需要被重定向的url,如果为None,返回一个410错误

可选参数

  • permanent: 重定向是否永久,默认为真,如果为真,返回301,如果为假,返回302

    301(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,
  • query_string: 是否传递获取的查询语句给重定向的url,默认为假,如果为真,该查询语句会被添加到新的url,否则丢弃。
from django.views.generic.simple import redirect_to

urlpatterns = patterns('',
('^bar/$', redirect_to, {'url': '%%7Ejacob.', 'permanent': False}),
)

需要注意的是,如果你想在url中使用%,必须使用%%来避免与python的字符串格式标记发送冲突

基于日期的通用视图

名字所言,用于显示基于日期型数据的明细页,包含在django.views.generic.date_based模块里面

django.views.generic.date_based.archive_index

描述

一个顶级的索引页按照时间显示最新的对象,除非设置allow_future为真,否则不会显示超前当前日期的对象

archive是存档的意思

必选参数

  • queryset: 一个为存档服务的对象的查询集合
  • date_field: 被查询的模型的DateField或者DateTimeField的属性名,该属性名用来判定那些对象能显示在页面上

可选参数

  • num_latest: 对象显示的个数,默认15个
  • template_name: 要被渲染的模板的全名(这可以让你可以覆盖默认的模板)
  • template_loader: 加载模板的模板加载器,默认是django.template.loader.
  • extra_context: 一个用来渲染模板的字典变量,默认是一个空字典
  • allow_empty: 一个布尔值说明是否允许返回的对象集合为空,如果为真,返回一个空页面否则促发1个404错误,默认为真
  • context_processors: 一个会被应用到模板的模板上下文处理器的列表
  • mimetype: 返回的文档类型,默认是DEFAULT_CONTENT_TYPE 里面的设置
  • allow_future:除非设置allow_future为真,否则不会显示超前当前日期的对象
  • template_object_name: 指定在模板上下文中使用的模板变量名,默认是latest

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_archive.html

  • <model_name> 模型的全小写,例如StaffMember --> staffmember.
  • <app_label> python全路径的最右边的部分,举个例子, 你的模型的路径是 apps/blog/models.py,那么app_label就是 blog.

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量:

  • date_list: queryset.dates(date_field, 'year')[::-1].包含所有的年份

  • latest: num_latest个按date_field降序排序的对象列表,默认变量名为latest,如果指定template_object_name,则变量名变为指定值

django.views.generic.date_based.archive_year

描述

返回一个显示给定一个年份中所有可用月份的年度存档页面,除非设置allow_future为真,否则不会显示超前当前日期的对象

必选参数

  • year: 存档服务需要的年份(四位数字)
  • queryset:同上
  • date_field: 同上

可选参数

  • template_name:同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty:同上
  • context_processors:同上
  • template_object_name:同上
  • make_object_list:一个布尔变量表示是否检索对象,如果为真,列表中的所有对象将被封装成一个模板变量object_list,否则 object_list为空,默认为假
  • mimetype: 同上
  • allow_future: 同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_archive_year.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • date_list: 类似上,包含所有的月份

  • year: 给定的年份(四位数字的字符串)

  • object_list: 如果make_object_list为真,列表中的所有对象将被封装成一个模板变量object_list,否则 object_list为空,默认为假,需要注意的是,如果设置了template_object_name,那么object_list中的object将被替换成template_object_list的值,例如template_object_list='foo',那么object_list变为foo_list

django.views.generic.date_based.archive_month

描述

返回一个显示给定月份的所有对象,除非设置allow_future为真,否则不会显示超前当前日期的对象

必选参数

  • year:同上
  • month: 存档服务所需的月份,格式见month_format参数
  • queryset: 同上
  • date_field: 同上

可选参数

  • month_format: 一个用来格式化月份的字符串,要求这个格式能被python的strftime()方法接受,默认是'%b',表示月份的三个字母的缩写,如果想该用数字,请使用'%m'
  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_archive_month.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • date_list: 类似上,包含所有的天数
  • month: 一个datetime.date 对象代表给定的月份
  • next_month: 一个 datetime.date 对象代表下个月的第一天,如果下个月在今天之后,会被设为None
  • previous_month: 一个datetime.date 对象代表上个月的第一天,不想next_month,这永远不会被设为None
  • object_list: 同上

django.views.generic.date_based.archive_week

描述

返回一个显示给定星期的所有对象,除非设置allow_future为真,否则不会显示超前当前日期的对象

必选参数

  • year:同上
  • week: 一年中的某个星期(字符串),每个星期从周日开始,即是第几个周日对应的那一天
  • queryset: 同上
  • date_field: 同上

可选参数

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_archive_week.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • week: 一个 datetime.date 对象代表该星期的第一天(即周日)
  • object_list: 同上

django.views.generic.date_based.archive_day

描述

返回一个显示给定日期的所有对象,除非设置allow_future为真,否则超前当前日期的请求都会引发404的错误(不管那天是否存在对象)

必选参数

  • year: 同上
  • month: 同上
  • day: 同上
  • queryset: 同上
  • date_field: 同上

可选参数

  • month_format:同上
  • day_format: 类似month_format,不过对于日期来说,默认的格式是%d(01-31的十进制数字)
  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_archive_day.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • day: 一个 datetime.date 对象代表给定的日期

  • next_day: 一个datetime.date 代表下一天,如果下一天在今天之后,则被设为None

  • previous_day: 一个 datetime.date 对象代表前一天,这永远不会设为None

  • object_list: 同上

django.views.generic.date_based.archive_today

描述

返回今天的所有对象的存档页面,除了没有年月日的指定外,基本和archive_day一样

django.views.generic.date_based.object_detail

描述

返回一个显示特定对象的页面,除非设置allow_future为真,否则若该对象超前当前日期会引发404的错误

必选参数

  • year: 同上
  • month: 同上
  • day: 同上
  • queryset: 同上
  • date_field: 同上
  • object_id 和 (slug and slug_field) 至少要提供一个,如果你提供object_id, 那他必须是主键属性的值

可选参数

  • month_format:同上
  • day_format: 类似month_format,不过对于日期来说,默认的格式是%d(01-31的十进制数字)
  • template_name: 同上
  • template_name_field: 这大概是一个拍脑袋的想法,这个参数给定的是,对象中那些可以用来命名模板的属性名,假如说你的对象有一个域'the_template'包含的字符串是'foo.html',那么你可以指定template_name_field是the_template,那么通用视图将会使用这个值来寻找使用模板foo.html
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_detail.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • object:类似上面的object_list

列表/详细通用视图

这个通用视图和基于日期的很像,位于django.views.generic.list_detail模块,不过基于日期的通用视图只有简单的两个页面:对象的列表和特定对象的详细页面

django.views.generic.list_detail.object_list

描述

返回一个显示一个列表的对象的页面

必选参数

  • queryset: 同上

可选参数

  • paginate_by: 每页显示多少个对象
  • page: 当前的页码,是一个整数或者字符串'last'
  • template_name: 同上
  • template_name_field: 这大概是一个拍脑袋的想法,这个参数给定的是,对象中那些可以用来命名模板的属性名,假如说你的对象有一个域'the_template'包含的字符串是'foo.html',那么你可以指定template_name_field是the_template,那么通用视图将会使用这个值来寻找使用模板foo.html
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_list.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • object_list:同上
  • is_paginated: 一个布尔型的变量指明当前是否分页了,当对象个数少于上面给出的paginate_by时,被设为False,否则为真

如果is_paginated为真的话,下面两个变量在模板中将可用

  • paginator: An instance of django.core.paginator.Paginator.
  • page_obj: An instance of django.core.paginator.Page.

分页提示

当使用了paginated_by是,django会将结果分页,所以我们在一个在url中使用page number

urlconf:(r'^objects/page(?P<page>[0-9]+)/$', 'object_list', dict(info_dict))
url:/objects/?page=3

需要注意的是,page是从1开始,而不是从零开始的,如果page不合法,将促发404错误

亦可以使用last,如

/objects/?page=last

django.views.generic.list_detail.object_detail

描述

返回一个显示特定对象的页面

必选参数

  • queryset: 一个包含该对象的查询集
  • object_id 和 (slug and slug_field) 至少要提供一个,如果你提供object_id, 那他必须是主键属性的值

可选参数

  • template_name: 同上
  • template_name_field: 这大概是一个拍脑袋的想法,这个参数给定的是,对象中那些可以用来命名模板的属性名,假如说你的对象有一个域'the_template'包含的字符串是'foo.html',那么你可以指定template_name_field是the_template,那么通用视图将会使用这个值来寻找使用模板foo.html
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_detail.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • object:类似上面的object_list

生成/更新/删除通用视图

django.views.generic.create_update模块封装了生成/更新/删除对象的一些函数

django.views.generic.create_update.create_object

描述

描述返回一个显示生成对象的表单页面,提交表单后显示提示错误(如果有的话)然后保存对象

必选参数

  • form_class和model至少要提供一个,如果你提供form_class,那必须是django.forms.ModelForm 的子类;如果提供model,必须包含标准的ModelForm

可选参数

  • post_save_redirect: 保存对象后跳转的url,默认是该对象的object.get_absolute_url()方法

  • login_required: 一个布尔值决定是否需要登录才能看到这个页面并保存修改,默认是假;如果为真,若不登陆,将转到登录页面(当然了,这个适合django的认证系统绑定的)

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • context_processors: 同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_form.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • form:一个django.forms.ModelForm实例

django.views.generic.create_update.update_object

描述

描述返回一个显示编辑对象的表单页面,提交表单后显示提示错误(如果有的话)然后保存对象

必选参数

  • form_class和model至少要提供一个,如果你提供form_class,那必须是django.forms.ModelForm 的子类;如果提供model,必须包含标准的ModelForm
  • object_id 和 (slug and slug_field) 至少要提供一个,如果你提供object_id, 那他必须是主键属性的值

可选参数

  • post_save_redirect: 保存对象后跳转的url,默认是该对象的object.get_absolute_url()方法

  • login_required: 一个布尔值决定是否需要登录才能看到这个页面并保存修改,默认是假;如果为真,若不登陆,将转到登录页面(当然了,这个适合django的认证系统绑定的)

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • context_processors: 同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_form.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • form:一个django.forms.ModelForm实例
  • object: 同上

django.views.generic.create_update.delete_object

描述

一个视图,展示一个信息页面然后删除这个对象;仅当request method是post的时候,对象才会被删除;若是通过get请求该视图函数,将展示一个post到相同url的表单页面(信息页面)

必选参数

  • form_class和model至少要提供一个,如果你提供form_class,那必须是django.forms.ModelForm 的子类;如果提供model,必须包含标准的ModelForm
  • post_delete_redirect: 删除后重定向的url

可选参数

  • post_save_redirect: 保存对象后跳转的url,默认是该对象的object.get_absolute_url()方法

  • login_required: 一个布尔值决定是否需要登录才能看到这个页面并保存修改,默认是假;如果为真,若不登陆,将转到登录页面(当然了,这个适合django的认证系统绑定的)

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • context_processors: 同上

Template name:

如果没有给定template_name, 将会使用 默认模板<app_label>/<model_name>_confirm_delete.html

Template context:

除了可选参数的extra_context外, 模板上下文还包含以下变量

  • object: 同上

下面我们来看一些例子吧

models.py

from django.db import models
from django.contrib import admin
from sysu.ThumbnailImageField import ThumbnailImageField
# Create your models here.
class Item(models.Model):
"""docstring for Item"""
name = models.CharField(max_length=250)
description = models.TextField() class Meta:
ordering =['name'] def __unicode__(self):
return self.name @models.permalink
def get_absolute_url(self):
return ('item_detail',None,{'object_id':self.id}) class Photo(models.Model):
"""docstring for Photo"""
item = models.ForeignKey(Item)
title = models.CharField(max_length=100)
image = ThumbnailImageField(upload_to='photos')
caption = models.CharField(max_length=250) class Meta:
ordering = ['title'] def __unicode__(self):
return self.title @models.permalink
def get_absolute_url(self):
return ('photo_detail',None,{'object_id':self.id}) class PhotoInline(admin.StackedInline):
"""docstring for PhotoInline"""
model = Photo
class ItemAdmin(admin.ModelAdmin):
"""docstring for ItemAdmin"""
inlines = [PhotoInline]
admin.site.register(Item,ItemAdmin)
admin.site.register(Photo) import datetime
from django.db import models
from django.db.models import permalink
from django.contrib.auth.models import User
from django.contrib import admin
from markdown import markdown
VIEWABLES_STATUS = [3,4]
class ViewableManager(models.Manager):
"""docstring for ViewableManager"""
def get_query_set(self):
default_queryset = super(ViewableManager, self).get_query_set()
return default_queryset.filter(status__in=VIEWABLES_STATUS) class Category(models.Model):
"""docstring for Category"""
label = models.CharField(blank=True,max_length=50)
slug = models.SlugField()
class Meta:
verbose_name_plural = "categories"
def __unicode__(self):
return self.label
class CategoryAdmin(admin.ModelAdmin):
"""docstring for CategoryAdmin"""
prepopulated_fields = {'slug':('label',)
}
admin.site.register(Category,CategoryAdmin) class Stroy(models.Model):
"""docstring for Stroy"""
STATUS_CHOICES = (
(1,"Needs Edit"),
(2,"Needs Approval"),
(3,"Published"),
(4,"Archived"),
)
title = models.CharField(max_length=100)
slug = models.SlugField()
category = models.ForeignKey(Category)
markdown_content = models.TextField()
html_content = models.TextField(editable=False)
owner = models.ForeignKey(User)
status = models.IntegerField(choices=STATUS_CHOICES,default=1)
created = models.DateTimeField(default=datetime.datetime.now())
modified = models.DateTimeField(default=datetime.datetime.now())
class Meta:
ordering = ['modified']
verbose_name_plural = "stories"
def save(self):
self.html_content = markdown(self.html_content)
self.modified = datetime.datetime.now()
super(Stroy, self).save()
admin_objects = models.Manager()
objects = ViewableManager()
@permalink
def get_absolute_url(self):
return ("cms-story",None,{'slug':self.slug})
class StroyAdmin(admin.ModelAdmin):
"""docstring for StroyAdmin"""
list_display = ('title','owner','status','created','modified')
search_fields = ('title','content')
list_filter = ('status','owner','created','modified')
prepopulated_fields = {'slug':('title',)
}
fieldsets = [
("Title",{"fields":("title","slug","category")}),
("Content",{"fields":("markdown_content","owner")}),
("Status",{"classes":("monospace",),"fields":("status","created","modified")})
]
admin.site.register(Stroy,StroyAdmin)

ThumbnailImageField.py

# ThumbnailImageField.py
from django.db.models.fields.files import ImageField,ImageFieldFile
from PIL import Image
import os
def _add_thumb(s):
parts = s.split(".")
parts.insert(-1,"thumb")
if parts[-1].lower() not in ['jpeg','jpg']:
parts[-1]='jpg'
return ".".join(parts)
class ThumbnailImageFieldFile(ImageFieldFile):
def _get_thumb_path(self):
return _add_thumb(self.path)
thumb_path = property(_get_thumb_path)
def _get_thumb_url(self):
return _add_thumb(self.url)
thumb_url = property(_get_thumb_url) def save(self,name,content,save=True):
super(ThumbnailImageFieldFile, self).save(name,content,save)
img = Image.open(self.path)
img.thumbnail(
(self.field.thumb_width,self.field.thumb_height),
Image.ANTIALIAS
)
img.save(self.thumb_path,'JPEG')
def delete(self,save=True):
if os.path.exists(self.thumb_path):
os.remove(self.thumb_path)
super(ThumbnailImageFieldFile, self).delete(save) class ThumbnailImageField(ImageField):
"""docstring for ThumbnailImageField"""
attr_class = ThumbnailImageFieldFile
def __init__(self,thumb_width=128,thumb_height=128,*args,**kwargs):
self.thumb_width = thumb_width
self.thumb_height = thumb_height
super(ThumbnailImageField, self).__init__(*args,**kwargs)

urls.py

from django.conf.urls import patterns, include, url
from sysu.models import Item,Photo,Stroy
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover() info_dict = {'queryset':Stroy.objects.all()} urlpatterns =patterns('django.views.generic',
url(r'^cms/search/$',search,name="cms-search"),
url(r'^cms/(?P<slug>[-\w]+)/$', 'list_detail.object_detail',
kwargs={
'queryset':Stroy.objects.all(),
'template_name':'story_detail.html',
'template_object_name':'story'
},
name="cms-story"
),
url(r'^cms/$', 'list_detail.object_list',
kwargs={
'queryset':Stroy.objects.all(),
'template_name':'story_list.html',
'template_object_name':'story'
},
name="cms-home"
),
url(r'^cms/category/(?P<slug>[-\w]+)/$', category,name="cms-category"), # url(r'^gallery/$', 'simple.direct_to_template',
# kwargs={
# 'template':'in.html',
# 'extra_context':{'item_list':lambda:Item.objects.all()}
# },
# name='index'
# ),
# url(r'^gallery/items/$', 'list_detail.object_list',
# kwargs={
# 'queryset':Item.objects.all(),
# 'template_name':'item_list.html',
# 'allow_empty':True },
# name='item_list'
# ),
# url(r'^items/(?P<object_id>\d+)/$', 'list_detail.object_detail',
# kwargs={
# 'queryset':Item.objects.all(),
# 'template_name':'items_detail.html'
# },
# name='item_detail'
# ),
# url(r'^gallery/photos/(?P<object_id>\d+)$', 'list_detail.object_detail',
# kwargs={
# 'queryset':Photo.objects.all(),
# 'template_name':'photos_detail.html'
# },
# name='photo_detail'
# ),
# url(r'pages/', include('django.contrib.flatpages.urls')),
)

都是以前写过的代码,仅供大家参考,有什么大家可以随时交流

6:django 通用视图的更多相关文章

  1. Django通用视图APIView和视图集ViewSet的介绍和使用

    原 Django通用视图APIView和视图集ViewSet的介绍和使用 2018年10月21日 14:42:14 不睡觉假扮古尔丹 阅读数:630   1.APIView DRF框架的视图的基类是 ...

  2. Django通用视图执行过程

    使用通用视图后,Django请求处理过程(以ListView为例):在我们自定义的视图中: class IndexView(ListView): template_name = 'blog/index ...

  3. django通用视图(类方法)

    这周是我入职的第一周,入职第一天看到嘉兴大佬的项目代码.视图中有类方法,我感到很困惑. 联想到之前北京融360的电话面试,问我有无写过类方法……看来有必要了解下视图的类方法,上网搜了很多,原来这就是所 ...

  4. django通用视图

    通用视图 1. 前言 回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回 ...

  5. django通用视图之TemplateView和ListView简单介绍

    django支持类视图,与此同时django为我们提供了许多非常好用的通用视图供我们使用,这其中TemplateView.ListView和DetailView是我们经常使用到的,这里就对Templa ...

  6. Django通用视图APIView和视图集ViewSet的介绍和使用(Django编程-1)

    1.APIView DRF框架的视图的基类是 APIView APIView的基本使用和View类似 Django默认的View请求对象是 HttpRequest,REST framework 的请求 ...

  7. Django - 通用视图

    urls.py from . import views ... url(r'^$', views.IndexView.as_view, name="index"), url(r'^ ...

  8. Django:之Sitemap站点地图、通用视图和上下文渲染器

    Django中自带了sitemap框架,用来生成xml文件 Django sitemap演示: sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录. 开启si ...

  9. Django 1.6 基于类的通用视图

    Django 1.6 基于类的通用视图 最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特 ...

随机推荐

  1. POJ3254:Corn Fields——题解

    http://poj.org/problem?id=3254 题面来自洛谷:https://www.luogu.org/problemnew/show/1879 农场主John新买了一块长方形的新牧场 ...

  2. UVA.10066 The Twin Towers (DP LCS)

    UVA.10066 The Twin Towers (DP LCS) 题意分析 有2座塔,分别由不同长度的石块组成.现在要求移走一些石块,使得这2座塔的高度相同,求高度最大是多少. 问题的实质可以转化 ...

  3. AOJ.667 抢占白房子

    抢占白房子 点我挑战题目 考察点 字符串 Time Mem Len Lang 14ms 444 KB 0.75 K GCC 题意分析 数据仅有一组,根据题目,左上角的一个格子为白色,与白色相邻的(无论 ...

  4. 探索CAS无锁技术

    前言:关于同步,很多人都知道synchronized,Reentrantlock等加锁技术,这种方式也很好理解,是在线程访问的临界区资源上建立一个阻塞机制,需要线程等待 其它线程释放了锁,它才能运行. ...

  5. HDU 4549 矩阵快速幂+快速幂+欧拉函数

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  6. HDU 5636 关键点的 floyd 最短路问题

    Shortest Path Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. *和&的使用

    给变量起一个别名: int a = 2; int &b = a; 取a的地址,实参是一个指针: void chage(int *data) { } void main() { int a = ...

  8. eclipse如何远程debug/断开远程debug

    eclipse如何远程debug? 当你的代码已经部署到生产或者测试环境的时候,你如何debug判断线上的问题呢? debug之前必须保证本地代码和远程代码完全一致,否则将不能建立连接 在eclips ...

  9. vijos 1002 简单压缩+DP

    描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上 ...

  10. linux 执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时, ...