-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathalgolia.json
More file actions
1 lines (1 loc) · 187 KB
/
algolia.json
File metadata and controls
1 lines (1 loc) · 187 KB
1
[{"author":null,"categories":null,"content":null,"date":1579510414,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomyTerm","lang":"en","lastmod":1579510414,"objectID":"","permalink":"https://quguang.wang/categories/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/categories/","section":"categories","summary":"","tags":null,"title":"Categories","type":"categories","url":"/categories/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1579510414,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"section","lang":"en","lastmod":1579510414,"objectID":"","permalink":"https://quguang.wang/post/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/post/","section":"post","summary":"","tags":null,"title":"Posts","type":"post","url":"/post/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1579510414,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"home","lang":"en","lastmod":1579510414,"objectID":"","permalink":"https://quguang.wang/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/","section":"","summary":"","tags":null,"title":"Quguang's Blog","type":"page","url":"/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1579510414,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1579510414,"objectID":"","permalink":"https://quguang.wang/categories/tech/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/categories/tech/","section":"categories","summary":"","tags":null,"title":"Tech","type":"categories","url":"/categories/tech/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1579510414,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1579510414,"objectID":"87d78e1f2db7db55f593103477dcd9d6","permalink":"https://quguang.wang/post/how-to-read-redis-source-code/","publishdate":"2020-01-20T16:53:34+08:00","readingtime":6,"relpermalink":"/post/how-to-read-redis-source-code/","section":"post","summary":"\u003cp\u003e在这篇文章中, 我将向大家介绍一种我认为比较合理的 Redis 源码阅读顺序, 希望可以给对 Redis 有兴趣并打算阅读 Redis 源码的朋友带来一点帮助。\u003c/p\u003e","tags":[],"title":"如何阅读 Redis 源码?","type":"post","url":"/post/how-to-read-redis-source-code/","weight":0,"wordcount":2540},{"author":null,"categories":null,"content":null,"date":1578662858,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1578662858,"objectID":"","permalink":"https://quguang.wang/tags/mysql/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/mysql/","section":"tags","summary":"","tags":null,"title":"MySQL","type":"tags","url":"/tags/mysql/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1578662858,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1578662858,"objectID":"9ebece7c95bff8fcbd7fd8b9c6f9477f","permalink":"https://quguang.wang/post/mysql-next-key-lock/","publishdate":"2020-01-10T21:27:38+08:00","readingtime":10,"relpermalink":"/post/mysql-next-key-lock/","section":"post","summary":"\u003cp\u003e本文主要介绍了幻读带来的问题 ,以及 mysql给出的解决办法,即 next-key lock。\u003c/p\u003e","tags":["MySQL"],"title":"mysql-行锁+间隙锁(next-key lock)","type":"post","url":"/post/mysql-next-key-lock/","weight":0,"wordcount":4516},{"author":null,"categories":null,"content":null,"date":1578662858,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomyTerm","lang":"en","lastmod":1578662858,"objectID":"","permalink":"https://quguang.wang/tags/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/","section":"tags","summary":"","tags":null,"title":"Tags","type":"tags","url":"/tags/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1577494265,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1577494265,"objectID":"","permalink":"https://quguang.wang/tags/jvm/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/jvm/","section":"tags","summary":"","tags":null,"title":"JVM","type":"tags","url":"/tags/jvm/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1577494265,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577494265,"objectID":"1a41d4bd5ff2a6e2a92e7d7623085989","permalink":"https://quguang.wang/post/xiaoe-tech-jvm-06-garbage-collector/","publishdate":"2019-12-28T08:51:05+08:00","readingtime":6,"relpermalink":"/post/xiaoe-tech-jvm-06-garbage-collector/","section":"post","summary":"\u003cp\u003e如果你不合理的设置内存,就会导致新生代内存不充足,然后导致很多对象不停的迁移到老年代去,最后导致老年代也要不停的进行垃圾回收。\u003c/p\u003e\n\n\u003cp\u003e最后这频繁的垃圾回收,就会极大的影响系统的性能。\u003c/p\u003e","tags":["JVM"],"title":"JVM中都有哪些常见的垃圾回收器,各自的特点是什么?","type":"post","url":"/post/xiaoe-tech-jvm-06-garbage-collector/","weight":0,"wordcount":2803},{"author":null,"categories":["Tech"],"content":"","date":1577494265,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577494265,"objectID":"2b312f31d886a7ec863f12ff85bcfe4f","permalink":"https://quguang.wang/post/xiaoe-tech-jvm-07-stop-the-world/","publishdate":"2019-12-28T08:51:05+08:00","readingtime":3,"relpermalink":"/post/xiaoe-tech-jvm-07-stop-the-world/","section":"post","summary":"\u003cp\u003e如果你不合理的设置内存,就会导致新生代内存不充足,然后导致很多对象不停的迁移到老年代去,最后导致老年代也要不停的进行垃圾回收。\u003c/p\u003e\n\n\u003cp\u003e最后这频繁的垃圾回收,就会极大的影响系统的性能。\u003c/p\u003e","tags":["JVM"],"title":"Stop the World”问题分析:JVM最让人无奈的痛点!","type":"post","url":"/post/xiaoe-tech-jvm-07-stop-the-world/","weight":0,"wordcount":1466},{"author":null,"categories":["Tech"],"content":"","date":1577494265,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577494265,"objectID":"0061bb98c47cf9a92eaad84abbf015ee","permalink":"https://quguang.wang/post/xiaoe-tech-jvm-05-jvm-properties-set/","publishdate":"2019-12-28T08:51:05+08:00","readingtime":7,"relpermalink":"/post/xiaoe-tech-jvm-05-jvm-properties-set/","section":"post","summary":"\u003cp\u003e如果你不合理的设置内存,就会导致新生代内存不充足,然后导致很多对象不停的迁移到老年代去,最后导致老年代也要不停的进行垃圾回收。\u003c/p\u003e\n\n\u003cp\u003e最后这频繁的垃圾回收,就会极大的影响系统的性能。\u003c/p\u003e","tags":["JVM"],"title":"线上系统部署时如何设置JVM内存大小","type":"post","url":"/post/xiaoe-tech-jvm-05-jvm-properties-set/","weight":0,"wordcount":3047},{"author":null,"categories":["Tech"],"content":"","date":1577340764,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577340764,"objectID":"60e34263ccd5b8f601406ceff3884606","permalink":"https://quguang.wang/post/xiaoe-tech-jvm-04-garbage-algorithm/","publishdate":"2019-12-26T14:12:44+08:00","readingtime":9,"relpermalink":"/post/xiaoe-tech-jvm-04-garbage-algorithm/","section":"post","summary":"\u003cp\u003e上一篇文章我们重新梳理了一下什么时候触发垃圾回收,以及到底哪些对象可以垃圾回收\u003c/p\u003e\n\n\u003cp\u003e另外,对新生代填满,GC Roots对象,软引用、弱引用,还有finalize()等概念进行了比较细致的梳理。\u003c/p\u003e\n\n\u003cp\u003e那么这篇文章,我们就来看看在对新生代进行垃圾回收的时候,到底是采取一种什么样的算法进行的呢?\u003c/p\u003e","tags":["JVM"],"title":"JVM中有哪些垃圾回收算法,每个算法各自的优劣?","type":"post","url":"/post/xiaoe-tech-jvm-04-garbage-algorithm/","weight":0,"wordcount":4417},{"author":null,"categories":["Tech"],"content":"","date":1577254364,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577254364,"objectID":"8aa6e82c894cf556b546006ebf2c02e9","permalink":"https://quguang.wang/post/xiaoe-tech-jvm-03-heap-stack-metaspace/","publishdate":"2019-12-25T14:12:44+08:00","readingtime":4,"relpermalink":"/post/xiaoe-tech-jvm-03-heap-stack-metaspace/","section":"post","summary":"\u003cp\u003e上一篇文章给大家分析了JVM中的几块内存区域分别都是干什么的,今天的文章就给大家初步介绍一下垃圾回收的概念。\u003c/p\u003e","tags":["JVM"],"title":"JVM的分代模型与垃圾回收机制","type":"post","url":"/post/xiaoe-tech-jvm-03-heap-stack-metaspace/","weight":0,"wordcount":1986},{"author":null,"categories":["Tech"],"content":"","date":1577167964,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577167964,"objectID":"0d707d3bf4e87237a8cc7a93fb4e22af","permalink":"https://quguang.wang/post/xiaoe-tech-jvm-02-memory-partition/","publishdate":"2019-12-24T14:12:44+08:00","readingtime":5,"relpermalink":"/post/xiaoe-tech-jvm-02-memory-partition/","section":"post","summary":"","tags":["JVM"],"title":"JVM的内存区域划分","type":"post","url":"/post/xiaoe-tech-jvm-02-memory-partition/","weight":0,"wordcount":2458},{"author":null,"categories":["Tech"],"content":"","date":1577167964,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577167964,"objectID":"f1890b70f1fcd12ec51ce5f7be59fa33","permalink":"https://quguang.wang/post/xiaoe-tech-jvm-01-classloader/","publishdate":"2019-12-24T14:12:44+08:00","readingtime":6,"relpermalink":"/post/xiaoe-tech-jvm-01-classloader/","section":"post","summary":"","tags":["JVM"],"title":"JVM的类加载机制","type":"post","url":"/post/xiaoe-tech-jvm-01-classloader/","weight":0,"wordcount":2547},{"author":null,"categories":null,"content":null,"date":1577145600,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1577145600,"objectID":"","permalink":"https://quguang.wang/categories/life/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/categories/life/","section":"categories","summary":"","tags":null,"title":"life","type":"categories","url":"/categories/life/","weight":0,"wordcount":0},{"author":null,"categories":["Life"],"content":"","date":1577145600,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1577145600,"objectID":"116b1789d710b062ccb1b1e5a4ff25dd","permalink":"https://quguang.wang/post/life-say-goodbye-to-fake-workhard/","publishdate":"2019-12-24T00:00:00Z","readingtime":1,"relpermalink":"/post/life-say-goodbye-to-fake-workhard/","section":"post","summary":"\u003cp\u003e伪勤奋的几种常见情形,以及解决方法:\u003c/p\u003e","tags":[],"title":"告别伪勤奋","type":"post","url":"/post/life-say-goodbye-to-fake-workhard/","weight":0,"wordcount":234},{"author":null,"categories":[],"content":null,"date":1576763156,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":1700,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1576763156,"objectID":"688cc6db2899817237a7cf850a3b01ca","permalink":"https://quguang.wang/post/resume-01/","publishdate":"2019-12-19T21:45:56+08:00","readingtime":4,"relpermalink":"/post/resume-01/","section":"post","summary":"\u003cp\u003e本文是一个markdown风格语法的简历,模板转载自网络\u003c/p\u003e","tags":["面试"],"title":"我的简历","type":"post","url":"/post/resume-01/","weight":0,"wordcount":1672},{"author":null,"categories":null,"content":null,"date":1576763156,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1576763156,"objectID":"","permalink":"https://quguang.wang/tags/%E9%9D%A2%E8%AF%95/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E9%9D%A2%E8%AF%95/","section":"tags","summary":"","tags":null,"title":"面试","type":"tags","url":"/tags/%E9%9D%A2%E8%AF%95/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1574838723,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1574925123,"objectID":"","permalink":"https://quguang.wang/tags/docker/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/docker/","section":"tags","summary":"","tags":null,"title":"docker","type":"tags","url":"/tags/docker/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1574838723,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":900,"html":"","keywords":["Docker的实现原理","容器","Docker"],"kind":"page","lang":"en","lastmod":1574925123,"objectID":"4f87fdcbed943653714c29c9d7217078","permalink":"https://quguang.wang/post/geektime-kubernetes-docker-introduction.1/","publishdate":"2019-11-27T15:12:03+08:00","readingtime":2,"relpermalink":"/post/geektime-kubernetes-docker-introduction.1/","section":"post","summary":"\u003cp\u003eKubernetes 的网络模型假定了所有 Pod 都在一个可以直接连通的扁平的网络空间中,这在 GCE 里面是现成的网络模型,Kubernetes 假定这个网络已经存在。而在私有云里搭建 Kubernetes 集群,就不能假定这个网络已经存在。我们需要自己实现这个网络假设,将不同节点的 Docker 容器之间的互相访问先打通,然后运行 Kubernetes。比如使用 Flannel。\u003c/p\u003e","tags":["docker","容器"],"title":"《深入剖析Kubernetes》-k8s网络","type":"post","url":"/post/geektime-kubernetes-docker-introduction.1/","weight":0,"wordcount":802},{"author":null,"categories":null,"content":null,"date":1574838723,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1574925123,"objectID":"","permalink":"https://quguang.wang/tags/%E5%AE%B9%E5%99%A8/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E5%AE%B9%E5%99%A8/","section":"tags","summary":"","tags":null,"title":"容器","type":"tags","url":"/tags/%E5%AE%B9%E5%99%A8/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1573379078,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1573379078,"objectID":"","permalink":"https://quguang.wang/categories/note/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/categories/note/","section":"categories","summary":"","tags":null,"title":"note","type":"categories","url":"/categories/note/","weight":0,"wordcount":0},{"author":null,"categories":["note"],"content":"","date":1573379078,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1573379078,"objectID":"85582db152db34529ca2876da3a6a7cc","permalink":"https://quguang.wang/post/reading-note-%E5%85%A8%E7%90%83%E9%80%9A%E5%8F%B2/","publishdate":"2019-11-10T17:44:38+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E5%85%A8%E7%90%83%E9%80%9A%E5%8F%B2/","section":"post","summary":"\u003cp\u003e贯穿全世界的历史。\u003c/p\u003e","tags":[],"title":"《全球通史》","type":"post","url":"/post/reading-note-%E5%85%A8%E7%90%83%E9%80%9A%E5%8F%B2/","weight":0,"wordcount":9},{"author":null,"categories":["note"],"content":"","date":1573375000,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1573375000,"objectID":"7dd43f5c26b425f72b779f6a319d9417","permalink":"https://quguang.wang/post/reading-note-%E4%B8%AD%E5%9B%BD%E5%A4%A7%E5%8E%86%E5%8F%B2/","publishdate":"2019-11-10T16:36:40+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E4%B8%AD%E5%9B%BD%E5%A4%A7%E5%8E%86%E5%8F%B2/","section":"post","summary":"","tags":[],"title":"《中国大历史》","type":"post","url":"/post/reading-note-%E4%B8%AD%E5%9B%BD%E5%A4%A7%E5%8E%86%E5%8F%B2/","weight":0,"wordcount":239},{"author":null,"categories":["note"],"content":"","date":1571739742,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1571739742,"objectID":"480276c7e989991abf7c61a557e7bbbf","permalink":"https://quguang.wang/post/reading-note-%E4%BA%BA%E7%B1%BB%E7%AE%80%E5%8F%B2/","publishdate":"2019-10-22T18:22:22+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E4%BA%BA%E7%B1%BB%E7%AE%80%E5%8F%B2/","section":"post","summary":"\u003cp\u003e贯穿全世界的历史。\u003c/p\u003e","tags":[],"title":"《人类简史》","type":"post","url":"/post/reading-note-%E4%BA%BA%E7%B1%BB%E7%AE%80%E5%8F%B2/","weight":0,"wordcount":214},{"author":null,"categories":["note"],"content":"","date":1571739693,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1571739693,"objectID":"95967a6021e2aaa45940526d3cd06ef8","permalink":"https://quguang.wang/post/reading-note-%E5%8D%8A%E5%B0%8F%E6%97%B6%E6%BC%AB%E7%94%BB%E5%94%90%E8%AF%97/","publishdate":"2019-10-22T18:21:33+08:00","readingtime":0,"relpermalink":"/post/reading-note-%E5%8D%8A%E5%B0%8F%E6%97%B6%E6%BC%AB%E7%94%BB%E5%94%90%E8%AF%97/","section":"post","summary":"\u003cdiv class=\"douban_show\"\u003e\n \u003cdiv id=\"db9787559436184\" date-dbid=\"9787559436184\" class=\"douban_item post-preview\"\u003e\u003c/div\u003e\n \u003c/div\u003e","tags":[],"title":"《半小时漫画唐诗》","type":"post","url":"/post/reading-note-%E5%8D%8A%E5%B0%8F%E6%97%B6%E6%BC%AB%E7%94%BB%E5%94%90%E8%AF%97/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1571727943,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1571727943,"objectID":"","permalink":"https://quguang.wang/tags/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E9%AB%98%E6%89%8B%E8%AF%BE/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E9%AB%98%E6%89%8B%E8%AF%BE/","section":"tags","summary":"","tags":null,"title":"消息队列高手课","type":"tags","url":"/tags/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E9%AB%98%E6%89%8B%E8%AF%BE/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1571727943,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":8900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1571727943,"objectID":"05984a242de489563f94db048843a41c","permalink":"https://quguang.wang/post/geektime-mq-01/","publishdate":"2019-10-22T15:05:43+08:00","readingtime":18,"relpermalink":"/post/geektime-mq-01/","section":"post","summary":"","tags":["消息队列高手课"],"title":"消息队列高手课-基础篇-01","type":"post","url":"/post/geektime-mq-01/","weight":0,"wordcount":8804},{"author":null,"categories":["Tech"],"content":"","date":1571727943,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":13500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1571727943,"objectID":"0cb01bb41b3a8931c1c84df96429c8cf","permalink":"https://quguang.wang/post/geektime-mq-02/","publishdate":"2019-10-22T15:05:43+08:00","readingtime":27,"relpermalink":"/post/geektime-mq-02/","section":"post","summary":"","tags":["消息队列高手课"],"title":"消息队列高手课-基础篇-02","type":"post","url":"/post/geektime-mq-02/","weight":0,"wordcount":13422},{"author":null,"categories":["note"],"content":"","date":1569047039,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1569047039,"objectID":"9aba7e04ec7dbe762ff916b8478a2d5a","permalink":"https://quguang.wang/post/reading-note-%E4%B8%AD%E5%9B%BD%E8%BF%91%E4%BB%A3%E5%8F%B2/","publishdate":"2019-09-21T14:23:59+08:00","readingtime":3,"relpermalink":"/post/reading-note-%E4%B8%AD%E5%9B%BD%E8%BF%91%E4%BB%A3%E5%8F%B2/","section":"post","summary":"\u003cp\u003e新中国是如何一步一步从大清朝走过来的。\u003c/p\u003e\n\n\u003cdiv class=\"douban_show\"\u003e\n \u003cdiv id=\"db9787532543243\" date-dbid=\"9787532543243\" class=\"douban_item post-preview\"\u003e\u003c/div\u003e\n \u003c/div\u003e","tags":[],"title":"《中国近代史》-蒋廷黻","type":"post","url":"/post/reading-note-%E4%B8%AD%E5%9B%BD%E8%BF%91%E4%BB%A3%E5%8F%B2/","weight":0,"wordcount":1064},{"author":null,"categories":null,"content":null,"date":1568804364,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1568804364,"objectID":"","permalink":"https://quguang.wang/tags/java%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF36%E8%AE%B2/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/java%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF36%E8%AE%B2/","section":"tags","summary":"","tags":null,"title":"Java核心技术36讲","type":"tags","url":"/tags/java%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF36%E8%AE%B2/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1568804364,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1568804364,"objectID":"2afc6cda43c02cb73e8984ead3ea401e","permalink":"https://quguang.wang/post/geektime-java-36-01/","publishdate":"2019-09-18T18:59:24+08:00","readingtime":9,"relpermalink":"/post/geektime-java-36-01/","section":"post","summary":"","tags":["Java核心技术36讲"],"title":"Java核心技术36讲-Java提供了哪些IO方式? NIO如何实现多路复用? ","type":"post","url":"/post/geektime-java-36-01/","weight":0,"wordcount":4496},{"author":null,"categories":["Tech"],"content":"","date":1568708374,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1568708374,"objectID":"3ddfa6ede974dfca9d8ce41bf26c1752","permalink":"https://quguang.wang/post/geektime-tomcat-netty-03/","publishdate":"2019-09-17T16:19:34+08:00","readingtime":12,"relpermalink":"/post/geektime-tomcat-netty-03/","section":"post","summary":"\u003cp\u003e专栏上一期我们学完了连接器的设计,今天我们一起来看一下Tomcat的容器设计。先复习一下,上期我讲 到了Tomcat有两个核心组件:\u003cstrong\u003e连接器和容器\u003c/strong\u003e,其中连接器负责外部交流,容器负责内部处理。具体来说就是\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e连接器处理Socket通信和应用层协议的解析,得到Servlet请求;\u003c/li\u003e\n\u003cli\u003e而容器则负责处理Servlet请求。\u003c/li\u003e\n\u003c/ul\u003e","tags":[],"title":"Tomcat\u0026Netty-Tomcat系统架构(下):聊聊多层容器的设计","type":"post","url":"/post/geektime-tomcat-netty-03/","weight":0,"wordcount":5601},{"author":null,"categories":["Tech"],"content":"","date":1568690446,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1568690446,"objectID":"3f9f1ea510092c8140ddda54dcd91def","permalink":"https://quguang.wang/post/geektime-tomcat-netty-02/","publishdate":"2019-09-17T11:20:46+08:00","readingtime":8,"relpermalink":"/post/geektime-tomcat-netty-02/","section":"post","summary":"\u003cp\u003e在面试时我们可能经常被问到:你做的XX项目的架构是如何设计的,请讲一下实现的思路。对于面试官来 说,可以通过你对复杂系统设计的理解,了解你的技术水平以及处理复杂问题的思路。\u003c/p\u003e\n\n\u003cp\u003e今天咱们就来一步一步分析Tomcat的设计思路,看看Tomcat的设计者们当时是怎么回答这个问题的。一方 面我们可以学到Tomcat的总体架构,学会从宏观上怎么去设计一个复杂系统,怎么设计顶层模块,以及模 块之间的关系;另一方面也为我们深入学习Tomcat的工作原理打下基础。\u003c/p\u003e","tags":[],"title":"Tomcat Netty-Tomcat系统架构(上): 连接器是如何设计的?","type":"post","url":"/post/geektime-tomcat-netty-02/","weight":0,"wordcount":3983},{"author":null,"categories":null,"content":null,"date":1568515517,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1568515517,"objectID":"","permalink":"https://quguang.wang/tags/kubernetes/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/kubernetes/","section":"tags","summary":"","tags":null,"title":"kubernetes","type":"tags","url":"/tags/kubernetes/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1568515517,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1568515517,"objectID":"8a38a60490928966a12606a47bf68bb6","permalink":"https://quguang.wang/post/k8s-install/","publishdate":"2019-09-15T10:45:17+08:00","readingtime":2,"relpermalink":"/post/k8s-install/","section":"post","summary":"\u003cp\u003e公司服务器上的 k8s 集群不给自己玩了,所以打算在本地mac 上装 kubernestes 集群 ,记录下使用 docker 的 mac 客户端 安装 kubernetets 的过程\u003c/p\u003e","tags":["kubernetes"],"title":"kubernetes Install","type":"post","url":"/post/k8s-install/","weight":0,"wordcount":602},{"author":null,"categories":["Tech"],"content":"","date":1568258446,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":7400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1568258446,"objectID":"fedaa751a22105cf280fb07b45df31a9","permalink":"https://quguang.wang/post/geektime-tomcat-netty-01.1/","publishdate":"2019-09-12T11:20:46+08:00","readingtime":15,"relpermalink":"/post/geektime-tomcat-netty-01.1/","section":"post","summary":"\u003cp\u003e浏览器发给服务端的是一个HTTP格式的请求,HTTP服务器收到这个请求 后,需要调用服务端程序来处理,所谓的服务端程序就是你写的Java类,一般来说不同的请求需要由不同的 Java类来处理。\u003c/p\u003e\n\n\u003cp\u003e那么问题来了,HTTP服务器怎么知道要调用哪个Java类的哪个方法呢。\u003c/p\u003e","tags":[],"title":"Tomcat Netty-Servlet规范和Servlet容器","type":"post","url":"/post/geektime-tomcat-netty-01.1/","weight":0,"wordcount":7367},{"author":null,"categories":null,"content":null,"date":1568183930,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1568183930,"objectID":"","permalink":"https://quguang.wang/tags/%E8%B6%A3%E8%B0%88%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E8%B6%A3%E8%B0%88%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/","section":"tags","summary":"","tags":null,"title":"《趣谈网络协议》","type":"tags","url":"/tags/%E8%B6%A3%E8%B0%88%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1568183930,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1568183930,"objectID":"6e140498b5ac3f4ef73c5987105ae54c","permalink":"https://quguang.wang/post/geektime-network-protocol-01/","publishdate":"2019-09-11T14:38:50+08:00","readingtime":2,"relpermalink":"/post/geektime-network-protocol-01/","section":"post","summary":"\u003cp\u003e如果你想下载一个电影,一般会通过什么方式?\u003c/p\u003e","tags":["网络协议","《趣谈网络协议》"],"title":"《趣谈网络协议》- 文件下载","type":"post","url":"/post/geektime-network-protocol-01/","weight":0,"wordcount":965},{"author":null,"categories":null,"content":null,"date":1568183930,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1568183930,"objectID":"","permalink":"https://quguang.wang/tags/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/","section":"tags","summary":"","tags":null,"title":"网络协议","type":"tags","url":"/tags/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1568083464,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1568083464,"objectID":"314c6f01a460c2eed5270525edbbd55e","permalink":"https://quguang.wang/post/service-mesh-data-plane-vs-control-plane/","publishdate":"2019-09-10T10:44:24+08:00","readingtime":5,"relpermalink":"/post/service-mesh-data-plane-vs-control-plane/","section":"post","summary":"\u003cp\u003eMatt Klein的一篇精彩的博客“服务网格中的数据平面与控制平面”\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e原文链接:\u003ca href=\"https://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc\"\u003ehttps://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e","tags":["service-mesh"],"title":"Service Mesh Data Plane vs Control Plane","type":"post","url":"/post/service-mesh-data-plane-vs-control-plane/","weight":0,"wordcount":2145},{"author":null,"categories":null,"content":null,"date":1568083464,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1568083464,"objectID":"","permalink":"https://quguang.wang/tags/service-mesh/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/service-mesh/","section":"tags","summary":"","tags":null,"title":"service-mesh","type":"tags","url":"/tags/service-mesh/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1567998691,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1567998691,"objectID":"5fa81af779aa71b6fa5ab5582e1dc674","permalink":"https://quguang.wang/post/geektime-software-engineering-02/","publishdate":"2019-09-09T11:11:31+08:00","readingtime":10,"relpermalink":"/post/geektime-software-engineering-02/","section":"post","summary":"\u003cp\u003e和领导老贾谈职业规划的时候,他提出:我作为程序员,也要重视下产品方面的能力。\u003c/p\u003e","tags":["软件工程之美"],"title":"作为程序员,你应该有产品意识","type":"post","url":"/post/geektime-software-engineering-02/","weight":0,"wordcount":4747},{"author":null,"categories":null,"content":null,"date":1567998691,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1567998691,"objectID":"","permalink":"https://quguang.wang/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E4%B9%8B%E7%BE%8E/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E4%B9%8B%E7%BE%8E/","section":"tags","summary":"","tags":null,"title":"软件工程之美","type":"tags","url":"/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E4%B9%8B%E7%BE%8E/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1567737438,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1567737438,"objectID":"4e2d975408d62ab42afcd6ec641735e7","permalink":"https://quguang.wang/post/geektime-software-engineering-01/","publishdate":"2019-09-06T10:37:18+08:00","readingtime":10,"relpermalink":"/post/geektime-software-engineering-01/","section":"post","summary":"","tags":["软件工程之美"],"title":"软件工程之美-常见的软件开发模型(Software Development Model)","type":"post","url":"/post/geektime-software-engineering-01/","weight":0,"wordcount":4634},{"author":null,"categories":["Tech"],"content":"","date":1567600824,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1567600824,"objectID":"f933bd5a9c0b1e2d40c0c8ce4fbcdecc","permalink":"https://quguang.wang/post/mongo-aggregate/","publishdate":"2019-09-04T20:40:24+08:00","readingtime":5,"relpermalink":"/post/mongo-aggregate/","section":"post","summary":"","tags":[],"title":"MongoDB中聚合工具Aggregate等的介绍与使用","type":"post","url":"/post/mongo-aggregate/","weight":0,"wordcount":2407},{"author":null,"categories":["Tech"],"content":"","date":1566823212,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566823212,"objectID":"e642eee00db1a8c88103ad3f12c68251","permalink":"https://quguang.wang/post/java-resubmit-8-resolution/","publishdate":"2019-08-26T20:40:12+08:00","readingtime":6,"relpermalink":"/post/java-resubmit-8-resolution/","section":"post","summary":"\u003cblockquote\u003e\n\u003cp\u003e作者:锦成同学\u003c/p\u003e\n\n\u003cp\u003e链接:juejin.im/post/5d31928c51882564c966a71c\u003c/p\u003e\n\u003c/blockquote\u003e","tags":[],"title":"8种方案解决重复提交问题","type":"post","url":"/post/java-resubmit-8-resolution/","weight":0,"wordcount":2836},{"author":null,"categories":["Tech"],"content":"","date":1566779199,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":6200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566779199,"objectID":"b6f8fece2642fbaf727232d5fcd3adf4","permalink":"https://quguang.wang/post/java-retry-best-practice/","publishdate":"2019-08-26T08:26:39+08:00","readingtime":13,"relpermalink":"/post/java-retry-best-practice/","section":"post","summary":"","tags":[],"title":"【最佳实践】如何优雅的进行重试","type":"post","url":"/post/java-retry-best-practice/","weight":0,"wordcount":6136},{"author":null,"categories":["Tech"],"content":"","date":1566737459,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":15100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566737459,"objectID":"002df4dc6fde7e2df12abda316bfa6f3","permalink":"https://quguang.wang/post/elasticsearch-01/","publishdate":"2019-08-25T20:50:59+08:00","readingtime":31,"relpermalink":"/post/elasticsearch-01/","section":"post","summary":"\u003cp\u003e希望通过这篇文章能让读者大致了解Elasticsearch是做什么的以及它的使用和基本原理。\u003c/p\u003e","tags":[],"title":"Elasticsearch入门","type":"post","url":"/post/elasticsearch-01/","weight":0,"wordcount":15084},{"author":null,"categories":null,"content":null,"date":1566711135,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1566711135,"objectID":"","permalink":"https://quguang.wang/tags/domain-driven-design/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/domain-driven-design/","section":"tags","summary":"","tags":null,"title":"domain-driven-design","type":"tags","url":"/tags/domain-driven-design/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1566711135,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566711135,"objectID":"fd1dd449f7476bc09e6c48ddf829ca8e","permalink":"https://quguang.wang/post/domain-driven-design-01/","publishdate":"2019-08-25T13:32:15+08:00","readingtime":9,"relpermalink":"/post/domain-driven-design-01/","section":"post","summary":"","tags":["domain-driven-design"],"title":"领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力","type":"post","url":"/post/domain-driven-design-01/","weight":0,"wordcount":4364},{"author":null,"categories":["Tech"],"content":"","date":1566709977,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566709977,"objectID":"fd846c94206664627493d6d383745829","permalink":"https://quguang.wang/post/software-vo-dto-do-po-use/","publishdate":"2019-08-25T13:12:57+08:00","readingtime":11,"relpermalink":"/post/software-vo-dto-do-po-use/","section":"post","summary":"\u003cp\u003e本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和PO。\u003c/p\u003e","tags":["domain-driven-design"],"title":"领域驱动设计系列文章(2)-浅析VO、DTO、DO、PO的概念、区别和用处","type":"post","url":"/post/software-vo-dto-do-po-use/","weight":0,"wordcount":5252},{"author":null,"categories":["Tech"],"content":"","date":1566531865,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566531865,"objectID":"8c1176a7d8b9ce9756aa52a721697fb1","permalink":"https://quguang.wang/post/geektime-network-protocol-https/","publishdate":"2019-08-23T11:44:25+08:00","readingtime":3,"relpermalink":"/post/geektime-network-protocol-https/","section":"post","summary":"","tags":["《趣谈网络协议》"],"title":"《趣谈网络协议》- Https","type":"post","url":"/post/geektime-network-protocol-https/","weight":0,"wordcount":1498},{"author":null,"categories":["Tech"],"content":"","date":1566453436,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566453436,"objectID":"de8f5c027284da484b914182a1ad9402","permalink":"https://quguang.wang/post/geektime-http-protocol/","publishdate":"2019-08-22T13:57:16+08:00","readingtime":2,"relpermalink":"/post/geektime-http-protocol/","section":"post","summary":"","tags":["透视HTTP协议"],"title":"《透视HTTP协议》-https","type":"post","url":"/post/geektime-http-protocol/","weight":0,"wordcount":558},{"author":null,"categories":null,"content":null,"date":1566453436,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1566453436,"objectID":"","permalink":"https://quguang.wang/tags/%E9%80%8F%E8%A7%86http%E5%8D%8F%E8%AE%AE/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E9%80%8F%E8%A7%86http%E5%8D%8F%E8%AE%AE/","section":"tags","summary":"","tags":null,"title":"透视HTTP协议","type":"tags","url":"/tags/%E9%80%8F%E8%A7%86http%E5%8D%8F%E8%AE%AE/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1566439563,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566439563,"objectID":"fce9cecdaa994103ab4b8461984ff70e","permalink":"https://quguang.wang/post/interview-exp-from-wx-01/","publishdate":"2019-08-22T10:06:03+08:00","readingtime":11,"relpermalink":"/post/interview-exp-from-wx-01/","section":"post","summary":"\u003cp\u003e本文转载自公众号:石杉的架构笔记\u003c/p\u003e\n\n\u003cp\u003e写在前面:\u003c/p\u003e\n\n\u003cp\u003e首先做个自我介绍,楼主男,渣本毕业,坐标帝都,差 4 个月 4 年工作经验。本次面试了几家独角兽和一线大厂,都拿了offer,几乎100%的命中率。\u003c/p\u003e","tags":["面试"],"title":"我用50W+年薪的独角兽offer,犒劳自己一年的卧薪尝胆!不服输,你就不会输","type":"post","url":"/post/interview-exp-from-wx-01/","weight":0,"wordcount":5343},{"author":null,"categories":["Tech"],"content":"","date":1566208152,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566208152,"objectID":"80933b5091dcbbdb2aabca53d184d3e8","permalink":"https://quguang.wang/post/java-jvm-jmap/","publishdate":"2019-08-19T17:49:12+08:00","readingtime":3,"relpermalink":"/post/java-jvm-jmap/","section":"post","summary":"\u003cp\u003ejava内存溢出分析工具:jmap使用实战\u003c/p\u003e","tags":["jvm"],"title":"java内存溢出分析工具:jmap使用实战","type":"post","url":"/post/java-jvm-jmap/","weight":0,"wordcount":1326},{"author":null,"categories":["Tech"],"content":"","date":1566042531,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566042531,"objectID":"8a1539d58446eb546a9aeb16035ce3d4","permalink":"https://quguang.wang/post/java-sort-01/","publishdate":"2019-08-17T19:48:51+08:00","readingtime":1,"relpermalink":"/post/java-sort-01/","section":"post","summary":"\u003cp\u003e总结简单的排序算法\u003c/p\u003e\n\n\u003cp\u003e有个不错的网站,动画演示各种算法:\u003ca href=\"https://visualgo.net/zh/sorting\"\u003evisualgo\u003c/a\u003e\u003c/p\u003e","tags":[],"title":"Java排序算法","type":"post","url":"/post/java-sort-01/","weight":0,"wordcount":408},{"author":null,"categories":["note"],"content":"","date":1565683980,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1565683980,"objectID":"efe725971143e8d0bf3108bb02d2889d","permalink":"https://quguang.wang/post/reading-note-%E6%9A%97%E6%97%B6%E9%97%B4/","publishdate":"2019-08-13T16:13:00+08:00","readingtime":2,"relpermalink":"/post/reading-note-%E6%9A%97%E6%97%B6%E9%97%B4/","section":"post","summary":"\u003cdiv class=\"douban_show\"\u003e\n \u003cdiv id=\"db9787121140068\" date-dbid=\"9787121140068\" class=\"douban_item post-preview\"\u003e\u003c/div\u003e\n \u003c/div\u003e","tags":[],"title":"《暗时间》-读书笔记","type":"post","url":"/post/reading-note-%E6%9A%97%E6%97%B6%E9%97%B4/","weight":0,"wordcount":853},{"author":null,"categories":["Tech"],"content":"","date":1565247026,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1565247026,"objectID":"94e667abf4ecbe6c4de4a6237f0b78b4","permalink":"https://quguang.wang/post/geektime-computer-system-organization-and-architecture-00/","publishdate":"2019-08-08T14:50:26+08:00","readingtime":8,"relpermalink":"/post/geektime-computer-system-organization-and-architecture-00/","section":"post","summary":"\u003cp\u003e如果找出各大学计算机系的培养计划,你会发现,它们都有差不多十来门核心课程。其中,“计算机组成原理”是入门和底层层面的第一课。\u003c/p\u003e","tags":["计算机组成原理"],"title":"《深入浅出计算机组成原理》-基础篇","type":"post","url":"/post/geektime-computer-system-organization-and-architecture-00/","weight":0,"wordcount":3835},{"author":null,"categories":null,"content":null,"date":1565247026,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1565247026,"objectID":"","permalink":"https://quguang.wang/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/","section":"tags","summary":"","tags":null,"title":"计算机组成原理","type":"tags","url":"/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1565094850,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1564922050,"objectID":"","permalink":"https://quguang.wang/tags/java%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E5%AE%9E%E6%88%98/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/java%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E5%AE%9E%E6%88%98/","section":"tags","summary":"","tags":null,"title":"Java性能调优实战","type":"tags","url":"/tags/java%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E5%AE%9E%E6%88%98/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1565094850,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564922050,"objectID":"f94f98459a230e511560b6f8c624837d","permalink":"https://quguang.wang/post/geektime-java-performance-01/","publishdate":"2019-08-06T20:34:10+08:00","readingtime":11,"relpermalink":"/post/geektime-java-performance-01/","section":"post","summary":"\u003cp\u003e为什么要做性能调优?一款线上产品如果没有经过性能测试,那它就好比是一颗定时炸弹,你不知道它什么时候会出现问题,你也\n不清楚它能承受的极限在哪儿。\u003c/p\u003e\n\n\u003cp\u003e好的系统性能调优不仅仅可以提高系统的性能,还能为公司节省资源。这也是我们做性能调优的最直接的目\n的。\u003c/p\u003e","tags":["Java性能调优实战"],"title":"《Java性能调优实战》模块一 · 概述","type":"post","url":"/post/geektime-java-performance-01/","weight":0,"wordcount":5278},{"author":null,"categories":["Tech"],"content":"","date":1565008450,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564922050,"objectID":"dd583d33f631892866856194dafd9a00","permalink":"https://quguang.wang/post/geektime-java-performance-02/","publishdate":"2019-08-05T20:34:10+08:00","readingtime":2,"relpermalink":"/post/geektime-java-performance-02/","section":"post","summary":"\u003cp\u003e从第二个模块开始,学习Java编程的性能优化。\u003c/p\u003e","tags":["Java性能调优实战"],"title":"《Java性能调优实战》模块二 · Java编程性能调优 (10讲)","type":"post","url":"/post/geektime-java-performance-02/","weight":0,"wordcount":580},{"author":null,"categories":["Tech"],"content":"","date":1564922050,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564922050,"objectID":"cf8771f0f24295c4b62956d7837055f0","permalink":"https://quguang.wang/post/geektime-java-performance-03/","publishdate":"2019-08-04T20:34:10+08:00","readingtime":1,"relpermalink":"/post/geektime-java-performance-03/","section":"post","summary":"","tags":["Java性能调优实战"],"title":"《Java性能调优实战》模块三 · 多线程性能调优 (10讲)","type":"post","url":"/post/geektime-java-performance-03/","weight":0,"wordcount":217},{"author":null,"categories":["Tech"],"content":"","date":1564903923,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564903923,"objectID":"98e1aaf2f53c209c02d57a70422c1513","permalink":"https://quguang.wang/post/geektime-jvm-01/","publishdate":"2019-08-04T15:32:03+08:00","readingtime":2,"relpermalink":"/post/geektime-jvm-01/","section":"post","summary":"\u003cp\u003e整个专栏将分为四大模块:基本原理、高效实现、代码优化、虚拟机黑科技\u003c/p\u003e","tags":[],"title":"《深入拆解Java虚拟机》-课程目录","type":"post","url":"/post/geektime-jvm-01/","weight":0,"wordcount":609},{"author":null,"categories":["Tech"],"content":"","date":1564835650,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564922050,"objectID":"4059954fb9afefebd9c04f5ea95d82c1","permalink":"https://quguang.wang/post/geektime-java-performance-04/","publishdate":"2019-08-03T20:34:10+08:00","readingtime":1,"relpermalink":"/post/geektime-java-performance-04/","section":"post","summary":"","tags":["Java性能调优实战"],"title":"《Java性能调优实战》模块四 · JVM性能监测及调优 (6讲) ","type":"post","url":"/post/geektime-java-performance-04/","weight":0,"wordcount":112},{"author":null,"categories":["Tech"],"content":"","date":1564749250,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564922050,"objectID":"7a1c660805eea3ed30db35399e73efd3","permalink":"https://quguang.wang/post/geektime-java-performance-05/","publishdate":"2019-08-02T20:34:10+08:00","readingtime":1,"relpermalink":"/post/geektime-java-performance-05/","section":"post","summary":"","tags":["Java性能调优实战"],"title":"《Java性能调优实战》模块五 · 设计模式调优 (6讲) ","type":"post","url":"/post/geektime-java-performance-05/","weight":0,"wordcount":121},{"author":null,"categories":["Tech"],"content":"","date":1564662850,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564922050,"objectID":"d34ba27ea753eb595a124c3bd4fb5062","permalink":"https://quguang.wang/post/geektime-java-performance-06/","publishdate":"2019-08-01T20:34:10+08:00","readingtime":1,"relpermalink":"/post/geektime-java-performance-06/","section":"post","summary":"","tags":["Java性能调优实战"],"title":"《Java性能调优实战》模块六 · 数据库性能调优 (7讲) ","type":"post","url":"/post/geektime-java-performance-06/","weight":0,"wordcount":147},{"author":null,"categories":null,"content":null,"date":1564392684,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1564219884,"objectID":"","permalink":"https://quguang.wang/tags/java%E5%B9%B6%E5%8F%91%E5%AE%9E%E6%88%98/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/java%E5%B9%B6%E5%8F%91%E5%AE%9E%E6%88%98/","section":"tags","summary":"","tags":null,"title":"java并发实战","type":"tags","url":"/tags/java%E5%B9%B6%E5%8F%91%E5%AE%9E%E6%88%98/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1564392684,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564219884,"objectID":"793b53395aaf39127ab59a62ea3d2f4e","permalink":"https://quguang.wang/post/geektime-java-concurrent-in-action.4/","publishdate":"2019-07-29T17:31:24+08:00","readingtime":0,"relpermalink":"/post/geektime-java-concurrent-in-action.4/","section":"post","summary":"","tags":["java并发实战"],"title":"《Java并发编程实战》-5-其他并发模型(未完待续)","type":"post","url":"/post/geektime-java-concurrent-in-action.4/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1564306284,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564219884,"objectID":"bc6ad75d8ca4d75acc3351260b7b4c76","permalink":"https://quguang.wang/post/geektime-java-concurrent-in-action.3/","publishdate":"2019-07-28T17:31:24+08:00","readingtime":0,"relpermalink":"/post/geektime-java-concurrent-in-action.3/","section":"post","summary":"","tags":["java并发实战"],"title":"《Java并发编程实战》-4-案例分析(未完待续)","type":"post","url":"/post/geektime-java-concurrent-in-action.3/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1564219884,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564219884,"objectID":"ed52555ba9c4c5410bf8edc7d6dc769e","permalink":"https://quguang.wang/post/geektime-java-concurrent-in-action.2/","publishdate":"2019-07-27T17:31:24+08:00","readingtime":1,"relpermalink":"/post/geektime-java-concurrent-in-action.2/","section":"post","summary":"","tags":["java并发实战"],"title":"《Java并发编程实战》-3-并发设计模式(未完待续)","type":"post","url":"/post/geektime-java-concurrent-in-action.2/","weight":0,"wordcount":257},{"author":null,"categories":["Tech"],"content":"","date":1564133484,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":11400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564219884,"objectID":"4636567fda4dd2d0e4f46e5d408c13b4","permalink":"https://quguang.wang/post/geektime-java-concurrent-in-action.1.2/","publishdate":"2019-07-26T17:31:24+08:00","readingtime":23,"relpermalink":"/post/geektime-java-concurrent-in-action.1.2/","section":"post","summary":"\u003cp\u003e前面我们多次提到一个累加器的例子,示例代码如下。在这个例子中,\u003ccode\u003eadd10K()\u003c/code\u003e 这个方法不是线程安全的,问题就出在变量 count 的可见性和 \u003ccode\u003ecount+=1\u003c/code\u003e 的原子性上。\u003cstrong\u003e可见性问题可以用 volatile 来解决,而原子性问题我们前面一直都是采用的互斥锁方案。\u003c/strong\u003e\u003c/p\u003e","tags":["java并发实战"],"title":"《Java并发编程实战》-2-并发工具类(下)","type":"post","url":"/post/geektime-java-concurrent-in-action.1.2/","weight":0,"wordcount":11327},{"author":null,"categories":["Tech"],"content":"","date":1564133424,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":11500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564219884,"objectID":"eb59575ce1a584eeb58e77298d428322","permalink":"https://quguang.wang/post/geektime-java-concurrent-in-action.1.1/","publishdate":"2019-07-26T17:30:24+08:00","readingtime":23,"relpermalink":"/post/geektime-java-concurrent-in-action.1.1/","section":"post","summary":"\u003cp\u003e在前面《08 | 管程:并发编程的万能钥 匙》中我们提到过在并发编程领域,有 \u003cstrong\u003e两大核心问题:一个是互斥,即同一时刻只允许一个线程 访问共享资源;另一个是同步,即线程之间如何通信、协作\u003c/strong\u003e。这两大问题,管程都是能够解决 的。Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程,其中 \u003cstrong\u003eLock 用于解决互斥 问题,Condition 用于解决同步问题。\u003c/strong\u003e\u003c/p\u003e","tags":["java并发实战"],"title":"《Java并发编程实战》-2-并发工具类(上)","type":"post","url":"/post/geektime-java-concurrent-in-action.1.1/","weight":0,"wordcount":11417},{"author":null,"categories":["Tech"],"content":"","date":1564047084,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":6400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564219884,"objectID":"be9e2f85b4f1dbd77208d20b1ad1809e","permalink":"https://quguang.wang/post/geektime-java-concurrent-in-action.0/","publishdate":"2019-07-25T17:31:24+08:00","readingtime":13,"relpermalink":"/post/geektime-java-concurrent-in-action.0/","section":"post","summary":"\u003cp\u003e这些年,我们的CPU、内存、I/O设备都在不断迭代,不断朝着更快的方向努力。但是在这个快速发展的过程中,又一个\u003cstrong\u003e核心矛盾一直存在,就是这三者的速度差异\u003c/strong\u003e。\u003c/p\u003e","tags":["java并发实战"],"title":"《Java并发编程实战》-1-理论基础篇","type":"post","url":"/post/geektime-java-concurrent-in-action.0/","weight":0,"wordcount":6340},{"author":null,"categories":["Tech"],"content":"","date":1564036730,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1564036730,"objectID":"e011dd29aa1c22dcb8d05f6ae7791f7b","permalink":"https://quguang.wang/post/geektime-network-protocol-udp-tcp/","publishdate":"2019-07-25T14:38:50+08:00","readingtime":7,"relpermalink":"/post/geektime-network-protocol-udp-tcp/","section":"post","summary":"\u003cp\u003e传输层里比较重要的两个协议,一个是 TCP,一个是\nUDP。对于不从事底层开发的人员来讲,或者对于开发应用的人来讲,最常用的就是这两个协议。由于\n面试的时候,这两个协议经常会被放在一起问\u003c/p\u003e","tags":["网络协议","《趣谈网络协议》"],"title":"《趣谈网络协议》- Udp Tcp","type":"post","url":"/post/geektime-network-protocol-udp-tcp/","weight":0,"wordcount":3376},{"author":null,"categories":null,"content":null,"date":1563614157,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1563614157,"objectID":"","permalink":"https://quguang.wang/tags/linux/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/linux/","section":"tags","summary":"","tags":null,"title":"linux","type":"tags","url":"/tags/linux/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1563614157,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1563614157,"objectID":"25deb4ea7cf22877f3f1b7cbac7b8e24","permalink":"https://quguang.wang/post/vim/","publishdate":"2019-07-20T17:15:57+08:00","readingtime":4,"relpermalink":"/post/vim/","section":"post","summary":"\u003cp\u003e\u003cstrong\u003e编辑器之神-vim,神的编辑器-emacs\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp\u003e最近开始使用vim键盘流,写代码时真心不想再去碰鼠标,来回切换很麻烦。以下是记录了一些常用但是我不会的快捷键\u003c/p\u003e","tags":["linux"],"title":"编辑器之神-Vim学习","type":"post","url":"/post/vim/","weight":0,"wordcount":1519},{"author":null,"categories":null,"content":null,"date":1563157925,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1563157925,"objectID":"","permalink":"https://quguang.wang/tags/saas/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/saas/","section":"tags","summary":"","tags":null,"title":"saas","type":"tags","url":"/tags/saas/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1563157925,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":6800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1563157925,"objectID":"dd6b6e67af2c82a723c54cc4646b1b3f","permalink":"https://quguang.wang/post/saas-hrm/","publishdate":"2019-07-15T10:32:05+08:00","readingtime":14,"relpermalink":"/post/saas-hrm/","section":"post","summary":"\u003cp\u003e一个实际的saas项目的例子\u003c/p\u003e","tags":["saas"],"title":"传统Saas项目实例","type":"post","url":"/post/saas-hrm/","weight":0,"wordcount":6798},{"author":null,"categories":null,"content":null,"date":1562903467,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1562903467,"objectID":"","permalink":"https://quguang.wang/tags/java/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/java/","section":"tags","summary":"","tags":null,"title":"java","type":"tags","url":"/tags/java/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1562903467,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1562903467,"objectID":"","permalink":"https://quguang.wang/tags/spring/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/spring/","section":"tags","summary":"","tags":null,"title":"spring","type":"tags","url":"/tags/spring/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1562903467,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1562903467,"objectID":"f07c16a3b09122bd3b4ec76f6507cd43","permalink":"https://quguang.wang/post/how-to-read-spring-source-code/","publishdate":"2019-07-12T11:51:07+08:00","readingtime":3,"relpermalink":"/post/how-to-read-spring-source-code/","section":"post","summary":"\u003cp\u003e给不知道如何阅读spring源码的同学一点借鉴\u003c/p\u003e","tags":["spring","java"],"title":"怎样阅读spring源码","type":"post","url":"/post/how-to-read-spring-source-code/","weight":0,"wordcount":1102},{"author":null,"categories":null,"content":null,"date":1562756295,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1562756295,"objectID":"","permalink":"https://quguang.wang/categories/math/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/categories/math/","section":"categories","summary":"","tags":null,"title":"math","type":"categories","url":"/categories/math/","weight":0,"wordcount":0},{"author":null,"categories":["math"],"content":"","date":1562756295,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":12800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1562756295,"objectID":"5fda9bcd2d7bbad9bc4bcec56dbb2489","permalink":"https://quguang.wang/post/math-linear-algebra/","publishdate":"2019-07-10T18:58:15+08:00","readingtime":26,"relpermalink":"/post/math-linear-algebra/","section":"post","summary":"\u003cp\u003e线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙。比如说,在全国一般工科院系教学中应用最广泛的同济线性代数教材(现在到了第四版),一上来就介绍逆序数这个“前无古人,后无来者”的古怪概念,然后用逆序数给出行列式的一个极不直观的定义,接着是一些简直犯傻的行列式性质和习题——把这行乘一个系数加到另一行上,再把那一列减过来,折腾得那叫一个热闹,可就是压根看不出这个东西有嘛用。\u003c/p\u003e","tags":[],"title":"线性代数学习","type":"post","url":"/post/math-linear-algebra/","weight":0,"wordcount":12720},{"author":null,"categories":["Tech"],"content":"","date":1562310005,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":6800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1562310005,"objectID":"19d29e27a7726e0c87f3f935ea219fc4","permalink":"https://quguang.wang/post/spring-design-pattern/","publishdate":"2019-07-05T15:00:05+08:00","readingtime":14,"relpermalink":"/post/spring-design-pattern/","section":"post","summary":"\u003cp\u003e关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。\u003c/p\u003e","tags":["设计模式","spring"],"title":"Spring是如何运用设计模式的?","type":"post","url":"/post/spring-design-pattern/","weight":0,"wordcount":6700},{"author":null,"categories":null,"content":null,"date":1562310005,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1562310005,"objectID":"","permalink":"https://quguang.wang/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/","section":"tags","summary":"","tags":null,"title":"设计模式","type":"tags","url":"/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1562309321,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1562309321,"objectID":"40ad8d9154d45a4f0bca731b556c5527","permalink":"https://quguang.wang/post/springboot-prevent-repeat-submit/","publishdate":"2019-07-05T14:48:41+08:00","readingtime":2,"relpermalink":"/post/springboot-prevent-repeat-submit/","section":"post","summary":"\u003cp\u003e在传统的web项目中,防止重复提交,通常做法是:后端生成一个唯一的提交令牌(uuid),并存储在服务端。页面提交请求携带这个提交令牌,后端验证并在第一次验证后删除该令牌,保证提交请求的唯一性。\u003c/p\u003e","tags":[],"title":"Spring Boot 使用 AOP 防止重复提交","type":"post","url":"/post/springboot-prevent-repeat-submit/","weight":0,"wordcount":836},{"author":null,"categories":null,"content":null,"date":1562039435,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1562039435,"objectID":"","permalink":"https://quguang.wang/tags/devops/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/devops/","section":"tags","summary":"","tags":null,"title":"devops","type":"tags","url":"/tags/devops/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1562039435,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1562039435,"objectID":"453d0de651918bddc3bbbc4f6368aeab","permalink":"https://quguang.wang/post/k8s-jenkins-docker-ci/","publishdate":"2019-07-02T11:50:35+08:00","readingtime":2,"relpermalink":"/post/k8s-jenkins-docker-ci/","section":"post","summary":"\u003cp\u003e\u003cstrong\u003e项目说明\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp\u003e14个JAVA spring cloud 微服务项目\u003c/p\u003e\n\n\u003cp\u003e5个Node项目\u003c/p\u003e\n\n\u003cp\u003e1个Node项目VUE生成静态页面做前端+nginx\u003c/p\u003e\n\n\u003cp\u003epgsql、redis、\u0008rabbitmq、emqx\u003c/p\u003e","tags":["devops","Kubernetes"],"title":"基于Kubernetes/Jenkins/Harbor/Sonarqube搭建微服务CICD系统","type":"post","url":"/post/k8s-jenkins-docker-ci/","weight":0,"wordcount":961},{"author":null,"categories":["Tech"],"content":"","date":1560912473,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1560912473,"objectID":"1331b9f863d914ae7448c316ff12b96f","permalink":"https://quguang.wang/post/introduction-to-ddd-cqrs-and-event/","publishdate":"2019-06-19T10:47:53+08:00","readingtime":10,"relpermalink":"/post/introduction-to-ddd-cqrs-and-event/","section":"post","summary":"\u003cp\u003e我最近开始学习域驱动设计,CQRS和事件溯源。 到目前为止,我主要参与了使用“经典”N层/层架构和关系数据库的项目。 随着项目变得越来越复杂,我注意到这个模型并不总是很好。 不久之前,我写了一篇关于N层神话的文章,它已经暴露了我觉得这种类型的架构所带来的一些问题。 我尝试的第一件事是在这样的架构中应用域驱动设计。\u003c/p\u003e","tags":["domain-driven-design"],"title":"关于 DDD、CQRS和Event Souring","type":"post","url":"/post/introduction-to-ddd-cqrs-and-event/","weight":0,"wordcount":4908},{"author":null,"categories":["Tech"],"content":"","date":1558432557,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558432557,"objectID":"549aaa0ce787f961188773916ea61edd","permalink":"https://quguang.wang/post/java-interview-distributed-session/","publishdate":"2019-05-21T17:55:57+08:00","readingtime":3,"relpermalink":"/post/java-interview-distributed-session/","section":"post","summary":"\u003cp\u003e面试题 集群部署时的分布式session如何实现?\u003c/p\u003e","tags":[],"title":"Java面试-分布式会话","type":"post","url":"/post/java-interview-distributed-session/","weight":0,"wordcount":1466},{"author":null,"categories":null,"content":null,"date":1558431310,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1558431310,"objectID":"","permalink":"https://quguang.wang/tags/dubbo/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/dubbo/","section":"tags","summary":"","tags":null,"title":"dubbo","type":"tags","url":"/tags/dubbo/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1558431310,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558431310,"objectID":"4d366358e6a329669befa95efa987ade","permalink":"https://quguang.wang/post/java-interview-distributed-dubbo07/","publishdate":"2019-05-21T17:35:10+08:00","readingtime":5,"relpermalink":"/post/java-interview-distributed-dubbo07/","section":"post","summary":"","tags":["dubbo"],"title":"Java面试-分布式 分布式服务接口的幂等性和顺序性","type":"post","url":"/post/java-interview-distributed-dubbo07/","weight":0,"wordcount":2019},{"author":null,"categories":["Tech"],"content":"","date":1558428411,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558428411,"objectID":"0802ebac72300c8c350335794f157172","permalink":"https://quguang.wang/post/java-interview-distributed-dubbo06/","publishdate":"2019-05-21T16:46:51+08:00","readingtime":4,"relpermalink":"/post/java-interview-distributed-dubbo06/","section":"post","summary":"\u003cp\u003e面试题 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试?\u003c/p\u003e","tags":["dubbo"],"title":"Java面试-分布式 Dubbo服务治理、服务降级","type":"post","url":"/post/java-interview-distributed-dubbo06/","weight":0,"wordcount":1608},{"author":null,"categories":["Tech"],"content":"","date":1558425684,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558425684,"objectID":"bbf8fbc1e46de859bdf7697783a1709f","permalink":"https://quguang.wang/post/java-interview-distributed-dubbo05/","publishdate":"2019-05-21T16:01:24+08:00","readingtime":6,"relpermalink":"/post/java-interview-distributed-dubbo05/","section":"post","summary":"\u003cp\u003e面试题 dubbo的spi思想是什么?\u003c/p\u003e","tags":["dubbo"],"title":"Java面试-分布式 Dubbo的spi思想","type":"post","url":"/post/java-interview-distributed-dubbo05/","weight":0,"wordcount":2694},{"author":null,"categories":["Tech"],"content":"","date":1558421632,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558421632,"objectID":"85ef22191e6d28a2edcc6b2a54b241b9","permalink":"https://quguang.wang/post/java-interview-distributed-dubbo04/","publishdate":"2019-05-21T14:53:52+08:00","readingtime":4,"relpermalink":"/post/java-interview-distributed-dubbo04/","section":"post","summary":"\u003cp\u003e面试题 dubbo负载均衡策略和集群容错策略都有哪些?动态代理策略呢?\u003c/p\u003e","tags":["dubbo"],"title":"Java面试 分布式-dubbo负载均衡策略和集群容错策略","type":"post","url":"/post/java-interview-distributed-dubbo04/","weight":0,"wordcount":1605},{"author":null,"categories":["Tech"],"content":"","date":1558420879,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558420879,"objectID":"cb91027e0b1cf5593dd72d61bb8c9aee","permalink":"https://quguang.wang/post/java-interview-distributed-dubbo03/","publishdate":"2019-05-21T14:41:19+08:00","readingtime":2,"relpermalink":"/post/java-interview-distributed-dubbo03/","section":"post","summary":"\u003cp\u003e面试题:dubbo支持哪些通信协议?支持哪些序列化协议?\u003c/p\u003e","tags":["dubbo"],"title":"Java面试-分布式 Dubbo的协议","type":"post","url":"/post/java-interview-distributed-dubbo03/","weight":0,"wordcount":743},{"author":null,"categories":["Tech"],"content":"","date":1558420342,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558420342,"objectID":"f08cabe108232f4b4b6d36043e8209d7","permalink":"https://quguang.wang/post/java-interview-distributed-dubbo02/","publishdate":"2019-05-21T14:32:22+08:00","readingtime":3,"relpermalink":"/post/java-interview-distributed-dubbo02/","section":"post","summary":"\u003cp\u003e面试题:说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?说说一次rpc请求的流程?\u003c/p\u003e","tags":["dubbo"],"title":"Java面试-分布式 Dubbo的原理","type":"post","url":"/post/java-interview-distributed-dubbo02/","weight":0,"wordcount":1162},{"author":null,"categories":["Tech"],"content":"","date":1558406940,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558406940,"objectID":"32c262489269c05333848057b8b0fca5","permalink":"https://quguang.wang/post/java-interview-distributed-introduce01/","publishdate":"2019-05-21T10:49:00+08:00","readingtime":7,"relpermalink":"/post/java-interview-distributed-introduce01/","section":"post","summary":"\u003cp\u003e面试题 为什么要进行系统拆分?如何进行系统拆分?拆分后不用dubbo可以吗?\u003c/p\u003e","tags":[],"title":"Java面试-分布式-什么是分布式?","type":"post","url":"/post/java-interview-distributed-introduce01/","weight":0,"wordcount":3364},{"author":null,"categories":["Tech"],"content":"","date":1558342581,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558342581,"objectID":"e14c3a90615aa37b0c1bd1870c780fc8","permalink":"https://quguang.wang/post/java-interview-distributed-zk02/","publishdate":"2019-05-20T16:56:21+08:00","readingtime":5,"relpermalink":"/post/java-interview-distributed-zk02/","section":"post","summary":"\u003cp\u003e面试题 一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?\u003c/p\u003e\n\n\u003cp\u003e其实一般问问题,都是这么问的,先问问你zk,然后其实是要过度的zk关联的一些问题里去,比如分布式锁。因为在分布式系统开发中,分布式锁的使用场景还是很常见的。\u003c/p\u003e","tags":[],"title":"Java面试-分布式-分布式锁","type":"post","url":"/post/java-interview-distributed-zk02/","weight":0,"wordcount":2469},{"author":null,"categories":["Tech"],"content":"","date":1558342216,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558342216,"objectID":"784b3f92a87e54f2a8d6fc58d9a03a86","permalink":"https://quguang.wang/post/java-interview-distributed-zk01/","publishdate":"2019-05-20T16:50:16+08:00","readingtime":3,"relpermalink":"/post/java-interview-distributed-zk01/","section":"post","summary":"\u003cp\u003e面试题 zk都有哪些使用场景?\u003c/p\u003e","tags":[],"title":"Java面试-分布式 Zookeeper的使用场景","type":"post","url":"/post/java-interview-distributed-zk01/","weight":0,"wordcount":1016},{"author":null,"categories":["Tech"],"content":"","date":1558335970,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558335970,"objectID":"37084c048acf6a734eaf6705a06c01dd","permalink":"https://quguang.wang/post/java-interview-ha-01/","publishdate":"2019-05-20T15:06:10+08:00","readingtime":9,"relpermalink":"/post/java-interview-ha-01/","section":"post","summary":"\u003cp\u003e前半部分,专注在高并发这一块,缓存架构,承载高并发,在各种高并发导致的令人崩溃/异常的场景下,运行着\u003c/p\u003e\n\n\u003cp\u003e缓存架构,\u003cstrong\u003e高可用性,在各种系统的各个地方有乱七八糟的异常和故障的情况下,整套缓存系统还能继续健康的run着\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp\u003eHA,HAProxy,主备服务间的切换,这就做到了高可用性,主备实例,多冗余实例,高可用最最基础的东西\u003c/p\u003e\n\n\u003cp\u003e什么样的情况下,可能会导致系统的崩溃,以及系统不可用,针对各种各样的一些情况,然后我们用什么技术,去保护整个系统处于高可用的一个情况下\u003c/p\u003e","tags":[],"title":"Java面试-高可用-设计高可用架构","type":"post","url":"/post/java-interview-ha-01/","weight":0,"wordcount":4410},{"author":null,"categories":["Tech"],"content":"","date":1558088815,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558088815,"objectID":"0e09f30abd03dbced7a38728d3dfa097","permalink":"https://quguang.wang/post/java-interview-mysql-shading05/","publishdate":"2019-05-17T18:26:55+08:00","readingtime":4,"relpermalink":"/post/java-interview-mysql-shading05/","section":"post","summary":"\u003cp\u003e面试题 你们有没有做MySQL读写分离?如何实现mysql的读写分离?MySQL主从复制原理的是啥?如何解决mysql主从同步的延时问题?\u003c/p\u003e","tags":["面试","MySQL"],"title":"Java面试-高并发-MySQL读写分离","type":"post","url":"/post/java-interview-mysql-shading05/","weight":0,"wordcount":1885},{"author":null,"categories":["Tech"],"content":"","date":1558088364,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558088364,"objectID":"82cc0570cc3a7cd7d16de104d41d8fd6","permalink":"https://quguang.wang/post/java-interview-mysql-shading04/","publishdate":"2019-05-17T18:19:24+08:00","readingtime":7,"relpermalink":"/post/java-interview-mysql-shading04/","section":"post","summary":"\u003cp\u003e面试题 分库分表之后,id主键如何处理?\u003c/p\u003e","tags":["面试","MySQL"],"title":"Java面试-高并发-Mysql全局唯一的id","type":"post","url":"/post/java-interview-mysql-shading04/","weight":0,"wordcount":3130},{"author":null,"categories":["Tech"],"content":"","date":1558086094,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558086094,"objectID":"49d0514c81d46ae21068c7acde5b668d","permalink":"https://quguang.wang/post/java-interview-mysql-shading03/","publishdate":"2019-05-17T17:41:34+08:00","readingtime":4,"relpermalink":"/post/java-interview-mysql-shading03/","section":"post","summary":"\u003cp\u003e面试题 如何设计可以动态扩容缩容的分库分表方案?\u003c/p\u003e","tags":["面试","MySQL"],"title":"Java面试-高并发-Mysql 动态扩容缩容的分库分表方案","type":"post","url":"/post/java-interview-mysql-shading03/","weight":0,"wordcount":1885},{"author":null,"categories":["Tech"],"content":"","date":1558085442,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558085442,"objectID":"c813ab8a506adb068fefd9d31a9a89b5","permalink":"https://quguang.wang/post/java-interview-mysql-shading02/","publishdate":"2019-05-17T17:30:42+08:00","readingtime":3,"relpermalink":"/post/java-interview-mysql-shading02/","section":"post","summary":"\u003cp\u003e面试题 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?\u003c/p\u003e","tags":["面试","MySQL"],"title":"Java面试-高并发-Mysql-单库单表迁移到分库分表","type":"post","url":"/post/java-interview-mysql-shading02/","weight":0,"wordcount":1191},{"author":null,"categories":["Tech"],"content":"","date":1558080729,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558080729,"objectID":"0e23a1db12aa6b322eee3c3b737aeb26","permalink":"https://quguang.wang/post/java-interview-mysql-shading01/","publishdate":"2019-05-17T16:12:09+08:00","readingtime":8,"relpermalink":"/post/java-interview-mysql-shading01/","section":"post","summary":"\u003cp\u003e面试题 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?\u003c/p\u003e","tags":["面试","MySQL"],"title":"Java面试-高并发-Mysql 分库分表","type":"post","url":"/post/java-interview-mysql-shading01/","weight":0,"wordcount":3802},{"author":null,"categories":["Tech"],"content":"","date":1558003885,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558003885,"objectID":"e150b0e46067c99f47939f89ac76c56a","permalink":"https://quguang.wang/post/java-interview-gaobingfa/","publishdate":"2019-05-16T18:51:25+08:00","readingtime":6,"relpermalink":"/post/java-interview-gaobingfa/","section":"post","summary":"\u003cp\u003e面试题 如何设计一个高并发系统?\u003c/p\u003e","tags":[],"title":"Java面试-高并发-如何设计一个高并发系统?","type":"post","url":"/post/java-interview-gaobingfa/","weight":0,"wordcount":2584},{"author":null,"categories":["Tech"],"content":"","date":1558001485,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558001485,"objectID":"d3c73032960f4c8720b243e97c0917f5","permalink":"https://quguang.wang/post/java-interview-cache06/","publishdate":"2019-05-16T18:11:25+08:00","readingtime":7,"relpermalink":"/post/java-interview-cache06/","section":"post","summary":"\u003cp\u003eredis的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?\u003c/p\u003e","tags":["面试","redis","缓存"],"title":"Java面试-高并发-redis的持久化","type":"post","url":"/post/java-interview-cache06/","weight":0,"wordcount":3379},{"author":null,"categories":null,"content":null,"date":1558001485,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1558001485,"objectID":"","permalink":"https://quguang.wang/tags/redis/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/redis/","section":"tags","summary":"","tags":null,"title":"redis","type":"tags","url":"/tags/redis/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1558001485,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1558001485,"objectID":"","permalink":"https://quguang.wang/tags/%E7%BC%93%E5%AD%98/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E7%BC%93%E5%AD%98/","section":"tags","summary":"","tags":null,"title":"缓存","type":"tags","url":"/tags/%E7%BC%93%E5%AD%98/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1558000083,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558000083,"objectID":"ed694c1f031f33836d0c741d493d8e71","permalink":"https://quguang.wang/post/java-interview-cache05/","publishdate":"2019-05-16T17:48:03+08:00","readingtime":7,"relpermalink":"/post/java-interview-cache05/","section":"post","summary":"\u003cp\u003e面试题 如何保证Redis的高并发和高可用?redis的主从复制原理能介绍一下么?redis的哨兵原理能介绍一下么?\u003c/p\u003e","tags":["面试","redis","缓存"],"title":"Java面试-高并发-如何保证Redis的高并发和高可用","type":"post","url":"/post/java-interview-cache05/","weight":0,"wordcount":3338},{"author":null,"categories":["Tech"],"content":"","date":1558000044,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558000044,"objectID":"759769dff1993056492f094d55145b1e","permalink":"https://quguang.wang/post/java-interview-cache04/","publishdate":"2019-05-16T17:47:24+08:00","readingtime":6,"relpermalink":"/post/java-interview-cache04/","section":"post","summary":"\u003cp\u003eredis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?\u003c/p\u003e","tags":["面试","redis","缓存"],"title":"Java面试-高并发-redis的过期策略","type":"post","url":"/post/java-interview-cache04/","weight":0,"wordcount":2577},{"author":null,"categories":["Tech"],"content":"","date":1557999483,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557923807,"objectID":"9587255106abba086fb9404990e4a92a","permalink":"https://quguang.wang/post/java-interview-cache03/","publishdate":"2019-05-16T17:38:03+08:00","readingtime":3,"relpermalink":"/post/java-interview-cache03/","section":"post","summary":"\u003cp\u003eredis都有哪些数据类型?分别在哪些场景下使用比较合适?\u003c/p\u003e","tags":["面试","redis","缓存"],"title":"Java面试-高并发-redis 数据类型","type":"post","url":"/post/java-interview-cache03/","weight":0,"wordcount":1295},{"author":null,"categories":["Tech"],"content":"","date":1557998883,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557923807,"objectID":"94208f60ef1e6ff811f5202ce869324f","permalink":"https://quguang.wang/post/java-interview-cache02/","publishdate":"2019-05-16T17:28:03+08:00","readingtime":6,"relpermalink":"/post/java-interview-cache02/","section":"post","summary":"\u003cp\u003eredis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发)?\u003c/p\u003e","tags":["面试","redis","缓存"],"title":"Java面试-高并发-为什么redis是单线程的但是还可以支撑高并发","type":"post","url":"/post/java-interview-cache02/","weight":0,"wordcount":2803},{"author":null,"categories":["Tech"],"content":"","date":1557998283,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557923807,"objectID":"7e49f6d4233159a38c45c4b746ca1e6f","permalink":"https://quguang.wang/post/java-interview-cache01/","publishdate":"2019-05-16T17:18:03+08:00","readingtime":3,"relpermalink":"/post/java-interview-cache01/","section":"post","summary":"\u003cp\u003e在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果?\u003c/p\u003e","tags":["面试","redis","缓存"],"title":"Java面试-高并发-缓存是如何使用的?","type":"post","url":"/post/java-interview-cache01/","weight":0,"wordcount":1200},{"author":null,"categories":["Tech"],"content":"","date":1557923807,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557923807,"objectID":"a4bab46fc5f7fcd8d88571225db44d0d","permalink":"https://quguang.wang/post/java-interview-mq07/","publishdate":"2019-05-15T20:36:47+08:00","readingtime":4,"relpermalink":"/post/java-interview-mq07/","section":"post","summary":"\u003cp\u003e面试题 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路\u003c/p\u003e","tags":["面试","MQ"],"title":"Java面试-高并发-MQ自己设计一个(7)","type":"post","url":"/post/java-interview-mq07/","weight":0,"wordcount":1629},{"author":null,"categories":null,"content":null,"date":1557923807,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1557923807,"objectID":"","permalink":"https://quguang.wang/tags/mq/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/mq/","section":"tags","summary":"","tags":null,"title":"MQ","type":"tags","url":"/tags/mq/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1557920207,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557920207,"objectID":"5e676a101a42bd64560449ea15c1743d","permalink":"https://quguang.wang/post/java-interview-mq06/","publishdate":"2019-05-15T19:36:47+08:00","readingtime":4,"relpermalink":"/post/java-interview-mq06/","section":"post","summary":"\u003cp\u003e面试题 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?\u003c/p\u003e","tags":["面试","MQ"],"title":"Java面试-高并发-MQ延时以及过期失效(6)","type":"post","url":"/post/java-interview-mq06/","weight":0,"wordcount":1551},{"author":null,"categories":["Tech"],"content":"","date":1557916607,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557916607,"objectID":"962cb335c54b092af4212d67b0b398ea","permalink":"https://quguang.wang/post/java-interview-mq05/","publishdate":"2019-05-15T18:36:47+08:00","readingtime":2,"relpermalink":"/post/java-interview-mq05/","section":"post","summary":"\u003cp\u003e面试题 如何保证消息的顺序性?\u003c/p\u003e","tags":["面试","MQ"],"title":"Java面试-高并发-MQ消息的顺序性(5)","type":"post","url":"/post/java-interview-mq05/","weight":0,"wordcount":714},{"author":null,"categories":["Tech"],"content":"","date":1557913007,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557913007,"objectID":"1f21ace09b368116c20bbeac714d4a86","permalink":"https://quguang.wang/post/java-interview-mq04/","publishdate":"2019-05-15T17:36:47+08:00","readingtime":7,"relpermalink":"/post/java-interview-mq04/","section":"post","summary":"\u003cp\u003e面试题 如何保证消息的可靠性传输(如何处理消息丢失的问题)?\u003c/p\u003e","tags":["面试","MQ"],"title":"Java面试-高并发-MQ可靠性传输(4)","type":"post","url":"/post/java-interview-mq04/","weight":0,"wordcount":3158},{"author":null,"categories":["Tech"],"content":"","date":1557909407,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557909407,"objectID":"86de7900af78f0475e3a6536a5987688","permalink":"https://quguang.wang/post/java-interview-mq03/","publishdate":"2019-05-15T16:36:47+08:00","readingtime":3,"relpermalink":"/post/java-interview-mq03/","section":"post","summary":"\u003cp\u003e面试题 如何保证消息不被重复消费啊(如何保证消息消费时的幂等性)?\u003c/p\u003e","tags":["面试","MQ"],"title":"Java面试-高并发-MQ重复消费(3)","type":"post","url":"/post/java-interview-mq03/","weight":0,"wordcount":1311},{"author":null,"categories":["Tech"],"content":"","date":1557905807,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557905807,"objectID":"b12887e8da3cb1628e980d91522a15ab","permalink":"https://quguang.wang/post/java-interview-mq02/","publishdate":"2019-05-15T15:36:47+08:00","readingtime":6,"relpermalink":"/post/java-interview-mq02/","section":"post","summary":"\u003cp\u003e面试题 如何保证消息队列的高可用啊?\u003c/p\u003e","tags":["面试","MQ"],"title":"Java面试-高并发-MQ的高可用(2)","type":"post","url":"/post/java-interview-mq02/","weight":0,"wordcount":2966},{"author":null,"categories":["Tech"],"content":"","date":1557902207,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557902207,"objectID":"298b82f55ed0315707e4faf1bf3ea110","permalink":"https://quguang.wang/post/java-interview-mq01/","publishdate":"2019-05-15T14:36:47+08:00","readingtime":9,"relpermalink":"/post/java-interview-mq01/","section":"post","summary":"\u003cp\u003e面试题 为什么使用消息队列啊?消息队列有什么优点和缺点啊?kafka、activemq、rabbitmq、rocketmq都有什么区别以及适合哪些场景?\u003c/p\u003e","tags":["面试","MQ"],"title":"Java面试-高并发-MQ技术选型(1)","type":"post","url":"/post/java-interview-mq01/","weight":0,"wordcount":4336},{"author":null,"categories":["Tech"],"content":"","date":1557898323,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557898323,"objectID":"a9a369f4183a3f5c42bc529c83f0420c","permalink":"https://quguang.wang/post/java-interview-shishan01/","publishdate":"2019-05-15T13:32:03+08:00","readingtime":8,"relpermalink":"/post/java-interview-shishan01/","section":"post","summary":"\u003cp\u003e因为java面试题是一个较为大的体系,所以我们会拆分为几季来讲解,预计是会推出3季,本次是第一季,第一季课程包含的内容如下:\u003c/p\u003e","tags":["面试"],"title":"互联网Java工程师面试突击训练-课程目录","type":"post","url":"/post/java-interview-shishan01/","weight":0,"wordcount":3932},{"author":null,"categories":["Tech"],"content":"","date":1557398608,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1557398608,"objectID":"5e224b550c4637eed77fc325613877d2","permalink":"https://quguang.wang/post/mysql-index-b+tree/","publishdate":"2019-05-09T18:43:28+08:00","readingtime":3,"relpermalink":"/post/mysql-index-b+tree/","section":"post","summary":"\u003cp\u003e众所周知,Mysql中的索引结构是用B+Tree实现的,那么具体是如何来构建的呢?\u003c/p\u003e","tags":["MySQL"],"title":"Mysql B+tree 索引","type":"post","url":"/post/mysql-index-b+tree/","weight":0,"wordcount":1301},{"author":null,"categories":["Tech"],"content":"","date":1555924951,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1555924951,"objectID":"20cd924a9d8e3b34cb8534a207a66d78","permalink":"https://quguang.wang/post/java-hashmap/","publishdate":"2019-04-22T17:22:31+08:00","readingtime":5,"relpermalink":"/post/java-hashmap/","section":"post","summary":"","tags":[],"title":"Java Hashmap","type":"post","url":"/post/java-hashmap/","weight":0,"wordcount":2327},{"author":null,"categories":["Tech"],"content":"","date":1555658629,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1555658629,"objectID":"244241b0b01ec1a38c5db680dad83160","permalink":"https://quguang.wang/post/geektime-ci-cd-introduce/","publishdate":"2019-04-19T15:23:49+08:00","readingtime":6,"relpermalink":"/post/geektime-ci-cd-introduce/","section":"post","summary":"","tags":["devops"],"title":"《持续交付》","type":"post","url":"/post/geektime-ci-cd-introduce/","weight":0,"wordcount":2998},{"author":null,"categories":["Tech"],"content":"","date":1555059870,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1555059870,"objectID":"364509293c3651658f255f4020a69ee3","permalink":"https://quguang.wang/post/data-structure-red-black-tree/","publishdate":"2019-04-12T17:04:30+08:00","readingtime":3,"relpermalink":"/post/data-structure-red-black-tree/","section":"post","summary":"\u003cp\u003e很多书籍里,但凡讲到平衡二叉查找树,就会拿红黑树作为例子。不仅如此,如果你有一定的开发经验,你会发现,在工程中,很多用到平衡二叉查找树的地方都会用红黑树。你有没有想过,\u003c/p\u003e\n\n\u003cp\u003eJava TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natural ordering),也可以通过构造时传入的比较器(Comparator)。\u003c/p\u003e\n\n\u003cp\u003eTreeMap底层通过红黑树(Red-Black tree)实现,也就意味着containsKey(), get(), put(), remove()都有着log(n)的时间复杂度。其具体算法实现参照了《算法导论》。\u003c/p\u003e","tags":["数据结构","算法"],"title":"《数据结构与算法之美》-红黑树","type":"post","url":"/post/data-structure-red-black-tree/","weight":0,"wordcount":1009},{"author":null,"categories":null,"content":null,"date":1555059870,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1555059870,"objectID":"","permalink":"https://quguang.wang/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/","section":"tags","summary":"","tags":null,"title":"数据结构","type":"tags","url":"/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1555059870,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1555059870,"objectID":"","permalink":"https://quguang.wang/tags/%E7%AE%97%E6%B3%95/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E7%AE%97%E6%B3%95/","section":"tags","summary":"","tags":null,"title":"算法","type":"tags","url":"/tags/%E7%AE%97%E6%B3%95/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1555053041,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1555053041,"objectID":"21d76991530fc7d8982411096643645f","permalink":"https://quguang.wang/post/zk-election/","publishdate":"2019-04-12T15:10:41+08:00","readingtime":9,"relpermalink":"/post/zk-election/","section":"post","summary":"","tags":[],"title":"简单理解Zookeeper的Leader选举","type":"post","url":"/post/zk-election/","weight":0,"wordcount":4467},{"author":null,"categories":["life"],"content":"","date":1554517346,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1554517346,"objectID":"32c404331197c7cd004654487ced7a36","permalink":"https://quguang.wang/post/kaoyan-plan-2020/","publishdate":"2019-04-06T10:22:26+08:00","readingtime":1,"relpermalink":"/post/kaoyan-plan-2020/","section":"post","summary":"","tags":["考研"],"title":"2020考研计划","type":"post","url":"/post/kaoyan-plan-2020/","weight":0,"wordcount":279},{"author":null,"categories":null,"content":null,"date":1554517346,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1554517346,"objectID":"","permalink":"https://quguang.wang/tags/%E8%80%83%E7%A0%94/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E8%80%83%E7%A0%94/","section":"tags","summary":"","tags":null,"title":"考研","type":"tags","url":"/tags/%E8%80%83%E7%A0%94/","weight":0,"wordcount":0},{"author":null,"categories":["life"],"content":"","date":1554456947,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1554456947,"objectID":"5cccd463d82add876b38d790157f26fe","permalink":"https://quguang.wang/post/beihang-991-2019/","publishdate":"2019-04-05T17:35:47+08:00","readingtime":5,"relpermalink":"/post/beihang-991-2019/","section":"post","summary":"\u003cp\u003e2019年“数据结构与C语言程序设计”考试内容包括“数据结构”与“C语言程序设计”两门课程的内容,各占比例50%。试卷满分为150分。\u003c/p\u003e","tags":[],"title":"991“数据结构与C语言程序设计”考试大纲(2019版)","type":"post","url":"/post/beihang-991-2019/","weight":0,"wordcount":2047},{"author":null,"categories":["Tech"],"content":"","date":1554374109,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1554374109,"objectID":"f8057b3a4e32f289d72ed4e349b20f2f","permalink":"https://quguang.wang/post/technology-routine/","publishdate":"2019-04-04T18:35:09+08:00","readingtime":8,"relpermalink":"/post/technology-routine/","section":"post","summary":"\u003cp\u003e最近微软在技术上连续有大动作,在PDC上发布了Windows Azure云计算平台,预告了Visual Studio 2010、.NET 4.0和C# 4.0。如果放在几年前,我相信微软粉丝们一定是欢声雷动,不过这次情况有点不太一样,在网上看到有人在抱怨微软技术更新速度太快而且四面出击,还有人扬言要改弦更张,投奔Linux或者Java阵营。我本人也收到一封来信,写信人大意是说自己大学时选择.NET路线,一路跟下来很辛苦,2.0还没学好,人家已经4.0预览了,感到很困惑,问我该怎么办。老实讲,这样的问题我无法回答,每个人具体情况不同,所应该采取的态度和解决方案也不同。\n从我自己来讲,其实技术路线问题也曾长时间地困扰我,所以我想把我现在的一些想法摊出来跟大家分享一下。罗列如下:\u003c/p\u003e","tags":["杂谈"],"title":"技术路线的选择重要但不具有决定性","type":"post","url":"/post/technology-routine/","weight":0,"wordcount":3924},{"author":null,"categories":null,"content":null,"date":1554374109,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1554374109,"objectID":"","permalink":"https://quguang.wang/tags/%E6%9D%82%E8%B0%88/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E6%9D%82%E8%B0%88/","section":"tags","summary":"","tags":null,"title":"杂谈","type":"tags","url":"/tags/%E6%9D%82%E8%B0%88/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1554182672,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1554182672,"objectID":"a15b7db8ba2d574ad44dc110072706c7","permalink":"https://quguang.wang/post/linux-awk/","publishdate":"2019-04-02T13:24:32+08:00","readingtime":7,"relpermalink":"/post/linux-awk/","section":"post","summary":"\u003cp\u003eawk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。\u003c/p\u003e","tags":["linux"],"title":"Linux三剑客之AWK学习","type":"post","url":"/post/linux-awk/","weight":0,"wordcount":3145},{"author":null,"categories":null,"content":null,"date":1553672998,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1558535258,"objectID":"","permalink":"https://quguang.wang/tags/mysql%E5%AE%9E%E6%88%9845%E8%AE%B2/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/mysql%E5%AE%9E%E6%88%9845%E8%AE%B2/","section":"tags","summary":"","tags":null,"title":"MYSQL实战45讲","type":"tags","url":"/tags/mysql%E5%AE%9E%E6%88%9845%E8%AE%B2/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1553672998,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1553672998,"objectID":"266abcf2ed4e5654d4ca1006cd6cec4b","permalink":"https://quguang.wang/post/mysql-question-03/","publishdate":"2019-03-27T15:49:58+08:00","readingtime":1,"relpermalink":"/post/mysql-question-03/","section":"post","summary":"","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》- Question 03","type":"post","url":"/post/mysql-question-03/","weight":0,"wordcount":157},{"author":null,"categories":null,"content":null,"date":1553169871,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1552997071,"objectID":"","permalink":"https://quguang.wang/tags/python/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/python/","section":"tags","summary":"","tags":null,"title":"python","type":"tags","url":"/tags/python/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1553169871,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1552997071,"objectID":"86e1384205d8da469198ae2cb6436fa4","permalink":"https://quguang.wang/post/python-helloword/","publishdate":"2019-03-21T20:04:31+08:00","readingtime":3,"relpermalink":"/post/python-helloword/","section":"post","summary":"\u003cp\u003e学习了python的基础语法、变量类型、条件语句、数据结构、模块引用等\u003c/p\u003e","tags":["python"],"title":"Python 学习入门","type":"post","url":"/post/python-helloword/","weight":0,"wordcount":1473},{"author":null,"categories":[],"content":"","date":1553158470,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1551948870,"objectID":"6a23f7d770a9bbcf2819df38cee31bf1","permalink":"https://quguang.wang/post/data-structure-and-algorithm-merge-sort/","publishdate":"2019-03-21T16:54:30+08:00","readingtime":1,"relpermalink":"/post/data-structure-and-algorithm-merge-sort/","section":"post","summary":"","tags":[],"title":"《数据结构与算法之美》-归并排序","type":"post","url":"/post/data-structure-and-algorithm-merge-sort/","weight":0,"wordcount":485},{"author":null,"categories":["Tech"],"content":"","date":1553042959,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1553042959,"objectID":"1b84da09768a412f6e1c1c8eccbda438","permalink":"https://quguang.wang/post/mysql-orderby/","publishdate":"2019-03-20T08:49:19+08:00","readingtime":4,"relpermalink":"/post/mysql-orderby/","section":"post","summary":"\u003cp\u003e在你开发应用时,一定会遇到需要根据指定的字段来显式结果的需求。\u003c/p\u003e","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》- Order By","type":"post","url":"/post/mysql-orderby/","weight":0,"wordcount":1727},{"author":null,"categories":["Tech"],"content":"","date":1552721174,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1552721174,"objectID":"05b15c55e49adf2bb586586e3148b8a5","permalink":"https://quguang.wang/post/mysql-index-unique-and-normal/","publishdate":"2019-03-16T15:26:14+08:00","readingtime":2,"relpermalink":"/post/mysql-index-unique-and-normal/","section":"post","summary":"\u003cp\u003e在不同的业务场景下,应该选择普通索引,还是唯一索引呢?接下来,我们就从这两种索引对查询语句和更新语句的性能影响来进行分析。\u003c/p\u003e","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》- 唯一索引和普通索引","type":"post","url":"/post/mysql-index-unique-and-normal/","weight":0,"wordcount":659},{"author":null,"categories":["Tech"],"content":"","date":1552721144,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1552721144,"objectID":"c18ac2311e2ec5af0f416298d9fd4c97","permalink":"https://quguang.wang/post/mysql-index/","publishdate":"2019-03-16T15:25:44+08:00","readingtime":6,"relpermalink":"/post/mysql-index/","section":"post","summary":"\u003cp\u003e简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。\u003c/p\u003e","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》- 深入浅出索引","type":"post","url":"/post/mysql-index/","weight":0,"wordcount":2988},{"author":null,"categories":["Tech"],"content":"","date":1552613182,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1552613182,"objectID":"68b69763c881cde831aac64078e09555","permalink":"https://quguang.wang/post/mysql-transaction-2/","publishdate":"2019-03-15T09:26:22+08:00","readingtime":4,"relpermalink":"/post/mysql-transaction-2/","section":"post","summary":"\u003cp\u003e如果是可重复读隔离级别,事务T启动的时候会创建一个视图read-view,之后事务T执行期间,即使有其他事务修改了数据,事务T看到的仍然跟在启动时看到的一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。\u003c/p\u003e\n\n\u003cp\u003e但是,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等到这个事务自己获取到行锁要更新数据的时候,它读到的值又是什么呢?\u003c/p\u003e","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》- 事务隔离","type":"post","url":"/post/mysql-transaction-2/","weight":0,"wordcount":1611},{"author":null,"categories":["Tech"],"content":"","date":1552555422,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1552555422,"objectID":"ed9f15117b7b2b2e2a875abf3a3e3b6e","permalink":"https://quguang.wang/post/mysql-transaction/","publishdate":"2019-03-14T17:23:42+08:00","readingtime":4,"relpermalink":"/post/mysql-transaction/","section":"post","summary":"","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》- 行锁、死锁、事务","type":"post","url":"/post/mysql-transaction/","weight":0,"wordcount":1512},{"author":null,"categories":["Tech"],"content":"","date":1551052823,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1551052823,"objectID":"0ab90350844348a4e9dc0ca22eaefc50","permalink":"https://quguang.wang/post/mysql-how-to-copy-table/","publishdate":"2019-02-25T08:00:23+08:00","readingtime":3,"relpermalink":"/post/mysql-how-to-copy-table/","section":"post","summary":"\u003cp\u003e本文源自极客时间-《MySQL实战45讲-41|如何快速复制一张表》,介绍了表复制的三种方法,并且分别比较了他们的优缺点和局限性。\u003c/p\u003e","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》-如何快速复制一张表","type":"post","url":"/post/mysql-how-to-copy-table/","weight":0,"wordcount":1378},{"author":null,"categories":["Tech"],"content":"","date":1550845658,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550845658,"objectID":"ccbf2f2f6e112fcd560cebf63cbc0d5f","permalink":"https://quguang.wang/post/mysql-how-join-run/","publishdate":"2019-02-22T22:27:38+08:00","readingtime":7,"relpermalink":"/post/mysql-how-join-run/","section":"post","summary":"","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》-Join语句是怎么执行的","type":"post","url":"/post/mysql-how-join-run/","weight":0,"wordcount":3096},{"author":null,"categories":["Tech"],"content":"","date":1550647784,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1566286184,"objectID":"8495388a149b195a07107b3d89cdd38b","permalink":"https://quguang.wang/post/geektime-http-protocol-tcp-osi/","publishdate":"2019-02-20T15:29:44+08:00","readingtime":5,"relpermalink":"/post/geektime-http-protocol-tcp-osi/","section":"post","summary":"\u003cp\u003e在上一讲中,我简单提到了TCP/IP协议,它是HTTP协议的下层协议,负责具体的数据传输工作。并且还特别说了,TCP/IP协议是一个“有层次的协议栈”。\u003c/p\u003e","tags":["《透视HTTP协议》"],"title":"《透视HTTP协议》-常说的“四层”和“七层”到底是什么?","type":"post","url":"/post/geektime-http-protocol-tcp-osi/","weight":0,"wordcount":2170},{"author":null,"categories":["Tech"],"content":"","date":1550452089,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":13000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550452089,"objectID":"d2808c9d42c16fb3c9de6de7405d5776","permalink":"https://quguang.wang/post/java-seckill-action/","publishdate":"2019-02-18T09:08:09+08:00","readingtime":26,"relpermalink":"/post/java-seckill-action/","section":"post","summary":"\u003cp\u003e现在很多面试都问如何设计一个秒杀系统,特此学习一下\u003c/p\u003e","tags":[],"title":"秒杀系统架构分析与实战","type":"post","url":"/post/java-seckill-action/","weight":0,"wordcount":12924},{"author":null,"categories":["Tech"],"content":"","date":1550451371,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550451371,"objectID":"00402be019d67491313c6b312619f76d","permalink":"https://quguang.wang/post/java-how-to-design-seckill/","publishdate":"2019-02-18T08:56:11+08:00","readingtime":4,"relpermalink":"/post/java-how-to-design-seckill/","section":"post","summary":"\u003cp\u003e什么是秒杀? 秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。\u003c/p\u003e","tags":[],"title":"如何设计一个秒杀系统","type":"post","url":"/post/java-how-to-design-seckill/","weight":0,"wordcount":1982},{"author":null,"categories":["Tech"],"content":"","date":1550379459,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550379459,"objectID":"cb8b27bc58829b28897b3933cc35b395","permalink":"https://quguang.wang/post/java-distributed-id/","publishdate":"2019-02-17T12:57:39+08:00","readingtime":7,"relpermalink":"/post/java-distributed-id/","section":"post","summary":"\u003cp\u003e系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。\u003c/p\u003e","tags":[],"title":"分布式系统唯一ID生成方案汇总","type":"post","url":"/post/java-distributed-id/","weight":0,"wordcount":3307},{"author":null,"categories":["Tech"],"content":"","date":1550223634,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550223634,"objectID":"bf266b5e1dce4b1ebe44d8450f54b514","permalink":"https://quguang.wang/post/java-interview-resource-list/","publishdate":"2019-02-15T17:40:34+08:00","readingtime":1,"relpermalink":"/post/java-interview-resource-list/","section":"post","summary":"\u003cp\u003e总结了一些面试资源清单\u003c/p\u003e","tags":["面试"],"title":"Java Interview Resource List","type":"post","url":"/post/java-interview-resource-list/","weight":0,"wordcount":148},{"author":null,"categories":["Tech"],"content":"","date":1550216483,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550216483,"objectID":"abe37cf47c994dfd8e97dd23dc73fb08","permalink":"https://quguang.wang/post/java-dubbo-principle/","publishdate":"2019-02-15T15:41:23+08:00","readingtime":7,"relpermalink":"/post/java-dubbo-principle/","section":"post","summary":"","tags":["dubbo"],"title":"Dubbo解析及原理浅析","type":"post","url":"/post/java-dubbo-principle/","weight":0,"wordcount":3298},{"author":null,"categories":["Tech"],"content":"","date":1550200256,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550200256,"objectID":"49730bd890d087034df4e84f39cf38fd","permalink":"https://quguang.wang/post/java-rpc/","publishdate":"2019-02-15T11:10:56+08:00","readingtime":11,"relpermalink":"/post/java-rpc/","section":"post","summary":"\u003cp\u003e在校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。\u003c/p\u003e","tags":["面试"],"title":"你应该知道的 RPC 原理","type":"post","url":"/post/java-rpc/","weight":0,"wordcount":5164},{"author":null,"categories":["Tech"],"content":"","date":1550127887,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":12700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550127887,"objectID":"e1f5c1b1511a7b9f39a6dec685388b9c","permalink":"https://quguang.wang/post/java-thread-pool/","publishdate":"2019-02-14T15:04:47+08:00","readingtime":26,"relpermalink":"/post/java-thread-pool/","section":"post","summary":"\u003cp\u003e在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:\u003c/p\u003e\n\n\u003cp\u003e 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。\u003c/p\u003e\n\n\u003cp\u003e 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?\u003c/p\u003e","tags":["面试"],"title":"Java并发编程:线程池的使用","type":"post","url":"/post/java-thread-pool/","weight":0,"wordcount":12681},{"author":null,"categories":["Tech"],"content":"","date":1550114781,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5500,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550114781,"objectID":"11d984dcc54d4399f199837a19c7c255","permalink":"https://quguang.wang/post/jmm-java/","publishdate":"2019-02-14T11:26:21+08:00","readingtime":11,"relpermalink":"/post/jmm-java/","section":"post","summary":"\u003cp\u003eJava内存模型即Java Memory Model,简称JMM。\u003c/p\u003e\n\n\u003cp\u003eJMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。\u003c/p\u003e","tags":["面试"],"title":"全面理解Java内存模型","type":"post","url":"/post/jmm-java/","weight":0,"wordcount":5405},{"author":null,"categories":["Tech"],"content":"","date":1550017808,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550017808,"objectID":"cfd143531041664196a2b9be331372d9","permalink":"https://quguang.wang/post/interview-exp-pdd/","publishdate":"2019-02-13T08:30:08+08:00","readingtime":2,"relpermalink":"/post/interview-exp-pdd/","section":"post","summary":"","tags":["面试","面经"],"title":"最新拼多多技术部面试题:幻读+分段锁+死锁+Spring Cloud+秒杀","type":"post","url":"/post/interview-exp-pdd/","weight":0,"wordcount":606},{"author":null,"categories":null,"content":null,"date":1550017808,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1550017808,"objectID":"","permalink":"https://quguang.wang/tags/%E9%9D%A2%E7%BB%8F/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E9%9D%A2%E7%BB%8F/","section":"tags","summary":"","tags":null,"title":"面经","type":"tags","url":"/tags/%E9%9D%A2%E7%BB%8F/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1550015801,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1550015801,"objectID":"f85f6c8617dacf7330ac193a8820418a","permalink":"https://quguang.wang/post/interview-exp-baidu/","publishdate":"2019-02-13T07:56:41+08:00","readingtime":8,"relpermalink":"/post/interview-exp-baidu/","section":"post","summary":"\u003cp\u003e从事Java开发也有5年经验了,7月初来到帝都,开启面试经历,前后20天左右,主面互联网公司,一二线大公司或者是融资中的创业公司都面试过,拿了一些offer,其中包括奇虎360,最后综合决定还是去百度了。\u003c/p\u003e","tags":["面试"],"title":"5年经验Java程序员帝都面试20天,拿下数个offer,最终选择了百度","type":"post","url":"/post/interview-exp-baidu/","weight":0,"wordcount":3595},{"author":null,"categories":null,"content":null,"date":1549955550,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1549955550,"objectID":"","permalink":"https://quguang.wang/tags/servlet/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/servlet/","section":"tags","summary":"","tags":null,"title":"servlet","type":"tags","url":"/tags/servlet/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1549955550,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1549955550,"objectID":"","permalink":"https://quguang.wang/tags/springmvc/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/springmvc/","section":"tags","summary":"","tags":null,"title":"springmvc","type":"tags","url":"/tags/springmvc/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1549955550,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1549955550,"objectID":"","permalink":"https://quguang.wang/tags/tomcat/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/tomcat/","section":"tags","summary":"","tags":null,"title":"tomcat","type":"tags","url":"/tags/tomcat/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1549955550,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1549955550,"objectID":"18727b6bfacb24919d7fd39e53ecf745","permalink":"https://quguang.wang/post/tomcat-overview/","publishdate":"2019-02-12T15:12:30+08:00","readingtime":6,"relpermalink":"/post/tomcat-overview/","section":"post","summary":"\u003ch2 id=\"tomcat-server的组成部分\"\u003eTomcat Server的组成部分\u003c/h2\u003e\n\n\u003ch3 id=\"1-1-server\"\u003e1.1 – Server\u003c/h3\u003e\n\n\u003cp\u003eA Server element represents the entire Catalina servlet container. (Singleton)\u003c/p\u003e\n\n\u003ch3 id=\"1-2-service\"\u003e1.2 – Service\u003c/h3\u003e","tags":["tomcat","java","springmvc","servlet"],"title":"Tomcat Overview","type":"post","url":"/post/tomcat-overview/","weight":0,"wordcount":2548},{"author":null,"categories":["Tech"],"content":"","date":1549938140,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1549938140,"objectID":"b7331555acd8ba04b938e1ae0fb031e7","permalink":"https://quguang.wang/post/springboot-how-run/","publishdate":"2019-02-12T10:22:20+08:00","readingtime":7,"relpermalink":"/post/springboot-how-run/","section":"post","summary":"\u003cp\u003e不得不说 SpringBoot 太复杂了,我本来只想研究一下 SpringBoot 最简单的 HelloWorld 程序是如何从 main 方法一步一步跑起来的,但是这却是一个相当深的坑。你可以试着沿着调用栈代码一层一层的深入进去,如果你不打断点,你根本不知道接下来程序会往哪里流动。这个不同于我研究过去的 Go 语言、Python 语言框架,它们通常都非常直接了当,设计上清晰易懂,代码写起来简单,里面的实现同样也很简单。但是 SpringBoot 不是,它的外表轻巧简单,但是它的里面就像一只巨大的怪兽,这只怪兽有千百只脚把自己缠绕在一起,把爱研究源码的读者绕的晕头转向。\u003c/p\u003e","tags":[],"title":"SpringBoot 究竟是如何跑起来的?","type":"post","url":"/post/springboot-how-run/","weight":0,"wordcount":3233},{"author":null,"categories":["Tech"],"content":"","date":1548913169,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1548913169,"objectID":"45b49b73b7c7385f06c2caf71795df9a","permalink":"https://quguang.wang/post/test-about/","publishdate":"2019-01-31T13:39:29+08:00","readingtime":10,"relpermalink":"/post/test-about/","section":"post","summary":"\u003cp\u003e简单聊下我所了解的测试,测试基础知识、GUI 自动化测试、API 自动化测试、代码级测试、性能测试、测试数据准备、测试基础架构、测试新技术,测试覆盖率、软件缺陷报告、测试计划\u003c/p\u003e","tags":["测试"],"title":"《软件测试52讲》-谈谈测试","type":"post","url":"/post/test-about/","weight":0,"wordcount":4519},{"author":null,"categories":null,"content":null,"date":1548913169,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1548913169,"objectID":"","permalink":"https://quguang.wang/tags/%E6%B5%8B%E8%AF%95/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E6%B5%8B%E8%AF%95/","section":"tags","summary":"","tags":null,"title":"测试","type":"tags","url":"/tags/%E6%B5%8B%E8%AF%95/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1548745281,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1548745281,"objectID":"","permalink":"https://quguang.wang/tags/mongo/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/mongo/","section":"tags","summary":"","tags":null,"title":"mongo","type":"tags","url":"/tags/mongo/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1548745281,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":500,"html":"","keywords":["mongo","excel"],"kind":"page","lang":"en","lastmod":1548745281,"objectID":"fb20374c8241404d0aaf5011fa35d7ec","permalink":"https://quguang.wang/post/mongo-export-csv/","publishdate":"2019-01-29T15:01:21+08:00","readingtime":1,"relpermalink":"/post/mongo-export-csv/","section":"post","summary":"\u003cp\u003emongo 上查询数据,导出excel,并解决Mac上的Excel在导入CSV文件不支持utf-8的问题\u003c/p\u003e","tags":["mongo","工具使用"],"title":"Mongo Export Csv","type":"post","url":"/post/mongo-export-csv/","weight":0,"wordcount":481},{"author":null,"categories":null,"content":null,"date":1548745281,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1548745281,"objectID":"","permalink":"https://quguang.wang/tags/%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8/","section":"tags","summary":"","tags":null,"title":"工具使用","type":"tags","url":"/tags/%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1548742104,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":300,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1548742104,"objectID":"77430d21615ed25204a21ffdaa1cc6d1","permalink":"https://quguang.wang/post/mysql-navicat-structure-doc/","publishdate":"2019-01-29T14:08:24+08:00","readingtime":1,"relpermalink":"/post/mysql-navicat-structure-doc/","section":"post","summary":"\u003cp\u003e我们在写数据库设计文档的时候,会需要对数据库表进行设计的编写,手动写的话会很费时间费精力,尤其是如果有大量的表需要写的时候,就更加浪费时间了。下面就让我给大家讲一个简单方法。\n我的是在Navicat中导出的数据库表。\u003c/p\u003e","tags":["MySQL","工具使用"],"title":"Mysql 使用Navicat 导出数据库表结构","type":"post","url":"/post/mysql-navicat-structure-doc/","weight":0,"wordcount":258},{"author":null,"categories":null,"content":null,"date":1548313009,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1548485809,"objectID":"","permalink":"https://quguang.wang/tags/drools/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/drools/","section":"tags","summary":"","tags":null,"title":"drools","type":"tags","url":"/tags/drools/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1548313009,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1000,"html":"","keywords":["Drools","docker","容器"],"kind":"page","lang":"en","lastmod":1548485809,"objectID":"c284b00a222f90b5626bcf502b008491","permalink":"https://quguang.wang/post/drools-7.15.0.final-docker-deploy/","publishdate":"2019-01-24T14:56:49+08:00","readingtime":2,"relpermalink":"/post/drools-7.15.0.final-docker-deploy/","section":"post","summary":"\u003cp\u003e关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间。\u003c/p\u003e","tags":["drools"],"title":"Drools 7.15.0 docker容器方式部署","type":"post","url":"/post/drools-7.15.0.final-docker-deploy/","weight":0,"wordcount":929},{"author":null,"categories":null,"content":null,"date":1548059666,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1548059666,"objectID":"","permalink":"https://quguang.wang/tags/%E4%B9%A6%E5%8D%95/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E4%B9%A6%E5%8D%95/","section":"tags","summary":"","tags":null,"title":"书单","type":"tags","url":"/tags/%E4%B9%A6%E5%8D%95/","weight":0,"wordcount":0},{"author":null,"categories":["note"],"content":"","date":1548059666,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1548059666,"objectID":"5a40be662b01496be6a37afb22d4ca84","permalink":"https://quguang.wang/post/booklist-zhengshitang-2018/","publishdate":"2019-01-21T16:34:26+08:00","readingtime":6,"relpermalink":"/post/booklist-zhengshitang-2018/","section":"post","summary":"\u003cp\u003e读史明智,顾子明推荐书单\u003c/p\u003e","tags":["书单"],"title":"政事堂书单 2018","type":"post","url":"/post/booklist-zhengshitang-2018/","weight":0,"wordcount":2675},{"author":null,"categories":["Tech"],"content":"","date":1547875136,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":6000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547875136,"objectID":"28d64a3cac7cdfb1326c4ad07ad9d3f5","permalink":"https://quguang.wang/post/drools-wb-translation/","publishdate":"2019-01-19T13:18:56+08:00","readingtime":12,"relpermalink":"/post/drools-wb-translation/","section":"post","summary":"\u003cblockquote\u003e\n\u003cp\u003e转载自:\u003ca href=\"https://github.com/MyHerux/drools-springboot\"\u003eMyHerux/drools-springboot\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e","tags":["drools"],"title":"Drools Documentation","type":"post","url":"/post/drools-wb-translation/","weight":0,"wordcount":5956},{"author":null,"categories":["Tech"],"content":"","date":1547855774,"description":"","dir":"top/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1565222174,"objectID":"7a0da914bde98a7d3fcc7f6c5886633c","permalink":"https://quguang.wang/top/about/","publishdate":"2019-01-19T07:56:14+08:00","readingtime":4,"relpermalink":"/top/about/","section":"top","summary":"关于我 始终处于一个在不断认识自己、认识世界的过程中。渴望来系统地了解自己所处的时代,增加自己的嗅觉。当然也希望在 IT 行业,有自己的一技之长。 关","tags":[],"title":"about me","type":"top","url":"/top/about/","weight":0,"wordcount":1729},{"author":null,"categories":["Tech"],"content":"","date":1547855774,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":5400,"html":"","keywords":["java","锁","并发"],"kind":"page","lang":"en","lastmod":1547855774,"objectID":"ec910d236d265c792b4f284a4901e197","permalink":"https://quguang.wang/post/java-15-lock/","publishdate":"2019-01-19T07:56:14+08:00","readingtime":11,"relpermalink":"/post/java-15-lock/","section":"post","summary":"\u003cp\u003eJava 中15种锁的介绍\u003c/p\u003e","tags":["java","锁","并发"],"title":"Java 中15种锁的介绍:公平锁,可重入锁等等……","type":"post","url":"/post/java-15-lock/","weight":0,"wordcount":5357},{"author":null,"categories":null,"content":null,"date":1547855774,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"section","lang":"en","lastmod":1565222174,"objectID":"","permalink":"https://quguang.wang/top/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/top/","section":"top","summary":"","tags":null,"title":"Tops","type":"top","url":"/top/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1547855774,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1547855774,"objectID":"","permalink":"https://quguang.wang/tags/%E5%B9%B6%E5%8F%91/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E5%B9%B6%E5%8F%91/","section":"tags","summary":"","tags":null,"title":"并发","type":"tags","url":"/tags/%E5%B9%B6%E5%8F%91/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1547855774,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1547855774,"objectID":"","permalink":"https://quguang.wang/tags/%E9%94%81/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E9%94%81/","section":"tags","summary":"","tags":null,"title":"锁","type":"tags","url":"/tags/%E9%94%81/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1547795028,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547795028,"objectID":"3113299904f27f199e407f16074fe33d","permalink":"https://quguang.wang/post/course-introduction/","publishdate":"2019-01-18T15:03:48+08:00","readingtime":4,"relpermalink":"/post/course-introduction/","section":"post","summary":"\u003cp\u003e前言:搜罗来一些不错的网络课程,比如Coursera, edX, Udacity上\u003c/p\u003e","tags":["书单"],"title":"值得一看的网络课程收集","type":"post","url":"/post/course-introduction/","weight":0,"wordcount":1742},{"author":null,"categories":["Tech"],"content":"","date":1547793304,"description":"","dir":"/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547793304,"objectID":"2eb4f9f9586a85d67285936fcd191f04","permalink":"https://quguang.wang/navigator/","publishdate":"2019-01-18T14:35:04+08:00","readingtime":1,"relpermalink":"/navigator/","section":"","summary":"","tags":[],"title":"Navigator","type":"page","url":"/navigator/","weight":0,"wordcount":86},{"author":null,"categories":["Tech"],"content":"","date":1547709123,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4600,"html":"","keywords":["Docker的实现原理","容器","Docker"],"kind":"page","lang":"en","lastmod":1547795523,"objectID":"5260c1f8be5753f151173246749cda70","permalink":"https://quguang.wang/post/geektime-kubernetes-docker-introduction/","publishdate":"2019-01-17T15:12:03+08:00","readingtime":10,"relpermalink":"/post/geektime-kubernetes-docker-introduction/","section":"post","summary":"\u003cp\u003e容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造一个“边界”\u003c/p\u003e\n\n\u003cp\u003eDocker容器具有以下3个特点:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e轻量级\u003c/strong\u003e:在同一台宿主机上的容器共享系统Kernel,这使得他们可以迅速启动而且占有的内存极少。镜像是以分层文件系统构造的,这可以让它们共享相同的文件,使得磁盘使用率和镜像下载速度得到提高。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e开放\u003c/strong\u003e:Docker容器基于开放标准,这使得Docker容器可以运行在主流Linux发行版和Windows操作系统上。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e安全\u003c/strong\u003e:容器将各个应用程序隔离开来,这给所有的应用程序提供了一层额外的安全防护。\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e对于Docker等大多数Linux容器来说,\u003cstrong\u003eCgroups技术是用来制造约束的主要手段,而Namespace技术则是用来修改进程视图的主要方法。\u003c/strong\u003e\u003c/p\u003e","tags":["docker","容器"],"title":"《深入剖析Kubernetes》-Docker的实现原理","type":"post","url":"/post/geektime-kubernetes-docker-introduction/","weight":0,"wordcount":4526},{"author":null,"categories":["Tech"],"content":"","date":1547685676,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":800,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547685676,"objectID":"118d04138ac9999dbc534f8b895a94bc","permalink":"https://quguang.wang/post/geektime-kubernetes-introduction/","publishdate":"2019-01-17T08:41:16+08:00","readingtime":2,"relpermalink":"/post/geektime-kubernetes-introduction/","section":"post","summary":"\u003cp\u003e首先,Kubernetes项目要解决的问题是什么?\u003c/p\u003e\n\n\u003cp\u003e编排?调度?容器云?还是集群管理?\u003c/p\u003e\n\n\u003cp\u003e对于大多数用户来说,他们希望Kubernetes项目带来的体验是确定的:现在我有了应用的容器镜像,请帮我在一个给定的集群上把这个应用运行起来。更进一步地说,我还希望Kubernetes能给我提供路由网关、水平扩展、监控、备份、灾难恢复等一系列运维能力。这不就是经典Paas(比如,Cloud Foundry)项目的能力吗?\u003c/p\u003e","tags":["kubernetes"],"title":"《深入剖析Kubernetes》-入门","type":"post","url":"/post/geektime-kubernetes-introduction/","weight":0,"wordcount":786},{"author":null,"categories":["Tech"],"content":"","date":1547635861,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547635861,"objectID":"3f8541a615569b5607c7e3c43f3bd39b","permalink":"https://quguang.wang/post/geektime-network-protocol-ipconfig/","publishdate":"2019-01-16T18:51:01+08:00","readingtime":7,"relpermalink":"/post/geektime-network-protocol-ipconfig/","section":"post","summary":"\u003cp\u003e从一行查看IP地址的命令开始讲解,\nWindow上是ipconfig,Linux上是ifconfig,和 ip addr\u003c/p\u003e","tags":["网络协议","《趣谈网络协议》"],"title":"《趣谈网络协议》-Ipconfig","type":"post","url":"/post/geektime-network-protocol-ipconfig/","weight":0,"wordcount":3188},{"author":null,"categories":["life"],"content":"","date":1547606570,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547606570,"objectID":"6e3819192e4f7ebe036a3b0bb3ec624b","permalink":"https://quguang.wang/post/2018-2019/","publishdate":"2019-01-16T10:42:50+08:00","readingtime":2,"relpermalink":"/post/2018-2019/","section":"post","summary":"\u003cp\u003e个人2019年,年度目标\u003c/p\u003e","tags":[],"title":"2018总结-2019计划","type":"post","url":"/post/2018-2019/","weight":0,"wordcount":585},{"author":null,"categories":null,"content":null,"date":1547520782,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1547520782,"objectID":"","permalink":"https://quguang.wang/tags/%E5%88%86%E5%B8%83%E5%BC%8F/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E5%88%86%E5%B8%83%E5%BC%8F/","section":"tags","summary":"","tags":null,"title":"分布式","type":"tags","url":"/tags/%E5%88%86%E5%B8%83%E5%BC%8F/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1547520782,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3600,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547520782,"objectID":"240f6a0b5d4e8fbb50af0403093117d9","permalink":"https://quguang.wang/post/transaction-tcc/","publishdate":"2019-01-15T10:53:02+08:00","readingtime":8,"relpermalink":"/post/transaction-tcc/","section":"post","summary":"","tags":["分布式"],"title":"分布式事务-TCC事务:最终一致性","type":"post","url":"/post/transaction-tcc/","weight":0,"wordcount":3593},{"author":null,"categories":["Tech"],"content":"","date":1547520782,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":1200,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547520782,"objectID":"01bc181ab9a82f72a80168b734c2e89d","permalink":"https://quguang.wang/post/transaction-local-msg-tb/","publishdate":"2019-01-15T10:53:02+08:00","readingtime":3,"relpermalink":"/post/transaction-local-msg-tb/","section":"post","summary":"","tags":[],"title":"分布式事务-本地消息表:最终一致性","type":"post","url":"/post/transaction-local-msg-tb/","weight":0,"wordcount":1159},{"author":null,"categories":["Tech"],"content":"","date":1547448782,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":4400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547448782,"objectID":"4bcf038824330254a5a04f6a207f2945","permalink":"https://quguang.wang/post/distributed-consistency/","publishdate":"2019-01-14T14:53:02+08:00","readingtime":9,"relpermalink":"/post/distributed-consistency/","section":"post","summary":"\u003cp\u003e什么是事务,简单说事务就是要么全不做,要么全做。一部分做一部分不做就会出一致性问题。\u003c/p\u003e\n\n\u003cp\u003e传统的单体应用不会横跨多个数据库,可以通过单机事务保证一致性。\u003c/p\u003e\n\n\u003cp\u003e然而在海量数据的场景下,需要对数据库做拆分,即分库分表,而Cobar、MyCat这类分库分表中间并不提供分布式事务的特性,并且基于二阶段提交的分布式事务性能较差,对于大多数业务场景来说,并不需要强一致,只需要保证最终一致性即可。\u003c/p\u003e","tags":["分布式"],"title":"从分布式一致性谈到CAP理论、BASE理论、分布式事务","type":"post","url":"/post/distributed-consistency/","weight":0,"wordcount":4363},{"author":null,"categories":["Tech"],"content":"","date":1547448782,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2000,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547448782,"objectID":"e52817e9b4c5411f183df453200505ff","permalink":"https://quguang.wang/post/transaction-2pc/","publishdate":"2019-01-14T14:53:02+08:00","readingtime":4,"relpermalink":"/post/transaction-2pc/","section":"post","summary":"","tags":["分布式"],"title":"分布式事务-2PC(二阶段提交)","type":"post","url":"/post/transaction-2pc/","weight":0,"wordcount":1994},{"author":null,"categories":["Tech"],"content":"","date":1547448782,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1547448782,"objectID":"f3614a00315654ae9f8a146d58590108","permalink":"https://quguang.wang/post/transaction-3pc/","publishdate":"2019-01-14T14:53:02+08:00","readingtime":8,"relpermalink":"/post/transaction-3pc/","section":"post","summary":"","tags":["分布式"],"title":"分布式事务-3PC(三阶段提交)","type":"post","url":"/post/transaction-3pc/","weight":0,"wordcount":3876},{"author":null,"categories":["Tech"],"content":null,"date":1547345190,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":1300,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547345190,"objectID":"e3e157909073902261cd0c372baa80cf","permalink":"https://quguang.wang/post/what-is-devops/","publishdate":"2019-01-13T10:06:30+08:00","readingtime":3,"relpermalink":"/post/what-is-devops/","section":"post","summary":"\u003cblockquote\u003e\n\u003cp\u003eDevOps是人员,流程和产品的结合,可以为最终用户持续的提供价值。\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003e它不仅仅是流程,它不仅仅是产品或工具,它完全是人员,流程和工具,共同努力实现目标。最终以小增量单位实现价值,持续交付给终端用户,我认为这非常重要。\u003c/p\u003e","tags":["java"],"title":"什么是Devops?","type":"post","url":"/post/what-is-devops/","weight":0,"wordcount":1244},{"author":null,"categories":["Tech"],"content":null,"date":1547345027,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":2100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547345027,"objectID":"dcac870f8d981fcabc3c8a3a213ddf8c","permalink":"https://quguang.wang/post/devops-in-action/","publishdate":"2019-01-13T10:03:47+08:00","readingtime":5,"relpermalink":"/post/devops-in-action/","section":"post","summary":"\u003cp\u003e强调业务目标,以用户的价值为唯一的评判标准,团队的考核评价机制也要改变,个体和团队的成功都要放在整个开发-运维生命周期内来进行评价,开发完成了很多用户需求不一定是成功,运维保障系统不down机也不一定是成功!只有用户想要的功能被及时实现了,被成功部署了,被稳定使用了才算成功。\n就是把敏捷开发部门和运维部门之间的围墙打通,形成闭环\u003c/p\u003e","tags":[],"title":"Devops实践","type":"post","url":"/post/devops-in-action/","weight":0,"wordcount":2027},{"author":null,"categories":["note"],"content":null,"date":1547285994,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547285994,"objectID":"7cfa223ffc38c6fe3c985ac48f6b2d65","permalink":"https://quguang.wang/post/reading-note-%E4%BD%A0%E7%9A%84%E7%81%AF%E4%BA%AE%E7%9D%80%E5%90%97/","publishdate":"2019-01-12T17:39:54+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E4%BD%A0%E7%9A%84%E7%81%AF%E4%BA%AE%E7%9D%80%E5%90%97/","section":"post","summary":"这里填写文章文章摘要。","tags":["java"],"title":"《你的灯亮着吗?》-读书笔记","type":"post","url":"/post/reading-note-%E4%BD%A0%E7%9A%84%E7%81%AF%E4%BA%AE%E7%9D%80%E5%90%97/","weight":0,"wordcount":15},{"author":null,"categories":["note"],"content":null,"date":1547284843,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":500,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547284843,"objectID":"b5a53972afc2ca8ec7c853369a8c65e3","permalink":"https://quguang.wang/post/reading-note-%E5%BD%B1%E5%93%8D%E5%8A%9B/","publishdate":"2019-01-12T17:20:43+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E5%BD%B1%E5%93%8D%E5%8A%9B/","section":"post","summary":"\u003cp\u003e主要讲的是作者对于顺从性的研究,到底是什么因素让一个人向另一个人说了“行”?哪些技术能最有效地利用这些因素。作者研究了顺从心理学,先是在实验室,后来在社会上进行参与式观察。\u003c/p\u003e\n\n\u003cp\u003e顺从职业者:销售员、筹款家、广告商等。\u003c/p\u003e\n\n\u003cp\u003e最后总结了六个基本类型,每一类型都是从一种能指导人们行为的基本心理原则衍生出来的,正因为如此,这些策略就具有了左右人们行为的力量,分别是 :\u003c/p\u003e","tags":["心理学"],"title":"《影响力》-读书笔记","type":"post","url":"/post/reading-note-%E5%BD%B1%E5%93%8D%E5%8A%9B/","weight":0,"wordcount":444},{"author":null,"categories":null,"content":null,"date":1547284843,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1547284843,"objectID":"","permalink":"https://quguang.wang/tags/%E5%BF%83%E7%90%86%E5%AD%A6/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E5%BF%83%E7%90%86%E5%AD%A6/","section":"tags","summary":"","tags":null,"title":"心理学","type":"tags","url":"/tags/%E5%BF%83%E7%90%86%E5%AD%A6/","weight":0,"wordcount":0},{"author":null,"categories":["note"],"content":null,"date":1547279167,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547279167,"objectID":"3114d41761f6e52af6c8c733840e02ba","permalink":"https://quguang.wang/post/reading-note-%E5%87%B9%E5%87%B8%E7%9B%B8%E5%AF%B9%E8%AE%BA/","publishdate":"2019-01-12T15:46:07+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E5%87%B9%E5%87%B8%E7%9B%B8%E5%AF%B9%E8%AE%BA/","section":"post","summary":"这里填写文章文章摘要。","tags":["java"],"title":"《凹凸相对论》-读书笔记","type":"post","url":"/post/reading-note-%E5%87%B9%E5%87%B8%E7%9B%B8%E5%AF%B9%E8%AE%BA/","weight":0,"wordcount":36},{"author":null,"categories":["note"],"content":null,"date":1547279167,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":200,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547279167,"objectID":"8946b6b8211e7598351835a633acf2c3","permalink":"https://quguang.wang/post/reading-note-%E5%A4%A7%E5%9E%8B%E7%BD%91%E7%AB%99%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84/","publishdate":"2019-01-12T15:46:07+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E5%A4%A7%E5%9E%8B%E7%BD%91%E7%AB%99%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84/","section":"post","summary":"\u003cp\u003e李智慧老师13年写的架构入门书,没有太深入的内容,比较适合刚刚接触网站架构的同学有个通盘的了解,也可以是有一定经验的同学作为目录一样去看。了解架构的演化历史,形成知识图和大局观。\u003c/p\u003e\n\n\u003cp\u003e何为架构,要有大局观,大局观就是提前预防掉那些通用的问题:高可用,工程化,伸缩性,扩展性。对应需要的能力:了解分布式的一些东西,了解项目的业务和流程和运维使之工程化,了解负载均衡,能够对业务的分割和代码的分层。\u003c/p\u003e\n\n\u003cdiv class=\"douban_show\"\u003e\n \u003cdiv id=\"db9787121212000\" date-dbid=\"9787121212000\" class=\"douban_item post-preview\"\u003e\u003c/div\u003e\n \u003c/div\u003e","tags":["java"],"title":"《大型网站技术架构》-读书笔记","type":"post","url":"/post/reading-note-%E5%A4%A7%E5%9E%8B%E7%BD%91%E7%AB%99%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84/","weight":0,"wordcount":197},{"author":null,"categories":["note"],"content":null,"date":1547279167,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547279167,"objectID":"40605b82a9b9dccbd1b68c0a882f0e78","permalink":"https://quguang.wang/post/reading-note-%E6%9B%BE%E5%9B%BD%E8%97%A9%E7%9A%84%E6%AD%A3%E9%9D%A2%E4%B8%8E%E4%BE%A7%E9%9D%A2/","publishdate":"2019-01-12T15:46:07+08:00","readingtime":1,"relpermalink":"/post/reading-note-%E6%9B%BE%E5%9B%BD%E8%97%A9%E7%9A%84%E6%AD%A3%E9%9D%A2%E4%B8%8E%E4%BE%A7%E9%9D%A2/","section":"post","summary":"\u003cp\u003e从《曾国藩家书》了解到的曾国藩,以他为榜样,资质愚钝,后天补足。\u003c/p\u003e\n\n\u003cdiv class=\"douban_show\"\u003e\n \u003cdiv id=\"db9787512501805\" date-dbid=\"9787512501805\" class=\"douban_item post-preview\"\u003e\u003c/div\u003e\n \u003c/div\u003e","tags":["java","历史","人物传记"],"title":"《曾国藩的正面与侧面》-读书笔记","type":"post","url":"/post/reading-note-%E6%9B%BE%E5%9B%BD%E8%97%A9%E7%9A%84%E6%AD%A3%E9%9D%A2%E4%B8%8E%E4%BE%A7%E9%9D%A2/","weight":0,"wordcount":32},{"author":null,"categories":["note"],"content":null,"date":1547279167,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547279167,"objectID":"663184b6b15b58b8228e350276d5b04d","permalink":"https://quguang.wang/post/reading-note-%E7%A8%80%E7%BC%BA/","publishdate":"2019-01-12T15:46:07+08:00","readingtime":0,"relpermalink":"/post/reading-note-%E7%A8%80%E7%BC%BA/","section":"post","summary":"\u003cdiv class=\"douban_show\"\u003e\n \u003cdiv id=\"db9787213063497\" date-dbid=\"9787213063497\" class=\"douban_item post-preview\"\u003e\u003c/div\u003e\n \u003c/div\u003e","tags":["java"],"title":"《稀缺》-读书笔记","type":"post","url":"/post/reading-note-%E7%A8%80%E7%BC%BA/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1547279167,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1547279167,"objectID":"","permalink":"https://quguang.wang/tags/%E4%BA%BA%E7%89%A9%E4%BC%A0%E8%AE%B0/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E4%BA%BA%E7%89%A9%E4%BC%A0%E8%AE%B0/","section":"tags","summary":"","tags":null,"title":"人物传记","type":"tags","url":"/tags/%E4%BA%BA%E7%89%A9%E4%BC%A0%E8%AE%B0/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1547279167,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1547279167,"objectID":"","permalink":"https://quguang.wang/tags/%E5%8E%86%E5%8F%B2/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E5%8E%86%E5%8F%B2/","section":"tags","summary":"","tags":null,"title":"历史","type":"tags","url":"/tags/%E5%8E%86%E5%8F%B2/","weight":0,"wordcount":0},{"author":null,"categories":["life"],"content":null,"date":1547265541,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":1000,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1547265541,"objectID":"cb7379b65fb2ebb0031d1a0756e6ae7f","permalink":"https://quguang.wang/post/learn-method/","publishdate":"2019-01-12T11:59:01+08:00","readingtime":2,"relpermalink":"/post/learn-method/","section":"post","summary":"\u003cp\u003e首先明确的是,学习是件反人性的事,需要刻意练习的,是需要持之以恒的。\u003c/p\u003e\n\n\u003cp\u003e很多事情能做到什么程度,其实在思想的源头就被决定了,因为它会绝大程度地受到思考问题的出发点、思维方式、格局观、价值观等因素影响。\u003c/p\u003e\n\n\u003ch3 id=\"目前的状况-浅度学习\"\u003e目前的状况-浅度学习\u003c/h3\u003e\n\n\u003col\u003e\n\u003cli\u003e朋友圈、头条、知乎、抖音、微博质量不高\u003c/li\u003e\n\u003cli\u003e加班严重,挤占时间\u003c/li\u003e\n\u003cli\u003e外网受限,英文受限,无法获得一手资料\u003c/li\u003e\n\u003cli\u003e急于求成,心态浮躁,不求甚解,没有自己的思考\u003c/li\u003e\n\u003c/ol\u003e","tags":["java"],"title":"learn method","type":"post","url":"/post/learn-method/","weight":0,"wordcount":958},{"author":null,"categories":["note"],"content":null,"date":1546759475,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":10600,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1546759475,"objectID":"5c7667c9d334595305690b8afe0ccf69","permalink":"https://quguang.wang/post/booklist/","publishdate":"2019-01-06T15:24:35+08:00","readingtime":22,"relpermalink":"/post/booklist/","section":"post","summary":"\u003cp\u003e眼界对应着拓宽,这是广度上的,如果需要深入了解一个领域,还需入手一些经典的教科书籍,经过系统的学习才能掌握。\n人的精力和时间都是有限的,你不可能对每一个领域都有比较深的认识。我们都只能在有限的时间里做有限的事情,读书也须有选择。那么怎么选择呢?建议从兴趣入手。\u003c/p\u003e\n\n\u003cp\u003e然而,我觉得\u003cstrong\u003e心理学\u003c/strong\u003e和\u003cstrong\u003e经济学\u003c/strong\u003e是每个人都有必要看一看的,它们能解释生活中很多看似不可理喻,实则又非常正常的现象。\u003c/p\u003e","tags":["书单"],"title":"书单-按学科划分","type":"post","url":"/post/booklist/","weight":0,"wordcount":10554},{"author":null,"categories":["Tech"],"content":null,"date":1546759475,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":500,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1546759475,"objectID":"bc60090516bfec0624376ca6b2e8fe6d","permalink":"https://quguang.wang/post/booklist-ability/","publishdate":"2019-01-06T15:24:35+08:00","readingtime":1,"relpermalink":"/post/booklist-ability/","section":"post","summary":"\u003cp\u003e按能力划分(附书籍豆瓣链接)\u003c/p\u003e","tags":["书单"],"title":"书单-按能力划分","type":"post","url":"/post/booklist-ability/","weight":0,"wordcount":460},{"author":null,"categories":null,"content":null,"date":1546614313,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1546614313,"objectID":"","permalink":"https://quguang.wang/tags/maven/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/maven/","section":"tags","summary":"","tags":null,"title":"maven","type":"tags","url":"/tags/maven/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":null,"date":1546614313,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":600,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1546614313,"objectID":"1865239d22555042c57b69a6970d2f40","permalink":"https://quguang.wang/post/springboot-maven-profile/","publishdate":"2019-01-04T23:05:13+08:00","readingtime":2,"relpermalink":"/post/springboot-maven-profile/","section":"post","summary":"\u003cblockquote\u003e\n\u003cp\u003e今天看 guns 项目的 application.properties 文件,发现了\u003ccode\u003espring.profiles.active = @profiles.active@\u003c/code\u003e的写法,查了好些资料终于搞明白了。原来是在集成maven和Spring boot的profile功能时用的,那么如何集成呢?\u003c/p\u003e\n\u003c/blockquote\u003e","tags":["java","maven"],"title":"如何集成maven和Spring boot的profile功能","type":"post","url":"/post/springboot-maven-profile/","weight":0,"wordcount":566},{"author":null,"categories":["Tech"],"content":null,"date":1545905102,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":8600,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545905102,"objectID":"85c2351960ba5ffaff6661a9a62a711f","permalink":"https://quguang.wang/post/java-io/","publishdate":"2018-12-27T18:05:02+08:00","readingtime":18,"relpermalink":"/post/java-io/","section":"post","summary":"\u003cp\u003eJava 提供了哪些IO方式?NIO如何实现多路复用?\u003c/p\u003e\n\n\u003cp\u003e首先、传统的java.io包,它基于流模型实现,提供了,比如File抽象、输入输出流等。交互方式是同步、阻塞的方式。也就是说,在读取输入流或者写入输出流时,在写、读动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。\u003c/p\u003e","tags":["java"],"title":"Java Io","type":"post","url":"/post/java-io/","weight":0,"wordcount":8559},{"author":null,"categories":["Tech"],"content":null,"date":1545795943,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":300,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545795943,"objectID":"1f41e9e26f5f06b702261352895b852a","permalink":"https://quguang.wang/post/geektime-jvm-how-execute-method-2/","publishdate":"2018-12-26T11:45:43+08:00","readingtime":1,"relpermalink":"/post/geektime-jvm-how-execute-method-2/","section":"post","summary":"\u003cp\u003e《极客时间-深入拆解java虚拟机》笔记\u003c/p\u003e","tags":["java"],"title":"《深入拆解Java虚拟机》-JVM是如何执行方法调用的?(下)","type":"post","url":"/post/geektime-jvm-how-execute-method-2/","weight":0,"wordcount":219},{"author":null,"categories":null,"content":null,"date":1545749573,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1545749573,"objectID":"","permalink":"https://quguang.wang/tags/%E6%B7%B1%E5%85%A5%E6%8B%86%E8%A7%A3java%E8%99%9A%E6%8B%9F%E6%9C%BA/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E6%B7%B1%E5%85%A5%E6%8B%86%E8%A7%A3java%E8%99%9A%E6%8B%9F%E6%9C%BA/","section":"tags","summary":"","tags":null,"title":"《深入拆解Java虚拟机》","type":"tags","url":"/tags/%E6%B7%B1%E5%85%A5%E6%8B%86%E8%A7%A3java%E8%99%9A%E6%8B%9F%E6%9C%BA/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":null,"date":1545749573,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":2000,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545749573,"objectID":"0270c07a7cd371f374b58664e01ca9bf","permalink":"https://quguang.wang/post/geektime-jvm-how-execute-method-1/","publishdate":"2018-12-25T22:52:53+08:00","readingtime":4,"relpermalink":"/post/geektime-jvm-how-execute-method-1/","section":"post","summary":"\u003cp\u003eJVM是如何执行方法调用的?(上)\u003c/p\u003e","tags":["java","《深入拆解Java虚拟机》"],"title":"《深入拆解Java虚拟机》-JVM是如何执行方法调用的?(上)","type":"post","url":"/post/geektime-jvm-how-execute-method-1/","weight":0,"wordcount":1917},{"author":null,"categories":["Tech"],"content":null,"date":1545649420,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":4300,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545649420,"objectID":"6208e422572dee32fa99af1a09220eb8","permalink":"https://quguang.wang/post/jvm-understand-gc-log/","publishdate":"2018-12-24T19:03:40+08:00","readingtime":9,"relpermalink":"/post/jvm-understand-gc-log/","section":"post","summary":"\u003cp\u003e理解GC日志,基于jdk1.7,一步步看懂GC日志\u003c/p\u003e","tags":["java","JVM"],"title":"理解GC日志","type":"post","url":"/post/jvm-understand-gc-log/","weight":0,"wordcount":4204},{"author":null,"categories":["Tech"],"content":null,"date":1545648484,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":1200,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545648484,"objectID":"7c77601f320859c71f61776956dc4b1b","permalink":"https://quguang.wang/post/jvm-performance-optimization/","publishdate":"2018-12-24T18:48:04+08:00","readingtime":3,"relpermalink":"/post/jvm-performance-optimization/","section":"post","summary":"\u003cp\u003elinux性能调优和年轻代大小选择和年老代大小的选择\u003c/p\u003e","tags":["java","JVM"],"title":"JVM性能调优","type":"post","url":"/post/jvm-performance-optimization/","weight":0,"wordcount":1146},{"author":null,"categories":["Tech"],"content":null,"date":1545646105,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":400,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545646105,"objectID":"bf0b35065aa3c77ecd588e81adc1747c","permalink":"https://quguang.wang/post/jvm-tools/","publishdate":"2018-12-24T18:08:25+08:00","readingtime":1,"relpermalink":"/post/jvm-tools/","section":"post","summary":"\u003cp\u003e本文介绍了常用的JDK的命令行工具\u003c/p\u003e","tags":["java","JVM"],"title":"JVM 工具","type":"post","url":"/post/jvm-tools/","weight":0,"wordcount":391},{"author":null,"categories":["Tech"],"content":null,"date":1545637588,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":1300,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545637588,"objectID":"e252b0bb8f684e83a2cd76e63044d9a7","permalink":"https://quguang.wang/post/geektime-jvm-load-java-class/","publishdate":"2018-12-24T15:46:28+08:00","readingtime":3,"relpermalink":"/post/geektime-jvm-load-java-class/","section":"post","summary":"\u003cp\u003eJava虚拟机是如何加载Java类的?\u003c/p\u003e\n\n\u003cp\u003e虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本没有指明从哪里获取、怎样获取。这种开放使得Java在很多领域得到充分运用,例如:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e从ZIP包中读取,这很常见,成为JAR,EAR,WAR格式的基础\u003c/li\u003e\n\u003cli\u003e从网络中获取,最典型的应用就是Applet\u003c/li\u003e\n\u003cli\u003e运行时计算生成,最典型的是动态代理技术,在java.lang.reflect.Proxy中,就是用了ProxyGenerator.generateProxyClass来- 为特定接口生成形式为“*$Proxy”的代理类的二进制字节流\u003c/li\u003e\n\u003cli\u003e由其他文件生成,最典型的JSP应用,由JSP文件生成对应的Class类\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e从class文件到内存中的类,按先后顺序需要经过\u003cstrong\u003e加载、链接、以及初始化\u003c/strong\u003e三大步骤。\u003c/p\u003e","tags":["java"],"title":"Java虚拟机是如何加载Java类的?","type":"post","url":"/post/geektime-jvm-load-java-class/","weight":0,"wordcount":1272},{"author":null,"categories":["Tech"],"content":null,"date":1545275562,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":4500,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545275562,"objectID":"629ec3b6c2fcf77ee0d7af1b3807b779","permalink":"https://quguang.wang/post/roadmap/","publishdate":"2018-12-20T11:12:42+08:00","readingtime":9,"relpermalink":"/post/roadmap/","section":"post","summary":"\u003cp\u003e网罗了比较全面的java技术栈。\u003c/p\u003e\n\n\u003cp\u003e本文基于微信公众号文章基础上添加,原文链接:\n\u003ca href=\"https://mp.weixin.qq.com/s/UKwZkwYmDSVTbj62ACuapg\"\u003ehttps://mp.weixin.qq.com/s/UKwZkwYmDSVTbj62ACuapg\u003c/a\u003e\u003c/p\u003e","tags":["java"],"title":"Java工程师成神之路(2018修订版)","type":"post","url":"/post/roadmap/","weight":0,"wordcount":4402},{"author":null,"categories":[],"content":null,"date":1545274718,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":2100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545274718,"objectID":"7a2935dbc30bcdd260a376f839e6bc50","permalink":"https://quguang.wang/post/markdown/","publishdate":"2018-12-20T10:58:38+08:00","readingtime":5,"relpermalink":"/post/markdown/","section":"post","summary":"\u003cp\u003e本文是markdown语法的示例\u003c/p\u003e","tags":null,"title":"markdown语法示例","type":"post","url":"/post/markdown/","weight":0,"wordcount":2067},{"author":null,"categories":["Tech"],"content":null,"date":1545266694,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":3400,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545266694,"objectID":"6bdc342c985ce5937bbc0e6f4744696b","permalink":"https://quguang.wang/post/geektime-jvm-garabage-collection/","publishdate":"2018-12-20T08:44:54+08:00","readingtime":7,"relpermalink":"/post/geektime-jvm-garabage-collection/","section":"post","summary":"\u003cp\u003e全文出自《深入理解java虚拟机》第三章。 垃圾收集器与内存分配策略。包含三部分内容:如何判断哪些对象需要回收,如何回收和一些常见的垃圾收集器。\u003c/p\u003e","tags":["java","JVM"],"title":"对象存活判断、垃圾收集算法和垃圾收集器","type":"post","url":"/post/geektime-jvm-garabage-collection/","weight":0,"wordcount":3340},{"author":null,"categories":[],"content":null,"date":1545227156,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":1900,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545227156,"objectID":"49af30dd58cffcc8661d9551984888a1","permalink":"https://quguang.wang/post/resume-template/","publishdate":"2018-12-19T21:45:56+08:00","readingtime":4,"relpermalink":"/post/resume-template/","section":"post","summary":"\u003cp\u003e本文是一个markdown风格语法的简历模版,转载自网络\u003c/p\u003e","tags":["面试"],"title":"简历模版","type":"post","url":"/post/resume-template/","weight":0,"wordcount":1806},{"author":null,"categories":null,"content":null,"date":1545211942,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1545211942,"objectID":"","permalink":"https://quguang.wang/tags/synchronized/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/synchronized/","section":"tags","summary":"","tags":null,"title":"synchronized","type":"tags","url":"/tags/synchronized/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":1545211942,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1545211942,"objectID":"","permalink":"https://quguang.wang/tags/volatile/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/volatile/","section":"tags","summary":"","tags":null,"title":"volatile","type":"tags","url":"/tags/volatile/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":"","date":1545211942,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3100,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1558535258,"objectID":"2e66a82764fe3338b6bd32d0b3f47005","permalink":"https://quguang.wang/post/mysql/","publishdate":"2018-12-19T17:32:22+08:00","readingtime":7,"relpermalink":"/post/mysql/","section":"post","summary":"\u003cp\u003eMYSQL实战45讲-极客时间笔记\u003c/p\u003e","tags":["MySQL","MYSQL实战45讲"],"title":"《MYSQL实战45讲》-笔记","type":"post","url":"/post/mysql/","weight":0,"wordcount":3036},{"author":null,"categories":null,"content":null,"date":1545211942,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"taxonomy","lang":"en","lastmod":1545211942,"objectID":"","permalink":"https://quguang.wang/tags/%E5%A4%9A%E7%BA%BF%E7%A8%8B/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/tags/%E5%A4%9A%E7%BA%BF%E7%A8%8B/","section":"tags","summary":"","tags":null,"title":"多线程","type":"tags","url":"/tags/%E5%A4%9A%E7%BA%BF%E7%A8%8B/","weight":0,"wordcount":0},{"author":null,"categories":["Tech"],"content":null,"date":1545211942,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":300,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":1545211942,"objectID":"f13d56296743278b2e2ee5be65fbac25","permalink":"https://quguang.wang/post/thread-notify/","publishdate":"2018-12-19T17:32:22+08:00","readingtime":1,"relpermalink":"/post/thread-notify/","section":"post","summary":"\u003cp\u003e《java并发编程的艺术》-4.3线程间通信\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003evolatile可以用来修饰字段(成员变量),就是告知程序\u003cstrong\u003e任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存\u003c/strong\u003e,它能保证所有线程对变量访问的可见性\u003c/li\u003e\n\u003cli\u003esynchronized可以修饰方法或者以同步块的形式来进行使用,\u003cstrong\u003e它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中\u003c/strong\u003e,它保证了线程对变量访问的可见性和排他性\u003c/li\u003e\n\u003c/ul\u003e","tags":["java","volatile","synchronized","多线程","并发"],"title":"线程间通信","type":"post","url":"/post/thread-notify/","weight":0,"wordcount":235},{"author":null,"categories":["Tech"],"content":"","date":1542524628,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3400,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1542524628,"objectID":"961c8a3e3b0bd4e05fe87319ebe1091c","permalink":"https://quguang.wang/post/data-structure-and-algorithm.0/","publishdate":"2018-11-18T15:03:48+08:00","readingtime":7,"relpermalink":"/post/data-structure-and-algorithm.0/","section":"post","summary":"\u003cp\u003e本文是极客时间中数据结构与算法课程的笔记,包含数据结构和基础算法\u003c/p\u003e","tags":["数据结构","算法"],"title":"《数据结构与算法之美》-基础篇(1)","type":"post","url":"/post/data-structure-and-algorithm.0/","weight":0,"wordcount":3320},{"author":null,"categories":["Tech"],"content":"","date":1542524628,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":2900,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1542524628,"objectID":"628786a4be832b57a6f9c76854e95f50","permalink":"https://quguang.wang/post/data-structure-and-algorithm.1/","publishdate":"2018-11-18T15:03:48+08:00","readingtime":6,"relpermalink":"/post/data-structure-and-algorithm.1/","section":"post","summary":"\u003cp\u003e本文是极客时间中数据结构与算法课程的笔记,包含一些高级算法和实际场景\u003c/p\u003e","tags":["数据结构","算法"],"title":"《数据结构与算法之美》-基础篇(2)","type":"post","url":"/post/data-structure-and-algorithm.1/","weight":0,"wordcount":2881},{"author":null,"categories":["Tech"],"content":"","date":1542524628,"description":"","dir":"post/","excerpt_html":"","excerpt_text":"","expirydate":-62135596800,"fuzzywordcount":3700,"html":"","keywords":null,"kind":"page","lang":"en","lastmod":1542524628,"objectID":"329c7952c98bde9632cde7e69b4c0483","permalink":"https://quguang.wang/post/data-structure-and-algorithm.2/","publishdate":"2018-11-18T15:03:48+08:00","readingtime":8,"relpermalink":"/post/data-structure-and-algorithm.2/","section":"post","summary":"\u003cp\u003e本文是极客时间中数据结构与算法课程的笔记,包含一些高级算法和实际场景\u003c/p\u003e","tags":["数据结构","算法"],"title":"《数据结构与算法之美》-高级篇","type":"post","url":"/post/data-structure-and-algorithm.2/","weight":0,"wordcount":3694},{"author":null,"categories":null,"content":null,"date":-62135596800,"description":"","dir":"post/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":-62135596800,"objectID":"2de22a383f20046f474a073a75a7af7c","permalink":"https://quguang.wang/post/untitled-1/","publishdate":"0001-01-01T00:00:00Z","readingtime":1,"relpermalink":"/post/untitled-1/","section":"post","summary":" 贷款信息申明 本人自愿向天津好车多多融资租赁有限公司申请融资租赁款,车辆交易价格 结算价 元, 首付 首付款 元。 本人自愿向 四川新网银行 申请两笔个人消费贷款共计 __ 银行本金 _____ 元,其中 : 第一笔 车辆贷款额 元, 用于偿付融资租赁款; 第二笔 超融总金额 元, ,用于支付购车相关附加费用,明细如下: (1)资产管理费: 资产管理费 元; (2)技术服务费: 技术服务费 元; (3) 车辆保险金额 : 商业险 元。 贷款 期限 36 月,每 期月供预计___ 月供 ___ 元(以实际借据为准),一次性受托支付给天津好车多多融资租赁有限公司。 本人未受到诱导性营销或欺瞒,具备偿还能力,自愿向新网银行申请上述贷款,自愿签署并遵守借款合同的各项约定。 本人完全理解并确认:本人与任何第三方之间的纠纷或基础合同关系的变更,不会影响本人与新网银行签订的借款合同,本人不以任何理由否认本人与新网银行之间的借款关系或拒绝还款。 本人承诺向任何第三方支付除上述贷款外的一切费用,与本人向新网银行申请的贷款无关。 \u0026#xa0; 申明人: 客户人姓名 身份证尾号后 四位: 身份证后四位 申明日期: 2019 年 12 月 23 日 ","tags":null,"title":"","type":"post","url":"/post/untitled-1/","weight":0,"wordcount":58},{"author":null,"categories":null,"content":null,"date":-62135596800,"description":"","dir":"search/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":-62135596800,"objectID":"8946788897930c0c0c39fbfcd30ff2e4","permalink":"https://quguang.wang/search/placeholder/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/search/placeholder/","section":"search","summary":"","tags":null,"title":"","type":"search","url":"/search/placeholder/","weight":0,"wordcount":0},{"author":null,"categories":null,"content":null,"date":-62135596800,"description":"","dir":"top/","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":100,"html":null,"keywords":null,"kind":"page","lang":"en","lastmod":-62135596800,"objectID":"54ccacff97b96806d49760361ef17350","permalink":"https://quguang.wang/top/books/","publishdate":"0001-01-01T00:00:00Z","readingtime":1,"relpermalink":"/top/books/","section":"top","summary":"Machine learning学习笔记 Coursera 在线课程 Machine learning 笔记 讲师: 吴恩达(Andrew Ng) 课程地址:https://www.coursera.org/learn/machine-learning","tags":null,"title":"","type":"top","url":"/top/books/","weight":0,"wordcount":11},{"author":null,"categories":null,"content":null,"date":-62135596800,"description":"","dir":"","excerpt_html":null,"excerpt_text":null,"expirydate":-62135596800,"fuzzywordcount":0,"html":null,"keywords":null,"kind":"section","lang":"en","lastmod":-62135596800,"objectID":"","permalink":"https://quguang.wang/search/","publishdate":"0001-01-01T00:00:00Z","readingtime":0,"relpermalink":"/search/","section":"search","summary":"","tags":null,"title":"Searches","type":"search","url":"/search/","weight":0,"wordcount":0}]