Skip to content

Commit

Permalink
Merge pull request hollischuang#172 from lowking/master
Browse files Browse the repository at this point in the history
修正一些错别字
  • Loading branch information
hollischuang authored Feb 14, 2022
2 parents 964d050 + 5d64055 commit 4319b3d
Show file tree
Hide file tree
Showing 12 changed files with 20 additions and 20 deletions.
2 changes: 1 addition & 1 deletion docs/advance/design-patterns/abstract-factory-pattern.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
>
> Product(具体产品):定义具体工厂生产的具体产品对象实现抽象产品接口中定义的业务方法

本文的例子采用一个汽车代工厂造汽车的例子假设我们是一家汽车代工厂商我们负责给奔驰和特斯拉两家公司制造车子我们简单的把奔驰车理解为需要加油的车特斯拉为需要充电的车其中奔驰车中包含跑车和商务车两种特斯拉同样也包含奔驰车和商务车
本文的例子采用一个汽车代工厂造汽车的例子假设我们是一家汽车代工厂商我们负责给奔驰和特斯拉两家公司制造车子我们简单的把奔驰车理解为需要加油的车特斯拉为需要充电的车其中奔驰车中包含跑车和商务车两种特斯拉同样也包含跑车和商务车

[<img src="http://www.hollischuang.com/wp-content/uploads/2016/04/QQ20160419-1.png" alt="QQ20160419-1" width="657" height="554" class="alignnone size-full wp-image-1422" />][6]

Expand Down
6 changes: 3 additions & 3 deletions docs/advance/design-patterns/adapter-pattern.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ GOF中将适配器模式分为类适配器模式和对象适配器模式。区
public void charge(){
System.out.println("开始给我的GalaxyS7手机充电...");
microUsbInterface.chargeWithMicroUsb();
System.out.println("开始给我的GalaxyS7手机充电...");
System.out.println("结束给我的GalaxyS7手机充电...");
}

public MicroUsbInterface getMicroUsbInterface() {
Expand Down Expand Up @@ -203,14 +203,14 @@ GOF中将适配器模式分为类适配器模式和对象适配器模式。区
==============================
开始给我的GalaxyS7手机充电...
使用MicroUsb型号的充电器充电...
开始给我的GalaxyS7手机充电...
结束给我的GalaxyS7手机充电...
==============================
开始给我的Iphone6Plus手机充电...
使用MicroUsb型号的充电器充电...
结束给我的Iphone6Plus手机充电...


上面的例子通过适配器把一个MicroUsb型号的充电器用来给Iphone充电从代码层面就是通过适配器复用了MicroUsb接口及其实现类在很大程度上福永了已有的代码
上面的例子通过适配器把一个MicroUsb型号的充电器用来给Iphone充电从代码层面就是通过适配器复用了MicroUsb接口及其实现类在很大程度上复用了已有的代码

## 优缺点

Expand Down
4 changes: 2 additions & 2 deletions docs/advance/design-patterns/strategy-pattern.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@

@Override
public double calPrice(double bookPrice) {
System.out.println("对于中级会员的折扣为20%");
System.out.println("对于高级会员的折扣为20%");
return bookPrice * 0.8;
}
}
Expand Down Expand Up @@ -149,7 +149,7 @@
}
}

//对于中级会员的折扣为20%
//对于高级会员的折扣为20%
//高级会员图书的最终价格为:240.0
//对于中级会员的折扣为10%
//中级会员图书的最终价格为:270.0
Expand Down
2 changes: 1 addition & 1 deletion docs/basics/concurrent-coding/concurrent.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
并发Concurrent),在操作系统中是指一个时间段中有几个程序都处于已启动运行到运行完毕之间且这几个程序都是在同一个处理机上运行

那么操作系统视如何实现这种并发的呢
那么操作系统是如何实现这种并发的呢

现在我们用到操作系统无论是WindowsLinux还是MacOS等其实都是**多用户多任务分时操作系统**。使用这些操作系统的用户是可以同时干多件事的

Expand Down
2 changes: 1 addition & 1 deletion docs/basics/concurrent-coding/debug-in-multithread.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

但是我之前面试过很多人很多人都知道多线程怎么实现但是却不知道如何调试多线程的代码这篇文章我们来介绍下如何调试多线程的代码

首先我们写一个多线程的例子使用继承Runnable接口的方式定义多个线程并启动执行
首先我们写一个多线程的例子使用实现Runnable接口的方式定义多个线程并启动执行

/**
* @author Hollis
Expand Down
2 changes: 1 addition & 1 deletion docs/basics/java-basic/enum-class.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ Java中定义枚举是使用enum关键字的,但是Java中其实还有一个ja

这个类我们在日常开发中不会用到但是其实我们使用enum定义的枚举其实现方式就是通过继承Enum类实现的

当我们使用enmu来定义一个枚举类型的时候编译器会自动帮我们创建一个final类型的类继承Enum类所以枚举类型不能被继承
当我们使用enum来定义一个枚举类型的时候编译器会自动帮我们创建一个final类型的类继承Enum类所以枚举类型不能被继承
12 changes: 6 additions & 6 deletions docs/basics/java-basic/enum-singleton.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
}
}
return singleton;
return singleton;
}
}

Expand Down
2 changes: 1 addition & 1 deletion docs/basics/java-basic/final-string.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ String s2 = s;

当我们在程序中传递一个字符串的时候如果这个字符串的内容是不可变的那么我们就可以相信这个字符串中的内容

但是如果是可变的那么这个字符串内容就可能随时都被修改那么这个字符串内容就完全可信了这样整个系统就没有安全性可言了
但是如果是可变的那么这个字符串内容就可能随时都被修改那么这个字符串内容就完全不可信了这样整个系统就没有安全性可言了

#### 线程安全

Expand Down
2 changes: 1 addition & 1 deletion docs/basics/java-basic/hash-in-hashmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
}


前面我说过,`indexFor`方法其实主要是将hash生成的整型转换成链表数组中的下标那么`return h & (length-1);`是什么意思呢其实他就是取模Java之所有使用位运算(&)来代替取模运算(%),最主要的考虑就是效率。**位运算(&)效率要比代替取模运算(%)高很多主要原因是位运算直接对内存数据进行操作不需要转成十进制因此处理速度非常快。**
前面我说过,`indexFor`方法其实主要是将hash生成的整型转换成链表数组中的下标那么`return h & (length-1);`是什么意思呢其实他就是取模Java之所以使用位运算(&)来代替取模运算(%),最主要的考虑就是效率。**位运算(&)效率要比代替取模运算(%)高很多主要原因是位运算直接对内存数据进行操作不需要转成十进制因此处理速度非常快。**

那么为什么可以使用位运算(&)来实现取模运算(%)这实现的原理如下

Expand Down
2 changes: 1 addition & 1 deletion docs/basics/java-basic/hashmap-default-capacity.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ Step 1 怎么理解呢?其实是对一个二进制数依次向右移位,然

### 扩容

除了初始化的时候回指定HashMap的容量在进行扩容的时候其容量也可能会改变
除了初始化的时候会指定HashMap的容量在进行扩容的时候其容量也可能会改变

HashMap有扩容机制就是当达到扩容条件时会进行扩容HashMap的扩容条件就是当HashMap中的元素个数size超过临界值threshold时就会自动扩容

Expand Down
2 changes: 1 addition & 1 deletion docs/basics/java-basic/length-of-string.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,4 +134,4 @@ int 是一个 32 位变量类型,取正数部分来算的话,他们最长可

在运行期长度不能超过Int的范围否则会抛异常

最后这个知识点我录制了视频(https://www.bilibili.com/video/BV1uK4y1t7H1/),其中有关于如何进行实验测试、如何查阅Java规范以及如何对javac进行deubg的技巧。欢迎进一步学习。
最后这个知识点我录制了视频([点击跳转](https://www.bilibili.com/video/BV1uK4y1t7H1/)) ,其中有关于如何进行实验测试、如何查阅Java规范以及如何对javac进行deubg的技巧。欢迎进一步学习。
2 changes: 1 addition & 1 deletion docs/basics/object-oriented/java-pass-by.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@

* 传值调用值传递
* 在传值调用中实际参数先被求值然后其值通过复制被传递给被调函数的形式参数因为形式参数拿到的只是一个"局部拷贝",所以如果在被调函数中改变了形式参数的值并不会改变实际参数的值
* 传引用调用应用传递
* 传引用调用引用传递
* 在传引用调用中传递给函数的是它的实际参数的隐式引用而不是实参的拷贝因为传递的是引用所以如果在被调函数中改变了形式参数的值改变对于调用者来说是可见的
* 传共享对象调用共享对象传递
* 传共享对象调用中先获取到实际参数的地址然后将其复制并把该地址的拷贝传递给被调函数的形式参数因为参数的地址都指向同一个对象所以我们称也之为"传共享对象",所以如果在被调函数中改变了形式参数的值调用者是可以看到这种变化的
Expand Down

0 comments on commit 4319b3d

Please sign in to comment.