No Silver Bullet - Essence and Accidents of Software Engineering 这篇文章首先是介绍了软件工程要面临的固有的不可避免的问题,主要是复杂性,软件整合,可变性和不可见性。文章中强调由于软件的复杂性本质,而使真正的银弹并不存在;所谓的没有银....
分类:
其他好文 时间:
2014-11-13 12:29:07
阅读次数:
163
Silver bullet软件开发的适应性和易变性使得开发过程变得异常复杂。面对不停的需求变化,开发人员必须根据需求来更改工程,有时这样的更改会花费很高的代价。不可见性也是软件工程的一个特性。机械零件的制造或是建筑物的设计可以通过设计图来较直观地展现设计过程中的不足,使得改进方向较为明确,但软件开发...
分类:
其他好文 时间:
2014-11-13 09:18:51
阅读次数:
242
Silver Bullet:中心思想就是软件工程这游戏真难玩。作者提到了大多数软件系统中的四个无法回避的本质问题:复杂性,统一性,可变性以及不可见性。复杂性指的是软件要解决的问题,通常牵扯到计算步骤,这是一种人为、抽象化的智能活动,多半是复杂的;不可见性指的是尚未完成的软件是看不见的,即使利用图标说...
分类:
其他好文 时间:
2014-11-13 01:49:24
阅读次数:
250
前置说明一:Unity中的drawcall定义:每次引擎准备数据并通知GPU的过程称为一次Draw Call。Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置、法线、UV等),(...
分类:
其他好文 时间:
2014-11-10 17:39:29
阅读次数:
181
1.首先理解什么是反射?
反射(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为。
2.为什么需要反射?
反射能够让我们:
在运行时检测对象的类型;
动态构造某个类的对象;
检测类的属性和方法;
任意调用对象的方法;
修改构造函数、方法、属性的可见性等;
--------------------------------------华丽分割线-...
分类:
编程语言 时间:
2014-11-08 18:16:43
阅读次数:
211
volatile只能确保可见性,并不能保证原子性,只能保证能拿到最后修改的值,但是不能保证修改值时的原子性。synchronized即可保证原子性又可以保证可见性。synchronized修饰方法的时候锁加在了所在类的实体,当有一个线程拥有了这个锁,那么其他的线程就不能访问这个类中的其他方法了吗?另...
分类:
其他好文 时间:
2014-11-06 19:13:14
阅读次数:
161
(接上篇) ------------------- 4.6 可见性和 Upvalue ------------------- 一个函数体可以引用它自己的局部变量(包括它的参数)和全局变量,只要它们没有被函数中同名的局部变量所隐藏(shadowed )。一个不可...
分类:
其他好文 时间:
2014-11-05 15:12:46
阅读次数:
130
这篇的主题本应该放在最初的几篇,讨论的是并发编程最基础的几个核心概念,但是这几个概念又牵扯到很多的实际技术,比如Java内存模型,各种锁的实现,volatile的实现,原子变量等等,每一个都可以展开写很多,尤其是Java内存模型,网上已经能够有很几篇不错的文章,暂时不想重复造轮子,这里推荐几篇Jave内存模型的资料:
1.
JSR-133 FAQ
2. JSR-133 Cookbook
...
分类:
其他好文 时间:
2014-11-04 09:29:33
阅读次数:
221
1. CopyOnWriteArrayList的迭代器保留一个执行底层基础数组的引用,这个数组当前位于迭代器的起始位置,由于基础数组不会被修改(修改都是复制一个新的数组),因此对其同步只需要保证数组内容的可见性。多个线程可以同时对这个容器进行迭代,而不会彼此干扰或者与修改容器的线程互相干扰。不会抛出CocurrentModificationException,并且返回元素与创建迭代器创建时的元素完全一致,不必考虑之后修改操作带来影响。
2. 每次修改容器都会复制底层数组,这需要一定开销,特别是容器规模较大。...
分类:
其他好文 时间:
2014-11-02 21:05:28
阅读次数:
261
在C#中,我们在不写子类的情况下,可以为类增加扩展方法,前提的被扩展的类不能使静态类。 步骤如下: 定义一个静态 类以包含扩展方法。该类必须对客户端代码可见。 有关可访问性规则的更多信息,请参见 访问修饰符(C# 编程指南)。 将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。 该方法...