Swift提供两种方法来解决强引用环:弱引用和无主引用。
弱引用和无主引用允许引用环中的一个实例引用另外一个实例,但不是强引用。因此实例可以互相引用但是不会产生强引用环。
对于生命周期中引用会变为nil的实例,使用弱引用;对于初始化时赋值之后引用再也不会赋值为nil的实例,使用无主引用。
弱引用
弱引用不会增加实例的引用计数,因此不会阻止ARC销毁被引用的实例。这种特性使得引用不会变成强引...
分类:
其他好文 时间:
2014-06-08 17:48:05
阅读次数:
204
#include
#include
#include
using std::cout;
using std::endl;
int main(void){
//使用默认种子值产生随机数,每次产生的都一样
cout << rand() << " " << rand() << " " << rand() << endl;
//使用新种子产生随机数,每次都不一样
...
分类:
编程语言 时间:
2014-06-08 17:26:30
阅读次数:
215
@前面的文章讲到,在Block中用到self(self特指UIViewController),需要用__block或者__weak修饰(MRC与ARC的区别),因为Block调用会对其里面的对象引用计数加1,如果你不确定你调用的Block是否会产生循环引用的话,最好用__block或__weak修饰.当然,如果你确定并不会产生循环引用的情况,那你可以放心的self. self. (~O(∩_∩)...
分类:
其他好文 时间:
2014-06-08 16:34:27
阅读次数:
215
对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称 作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。伪随机数的选 择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种...
分类:
其他好文 时间:
2014-06-08 15:29:23
阅读次数:
215
以前用MySQL数据库,整天都是写大堆大堆的SQL语句,要记住这些SQL关键字都要花好几天时间,写的蛋都爆了,当接触到MongoDB的时候,发现不用写SQL,瞬间觉得高大上,瞬间产生了学习使用它的冲动。
1.MongoDB简介
MongoDB是一种强大,灵活,可扩展的数据存储方式。它扩展了关系型数据库的众多有用功能,如辅助索引,范围查询和排序。MongoDB的功能非常丰富,比如...
分类:
数据库 时间:
2014-06-08 15:17:42
阅读次数:
291
对于诸多行业客户,在平时工作实践中,会产生大量的财务数据、交易数据,以及基于这些数据的计算过程和结果。如何将此类数据的采集、编辑、加工、汇总、整理、存储、产生分析报告,得到有效信息,工作量极大,人工成本昂贵,并且繁琐,存在风险。如果客户的工作报告生成系统为人工制作,操作风险会比较高,数据需人工采集编辑,未来产品数量和数据爆发式增长,现有制作报告人力会面临制作时效较长、缺失系统管理、无法有效完成报告查询定位等风险,间接影响客户服务体验。基于此,构建一个行业客户工作报告生成配套管理系统,从报告的出生到接触到最终...
分类:
其他好文 时间:
2014-06-08 15:07:56
阅读次数:
215
编译抽象语法树
对大多数开发人员来说,编译就意谓着产生本地代码,给人感觉就是一个字,难。但是,并不一定要产生本地代码,对于 DSL,通常产生其他更加通用的编程语言。.NET 框架提供几个把抽象语法树编译成程序的功能。
技术的选择取决于几个因素。例如,如果语言针对的是开发人员,那么,生成文本文件就足够了,内容可以是 F#,也可以是其他语言,或者是编译过的程序集,能在程序中使用;然而,如果针...
分类:
其他好文 时间:
2014-06-08 14:43:58
阅读次数:
213
一 问题的产生 当构造测试用例的数据,是在函数内部被另一个外部函数所使用时,我们需要忽略外部函数所带来的影响。 需要进行“打桩”,举一个具体的例子 class DataGetter {
public:
...
bool Run();
...
private:
...
Client* m_ptr_client;
...
};
.....
.....
b...
分类:
编程语言 时间:
2014-06-08 10:12:42
阅读次数:
755
随机数的事
总结随机数的那点事,不断总结中......
1.产生一个随机数
srand(time(0));
x=rand();//0~RAND_MAX-1
2.生成一个[a,b]之间的随机数
x=rand()%(b-a+1)+a;
3.以概率为Px%,Py%,Pz%(Px、Py、Pz均为整数且Px+Py+Pz=100)生成三个随机数
// This functio...
分类:
其他好文 时间:
2014-06-08 09:05:21
阅读次数:
304
背景:
在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务。
发展:
基于如上需求,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于...
分类:
其他好文 时间:
2014-06-08 08:18:05
阅读次数:
238