描述语法
xmake的描述语法基于lua实现,因此描述语法继承了lua的灵活性和简洁性,并且通过28原则,将描述作用域(简单描述)、脚本作用域(复杂描述)进行分离,使得工程更加的简洁直观,可读性非常好。
因为80%的工程,并不需要很复杂的脚本控制逻辑,只需要简单的几行配置描述,就可满足构建需求,基于这个假设,xmake分离作用域,使得80%的xmake.lua文件,只需要这样描述:
lua
target("demo")
set_kind("binary")
add_files("src/*.c")
而仅有的20%的工程,才需要这样描述:
```lua
target("demo")
set_kind
继续阅读 »
最近邻居
解题思路:
1. 使用JDK中的Point2D类,该类定义了坐标系空间中的一个点
2. Point2D是一个抽象类,但是在该类内部定义了静态的Double类,并且Double继承自Point2D
3. 可以通过Double的构造方法来实例化空间中的某个点
4. 将所有的输入数据全部实例化并存放在一个Point2D.Double的数组中
5. 对该数组进行暴力破解,计算其中任意两个点之间的距离,时间复杂度为$O(n^2)$,并保留下最小的两个点的编号,且编号小的在前
Java算法实现:
```java
import java.awt.geom.Point2D;
import java.util.Scanner;
/*
继续阅读 »
装饰者模式:给对象动态地增加职责。跟继承相比,装饰者是一种更轻便灵活的做法,是一种“即用即付”的方式。
js的装饰者
假设我们在编写一个飞机大战游戏,这个飞机可以升级,发射导弹,发射原子弹
var plane = {
fire: function() {
console.log('发射普通子弹');
}
};
var missileDecorator = function() {
console.log('发射导弹');
};
var atomDecorator = function() {
console.log('发射原子弹');
};
var fire1 = plane.f
继续阅读 »
原文连接:Intro to Aspect Oriented Programming
本文简单地介绍了 AOP 的原理,以及 AOP 与其他方式的异同,并没有涉及太多的复杂逻辑,另外推荐下面两篇文章,这些文章中都间接或直接提及了 AOP:
用 AOP 改善 JavaScript 代码
使用 JavaScript 拦截和跟踪浏览器中的 HTTP 请求
面向切面编程(AOP)是一种非侵入式扩充对象、方法和函数行为的技术。通过 AOP 可以从“外部”去增加一些行为,进而合并既有行为或修改既有行为。
虽然有很多技术可以用来增加和合并行为,例如继承、组合、委托,然而,在很多情况下,AOP 被证明是更灵活和更少侵入的方式,非常值得将其纳入我
继续阅读 »
引用类型
Object类
```text
ECMAScript中的所有类都是由Object类继承而来。
Object类具有下列属性:
Constructor:对创建对象的函数的引用(指针),对于Object类,该指针指向原始的Object()函数
Prototype:对该对象的对象原型的引用。
Object类还有几个方法:
1、PropertyIsEnumerable(property):判断给定的属性是否可以用for...in语句进行枚举
2、ToString():返回对象的原始字符串表示。
3、ValueOf():返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值相同。
继续阅读 »
因为工作的原因,这一期的动态憋了好久,但还是憋出来了。确实需要耗费大量的时间和精力去阅读和理解,一方面是给自己做笔记,另一方面也算了为了提高因为的阅读吧。
业界动态
Oracle发布了Oracle VM 3.3,包含OpenStack软件包的技术预览版,继承了Oracle数据库。其虚拟化技术基于Xen。基于Oracle虚拟化平台,guestOS可以支持Oracle Linux, Oracle Solaris, and Windows
由几个来自VMware前员工开发了一个OpenStack云管理平台--Platform9,管理已有的基础设施,control plane as a service,这里有一个描述,比较有意思:
继续阅读 »
作为一个开源工具,caffe的代码十分庞大,但是组织的还是比较好的,本文主要介绍其代码框架。由于caffe大部分使用C++写的,因此,读者需要掌握C++的基本知识,包括:封装、继承、多态等。
1. caffe目录结构
在caffe根目录下使用tree -d查看整个代码的文件夹组织情况,如下。
继续阅读 »
在开发项目的时候,常常会利用继承来实现子父类的功能传递。比如,我们开发一个餐厅点餐系统,点餐系统现在有饭类,面类这两种主食可以选择,搭配主食的有饮料,小食。
起初的架构是这样的:
[][1]
继续阅读 »
简介
根据目的和范围,设计模式可以分为五类。按照目的分为:创建设计模式,结构设计模式,以及行为设计模式。按照范围分为:类的设计模式,以及对象设计模式。下面分别介绍
。
创建设计模式
创建设计模式(Creational patterns),用于创建对象时的设计模式。更具体一点,初始化对象流程的设计模式。当程序日益复杂时,需要更加灵活地创建对象,同时减少创建时的依赖。而创建设计模式就是解决此问题的一类设计模式。
结构设计模式
结构设计模式(Structural patterns),用于继承和接口时的设计模式。结构设计模式用于新类的函数方法设计,减少不必要的类定义,减少代码的冗余。
行为设计模式
行为设计模式(Behavio
继续阅读 »
在UML类图中,常见的有以下几种关系:
泛化(Generalization)
实现(Realization)
关联(Association)
聚合(Aggregation)
组合(Composition)
依赖(Dependency)
各种关系的强弱顺序:
泛化= 实现> 组合> 聚合> 关联> 依赖
more
泛化(Generalization):
类之间的继承关系用泛化。
【箭头指向】:带三角箭头的实线,箭头指向父类
实现(Realization)
类实现接口的关系使用实现。
【箭头指向】:带三角箭头的虚线,箭头指向接口
关联(Association)
类之间的拥有关系用关联。
【箭头及指向】:带
继续阅读 »