<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Mask53的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Mask53</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Mask53]]></copyright><item><title><![CDATA[我的程序员生涯]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/111032563</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/111032563</guid><author>Mask53</author><pubDate>Fri, 11 Dec 2020 16:36:31 +0800</pubDate><description><![CDATA[写文章的目的：1.今年30岁了，记录一下过去几年的生涯。

            2.如果能给看到的程序员兄弟一点点启发也算有点意义了。

背景：2013年毕业于某普通一本院校计算机专业，家贫无依。

现状：有了善解人意的妻子，聪明可爱的孩子，几家互联网公司，全国新一线几套房子，还是对这个世界充满希望，依旧心怀感恩。

过程：我分为两个阶段讲述，1.进阶CTO篇。2.创业实践篇。（这两个阶段的策略完全不同的）

                 ...]]></description><category></category></item><item><title><![CDATA[设计模式之命令模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/50724812</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/50724812</guid><author>Mask53</author><pubDate>Tue, 23 Feb 2016 18:45:18 +0800</pubDate><description><![CDATA[命令模式是一种很巧妙很强大的设计模式，比如常见的操作系统里面的消息队列等消息发送机制都用到了命令模式，良好的命令模式设计主要解决以下两点，1，命令发起者和命令发送方式的耦合度（即命令发起者可以有不同的命令发送方式），2.命令发送方式与命令的耦合度（即每种命令发送方式可以发送任何类型的命令）。我这示例的命令发送方式用消息队列实现，这也是最常见的一种方式。]]></description><category></category></item><item><title><![CDATA[设计模式之适配器模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/50237673</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/50237673</guid><author>Mask53</author><pubDate>Wed, 09 Dec 2015 16:44:03 +0800</pubDate><description><![CDATA[上篇我们讲了代理模式，这篇我们来聊聊适配器模式，适配器模式也是种使用较频繁的设计模式，应用于以下场景，比如A之前访问B，但是有一天B升级了，提供的外部接口方法名变了，这时为了A任然能用旧接口名访问B，我们就给B添加一个包装类C，C对外提供的访问接口名和B的旧接口名一样，这样A就访问C，然后C再访问B。有点类似于代理模式都是增加中间层来解耦合，但是代理模式是为了让C和B的任何对外接口一致，实现A访问B相比A访问C感觉不到差异，而不是兼容旧接口。]]></description><category></category></item><item><title><![CDATA[设计模式之代理模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/50018745</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/50018745</guid><author>Mask53</author><pubDate>Wed, 25 Nov 2015 20:55:58 +0800</pubDate><description><![CDATA[上篇我们讲了组合模式，这篇咱们来聊聊代理模式，代理模式的应用场景很多，代理模式的本质就是将原对象隐藏起来，构造一个和原对象相同父类的代理对象，对外的功能接口也和原对象保持一致，外部程序只需要调用代理对象的接口即可，然后具体实现再由代理对象去调用原对象接口。这样就完全将原对象隐藏和保护起来了，当然，代理对象还可以针对不同权限的外部程序提供对原对象不同的访问权限。]]></description><category></category></item><item><title><![CDATA[设计模式之组合模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49640689</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49640689</guid><author>Mask53</author><pubDate>Wed, 04 Nov 2015 17:30:46 +0800</pubDate><description><![CDATA[组合模式是一种对象结构型模式，一般用于树型结构中，其本质是定义一个抽象组件类，该组件既可以代表叶子对象也可以代表容器对象（容器可以包含叶子和容器），使用时无需知道操作对象是叶子还是容器，实现对容器和叶子的无差别化操作。对子容器的节点操作时，本质上使用了递归遍历。]]></description><category></category></item><item><title><![CDATA[设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49466165</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49466165</guid><author>Mask53</author><pubDate>Wed, 28 Oct 2015 11:31:49 +0800</pubDate><description><![CDATA[上篇我们讲了策略模式，这篇我们再来聊聊观察者模式，观察者模式也是一种应用广泛的设计模式，比如一些树型结构的游戏引擎，父节点和子节点的联动等。观察者模式的本质就是建立目标对象和观察者对象之间一对多的依赖关系，当目标对象状态发生改变时，观察者对象的状态也自动随之改变。]]></description><category></category></item><item><title><![CDATA[设计模式之策略模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49444241</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49444241</guid><author>Mask53</author><pubDate>Tue, 27 Oct 2015 10:05:56 +0800</pubDate><description><![CDATA[上篇我们讲了迭代器模式，这篇我们再来讲一下使用率很高的策略模式，策略模式的本质就是实现算法的复用，将环境调用中的算法抽象出来单独为类，环境调用就只调用算法的抽象类，要添加或修改算法时就只修改算法的具体类就可以了，不影响环境类，符合开闭原则，非常方便。]]></description><category></category></item><item><title><![CDATA[设计模式之迭代器模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49421861</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49421861</guid><author>Mask53</author><pubDate>Mon, 26 Oct 2015 14:38:52 +0800</pubDate><description><![CDATA[上篇我们讲了外观模式，这篇我们再来看看迭代器模式，这也是一种使用频率很高的模式。通常的数据存储聚合类中，既包括数据存储的功能又包括对这些数据遍历的功能，而要修改聚合类，既得修改数据存储又得修改遍历功能，非常繁琐，也不符合单一职责原则。迭代器模式的核心思想是将数据存储和数据遍历分开，让数据遍历的方法单独组成一个迭代器的类，基本架构：一个抽象聚合类（包括数据存储和抽象遍历类），一个具体聚合类（包括数据存储和具体遍历类），一个抽象遍历类，一个具体遍历类。这样当我们有新的产品需求如添加一个新的具体聚合类的时候，我们]]></description><category></category></item><item><title><![CDATA[设计模式之外观模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49301649</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49301649</guid><author>Mask53</author><pubDate>Wed, 21 Oct 2015 11:29:42 +0800</pubDate><description><![CDATA[由以上看出外观模式本质上是在外部调用和内部子系统直接增添了一个中间层Facade类，由该类来代为调用内部子系统方法，而外部调用不需要了解内部系统的细节。传统调用方式和外观模式调用方式就好比自助餐饭店和普通饭店点餐的区别，自助餐饭店要自己知道饭菜放在房间哪个位置，要吃什么菜都得自己去一个个拿。而普通饭店不需要知道饭菜放在哪里，要吃什么只需要通知服务员就可以了，然后服务员去拿。这个服务员角色就类似于外观模式中的Facade类。]]></description><category></category></item><item><title><![CDATA[设计模式之单例模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49279843</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49279843</guid><author>Mask53</author><pubDate>Tue, 20 Oct 2015 18:01:17 +0800</pubDate><description><![CDATA[在上面我们可以看到经典单例模式的构造过程：首先要该类不被其他外部调用实例化，就要将构造函数设为私有权限，然后又通过公共的静态方法来实例化这个类，返回实例化后的对象的指针，然后通过内部私有指针mInstance来保存这个返回的指针，这样我们就可以使用这个类了。但是怎么来保证这个实例的唯一性呢？我们在静态方法getInstance()中要先判断，如果mInstance是为NULL的（mInstance要初始化为NULL），那么我们才实例化这个类。]]></description><category></category></item><item><title><![CDATA[设计模式之抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49272777</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49272777</guid><author>Mask53</author><pubDate>Tue, 20 Oct 2015 09:58:03 +0800</pubDate><description><![CDATA[由以上可以看出抽象工厂模式和工厂方法模式最大的不同是在抽象工厂模式中，一个工厂里可以生产多个产品，而在工厂方法模式中一个工厂就只能生产一种产品。可能有些人觉得这抽象工厂模式和简单工厂模式不就差不多了吗？ 我们再来看看抽象工厂模式和简单工厂模式的区别：首先简单工厂模式是没有多态工厂的实现的，也就是说简单工厂模式没有工厂基类。其次简单工厂模式的工厂里生产的产品可以是任意产品，没有产品族的概念。而抽象工厂模式里同一个工厂生产的产品是属于同一产品族的，一般来说这些产品的种类几乎是稳定不变的，所以不会频繁改变一个工厂]]></description><category></category></item><item><title><![CDATA[设计模式之工厂方法模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49253009</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49253009</guid><author>Mask53</author><pubDate>Mon, 19 Oct 2015 18:36:47 +0800</pubDate><description><![CDATA[上篇我们讲了简单工厂模式，也提到了简单工厂模式的缺点，这篇我们来讲一下工厂方法模式，而工厂方法模式在一定程度上避免了简单工厂模式的那些缺点，废话不多说，上代码咯。]]></description><category></category></item><item><title><![CDATA[设计模式之简单工厂模式]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/49252345</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/49252345</guid><author>Mask53</author><pubDate>Mon, 19 Oct 2015 18:09:22 +0800</pubDate><description><![CDATA[最近有点空闲，就总结一下编程中遇到的设计模式吧，也算是增强一下记性。
首先我们说一下工厂模式，这个工厂模式呢，又分为简单工厂模式、工厂方法模式（多态工厂模式）、抽象工厂模式这三种，这三种我都会陆续讲到。]]></description><category></category></item><item><title><![CDATA[游戏中添加google内购]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/24887591</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/24887591</guid><author>Mask53</author><pubDate>Fri, 02 May 2014 21:49:16 +0800</pubDate><description><![CDATA[google官方教程：http://developer.android.com/training/in-app-billing/index.html


这个教程主要写了四节：


第一节：Preparing Your In-app Billing Application(准备你的内购应用)


内容如下：


1.下载例子程序，按照提示的做OK的，可以把项目trivial]]></description><category></category></item><item><title><![CDATA[cocos2dx 嵌入Android webview]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/22277943</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/22277943</guid><author>Mask53</author><pubDate>Thu, 27 Mar 2014 11:51:01 +0800</pubDate><description><![CDATA[在2dx界面中嵌套加载显示一个webview，最简单的用法就是直接在一个WebView控件中显示，外加设置了一些简单的属性，可以自定义这个webview的大小。
java代码如下：
public class bxWebview extends Cocos2dxActivity {

	static WebView m_webView;
	static bxWebview majiang = n]]></description><category></category></item><item><title><![CDATA[cocos2dx Android获取Mac地址]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/22205741</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/22205741</guid><author>Mask53</author><pubDate>Wed, 26 Mar 2014 20:27:39 +0800</pubDate><description><![CDATA[在cocos2dx开发中，我们想获得手机的Mac地址，而目前Android平台下只有java层代码能直接获取Mac地址，如果有朋友问如果在C++代码中要使用Mac地址该怎么办呢？
很简单，又是强大的JNI机制，思路就是先在java层获取Mac地址的字符串，然后传到C++层。
实现如下：
一、java层的东东：

	public static String getMacID()
	{
		]]></description><category></category></item><item><title><![CDATA[Linux学习杂记一]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/20065201</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/20065201</guid><author>Mask53</author><pubDate>Thu, 27 Feb 2014 18:53:23 +0800</pubDate><description><![CDATA[一些学习Linux过程中的个人理解.......]]></description><category></category></item><item><title><![CDATA[Linux 学习之编译安装Apache]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/20065013</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/20065013</guid><author>Mask53</author><pubDate>Thu, 27 Feb 2014 18:47:30 +0800</pubDate><description><![CDATA[Linux编译安装Apache的过程详细解读......]]></description><category></category></item><item><title><![CDATA[cocos2dx 监听Android返回键、菜单键等]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/19998797</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/19998797</guid><author>Mask53</author><pubDate>Wed, 26 Feb 2014 20:32:38 +0800</pubDate><description><![CDATA[cocos2dx游戏开发中，在Android平台下，监听Home键、返回键、Menu键的详细实现方法......]]></description><category></category></item><item><title><![CDATA[cocos2dx Android游戏截屏分享]]></title><link>https://blog.youkuaiyun.com/Mask53/article/details/19996061</link><guid>https://blog.youkuaiyun.com/Mask53/article/details/19996061</guid><author>Mask53</author><pubDate>Wed, 26 Feb 2014 19:55:37 +0800</pubDate><description><![CDATA[cocos2dx开发中，屏幕截图并保存，上传分享过程详细解读.......]]></description><category></category></item></channel></rss>