Weakyon Blog

Weakyon

C++11的值类别

在C++11中,除了原本的左值(lvalue),纯右值(rvalue),还加入了一个新的将亡值(xvalue) 本文试图分析以下问题: 为什么要引入移动构造函数 怎么理解左值和纯右值 怎么理解将亡值 一 为什么要引入移动构造函数 C++在C++98/03是不推荐用stl的,因为很多类的效率都很低下 这种效率低下主要体现在对临时值额外的拷贝操作(模板的低效转发也是一方...

深入理解条件变量

本篇博客会深入分析条件变量实现来理解两个问题: 为什么条件变量要配合锁来使用 — 信号丢失问题 为什么条件变量需要用while循环来判断条件,而不是if — 虚假唤醒(spurious wakeup)问题 这两个问题不仅是C会遇到,所有语言的封装几乎都不可避免 一 遇到的代码 二 条件变量实现源码分析 三 经典写法分析 四 虚假唤醒 五 参考资料...

评论系统的搭建

一直以来用的友言第三方评论系统倒闭了,现在连官方网站都打不开了。 所有的评论数据全部丢失,很伤。那我宁愿用开源的评论系统了,例如isso。 下面记录一下isso的使用方法(isso-0.11.1版本)。 安装(阿里云ECS的centos7.3环境) 安装pip,sqlite yum install python-devel sqlite 升级pip pip install --upg...

Mysql事务忘记rollback导致的死锁分析

一 bug重现 1.1 锁A表 1.2 事务执行失败 二 死锁分析 参考资料 做分布式事务的时候用到了存储过程加事务,由于忘记在存储过程中捕获异常rollback,导致了死锁 不过我select … for update锁的是A表,实际线上却是B表被锁死 sql一块之前理解不深入,debug的过程重新复习一下 一 bu...

访问者模式分析--设计模式

一 双重多态模式 1.1 What 1.2 How 1.3 Why 二 访问者模式 2.1 What 2.2 How 2.3 Why 三 深入阅读 3.1 访问者模式的变形(过滤器链模式) 3.2 拦截器链模式 ...

c++性能分析gperftools总结

安装 包管理安装 源码安装 使用 http接口安装 步骤一 配置 步骤二 安装 http接口使用 使用可能遇到的问题 总结 参考资料 习惯了golang的net/http/pprof的便利,c++的性能分析就显得繁琐了一点。 不过大致上还是一致的。 安装 ...

grpc c++使用以及踩坑

两个因素想做开源项目: 1 主导开发中间件系统的心愿已经达成,虽然中间磕磕碰碰的踩了很多坑。 但毕竟最终结果是好的。 唯一的遗憾就是没有开源了。 2 之前做了一些小网站,也累积了不少用户,但是对技术的磨练还是太少了。 特别是用户的增长出现瓶颈以后,架构和细节已经没有必要在优化了。这就让人产生了惰性。 认真做一个开源项目,会有bug issue和功能的issue。会有人去推动你不...

再看过载保护

一 新的认识 二 负载定理 三 内部上游客户端 3.1 服务发现 3.2 动态回馈负载均衡策略 1) 下游响应时间负载均衡 优缺点分析: 2) 下游任务队列负载均衡 ...

控制反转的思考

我认为,控制反转和模版模式以及框架的概念是类似的,而控制正转类同于策略模式,库。 反转的是依赖关系,对框架代码来说,实现的就是模版模式。使用框架的代码,其实被反转调用了。而库则是主动去调用的,是一种策略模式。 因为控制反转是一种设计模式,因此所有语言都存在。 例如C,JS是以回调函数实现。而Python作为一种动态语言,这方面的支持更为强大。 对于OOP的静态语言(Cpp,Java,...

设计模式思考

一 我对23种设计模式的理解: 1)类模式和对象模式 2) 创建型(5种) 工厂 简单工厂模式: 工厂模式: 抽象工厂 单例 ...