diff --git a/BOOKLIST.md b/BOOKLIST.md index 07b1c5b5..bdd8eb92 100644 --- a/BOOKLIST.md +++ b/BOOKLIST.md @@ -64,7 +64,7 @@ # 开发工具 -- [Pro Git](https://book.douban.com/subject/3420144/) +- [Pro Git](https://git-scm.com/book/zh/v2) - [正则表达式必知必会](https://book.douban.com/subject/2269648/) # 编码实践 diff --git a/README.md b/README.md index ff207ca2..ed5960b5 100644 --- a/README.md +++ b/README.md @@ -133,31 +133,39 @@ Google 开源项目的代码风格规范。 **关于仓库** -[BOOKLIST](https://github.com/CyC2018/Interview-Notebook/blob/master/BOOKLIST.md),这个书单是笔者至今看的一些比较好的技术书籍,虽然没有全都翻完,但是每本书多多少少都看过一部分。 +这个仓库是笔者的一个学习笔记,主要总结一些比较重要的知识点,希望对大家有所帮助。 -这个仓库是笔者的一个学习笔记,主要记录一些比较重要的知识点,希望对大家有所帮助。 +笔记不是从网上到处复制粘贴拼凑而来,虽然有少部分内容会直接引入书上原文或者官方技术文档的原文,但是没有直接摘抄其他人的博客文章,只做了参考,参考的文章会在最后给出链接。 -笔记并不是从网上到处复制粘贴拼凑而来,虽然少部分内容会直接引入书上原文或者官方技术文档的原文,但是没有直接摘抄其他人的博客文章,只做了一点参考,参考的文章会在最后给出链接。 +[BOOKLIST](https://github.com/CyC2018/Interview-Notebook/blob/master/BOOKLIST.md),这个书单是笔者至今看的一些比较好的技术书籍,虽然没有全都看完,但每本书多多少少都看了一部分。 **如何贡献** 笔记内容是笔者一个字一个字打上去的,难免会有一些笔误,如果发现笔误可直接在相应文档进行编辑修改。 +欢迎提交对本仓库的改进建议~ + **授权相关** -虽然没有加开源协议,但是默认允许非商业使用。转载使用请注明出处,谢谢。 +虽然没有加开源协议,但是默认允许非商业使用。 + +转载使用请注明出处,谢谢! **上传方案** 笔者在本地使用为知笔记软件进行书写,为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括文本文件的导出、提取图片、Markdown 文档转换、Git 同步。 -进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。这里提供了笔者实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 +进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。 + +这里提供了笔者实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 **排版指南** -笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/) 进行排版,以保证内容的可读性。这里提供了笔者实现的中英混排文档在线排版工具:[Text-Typesetting](https://github.com/CyC2018/Markdown-Typesetting),目前实现了加空格的功能,之后打算实现对英文专有名词提示首字母大写的功能。 +笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/) 进行排版,以保证内容的可读性。 -不使用 `![]()` 这种方式来引用图片是为了能够控制图片以合适的大小显示。而且 GFM 不支持 `
![]()
` 让图片居中显示,只能使用 `
` ,所以只能使用 img 标签来引用图片。 +笔记不使用 `![]()` 这种方式来引用图片,而是用 `` 标签。一方面是为了能够控制图片以合适的大小显示,另一方面是因为 GFM 不支持 `
![]()
` 让图片居中显示,只能使用 `
` 达到居中的效果。 + +这里提供了笔者实现的中英混排文档在线排版工具:[Text-Typesetting](https://github.com/CyC2018/Markdown-Typesetting)。 **声明** diff --git a/notes/设计模式.md b/notes/设计模式.md index 72c1cd81..def098bb 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -151,7 +151,29 @@ uniqueInstance 采用 volatile 关键字修饰也是很有必要的。`uniqueIns 使用 volatile 可以禁止 JVM 的指令重排,保证在多线程环境下也能正常运行。 -(五)枚举实现 + +(五)静态内部类实现 + +这种实现方式的原理:当静态类加载时,静态内部类没有加载进内存。只有当外部调用`getInstance()`方法,静态内部类才会被加载并实例化一个单例的对象,之后每次 +调用`getInstance()`都会获取相同的对象。此方法不需要同步。 + +```java +public class Singleton { + + private Singleton() { + } + + private static class SingletonHelper { + private static final Singleton INSTANCE = new Singleton(); + } + + public static Singleton getUniqueInstance() { + return SingletonHelper.INSTANCE; + } +} +``` + +(六)枚举实现 这是单例模式的最佳实践,它实现简单,并且在面对复杂的序列化或者反射攻击的时候,能够防止实例化多次。