在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++网络编程 → 《C++服务器开发精髓》源码

《C++服务器开发精髓》源码

C/C++网络编程

下载此实例
  • 开发语言:C/C++
  • 实例大小:3.98M
  • 下载次数:41
  • 浏览次数:302
  • 发布时间:2021-12-04
  • 实例类别:C/C++网络编程
  • 发 布 人:ACEONEPIECE
  • 文件格式:.rar
  • 所需积分:5
 相关标签: c++ 服务器 开发 源码 服务

实例介绍

【实例简介】《C 服务器开发精髓》源码

本书从操作系统原理角度讲解进行C 服务器开发所需掌握的技术栈。全书总计9章,第1~2章讲解C 11/14/17新标准中的常用特性、新增类库,以及C 开发者必须熟练掌握的开发调试工具链;第3~6章详细讲解C 服务器开发中的多线程编程技术、网络编程重难点知识、网络故障调试与排查常用工具,以及通信协议的设计思路、技巧;第7~8章详细讲解一个带网络通信组件的高性能服务的基本设计思路和注意事项;第9章进一步补充服务相关的常用模块设计思路和方法。本书秉承的思想是,通过掌握技术原理,可以轻松制造“轮子”,灵活设计出优雅、鲁棒的服务,并快速学习新技术。

无论是对于C/C 开发者、计算机专业的学生,还是对于想了解操作系统原理的读者,本书都极具参考价值。


【实例截图】from clipboard

from clipboard

【核心代码】.
├── C 服务器开发精髓源码
│   ├── lc790-mybooksources-master.zip
│   └── mybooksources
│       ├── Chapter01
│       │   └── codes
│       │       ├── TestRAII1
│       │       │   ├── ReadMe.txt
│       │       │   ├── TestRAII1.cpp
│       │       │   ├── TestRAII1.sln
│       │       │   ├── TestRAII1.vcxproj
│       │       │   ├── TestRAII1.vcxproj.filters
│       │       │   ├── TestRAII2.cpp
│       │       │   ├── TestRAII3.cpp
│       │       │   ├── TestRAII4.cpp
│       │       │   ├── stdafx.cpp
│       │       │   ├── stdafx.h
│       │       │   └── targetver.h
│       │       ├── construct_complex_objects.cpp
│       │       ├── test_auto_ptr.cpp
│       │       ├── test_custom_foreach_loop.cpp
│       │       ├── test_initializer_list.cpp
│       │       ├── test_map_insert_or_assign.cpp
│       │       ├── test_map_try_emplace.cpp
│       │       ├── test_map_try_emplace_with_directobject.cpp
│       │       ├── test_map_try_emplace_with_smartpointer.cpp
│       │       ├── test_map_try_emplace_with_smartpointer2.cpp
│       │       ├── test_shared_ptr_use_count.cpp
│       │       ├── test_std_enable_shared_from_this.cpp
│       │       ├── test_std_enable_shared_from_this_problem.cpp
│       │       ├── test_unique_ptr.cpp
│       │       ├── test_unique_ptr_deletor.cpp
│       │       ├── test_unique_ptr_with_array.cpp
│       │       └── test_weak_ptr.cpp
│       ├── Chapter02
│       │   ├── VisualGDB 下载与安装.md
│       │   ├── cgdb下载与安装.md
│       │   ├── codes
│       │   │   └── main.cpp
│       │   └── redis-6.0.3
│       │       ├── 00-RELEASENOTES
│       │       ├── BUGS
│       │       ├── CONTRIBUTING
│       │       ├── COPYING
│       │       ├── INSTALL
│       │       ├── MANIFESTO
│       │       ├── Makefile
│       │       ├── README.md
│       │       ├── TLS.md
│       │       ├── deps
│       │       │   ├── Makefile
│       │       │   ├── README.md
│       │       │   ├── hiredis
│       │       │   │   ├── CHANGELOG.md
│       │       │   │   ├── CMakeLists.txt
│       │       │   │   ├── COPYING
│       │       │   │   ├── Makefile
│       │       │   │   ├── README.md
│       │       │   │   ├── adapters
│       │       │   │   │   ├── ae.h
│       │       │   │   │   ├── glib.h
│       │       │   │   │   ├── ivykis.h
│       │       │   │   │   ├── libev.h
│       │       │   │   │   ├── libevent.h
│       │       │   │   │   ├── libuv.h
│       │       │   │   │   ├── macosx.h
│       │       │   │   │   └── qt.h
│       │       │   │   ├── appveyor.yml
│       │       │   │   ├── async.c
│       │       │   │   ├── async.h
│       │       │   │   ├── async_private.h
│       │       │   │   ├── dict.c
│       │       │   │   ├── dict.h
│       │       │   │   ├── examples
│       │       │   │   │   ├── CMakeLists.txt
│       │       │   │   │   ├── example-ae.c
│       │       │   │   │   ├── example-glib.c
│       │       │   │   │   ├── example-ivykis.c
│       │       │   │   │   ├── example-libev.c
│       │       │   │   │   ├── example-libevent-ssl.c
│       │       │   │   │   ├── example-libevent.c
│       │       │   │   │   ├── example-libuv.c
│       │       │   │   │   ├── example-macosx.c
│       │       │   │   │   ├── example-qt.cpp
│       │       │   │   │   ├── example-qt.h
│       │       │   │   │   ├── example-ssl.c
│       │       │   │   │   └── example.c
│       │       │   │   ├── fmacros.h
│       │       │   │   ├── hiredis.c
│       │       │   │   ├── hiredis.h
│       │       │   │   ├── hiredis.pc.in
│       │       │   │   ├── hiredis_ssl.h
│       │       │   │   ├── hiredis_ssl.pc.in
│       │       │   │   ├── net.c
│       │       │   │   ├── net.h
│       │       │   │   ├── read.c
│       │       │   │   ├── read.h
│       │       │   │   ├── sds.c
│       │       │   │   ├── sds.h
│       │       │   │   ├── sdsalloc.h
│       │       │   │   ├── sockcompat.c
│       │       │   │   ├── sockcompat.h
│       │       │   │   ├── ssl.c
│       │       │   │   ├── test.c
│       │       │   │   ├── test.sh
│       │       │   │   └── win32.h
│       │       │   ├── jemalloc
│       │       │   │   ├── COPYING
│       │       │   │   ├── ChangeLog
│       │       │   │   ├── INSTALL.md
│       │       │   │   ├── Makefile.in
│       │       │   │   ├── README
│       │       │   │   ├── TUNING.md
│       │       │   │   ├── autogen.sh
│       │       │   │   ├── bin
│       │       │   │   │   ├── jemalloc-config.in
│       │       │   │   │   ├── jemalloc.sh.in
│       │       │   │   │   └── jeprof.in
│       │       │   │   ├── build-aux
│       │       │   │   │   ├── config.guess
│       │       │   │   │   ├── config.sub
│       │       │   │   │   └── install-sh
│       │       │   │   ├── config.stamp.in
│       │       │   │   ├── configure.ac
│       │       │   │   ├── doc
│       │       │   │   │   ├── html.xsl.in
│       │       │   │   │   ├── jemalloc.xml.in
│       │       │   │   │   ├── manpages.xsl.in
│       │       │   │   │   └── stylesheet.xsl
│       │       │   │   ├── include
│       │       │   │   │   ├── jemalloc
│       │       │   │   │   │   ├── internal
│       │       │   │   │   │   │   ├── arena_externs.h
│       │       │   │   │   │   │   ├── arena_inlines_a.h
│       │       │   │   │   │   │   ├── arena_inlines_b.h
│       │       │   │   │   │   │   ├── arena_stats.h
│       │       │   │   │   │   │   ├── arena_structs_a.h
│       │       │   │   │   │   │   ├── arena_structs_b.h
│       │       │   │   │   │   │   ├── arena_types.h
│       │       │   │   │   │   │   ├── assert.h
│       │       │   │   │   │   │   ├── atomic.h
│       │       │   │   │   │   │   ├── atomic_c11.h
│       │       │   │   │   │   │   ├── atomic_gcc_atomic.h
│       │       │   │   │   │   │   ├── atomic_gcc_sync.h
│       │       │   │   │   │   │   ├── atomic_msvc.h
│       │       │   │   │   │   │   ├── background_thread_externs.h
│       │       │   │   │   │   │   ├── background_thread_inlines.h
│       │       │   │   │   │   │   ├── background_thread_structs.h
│       │       │   │   │   │   │   ├── base_externs.h
│       │       │   │   │   │   │   ├── base_inlines.h
│       │       │   │   │   │   │   ├── base_structs.h
│       │       │   │   │   │   │   ├── base_types.h
│       │       │   │   │   │   │   ├── bin.h
│       │       │   │   │   │   │   ├── bin_stats.h
│       │       │   │   │   │   │   ├── bit_util.h
│       │       │   │   │   │   │   ├── bitmap.h
│       │       │   │   │   │   │   ├── cache_bin.h
│       │       │   │   │   │   │   ├── ckh.h
│       │       │   │   │   │   │   ├── ctl.h
│       │       │   │   │   │   │   ├── div.h
│       │       │   │   │   │   │   ├── emitter.h
│       │       │   │   │   │   │   ├── extent_dss.h
│       │       │   │   │   │   │   ├── extent_externs.h
│       │       │   │   │   │   │   ├── extent_inlines.h
│       │       │   │   │   │   │   ├── extent_mmap.h
│       │       │   │   │   │   │   ├── extent_structs.h
│       │       │   │   │   │   │   ├── extent_types.h
│       │       │   │   │   │   │   ├── hash.h
│       │       │   │   │   │   │   ├── hooks.h
│       │       │   │   │   │   │   ├── jemalloc_internal_decls.h
│       │       │   │   │   │   │   ├── jemalloc_internal_defs.h.in
│       │       │   │   │   │   │   ├── jemalloc_internal_externs.h
│       │       │   │   │   │   │   ├── jemalloc_internal_includes.h
│       │       │   │   │   │   │   ├── jemalloc_internal_inlines_a.h
│       │       │   │   │   │   │   ├── jemalloc_internal_inlines_b.h
│       │       │   │   │   │   │   ├── jemalloc_internal_inlines_c.h
│       │       │   │   │   │   │   ├── jemalloc_internal_macros.h
│       │       │   │   │   │   │   ├── jemalloc_internal_types.h
│       │       │   │   │   │   │   ├── jemalloc_preamble.h.in
│       │       │   │   │   │   │   ├── large_externs.h
│       │       │   │   │   │   │   ├── log.h
│       │       │   │   │   │   │   ├── malloc_io.h
│       │       │   │   │   │   │   ├── mutex.h
│       │       │   │   │   │   │   ├── mutex_pool.h
│       │       │   │   │   │   │   ├── mutex_prof.h
│       │       │   │   │   │   │   ├── nstime.h
│       │       │   │   │   │   │   ├── pages.h
│       │       │   │   │   │   │   ├── ph.h
│       │       │   │   │   │   │   ├── private_namespace.sh
│       │       │   │   │   │   │   ├── private_symbols.sh
│       │       │   │   │   │   │   ├── prng.h
│       │       │   │   │   │   │   ├── prof_externs.h
│       │       │   │   │   │   │   ├── prof_inlines_a.h
│       │       │   │   │   │   │   ├── prof_inlines_b.h
│       │       │   │   │   │   │   ├── prof_structs.h
│       │       │   │   │   │   │   ├── prof_types.h
│       │       │   │   │   │   │   ├── public_namespace.sh
│       │       │   │   │   │   │   ├── public_unnamespace.sh
│       │       │   │   │   │   │   ├── ql.h
│       │       │   │   │   │   │   ├── qr.h
│       │       │   │   │   │   │   ├── rb.h
│       │       │   │   │   │   │   ├── rtree.h
│       │       │   │   │   │   │   ├── rtree_tsd.h
│       │       │   │   │   │   │   ├── size_classes.sh
│       │       │   │   │   │   │   ├── smoothstep.h
│       │       │   │   │   │   │   ├── smoothstep.sh
│       │       │   │   │   │   │   ├── spin.h
│       │       │   │   │   │   │   ├── stats.h
│       │       │   │   │   │   │   ├── sz.h
│       │       │   │   │   │   │   ├── tcache_externs.h
│       │       │   │   │   │   │   ├── tcache_inlines.h
│       │       │   │   │   │   │   ├── tcache_structs.h
│       │       │   │   │   │   │   ├── tcache_types.h
│       │       │   │   │   │   │   ├── ticker.h
│       │       │   │   │   │   │   ├── tsd.h
│       │       │   │   │   │   │   ├── tsd_generic.h
│       │       │   │   │   │   │   ├── tsd_malloc_thread_cleanup.h
│       │       │   │   │   │   │   ├── tsd_tls.h
│       │       │   │   │   │   │   ├── tsd_types.h
│       │       │   │   │   │   │   ├── tsd_win.h
│       │       │   │   │   │   │   ├── util.h
│       │       │   │   │   │   │   └── witness.h
│       │       │   │   │   │   ├── jemalloc.sh
│       │       │   │   │   │   ├── jemalloc_defs.h.in
│       │       │   │   │   │   ├── jemalloc_macros.h.in
│       │       │   │   │   │   ├── jemalloc_mangle.sh
│       │       │   │   │   │   ├── jemalloc_protos.h.in
│       │       │   │   │   │   ├── jemalloc_rename.sh
│       │       │   │   │   │   └── jemalloc_typedefs.h.in
│       │       │   │   │   └── msvc_compat
│       │       │   │   │       ├── C99
│       │       │   │   │       │   ├── stdbool.h
│       │       │   │   │       │   └── stdint.h
│       │       │   │   │       ├── strings.h
│       │       │   │   │       └── windows_extra.h
│       │       │   │   ├── jemalloc.pc.in
│       │       │   │   ├── m4
│       │       │   │   │   └── ax_cxx_compile_stdcxx.m4
│       │       │   │   ├── msvc
│       │       │   │   │   ├── ReadMe.txt
│       │       │   │   │   ├── jemalloc_vc2015.sln
│       │       │   │   │   ├── jemalloc_vc2017.sln
│       │       │   │   │   ├── projects
│       │       │   │   │   │   ├── vc2015
│       │       │   │   │   │   │   ├── jemalloc
│       │       │   │   │   │   │   │   ├── jemalloc.vcxproj
│       │       │   │   │   │   │   │   └── jemalloc.vcxproj.filters
│       │       │   │   │   │   │   └── test_threads
│       │       │   │   │   │   │       ├── test_threads.vcxproj
│       │       │   │   │   │   │       └── test_threads.vcxproj.filters
│       │       │   │   │   │   └── vc2017
│       │       │   │   │   │       ├── jemalloc
│       │       │   │   │   │       │   ├── jemalloc.vcxproj
│       │       │   │   │   │       │   └── jemalloc.vcxproj.filters
│       │       │   │   │   │       └── test_threads
│       │       │   │   │   │           ├── test_threads.vcxproj
│       │       │   │   │   │           └── test_threads.vcxproj.filters
│       │       │   │   │   └── test_threads
│       │       │   │   │       ├── test_threads.cpp
│       │       │   │   │       ├── test_threads.h
│       │       │   │   │       └── test_threads_main.cpp
│       │       │   │   ├── run_tests.sh
│       │       │   │   ├── scripts
│       │       │   │   │   ├── gen_run_tests.py
│       │       │   │   │   └── gen_travis.py
│       │       │   │   ├── src
│       │       │   │   │   ├── arena.c
│       │       │   │   │   ├── background_thread.c
│       │       │   │   │   ├── base.c
│       │       │   │   │   ├── bin.c
│       │       │   │   │   ├── bitmap.c
│       │       │   │   │   ├── ckh.c
│       │       │   │   │   ├── ctl.c
│       │       │   │   │   ├── div.c
│       │       │   │   │   ├── extent.c
│       │       │   │   │   ├── extent_dss.c
│       │       │   │   │   ├── extent_mmap.c
│       │       │   │   │   ├── hash.c
│       │       │   │   │   ├── hooks.c
│       │       │   │   │   ├── jemalloc.c
│       │       │   │   │   ├── jemalloc_cpp.cpp
│       │       │   │   │   ├── large.c
│       │       │   │   │   ├── log.c
│       │       │   │   │   ├── malloc_io.c
│       │       │   │   │   ├── mutex.c
│       │       │   │   │   ├── mutex_pool.c
│       │       │   │   │   ├── nstime.c
│       │       │   │   │   ├── pages.c
│       │       │   │   │   ├── prng.c
│       │       │   │   │   ├── prof.c
│       │       │   │   │   ├── rtree.c
│       │       │   │   │   ├── stats.c
│       │       │   │   │   ├── sz.c
│       │       │   │   │   ├── tcache.c
│       │       │   │   │   ├── ticker.c
│       │       │   │   │   ├── tsd.c
│       │       │   │   │   ├── witness.c
│       │       │   │   │   └── zone.c
│       │       │   │   └── test
│       │       │   │       ├── include
│       │       │   │       │   └── test
│       │       │   │       │       ├── SFMT-alti.h
│       │       │   │       │       ├── SFMT-params.h
│       │       │   │       │       ├── SFMT-params11213.h
│       │       │   │       │       ├── SFMT-params1279.h
│       │       │   │       │       ├── SFMT-params132049.h
│       │       │   │       │       ├── SFMT-params19937.h
│       │       │   │       │       ├── SFMT-params216091.h
│       │       │   │       │       ├── SFMT-params2281.h
│       │       │   │       │       ├── SFMT-params4253.h
│       │       │   │       │       ├── SFMT-params44497.h
│       │       │   │       │       ├── SFMT-params607.h
│       │       │   │       │       ├── SFMT-params86243.h
│       │       │   │       │       ├── SFMT-sse2.h
│       │       │   │       │       ├── SFMT.h
│       │       │   │       │       ├── btalloc.h
│       │       │   │       │       ├── extent_hooks.h
│       │       │   │       │       ├── jemalloc_test.h.in
│       │       │   │       │       ├── jemalloc_test_defs.h.in
│       │       │   │       │       ├── math.h
│       │       │   │       │       ├── mq.h
│       │       │   │       │       ├── mtx.h
│       │       │   │       │       ├── test.h
│       │       │   │       │       ├── thd.h
│       │       │   │       │       └── timer.h
│       │       │   │       ├── integration
│       │       │   │       │   ├── MALLOCX_ARENA.c
│       │       │   │       │   ├── aligned_alloc.c
│       │       │   │       │   ├── allocated.c
│       │       │   │       │   ├── extent.c
│       │       │   │       │   ├── extent.sh
│       │       │   │       │   ├── mallocx.c
│       │       │   │       │   ├── mallocx.sh
│       │       │   │       │   ├── overflow.c
│       │       │   │       │   ├── posix_memalign.c
│       │       │   │       │   ├── rallocx.c
│       │       │   │       │   ├── sdallocx.c
│       │       │   │       │   ├── thread_arena.c
│       │       │   │       │   ├── thread_tcache_enabled.c
│       │       │   │       │   ├── xallocx.c
│       │       │   │       │   └── xallocx.sh
│       │       │   │       ├── src
│       │       │   │       │   ├── SFMT.c
│       │       │   │       │   ├── btalloc.c
│       │       │   │       │   ├── btalloc_0.c
│       │       │   │       │   ├── btalloc_1.c
│       │       │   │       │   ├── math.c
│       │       │   │       │   ├── mq.c
│       │       │   │       │   ├── mtx.c
│       │       │   │       │   ├── test.c
│       │       │   │       │   ├── thd.c
│       │       │   │       │   └── timer.c
│       │       │   │       ├── stress
│       │       │   │       │   └── microbench.c
│       │       │   │       ├── test.sh.in
│       │       │   │       └── unit
│       │       │   │           ├── SFMT.c
│       │       │   │           ├── a0.c
│       │       │   │           ├── arena_reset.c
│       │       │   │           ├── arena_reset_prof.c
│       │       │   │           ├── arena_reset_prof.sh
│       │       │   │           ├── atomic.c
│       │       │   │           ├── background_thread.c
│       │       │   │           ├── background_thread_enable.c
│       │       │   │           ├── base.c
│       │       │   │           ├── bit_util.c
│       │       │   │           ├── bitmap.c
│       │       │   │           ├── ckh.c
│       │       │   │           ├── decay.c
│       │       │   │           ├── decay.sh
│       │       │   │           ├── div.c
│       │       │   │           ├── emitter.c
│       │       │   │           ├── extent_quantize.c
│       │       │   │           ├── fork.c
│       │       │   │           ├── hash.c
│       │       │   │           ├── hooks.c
│       │       │   │           ├── junk.c
│       │       │   │           ├── junk.sh
│       │       │   │           ├── junk_alloc.c
│       │       │   │           ├── junk_alloc.sh
│       │       │   │           ├── junk_free.c
│       │       │   │           ├── junk_free.sh
│       │       │   │           ├── log.c
│       │       │   │           ├── mallctl.c
│       │       │   │           ├── malloc_io.c
│       │       │   │           ├── math.c
│       │       │   │           ├── mq.c
│       │       │   │           ├── mtx.c
│       │       │   │           ├── nstime.c
│       │       │   │           ├── pack.c
│       │       │   │           ├── pack.sh
│       │       │   │           ├── pages.c
│       │       │   │           ├── ph.c
│       │       │   │           ├── prng.c
│       │       │   │           ├── prof_accum.c
│       │       │   │           ├── prof_accum.sh
│       │       │   │           ├── prof_active.c
│       │       │   │           ├── prof_active.sh
│       │       │   │           ├── prof_gdump.c
│       │       │   │           ├── prof_gdump.sh
│       │       │   │           ├── prof_idump.c
│       │       │   │           ├── prof_idump.sh
│       │       │   │           ├── prof_reset.c
│       │       │   │           ├── prof_reset.sh
│       │       │   │           ├── prof_tctx.c
│       │       │   │           ├── prof_tctx.sh
│       │       │   │           ├── prof_thread_name.c
│       │       │   │           ├── prof_thread_name.sh
│       │       │   │           ├── ql.c
│       │       │   │           ├── qr.c
│       │       │   │           ├── rb.c
│       │       │   │           ├── retained.c
│       │       │   │           ├── rtree.c
│       │       │   │           ├── size_classes.c
│       │       │   │           ├── slab.c
│       │       │   │           ├── smoothstep.c
│       │       │   │           ├── spin.c
│       │       │   │           ├── stats.c
│       │       │   │           ├── stats_print.c
│       │       │   │           ├── ticker.c
│       │       │   │           ├── tsd.c
│       │       │   │           ├── witness.c
│       │       │   │           ├── zero.c
│       │       │   │           └── zero.sh
│       │       │   ├── linenoise
│       │       │   │   ├── Makefile
│       │       │   │   ├── README.markdown
│       │       │   │   ├── example.c
│       │       │   │   ├── linenoise.c
│       │       │   │   └── linenoise.h
│       │       │   ├── lua
│       │       │   │   ├── COPYRIGHT
│       │       │   │   ├── HISTORY
│       │       │   │   ├── INSTALL
│       │       │   │   ├── Makefile
│       │       │   │   ├── README
│       │       │   │   ├── doc
│       │       │   │   │   ├── contents.html
│       │       │   │   │   ├── cover.png
│       │       │   │   │   ├── logo.gif
│       │       │   │   │   ├── lua.1
│       │       │   │   │   ├── lua.css
│       │       │   │   │   ├── lua.html
│       │       │   │   │   ├── luac.1
│       │       │   │   │   ├── luac.html
│       │       │   │   │   ├── manual.css
│       │       │   │   │   ├── manual.html
│       │       │   │   │   └── readme.html
│       │       │   │   ├── etc
│       │       │   │   │   ├── Makefile
│       │       │   │   │   ├── README
│       │       │   │   │   ├── all.c
│       │       │   │   │   ├── lua.hpp
│       │       │   │   │   ├── lua.ico
│       │       │   │   │   ├── lua.pc
│       │       │   │   │   ├── luavs.bat
│       │       │   │   │   ├── min.c
│       │       │   │   │   ├── noparser.c
│       │       │   │   │   └── strict.lua
│       │       │   │   ├── src
│       │       │   │   │   ├── Makefile
│       │       │   │   │   ├── fpconv.c
│       │       │   │   │   ├── fpconv.h
│       │       │   │   │   ├── lapi.c
│       │       │   │   │   ├── lapi.h
│       │       │   │   │   ├── lauxlib.c
│       │       │   │   │   ├── lauxlib.h
│       │       │   │   │   ├── lbaselib.c
│       │       │   │   │   ├── lcode.c
│       │       │   │   │   ├── lcode.h
│       │       │   │   │   ├── ldblib.c
│       │       │   │   │   ├── ldebug.c
│       │       │   │   │   ├── ldebug.h
│       │       │   │   │   ├── ldo.c
│       │       │   │   │   ├── ldo.h
│       │       │   │   │   ├── ldump.c
│       │       │   │   │   ├── lfunc.c
│       │       │   │   │   ├── lfunc.h
│       │       │   │   │   ├── lgc.c
│       │       │   │   │   ├── lgc.h
│       │       │   │   │   ├── linit.c
│       │       │   │   │   ├── liolib.c
│       │       │   │   │   ├── llex.c
│       │       │   │   │   ├── llex.h
│       │       │   │   │   ├── llimits.h
│       │       │   │   │   ├── lmathlib.c
│       │       │   │   │   ├── lmem.c
│       │       │   │   │   ├── lmem.h
│       │       │   │   │   ├── loadlib.c
│       │       │   │   │   ├── lobject.c
│       │       │   │   │   ├── lobject.h
│       │       │   │   │   ├── lopcodes.c
│       │       │   │   │   ├── lopcodes.h
│       │       │   │   │   ├── loslib.c
│       │       │   │   │   ├── lparser.c
│       │       │   │   │   ├── lparser.h
│       │       │   │   │   ├── lstate.c
│       │       │   │   │   ├── lstate.h
│       │       │   │   │   ├── lstring.c
│       │       │   │   │   ├── lstring.h
│       │       │   │   │   ├── lstrlib.c
│       │       │   │   │   ├── ltable.c
│       │       │   │   │   ├── ltable.h
│       │       │   │   │   ├── ltablib.c
│       │       │   │   │   ├── ltm.c
│       │       │   │   │   ├── ltm.h
│       │       │   │   │   ├── lua.c
│       │       │   │   │   ├── lua.h
│       │       │   │   │   ├── lua_bit.c
│       │       │   │   │   ├── lua_cjson.c
│       │       │   │   │   ├── lua_cmsgpack.c
│       │       │   │   │   ├── lua_struct.c
│       │       │   │   │   ├── luac.c
│       │       │   │   │   ├── luaconf.h
│       │       │   │   │   ├── lualib.h
│       │       │   │   │   ├── lundump.c
│       │       │   │   │   ├── lundump.h
│       │       │   │   │   ├── lvm.c
│       │       │   │   │   ├── lvm.h
│       │       │   │   │   ├── lzio.c
│       │       │   │   │   ├── lzio.h
│       │       │   │   │   ├── print.c
│       │       │   │   │   ├── strbuf.c
│       │       │   │   │   └── strbuf.h
│       │       │   │   └── test
│       │       │   │       ├── README
│       │       │   │       ├── bisect.lua
│       │       │   │       ├── cf.lua
│       │       │   │       ├── echo.lua
│       │       │   │       ├── env.lua
│       │       │   │       ├── factorial.lua
│       │       │   │       ├── fib.lua
│       │       │   │       ├── fibfor.lua
│       │       │   │       ├── globals.lua
│       │       │   │       ├── hello.lua
│       │       │   │       ├── life.lua
│       │       │   │       ├── luac.lua
│       │       │   │       ├── printf.lua
│       │       │   │       ├── readonly.lua
│       │       │   │       ├── sieve.lua
│       │       │   │       ├── sort.lua
│       │       │   │       ├── table.lua
│       │       │   │       ├── trace-calls.lua
│       │       │   │       ├── trace-globals.lua
│       │       │   │       └── xd.lua
│       │       │   └── update-jemalloc.sh
│       │       ├── redis.conf
│       │       ├── runtest
│       │       ├── runtest-cluster
│       │       ├── runtest-moduleapi
│       │       ├── runtest-sentinel
│       │       ├── sentinel.conf
│       │       ├── src
│       │       │   ├── Makefile
│       │       │   ├── acl.c
│       │       │   ├── adlist.c
│       │       │   ├── adlist.h
│       │       │   ├── ae.c
│       │       │   ├── ae.h
│       │       │   ├── ae_epoll.c
│       │       │   ├── ae_evport.c
│       │       │   ├── ae_kqueue.c
│       │       │   ├── ae_select.c
│       │       │   ├── anet.c
│       │       │   ├── anet.h
│       │       │   ├── aof.c
│       │       │   ├── asciilogo.h
│       │       │   ├── atomicvar.h
│       │       │   ├── bio.c
│       │       │   ├── bio.h
│       │       │   ├── bitops.c
│       │       │   ├── blocked.c
│       │       │   ├── childinfo.c
│       │       │   ├── cluster.c
│       │       │   ├── cluster.h
│       │       │   ├── config.c
│       │       │   ├── config.h
│       │       │   ├── connection.c
│       │       │   ├── connection.h
│       │       │   ├── connhelpers.h
│       │       │   ├── crc16.c
│       │       │   ├── crc16_slottable.h
│       │       │   ├── crc64.c
│       │       │   ├── crc64.h
│       │       │   ├── crcspeed.c
│       │       │   ├── crcspeed.h
│       │       │   ├── db.c
│       │       │   ├── debug.c
│       │       │   ├── debugmacro.h
│       │       │   ├── defrag.c
│       │       │   ├── dict.c
│       │       │   ├── dict.h
│       │       │   ├── endianconv.c
│       │       │   ├── endianconv.h
│       │       │   ├── evict.c
│       │       │   ├── expire.c
│       │       │   ├── fmacros.h
│       │       │   ├── geo.c
│       │       │   ├── geo.h
│       │       │   ├── geohash.c
│       │       │   ├── geohash.h
│       │       │   ├── geohash_helper.c
│       │       │   ├── geohash_helper.h
│       │       │   ├── gopher.c
│       │       │   ├── help.h
│       │       │   ├── hyperloglog.c
│       │       │   ├── intset.c
│       │       │   ├── intset.h
│       │       │   ├── latency.c
│       │       │   ├── latency.h
│       │       │   ├── lazyfree.c
│       │       │   ├── listpack.c
│       │       │   ├── listpack.h
│       │       │   ├── listpack_malloc.h
│       │       │   ├── localtime.c
│       │       │   ├── lolwut.c
│       │       │   ├── lolwut.h
│       │       │   ├── lolwut5.c
│       │       │   ├── lolwut6.c
│       │       │   ├── lzf.h
│       │       │   ├── lzfP.h
│       │       │   ├── lzf_c.c
│       │       │   ├── lzf_d.c
│       │       │   ├── memtest.c
│       │       │   ├── mkreleasehdr.sh
│       │       │   ├── module.c
│       │       │   ├── modules
│       │       │   │   ├── Makefile
│       │       │   │   ├── gendoc.rb
│       │       │   │   ├── helloacl.c
│       │       │   │   ├── helloblock.c
│       │       │   │   ├── hellocluster.c
│       │       │   │   ├── hellodict.c
│       │       │   │   ├── hellohook.c
│       │       │   │   ├── hellotimer.c
│       │       │   │   ├── hellotype.c
│       │       │   │   ├── helloworld.c
│       │       │   │   └── testmodule.c
│       │       │   ├── multi.c
│       │       │   ├── networking.c
│       │       │   ├── notify.c
│       │       │   ├── object.c
│       │       │   ├── pqsort.c
│       │       │   ├── pqsort.h
│       │       │   ├── pubsub.c
│       │       │   ├── quicklist.c
│       │       │   ├── quicklist.h
│       │       │   ├── rand.c
│       │       │   ├── rand.h
│       │       │   ├── rax.c
│       │       │   ├── rax.h
│       │       │   ├── rax_malloc.h
│       │       │   ├── rdb.c
│       │       │   ├── rdb.h
│       │       │   ├── redis-benchmark.c
│       │       │   ├── redis-check-aof.c
│       │       │   ├── redis-check-rdb.c
│       │       │   ├── redis-cli.c
│       │       │   ├── redis-trib.rb
│       │       │   ├── redisassert.h
│       │       │   ├── redismodule.h
│       │       │   ├── release.c
│       │       │   ├── replication.c
│       │       │   ├── rio.c
│       │       │   ├── rio.h
│       │       │   ├── scripting.c
│       │       │   ├── sds.c
│       │       │   ├── sds.h
│       │       │   ├── sdsalloc.h
│       │       │   ├── sentinel.c
│       │       │   ├── server.c
│       │       │   ├── server.h
│       │       │   ├── setcpuaffinity.c
│       │       │   ├── setproctitle.c
│       │       │   ├── sha1.c
│       │       │   ├── sha1.h
│       │       │   ├── sha256.c
│       │       │   ├── sha256.h
│       │       │   ├── siphash.c
│       │       │   ├── slowlog.c
│       │       │   ├── slowlog.h
│       │       │   ├── solarisfixes.h
│       │       │   ├── sort.c
│       │       │   ├── sparkline.c
│       │       │   ├── sparkline.h
│       │       │   ├── stream.h
│       │       │   ├── syncio.c
│       │       │   ├── t_hash.c
│       │       │   ├── t_list.c
│       │       │   ├── t_set.c
│       │       │   ├── t_stream.c
│       │       │   ├── t_string.c
│       │       │   ├── t_zset.c
│       │       │   ├── testhelp.h
│       │       │   ├── timeout.c
│       │       │   ├── tls.c
│       │       │   ├── tracking.c
│       │       │   ├── util.c
│       │       │   ├── util.h
│       │       │   ├── valgrind.sup
│       │       │   ├── version.h
│       │       │   ├── ziplist.c
│       │       │   ├── ziplist.h
│       │       │   ├── zipmap.c
│       │       │   ├── zipmap.h
│       │       │   ├── zmalloc.c
│       │       │   └── zmalloc.h
│       │       ├── tests
│       │       │   ├── assets
│       │       │   │   ├── default.conf
│       │       │   │   ├── encodings.rdb
│       │       │   │   └── hash-zipmap.rdb
│       │       │   ├── cluster
│       │       │   │   ├── cluster.tcl
│       │       │   │   ├── run.tcl
│       │       │   │   ├── tests
│       │       │   │   │   ├── 00-base.tcl
│       │       │   │   │   ├── 01-faildet.tcl
│       │       │   │   │   ├── 02-failover.tcl
│       │       │   │   │   ├── 03-failover-loop.tcl
│       │       │   │   │   ├── 04-resharding.tcl
│       │       │   │   │   ├── 05-slave-selection.tcl
│       │       │   │   │   ├── 06-slave-stop-cond.tcl
│       │       │   │   │   ├── 07-replica-migration.tcl
│       │       │   │   │   ├── 08-update-msg.tcl
│       │       │   │   │   ├── 09-pubsub.tcl
│       │       │   │   │   ├── 10-manual-failover.tcl
│       │       │   │   │   ├── 11-manual-takeover.tcl
│       │       │   │   │   ├── 12-replica-migration-2.tcl
│       │       │   │   │   ├── 13-no-failover-option.tcl
│       │       │   │   │   ├── 14-consistency-check.tcl
│       │       │   │   │   ├── 15-cluster-slots.tcl
│       │       │   │   │   ├── helpers
│       │       │   │   │   │   └── onlydots.tcl
│       │       │   │   │   └── includes
│       │       │   │   │       └── init-tests.tcl
│       │       │   │   └── tmp
│       │       │   ├── helpers
│       │       │   │   ├── bg_block_op.tcl
│       │       │   │   ├── bg_complex_data.tcl
│       │       │   │   └── gen_write_load.tcl
│       │       │   ├── instances.tcl
│       │       │   ├── integration
│       │       │   │   ├── aof-race.tcl
│       │       │   │   ├── aof.tcl
│       │       │   │   ├── block-repl.tcl
│       │       │   │   ├── convert-zipmap-hash-on-load.tcl
│       │       │   │   ├── logging.tcl
│       │       │   │   ├── psync2-pingoff.tcl
│       │       │   │   ├── psync2-reg.tcl
│       │       │   │   ├── psync2.tcl
│       │       │   │   ├── rdb.tcl
│       │       │   │   ├── redis-cli.tcl
│       │       │   │   ├── replication-2.tcl
│       │       │   │   ├── replication-3.tcl
│       │       │   │   ├── replication-4.tcl
│       │       │   │   ├── replication-psync.tcl
│       │       │   │   └── replication.tcl
│       │       │   ├── modules
│       │       │   │   ├── Makefile
│       │       │   │   ├── auth.c
│       │       │   │   ├── blockonkeys.c
│       │       │   │   ├── commandfilter.c
│       │       │   │   ├── datatype.c
│       │       │   │   ├── fork.c
│       │       │   │   ├── hooks.c
│       │       │   │   ├── infotest.c
│       │       │   │   ├── misc.c
│       │       │   │   ├── propagate.c
│       │       │   │   ├── scan.c
│       │       │   │   └── testrdb.c
│       │       │   ├── sentinel
│       │       │   │   ├── run.tcl
│       │       │   │   ├── tests
│       │       │   │   │   ├── 00-base.tcl
│       │       │   │   │   ├── 01-conf-update.tcl
│       │       │   │   │   ├── 02-slaves-reconf.tcl
│       │       │   │   │   ├── 03-runtime-reconf.tcl
│       │       │   │   │   ├── 04-slave-selection.tcl
│       │       │   │   │   ├── 05-manual.tcl
│       │       │   │   │   ├── 06-ckquorum.tcl
│       │       │   │   │   ├── 07-down-conditions.tcl
│       │       │   │   │   └── includes
│       │       │   │   │       └── init-tests.tcl
│       │       │   │   └── tmp
│       │       │   ├── support
│       │       │   │   ├── cli.tcl
│       │       │   │   ├── cluster.tcl
│       │       │   │   ├── redis.tcl
│       │       │   │   ├── server.tcl
│       │       │   │   ├── test.tcl
│       │       │   │   ├── tmpfile.tcl
│       │       │   │   └── util.tcl
│       │       │   ├── test_helper.tcl
│       │       │   └── unit
│       │       │       ├── acl.tcl
│       │       │       ├── aofrw.tcl
│       │       │       ├── auth.tcl
│       │       │       ├── bitfield.tcl
│       │       │       ├── bitops.tcl
│       │       │       ├── dump.tcl
│       │       │       ├── expire.tcl
│       │       │       ├── geo.tcl
│       │       │       ├── hyperloglog.tcl
│       │       │       ├── introspection-2.tcl
│       │       │       ├── introspection.tcl
│       │       │       ├── keyspace.tcl
│       │       │       ├── latency-monitor.tcl
│       │       │       ├── lazyfree.tcl
│       │       │       ├── limits.tcl
│       │       │       ├── maxmemory.tcl
│       │       │       ├── memefficiency.tcl
│       │       │       ├── moduleapi
│       │       │       │   ├── auth.tcl
│       │       │       │   ├── blockonkeys.tcl
│       │       │       │   ├── commandfilter.tcl
│       │       │       │   ├── datatype.tcl
│       │       │       │   ├── fork.tcl
│       │       │       │   ├── hooks.tcl
│       │       │       │   ├── infotest.tcl
│       │       │       │   ├── misc.tcl
│       │       │       │   ├── propagate.tcl
│       │       │       │   ├── scan.tcl
│       │       │       │   └── testrdb.tcl
│       │       │       ├── multi.tcl
│       │       │       ├── obuf-limits.tcl
│       │       │       ├── other.tcl
│       │       │       ├── pendingquerybuf.tcl
│       │       │       ├── printver.tcl
│       │       │       ├── protocol.tcl
│       │       │       ├── pubsub.tcl
│       │       │       ├── quit.tcl
│       │       │       ├── scan.tcl
│       │       │       ├── scripting.tcl
│       │       │       ├── slowlog.tcl
│       │       │       ├── sort.tcl
│       │       │       ├── tls.tcl
│       │       │       ├── tracking.tcl
│       │       │       ├── type
│       │       │       │   ├── hash.tcl
│       │       │       │   ├── incr.tcl
│       │       │       │   ├── list-2.tcl
│       │       │       │   ├── list-3.tcl
│       │       │       │   ├── list-common.tcl
│       │       │       │   ├── list.tcl
│       │       │       │   ├── set.tcl
│       │       │       │   ├── stream-cgroups.tcl
│       │       │       │   ├── stream.tcl
│       │       │       │   ├── string.tcl
│       │       │       │   └── zset.tcl
│       │       │       └── wait.tcl
│       │       └── utils
│       │           ├── build-static-symbols.tcl
│       │           ├── cluster_fail_time.tcl
│       │           ├── corrupt_rdb.c
│       │           ├── create-cluster
│       │           │   ├── README
│       │           │   └── create-cluster
│       │           ├── gen-test-certs.sh
│       │           ├── generate-command-help.rb
│       │           ├── graphs
│       │           │   └── commits-over-time
│       │           │       ├── README.md
│       │           │       └── genhtml.tcl
│       │           ├── hashtable
│       │           │   ├── README
│       │           │   └── rehashing.c
│       │           ├── hyperloglog
│       │           │   ├── hll-err.rb
│       │           │   └── hll-gnuplot-graph.rb
│       │           ├── install_server.sh
│       │           ├── lru
│       │           │   ├── README
│       │           │   ├── lfu-simulation.c
│       │           │   └── test-lru.rb
│       │           ├── redis-copy.rb
│       │           ├── redis-sha1.rb
│       │           ├── redis_init_script
│       │           ├── redis_init_script.tpl
│       │           ├── releasetools
│       │           │   ├── 01_create_tarball.sh
│       │           │   ├── 02_upload_tarball.sh
│       │           │   ├── 03_test_release.sh
│       │           │   ├── 04_release_hash.sh
│       │           │   └── changelog.tcl
│       │           ├── speed-regression.tcl
│       │           ├── srandmember
│       │           │   ├── README.md
│       │           │   ├── showdist.rb
│       │           │   └── showfreq.rb
│       │           ├── systemd-redis_multiple_servers@.service
│       │           ├── systemd-redis_server.service
│       │           ├── tracking_collisions.c
│       │           └── whatisdoing.sh
│       ├── Chapter03
│       │   └── code
│       │       ├── SharedMutex.cpp
│       │       ├── SharedMutex.h
│       │       ├── SingleInstance
│       │       │   ├── Resource.h
│       │       │   ├── SingleInstance.cpp
│       │       │   ├── SingleInstance.h
│       │       │   ├── SingleInstance.ico
│       │       │   ├── SingleInstance.rc
│       │       │   ├── SingleInstance.sln
│       │       │   ├── SingleInstance.vcxproj
│       │       │   ├── SingleInstance.vcxproj.filters
│       │       │   ├── small.ico
│       │       │   ├── stdafx.cpp
│       │       │   ├── stdafx.h
│       │       │   └── targetver.h
│       │       ├── TaskPool.cpp
│       │       ├── TaskPool.h
│       │       ├── TestFiber.cpp
│       │       ├── TestWindowsConditionVariable
│       │       │   ├── TestWindowsConditionVariable.cpp
│       │       │   ├── TestWindowsConditionVariable.sln
│       │       │   ├── TestWindowsConditionVariable.vcxproj
│       │       │   └── TestWindowsConditionVariable.vcxproj.filters
│       │       ├── c11mutex.cpp
│       │       ├── c11threadlocal.cpp
│       │       ├── cpp11cv.cpp
│       │       ├── cv.cpp
│       │       ├── insecurecrtfunction.cpp
│       │       ├── linuxtid.cpp
│       │       ├── linuxtls.cpp
│       │       ├── linuxtls2.cpp
│       │       ├── makesurethread.cpp
│       │       ├── makesurethreadgroup.cpp
│       │       ├── rwlock.cpp
│       │       ├── rwlock2.cpp
│       │       ├── rwlock3.cpp
│       │       ├── semaphore.cpp
│       │       ├── semaphore_timewait.cpp
│       │       ├── taskpoolmain.cpp
│       │       ├── test_cpp11_thread_id.cpp
│       │       ├── test_destroy_locked_mutex.cpp
│       │       └── windowstls.cpp
│       ├── Chapter04
│       │   └── code
│       │       ├── IOCPServerDemo
│       │       │   ├── IOCPModel.cpp
│       │       │   ├── IOCPModel.h
│       │       │   ├── IOCPServerApp.cpp
│       │       │   ├── IOCPServerApp.h
│       │       │   ├── IOCPServerDemo.rc
│       │       │   ├── IOCPServerDemo.sln
│       │       │   ├── IOCPServerDemo.vcproj
│       │       │   ├── IOCPServerDemo.vcxproj
│       │       │   ├── IOCPServerDemo.vcxproj.filters
│       │       │   ├── MainDlg.cpp
│       │       │   ├── MainDlg.h
│       │       │   ├── XPStyle.manifest
│       │       │   ├── res
│       │       │   │   ├── IOCPServerDemo.ico
│       │       │   │   ├── IOCPServerDemo.rc2
│       │       │   │   └── vssver2.scc
│       │       │   ├── resource.h
│       │       │   ├── stdafx.cpp
│       │       │   ├── stdafx.h
│       │       │   └── targetver.h
│       │       ├── WSAAsyncSelect
│       │       │   ├── Resource.h
│       │       │   ├── WSAAsyncSelect.cpp
│       │       │   ├── WSAAsyncSelect.h
│       │       │   ├── WSAAsyncSelect.ico
│       │       │   ├── WSAAsyncSelect.rc
│       │       │   ├── WSAAsyncSelect.sln
│       │       │   ├── WSAAsyncSelect.vcxproj
│       │       │   ├── WSAAsyncSelect.vcxproj.filters
│       │       │   ├── small.ico
│       │       │   ├── stdafx.cpp
│       │       │   ├── stdafx.h
│       │       │   └── targetver.h
│       │       ├── WSAEventSelect
│       │       │   ├── WSAEventSelect.cpp
│       │       │   ├── WSAEventSelect.sln
│       │       │   ├── WSAEventSelect.vcxproj
│       │       │   ├── WSAEventSelect.vcxproj.filters
│       │       │   ├── stdafx.cpp
│       │       │   ├── stdafx.h
│       │       │   └── targetver.h
│       │       ├── blocking_client.cpp
│       │       ├── blocking_client_recv.cpp
│       │       ├── blocking_client_send.cpp
│       │       ├── blocking_server.cpp
│       │       ├── client.cpp
│       │       ├── client2.cpp
│       │       ├── epoll_server.cpp
│       │       ├── epoll_server_with_oneshot.cpp
│       │       ├── epoll_server_with_oneshot_2.cpp
│       │       ├── epoll_server_write_event_et.cpp
│       │       ├── epoll_server_write_event_lt.cpp
│       │       ├── gethostbyname_linux.cpp
│       │       ├── linux_ioctl.cpp
│       │       ├── linux_nonblocking_connect.cpp
│       │       ├── linux_nonblocking_connect_poll.cpp
│       │       ├── nagle_client.cpp
│       │       ├── nodelay_client.cpp
│       │       ├── nonblocking_client.cpp
│       │       ├── nonblocking_client_recv.cpp
│       │       ├── nonblocking_client_send.cpp
│       │       ├── nonblocking_client_send_zero_bytes.cpp
│       │       ├── nonblocking_connect.cpp
│       │       ├── poll_server.cpp
│       │       ├── select_client_tv0.cpp
│       │       ├── select_client_tvnull.cpp
│       │       ├── select_server.cpp
│       │       ├── server.cpp
│       │       ├── server2.cpp
│       │       └── server_recv_zero_bytes.cpp
│       ├── Chapter06
│       │   └── code
│       │       ├── ProtocolStream.cpp
│       │       ├── ProtocolStream.h
│       │       ├── RecvMail
│       │       │   ├── Base64Util.cpp
│       │       │   ├── Base64Util.h
│       │       │   ├── EncodeUtil.cpp
│       │       │   ├── EncodeUtil.h
│       │       │   ├── MailHelper.cpp
│       │       │   ├── MailHelper.h
│       │       │   ├── MailThread.cpp
│       │       │   ├── MailThread.h
│       │       │   ├── Platform.cpp
│       │       │   ├── Platform.h
│       │       │   ├── Pop3Socket.cpp
│       │       │   ├── Pop3Socket.h
│       │       │   ├── RecvMail.sln
│       │       │   ├── RecvMail.vcxproj
│       │       │   ├── RecvMail.vcxproj.filters
│       │       │   ├── mailcontent.txt
│       │       │   ├── main.cpp
│       │       │   ├── self.jpg
│       │       │   └── test.docx
│       │       ├── SendMail
│       │       │   ├── Base64Util.cpp
│       │       │   ├── Base64Util.h
│       │       │   ├── CMakeLists.txt
│       │       │   ├── MailMonitor.cpp
│       │       │   ├── MailMonitor.h
│       │       │   ├── Platform.cpp
│       │       │   ├── Platform.h
│       │       │   ├── SendMail.sln
│       │       │   ├── SendMail.vcxproj
│       │       │   ├── SendMail.vcxproj.filters
│       │       │   ├── SmtpSocket.cpp
│       │       │   ├── SmtpSocket.h
│       │       │   └── main.cpp
│       │       ├── WebSocketServer
│       │       │   ├── CMakeLists.txt
│       │       │   ├── README.md
│       │       │   ├── WebSocketServer.sln
│       │       │   ├── WebSocketServer.vcxproj
│       │       │   ├── WebSocketServer.vcxproj.filters
│       │       │   ├── appsrc
│       │       │   │   ├── BusinessSession.cpp
│       │       │   │   ├── BusinessSession.h
│       │       │   │   └── main.cpp
│       │       │   ├── base
│       │       │   │   ├── AsyncLog.cpp
│       │       │   │   ├── AsyncLog.h
│       │       │   │   ├── ConfigFileReader.cpp
│       │       │   │   ├── ConfigFileReader.h
│       │       │   │   ├── Platform.cpp
│       │       │   │   ├── Platform.h
│       │       │   │   ├── RAIIWrapper.h
│       │       │   │   ├── Singleton.h
│       │       │   │   ├── Timestamp.cpp
│       │       │   │   └── Timestamp.h
│       │       │   ├── net
│       │       │   │   ├── Acceptor.cpp
│       │       │   │   ├── Acceptor.h
│       │       │   │   ├── Buffer.cpp
│       │       │   │   ├── Buffer.h
│       │       │   │   ├── Callbacks.h
│       │       │   │   ├── Channel.cpp
│       │       │   │   ├── Channel.h
│       │       │   │   ├── Connector.cpp
│       │       │   │   ├── Connector.h
│       │       │   │   ├── Endian.h
│       │       │   │   ├── EpollPoller.cpp
│       │       │   │   ├── EpollPoller.h
│       │       │   │   ├── EventLoop.cpp
│       │       │   │   ├── EventLoop.h
│       │       │   │   ├── EventLoopThread.cpp
│       │       │   │   ├── EventLoopThread.h
│       │       │   │   ├── EventLoopThreadPool.cpp
│       │       │   │   ├── EventLoopThreadPool.h
│       │       │   │   ├── InetAddress.cpp
│       │       │   │   ├── InetAddress.h
│       │       │   │   ├── PollPoller.cpp
│       │       │   │   ├── PollPoller.h
│       │       │   │   ├── Poller.cpp
│       │       │   │   ├── Poller.h
│       │       │   │   ├── ProtocolStream.cpp
│       │       │   │   ├── ProtocolStream.h
│       │       │   │   ├── SelectPoller.cpp
│       │       │   │   ├── SelectPoller.h
│       │       │   │   ├── Sockets.cpp
│       │       │   │   ├── Sockets.h
│       │       │   │   ├── TcpClient.cpp
│       │       │   │   ├── TcpClient.h
│       │       │   │   ├── TcpConnection.cpp
│       │       │   │   ├── TcpConnection.h
│       │       │   │   ├── TcpServer.cpp
│       │       │   │   ├── TcpServer.h
│       │       │   │   ├── Timer.cpp
│       │       │   │   ├── Timer.h
│       │       │   │   ├── TimerId.h
│       │       │   │   ├── TimerQueue.cpp
│       │       │   │   └── TimerQueue.h
│       │       │   ├── utils
│       │       │   │   ├── DaemonRun.cpp
│       │       │   │   ├── DaemonRun.h
│       │       │   │   ├── StringUtil.cpp
│       │       │   │   ├── StringUtil.h
│       │       │   │   ├── UUIDGenerator.cpp
│       │       │   │   └── UUIDGenerator.h
│       │       │   ├── websocketsrc
│       │       │   │   ├── MyWebSocketServer.cpp
│       │       │   │   ├── MyWebSocketServer.h
│       │       │   │   ├── MyWebSocketSession.cpp
│       │       │   │   ├── MyWebSocketSession.h
│       │       │   │   └── WebSocketHandshake.h
│       │       │   └── zlib1.2.11
│       │       │       ├── ZlibUtil.cpp
│       │       │       ├── ZlibUtil.h
│       │       │       ├── adler32.c
│       │       │       ├── compress.c
│       │       │       ├── crc32.c
│       │       │       ├── crc32.h
│       │       │       ├── deflate.c
│       │       │       ├── deflate.h
│       │       │       ├── gzclose.c
│       │       │       ├── gzguts.h
│       │       │       ├── gzlib.c
│       │       │       ├── gzread.c
│       │       │       ├── gzwrite.c
│       │       │       ├── infback.c
│       │       │       ├── inffast.c
│       │       │       ├── inffast.h
│       │       │       ├── inffixed.h
│       │       │       ├── inflate.c
│       │       │       ├── inflate.h
│       │       │       ├── inftrees.c
│       │       │       ├── inftrees.h
│       │       │       ├── trees.c
│       │       │       ├── trees.h
│       │       │       ├── uncompr.c
│       │       │       ├── zconf.h
│       │       │       ├── zlib.h
│       │       │       ├── zlibdemo.c
│       │       │       ├── zutil.c
│       │       │       ├── zutil.h
│       │       │       └── 文件概览.txt
│       │       ├── curl
│       │       │   ├── CurlClient.cpp
│       │       │   ├── CurlClient.h
│       │       │   ├── curl.h
│       │       │   ├── curlver.h
│       │       │   ├── easy.h
│       │       │   ├── libcurl.dll
│       │       │   ├── libcurl.lib
│       │       │   ├── libcurl.so.4.5.0
│       │       │   ├── mprintf.h
│       │       │   ├── multi.h
│       │       │   ├── stdcheaders.h
│       │       │   ├── system.h
│       │       │   ├── typecheck-gcc.h
│       │       │   └── urlapi.h
│       │       └── 包分片逻辑.cpp
│       ├── Chapter07
│       │   ├── codes
│       │   │   ├── timerV1
│       │   │   │   ├── Timer.cpp
│       │   │   │   ├── Timer.h
│       │   │   │   ├── TimerManager.cpp
│       │   │   │   └── TimerManager.h
│       │   │   ├── timerV2
│       │   │   │   ├── Timer.cpp
│       │   │   │   ├── Timer.h
│       │   │   │   ├── TimerManager.cpp
│       │   │   │   └── TimerManager.h
│       │   │   └── timerV3
│       │   │       ├── Timer.cpp
│       │   │       ├── Timer.h
│       │   │       ├── TimerManager.cpp
│       │   │       └── TimerManager.h
│       │   └── redis-6.0.3
│       │       ├── 00-RELEASENOTES
│       │       ├── BUGS
│       │       ├── CONTRIBUTING
│       │       ├── COPYING
│       │       ├── INSTALL
│       │       ├── MANIFESTO
│       │       ├── Makefile
│       │       ├── README.md
│       │       ├── TLS.md
│       │       ├── deps
│       │       │   ├── Makefile
│       │       │   ├── README.md
│       │       │   ├── hiredis
│       │       │   │   ├── CHANGELOG.md
│       │       │   │   ├── CMakeLists.txt
│       │       │   │   ├── COPYING
│       │       │   │   ├── Makefile
│       │       │   │   ├── README.md
│       │       │   │   ├── adapters
│       │       │   │   │   ├── ae.h
│       │       │   │   │   ├── glib.h
│       │       │   │   │   ├── ivykis.h
│       │       │   │   │   ├── libev.h
│       │       │   │   │   ├── libevent.h
│       │       │   │   │   ├── libuv.h
│       │       │   │   │   ├── macosx.h
│       │       │   │   │   └── qt.h
│       │       │   │   ├── appveyor.yml
│       │       │   │   ├── async.c
│       │       │   │   ├── async.h
│       │       │   │   ├── async_private.h
│       │       │   │   ├── dict.c
│       │       │   │   ├── dict.h
│       │       │   │   ├── examples
│       │       │   │   │   ├── CMakeLists.txt
│       │       │   │   │   ├── example-ae.c
│       │       │   │   │   ├── example-glib.c
│       │       │   │   │   ├── example-ivykis.c
│       │       │   │   │   ├── example-libev.c
│       │       │   │   │   ├── example-libevent-ssl.c
│       │       │   │   │   ├── example-libevent.c
│       │       │   │   │   ├── example-libuv.c
│       │       │   │   │   ├── example-macosx.c
│       │       │   │   │   ├── example-qt.cpp
│       │       │   │   │   ├── example-qt.h
│       │       │   │   │   ├── example-ssl.c
│       │       │   │   │   └── example.c
│       │       │   │   ├── fmacros.h
│       │       │   │   ├── hiredis.c
│       │       │   │   ├── hiredis.h
│       │       │   │   ├── hiredis.pc.in
│       │       │   │   ├── hiredis_ssl.h
│       │       │   │   ├── hiredis_ssl.pc.in
│       │       │   │   ├── net.c
│       │       │   │   ├── net.h
│       │       │   │   ├── read.c
│       │       │   │   ├── read.h
│       │       │   │   ├── sds.c
│       │       │   │   ├── sds.h
│       │       │   │   ├── sdsalloc.h
│       │       │   │   ├── sockcompat.c
│       │       │   │   ├── sockcompat.h
│       │       │   │   ├── ssl.c
│       │       │   │   ├── test.c
│       │       │   │   ├── test.sh
│       │       │   │   └── win32.h
│       │       │   ├── jemalloc
│       │       │   │   ├── COPYING
│       │       │   │   ├── ChangeLog
│       │       │   │   ├── INSTALL.md
│       │       │   │   ├── Makefile.in
│       │       │   │   ├── README
│       │       │   │   ├── TUNING.md
│       │       │   │   ├── autogen.sh
│       │       │   │   ├── bin
│       │       │   │   │   ├── jemalloc-config.in
│       │       │   │   │   ├── jemalloc.sh.in
│       │       │   │   │   └── jeprof.in
│       │       │   │   ├── build-aux
│       │       │   │   │   ├── config.guess
│       │       │   │   │   ├── config.sub
│       │       │   │   │   └── install-sh
│       │       │   │   ├── config.stamp.in
│       │       │   │   ├── configure.ac
│       │       │   │   ├── doc
│       │       │   │   │   ├── html.xsl.in
│       │       │   │   │   ├── jemalloc.xml.in
│       │       │   │   │   ├── manpages.xsl.in
│       │       │   │   │   └── stylesheet.xsl
│       │       │   │   ├── include
│       │       │   │   │   ├── jemalloc
│       │       │   │   │   │   ├── internal
│       │       │   │   │   │   │   ├── arena_externs.h
│       │       │   │   │   │   │   ├── arena_inlines_a.h
│       │       │   │   │   │   │   ├── arena_inlines_b.h
│       │       │   │   │   │   │   ├── arena_stats.h
│       │       │   │   │   │   │   ├── arena_structs_a.h
│       │       │   │   │   │   │   ├── arena_structs_b.h
│       │       │   │   │   │   │   ├── arena_types.h
│       │       │   │   │   │   │   ├── assert.h
│       │       │   │   │   │   │   ├── atomic.h
│       │       │   │   │   │   │   ├── atomic_c11.h
│       │       │   │   │   │   │   ├── atomic_gcc_atomic.h
│       │       │   │   │   │   │   ├── atomic_gcc_sync.h
│       │       │   │   │   │   │   ├── atomic_msvc.h
│       │       │   │   │   │   │   ├── background_thread_externs.h
│       │       │   │   │   │   │   ├── background_thread_inlines.h
│       │       │   │   │   │   │   ├── background_thread_structs.h
│       │       │   │   │   │   │   ├── base_externs.h
│       │       │   │   │   │   │   ├── base_inlines.h
│       │       │   │   │   │   │   ├── base_structs.h
│       │       │   │   │   │   │   ├── base_types.h
│       │       │   │   │   │   │   ├── bin.h
│       │       │   │   │   │   │   ├── bin_stats.h
│       │       │   │   │   │   │   ├── bit_util.h
│       │       │   │   │   │   │   ├── bitmap.h
│       │       │   │   │   │   │   ├── cache_bin.h
│       │       │   │   │   │   │   ├── ckh.h
│       │       │   │   │   │   │   ├── ctl.h
│       │       │   │   │   │   │   ├── div.h
│       │       │   │   │   │   │   ├── emitter.h
│       │       │   │   │   │   │   ├── extent_dss.h
│       │       │   │   │   │   │   ├── extent_externs.h
│       │       │   │   │   │   │   ├── extent_inlines.h
│       │       │   │   │   │   │   ├── extent_mmap.h
│       │       │   │   │   │   │   ├── extent_structs.h
│       │       │   │   │   │   │   ├── extent_types.h
│       │       │   │   │   │   │   ├── hash.h
│       │       │   │   │   │   │   ├── hooks.h
│       │       │   │   │   │   │   ├── jemalloc_internal_decls.h
│       │       │   │   │   │   │   ├── jemalloc_internal_defs.h.in
│       │       │   │   │   │   │   ├── jemalloc_internal_externs.h
│       │       │   │   │   │   │   ├── jemalloc_internal_includes.h
│       │       │   │   │   │   │   ├── jemalloc_internal_inlines_a.h
│       │       │   │   │   │   │   ├── jemalloc_internal_inlines_b.h
│       │       │   │   │   │   │   ├── jemalloc_internal_inlines_c.h
│       │       │   │   │   │   │   ├── jemalloc_internal_macros.h
│       │       │   │   │   │   │   ├── jemalloc_internal_types.h
│       │       │   │   │   │   │   ├── jemalloc_preamble.h.in
│       │       │   │   │   │   │   ├── large_externs.h
│       │       │   │   │   │   │   ├── log.h
│       │       │   │   │   │   │   ├── malloc_io.h
│       │       │   │   │   │   │   ├── mutex.h
│       │       │   │   │   │   │   ├── mutex_pool.h
│       │       │   │   │   │   │   ├── mutex_prof.h
│       │       │   │   │   │   │   ├── nstime.h
│       │       │   │   │   │   │   ├── pages.h
│       │       │   │   │   │   │   ├── ph.h
│       │       │   │   │   │   │   ├── private_namespace.sh
│       │       │   │   │   │   │   ├── private_symbols.sh
│       │       │   │   │   │   │   ├── prng.h
│       │       │   │   │   │   │   ├── prof_externs.h
│       │       │   │   │   │   │   ├── prof_inlines_a.h
│       │       │   │   │   │   │   ├── prof_inlines_b.h
│       │       │   │   │   │   │   ├── prof_structs.h
│       │       │   │   │   │   │   ├── prof_types.h
│       │       │   │   │   │   │   ├── public_namespace.sh
│       │       │   │   │   │   │   ├── public_unnamespace.sh
│       │       │   │   │   │   │   ├── ql.h
│       │       │   │   │   │   │   ├── qr.h
│       │       │   │   │   │   │   ├── rb.h
│       │       │   │   │   │   │   ├── rtree.h
│       │       │   │   │   │   │   ├── rtree_tsd.h
│       │       │   │   │   │   │   ├── size_classes.sh
│       │       │   │   │   │   │   ├── smoothstep.h
│       │       │   │   │   │   │   ├── smoothstep.sh
│       │       │   │   │   │   │   ├── spin.h
│       │       │   │   │   │   │   ├── stats.h
│       │       │   │   │   │   │   ├── sz.h
│       │       │   │   │   │   │   ├── tcache_externs.h
│       │       │   │   │   │   │   ├── tcache_inlines.h
│       │       │   │   │   │   │   ├── tcache_structs.h
│       │       │   │   │   │   │   ├── tcache_types.h
│       │       │   │   │   │   │   ├── ticker.h
│       │       │   │   │   │   │   ├── tsd.h
│       │       │   │   │   │   │   ├── tsd_generic.h
│       │       │   │   │   │   │   ├── tsd_malloc_thread_cleanup.h
│       │       │   │   │   │   │   ├── tsd_tls.h
│       │       │   │   │   │   │   ├── tsd_types.h
│       │       │   │   │   │   │   ├── tsd_win.h
│       │       │   │   │   │   │   ├── util.h
│       │       │   │   │   │   │   └── witness.h
│       │       │   │   │   │   ├── jemalloc.sh
│       │       │   │   │   │   ├── jemalloc_defs.h.in
│       │       │   │   │   │   ├── jemalloc_macros.h.in
│       │       │   │   │   │   ├── jemalloc_mangle.sh
│       │       │   │   │   │   ├── jemalloc_protos.h.in
│       │       │   │   │   │   ├── jemalloc_rename.sh
│       │       │   │   │   │   └── jemalloc_typedefs.h.in
│       │       │   │   │   └── msvc_compat
│       │       │   │   │       ├── C99
│       │       │   │   │       │   ├── stdbool.h
│       │       │   │   │       │   └── stdint.h
│       │       │   │   │       ├── strings.h
│       │       │   │   │       └── windows_extra.h
│       │       │   │   ├── jemalloc.pc.in
│       │       │   │   ├── m4
│       │       │   │   │   └── ax_cxx_compile_stdcxx.m4
│       │       │   │   ├── msvc
│       │       │   │   │   ├── ReadMe.txt
│       │       │   │   │   ├── jemalloc_vc2015.sln
│       │       │   │   │   ├── jemalloc_vc2017.sln
│       │       │   │   │   ├── projects
│       │       │   │   │   │   ├── vc2015
│       │       │   │   │   │   │   ├── jemalloc
│       │       │   │   │   │   │   │   ├── jemalloc.vcxproj
│       │       │   │   │   │   │   │   └── jemalloc.vcxproj.filters
│       │       │   │   │   │   │   └── test_threads
│       │       │   │   │   │   │       ├── test_threads.vcxproj
│       │       │   │   │   │   │       └── test_threads.vcxproj.filters
│       │       │   │   │   │   └── vc2017
│       │       │   │   │   │       ├── jemalloc
│       │       │   │   │   │       │   ├── jemalloc.vcxproj
│       │       │   │   │   │       │   └── jemalloc.vcxproj.filters
│       │       │   │   │   │       └── test_threads
│       │       │   │   │   │           ├── test_threads.vcxproj
│       │       │   │   │   │           └── test_threads.vcxproj.filters
│       │       │   │   │   └── test_threads
│       │       │   │   │       ├── test_threads.cpp
│       │       │   │   │       ├── test_threads.h
│       │       │   │   │       └── test_threads_main.cpp
│       │       │   │   ├── run_tests.sh
│       │       │   │   ├── scripts
│       │       │   │   │   ├── gen_run_tests.py
│       │       │   │   │   └── gen_travis.py
│       │       │   │   ├── src
│       │       │   │   │   ├── arena.c
│       │       │   │   │   ├── background_thread.c
│       │       │   │   │   ├── base.c
│       │       │   │   │   ├── bin.c
│       │       │   │   │   ├── bitmap.c
│       │       │   │   │   ├── ckh.c
│       │       │   │   │   ├── ctl.c
│       │       │   │   │   ├── div.c
│       │       │   │   │   ├── extent.c
│       │       │   │   │   ├── extent_dss.c
│       │       │   │   │   ├── extent_mmap.c
│       │       │   │   │   ├── hash.c
│       │       │   │   │   ├── hooks.c
│       │       │   │   │   ├── jemalloc.c
│       │       │   │   │   ├── jemalloc_cpp.cpp
│       │       │   │   │   ├── large.c
│       │       │   │   │   ├── log.c
│       │       │   │   │   ├── malloc_io.c
│       │       │   │   │   ├── mutex.c
│       │       │   │   │   ├── mutex_pool.c
│       │       │   │   │   ├── nstime.c
│       │       │   │   │   ├── pages.c
│       │       │   │   │   ├── prng.c
│       │       │   │   │   ├── prof.c
│       │       │   │   │   ├── rtree.c
│       │       │   │   │   ├── stats.c
│       │       │   │   │   ├── sz.c
│       │       │   │   │   ├── tcache.c
│       │       │   │   │   ├── ticker.c
│       │       │   │   │   ├── tsd.c
│       │       │   │   │   ├── witness.c
│       │       │   │   │   └── zone.c
│       │       │   │   └── test
│       │       │   │       ├── include
│       │       │   │       │   └── test
│       │       │   │       │       ├── SFMT-alti.h
│       │       │   │       │       ├── SFMT-params.h
│       │       │   │       │       ├── SFMT-params11213.h
│       │       │   │       │       ├── SFMT-params1279.h
│       │       │   │       │       ├── SFMT-params132049.h
│       │       │   │       │       ├── SFMT-params19937.h
│       │       │   │       │       ├── SFMT-params216091.h
│       │       │   │       │       ├── SFMT-params2281.h
│       │       │   │       │       ├── SFMT-params4253.h
│       │       │   │       │       ├── SFMT-params44497.h
│       │       │   │       │       ├── SFMT-params607.h
│       │       │   │       │       ├── SFMT-params86243.h
│       │       │   │       │       ├── SFMT-sse2.h
│       │       │   │       │       ├── SFMT.h
│       │       │   │       │       ├── btalloc.h
│       │       │   │       │       ├── extent_hooks.h
│       │       │   │       │       ├── jemalloc_test.h.in
│       │       │   │       │       ├── jemalloc_test_defs.h.in
│       │       │   │       │       ├── math.h
│       │       │   │       │       ├── mq.h
│       │       │   │       │       ├── mtx.h
│       │       │   │       │       ├── test.h
│       │       │   │       │       ├── thd.h
│       │       │   │       │       └── timer.h
│       │       │   │       ├── integration
│       │       │   │       │   ├── MALLOCX_ARENA.c
│       │       │   │       │   ├── aligned_alloc.c
│       │       │   │       │   ├── allocated.c
│       │       │   │       │   ├── extent.c
│       │       │   │       │   ├── extent.sh
│       │       │   │       │   ├── mallocx.c
│       │       │   │       │   ├── mallocx.sh
│       │       │   │       │   ├── overflow.c
│       │       │   │       │   ├── posix_memalign.c
│       │       │   │       │   ├── rallocx.c
│       │       │   │       │   ├── sdallocx.c
│       │       │   │       │   ├── thread_arena.c
│       │       │   │       │   ├── thread_tcache_enabled.c
│       │       │   │       │   ├── xallocx.c
│       │       │   │       │   └── xallocx.sh
│       │       │   │       ├── src
│       │       │   │       │   ├── SFMT.c
│       │       │   │       │   ├── btalloc.c
│       │       │   │       │   ├── btalloc_0.c
│       │       │   │       │   ├── btalloc_1.c
│       │       │   │       │   ├── math.c
│       │       │   │       │   ├── mq.c
│       │       │   │       │   ├── mtx.c
│       │       │   │       │   ├── test.c
│       │       │   │       │   ├── thd.c
│       │       │   │       │   └── timer.c
│       │       │   │       ├── stress
│       │       │   │       │   └── microbench.c
│       │       │   │       ├── test.sh.in
│       │       │   │       └── unit
│       │       │   │           ├── SFMT.c
│       │       │   │           ├── a0.c
│       │       │   │           ├── arena_reset.c
│       │       │   │           ├── arena_reset_prof.c
│       │       │   │           ├── arena_reset_prof.sh
│       │       │   │           ├── atomic.c
│       │       │   │           ├── background_thread.c
│       │       │   │           ├── background_thread_enable.c
│       │       │   │           ├── base.c
│       │       │   │           ├── bit_util.c
│       │       │   │           ├── bitmap.c
│       │       │   │           ├── ckh.c
│       │       │   │           ├── decay.c
│       │       │   │           ├── decay.sh
│       │       │   │           ├── div.c
│       │       │   │           ├── emitter.c
│       │       │   │           ├── extent_quantize.c
│       │       │   │           ├── fork.c
│       │       │   │           ├── hash.c
│       │       │   │           ├── hooks.c
│       │       │   │           ├── junk.c
│       │       │   │           ├── junk.sh
│       │       │   │           ├── junk_alloc.c
│       │       │   │           ├── junk_alloc.sh
│       │       │   │           ├── junk_free.c
│       │       │   │           ├── junk_free.sh
│       │       │   │           ├── log.c
│       │       │   │           ├── mallctl.c
│       │       │   │           ├── malloc_io.c
│       │       │   │           ├── math.c
│       │       │   │           ├── mq.c
│       │       │   │           ├── mtx.c
│       │       │   │           ├── nstime.c
│       │       │   │           ├── pack.c
│       │       │   │           ├── pack.sh
│       │       │   │           ├── pages.c
│       │       │   │           ├── ph.c
│       │       │   │           ├── prng.c
│       │       │   │           ├── prof_accum.c
│       │       │   │           ├── prof_accum.sh
│       │       │   │           ├── prof_active.c
│       │       │   │           ├── prof_active.sh
│       │       │   │           ├── prof_gdump.c
│       │       │   │           ├── prof_gdump.sh
│       │       │   │           ├── prof_idump.c
│       │       │   │           ├── prof_idump.sh
│       │       │   │           ├── prof_reset.c
│       │       │   │           ├── prof_reset.sh
│       │       │   │           ├── prof_tctx.c
│       │       │   │           ├── prof_tctx.sh
│       │       │   │           ├── prof_thread_name.c
│       │       │   │           ├── prof_thread_name.sh
│       │       │   │           ├── ql.c
│       │       │   │           ├── qr.c
│       │       │   │           ├── rb.c
│       │       │   │           ├── retained.c
│       │       │   │           ├── rtree.c
│       │       │   │           ├── size_classes.c
│       │       │   │           ├── slab.c
│       │       │   │           ├── smoothstep.c
│       │       │   │           ├── spin.c
│       │       │   │           ├── stats.c
│       │       │   │           ├── stats_print.c
│       │       │   │           ├── ticker.c
│       │       │   │           ├── tsd.c
│       │       │   │           ├── witness.c
│       │       │   │           ├── zero.c
│       │       │   │           └── zero.sh
│       │       │   ├── linenoise
│       │       │   │   ├── Makefile
│       │       │   │   ├── README.markdown
│       │       │   │   ├── example.c
│       │       │   │   ├── linenoise.c
│       │       │   │   └── linenoise.h
│       │       │   ├── lua
│       │       │   │   ├── COPYRIGHT
│       │       │   │   ├── HISTORY
│       │       │   │   ├── INSTALL
│       │       │   │   ├── Makefile
│       │       │   │   ├── README
│       │       │   │   ├── doc
│       │       │   │   │   ├── contents.html
│       │       │   │   │   ├── cover.png
│       │       │   │   │   ├── logo.gif
│       │       │   │   │   ├── lua.1
│       │       │   │   │   ├── lua.css
│       │       │   │   │   ├── lua.html
│       │       │   │   │   ├── luac.1
│       │       │   │   │   ├── luac.html
│       │       │   │   │   ├── manual.css
│       │       │   │   │   ├── manual.html
│       │       │   │   │   └── readme.html
│       │       │   │   ├── etc
│       │       │   │   │   ├── Makefile
│       │       │   │   │   ├── README
│       │       │   │   │   ├── all.c
│       │       │   │   │   ├── lua.hpp
│       │       │   │   │   ├── lua.ico
│       │       │   │   │   ├── lua.pc
│       │       │   │   │   ├── luavs.bat
│       │       │   │   │   ├── min.c
│       │       │   │   │   ├── noparser.c
│       │       │   │   │   └── strict.lua
│       │       │   │   ├── src
│       │       │   │   │   ├── Makefile
│       │       │   │   │   ├── fpconv.c
│       │       │   │   │   ├── fpconv.h
│       │       │   │   │   ├── lapi.c
│       │       │   │   │   ├── lapi.h
│       │       │   │   │   ├── lauxlib.c
│       │       │   │   │   ├── lauxlib.h
│       │       │   │   │   ├── lbaselib.c
│       │       │   │   │   ├── lcode.c
│       │       │   │   │   ├── lcode.h
│       │       │   │   │   ├── ldblib.c
│       │       │   │   │   ├── ldebug.c
│       │       │   │   │   ├── ldebug.h
│       │       │   │   │   ├── ldo.c
│       │       │   │   │   ├── ldo.h
│       │       │   │   │   ├── ldump.c
│       │       │   │   │   ├── lfunc.c
│       │       │   │   │   ├── lfunc.h
│       │       │   │   │   ├── lgc.c
│       │       │   │   │   ├── lgc.h
│       │       │   │   │   ├── linit.c
│       │       │   │   │   ├── liolib.c
│       │       │   │   │   ├── llex.c
│       │       │   │   │   ├── llex.h
│       │       │   │   │   ├── llimits.h
│       │       │   │   │   ├── lmathlib.c
│       │       │   │   │   ├── lmem.c
│       │       │   │   │   ├── lmem.h
│       │       │   │   │   ├── loadlib.c
│       │       │   │   │   ├── lobject.c
│       │       │   │   │   ├── lobject.h
│       │       │   │   │   ├── lopcodes.c
│       │       │   │   │   ├── lopcodes.h
│       │       │   │   │   ├── loslib.c
│       │       │   │   │   ├── lparser.c
│       │       │   │   │   ├── lparser.h
│       │       │   │   │   ├── lstate.c
│       │       │   │   │   ├── lstate.h
│       │       │   │   │   ├── lstring.c
│       │       │   │   │   ├── lstring.h
│       │       │   │   │   ├── lstrlib.c
│       │       │   │   │   ├── ltable.c
│       │       │   │   │   ├── ltable.h
│       │       │   │   │   ├── ltablib.c
│       │       │   │   │   ├── ltm.c
│       │       │   │   │   ├── ltm.h
│       │       │   │   │   ├── lua.c
│       │       │   │   │   ├── lua.h
│       │       │   │   │   ├── lua_bit.c
│       │       │   │   │   ├── lua_cjson.c
│       │       │   │   │   ├── lua_cmsgpack.c
│       │       │   │   │   ├── lua_struct.c
│       │       │   │   │   ├── luac.c
│       │       │   │   │   ├── luaconf.h
│       │       │   │   │   ├── lualib.h
│       │       │   │   │   ├── lundump.c
│       │       │   │   │   ├── lundump.h
│       │       │   │   │   ├── lvm.c
│       │       │   │   │   ├── lvm.h
│       │       │   │   │   ├── lzio.c
│       │       │   │   │   ├── lzio.h
│       │       │   │   │   ├── print.c
│       │       │   │   │   ├── strbuf.c
│       │       │   │   │   └── strbuf.h
│       │       │   │   └── test
│       │       │   │       ├── README
│       │       │   │       ├── bisect.lua
│       │       │   │       ├── cf.lua
│       │       │   │       ├── echo.lua
│       │       │   │       ├── env.lua
│       │       │   │       ├── factorial.lua
│       │       │   │       ├── fib.lua
│       │       │   │       ├── fibfor.lua
│       │       │   │       ├── globals.lua
│       │       │   │       ├── hello.lua
│       │       │   │       ├── life.lua
│       │       │   │       ├── luac.lua
│       │       │   │       ├── printf.lua
│       │       │   │       ├── readonly.lua
│       │       │   │       ├── sieve.lua
│       │       │   │       ├── sort.lua
│       │       │   │       ├── table.lua
│       │       │   │       ├── trace-calls.lua
│       │       │   │       ├── trace-globals.lua
│       │       │   │       └── xd.lua
│       │       │   └── update-jemalloc.sh
│       │       ├── redis.conf
│       │       ├── runtest
│       │       ├── runtest-cluster
│       │       ├── runtest-moduleapi
│       │       ├── runtest-sentinel
│       │       ├── sentinel.conf
│       │       ├── src
│       │       │   ├── Makefile
│       │       │   ├── acl.c
│       │       │   ├── adlist.c
│       │       │   ├── adlist.h
│       │       │   ├── ae.c
│       │       │   ├── ae.h
│       │       │   ├── ae_epoll.c
│       │       │   ├── ae_evport.c
│       │       │   ├── ae_kqueue.c
│       │       │   ├── ae_select.c
│       │       │   ├── anet.c
│       │       │   ├── anet.h
│       │       │   ├── aof.c
│       │       │   ├── asciilogo.h
│       │       │   ├── atomicvar.h
│       │       │   ├── bio.c
│       │       │   ├── bio.h
│       │       │   ├── bitops.c
│       │       │   ├── blocked.c
│       │       │   ├── childinfo.c
│       │       │   ├── cluster.c
│       │       │   ├── cluster.h
│       │       │   ├── config.c
│       │       │   ├── config.h
│       │       │   ├── connection.c
│       │       │   ├── connection.h
│       │       │   ├── connhelpers.h
│       │       │   ├── crc16.c
│       │       │   ├── crc16_slottable.h
│       │       │   ├── crc64.c
│       │       │   ├── crc64.h
│       │       │   ├── crcspeed.c
│       │       │   ├── crcspeed.h
│       │       │   ├── db.c
│       │       │   ├── debug.c
│       │       │   ├── debugmacro.h
│       │       │   ├── defrag.c
│       │       │   ├── dict.c
│       │       │   ├── dict.h
│       │       │   ├── endianconv.c
│       │       │   ├── endianconv.h
│       │       │   ├── evict.c
│       │       │   ├── expire.c
│       │       │   ├── fmacros.h
│       │       │   ├── geo.c
│       │       │   ├── geo.h
│       │       │   ├── geohash.c
│       │       │   ├── geohash.h
│       │       │   ├── geohash_helper.c
│       │       │   ├── geohash_helper.h
│       │       │   ├── gopher.c
│       │       │   ├── help.h
│       │       │   ├── hyperloglog.c
│       │       │   ├── intset.c
│       │       │   ├── intset.h
│       │       │   ├── latency.c
│       │       │   ├── latency.h
│       │       │   ├── lazyfree.c
│       │       │   ├── listpack.c
│       │       │   ├── listpack.h
│       │       │   ├── listpack_malloc.h
│       │       │   ├── localtime.c
│       │       │   ├── lolwut.c
│       │       │   ├── lolwut.h
│       │       │   ├── lolwut5.c
│       │       │   ├── lolwut6.c
│       │       │   ├── lzf.h
│       │       │   ├── lzfP.h
│       │       │   ├── lzf_c.c
│       │       │   ├── lzf_d.c
│       │       │   ├── memtest.c
│       │       │   ├── mkreleasehdr.sh
│       │       │   ├── module.c
│       │       │   ├── modules
│       │       │   │   ├── Makefile
│       │       │   │   ├── gendoc.rb
│       │       │   │   ├── helloacl.c
│       │       │   │   ├── helloblock.c
│       │       │   │   ├── hellocluster.c
│       │       │   │   ├── hellodict.c
│       │       │   │   ├── hellohook.c
│       │       │   │   ├── hellotimer.c
│       │       │   │   ├── hellotype.c
│       │       │   │   ├── helloworld.c
│       │       │   │   └── testmodule.c
│       │       │   ├── multi.c
│       │       │   ├── networking.c
│       │       │   ├── notify.c
│       │       │   ├── object.c
│       │       │   ├── pqsort.c
│       │       │   ├── pqsort.h
│       │       │   ├── pubsub.c
│       │       │   ├── quicklist.c
│       │       │   ├── quicklist.h
│       │       │   ├── rand.c
│       │       │   ├── rand.h
│       │       │   ├── rax.c
│       │       │   ├── rax.h
│       │       │   ├── rax_malloc.h
│       │       │   ├── rdb.c
│       │       │   ├── rdb.h
│       │       │   ├── redis-benchmark.c
│       │       │   ├── redis-check-aof.c
│       │       │   ├── redis-check-rdb.c
│       │       │   ├── redis-cli.c
│       │       │   ├── redis-trib.rb
│       │       │   ├── redisassert.h
│       │       │   ├── redismodule.h
│       │       │   ├── release.c
│       │       │   ├── replication.c
│       │       │   ├── rio.c
│       │       │   ├── rio.h
│       │       │   ├── scripting.c
│       │       │   ├── sds.c
│       │       │   ├── sds.h
│       │       │   ├── sdsalloc.h
│       │       │   ├── sentinel.c
│       │       │   ├── server.c
│       │       │   ├── server.h
│       │       │   ├── setcpuaffinity.c
│       │       │   ├── setproctitle.c
│       │       │   ├── sha1.c
│       │       │   ├── sha1.h
│       │       │   ├── sha256.c
│       │       │   ├── sha256.h
│       │       │   ├── siphash.c
│       │       │   ├── slowlog.c
│       │       │   ├── slowlog.h
│       │       │   ├── solarisfixes.h
│       │       │   ├── sort.c
│       │       │   ├── sparkline.c
│       │       │   ├── sparkline.h
│       │       │   ├── stream.h
│       │       │   ├── syncio.c
│       │       │   ├── t_hash.c
│       │       │   ├── t_list.c
│       │       │   ├── t_set.c
│       │       │   ├── t_stream.c
│       │       │   ├── t_string.c
│       │       │   ├── t_zset.c
│       │       │   ├── testhelp.h
│       │       │   ├── timeout.c
│       │       │   ├── tls.c
│       │       │   ├── tracking.c
│       │       │   ├── util.c
│       │       │   ├── util.h
│       │       │   ├── valgrind.sup
│       │       │   ├── version.h
│       │       │   ├── ziplist.c
│       │       │   ├── ziplist.h
│       │       │   ├── zipmap.c
│       │       │   ├── zipmap.h
│       │       │   ├── zmalloc.c
│       │       │   └── zmalloc.h
│       │       ├── tests
│       │       │   ├── assets
│       │       │   │   ├── default.conf
│       │       │   │   ├── encodings.rdb
│       │       │   │   └── hash-zipmap.rdb
│       │       │   ├── cluster
│       │       │   │   ├── cluster.tcl
│       │       │   │   ├── run.tcl
│       │       │   │   ├── tests
│       │       │   │   │   ├── 00-base.tcl
│       │       │   │   │   ├── 01-faildet.tcl
│       │       │   │   │   ├── 02-failover.tcl
│       │       │   │   │   ├── 03-failover-loop.tcl
│       │       │   │   │   ├── 04-resharding.tcl
│       │       │   │   │   ├── 05-slave-selection.tcl
│       │       │   │   │   ├── 06-slave-stop-cond.tcl
│       │       │   │   │   ├── 07-replica-migration.tcl
│       │       │   │   │   ├── 08-update-msg.tcl
│       │       │   │   │   ├── 09-pubsub.tcl
│       │       │   │   │   ├── 10-manual-failover.tcl
│       │       │   │   │   ├── 11-manual-takeover.tcl
│       │       │   │   │   ├── 12-replica-migration-2.tcl
│       │       │   │   │   ├── 13-no-failover-option.tcl
│       │       │   │   │   ├── 14-consistency-check.tcl
│       │       │   │   │   ├── 15-cluster-slots.tcl
│       │       │   │   │   ├── helpers
│       │       │   │   │   │   └── onlydots.tcl
│       │       │   │   │   └── includes
│       │       │   │   │       └── init-tests.tcl
│       │       │   │   └── tmp
│       │       │   ├── helpers
│       │       │   │   ├── bg_block_op.tcl
│       │       │   │   ├── bg_complex_data.tcl
│       │       │   │   └── gen_write_load.tcl
│       │       │   ├── instances.tcl
│       │       │   ├── integration
│       │       │   │   ├── aof-race.tcl
│       │       │   │   ├── aof.tcl
│       │       │   │   ├── block-repl.tcl
│       │       │   │   ├── convert-zipmap-hash-on-load.tcl
│       │       │   │   ├── logging.tcl
│       │       │   │   ├── psync2-pingoff.tcl
│       │       │   │   ├── psync2-reg.tcl
│       │       │   │   ├── psync2.tcl
│       │       │   │   ├── rdb.tcl
│       │       │   │   ├── redis-cli.tcl
│       │       │   │   ├── replication-2.tcl
│       │       │   │   ├── replication-3.tcl
│       │       │   │   ├── replication-4.tcl
│       │       │   │   ├── replication-psync.tcl
│       │       │   │   └── replication.tcl
│       │       │   ├── modules
│       │       │   │   ├── Makefile
│       │       │   │   ├── auth.c
│       │       │   │   ├── blockonkeys.c
│       │       │   │   ├── commandfilter.c
│       │       │   │   ├── datatype.c
│       │       │   │   ├── fork.c
│       │       │   │   ├── hooks.c
│       │       │   │   ├── infotest.c
│       │       │   │   ├── misc.c
│       │       │   │   ├── propagate.c
│       │       │   │   ├── scan.c
│       │       │   │   └── testrdb.c
│       │       │   ├── sentinel
│       │       │   │   ├── run.tcl
│       │       │   │   ├── tests
│       │       │   │   │   ├── 00-base.tcl
│       │       │   │   │   ├── 01-conf-update.tcl
│       │       │   │   │   ├── 02-slaves-reconf.tcl
│       │       │   │   │   ├── 03-runtime-reconf.tcl
│       │       │   │   │   ├── 04-slave-selection.tcl
│       │       │   │   │   ├── 05-manual.tcl
│       │       │   │   │   ├── 06-ckquorum.tcl
│       │       │   │   │   ├── 07-down-conditions.tcl
│       │       │   │   │   └── includes
│       │       │   │   │       └── init-tests.tcl
│       │       │   │   └── tmp
│       │       │   ├── support
│       │       │   │   ├── cli.tcl
│       │       │   │   ├── cluster.tcl
│       │       │   │   ├── redis.tcl
│       │       │   │   ├── server.tcl
│       │       │   │   ├── test.tcl
│       │       │   │   ├── tmpfile.tcl
│       │       │   │   └── util.tcl
│       │       │   ├── test_helper.tcl
│       │       │   └── unit
│       │       │       ├── acl.tcl
│       │       │       ├── aofrw.tcl
│       │       │       ├── auth.tcl
│       │       │       ├── bitfield.tcl
│       │       │       ├── bitops.tcl
│       │       │       ├── dump.tcl
│       │       │       ├── expire.tcl
│       │       │       ├── geo.tcl
│       │       │       ├── hyperloglog.tcl
│       │       │       ├── introspection-2.tcl
│       │       │       ├── introspection.tcl
│       │       │       ├── keyspace.tcl
│       │       │       ├── latency-monitor.tcl
│       │       │       ├── lazyfree.tcl
│       │       │       ├── limits.tcl
│       │       │       ├── maxmemory.tcl
│       │       │       ├── memefficiency.tcl
│       │       │       ├── moduleapi
│       │       │       │   ├── auth.tcl
│       │       │       │   ├── blockonkeys.tcl
│       │       │       │   ├── commandfilter.tcl
│       │       │       │   ├── datatype.tcl
│       │       │       │   ├── fork.tcl
│       │       │       │   ├── hooks.tcl
│       │       │       │   ├── infotest.tcl
│       │       │       │   ├── misc.tcl
│       │       │       │   ├── propagate.tcl
│       │       │       │   ├── scan.tcl
│       │       │       │   └── testrdb.tcl
│       │       │       ├── multi.tcl
│       │       │       ├── obuf-limits.tcl
│       │       │       ├── other.tcl
│       │       │       ├── pendingquerybuf.tcl
│       │       │       ├── printver.tcl
│       │       │       ├── protocol.tcl
│       │       │       ├── pubsub.tcl
│       │       │       ├── quit.tcl
│       │       │       ├── scan.tcl
│       │       │       ├── scripting.tcl
│       │       │       ├── slowlog.tcl
│       │       │       ├── sort.tcl
│       │       │       ├── tls.tcl
│       │       │       ├── tracking.tcl
│       │       │       ├── type
│       │       │       │   ├── hash.tcl
│       │       │       │   ├── incr.tcl
│       │       │       │   ├── list-2.tcl
│       │       │       │   ├── list-3.tcl
│       │       │       │   ├── list-common.tcl
│       │       │       │   ├── list.tcl
│       │       │       │   ├── set.tcl
│       │       │       │   ├── stream-cgroups.tcl
│       │       │       │   ├── stream.tcl
│       │       │       │   ├── string.tcl
│       │       │       │   └── zset.tcl
│       │       │       └── wait.tcl
│       │       └── utils
│       │           ├── build-static-symbols.tcl
│       │           ├── cluster_fail_time.tcl
│       │           ├── corrupt_rdb.c
│       │           ├── create-cluster
│       │           │   ├── README
│       │           │   └── create-cluster
│       │           ├── gen-test-certs.sh
│       │           ├── generate-command-help.rb
│       │           ├── graphs
│       │           │   └── commits-over-time
│       │           │       ├── README.md
│       │           │       └── genhtml.tcl
│       │           ├── hashtable
│       │           │   ├── README
│       │           │   └── rehashing.c
│       │           ├── hyperloglog
│       │           │   ├── hll-err.rb
│       │           │   └── hll-gnuplot-graph.rb
│       │           ├── install_server.sh
│       │           ├── lru
│       │           │   ├── README
│       │           │   ├── lfu-simulation.c
│       │           │   └── test-lru.rb
│       │           ├── redis-copy.rb
│       │           ├── redis-sha1.rb
│       │           ├── redis_init_script
│       │           ├── redis_init_script.tpl
│       │           ├── releasetools
│       │           │   ├── 01_create_tarball.sh
│       │           │   ├── 02_upload_tarball.sh
│       │           │   ├── 03_test_release.sh
│       │           │   ├── 04_release_hash.sh
│       │           │   └── changelog.tcl
│       │           ├── speed-regression.tcl
│       │           ├── srandmember
│       │           │   ├── README.md
│       │           │   ├── showdist.rb
│       │           │   └── showfreq.rb
│       │           ├── systemd-redis_multiple_servers@.service
│       │           ├── systemd-redis_server.service
│       │           ├── tracking_collisions.c
│       │           └── whatisdoing.sh
│       ├── Chapter09
│       │   └── code
│       │       ├── AsyncLogger
│       │       │   ├── AsyncLogger.cpp
│       │       │   ├── AsyncLogger.sln
│       │       │   ├── AsyncLogger.vcxproj
│       │       │   ├── AsyncLogger.vcxproj.filters
│       │       │   ├── stdafx.cpp
│       │       │   ├── stdafx.h
│       │       │   └── targetver.h
│       │       ├── AsyncLogger1
│       │       │   ├── AsyncLogger.cpp
│       │       │   ├── AsyncLogger.sln
│       │       │   ├── AsyncLogger.vcxproj
│       │       │   ├── AsyncLogger.vcxproj.filters
│       │       │   ├── stdafx.cpp
│       │       │   ├── stdafx.h
│       │       │   └── targetver.h
│       │       ├── AsyncLoggerLinux.cpp
│       │       └── AsyncLoggerWindows
│       │           ├── AsyncLogger.cpp
│       │           ├── AsyncLogger.sln
│       │           ├── AsyncLogger.vcxproj
│       │           ├── AsyncLogger.vcxproj.filters
│       │           ├── stdafx.cpp
│       │           ├── stdafx.h
│       │           └── targetver.h
│       ├── README.md
│       ├── bookCover.jpeg
│       └── easyserverdev.png
└── 好例子网_C 服务器开发精髓源码.rar

175 directories, 1899 files


实例下载地址

《C++服务器开发精髓》源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警