摘要:
内容结构 架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现。 架构基础:我会先介绍架构设计的本质、历史背景和目的,然后从复杂度来源以及架构设计的原则和流程来详细介绍架构基础。 高性能架构模式:我会从存储高性能、计算高性能方面,介绍几种设计方案的典型特征和应用场景。 高可用架构模式:我会 阅读全文
摘要:
1 调试基础 1.1 携带调试信息 -g: 增加调试信息 -o0:关闭优化 注意生成的应用信息可以通过strip命令 去掉调试信息,具体strip的使用可以通过man strip查询 示例: 1.2 启动gdb调试 直接调试目标程序 gdb socket_server attach 到进程 gdb 阅读全文
摘要:
1 C++ RAII 惯用法 三种处理方法: 1.1 使用goto语句 使用goto不能跳过变量得初始化; goto 在没有跳转时,会顺序执行goto语句; 注意:尽量不要使用goto,易造成程序混乱 1.2 使用do...while(0)循环 使用do...while(0) 跳出循环,保证异常处理 阅读全文
摘要:
1 linux 命令 grep 用于文件内部查找匹配命令 find 用于查找文件使用 awk AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 语法: awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f scriptfile var 阅读全文
摘要:
1 Put 操作 1.1 接口函数: 接口: // Convenience methods Status DBImpl::Put(const WriteOptions& o, const Slice& key, const Slice& val) { return DB::Put(o, key, v 阅读全文
摘要:
1 为什么要有select 将socket fd设置为nonblock(非阻塞)是在服务器编程中常见的做法,采用blocking IO并为每一个client创建一个线程的模式开销巨大且可扩展性不佳(带来大量的切换开销),更为通用的做法是采用线程池+Nonblock I/O+Multiplexing( 阅读全文
摘要:
1 coding.h 数据编码 1.1 uint 编码示例 函数示例 编码函数 inline void EncodeFixed32(char* dst, uint32_t value) inline void EncodeFixed64(char* dst, uint64_t value) 解码函数 阅读全文
摘要:
1 进程通信 本地进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 网络通信: 标识网络进程:三元组(ip地址,协议, 阅读全文
摘要:
1 链表常规题目 链表常规题目: 2 链表反序 初始化:单链表需要指向一个前向节点: 反序: 2.1 代码示例 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li 阅读全文
摘要:
1 Websocket 产生原因 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返 阅读全文