自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 二叉树的各种非递归遍历

struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};using node = TreeNode;/*先序遍历//根-左-右,修改入栈顺序可以变成 根-右-左,然后将结果逆序,就是后序遍历了。*///先序遍历的第一种写法。...

2018-05-20 02:31:17 211

原创 C++标准库算法 next_permutation

我们从C++参考上找到一个可能的实现。http://zh.cppreference.com/w/cpp/algorithm/next_permutationtemplate<class BidirIt>bool next_permutation(BidirIt first, BidirIt last){ if (first == last) return false;//...

2018-03-28 23:31:02 512

原创 将模板类写在头文件里

如果要将声明和实现,分开,你需要这么做//MyClass.htemplateclass MyClass{public: MyClass(T x); ~MyClass();private: T x;};//MyClass.cpptemplateMyClass::MyClass(T x){}templateMyClass::~MyClass(

2017-11-22 22:02:56 1077

原创 muduo库源码学习(base):WeakCallback

// Copyright 2010, Shuo Chen. All rights reserved.// http://code.google.com/p/muduo///// Use of this source code is governed by a BSD-style license// that can be found in the License file.////

2017-11-14 21:32:08 1459 1

原创 muduo库源码学习(base):LogStream

#ifndef MUDUO_BASE_LOGSTREAM_H#define MUDUO_BASE_LOGSTREAM_H#include #include #include #include // memcpy#ifndef MUDUO_STD_STRING#include #endifnamespace muduo{namespace detail{const

2017-11-14 21:19:21 451

原创 muduo库源码学习(base):Logfile

本文件使用的是C++17版本#ifndef MUDUO_BASE_LOGFILE_H#define MUDUO_BASE_LOGFILE_H#include #include #include namespace muduo{namespace FileUtil{class AppendFile;}class LogFile : noncopyable//文件日

2017-11-14 19:13:51 359

转载 VS2017错误:未将对象引用设置到对象的实例

装完python模块之后运行程序就出现这个错误。网上搜了一堆方法都是改注册表。知乎上有个解决方法:打开--C:\Users\用户名\AppData\Local\Microsoft\VisualStudio\,把文件全部删了,再打开vs就恢复默认配置了,重新设置就ok

2017-11-10 14:50:52 32759 17

原创 muduo库源码学习(base)ThreadLocalSingleton

// 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)#ifndef MUDUO_BASE_THREADLOCALSINGLETON_

2017-11-05 00:41:49 225

原创 muduo库源码学习(base)ThreadLocal

// 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)#ifndef MUDUO_BASE_THREADLOCAL_H#define

2017-11-05 00:34:37 199

原创 muduo库源码学习(base)singleton

/*SFINAE的意思是这样的,假如有一个特化会导致编译时错误(即出现编译失败),只要还有别的选择可以被选择,那么就无视这个特化错误而去选择另外的可选选择。这个示例中,如果我们给传的参数T类型为POD类型,当调用detail::has_no_destroy::value时,T参数会在has_no_destroy类中实例化模板,由于是POD类型,不具备no_destroy方法,不

2017-10-31 22:32:31 443

原创 muduo库源码学习(base)mutex

class MutexLock : boost::noncopyable//最常用的类.就是std::mutex,对应的还是lock_guard和unique_lock{ public: MutexLock() : holder_(0) { MCHECK(pthread_mutex_init(&mutex_, NULL)); } ~MutexLock()

2017-10-31 22:24:14 229

原创 muduo库源码学习(base)FileUtil

class ReadSmallFile : boost::noncopyable{ public: ReadSmallFile(StringArg filename); ~ReadSmallFile(); // return errno template int readToString(int maxSize,//最大的长度 Str

2017-10-31 21:31:03 316

原创 muduo库源码学习(base)Exception

class Exception : public std::exception{ public: explicit Exception(const char* what); explicit Exception(const string& what); virtual ~Exception() throw(); virtual const char* what() const

2017-10-31 21:22:14 227

原创 muduo库源码学习(base)Date

muduo在时间上选择的是tm和timeSpecstruct tm;namespace muduo{//// Date in Gregorian calendar.//// This class is immutable.// It's recommended to pass it by value, since it's passed in register on x64.

2017-10-26 12:07:04 344

原创 muduo库源码学习(base)Thread和CurrentThread

//CurrentThread,定义了一些辅助函数namespace muduo{namespace CurrentThread{ // internal extern __thread int t_cachedTid; extern __thread char t_tidString[32]; extern __thread int t_tidStringLength;

2017-10-26 11:38:02 1204

原创 muduo库源码学习(base)CountDownLatch

#ifndef MUDUO_BASE_COUNTDOWNLATCH_H#define MUDUO_BASE_COUNTDOWNLATCH_H#include "./Condition.h"#include "./Mutex.h"#include namespace muduo{class CountDownLatch : boost::noncopyable//CountDo

2017-10-25 21:42:04 355

原创 muduo库源码学习(base)Condition

#ifndef MUDUO_BASE_CONDITION_H#define MUDUO_BASE_CONDITION_H#include "./Mutex.h"#include #include namespace muduo{class Condition : boost::noncopyable{ public: explicit Condition(MutexL

2017-10-25 14:55:09 204

原创 muduo库源码学习(base)BlockingQueue和BoundBlockingQueue

#include "./Condition.h"#include "./Mutex.h"#include #include #include namespace muduo{templateclass BlockingQueue : boost::noncopyable//为多线程准备的队列{ public: BlockingQueue() : mutex_(

2017-10-25 13:52:52 194

原创 muduo库源码学习(base)AsyncLogging

//前端写缓冲区,2块缓冲,不够就写到容器。后端两块缓冲区,加上一个容器,用于和前端的容器swapclass AsyncLogging : boost::noncopyable{ public: AsyncLogging(const string& basename, size_t rollSize,//log文件临界大小,存下之后超出它的话,则滚动文件

2017-09-28 19:56:56 420

原创 muduo库源码学习(base)Atomic

/*完成原子类型的封装*/templateclass AtomicIntegerT : boost::noncopyable{ public: AtomicIntegerT() : value_(0) { } // uncomment if you need copying and assignment // // AtomicIntegerT(const

2017-09-14 12:44:03 255

原创 使用VS2017的跨平台项目进行linux开发

以编译base为例,基本过程如下:搭建好Linux平台环境,安装boost等,(好像需要拷贝linux下的头文件到windows下,这个忘了)代码里的头文件全部改成“./*.h”(试过不修改代码,但是添加目录的方法全失败了,我也不知道为什么)项目类型选择静态库.a然后。。。。编译通过,如此简单,以至于没什么可写的。接下来像windows一样,使用这个库。过程如下

2017-09-13 17:25:12 11717

C++教程网视频:linux网络编程

Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 ICMP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户/服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信号量 信号量集结构 信号量集函数 信号量示例 31System V信号量(二) 用信号量实现进程互斥示例 32System V信号量(三) 用信号集解决哲学家就餐问题 33System V共享内存与信号量综合 用信号量解决生产者消费者问题 实现shmfifo 34POSIX消息队列 POSIX消息队列相关函数 POSIX消息队列示例 35POSIX共享内存 POSIX共享内存相关函数 POSIX共享内存示例 Linux网络编程之线程篇 36线程介绍 什么是线程 进程与线程 线程优缺点 线程模型 N:1用户线程模型 1:1核心线程模型 N:M混合线程模型 37POSIX线程(一) POSIX线程库相关函数 用线程实现回射客户/服务器 38POSIX线程(二) 线程属性 线程特定数据 39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一个简单的线程池实现 线程池性能分析 线程池实现 网络编程, Linux, 密码

2018-05-15

UML基础、建模与设计实战

UML基础、建模与设计实战。epub格式,请用pdf阅读器打开

2016-12-06

空空如也

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

TA关注的人

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