自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LRU算法实现

LRU C++ 算法#ifndef _LRU_H#define _LRU_H#include <unordered_map>#include namespace tools {template <class KEY, class VALUE>class Lru{public:class Node{public:Node(const KEY&...

2020-03-01 23:39:16 179

原创 5.SQLite面相对象通用封装

1.由来在学习SQLite的时候,发现OC中提供的API是面向过程的方式,如果在开发中用到,那么每次都会重复的去走这个流程,打开数据库,执行sql,细节上的处理等。于是就在sqlite3的基础上,进行了通用封装,在以后的开发中直接使用即可,提高开发效率。 源代码托管:2.注意该封装只是针对通用的接口和使用方式,使用起来也比较简单,sql语句,数据类型,数据值即可。 1.默认表的第一列为主键,创建

2015-12-27 15:39:22 458

原创 4.日志组件

1.造轮子的过程 在开发过程中,已经有现成的日志组件了,可以直接使用,但在平时自己开发的一些工具时,并不能直接使用公司现有的日志库。所以就开始自己造轮子,并集成到自己的代码库中去,方便以后复用,提高开发效率。 在开发过程中,复用了很多以前的代码,如模板队列等,所以有自己的代码库是很重要的一件事。2.由于该组件实现比较简单,只实现了文本日志,如数据库日志,网络日志等均未实现,但可以在现有模块进行扩

2015-12-25 21:03:30 468

原创 4.OC仿写知乎客户端

1.代码托管2.最近用OC仿写了知乎的客户端,内置的所有数据都是静态的,后面试一下,看能不能通过抓包,获取知乎和后台的交互协议。源码放在GitHub上,适合新手可以参考下。实现了第一层次的页面, 由于代码较多,全部通过代码的方式布局,直接上效果图吧3.运行效果消息的第一个页面: 发现-推荐 页面 发现-热门 页面 发现-收藏 页面 消息-通知 页面 消息-赞与感谢 页面

2015-12-25 12:04:17 441

原创 3.网络代理组件

网络代理组件 1.方案结构说明1.1当前方案 图1每个业务模块需要单独维护自己的连接,包括心跳,重连,接收,发送4个线程,数据处理模块,当遇到新的业务时,需重复上面5个步骤。1.2组件实现方案 将业务层和通信层分开,采用通信代理的方式,业务层只需要向通信代理注册通信请求即可,由通信代理统一对所有的通信进行数据交互,数据投递,心跳维护,重连等,当新增业务时只需要

2015-12-17 15:31:36 474

原创 3.OC中三种线程方式总结

1.说明开始看的时候还是蛮排斥的,认为OC中的线程封装的不灵活,现在不这样认为了。C++服务器中多线程:多为提高程序的性能,并发行,或者在结构上进行任务分离,解除业务之间的耦合性,每个线程相当于一个批处理器,对大量相同协议的数据进行处理。生存周期很长,当数据交叉的时候,会涉及到大量的线程同步。OC中多线程:以任务为单位,将耗时的操作交给其他线程,不阻塞当前线程,所以生存周期也在任务

2015-12-16 10:42:15 714

原创 1.ARC

1.简介 该部分笔记总结自《Object-C高级编程》和《疯狂iOS讲义》2.ARC是通过引用计数来实现一种引用计数的方式。 将对象分成4个状态,生成,持有,释放,废弃。方式如下: 生成并持有对象 alloc/new/copy/mutableCopy等方法 持有对象 retain 释放对象 release

2015-12-14 21:48:43 339

原创 2.GCD多线程整理

说明:该整理自《Object-C高级编程》1.任务队列Dispatch Queue:FIFO结构的任务队列,等待线程处理,分成串行和并行两种模式。串行为单线程(同时被处理的任务只能有一个),并行为多线程,可以有多个任务被同时处理。用户职能操作队列,而不能操作线程。貌似并没有提供限制最大线程数量接口API。serial dispatch queue:用在多个线程想更新相同的数据资

2015-12-14 21:31:21 360

原创 2.模板线程池

1.说明 接触多线程已经有较长一段时间了,在工作中也经常用到多线程线程池等,于是打算写一个通用的模板类,方便以后的调用。当开始写的时候,我觉得这应该比较easy,能够很快的实现。而在写的过程中才发现不是那么容易。 这篇文档有模板的相关内容:http://blog.csdn.net/lqk1985/article/details/3136364 1、首先考虑到的是通用性,怎样让这个多线程通用呢?

2015-07-03 11:38:25 642

原创 1.最小堆实现

1.说明 现在开始注重编写一些公共的库,方便自己以后复用,为了提高复用性,采用了模板的方式,同时将这些库发布出来,供大家参考,如有问题或意见请发邮件[email protected].最小堆 至于最小堆的思想,原理等再此就略过吧,结构很简单就不画UML了,简单说明下: MinHeap.h:最小堆基类,对外部提供接口,方便以后扩展,如采用二叉树形式等 MinHeapArray.

2015-06-26 14:15:07 498

原创 0.设计模式思想

1.说明 该篇不涉及具体的设计模式,而是对相关编程思想的总结,而具体的设计模式也是在该思想下的具体补充和实现。所以设计思想可以说是设计模式的灵魂。 而在开发的过程中,因为业务逻辑等不同,可能会和相关思想冲突,所以要做到尽量满足,而不是刻板遵守。2.单一职责模式 就一个类而言,应该仅有一个引起它变化的原因 如果一个类职责过多,就等于把这些职责耦合在一起,一个职责的变化,可能会削

2015-06-26 13:44:07 578

原创 16.中介者模式

1.说明 请参见第一章节 2.中介者模式简介 中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各个对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 注意:很容易在系统中应用,也很容易误用。当系统出现了“多对多”交互复杂的对象群时,不要急于使用中介这模式,而要反思这个模式是否合理。 中介这模式优缺点:mediator的出现减少了各个对象的耦合,使得可以

2015-06-25 13:55:47 303

原创 15.职责链模式

1.说明 请参见第一章节 2.职责链模式说明 职责链模式:是多个对象都有机会处理请求,避免请求发送者和接受者之间的耦合。将这个对象形成一条链,并沿着这条链传递请求,直到一个对象处理他为。就终止上传请求的客户端并不知道这当中的哪一个对象最终处理这个请求,这样系统的更改可以在不影响客户端的情况下动态地重新组织和分配责任。 好处和缺点:接受者和发送者都没有对方的明确信息,且链中的对象不知道链的结构

2015-06-24 16:21:19 396

原创 14.命令模式

1.说明 请参见第一章节 2.命令模式说明 命令模式:将一个个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销操作。 甚至可以将实现者进行分离,来实现业务分离,松耦合 优点: 1.能比较容易地设计一个命令队列。 2.在需要的的情况下,可以比较容易地将命令记录日志。 3.允许接受请求的一方决定是否要否决请求。

2015-06-21 23:41:12 367

原创 13.桥接模式

1.说明 请参见第一章节 2.桥接模式说明 桥接模式:将抽象部分与它的实现部分分离,使他们都可以独立的变化 使用范围:在多个系类族中,每个族都在互相变化,一个族的变化,会影响到其它族的变化。那么这时候可以使用桥接模式,来实现 抽象与实现的分离:并不是说抽象类与其派生类分离,实现指的是抽象类和它的派生类用来实现自己的对象关于对象继承:继承在编译阶段就定义好了,所以无法在运行时改变从父类继承的

2015-06-19 09:33:23 394

原创 12.组合模式

1.说明 请参见本文第一章 2.组合模式说明 组合模式:将对象组合成树形接口以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象具有一致性。 为了保持整体和局部的一致性,整体和局部具有相同的接口,从而避免判断该节点是整体还是局部。接口可以实现为空。 使用范围:在需求中体现部分与整体的层次的接口时,以及你希望用户忽略组合对象与单个对象的不同,同一地使用组合接口中的所有对象时,

2015-06-18 20:22:53 304

原创 11.备忘录模式

1.说明 请参阅第一篇文章 2.备忘录简介 备忘录:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后可以将该对象回复到保存时刻的状态 适用范围:适用于功能复杂,需要维护和记录属性的历史数据,需要保存的属性只是众多属性中的一小部分。使用备忘录模式可以将复杂的内部对象信息构建屏蔽起来 缺点:如果数据较多,消耗的内存资源相对也会比较多。

2015-06-18 14:18:41 351

原创 10.适配器模式

1.说明 请参见本文第一章 2.适配器模式说明 适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 通俗:需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是就采用适配器来适配它。 系统的数据和行为正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主

2015-06-15 14:54:38 396

原创 9.观察者模式

1.说明 请参阅该系列第一篇文章。 2.观察者模式说明 观察者模式:定义了一种一对多的关系,让多个观察者对象监听某一主题对象,这个主体对象发生改变时,会通知观察者对象,使他能够自动更新自己 特点:将一个系统分割成一系列相互协作的类是一个很不好的副作用,那就是需要维护相关对象的一致性,我们不希望为了维护类的一致性而使类紧密耦合,这样会给维护,扩展,重用带来很多不便。 使用场景:当一个对象的改

2015-06-11 17:19:52 370

原创 8.建造者模式

1.说明 请参阅本系列第一章节 2.建造者模式说明 构造者模式:将一个复杂的构建与它的表示分离,使得同样的构建过程,可以创建不同的表示。即生成具有不同内部表象的产品对象。在使用的时候,用户只需要知道构建的对象就行了,而不需要知道构建的细节。客户端通过调用指挥者的接口,来控制构建过程,使得能够隔离用户的构建过程 注意事项:指挥者的构建过程必须足够普遍,以此来构建不同的具体的对象。如果这些构建的

2015-06-10 21:34:20 391

原创 7.模板方法

1.说明 请参阅第一章。 2.模板方法模式说明 模板方法模式:定义了一个操作算法的骨架,而将这些算法的实现延迟到子类,使得可以不改变一个算法的结构,而可以重定义某些特定的实现步骤。 继承的意义:在多个子类的重复都应该提炼到父类中去。 模板方法使用范围:当要完成某一细节层次一致的一个过程或一系列步骤时,但其个别步骤在更详细的层次上有不同的实现时,我们通常采用模板方法来处理。 优点:模板方法

2015-06-08 20:56:26 392

原创 6.原型模式

1.说明 请参阅本文第一章 2.原型模式说明 原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 通俗说话:创建一个和原来一模一样的对象,减少代码中使用动态来new的方式,并且不用知道任何的创建细节 3.UML 4.代码 //个人信息类,通过不同的数据类型来测试原型模式中的复制状况 //当原型中的为指针类型时,为浅复制,其余均为深复制,且会调用复制构造函数 //

2015-06-07 22:46:00 385

原创 5.代理模式

1.说明 请参阅第一篇文章 2.代理模式简介 代理模式:为其它对象提供一种代理,以控制对这个对象的访问。 代理者和被申请代理的对象二者应该有相同的接口,或者是申请代理者的接口是代理者接口的子集,因为可以代理多个对象。 代理的模式有: 远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 虚拟代理:根据需要创建开销很大的对象,通

2015-06-06 21:36:44 316

原创 4.策略模式

1.说明 请参见该系列文章第一章 2.策略模式说明 本质:根据client的需求,调用不同的算法实现,算法经常变更的场所。 通俗:客户为满足不同的场景,预定义了不同的算法,在不同的环境下进行算法切换。达到相同的目的 注意点:由于定义了不同的算法,所以client在使用的时候,会进行判断的方式进行初始化,那么在这个地方其实是可以增添简单工厂模式,将判断的逻辑疲敝起来,client只需要传入条

2015-06-05 15:46:54 348

原创 3.抽象工厂模式

1.说明 请参阅第一篇文章 2.抽象工厂模式说明 抽象工厂模式:提供了一个创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类。 通俗:为创建不同的产品,或相同产品的不同型号,使用了不同的具体工厂来生产。 例如:富士康代工的有苹果的MAC,有IPhone,而华为代工魅族,nexus等。每个工厂可以有不同的产品,而这些产品可以进行可以进行抽象,工厂也可以进行抽象,所以就叫抽象工厂模式

2015-06-03 21:12:22 341

原创 2.工厂方法模式

1.说明 请参见《简单工厂模式》,此处略。 2.工厂方法模式说明 工厂方法模式:定义了一个用于创建对象的接口,让子类决定实例化哪一个类,使得类的实例化延迟到其子类。 3.与简单工厂模式比较 1.简单工厂模式可以根据传入条件生成多个产品,而工厂方法模式每个工厂只生产一个产品,所以需要多个工厂。 2.简单工厂是根据条件来判断并生成产品,而工厂方法模式是直接初始

2015-06-02 20:54:38 361

原创 1.简单工厂模式

1.说明 设计模式笔记开篇,在该系列笔记中,多参考和归纳与《大话设计模式》和《设计模式可复用面向对象软件的基础》,如果有侵权的嫌疑请以邮件通知我([email protected])以便及时撤下该系列文章。 该系列文章将遵循以下风格,模式说明,应用举例(选择),代码UML图,代码。文中代码在linux g++方式均编译通过并可执行。如有读者未执行通过,请在评论区留言,以便及时修

2015-06-01 23:29:40 410

原创 自写简化版std::string

题记初略一算,学习C++也有那么久了,平时也写代码。但时常会因为一些基础的问题困惑,于是百度,google等。于是决定,详细的学习C++,梳理。以下为C++的std::string 简化版,功能很简单。参考:C++ primer 第三版注意点:1、在operator =(string& str), 不需要判断str是否为空。但是需要判断str是否和当前str相等。2、返

2014-11-30 21:55:28 538

原创 linux 关于线程不安全函数localtime小记

线程安全函数这个问题已经不是第一次遇到了,上次是inet_ntoa,这次是localtime,幸好有了意识,然后能够快速锁定。不知道为什么linux会有这种不安全函数。他们的几种表现在多次调用相同函数返回的值相同,或者和预期的值不同,存在覆盖的现象。或者在多线程的环境下,出现乱码等。    而他们对象的线程安全函数在后面加上 后缀_r

2014-11-12 22:44:12 1812

原创 模板类多线程(可直接使用)

static void* run(void* arg){ testclassB* res;while (1){res = cthreadpool::getinstance()->get_workres(0);if (res != NULL){res->get_res();dealnum++;res->get_res();delete

2014-11-11 22:12:18 1100

原创 C++内存池

这几天先来wu

2014-11-10 20:23:32 722

空空如也

空空如也

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

TA关注的人

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