如何快速学习一门语言 作者:colin版权声明:自由转载-非商用-非衍生-保持署名4月初到新公司,如今已近一个月时间,由于项目的原因,这一个月来我学习了Python,ActionScript,Lua,JavaScript四门新的语言,并大多用于实际项目中。刚开始压力巨大,新项目都用脚本来开发,而且不止一门语言,这对于我这个多年来一直使用C++,Delphi等原生语言的程序员来说,感觉非常的不适应。一方面
cocos2d-x 3.0rc开发指南:Windows下Android环境搭建 安装工具1. 配置JDKJDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html本人的系统是Win7 64位版,但安装的是JDK7,Windows X86版。假设安装目录在:C:\Program Files (x86)\Java\jdk1.7.0_21;当然也可以
让C++使用极速的FastMM 由于malloc的低效,一直在寻找替换的方案,最后突发其想,封装一个FastMM的DLL作为C++的内存管理器;然后重载全局的new和delete操作符。如上方法执行之后,再跑原来的测试程序,效率果然与FastMM版本的一致了。我原来以为VC版STL的默认内存管理器,会有大量的优化,后来跟进去才发现,它也不过是用了new和delete,如果不重载,则最终是调用malloc的。如果要让STL也使用F
龟速的malloc和神速的FastMM 由于在Delphi项目中,要频繁创建和释放大量小对象,因此担心有效率问题,于是打于GetMem.inc看看,发现FastMM对于小块内存作了很多工作,它预置了一组不同大小的内存池,当要创建一块内存时,FastMM找到大小最相近的内存池分配之,内存释放后回收到池中。这样的做法虽有小量内存浪费,但效率却是大大提高。我决定做一个测试,看看效率研究如何: const cSize: Integer
窗口过程封装的一些实现 -----------------------------------------------------------------------------------------------------------------作者: colin微博: http://weibo.com/jaccicagaga-----------------------------------
Java语言基础:流类(1) 1. java通过流的概念来实现数据的输入输出,或叫读写更容易理解一些;下面4个类是所有流的基类,分别处理字节和字符的读写:InputStream: 输入(读)字节流抽象类。OutputStream: 输出(写)字节流抽象类。Reader: 输入(读)字符流抽象类。Writer: 输出(写)字符流抽象类。2. 上面4个抽象类提供了最基本的读写方法,输入输出流有一个当前位置(Pos)的概念,指定下一次的读写将从流的什么位置开始,调用Read或Write方法时,Pos会同时向后移,移多少依读写多少字节或
Java语言基础:多线程 1. 有两种方法可以创建并运行一个线程:继承Thread类并覆盖Run方法,Run中的代码就在另一个线程执行。class MyThread extends Thread { MyThread() { // 调用下面代码,线程开始运行 start(); } @Override public void run() { // 这里的代码是在线程中执行的 int i = 0
Java语言基础:RTTI 1. 每个类都有一个Class对象,当我们在运行期第一次生成类的实例时,JVM就加载这个类的Class对象,然后用这个Class对象来创建类实例;Class类似于Delphi中的引用类TClass,用于保存类的运行时信息。 2. Class的static方法forName()用于查找某个类的Class对象,如果forName找不到你要的类的Class对象,会抛出ClassNotFoundException异常:class A{} public class Main {
Java语言基础:异常机制 1. 抛出异常通过throw new ThrowableClass语法可以抛出一个异常,其中ThrowableClass是一个从Throwable继承的类,或者是Throwable类本身,先看下面的public void proc(){ // Exception是Throwable的继承类,代表最基本的异常 throw new Exception("hello");} 上面的代码会导致编译错误,对于有抛出异常的方法,编译器强制要求:要么在方法上声明要
Java语言基础:抽象类和接口 1. 一个类中的方法如果只有声明没有实现,则称为抽象方法,必须用abstract修饰之;一个有抽象方法的类称为抽象类,也必须用abstract修饰之,但抽象类可以没有抽象方法;抽象类不能被创建:// 抽象类abstract class A { // 抽象方法 abstract public void proc();} // 没有抽象方法的抽象类abstract class B { public void proc(){ }
Java语言基础:对象的初始化 1. 如果基类存在默认构造函数,则在子类构造之前,会先调用基类的默认构造函数:class A { A() { System.out.println("A create"); }} class B extends A { B() { // 会在这里先调用A的默认构造函数 System.out.println("B create"); }} class C extends A { C
Java语言基础:基本数组类型 1. 一维数组的声明和初始化,分成动态和静态:// 动态创建10个整型,默认初始化为0int[] a1 = new int[10]; // 静态创建4个整型,并初始化为括号中的值int[] a2 = {1, 2, 3, 4}; // 动态创建MyClass数组,需要遍历创建数组中的每个类实例MyClass[] a3 = new MyClass[3];for (int i = 0; i < a3.length; ++i) MyClass[i]
Java语言基础:内部类 1. 普通内部类普通内部类的一个最简单的例子:// 外部类class OutterClass { // 内部类 public class InnerClass { private int i = 0; public int getInt(){ return i; } } public void proc(){ InnerClass inClass =
Java语言基础:泛型 我必须承认我不是一个Java程序员,日常开发主要是C++和Delphi,使用Java完全是为了开发Android应用。今天在看Java的泛型,有些方面感到很奇怪,先来看下面的代码: class Shape { public void Draw() { System.out.println("Draw Shape"); } } class
Java语言基础:final和static 1. finalfinal可以修饰类,成员方法,成员变量;表示最终的,不能修改,不能继承的:final类不能被继承,类中的方法默认是final方法,但类中的成员变量不是。final方法不能被子类覆盖,可以这样理解:JAVA中的普通方法等于C++的虚方法,JAVA中的final方法等于C++中的普通方法。final成员表示常量,只能在声明时赋值一次,以后不能再被赋值。public class Test { private final String S="final实例变量"; priva
Delphi:两个高效的哈希函数 function BKDRHash(buf: Pointer; count: Integer) : Cardinal; assembler;asm PUSH EBX; XOR EBX, EBX MOV ECX, EAX XOR EAX, EAX@LOOP: TEST EDX, EDX JZ @EXIT MOV BL, [ECX]
实用C++函数:取当前模块句柄 当前模块的句柄在程序进入点可以获得,一般做法是保存为一个全局变量,以后使用这个全局变量即可。但有时在写一些比较通用的代码时刚好要用到模块句柄,如果还去访问这个全局变量就破坏了代码的通用性。下面函数可以取得当前模块的句柄,无须保存,随调随得:/* 通过一个地址取模块句柄*/inline HMODULE ModuleHandleByAddr(const void* ptrAddr){ MEMORY_BASIC_INFORMATION info; ::V
用C++实现属性 Delphi和C#的类都提供了“属性”的概念,使得Getter和Setter的方法可以像访问成员一样简单,如下面的Delphi代码:TMyClass =classprivate FValue: Integer; funcation GetValue: Integer; procedure SetValue(value: Integer);public property Value: Integer