Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修复markdown格式错误,导致显示异常。 #120

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions contents/android-sdk-installation-doesnt-find-jdk.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
##安装Android SDK的时候找不到JDK
## 安装Android SDK的时候找不到JDK

###问题
### 问题
我在我的win7 64位的系统上安装Android SDK时,jdk-6u23-windows-x64.exe已经安装上了,但是Android SDK的安装程序却因为找不到已安装的JDK无法继续下去。
这个问题出现过吗?有没有办法解决呢?

![](http://ww2.sinaimg.cn/large/0060lm7Tgw1f72ny3m6oaj30ds0a0gmi.jpg)

###回答1:
### 回答1:
当你看到这个提示(找不到jdk)的时候按Back(返回),然后再点Next(下一步)。这个时候,它将会去寻找JDK

###回答2:
### 回答2:
实际安装:

- 系统:windows 8.1
Expand Down
12 changes: 6 additions & 6 deletions contents/avoiding-null-statements-in-java.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##去掉烦人的“!=null"(判空语句)
## 去掉烦人的“!=null"(判空语句)

###问题
### 问题
为了避免空指针调用,我们经常会看到这样的语句
```java
if (someobject != null) {
Expand All @@ -9,7 +9,7 @@ if (someobject != null) {
```
最终,项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢?

###回答
### 回答

这是初、中级程序猿经常会遇到的问题。他们总喜欢在方法中返回null,因此,在调用这些方法时,也不得不去判空。另外,也许受此习惯影响,他们总潜意识地认为,所有的返回都是不可信任的,为了保护自己程序,就加了大量的判空。

Expand All @@ -20,15 +20,15 @@ if (someobject != null) {

你可能还不明白这两句话的意思,不急,继续往下看,接下来将详细讨论这两种情况

####先说第2种情况
#### 先说第2种情况
null就是一个不合理的参数,就应该明确地中断程序,往外抛错误。这种情况常见于api方法。例如你开发了一个接口,id是一个必选的参数,如果调用方没传这个参数给你,当然不行。你要感知到这个情况,告诉调用方“嘿,哥们,你传个null给我做甚"。

相对于判空语句,更好的检查方式有两个

1. assert语句,你可以把错误原因放到assert的参数中,这样不仅能保护你的程序不往下走,而且还能把错误原因返回给调用方,岂不是一举两得。(原文介绍了assert的使用,这里省略)
2. 也可以直接抛出空指针异常。上面说了,此时null是个不合理的参数,有问题就是有问题,就应该大大方方往外抛。

####第1种情况会更复杂一些。
#### 第1种情况会更复杂一些。
这种情况下,null是个”看上去“合理的值,例如,我查询数据库,某个查询条件下,就是没有对应值,此时null算是表达了“空”的概念。

这里给一些实践建议:
Expand Down Expand Up @@ -88,7 +88,7 @@ ParserFactory.getParser().findAction(someInput).doSomething();



####其他回答精选:
#### 其他回答精选:
- 如果要用equal方法,请用object<不可能为空>.equal(object<可能为空>))
例如:
使用
Expand Down
6 changes: 3 additions & 3 deletions contents/breaking-out-of-nested-loops-in-java.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##从一个多层嵌套循环中直接跳出
## 从一个多层嵌套循环中直接跳出

###问题
### 问题
Java中如何从一个多层嵌套循环中退出,例如下面,有两个循环,break只能退出一个for循环,不能直接跳过第二个for循环
```java
for (Type type : types) {
Expand All @@ -12,7 +12,7 @@ for (Type type : types) {
}}
```

###回答
### 回答

可以用break+label的语法,例子如下
```java
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##给3个布尔变量,当其中有2个或者2个以上为true才返回true
## 给3个布尔变量,当其中有2个或者2个以上为true才返回true

###问题
### 问题
给3个boolean变量,a,b,c,当其中有2个或2个以上为true时才返回true?
* 最笨的方法:
```java
Expand Down
2 changes: 1 addition & 1 deletion contents/convert-a-string-to-an-enum-in-java.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
##如何将String转换为enum
## 如何将String转换为enum

### 问题
假设定义了如下的enum(枚举):
Expand Down
2 changes: 1 addition & 1 deletion contents/converting-string-to-int-in-java.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
##如何将String转换为Int
## 如何将String转换为Int

有两种方式

Expand Down
8 changes: 4 additions & 4 deletions contents/create-arraylist-from-array.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
##将数组转换为List
## 将数组转换为List

###问题
### 问题
假设有数组
```java
Element[] array = {new Element(1),new Element(2),new Element(3)};
```
如何将其转换为ArrayList`<Element>` arraylist = ???

### 回答1 ###
### 回答1

`new ArrayList<Element>(Arrays.asList(array))`

###回答2
### 回答2

Arrays.asList(array)或者Arrays.asList(new Element(1),new Element(2),new Element(3))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
##如何处理 java.lang.outOfMemoryError PermGen space error
## 如何处理 java.lang.outOfMemoryError PermGen space error

###问题
### 问题

最近,我在过运行我的web应用时得到:java.lang.OutOfMemoryError: PermGen space。
我的应用是一个典型的 Hibernate/JPA + IceFaces/JSF的应用.运行于Tomcat6.0和jdk1.6.我发布了多次以后,产生了这个错误。

是什么原因造成的,我如何避免?我怎样修复?


#回答
### 回答


解决的方案是当TomeCat启时,在jvm的的命令行添加参数
Expand Down
6 changes: 3 additions & 3 deletions contents/declare-array-in-java.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
##在java中声明数组
## 在java中声明数组

###问题描述:
### 问题描述:
你是如何在Java中声明数组的。

###回答:
### 回答:
你可以直接用数组声明,或者通过数组的字面常量(array literal )声明

对于原始类型(primitive types):
Expand Down
4 changes: 2 additions & 2 deletions contents/does-finally-always-execute-in-java.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
##问题
## 问题

有一个 try/catch 代码块,其中包含一个打印语句。finally代码块总会被执行么?

Expand All @@ -17,7 +17,7 @@ finally {
}
```

##回答
## 回答

1. ```finally``` 将会被调用。
只有以下情况 ```finally``` 不会被调用:
Expand Down
6 changes: 3 additions & 3 deletions contents/get-current-stack-trace-in-java.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
##获取完整的堆栈信息
## 获取完整的堆栈信息

###问题
### 问题
捕获了异常后,如何获取完整的堆栈轨迹(stack trace)

###回答
### 回答
```java
String fullStackTrace = org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e)
```
Expand Down
12 changes: 6 additions & 6 deletions contents/how-can-i-convert-a-stack-trace-to-a-string.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
#怎样将堆栈追踪信息转换为字符串
##问题
# 怎样将堆栈追踪信息转换为字符串
## 问题
将`Throwable.getStackTrace()`的结果转换为一个字符串来来描述堆栈信息的最简单的方法是什么


###最佳答案
### 最佳答案
可以用下面的方法将异常堆栈信息转换为字符串类型。该类在Apache commons-lang-2.2.jar中可以找到:
[`org.apache.commons.lang.exception.ExceptionUtils.getStackTrace(Throwable)`](org.apache.commons.lang.exception.ExceptionUtils.getStackTrace\(Throwable\))

###答案二
### 答案二
用 [`Throwable.printStackTrace(PrintWriter pw)`](https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html#printStackTrace-java.io.PrintWriter-)可以输出堆栈信息:
````java
StringWriter sw = new StringWriter();
Expand All @@ -16,14 +16,14 @@ t.printStackTrace(pw);
sw.toString(); // stack trace as a string
````

###答案三
### 答案三
````java
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
````

###答案四
### 答案四
````java
public String stackTraceToString(Throwable e) {
StringBuilder sb = new StringBuilder();
Expand Down
6 changes: 3 additions & 3 deletions contents/how-can-i-generate-an-md5-hash.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
##如何计算MD5值
## 如何计算MD5值

###问题
### 问题
Java中有没有方法可以计算一个String的MD5值?


###回答
### 回答
你可以用 ```MessageDigest``` 的MD5实例来计算String的MD5值。

使用 ```MessageDigest``` 和 String 时,一定要显式声明你的数据编码类型。如果你使用无参的 ```String.getBytes()``` , 它会以当前平台的默认编码来转换数据。不同平台的默认编码可能是不同的,这可能会导致你的数据不一致。
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
##能否在一个构造器中调用另一个构造器
## 能否在一个构造器中调用另一个构造器

###问题
### 问题
能否在一个构造器中调用另一个构造器(在同一个类中,不是子类)?如果可以,怎么做?
调用另一个构造器的最好方法是什么(如果有几种方法可以选择的话)?


###回答
### 回答
可以这样做:
```java
public class Foo
Expand Down
4 changes: 2 additions & 2 deletions contents/how-do-i-compare-strings-in-java.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
##在java中如何对比(compare)string
## 在java中如何对比(compare)string

- `==`对应的是指针相等,也就是他们是否为同一个对象
- `.equals()`对应的是值相等,也就是逻辑相等
Expand Down Expand Up @@ -39,6 +39,6 @@ new String("test") == new String("test") // --> false
}
```

###其他
### 其他
- 如果你重写了equal方法,记得相对应地修改hashcode方法,否则将会违反这两个方法的对等关系,如果两个对象是相等(equal)的,那么两个对象调用hashCode必须产生相同的整数结果,即:equal为true,hashCode必须为true,equal为false,hashCode也必须为false
- 如果要忽略大小写进行对比,可以用equalsIgnoreCase()方法
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##如何从文件里读取字符串
## 如何从文件里读取字符串

###从文件里读取所有文本:
### 从文件里读取所有文本:

代码:
```java
Expand All @@ -13,14 +13,14 @@ static String readFile(String path, Charset encoding)

```

###一行一行读入文本:
### 一行一行读入文本:

Java 7 提供了一个方便的方法可以直接将文件中的文本一行一行读入,存放在一个List容器里。
```JAVA
List<String> lines = Files.readAllLines(Paths.get(path), encoding);
```

###内存使用率
### 内存使用率

第一个方法,一次读取所有文本的方法,占用内存较多,因为它一次性保留了文件的所有原始信息,包括换行符之类的“无用”字符。

Expand All @@ -30,7 +30,7 @@ List<String> lines = Files.readAllLines(Paths.get(path), encoding);

这里的“很大”是相对于计算机性能的。一般来说,几十个G的文件应当算是大文件。

###字符编码
### 字符编码

还有一件事需要注意,就是字符编码。不同的平台有自己的默认编码,所以有时候你的程序需要指定编码,来保持平台无关/跨平台。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ servletcontainer 是附属于webserver的,而这个webserver会持续监听一
在有filter的情况下,```doFilter()```方法会被触发。当代码调用```chain.doFilter(request, response)```时候,请求会经过下一个过滤器filter,如果没有了过滤器,会到达servlet。在servlets的情况下,```service()```触发,然后根据```request.getMethod()```确定执行doGet()还是```doPost()```,如果当前servlet找不到请求的方法,返回405error。

request对象提供了HTTP请求所有的信息,比如request headers和request body,response对象提供了控制和发送HTTP响应的的能力,并且以你想要的方式,比如设置headers和body。当HTTP响应结束,请求和响应对象会被销毁(实际上,大多数container将会清洗到这些对象的状态然后回收这些事例以重新利用)
####httpSession
#### httpSession
当客户端第一次访问webapp或者通过```request.getSession()```方法第一次获取httpSession
,servletcontainer 将会创建一个新的HttpSession 对象,产生一个长的唯一的ID标记session(可以通过session.getId()),并且将这个session存储在server内存中。servletcontainer 同时会在HTTP response的Header中设置```Set-Cookie```cookie值,其中cookie name为JSESSIONID,cookie value为唯一的长ID值。

Expand Down
6 changes: 3 additions & 3 deletions contents/how-to-avoid-java-code-in-jsp-files.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##如何避免在JSP文件中使用Java代码
## 如何避免在JSP文件中使用Java代码

###问题
### 问题
如何避免在JSP文件中使用Java代码?

我对Java EE不是很熟悉,我知道类似如下的三行代码
Expand All @@ -11,7 +11,7 @@
```
这三行代码是学校教的老式代码。在JSP 2,存在一些方法可以避免在JSP文件中使用Java代码。有人可以告诉我在JSP 2中如何避免使用Java代码吗,这些方法该如何使用?

###回答
### 回答
在大约十年前,taglibs(比如JSTL)和EL(EL表达式,`${}`)诞生的时候,在JSP中使用scriptlets(类似`<% %>`)这种做法,就确实已经是不被鼓励使用的做法了。

scriptlets 主要的缺点有:
Expand Down
10 changes: 5 additions & 5 deletions contents/how-to-concatenate-two-arrays-in-java.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
##如何便捷地将两个数组合到一起
## 如何便捷地将两个数组合到一起

###一行代码搞定
### 一行代码搞定
Apache Commons Lang library [`ArrayUtils.addAll(T[], T...)`](http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/ArrayUtils.html#addAll%28T%5B%5D,%20T...%29)就是专门干这事的

代码:
```java
String[] both = ArrayUtils.addAll(first, second);
```

###不借助依赖包
### 不借助依赖包

####非泛型
#### 非泛型
把下面的`Foo`替换成你自己的类名
```java
public Foo[] concat(Foo[] a, Foo[] b) {
Expand All @@ -23,7 +23,7 @@ public Foo[] concat(Foo[] a, Foo[] b) {
}
```

####泛型
#### 泛型
```java
public <T> T[] concatenate (T[] a, T[] b) {
int aLen = a.length;
Expand Down
2 changes: 1 addition & 1 deletion contents/how-to-split-a-string-in-java.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
##如何分割(split)string字符串
## 如何分割(split)string字符串
使用[`String#split()`](http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-)方法

如下所示:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
##Java修饰符:public,protected,private,不加修饰符。有什么区别呢?
## Java修饰符:public,protected,private,不加修饰符。有什么区别呢?


如下表所示,Y表示能访问(可见性),N表示不能访问,例如第一行的第3个Y,表示类的变量/方法如果是用public修饰,它的子类能访问这个变量/方法
Expand Down
Loading