之前一直用C#比较多,最近开始研究Java,两者之间的库设计差别很大,故再次做个总结。

1. 日期

1.日期格式化

1
2
3
4
5
import java.text.SimpleDateFormat;
import java.util.Date;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String s = sdf.format(new Date());
  1. 字符串转化为日期
1
2
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date d = sdf.parse("2015年04月13日");

2. 泛型

1.新建泛型

可以再new后面直接使用<>来初始化,不需要指定类型,如下所示:

1
ArrayList<Crime> crimes = new ArrayList<>();

1. Tomcat配置

1.1 创建环境变量

创建环境变量CATALINA_HOME,值为Tomcat所在根目录(比如,windows下可能为为C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0).

1.2 启动Tomcat

CATALINA_HOME的bin目录下有startup脚本。

1.3 测试

地址:http://localhost:8080

2. Tomcat目录结构

tomcat

3. 手工编写第一个Java Web应用程序

Read more »

1. 初始化

1
2
3
from flask import Flask

app = Flask(__name__)

__name__的作用是用来给Flask来判断应用的根路径的。

2. 路由和视图函数

1
2
3
@app.route('/')
def hello_world():
return 'Hello World!'

如果要给路由添加参数,可以这样:

1
2


其中<name>就是参数,如果你想给参数加上类型,可以使用/user/<int:id>,Flask支持在路由中使用int, floatpath等类型。path是字符串,但是并不把/当作分隔符,而是把它看作动态组成的一部分。

3. 启动服务器

Flask包含了一个小型的开发服务器,启动它:

Read more »

1. SQL Sever驱动

1.1 安装

mssql数据库 使用django-mssql,依赖pywin32,如果安装时发生错误,请用下面这种方法:

pip install django-mssql --pre 

1.2 配置

在settings.py中,设置:

# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'sqlserver_ado',
        'NAME': 'data_center',
        'USER': 'sa',
        'PASSWORD': 'test',
        'HOST': 'localhost',
    }
}

2. 根据现有数据库生产models

python manage.py inspectdb > models.py
Read more »

Nancy框架

一、创建第一个Nancy应用

  1. 安装Nancy项目模板
  2. 创建Nancy Empty Web Application with ASP.NET Hosting
  3. 添加Nancy module,它是一个标准C#类,通过添加下面几行代码定义了web应用的路由处理方法。
  4. 编译并运行。
1
2
3
4
5
6
7
public class HelloModule : NancyModule
{
public HelloModule()
{
Get["/"] = parameters => "Hello World";
}
}

二、探索Nancy的module

Module继承自NancyModule类。Module是必不可少的.它不仅定义了路由,还提供了许多其他信息,比如请求、上下文、构造响应的辅助方法、视图渲染等等。

1. 模块能够在全局被发现

可以在任意地方定义module,比如外部的dll等,这为代码的复用带来很大的方便。不用担心效率问题,扫描module只在程序启动时发生。

2. 使用模块为路由创建一个根

类似命名空间的概念,在创建构造方法时传给base一个名称。

Read more »

一、 Django Rest Framework介绍

项目地址:http://www.django-rest-framework.org/

Django REST framewrok(简称DRF),强大而且灵活的工具箱,它使创建Web API变得简单。

你需要使用REST框架的一些原因:

  • 基于Web可浏览的API能让你赢得更多开发者
  • 包含OAuth1a和OAuth2的认证机制
  • 序列化同时支持ORM和非ORM的数据源
  • 自定义,如果不想用更为强大的功能,可以只使用常规的函数视图
  • 大量的文档,牛叉的社区支持
  • 大公司比如Mozilla和Eventbrite都用它,靠谱~

Browsable API

二、安装需求

REST框架具有以下要求:

  • Python(2.6.5+, 2.7, 3.2, 3.3)
  • Django(1.4.2+, 1.5, 1.6, 1.7)

下面的包是可选的:

Read more »

原文在此

我的一个同事说他怀念Ruby的正则表达式语法糖。我没有用过Ruby的正则表达式,但是我熟悉Python的,并且知道它的API需要一些语法糖来弥补一下。

首先,从正则表达式中获取分组需要2步。第一步,调用match()或者search(),并且将结果付值给一个变量。然后,需要检察结果是否为None(表示是否有找到匹配)。最后,如果匹配确实存在,你可以安全地取出分组。下面是一个例子:

>>> import re
>>> match_obj = re.match('([0-9]+)', '123foo')
>>> match_obj  # What is `match_obj`?
<_sre.SRE_Match object at 0x7fd1bb000828>
>>> match_obj.groups()('123',)
>>> match_obj = re.match('([0-9]+)', 'abc')
>>> match_objNone

依我来看,如果能像下面这样就更好了:

>>> re.get_matches('([0-9]+)', '123foo')('123',)
>>> re.get_matches('([0-9]+)', 'abc')None

另一个我常遇到的问题是弄混re.sub的参数,re.sub是用来查找和替换用的。所需要的参数按照顺序依次是模式(pattern),替换(replacement),还有字符串。由于更重各样的原因,对我来说search_string放在replacement前面看着更起来更直接。

不幸的是,弄混这些参数将会导致看上去正确的结果。下面是个例子,为了把单词foo用bar来代替。

>>> re.sub('foo', 'replace foo with bar', 'bar')
'bar'
>>> re.sub('foo', 'bar', 'replace foo with bar')
'replace bar with bar'

在上面例子中,有时我们会推测输入的字符串仅仅是foo

Read more »

在百度上看到这篇。昨日参加同事婚礼,不胜唏嘘。

东武望馀杭
云海天涯两杳茫
何日功成名遂了,还乡
醉笑陪公三万场
不用诉离觞
痛饮从来别有肠
今夜送归灯火冷,河塘
堕泪羊公却姓杨

再后来,又有滚滚红尘中进行了改编:

楼高日尽
望断天涯路
来时陌上初熏
有情风万里卷潮来
推枕惘然不见
分携如昨到处萍漂泊
浩然相对今夕何年
谁道人生无再少
依旧梦魂中
但有旧欢新怨
人生底事往来如梭
醉笑陪君三万场 不诉离伤
禅心已失人间爱
又何曾梦觉
这些个千生万生只在
踏尽红尘何处是吾乡

img

0%