C++
文章平均质量分 68
shiyicode
已弃用! 可以通过[email protected]联系我
展开
-
c++学习笔记(部分语法及c++11新特性)
前言 c++的语法细节实在过杂,再加上c++11的新特性,看了又忘,忘了再看,故讲学习过程所得以笔记形式记录于此。1. c++对变量初始化的形式 int a = 0; int a = {0}; int a(0); int a{0};//叫做列表初始化 c++11时,才得以全面应用 long double b = 1.02; int a(b); int原创 2015-08-02 17:29:24 · 833 阅读 · 0 评论 -
shared_ptr智能指针模板类的简单实现(c++11)
前言 最近突然萌生把stl常用的库都通通自己过一遍的想法,算是对泛型编程的一次学习,也深入理解stl,还是对c++11知识的练习,就从智能指针开始吧。 另外,c++11让c++程序变得简洁优雅了许多,对这门语言有点爱不释手了。智能指针原理 通过使用引用计数的方式来自动的对动态申请的内存进行释放,保证指针的生存期和安全性。 对智能指针初始化的时候,会将引用计数初始为1,之后每次拷原创 2016-12-11 04:51:52 · 8671 阅读 · 5 评论 -
linux服务器开发之网关服务器的实现
什么是网关服务器 初学linux服务器开发时,我们的服务器是很简单的,只需要一个程序完成与客户端的连接,接收客户端数据,数据处理,向客户端发送数据。 但是在处理量很大的情况下,一台机器不能满足我们的需求,此时我们应该怎么办。 我们可以将服务端的任务分摊到多台机器上完成,见下图 从图中可见,此时整个服务端主要分为了三部分。 网关服务器:负责连接客户端与逻辑服务器原创 2016-12-05 21:50:10 · 8140 阅读 · 2 评论 -
clion配置cmake添加boost库
今天发现xcode在文件名修改之后,该文件内补全就失效,网上寻法多次无果,无奈转向clion。 因为clion的项目构建是基于cmake的,想使用boost等第三方库就需要对其进行配置,故将配置内容保存于此。cmake_minimum_required(VERSION 3.6)#设置项目名称project(demo)set(CMAKE_CXX_STANDARD 11)set(BOOST_ROOT原创 2017-01-01 17:36:57 · 17690 阅读 · 3 评论 -
Boost.Asio网络库之io_service分析
io_service概述几乎绝大多数用到Boost.Asio的代码里都会出现这样一个类:io_service。它应该算是Asio库里的核心类了,其本质是一个任务队列,但又不仅仅是个任务队列。基本结构io_service是个接口类(ps:这里解释一下,这里说接口类并不是指类似java的interface类,而是指其是对下层类做了一个包装,全部功能都是调用下层类来完成)。class io_service原创 2016-12-24 02:44:14 · 1782 阅读 · 0 评论 -
三步实现自动注册工厂替代switch语句(c++)
概述在学长博客里看到了使用自动注册工厂替代switch语句的文章,想到可以将其用到自己的项目里,就照猫画虎学习着也实现了一个。 这里并不是用其替代创建派生类的传统Factory,而是为了替代服务器中的业务逻辑处理。 记得以前实现的第一个服务器项目:聊天室,里面在解包后,是一长串的switch语句,根据包里类型标志,来决定该如何处理,写起来舒服,可看起来,包括后期维护,实在是太不方便,因为想使用自原创 2017-01-01 22:05:00 · 3239 阅读 · 1 评论 -
boost:asio信号量signal_set源码分析及使用
首先我们先看signal_set.hpp,可以看到下面代码#include <boost/asio/detail/config.hpp>#include <boost/asio/basic_signal_set.hpp>namespace boost {namespace asio {/// Typedef for the typical usage of a signal set.typed原创 2016-12-11 18:02:59 · 4998 阅读 · 1 评论 -
boost:asio网络库初学之echo服务器客户端实现
为什么想起来学网络库呢前一阵在网上看到这么一段话 select 实在是太慢了. 在这种背景下, IBM 老大哥带领着MS老弟先搞了 IOCP . 然而开源的人有开源的做法, 在 NIH 综合症的影响下, BSD 的人敢为天下所不齿, 发明了 Kqueue. 同样在 NIH 综合症影响下, Linux 的一群 M* 的猴子捣鼓出了 epoll. 分裂, 让人头疼. 于原创 2016-12-10 18:58:59 · 3595 阅读 · 0 评论 -
C++贪吃蛇
前言 做完俄罗斯方块后,突然不知道干嘛。索性一鼓作气,把贪吃蛇也撸出来。简介 贪吃蛇,c++,qt。 基本的贪吃蛇功能,没什么特殊的。蛇的速度与蛇的长度成正比。同时实现了记分以及暂停的功能。效果图游戏过程效果图实现思路 相比俄罗斯方块,实贪吃蛇的实现容易了许多,主要就是一个蛇的移动问题。 想到蛇的曲折的行进路径,正常第一反应就是去想把那么转向的位置纪录下来。 但仔细原创 2016-04-04 20:03:55 · 3915 阅读 · 2 评论 -
c++类的静态成员踩坑记录
今天在静态成员上踩坑不少,特此记录。c++类的静态成员需要在类内声明,而在类外进行定义,如下class M{public: static int m;};int M::m = 90;int main(){ cout<<M::m;}类内静态常量可以在类内直接初始化,如下,当然也可用上面的方法class M{public: const static int m原创 2015-11-19 21:40:59 · 2771 阅读 · 0 评论 -
C++俄罗斯方块
前言 一个礼拜前想做一个俄罗斯方块小游戏,因为想用c++实现,但又受制于界面,于是苦读了几天的Qt。昨天开工连带一个不眠夜,总算是大功告成,个中滋味,怕是只有自己知道。简介 俄罗斯方块,c++,qt。 功能:常规俄罗斯方块具有的:方块旋转,左移,右移,下落加速,消行,提示下一块样式等等都已实现。同时实现了记分以及暂停的功能。效果图游戏过程效果图暂停效果图游戏结束效果图实现思路原创 2016-04-04 11:41:29 · 15440 阅读 · 9 评论