String, StringBuffer, StringBuilder比较

String 类

String 类表示一个字符串。 在设计上, 字符串类存储的字符串是不可变的(immutable)。想要修改一个字符串的内容只能通过新建一个新的字符串实例来实现。 且对于两个相同的字符串字面量而言, 他们指向的是同一个字符串对象。

并且String类相对于其他类, 具有以下特殊性:

  • String类是Java中唯一的具有重载运算符的类。 String重载了+运算符, 使得对于一个加号左右两边的String能够被连接起来。

成员变量

String类具有以下的关键成员变量:

More...

[译]创建你的第一个Django应用 - 第四部分

这章教程承接第三章结束的地方, 我们将继续那个网络民调应用, 并且将关注与简单的表单处理与精简我们的代码。

创造一个简单的表单

让我们来升级一下上个教程中创建的问题详细内容模板(polls/detail.html), 让它包含一个HTML的<form>元素:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!--polls/templates/polls/detail.html-->
<h1>{ { question.question_text } }</h1>

{ % if error_message % }<p><strong>{ { error_message } }</strong></p>{ % endif % }

<form action="{ % url 'polls:vote' question.id % }" method="post">
{ % csrf_token % }
{ % for choice in question.choice_set.all % }
<input type="radio" name="choice" id="choice{ { forloop.counter } }" value="{ { choice.id } }" />
<label for="choice{ { forloop.counter } }">{ { choice.choice_text } }</label><br />
{ % endfor % }
<input type="submit" value="Vote" />
</form>

快速浏览一下上面的代码:

  • 上面的这个模板给每一个选项显示了一个单选按钮。 每一个单选按钮的值与每一个选项的id相联系。 每一个单选按钮的名字都是choice. 这意味着, 当某人选择了这些单选按钮之一然后提交这个页面的时候, 系统会使用POST传递一个数据choice=#, 此处的#,代表选中选项的id。 这是HTML表单的基本概念。

  • 我们把这个表单的动作属性设置为{ %url 'polls:vote' question.id% }, 然后我们设置动作方法为post。 此处使用method='post'(与之相对的是method='get')十分重要, 因为此处提交表单的这个动作将会出发服务器端的数据操作。 只要当你创建一个需要服务器端数据操作的表单的时候, 使用post总是最佳选择。 这个建议并不仅仅真对于Django, 这是Web开发的实际经验。

  • forloop.counter记录了for标签内循环的次数。

  • 既然我们创建了一个POST表单(拥有着操作数据的功能),我们就需要担心一下跨站请求伪造(Cross Site Request Forgeries)的问题。 但是谢天谢地,你并不需要太过于担心这个, 因为Django创造了一个非常易用的系统来避免这个问题。 简而言之, 所有使用POST提交,并且目标是一个内链URL的表单, 都需要有一个{ % CSRF token % }标签。

More...

[译]创建你的第一个Django应用 - 第三部分

这章教程将继续第二章结束的地方, 我们将继续编写我们的网络民调应用,并切将专注于创建一个界面 - 视图(view)

思想

视图, 是在你的Django应用中具有一个特定模板的特定的函数, 它生成某“种” 特定的Web页面。

举例来说, 在一个博客应用之中, 你可能会有如下的视图:

  • 博客主页, 显示最新的几篇博文
  • 博文的“详细” 页面, 完整展示某一篇博文的详细信息
  • 以年为基础的分类页面 ,以某一年的月份为基础分类博文
  • 以月为基础的分类页面, 以某一月的日子为基础分类博文
  • 以日为基础的分类界面, 显示某一天发布的所有博文
  • 评论动作, 处理对某一篇博文的评论功能

在我们的民意调查应用中, 我们有如下四个视图:

More...

[译]创建你的第一个Django应用 - 第二部分

这章教程从教程一结束的地方开始。 我们继续编写这个网络民调应用, 并且将关注于Django自动生成的后台站点。

思想
为你的同事或者客户生成一个自动站点,以供他们添加,修改和删除内容是一件多么无趣而又重复,缺乏创造的事情。 出于这个原因, Django提供了完全自动化的基于数据模型的后台站点的生成功能。
Django最初是作为一个新闻站点框架使用的, 有着非常清晰的内容提供者和公众的角色区分。 网站管理员操作这个系统并且添加新的新闻, 专访, 体育比赛的得分等等。 这些内容将在公共站点显示出来。 Django通过创建一个统一的编辑后台来解决了这个问题。
编辑后台并非是为网站访问者所准备的, 他们是为了网站管理员设计的。

创建一个管理员用户

首先我们需要创建一个能够登录进入管理员后台的用户。 运行如下代码:

$ python manage.py createsuperuser

输入你想要取的用户名后按下回车

More...

[译]创建你的第一个Django应用 - 第一部分

让我们通过示例来进行学习吧。
通过这个教程, 我们将带领你一步一步的创建一个基础的进行社会调查的网络应用。

它将包含两个部分:

  • 一个公共的网站允许人们进行访问并通过其进行投票
  • 一个后台的管理员应用, 来允许你添加, 修改, 以及删除调查的项目

我们假设你已经安装完成了所有的Django程序。 你可以通过以下命令来检测你的Django程序的安装是否完好以及其版本号:

$python -c "import django; print(django.get_version())"

如果Django被完整安装, 你将得到你所安装的Django的版本号。 如果没有的话, 你将得到一个表示为“No module named django”的错误。

More...

Another Hello World

总算是settle了, 这个VPS在Vultr 的日本节点。 5刀的plan。 1CPU+700M RAM。 似乎不是很够用。。
开了2G 的SWAP才勉强跑起来gitlab。。 等回来看要不再升级成10刀的吧。


2016/5/28 5:34

居然折腾了一个通宵。。 不过看起来整个网站的基本架构已经都搭起来了。 也是没白费功夫。

More...