申艳超-博客

搜索引擎、分布式、高性能、NLP、ElasticSearch、Solr

0%

Java的编译存储

Java是跨平台的一种语言,这一概念想必已经深入人心。Java是如何实现跨平台的呢?其中起到重大作用的便是Unicode编码。在使用IDE进行开发时,比如ECLIPSE,IDEA等,可以指定源文件(.java)的编码格式,此处的编码格式是指Java文件自身的编码。Java文件可以用各种编码进行存储,考虑到兼容中文字符,大多采用GBK,UTF-8,GB18030等编码格式。但是经过javac命令编译后,生成的.class文件毫无疑问都是Unicode编码。这样在class被加载进JVM后,所有的对象都是Unicode进行编码的,这确保了Java的跨平台特性。
简言之

.java(任意编码) —> .class(Unicode) —> JVM内(Unicode)

Read more »

引子

在使用诸如UltraEditor,NotePad++等编辑工具时,经常会遇到encode进行转换的情况。以NotePad++为例,一篇ASCII编码的文本,通过菜单栏Encoding->convert to **进行编码格式的转换。我却发现一个奇怪的问题,下拉框里有这样两个选项:

  • Convert to UTF-8
  • Convert to UTF-8 without BOM

同样的是转化为UTF-8编码,为什么还牵涉到BOM呢。

Read more »

下面是JDK中有关23个经典设计模式的示例:

Structural(结构模式)

Adapter:

把一个接口或是类变成另外一种。

● java.util.Arrays#asList()
● javax.swing.JTable(TableModel)
● java.io.InputStreamReader(InputStream)
● java.io.OutputStreamWriter(OutputStream)
● javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
● javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()

Bridge:

把抽象和实现解藕,于是接口和实现可在完全独立开来。

● AWT (提供了抽象层映射于实际的操作系统)
● JDBC

Read more »

HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message-header,即http header消息。http header 消息通常被分为4个部分:general; header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确。根据维基百科对http header内容的组织形式,大体分为Request和Response两部分.

Read more »

GB2312字符集

GB2312又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原中国国家标准总局发布,1981年5月1日实施,是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖99.75%的使用频率,基本满足了汉字的计算机处理需要。在中国大陆和新加坡获广泛使用。

Read more »

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节”。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机”。

Read more »

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。


XML 实例文档

我们将在下面的例子中使用这个 XML 文档。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>

<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>
Read more »

Maven安装

1.下载Maven:从Maven官方下载,并解压。比如解压到:D:\apache-maven-3.0.4

2.配置环境变量:

  • M2_HOME:D:\apache-maven-3.0.4
  • path:%M2_HOME%\bin;

打开cmd命令窗口,验证配置是否成功:mvn -v。成功后会显示正确的版本信息。

3.修改默认的repository

maven默认放在C:\Users\user.m2\repository目录下(不同系统可能不一样)。Window下一般不建议放在C盘。可以通过如下方式修改:

进入%M2_HOME%\conf\settings.xml中,添加<localRepository>e:/repo</localRepository>这样一行。默认的路径就指向新的目录了。

一、常见的Java内存溢出有以下三种:

  1. java.lang.OutOfMemoryError: Java heap space —-JVM Heap(堆)溢出
    JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。
    可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young Generation 和Tenured Generaion 之和。
    在JVM中如果98%的时间是用于GC,且可用的Heap size 不足2%的时候将抛出此异常信息。
    解决方法:手动设置JVM Heap(堆)的大小。

    Read more »