Java 使用 GNU 的 Gettext 工具实现国际化

在 Java 中最常见的实现国际化(i18n)的方式应该是使用 .properties 资源文件。本文将使用另一种方式实现 Java 代码的国际化与本地化(l10n)。
Gettext 是一个可用于多种语言的国际化工具。相比于传统的 key – value 资源文件方式,其不同点有:

使用 properties 的传统方式 GNU gettext
key 是短文本 key 是纯文本形式的未翻译内容
翻译文件通常命名为 resources_locale.properties, 文件内容只能包含 ASCII 文本,非 ASCII 文字会被用 Unicode 编码代替 翻译文件通常命名为resources.local.po,文件内容可以使用任意编码可以包含任意字符
ResourceBundle.getString会在找不到翻译内容时抛出异常 gettext当找不到翻译内容时会返回 key.
不支持单复数及上下文翻译 支持单复数和上下文相关的翻译

继续阅读“Java 使用 GNU 的 Gettext 工具实现国际化”

在 Wildfly 10.x 中使用自带 ActiveMQ 提供的 Java 消息服务(JMS)

原先 JBoss 自带的消息服务是 HornetQ 实现的,后来 HornetQ 合并到 Apache ActiveMQ 中了,因此新版的 WildFly 集成的默认消息服务实现就是 ActiveMQ 了。
本文将使用一个小示例从零开始演示如何在 WildFly 中使用 JMS. 本示例的大纲如下:

  1. 怎样在 WildFly 中启用 JMS
  2. 怎样在 Java 代码中使用 JMS
    1. 消息发送
    2. 消息同步接收
    3. 消息异步接收
    4. 消息驱动Bean

继续阅读“在 Wildfly 10.x 中使用自带 ActiveMQ 提供的 Java 消息服务(JMS)”

使用 Maven 通过 IDEA 开发 JPA + EJB + JSF 项目

之前写过使用IDEA创建EJB工程的文章,不过现在有个课题需要结合 JPA + EJB + JSF, 虽然可以按照前文所述方法进行,但是我想使用 Maven 进行管理,因此直接在新建工程时选择 EJB 项目就不行了,应该选择 Maven 项目。
你可以先看看之前的文章:使用 IDEA 创建 EJB 工程
https://youthlin.com/?p=1265
继续阅读“使用 Maven 通过 IDEA 开发 JPA + EJB + JSF 项目”

实习总结

一、 前言

我在7月19号来到网宿,转眼间来到网宿厦门已经一个多月了。原本打算九月回学校上课的,但由于学校在一周前开学了,请假又麻烦,因此决定结束实习回去上课。
这是我人生中第一次走出学校的实习经历,在网宿的这一个多月,我每天都过得很充实,也在网宿学到了很多宝贵的经验。
在刚来时参加的实习生茶话会,CDN 事业部的利民老师就交代过了,实习结束需要提交一份两千字实习总结报告。想起当时大家一圈儿实习生围在一起一边吃水果一边互相讨论的情景,还感觉就在几天前,没想到这么快我就要写实习总结了。不过就算没有要求提交实习总结,我觉得这段经历也是有整理记录的价值的。
继续阅读“实习总结”

C/C++ Socket编程

上个月的计算机网络课程设计结课了,整理一下。
共四个题:

  1. 实现简单的服务器-客户端通信。
  2. 实现1.的多线程版。
  3. 用RawSocket监听网络。
  4. 实现文件传输。

进入正题之前先插一个小题目:

『智力题』AB各有一把钥匙和锁,现在A要用加锁的盒子通过快递C传一个东西给B,但是如果C能打开盒子的话就会私吞这个东西,问AB该怎么做才能确保东西能从A传给B。(面试题)

文章最后可能有答案。
继续阅读“C/C++ Socket编程”

树结构的存储

面试题:

怎样把一棵树存到文件中,然后读入恢复为原来的树。以二叉树为例。

在面试官提示了“把树变成一维”后我尝试用非递归遍历结果还是没写出来(真是自己作死,干嘛要用非递归呢)
回到学校看了一下学数据结构时书上的代码。首先需要创建一棵树,书上是设置了一个不可能出现在树中的值作为结束符,用先根序列输入创建树。比如

可以用(-1,[1,2,4,-1,-1,5,-1,-1,3,-1,-1])来创建。
恩,那就简单了,存储时只需要把这个序列和结束符存起来就行了呗。写完后才发现这题这么简单……
继续阅读“树结构的存储”