- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 Lambda
Lambda1.概述C++11 introduced lambdas,allowing the definition of inline functionality,which can be used as a parameter or a local object. Lambdas change the way the C++ standard library is used.
2017-08-29 19:36:40 388
原创 职责链模式
1.动机(Motivation)(1)在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合。(2)如何在运行时决定来处理请求,从而使两者解耦。2.模式定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的解耦关系。将这些对象连成一条链,并沿着这条链传递请求,知道有一个对象处理它为止。
2017-08-28 21:33:13 338
原创 28muduo_net库源码分析(四)
1.定时器(1)muduo的定时器由三个类实现,TimerId、Timer、TimerQueue,用户只能看到第一个类,其它两个都是内部实现细节(2)TimerQueue的接口很简单,只有两个函数addTimer和cancel(3)EventLooprunAt 在某个时刻运行定时器runAfter 过一段时间运行定时器runEvery 每隔一段时间运行定时器can
2017-08-24 15:28:29 429
原创 27muduo_net库源码分析(三)
1.定时器函数选择1.定时函数,用于让程序等待一段时间或安排计划任务:sleep alarm usleepnanosleepclock_nanosleepgetitimer /setitimertimer_create /timer_settime /timer_gettime /timer_deletetimerfd_create
2017-08-23 20:56:35 421
原创 26muduo_net库源码分析(二)
1.类图2.Channel(1)Channel是selectable IO channel,负责注册与响应IO事件,它不拥有filedescriptor。(2)Channel是Acceptor、Connector、EventLoop、TimerQueue、TcpConnection的成员,生命期由后者控制。3.时序图4.代码EvevtLoop.h
2017-08-23 13:38:56 402
原创 25muduo_net库源码分析(一)
1.TCP网络编程本质TCP网络编程最本质是的处理三个半事件(1)连接建立:服务器accept(被动)接受连接,客户端connect(主动)发起连接(2)连接断开:主动断开(close、shutdown),被动断开(read返回0)(3)消息到达:文件描述符可读(4)消息发送完毕:这算半个。对于低流量的服务,可不必关心这个事件;这里的发送完毕是指数据写入操作系统缓冲区,将由
2017-08-20 21:25:17 403
原创 19muduo_base库源码分析(十)
1.ThreadLocalSigleton类图每一个线程都有一个T类型的单例对象2.代码ThreadLocalSingleton.h// Use of this source code is governed by a BSD-style license// that can be found in the License file.//// Author: Sh
2017-08-20 15:11:13 431
原创 18muduo_base库源码分析(九)
1.线程特定数据(1)在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。(2)在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。(3)但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问。(4)POSIX线程库通过维护一定的数据结构来解决这个问题,这个些数据称为(Thread-specific Data,
2017-08-20 14:08:13 371
原创 17muduo_base库源码分析(八)
1.Singleton类图线程安全Singleton类实现(1)pthread_once(2)atexit(3)typedef char T_must_be_complete_type[sizeof(T) == 0 ? -1 : 1];2.代码Singleton.h// Use of this source code is governed by a
2017-08-20 13:29:35 474
原创 16muduo_base库源码分析(七)
1.ThreadPool类图2.代码ThreadPool.h// Use of this source code is governed by a BSD-style license// that can be found in the License file.//// Author: Shuo Chen (chenshuo at chenshuo dot com)
2017-08-20 12:30:35 378
原创 15muduo_base库源码分析(六)
1.BoundedBlockingQueue(有界缓冲区)BoundedBlockingQueue.h// Use of this source code is governed by a BSD-style license// that can be found in the License file.//// Author: Shuo Chen (chensh
2017-08-19 22:01:00 351
原创 组合模式
1.动机(1)在软件在某些情况下,客户代码过多依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了代码的维护性,扩展性等弊端(2)如何“将客户代码与复杂的对象容器结构”解耦?让对象容器自己来实现自己的复杂结构,从而使得客户代码就像处理简单对象一样来处理复杂的对象容器?2.模式定义将对象组合成树形结构以表示“部分-整体”的层次结
2017-08-12 21:51:15 291
原创 代理模式
1.动机(1)在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者,或者系统结构带来很多麻烦(2)如何在不失去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式。2.模式定义为其他对象提供一种代理以控制(隔离,使用接口)对这个对象访问。
2017-08-06 19:52:09 341
原创 备忘录
1.动机(1)在软件构建过程中,某些对象在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。(2)如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性。2.模式定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到
2017-08-06 16:39:23 333
原创 状态模式
1.动机(1)在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。(2)如何在运行是根据对象的状态来透明地更改对象的行为?而不会为对象操作和状态转化之间引入耦合2.模式定义允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。
2017-08-06 15:59:26 348
原创 iconv命令
[功能] 对于给定文件把它的内容从一种编码转换成另一种编码。 [描述] -f encoding :把字符从encoding编码开始转换。 -t encoding :把字符转换到encoding编码。 -l :列出已知的编码字符集合 -o file :指定输出文件 -c :忽略输出的非法字符 -s :禁止警告信息,但不是错误信息 --verbose :显示进度信息
2017-08-02 21:17:48 692
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人