摘抄自(https://blog.csdn.net/kongtiao5/article/details/82771694)
缓存处理流程
前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。
不乱
摘抄自(https://blog.csdn.net/kongtiao5/article/details/82771694)
前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。
使用平台
因为是网页,所以本质是全平台的,但是这边主要为手机做的优化显示,因为电脑上看起来也很正常.
卡顿
集成图片后,页面可能比较大,没有好办法,建议机器跑不动使用以前没有图片的版本
界面显示错乱
已修正,原因是加载外部链接js脚本没有加载成功导致的.
乱码
页面使用UTF-8编码,应该是最通用的编码,如果看起来文字不正常,请尝试切换浏览器查看(如果理解原理,可以自行修改文件编码修复乱码)(理论上目前应该没有乱码了)
哪里可以获取到更新那?
github地址:数字编码,当然,这里是没有数字编码图片信息的,我根本就没有上传
iphone可以使用吗?
我就是用iphone打开的,使用百度app或者直接使用内置的备忘录都可以直接打开
安卓可以用吗?
看群里的反应应该是可以用的~一个页面而已,理论上应该很通用的.(据说qq浏览器可看)
pprof是google的测试c++代码性能的工具
(valgrind,callgrind同样可以分析)
-lprofiler
env LD_PRELOAD="/path/to/libprofiler.a" CPUPROFILE=gmon.out ./执行程序名
ProfilerStop()
函数的调用才能生成分析文件ProfilerStart("gmon.out")
ProfilerStop()
pprof --pdf ./运行程序名 gmon.out > XXX.pdf
查看分析生成的pdf即可
配置文件统一的文件
配置文件因为比较常用,紧接着会补齐配置文件中的TODO内容,
把各个参数的作用都理解和写清楚
options.h
util/options.cc
db包含了一组set的block
block是用于存储连续键值对的
block是从硬盘读取到内存的单个最小单位
block最终会存储在file文件中
block在存储在file中前,
可能会使用某种方法进行压缩处理,
这个枚举是用于表示block采取了那种压缩方法的
1 | enum CompressionType { |
leveldb/status.h
leveldb/util/status.cc
1 | enum Code { |
const char* state_
,用于记录错误具体信息nullptr
nullptr
,则表示状态为kOk
正常Code
的枚举):
分割因为leveldb源码中大量的运用了c11的知识点,不懂的话是要仔细看看的
这里做了一下总结的功能和记录
会根据我看到的内容慢慢扩展
标记在函数的()
后面,表示希望函数无异常抛出,如果函数抛出任何异常,则会报错crash
noexcept
修饰过来返回bool类型值表示是否期望无异常抛出简单的说,我们能够看到的命名变量都不是临时变量
在拷贝构造函数与赋值函数中会大量使用右值引用的优化
使用右值引用可以有效减少构造函数的调用
右值引用的本质是将临时参数对象的值交换给实际上有效的对象
而不是复制一份新的给对象
系统会自动判断,如果参数是临时变量,
则会优先调用右值引用优化处理的函数,
如果找不到,则会自动调用普通的函数处理.
非临时变量全部是调用普通的函数处理.
普通的声明
1 | Status(const Status& rhs); |
使用右值引用的声明
1 | Status(Status&& rhs) noexcept : state_(rhs.state_) { rhs.state = nullptr; } |
注意:
const
,这里要注意,因为交换时实际是修改了参数的内容的