设计模式总结
Design Pattern Summary 设计模式学完的感受就是尽量不用设计模式,尤其是工程特别大的时候,设计模式的加入反而会使得整个代码框架变得特别难读。 设计模式的核心是写出能够复用的代码,能够抵御足够强的变化,且在新增特性的时候,在原代码上带来的影响是较小的。应该是写出新的部分,在原有的部分上能复用。 8大基本原则 依赖倒置 高层模块(稳定)不应该依...
Design Pattern Summary 设计模式学完的感受就是尽量不用设计模式,尤其是工程特别大的时候,设计模式的加入反而会使得整个代码框架变得特别难读。 设计模式的核心是写出能够复用的代码,能够抵御足够强的变化,且在新增特性的时候,在原代码上带来的影响是较小的。应该是写出新的部分,在原有的部分上能复用。 8大基本原则 依赖倒置 高层模块(稳定)不应该依...
一些关于网络io的资料 Theory tcpip-study 陈硕的tcp-ip study CS144 Concurrent Servers Life of an HTTP request in a Go server
std::move使用指南 使用move在不实现它两个配套函数,编译器合成,逐个调用move,如果底层类型没有move,那其实还是copy。这种在有指针的时候要尤其注意,指针指向的内存到底在哪里,在这次move之后还有意义吗。 配套move构造函数和拷贝构造和拷贝assign的操作是一样的时候。move我认为是没有意义。 不如看看rust的转移...
Bug修复指南 记录一下第一次正式修复bug干的蠢事。 定位 首先,要习惯需要debug的模块是你所不熟悉的。个人能力最重要的一点就是解决问题的能力。 其次,我觉得这次比较缺失的环节就是通过堆栈分析,leader直接告诉我成因了。通读一遍之后问题其实就基本知道原因。但他不告诉我,这个代码有1w行,我去找的话多半好几天。。。 其实还是按照堆栈一步步看哪里除了问题,然后一路回溯过去吧。...
CS106L 第一个完成的courses,主要是讲了些c++的特性。帮助我理解了一点点move语意。然后配合c++ daily理解了lambda匿名函数。 课程很简单,lab做了一个构造算法,一个数据结构题。 其中wifiracer很有意思,后面其实可以看一下他请求网络的代码。里面做了部分页面的缓存,思路还挺不错的。 实际实现的时候拿一个vector存了所有的path,然后拿heap...
Google Code Style命名规则 为了统一随后的风格,在Google Code Style上对自己的代码书写风格做一个统一的约定。 文件名 全部小写,单词之间用下划线隔开。 // 形如 fake_server.cpp 类名 首字母大写,不用下划线。 class SegTree{ }; using ItemMap = unordered_map<int,It...
size_t和跨平台问题 需要注意的是size_t在不同平台下的具体数据类型可能是不一样的,如果要log输出,具体的控制符可能需要使用%zu,z可以控制具体的长度。 实际场景下可以记住一个参考的标准,int小于等于数据线的宽度,size_t大于等于地址线宽度。 size_t存在的最大原因可能是因为:地址线宽度历史中经常都是大于数据线宽度的。 有些机器下int和int64_t的定义都不...
Details std::string从const char*转过来的时候,如果存在’\0’,会被截断。good taste的做法是 std::string s1 = "ab\0\0cd"; // s1 contains "ab" std::string s2{"ab\0\0cd", 6}; // s2 contains "ab\0\0cd" std::string s3 =...
私有仓库的鉴权问题 docker login -u your_email -p your_cli_secret 仓库地址 关于Arch的docker使用 开始docker.service sudo systemctl start docker sudo systemctl enable docker 然后就直接拉取镜像就好 Docker Operations 将当前用户...
SSH debug 今天clone公司repo的时候发现有ssh key已经添加了也会报错。permission deny,当时觉得不应该,觉得是pubkey复制错了。遂在另一台archlinux的主机上也尝试了一下,依然报错。 感觉不是key错误的问题,遂开始debug。ssh链接的debug倒也简单,直接ssh -vvvv git@git.bitbucket.com就可以看到链接的具...