1、2.迷宫算法实现有出口点和入口点,中间有一堆障碍物,求出其中一个入口点到到出口点的最优的路径,DEMO用HTML+JS/PHP实现(要求可以任意设置出口和入口点和障碍物的位置,还有可以设置地图大小,需要做UI)。3.MySQL查询优化,MySQL索引优化存储引擎的选择 Myisam:数据库并发不大,读多写少,而且都能很好的用到索引,sql语句比较简单的应用,TB数据仓库 Innodb:并发访问大,写操作比较多,有外键、事务等需求的应用,系统内存较大。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使
2、用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=04.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select id from t wh
3、ere num=10union allselect id from t where num=205.下面的查询也将导致全表扫描:select id from t where name like %abc%若要提高效率,可以考虑全文检索。6.in 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in(1,2,3)对于连续的数值,能用 between 就不要用 in 了:select id from t where num between 1 and 37.如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析
4、局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:select id from t where num=num可以改为强制查询使用索引:select id from t with(index(索引名) where num=num8.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:select id from t where num/2=100应改为:select id from t where num=100*
5、29.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。select id from t where substring(name,1,3)=abc-name以abc开头的idselect id from t where datediff(day,createdate,2005-11-30)=0-生成的idabc%select id from t where createdate= and createdatename来引用.对象的生成定义好类后用一个new来声明,由于对象资料的封装特性,对象是无法由主程序区块直接访问的须通过对象来调用类中所定义的属性和行
6、为函数,间接地达成存取控制类中资料的目的。对象和类的关系对象和类的关系:对象是实际存在的,占有动态资源。类是对象的蓝图,可能占有静态资源。对象属性占有动态资源类(静态)属性实际上是有类名字空间上的“全局变量”性能考虑:每个对象要单独占用数据空间增加的调用层次可能消耗执行时间方法的参数形式和传递方式方法的参数可以是基本数据类型、数组和类对象。基本数据类型:值参传递数组:类对象:引用传递构造函数构造函数是在类中起到初始化的作用构造函数的生成方法与其他函数一样只是其名称必须是_construct().语法格式:function _construct(参数)。范例:class Personpublic
7、 $name;public $sex;public $age;function _construct($name,$sex,$age)echo 我是构造函数$this-name=$name;sex=$sex;age=$age; 输出结果:初始化析构函数当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。应在退出前在析构函数中用释放内存。析构函数_destruct 析构函数没有任何参数class personfunction _ _destruct( ) echo bye bye !“; $a=new person();访问类型public 公共的(公共修饰符) 类内部与
8、类外部都可以访问的private 私有的(私有修饰符) 只能在类内部访问protected 受保护的(保护成员修饰符) 子类可以访问 类外部不可以访问oop的三个重要特性封装,继承,多态封装性:封装性就是把对象的属性和行为结合成一个独立的单位。封装一个类需要两步 第一步是私有化一个类 第二步是用set和get 做出读取赋值的操作他的好处是:隐藏类的实现细节,可以方便加入逻辑控制性,限制对属性的不合理操作,便于修改增强代码的可维护性。_get与_set一般说把类私有话更符合现实的逻辑。预定义两种函数来进行获取与敷值操作。_get 获取值通常是域的值_set 设置值通常是域的值_call 调用一个
9、对象中不存在的方法时,就会产生错误call()这个方法来处理这种情况。静态属性和方法static关键字 来声明静态方法static静态变量 在类的内部生成一个静态变量 就是能够被所有类的实力化共想 也就是说静态成员则放到了“初始化静态段”,在类第一次被加载的时候放入的,可以让堆内存里面的每个对象所共享使用方法:self:$静态属性、self:静态方法static function p()echo self:$country;PI;/访问常量/echo $this-name;在静态方法中只能操作静态属性/self:p();外部调用:类:$静态属性、类:const关键字:用来生成常量 常量是唯一的
10、不能改变的 惯例常量为大写const CONSTANT = constant value 生成一个常量CONSTANT;/类内部访问echo ClassName:/类外部访问继承性B类的对象拥有A类的全部属性与行为,称作B对A类的继承。假如一个类从多个类中继承了属性与服务,这称为多继承,通常我们成为继承类为子类被继承类为父类,在PHP中只有单继承,但一个父类可以被多个类继承,但是一个子类只能有一个父类,但是允许关联继承,通过继承可以减化类的定义。extende声明继承关系class B extends A 此范例指明 B继承了A类的外部访问对子类是有效的子类与父类的属性与方法子类继承父类的所有
11、内容,但父类中的private部分不能直接访问子类中新增加的属性和方法是对父类的扩展子类中定义的与父类同名的属性是对父类属性的覆盖,同名的方法也是对父类方法的覆盖重写的方法在子类中,使用parent访问父类中的被覆盖的属性和方法parent:_construce();$name;fun();覆盖父类原有属性clone克窿对象 语法格式$c=clone $p; $c克窿的对象$p 输出echo $c-对象比较=两个比较运算符。=是比较两个对象的内容。=是比较对象的句柄,即引用地址。instanceof操作符用于检测对象实力是否属于某一个类的类型 属于返回true 不属于返回false_clone
12、()如果想在克隆后改变原对象的内容,需要在_clone()中重写原本的属性和方法function _clone()name=我是一个克隆人final表示一个类是最终版本 也就是说它不能在被子类调用多态性多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。就是说同一种方法在子类与父类中执行的结果不同。class A function info()echo “A INFO”;class B extends A echo “B INFO”;class C extends A echo “C INFO”;
13、function printinfo($obj)function printinfo(A $obj)if($obj instanceof A)$obj-info();$a=new A(); $b=new B(); $c=new C();printinfo($a); /输出A INFOprintinfo($b); /输出B INFOprintinfo($c); /输出C INFO抽象方法和抽象类抽象方法是作为子类摸版使用的。abstract class Personabstract function getInfo();抽象类不能被实力话,一个抽象类中,必须有一个抽象方法。但是抽象类中可以定义动态函数。接口当一个类继承了一个接口之后,它要覆盖接口的所有方法,接口只能声明常量,接口的方法必须定义为共有否则无法继承,接口可以与多个接口间继承语法:interface PCIconst TYPE=PCI/public $name; errorfunction start();function stop();接口中的方法可以声明为staticinterfac
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1