说明
类别名可以随便取。
类别是一个类,它是添加了新功能的现有类。
使用类别就是为了能够为现有类添加新的方法,不用继承该现有类,就可使用现有类的对象调用添加的方法了。
类别可以使类的实现分散在多个文件中。
类别中不能有变量,类别中没有放变量的位置。
如果类中的方法和类别中的方法名称相同,这将造成冲突,类别的方法将完全取代类的方法。
同一个类的不同类别声明了相同的方法,这将导致不稳定,哪个方法会被调用是不确定的。
不建议在类别中覆盖类中的方法,因为在类别中的方法不能调用superClass的方法(因为没有元数据支持)。
类别方法不能覆盖于同一个类的其它类别中的方法。因为无法预知他们的加载优先顺序,就可能在编译时出错。
对类库的类别方
继续阅读 »
项目的socket短连接服务, 采用的是MVC模式, 玩家的某个功能对应的就是一个Model, 每个Model之间数据是独立的, 当然这些Model是继承于一个父类.
对数据的操作都是在实现的Model里进行, 对数据的保存操作(save)我们都建议是在Controller里进行的, 这么做的好处是显而易见的, 玩家各个功能之间数据安全性得以保证, 同时也保证在某个功能产生bug的时候, 各数据之间互相不污染.
比如一个连接进来了, 可能会涉及多项Model的数据更改和保存. 在Controller里, 可能会有多行对应各功能Model的 obj.save()操作:
继续阅读 »
建议:函数调用的时候,调用方传给被调用方的参数,如果在调用之后还会被修改,那么调用方应该给被调用方传一个当时的拷贝,深拷贝,否则将会导致潜在的bug:
可能被调用方是异步执行的,如果调用函数之后,参数发生了修改,那么被调用方执行的时候,看到的就是被修改之后的数据,这将导致严重、隐蔽、非必现的BUG,而这种BUG是最让人头疼的
可能被调用方会修改传入的参数,这就导致函数执行完毕之后,调用方看到的数据发生了非预期的变化,这同样会导致严重、隐蔽的BUG
继续阅读 »
这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。
1 如何打印更易读的类
不推荐方式
```python
class Point(object):
def init(self, x, y):
self.x = x
self.y = y
继续阅读 »
这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。
1 排列组合
示例程序:
```python
!/usr/bin/env python
coding=utf8
import itertools
继续阅读 »
写在前面
计划是每月读 5-10 本书,书籍类型大概是三个方面的:金融,技术,创业。之所以选择这三个方面,一方面是因为自己对这三个方面都很有兴趣,其次是被 linkedin 创始人 Hoffman 的 ABZ 理论 深度影响。建议大家都看看 abz 理论那篇文章,如果我有空,也会整理一些常用的这类理论模型到博客里的。
继续阅读 »
啥都不说, 直接先来一张效果图......
小伙伴们,别急,咱们先来分析一下主要功能点:
图片预览
图片拖拽
图片缩放
图片裁剪
图片预览
图片预览的功能技术方案是将用户的图片文件转成Base64编码并设置到标签的src属性,获取图片文件的Base64编码需要通过HTML5的新特性FileReader,具体代码如下:
js
getImgBase64: function(imgFile, cb){
if(!window.FileReader){
alert('系统暂不支持针对你的浏览器的文件上传功能,建议使用最新版的Chrome!');
return false;
}
var reader =
继续阅读 »
这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。
1 如何创建指定长度且有特定值的list
不推荐方式
```python
list1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print list1
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
```
继续阅读 »
在几个月之前,我已经写过一篇使用gradle构建android项目的博客了http://blog.isming.me/2014/05/20/android4gradle/,那篇文章已经介绍了如何使用gradle进行项目构建,以及为谷歌会推荐使用gradle。当时android的gradle插件是0.11.0,现在插件的版本已经是0.14.3了,对于一些老的方法和api,有一些已经被移除,无法使用。因此有必要再写一篇博客介绍这些被移除的部分和替代方案。同时由于个人学识原因,当时没有介绍的一些技巧,其他功能,也会在本文中进行介绍。
more
和上一篇文章相比不兼容的地方
没有看过我另一篇文章的,建议去看一下。
以下这些属性改名
继续阅读 »
这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。
1 lambda
```python
!/usr/bin/env python
coding=utf8
add = lambda x, y : x + y
print add(1, 2)
3
继续阅读 »