自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 epoll客户端服务端案例

本文为学习笔记,用于记录。

2023-08-29 16:11:24 148

原创 c/c++替换字符串中的关键字(包括\等转义字符)

最近工作的时候有碰到一个问题,输入字符串中存在“\”,处理程序在读取到的时候会将其当做转义字符,导致输入字符串错误。所以产生了两个需求:1.需要将“\”替换为“\\”。2.又因为,其他需求也存在在目标字符串中寻找对应的子串,将子串替换成目标子串的需求。找了一下网上的相关替换都是针对单个char类型字符的,这种场景适合适合第一个需求,第二个需求就不合适了,所以现在写了一个同时满足两个需求的代码。在这...

2020-02-18 15:37:33 3588 2

原创 一致性哈希的原理

一致性哈希一般使用在有均衡分配需求上。解决类似于在一个服务器集群之中,只有其中某几台服务器接受了大量的请求,而剩下的服务器接受的请求寥寥无几的情况。一致性哈希可以将所有请求大致均匀的分配给所有的服务器,可以解决某几个单独服务器由于请求过多导致的响应变慢的情况。一致性哈希的核心设计 将服务器(或者线程等各种需要分配的)视为一个节点分布在一个环上。并为每个节点生成一个哈希...

2019-06-21 13:54:41 617

原创 一致性哈希的使用与优缺点分析

最近用到了一致性哈希,写一写总结一下。一致性哈希常用在的负载均衡方面。比如:在服务器的服务节点选择,线程池中线程的选择,路由等等。我们可以将一致性哈希分配的单个节点看做是某个单个服务器,某一条线程,某一个单独的路由目标。一致性哈希在负载均衡方面效果很好,因为它的设计目标是为了解决因特网中的热点(hot spot)问题。但是一致性哈希在某些特殊情况下的均衡效果反而不是特别的好(比...

2019-03-14 17:19:44 8022

原创 vector的实现

磨磨蹭蹭了三个月终于吧vector的实现给写了一遍 = =/* * Vector.h * * Created on: Dec 6, 2018 * Author: clh01s */#ifndef VECTOR_H_#define VECTOR_H_//#include <vector>#include <bits/stl_iterato...

2019-03-06 16:23:56 297

转载 syscall的原理

引言:分析Android源码的过程中,要想从上至下完全明白一行代码,往往涉及app、framework、native一直到kernel,可能迷失到代码世界,明白了系统调用原理,或许能帮你峰回路转,找到进入kernel函数的入口。本文主要讲解ARM架构相关源码:/bionic/libc/kernel/uapi/asm-arm/asm/unistd.h/bionic/libc/arch-arm/...

2018-12-27 16:22:51 950

原创 红黑树的删除

这篇为红黑树删除,可以算作上一篇红黑树的构建与插入的下一篇这里单独贴出删除节点的代码:__rb_tree_node_base* _Rb_tree_rebalance_for_erase(__rb_tree_node_base* const __z, __rb_tree_node_base& __header){ __rb_tree_node_base*& __ro...

2018-11-22 15:32:37 271

原创 红黑树的构建与插入

最近在看《stl源码剖析》,看到了红黑树的一章,就想根据书上的代码自己动手实现一下。现在只实现到树的构建与插入功能;节点删除和修改功能还未实现。写完之后发现自己用的Ubuntu16.04的g++5.4.0上与书上的g++版本相差太大,比如其中的空间分配器的使用已经完全不同。我只得照着g++5.4.0的源码再修改已经写好的代码,所以代码中有着很多c++11标准的语法与书上的老标准的语法穿插的情况。现...

2018-10-22 10:53:59 402

原创 c++线程安全的map

参考了 《c++并发编程实战》这本书上的代码写了一个线程安全可以并发的map/* * threadsafe_map.cpp * * Created on: May 11, 2018 * Author: clh01s * 线程安全的查找表 * 通过boost的shared_mutex实现读写锁 * 假设有一定数量的桶,每一个键都有一个桶 * ...

2018-05-17 14:55:36 18954

原创 c++使用细粒度锁以及傀儡节点的线程安全队列

研究了一下线程安全的数据结构,参考了 《c++并发编程实战》这本书上的代码写了一个能够编译运行的版本这份代码解决的核心问题是在细粒度锁的并发情况下可能出现的多个锁同时锁住一个节点解决的方法是使用傀儡节点即在队列为“空”的情况下依然有两个节点一个为空的头节点一个为尾的空的傀儡节点实现代码:/* * wait_lock_thread_queue.cpp * * Created on: Apr ...

2018-05-10 16:24:10 524

转载 CMakeLists入门学习笔记

0、前言因为在使用OPENCV以及caffe的过程中都接触到了许多关于CMake的使用,于是就想了解一下CMake究竟是怎样一个东西,有什么作用。顺便做一个学习笔记。 本文参考《CMake Practice》这篇文章完成,旨在指导用户快速使用CMake,如果需要更详细的内容,请通读《CMake Practice》这篇文章。下载路径:http://sewm.pku.edu.cn/src/paradi...

2018-04-16 11:15:27 1032

原创 c++使用智能指针的线程安全队列

整理自C++并发编程实战使用std::shared_ptr<>的线程安全队列/* * threadsafe_queue_ptr.cpp * * Created on: Mar 2, 2018 * Author: [email protected] * 为了防止在wait_and_pop()中引发异常, * 所以将shared_ptr<>...

2018-03-06 10:10:02 2584 2

原创 c++线程安全的栈

整理自c++并发编程实战/* * threadsafe_stack.cpp * * Created on: Nov 30, 2017 * Author: [email protected] * 线程安全的栈 */#include <exception>#include <iostream>#include <mutex>#include <stack>#inclu

2017-11-30 16:18:41 1289

原创 FP风格以及并发的快速排序

这是整理自C++并发编程实战4.12的代码/* * FP_sort.cpp * * Created on: Nov 23, 2017 * Author: [email protected] * FP模式的快速排序以及使用future的并发快速排序 */#include <iostream>#include <list>#include <algorithm>

2017-11-25 13:37:57 376

原创 访问者模式(visitor)c++版本(设计模式完)

这是大话设计模式中的访问者模式的c++版本/* * visitor.cpp * * Created on: Nov 16, 2017 * Author: [email protected] * 访问者模式:表示一个作用于某对象结构中的各个元素的操作。 * 它使你可以在不改变各个元素的类的前提下定义 * 作用于这

2017-11-16 15:24:30 316

原创 解释器模式(interpretr)C++版本

这是大话设计模式中的解释器模式的c++版本/* * interpretr.cpp * * Created on: Oct 26, 2017 * Author: [email protected] * 解释器模式:给定一个语言,定义它的文法的一种表示, * 并定义一个解释器,这个解释器用该表示 * 来解释语言中的句子。 */#inc

2017-11-15 14:52:54 310

原创 享元模式(flyweight)c++版本

大话设计模式中的享元模式的c++版/* * flyweight.cpp * * Created on: Oct 25, 2017 * Author: [email protected] * 享元模式:运用共享技术有效的支持大量细粒度的对象。 */#include <iostream>#include <string>#include <map>using namespac

2017-10-25 18:56:54 281

原创 中介者模式(mediator)c++版本

这是大话设计模式是中的中介者模式的c++版本/* * mediator.cpp * * Created on: Oct 20, 2017 * Author: [email protected] * 中介者模式:用一个中介对象来封装一系列的对象交互。 * 中介者使各个对象不需要显式的相互引用, * 从而使其结构松散,而

2017-10-24 15:00:12 225

原创 职责链模式(chain of responsibility)c++版本

这是大话设计模式中的职责链模式的c++版本/* * chain_responsibility.cpp * * Created on: Oct 17, 2017 * Author: [email protected] * 职责链模式:使多个对象都有机会处理请求, * 从而避免请求的发送者和接收 * 者之间的耦合关

2017-10-19 14:37:01 259

原创 命令模式(command)c++版

这是大话设计模式中的命令模式的c++版本(略微完善了一下比较功能以及展示删除功能,原版只会提示鸡翅不够不能根据不同的材料提出不同的提示且没有展示删除功能)/* * command.cpp * * Created on: Oct 16, 2017 * Author: [email protected] * 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参

2017-10-16 19:45:15 286

原创 桥接模式(bridge)c++版

这是大话设计模式中桥接模式的c++版本/* * bridge.cpp * * Created on: Oct 13, 2017 * Author: [email protected] * 桥接模式:将抽象部分与它的实现部分分离, * 使它们都可以独立的变化。 * 实现指的是抽象类和他的派生类用来实现自己的对象。 *

2017-10-14 15:25:45 365

原创 组合模式(conposite)c++版本

这是大话设计模式中的组合模式的c++版本/* * conposite.cpp * * Created on: Oct 9, 2017 * Author: [email protected] * 组合模式:使得用户对单个对象 * 和组合对象的使用具有一致性。 */#include <iostream>#include <vector>#include <s

2017-10-12 20:26:04 465

原创 备忘录模式(memento)C++版本

大话设计模式中的备忘录模式的c++版本/* * memento.cpp * * Created on: Sep 29, 2017 * Author: [email protected] * 备忘录模式:在不破坏封装性的前提下, * 捕获一个对象的内部状态,并在该对象 * 之外保存这个状态。这样就可以在之后 * 将该对象恢复到保存的状态。

2017-09-30 11:57:35 288

原创 适配器模式(adapter)c++版本

大话设计模式中的适配器模式(adapter)c++版本/* * adapter.cpp * * Created on: Sep 28, 2017 * Author: [email protected] * 适配器模式将一个类的接口转换成客户希望的另外一个接口 */#include <iostream>#include <string>using namespace

2017-09-28 18:33:20 239

原创 状态模式(state)c++版本

此为大话设计模式中的状态模式的c++版本 因为此代码中各个类的相互依赖比较严重,所以加入了头文件将声明放置在头文件之中 state.h/* * state.h * * Created on: Aug 10, 2017 * Author: [email protected] */#ifndef _STATE_H_#define _STATE_H_#include <iostrea

2017-08-10 19:55:08 806

原创 抽象工厂(abstract_factory)c++版

大话设计模式抽象工厂abstract_factory模式的c++版本/* * abstract_factory.cpp * * Created on: Aug 5, 2017 * Author: [email protected] * 抽象工厂模式 * 提供一个创建一系列相关或相互依赖对象的接口, * 而无需指定它们具体的类. * 以数据

2017-08-07 14:24:30 227

原创 观察者模式(OBSERVER)c++

大话设计模式中的观察者模式c++版本/* * observer.cpp * * Created on: Jul 31, 2017 * Author: [email protected] * 观察者模式: * 定义对象间的一种一对多的依赖关系, * 当一个对象的状态发生改变时,所有依 * 赖于它的对象都得到通知并被自动更新 *

2017-08-03 19:00:18 417

原创 建造者模式(builder)c++版本

此为大话设计模式中的建造者模式的c++版本/* * builder.cpp * * Created on: Jul 25, 2017 * Author: [email protected] * 生成器(建造者)模式 * 将一个复杂的对象与它的表示分离, * 使得同样的构建过程可以创建不同的 * 表示. */#include <iostr

2017-07-31 11:58:31 298

原创 外观模式(facade)c++版本

大话设计模式中的外观模式c++版本/* * facade.cpp * * Created on: Jul 25, 2017 * Author: [email protected] * 外观模式 * 为子系统中的一组接口提供一个一致的界面, * 此模式定义了一个高层接口,这个接口使得这 * 一个子系统更加容易使用. */#include

2017-07-25 14:32:15 328

原创 模板方法(template method)c++版本

大话设计模式中的template method c++版本/* * template_method.cpp * * Created on: Jul 24, 2017 * Author: [email protected] * 模板方法 */#include <iostream>#include <string>#include <unistd.h>using nam

2017-07-24 18:41:12 288

原创 原型模式(prototype)c++版本

这是大话设计模式中的原型模式的c++版本/* * prototype.cpp * * Created on: Jul 21, 2017 * Author: [email protected] * 原型模式 */#include <iostream>#include <string>using namespace std;class Resume{public:

2017-07-24 10:58:42 362

原创 工厂方法模式(factory method)c++版本

参考大话设计模式中的工厂方法模式/* * factory_method.cpp * * Created on: Jul 21, 2017 * Author: [email protected] */#include <iostream>using namespace std;//基础操作类,加法类,减法类,乘法类,除法类的父类class Operation{public:

2017-07-21 14:42:56 280

原创 代理模式(proxy)c++版本

这是大话设计模式中的代理模式的c++版本/* * proxy.cpp * * Created on: Jul 20, 2017 * Author: [email protected] * 代理模式 */#include <iostream>#include <string>using namespace std;class Girl{public: Gi

2017-07-20 16:59:21 438

原创 装饰模式(decorator)c++版本

此为大话设计模式decorator的c++版本/* * decorator.cpp * * Created on: Jul 19, 2017 * Author: [email protected] * 装饰模式 */#include <iostream>#include <string>using namespace std;class Person{public:

2017-07-20 09:50:48 331

原创 策略模式c++版本

这是大话设计模式中的策略模式的c++版本//策略模式#include <iostream>using namespace std;enum Cash_type{ NORMALL_CASH = 0, RETURN_CASH = 1, DISCOUNT = 2,};//虚基类cashsuperclass CashSuper{public: //打折函数

2017-07-17 17:19:12 226

转载 在C++程序中如何调用标准C语言编译的动、静态库

在C++程序中如何调用标准C语言编译的动、静态库 前面已经转过一篇文章关于在C++与C程序之间函数互相调用的问题。具体到在使用库函数时,只须在库的头文件上动动小手术便可正常使用一般来说 C语言编写的库只提供标准C接口的头文件有两种方案可使其C++程序中可用1.在引用头文件时将其包含在extern "C" {}中,例如extern "C"{#include //这是C

2017-07-12 14:05:17 639

原创 简单工厂模式的c++版本

研究了一下大话设计模式,顺手吧简单工厂模式的c++版本写出来了,放上来分享一下/*简单工厂模式*by [email protected] 2017年7月11日*/#include <iostream>#include <string>using namespace std;//基础操作类,加法类,减法类,乘法类,除法类的父类class Operation{public: doub

2017-07-11 18:23:25 325

原创 Linux 下 互斥锁的使用

#include <list>#include <mutex>//互斥锁头文件#include <thread>#include <algorithm>#include <iostream>//此list被它下方的some_mutex保护std::list<int> some_list;std::mutex some_mutex;void add_to_list(int new_valu

2017-07-08 11:11:58 860

原创 Ubuntu 基础操作命令

mkdir filename//创建文件夹 rm -rf filename//删除文件夹 sudo nautilus//打开sudo权限的图形界面 touch filename //创建文档重启命令: 1、reboot 2、shutdown -r now 立刻重启(root用户使用) 3、shutdown -r 10 过10分钟自动重启(root用户使用) 4、shutdown ...

2017-07-08 10:59:05 487

转载 PIMPL设计模式的理解和使用

以下两段不同程序的比较 //file a.h#include "a.h"#include “ b.h”class A{void Fun(); B b;}//file:a.cpp#include "a.h" //无形中也引入了b.hvoid A::fun(){ b.fun();//调用类a的fun方法}

2017-07-08 10:42:02 719

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除