[千斤顶之一日一类002]Top Level: Array学习

Categories: Flex; Tagged with: ; @ November 1st, 2008 23:28

坦白说每天搞一个类是很累且疲惫的, 今天是玩千斤顶的第二天, 周六, 我突然体味到那些包二奶的爷们们的难处, 多累啊….试想我每天看一个类, 今天是第二把尝试, 都有些扛不住了, 下午逛街回来给娘做了饭, 一起吃完看了会儿电视, 着实扛不住了, 就小憩了半个小时才爬起来看今天的One Day One Class. 假如给我400个女人, 让我One Day One Woman, 我岂不是要累死?

不扯了, 总结下Array类.

Top Level: Array

. 游标[index]从0开始;
. Array()可以以函数方式被调用
. 可以往Array里存储数字, 字符串, 对象, Array.
. Array是稀疏的, 如果某数组在index为0与5时都包含对象, 但是在0与5之间没有任何值, 则如果调用中间元素时,返回"undefined";
. 传地址, 而非传值. 即: 如果将某数组赋值给另外一个数组, 则该来那个歌数组都指向同一个数组, 修改其中一个, 另外一个也随之修改. 不同于数字与字符串等
. 不要用数组来建立哈希表
. 可以继承Array类, 并 重写,增加方法, 但必须制定该子类为Dynamic类型, 否则将无法使用Sort.

Public Properties

length : uint 返回数组的长度
继承来的我就不说了…..

Public Methods

归归类, 不然就太没有创意了,跟API一模一样….

1. 数组的创建:

var arrayStu_1:Array = new Array(1);   //创建一个长度为1的数组. 但如果不赋值, 都是undefined
var arrayStu_2:Array = new Array("arrayStu_2_Index0", "arrayStu_2_Index1");   //创建包含有括号里这俩元素的数组
var arrayStu_3:Array = ["arrayStu_3_Index0", "arrayStu3_Index1"];   //这个更直接一些了, 直接赋值.

2. 数组元素的访问, 增加, 修改, 删除:
访问:
array[i], 访问某元素, 如果要访问全部, 使用For循环
增加:
Push(): 将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
unshift(): 将一个或多个元素添加到数组的开头,并返回该数组的新长度。
修改: 直接赋值: array[i] = new value;
删除:
Pop(): 删除数组中最后一个元素,并返回该元素的值。
Shift(): 删除数组中第一个元素,并返回该元素。 其余数组元素将从其原始位置 i 移至 i-1。同时该数长度减少一位;
另外:
splice():给数组添加元素以及从数组中删除元素 可以用于增加或删除元素,同时增大或减小数组长度;

3. 长度或index操作:
length:
返回array的长度;
indexOf(): 从左向右遍历数组, 遇到符合要求的元素时, 返回该元素index. 如果遍历结束仍未发现符合要求的元素,返回-1;
lastIndexOf(): 与inidexOf()相反, 从右向左寻找要求的元素;

4. 数组的操作
数组的连接: 
concat(), 数组的连接 如:
arrayStu_2 = arrayStu_2.concat(arrayStu_1);
trace(arrayStu_2.toString());  //显示: arrayStu_2_Index0,arrayStu_2_Index1,——注意这个逗号, 意为后头还有个空的. 因为arrayStu_1只是一个长度为1但没有元素的数组.
数组元素的检测:  evey(): 对数组中的每一项执行测试函数,直到获得对指定的函数返回 false 的项。 使用此方法可确定数组中的所有项是否满足某一条件,如具有的值小于某一特定数值。
筛选出符合要求之元素并新建一个数组: filter();
Join():将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串。
Map(): 返回一个新数组,其中包含此函数对原始数组中每一项的执行结果。
reverse(): 在当前位置倒转数组。
slice():  返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。 返回的数组包括 startIndex 元素以及从其开始到 endIndex 元素(但不包括该元素)的所有元素。 如果您没有传递任何参数,则创建原始数组的一个副本。如果两参数均为-1, 则起点或终点为数组的结尾, -1 指的是最后一个元素。

5. 其他操作
Some(), Sort(), SortOn()

[千斤顶之一日一类001]Top Level: Arguments类学习

Categories: Flex; Tagged with: ; @ November 1st, 2008 0:20

Package    Top Level
Class    public class arguments
Inheritance    arguments Inheritance Object

简要介绍[主要是翻译API, 寒]:
一个Arguments类主要用来存储与访问一个函数的参数, 在函数体内, 可以通过本地参数变量来访问Arguments对象.
Arguments对象存储形式为数组, 因此,arguments[i]即代表了第i个参数(前提时有这么多参数….)
相对与之前的ActionScript版本,ActionScript3.0中不再使用Arguments.caller[之前的版本没用过:(], 在3.0中, 如果需要访问调用该参数的函数, 则可以使用arguments.callee.

Public Properties[不知道该咋翻译, 继续寒]:
callee:Function 返回调用该参数的当前函数

length: Number 参数数目[ 即参数作为数组的长度]

举例: [小修改了下API里的例子]
在初始化时运行 ArgumentsExample(1,’ss’);

    import flash.display.Sprite;
        private var count:int = 1;

        public function ArgumentsExample(i:int, s:String):void {
        	//参数以数组形式存放于arguments中.
        	trace("第一个参数: " + arguments[0] + " 第二个参数: " + arguments[1] + " 共有 " + arguments.length + "个参数.");
        	trace(arguments.callee == this.ArgumentsExample);
            firstFunction(true);
        }

        public function firstFunction(callSecond:Boolean):void {
            trace(count + ": firstFunction");
            if(callSecond) {
            	//调用secondFunction, 参数为firstFunction
                trace(arguments.callee);
            }
            else {
                trace("CALLS STOPPED");
            }
        }

        public function secondFunction(caller:Function):void {
            trace(count + ": secondFunction");
            count++;
            //此时caller即firstFunction, 实际运行为firstFunction(false);
            caller(false);
        }

运行结果:

第一个参数: 1 第二个参数: ss 共有 2个参数.

true

1: firstFunction

1: secondFunction

2: firstFunction

CALLS STOPPED

SQL中的连接 Join In MySQL

Categories: Database; Tagged with: ; @ October 31st, 2008 23:18

Here is a summary of difference between inner join and outer join:

http://stackoverflow.com/questions/38549/sql-difference-between-inner-and-outer-join

A Visual Explanation of SQL Joins – by Coding Horror.

有两个表,如下:

mysql> SELECT * FROM Class;
+———-+——–+
| Class_ID | Name   |
+———-+——–+
|                1 | 2008A  |
|                2 | 2008B  |
|                3 | 2008C |
+———-+——–+
3 rows in set (0.00 sec)

mysql> SELECT * FROM Student;
+————+——-+———-+——— —-+
| Student_ID | Name  | Class_ID | Student_Age |
+————+——-+———-+——- ——+
|                    1 | Jack    |                 1 |           NULL |
|                   2 | Lucy     |                 0 |           NULL |
|                    3 | Join     |                1 |            NULL |
|                    4 | Tom   |                 2 |            NULL |
+————+——-+———-+————- +
4 rows in set (0.00 sec)

即: 有三个班级 分别为2008A, 2008B.,2008C 有4个学生 , 其中, Jack, Join为2008A班的学生,Tom为2008B班的学生, 而Lucy则不在任何班级中.

INNER JOIN:


mysql> SELECT * FROM Student s INNER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name  |
+————+——+———-+————-+———-+——-+
|          1 | jack |        1 |        NULL |        1 | 2008A |
|          3 | Join |        1 |        NULL |        1 | 2008A |
|          4 | Tom  |        2 |        NULL |        2 | 2008B |
+————+——+———-+————-+———-+——-+
3 rows in set (0.06 sec)

OUTER JOINs:

Left Outer Join:左外连接
mysql> SELECT * FROM Student s LEFT OUTER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name  |
+————+——+———-+————-+———-+——-+
|          1 | jack |        1 |        NULL |        1 | 2008A |
|          2 | Lucy |        0 |        NULL |     NULL | NULL  |
|          3 | Join |        1 |        NULL |        1 | 2008A |
|          4 | Tom  |        2 |        NULL |        2 | 2008B |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)

Right Outer Join:右外连接
mysql> SELECT * FROM Student s RIGHT OUTER JOIN Class c ON s.Class_
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name  |
+————+——+———-+————-+———-+——-+
|          1 | jack |        1 |        NULL |        1 | 2008A |
|          3 | Join |        1 |        NULL |        1 | 2008A |
|          4 | Tom  |        2 |        NULL |        2 | 2008B |
|       NULL | NULL |     NULL |        NULL |        3 | 2008C |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)

Full Outer Join:

MySql中常用SQL语句总结

Categories: Database; Tagged with: ; @ October 31st, 2008 22:51

使用工具: phpMyAdmin, MySQLBroswer, 命令提示行[Windows下须将mysql目录中的bin添加到环境变量PATH中].

1. 连接的建立与退出:

mysql –u root –p
或登陆后直接选定某数据库 mysql –u root –p [数据库名称]
输入密码即可建立连接;

输入quit或exit即可关闭连接.

2. 数据库[DataBase]的建立与删除:

mysql>CREATE DATABASE School;
mysql>DROP DATABASE School;

3. 表[Table]的增加, 修改与删除:

表的见
首先应选定某数据库:
mysql>use School;

表的建立

然后建立一个班级表Class, 包含有班级ID, 非空, 自增, 为该表的主键; 班级名称 varchar(255);
mysql>CREATE TABLE Classes (Class_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(255));

新建一个学生表Student:

mysql>CREATE TABLE Student(Student_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(255), Class_ID INT);

建立后的两表属性:
mysql> use school
Database changed
mysql> DESCRIBE Classes;
+———-+————–+——+—–+———+—————-+
| Field    | Type         | Null | Key | Default | Extra          |
+———-+————–+——+—–+———+—————-+
| Class_ID | int(11)      | NO   | PRI | NULL    | auto_increment |
| Name     | varchar(255) | YES  |     | NULL    |                |
+———-+————–+——+—–+———+—————-+
2 rows in set (0.02 sec)

mysql> DESCRIBE Student;
+————+————–+——+—–+———+—————-+
| Field      | Type         | Null | Key | Default | Extra          |
+————+————–+——+—–+———+—————-+
| Student_ID | int(11)      | NO   | PRI | NULL    | auto_increment |
| Name       | varchar(255) | YES  |     | NULL    |                |
| Class_ID   | int(11)      | YES  |     | NULL    |                |
+————+————–+——+—–+———+—————-+
3 rows in set (0.02 sec)

表的修改

表的重命名: 为了保持编码风格一致, 现在我们想把Classes表更名为Class.则须运行:

mysql> RENAME TABLE Classes To Class;
Query OK, 0 rows affected (0.00 sec)

除此之外,我们现在需要在Student加入一个名为Age的Column.属性为int 
mysql> ALTER TABLE Student ADD COLUMN Age int;
Query OK, 1 row affected (0.08 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> DESCRIBE Student;
+————+————–+——+—–+———+—————-+
| Field      | Type         | Null | Key | Default | Extra          |
+————+————–+——+—–+———+—————-+
| Student_ID | int(11)      | NO   | PRI | NULL    | auto_increment |
| Name       | varchar(255) | YES  |     | NULL    |                |
| Class_ID   | int(11)      | YES  |     | NULL    |                |
| Age        | int(11)      | YES  |     | NULL    |                |
+————+————–+——+—–+———+—————-+
4 rows in set (0.02 sec)

==>逆操作: mysql>ALTER TABLE Student Drop Age;

另外, 我们需要修改Student的Class_ID默认为0:

mysql> ALTER TABLE Student MODIFY Class_ID int DEFAULT 0;
Query OK, 1 row affected (0.03 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> DESCRIBE Student;
+————+————–+——+—–+———+—————-+
| Field      | Type         | Null | Key | Default | Extra          |
+————+————–+——+—–+———+—————-+
| Student_ID | int(11)      | NO   | PRI | NULL    | auto_increment |
| Name       | varchar(255) | YES  |     | NULL    |                |
| Class_ID   | int(11)      | YES  |     | 0       |                |
| Age        | int(11)      | YES  |     | NULL    |                |
+————+————–+——+—–+———+—————-+
4 rows in set (0.00 sec)

最后,总结下Column名称的修改:
mysql> ALTER TABLE Student CHANGE Age Student_Age int;
Query OK, 1 row affected (0.03 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> DESCRIBE Student;
+————-+————–+——+—–+———+—————-+
| Field       | Type         | Null | Key | Default | Extra          |
+————-+————–+——+—–+———+—————-+
| Student_ID  | int(11)      | NO   | PRI | NULL    | auto_increment |
| Name        | varchar(255) | YES  |     | NULL    |                |
| Class_ID    | int(11)      | YES  |     | 0       |                |
| Student_Age | int(11)      | YES  |     | NULL    |                |
+————-+————–+——+—–+———+—————-+
4 rows in set (0.01 sec)

Table的删除:

mysql>DROP TABLE Class;

4. 记录的插入,修改与删除

插入:

在Class与Student两表中插入记录: 如插入ID为1,名为"2008A"的班级, id为1,姓名为"Tom"所在班级ID为1的Student.
mysql> INSERT INTO Class(Class_ID, Name) VALUES(1, ‘2008A’);
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO Student(Student_ID, Name, Class_ID) VALUES (1, ‘Tom’, 1);
Query OK, 1 row affected (0.00 sec)

修改:

譬如该学生名字应为’Tomey”, 我们需要更正其数据库中的姓名,于是我们使用:

mysql> UPDATE Student set Name = ‘Tomey’ WHERE Student_ID = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

删除:
DELETE FROM Student WHERE Student_ID = 2;

Subversion命令小结

Categories: Development Notes; Tagged with: ; @ October 31st, 2008 10:06

1.  签出:

work>cd AirTest
AirTest>svn co svn://192.168.1.99/Athena/trunk/Test/LGL/AIRTest/test 或: svn checkout svn://192.168.1.99/Athena/trunk/Test/LGL/AIRTest/test

2. 更新项目仓库:

AirTest>svn commit –m “XX修改后更新项目仓库”

3.  保持更新:

AirTest>svn update

4.添加文件与目录:

AirTest> mkdir test
AirTest> svn add test

5. 拷贝,移动文件与目录

拷贝
AirTest> svn copy Number.text test.text

移动
AirTest>svn move Clocks.java Clock.java
实际工作便是重命名.
操作完成后运行commit以保存到项目仓库

Newer Posts <-> Older Posts



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.