下你所需,载你所想!
汇集开发技术源码资料

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

:3.983MB :1 :2022-10-11 15:36:19

部分简介

《C++服务器开发精髓》代码如果开发者对于本文件有需要的可以参考。
《C 服务器开发精髓》源码
本书从操作系统原理角度讲解进行C 服务器开发所需掌握的技术栈。全书总计9章,第1~2章讲解C 11/14/17新标准中的常用特性、新增类库,以及C 开发者必须熟练掌握的开发调试工具链;第3~6章详细讲解C 服务器开发中的多线程编程技术、网络编程重难点知识、网络故障调试与排查常用工具,以及通信协议的设计思路、技巧;第7~8章详细讲解一个带网络通信组件的高性能服务的基本设计思路和注意事项;第9章进一步补充服务相关的常用模块设计思路和方法。本书秉承的思想是,通过掌握技术原理,可以轻松制造“轮子”,灵活设计出优雅、鲁棒的服务,并快速学习新技术。
无论是对于C/C 开发者、计算机专业的学生,还是对于想了解操作系统原理的读者,本书都极具参考价值。
.
├── 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

热门推荐

相关文章