我的乐与怒

Life, thoughts, stories and ideas.

Golang:错误即值 Errors are values

来自Rob Pike的博客翻译

英文原版见此 https://blog.golang.org/errors-are-values 作者 :Rob Pike 翻译 :Vincent Mi 前言 最近用Go写了一下程序,没有try-catch不太适应。因此翻到了这篇文章. 顺手翻译了过来.可能翻译不太好纯为了自己加深理解. 正文 如何进行错误处理,这是一个Go程序员之间,特别是一些新的Go程序员,会经常讨论的问题.讨论到最后往往由于以下代码的多

Eclipse 相同方法变量颜色修改

Eclipse 选择Dark主题会出现白底白字高亮的情况 基本看不到.


扩展Thymeleaf 3 - 模板模式

[http://vincentmi.gitbooks.io/extendingthymeleaf/content/][http://vincentmi.gitbooks.io/extendingthymeleaf/content/]

模板模式或许是Thymeleaf最强大的扩展点,模板模式实际上定义了什么可以被认为是一个“模板”。创建定制化的模板模式允许我们处理不同于默认的XML,XHTML,HTML5的文档格式。


扩展Thymeleaf-4 创建我们自己的方言

[http://vincentmi.gitbooks.io/extendingthymeleaf/][http://vincentmi.gitbooks.io/extendingthymeleaf/]

足球是麝香草大陆最流行的运动。每个赛季有10对参加联赛,主办方请为我们为它创建一个叫做"Extrathyme"的网站。

这个网站将非常简单,就是一个表格。

  • 队名
  • 胜平负的场次,以及获得的总分
  • 备注,该队伍当前所处的位置,下赛季保级还是升入高级别联赛

然后在表格上显示一个广告和最近比赛的比分。


扩展Thymeleaf-2 方言和处理器

gitbook [http://vincentmi.gitbooks.io/extendingthymeleaf/content/][1]

如果你读过Thymeleaf的入门教程(你应该已经读完了)。你应该知道你之前学的准确的说不是Thymeleaf,而是Thymeleaf的标准方言。(或者,如果你读过Thymeleaf+Spring教程的话就是Spring标准方言)。

这是什么意思?意思是你学的th:xattribute只是可以立即使用的标准方言。但是你可以使用你喜欢的名字自己定义一组attribute或者tag在Thymeleaf用来处理你的模板。你可以定义你自己的方言。


扩展Thymeleaf-1 为什么需要扩展Thymeleaf

gitbook [http://vincentmi.gitbooks.io/extendingthymeleaf/content/][http://vincentmi.gitbooks.io/extendingthymeleaf/content/]

Thymeleaf是一个很容易扩展的库。他的关键在于,大部分面向用户的功能不是直接构建在他的核心中,而是通过打包和组件化到一个称为Dialects(方言)的功能集合中。


Spring MVC 的错误处理

Spring MVC 提供多种异常处理方式,但是当我在进行Spring MVC培训时,我发现我的学院经常会感到困惑或者不太适应。

今天我将为你展示多种可能的选项。我们的目标是如果可能的话不在Controller的方法里显式的处理异常。作为横切关注点分别在专用代码里处理更好。


用Spring创建RESTful 服务

这个指南将引导你使用创建一个"hello world" RESTFul 服务


在CentOS下安装PPTP的VPN

http://www.black-xstar.com/blog/691.html 最近买了个基于xen的VPS玩玩,安装LAMP没啥意思。国内网络环境不好,干脆安装个VPN试试。 对于Linux其实我什么都不会的,在google老师的帮助下,总算给我安装好了,记录下来以便查阅。 VPN常用有两种,一种是openvpn,另一种PPTP。前者开源跨平台功能强大,后者

CXF添加Header

CXF的header处理了半天。。。 添加拦截器 public class HotelHeaderInterceptor extends AbstractSoapInterceptor { public void handleMessage(SoapMessage message) throws Fault { List<Header> headers = message.getHeaders(); AuthenticationHeader aheader = new AuthenticationHeader(); aheader.setCulture(com.tourico.schemas.webservices.authentication.Culture.EN_US); aheader.setLoginName(username); aheader.setPassword(password); aheader.setVersion(new JAXBElement<String>(new QName("", "version"), String.class, version)); JAXBElement<AuthenticationHeader> authHeaders = new ObjectFactory().createAuthenticationHeader(aheader); Header header; try { header = new Header(authHeaders.getName(), aheader,new JAXBDataBinding(AuthenticationHeader.class)); headers.add(header); message.put(Header.HEADER_LIST, headers); } catch (JAXBException e) { e.printStackTrace(); } } 调用服务之前处理 IDestinationContracts port = service.getIISDestinationHosting() ; Client cxfClient = ClientProxy.getClient(port); cxfClient.getOutInterceptors().add(new HeaderInterceptor(Phase.WRITE));