初学PHP时的知识积累

校园社区管理系统:初学者的PHP实践平台 MVC(Model-View-Controller)设计模式是一种软件设计范式,用于组织代码以分离业务逻辑(模型),用户界面(视图)和输入控制(控制器)。MVC模式通过这三个主要组件来促进应用的模块化和可维护性。模型(Model):模型负责数据的处理和存储,通常与数据库交互。它封装了数据以及与数据有关的业务逻辑,是应用程序的核心部分。视图(View):视图是用户界面的一部分,负责展示数据。在MVC中,视图通常不包含逻辑,只是简单地展示从模型中获取的数据。 阅读详情
另:欢迎各位加群:206981178,共同学习交流

PHP基础
一、初识PHP
PHP是与HTML混合使用的嵌入式语言。
1、PHP标记
    默认标记<?php ?> 短标记<? ?>,需在php.ini中将short_open_tag选项开启 短标记和其他标记不提倡使用
2、关键字不区分大小写,用户自定义的类名和函数名不区分大小写,变量名区分大小写
3、输出
    boolean print(参数) 返回布尔值
    void echo(参数) 无返回值   echo的效率要高一点
二、数据类型
    1、比较两个浮点数的通常方法是先移动若干小数位,然后转换为整型数据再进行比较。
    2、双引号做分隔符的字符串支持变量名解析,单引号做分隔符的字符串不支持变量名解析。
       $name="张三";
       "$name"=>张三 || '$name'=>$name || "$name先生"=>空 || "{$name}先生"=>张三先生 || "${name}先生"=>张三先生
    3、字符串定义的方式:单引号,双引号和heredoc(<<<heredoc_mark    heredoc_mark)
    4、对象类型必须显式的进行声明。类用关键字class定义,使用关键字new生成这个类的实例,使用->符号类访问类中的属性和方法
       class car{public $cololr;function beep(){}}   $mycar = new car; $mycar->color='red'; $mycar->beep();
    5、PHP是一种弱语言类型,变量的类型会根据赋予的值自行确定,而且往往在变量声明的同时进行变量初值的赋值。
    6、数据类型强制转换时,只须将需要的类型名写在变量前的括号内即可。
三、常量和变量
    1、定义常量 define("常量名",表达式或值) 常量名建议全大写,但不是必需的
       使用常量 直接使用定义的常量名,无须在常量名前加"$"
       预定义常量:_FILE_当前PHP程序文件名 _LINE_当前PHP程序所在的行数(在哪指哪)
    2、变量不需要显式的声明,在对变量赋初值时就对变量进行了声明。如果变量没有被设置初值,则其初值即为NULL。
    3、变量的赋值:传值赋值和引用赋值。如$a=&$b; 即b原来指向了一个存储位置,引用赋值后,a也指向了这个存储位置,这时,
                   a或b的销毁都不会对对方造成任何影响,但是如果其中一个的值改变了,则另一个也会作出相同的改变。
    4、访问预定义变量之使用超全局变量,总共9个超全局变量
    5、局部变量:在函数内定义的变量 只能在函数内使用
       全局变量:在函数外定义的变量 默认只能在函数外使用
                 要想在函数内使用全局变量,需要在函数内将变量用global声明,或者使用超全局变量数组&GLOBALS["变量名"]
                 在PHP中,只有函数能提供局部作用域。
                 超全局变量$GLOBALS包含了全部的变量
       静态变量的特点:只有在第一次被调用时进行初始化,函数结束后不销毁,并且下次使用时,该变量还保留原来的值。
                 静态变量只能在函数内定义和使用。
       可变变量:将变量的名字也作为一个变量来使用。$a=b;$b=c;$$a=$b=c;
       外部变量:使用GET方式能传递的数据最大为256字节,使用POST最大为2MB
四、流程控制(仅写与java等其他语言的不同)
    1、交互格式(冒号语法) 不建议使用,经典的比较直观
    2、foreach():该语法是专门为数组设计的
       第一种格式foreach(target_array as $value) statement
       第二种格式foreach(target_array as $key=>$value) statement
    3、break 数字:要跳出的结构的层数
       contiue 数字:要跳出的结构的层数
    4、exit语句可以结束当前整个脚本的执行,通常用于错误检查。
       exit; exit("错误原因");
       die()是exit的别名 $conn=mysql_connect("localhost","root","") or die("无法连接到MySQL服务器");
五、数组
1、关联数组与数字索引数组唯一的区别在于索引的类型。
2、数字索引数组
初始化:直接为数组元素赋值    array()函数
   如果数组不存在,那么为数组元素赋值的同时即可创建该数组
   如果数组元素是按顺序排列的数字,则在对数组进行初始化时,可以使用range()函数
   range()有3个参数,第一个参数指定初始值,第二个参数指定终止值,第三个参数可选,用于指定步长
3、关联数组
   初始化:直接为数组元素赋值    array()函数
4、与数组相关的运算符
   + 联合 $a+$b 将$附件到$a之后,但是任何索引值冲突的元素将不会被添加
   == 等于 $a==$b 如果$a和$b包含相同元素,返回true(索引值和元素必须都相同) 除了顺序,其他必须完全一样
   != <> 不等于
   === 恒等 如果$a和$b包含相同顺序的相同元素,返回true(索引值和元素必须都相同) 必须完全一模一样
   !== 不恒等
5、数组的排序
   boolean sort() 按数字和字母顺序排列 排列后会赋予新的索引值,原有索引值被删除
   void asort()    按升序对数组进行排序 排列后保留原来的索引关系
   integer ksort() 按索引值升序进行排列
   usort(数组,方法名)         按用户自定义方法进行排序
   array_multisort() 一次对多个数组进行排序
   natsort() 按自然顺序排序,排序后保留原有的索引关系
   natcasesort() 自然排序,不区分大小写
6、数组的反向排序
   rsort() 对数组元素按降序排列
   arsort()
   krsort()
7、对数组进行重新排序
   boolean shuffle() 对数组进行随机排列
   array array_reverse() 将数组中的元素逆置
   array array_flip() 将数组中的索引与其元素值兑换
8、数组的遍历
   current() 获取数组中当前指针所指的元素值
   next()    将数组的指针向后移动一位,返回移动后指针所指向的元素的元素值
   prev()    将数组的指针向前移动一位,返回移动后指针所指向的元素的元素值
   reset()   指针设置回数组的起始位置
   end()     将指针移动到数组的最后一个元素处
   each()    返回数组中当前指针所指向的“索引/元素值”对,并将数组指针向后移动一位
             返回一个包含4个元素的数组,且该数组的索引分别为0,key,1,value
   key()     返回数组当前指针所指向的索引值
   array_walk()   以相同的方式对数组中的每一个元素进行处理
   array_reduce() 将自定义函数依次应用于数组的每个元素
9、其他的数组操作函数
   list()    从一个数组中一次提取多个值,并同时赋值给多个变量
   count()/sizeof()   计算数组中元素的个数
六、PHP中的字符串
1、访问字符串中的字符
   字符串的三种定义方式:单引号、双引号和Heredoc方式
   可以将字符串视为数组来处理。$test="hello"; $test{0}="h";推荐使用大括号,以免与数组混淆
2、字符串的格式化
   字符串的格式化处理通常包括:去除字符串中多余的空格、大小写转换、加入和删除反斜杠和HTML格式化四部分
   去除空格和其他符号
       string trim(待处理的字符串,过滤字符串)
           如果不指定过滤字符串,则默认去掉空格、Tab字符、换行符、回车符、字符串结束符和垂直制表符
           可以使用“..”指定需要去除的一个范围,例如“a..f” 表示去掉a、b、c、d、e和f
           只对字符串首尾字符进行过滤,即使指定了过滤字符串,字符串中间部分也不会参与过滤
       string lrtim(待处理的字符串,过滤字符串)
    去除字符串左边的空格和其他特殊字符
           其他同trim()
       string rtrim(待处理的字符串,过滤字符串),别名函数chop()
           去除字符串右边的空格和其他特殊字符
           其他同trim()
   对字符串大小写的转换
       strtolower(待处理的字符串)将指定字符串中的所有字符转换为小写
       strtoupper(待处理的字符串)将指定字符串中的所有字符转换为大写
       ucfirst(待处理的字符串)检查指定的字符串,如果指定字符串的第一个字符是字母,则将其转换为大写
       ucword(待处理的字符串)将指定字符串中的每个单词的首字母转换为大写
   加入和删除反斜杠
       在将任何字符串保存到数据库中之前,应该使用addslashes()函数添加反斜杠;
       在显示用户数据之前,应该调用stripslashes()函数去除反斜杠
       addslashes(待处理的字符串)添加反斜杠
       stripslashes(待处理的字符串)删除反斜杠
   HTML格式化
   nl2br(待处理的字符串)可以将字符串中的换行符转换成HTML中的标签"<br>",从而在浏览器中实现换行
         htmlspecialchars(待处理的字符串,是否转换双引号和单引号,字符集)
              可以使一些特殊的字符被当成普通的文本输出,而不会再进行HTML解析
              第二个参数:默认只对双引号进行转换,ENT_COMPAT只转换双引号 ENT_QUOTES都转换
                                                  ENT_NOQUOTES 不进行转换
           第三个参数:指定了转换时所使用的字符集,默认为ISO-8859-1
         hemlentities(待处理的字符串,是否转换双引号和单引号,字符集)
              功能同上,但可以转义更多的特殊字符
heml_entity_decode(待处理的字符串,是否转换双引号和单引号,字符集)
              可以对显示字符串进行反向转换,转换后的字符串能够按HTML标签进行解析
         strip_tags(待处理的字符串,允许保留的HTML标签)
              去除所有的HTML和PHP标记
3、字符串的连接和分割
   explode(分隔符,字符串,被分割的字符串片断的数量)按指定的分隔符将一个字符串分割
         如果分隔符是字符串,函数会根据字符串中的每个字符来进行分割,而不会根据整个分割字符串来分割
   implode(连接符,需要连接成字符串的数组)将一些字符串通过指定的连接符连接成一个字符串
   join(连接符,需要连接成字符串的数组)功能同implode()
   substr(字符串,开始位置,提取长度)从某个字符串中提取一部分子字符串
         开始位置为负,将得到一个从原字符串尾部开始,长度为该负数绝对值的子字符串
         提取长度为负,子字符串取到倒数第“length”个字符前
         这个不难理解,-就表示从后面开始
   strtok(字符串,分隔符)从指定字符串中取出一个字符串片段
         如果分隔符是字符串,函数会根据字符串中的第一个字符来进行分割,而不会根据整个字符串来分割
         在调用该函数对字符串进行连续分割时,只有第一个分割时需要指定参数str,第一个分割后,系统会自动
         记录字符串及第一个分割后的指针位置,继续调用该函数,则会继续从该字符串指针的当前位置进行分割
         。如果希望重置指针到字符串起始位置,只需将字符串重新作为参数传递给该函数即可。
   split(分隔符,字符串,返回字符串个数)将一个字符串按指定的分隔符分解为多个子字符串
4、字符串的比较
   可以使用==直接对字符串进行比较
   strcmp(字符串1,字符串2)按字典顺序,排在后面的大。如果相等,返回0,如果str1大于str2,返回正数,否则负数
          区分大小写
   strcasecmp(字符串1,字符串2)同上,不区分大小写
   strnatcmp(字符串1,字符串2)按自然顺序进行字符串比较,等于返回0,大于返回正数,小于返回负数,区分大小写
   strnatcasecmp(字符串1,字符串2)按自然顺序进行比较,不区分大小写
5、字符串的查找和替换
   strstr(被查找的字符串,要查找的关键字)在一个字符串中查找匹配的字符串或字符,如果查找到,则返回从str字符   中该key开始到字符串结尾的子字符串,如果没有查到,则返回false,如果不止一个,则返回从第一个匹配到结 尾的子字符串
   strisstr()功能同上,区别,该函数不区分大小写
   strchr(被查找的字符串,要查找的关键字)在一个字符串中查找要匹配的子字符串或字符,该函数从字符串末端开始   查找,如果找到一个,则返回从该key开始到字符串结尾的子字符串,如果多于一个,则返回从尾端开始的第一   个匹配,如果没有匹配,则返回false
   strpos(要查找的字符串,要查找的子字符串或字符,从原始字符串的第offset个字符开始查找)
        如果找到一个,则返回位置,从0开始,如果不止一个,返回第一个,如果没有,返回flase
        offset不能为负,否则无法开始查找
   strrpos(要超找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
        从字符串末端开始查找,如果不止一个,返回倒数第一个匹配
   strripos(要查找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
        功能同strrpos(),区别不区分大小写
   stripos(要查找的字符串,要查找的关键字,从原始字符串的第offset个字符开始查找)
        功能同strpos()区别不区分大小写
   str_replace(被替换的字符串或数组,替换后的字符串或数组,源字符串或数组,被替换的次数)
                  search                 replace                subject
        把subject中的search替换为replace
        如果search是数组,replace是字符串,在replace会替换search数组中的所有元素
        如果search和replace都是数组,在replace中的元素会替换search中对应的元素
        如果search数组中的元素个数多余replace,则多余的search数组中的元素会被空字符串替换                 
   substr_replace(被操作的原始字符串,用于替换的字符串,要被替换的原始字符串的起始位置,被替换的原始字符串        中字符的个数)用于在指定位置中查找和替换字符串中特定的子字符串
        起始位置:如果为正,从头开始计算,如果为负,从尾开始计算
        长度:如果为正,表示从start开始的连续length个字符被替换,
       如果为负,表示从start开始到倒数第length个字符被替换                                         
   str_ireplace()功能同substr_replace(),但是该函数不区分大小写
6、其他常用字符串函数
   strlen(字符串)用于计算指定字符串的长度
   md5(字符串,标志)将一个字符串进行MD5算法加密
   第二个参数如果为true,将返回一个16位的二进制数;如果为false,则返回一个32位的十六进制字符串,默认为false
七、PHP中的面向对象编程技术
1、对象的特性
   封装:对象是封装的最基本单位,是以对象名封装的数据结构以及可施加在这些数据上的操作的集合。
         就像一个盒子,我们不需要知道盒子里面有什么东西,只需知道它有哪些用途即可。
   继承:PHP不支持多重继承,继承本质上就是代码重用,继承是指子类可以自动地拥有父类的全部特性,而无须从零开始构建。
   多态:能够使用类的上下文来重新定义或改变类的行为。多态性使得对象能够根据所得到的参数决定具体执行哪个行为或方法,而对外却可以提供统一的接口。
2、类的结构
   class 类名
   {
   //定义属性,使用关键字var
        var $var1;
        var $var2;
        ...
        //定义方法,使用关键字function
        function method1(...){...}
        function method2(...){...}
        ...
   }                                                                                                                                                               不可以将一个类分开定义到多个PHP标记对中,更不可以分开定义到多个文件中。
3、类的实例化
   使用关键字new来创建类的实例
   $实例名=new 类名;    
4、使用类的属性
   若要使用类中定义的属性或方法,只需使用运算符"->"即可。如果在类定义时需要访问类内部自身定义的属性或方法,则需要使用$this指针。
   一般来说,从类的外部直接访问类的属性存在一定的风险,为此PHP对于访问类属性提供了一些保护措施。__set(),__get(),当视图引用一个
   类中不存在的属性时,就会调用这些方法进行相应的处理。
5、类的访问控制 控制类的属性和方 法                                                                                                                            
   如果对类的属性指定了访问控制类型,则关键字var需省略
   public 在类的内部和外部都可以访问。该选项是默认选项。
       使用“::”运算符可以在没有创建任何类的实例的情况下访问类中的函数或者变量
       格式如下:类名::函数   类名::变量
   private 只能在类的内部进行访问
   protected 只能在该类和其子类中使用
6、构造函数   
   构造函数在一个类被实例化时自动调用。PHP不支持多个构造函数。
   构造函数的语法格式如下:function __construct(参数1,参数2,...){}
7、析构函数
   析构函数会在类对象被销毁前调用,通常用来设定对象被销毁前需要完成的一些操作。销毁对象最简单的方法是直接对其赋值NULL
   析构函数语法:function __destruct(){}
   脚本在执行结束时,PHP会自动销毁内存中的所有对象。因此,对于一般的类对象不需要显式地定义析构函数。
   但是如果类对象在实例化时创建了不太容易销毁的数据,如果数据存储在数据库中而不是内存中,就应当定义一个析构函数,在类
   对象销毁时使这些数据能够正常被销毁。
8、静态属性和方法
   静态属性和方法需要使用关键字“self::”来引用,其他介绍前文已有
9、类运算符instanceof
   可以判断一个对象是否是一个类的实例
10、继承已有的类
   继承使用关键字extend                                        
11、类的重载
   重载是指在子类中再次定义与父类相同的属性和方法。类的重载使得在子类中可以给某个属性赋予一个与其父类中不相同的值,
   也可以给某个方法指定一个与其父类中不相同的功能。  
12、访问父类中的属性和方法
   一个子类可以通过继承和重载得到父类中的属性和方法,并能够重写所继承的属性和方法。但有些时候,在子类中会需要直接
   调用父类中的方法。在PHP中可以使用关键字“parent::”来实现对父类中属性和方法的访问。
13、使用final关键字禁止继承和重载
   当在一个函数定义前面使用关键字“final”时,表示该函数将不能被任何子类重载。
   如果不希望让一个类继承,只需在定义类时为其添加“final”关键字
   如果一个类中的属性或方法被指定为“private”,则该属性或方法将不能被继承
   如果一个类中的属性或方法被指定为“protected”,则该属性或方法可以被子类继承,但不能在类外部直接访问
   如果一个类中的属性或方法被指定为“public”,则该属性或方法不仅可以被子类继承,而且在任何地方都可以被访问
14、抽象类和抽象方法
   抽象类是不能实例化的类,只能作为其他类的父类使用。所以继承抽象类的子类都必须实现所有的抽象方法。
   在PHP中使用关键字“abstract”定义一个抽象类和方法。
15、接口
   接口是一种特殊的抽象类,这种抽象类中通常只包含抽象方法,不定义属性。属性的定义和抽象方法的实现交给实现接口的类来完成。
   定义接口使用关键字“interface” 实现接口使用关键字“implements”
16、实现多个接口
   PHP中的类不允许多重继承,但允许实现多个接口
17、对象的赋值
   目标对象 = clone 原对象; 复制后两个对象完全一样,但互不干扰
   在PHP中还可以使用__clone()方法调整对象赋值的行为。默认情况下,该函数将建立一个与原对象拥有相同属性和方法的对象,如果希望
   在赋值后改变原对象中的某些内容,只需在方法中重写原对象中的相应的属性和方法即可。该方法可以使用$this指针
18、自动加载类
   PHP专门提供了__autoload()函数,来自动加载所需的类。
   在需要加载时,该函数会自动被调用,同时类名会以参数的形式传递给__autoload()函数
19、处理不存在方法调用
   当调用类中一个不存在的方法将会产生致命错误,PHP提供了__call()方法可以对这种类型的错误进行处理。
20、对象的序列化
   为了方便变量的传输和存储,通常会在传输和存储变量前将其转化成为字符串的字节流形式,在需要使用这些变量时,再将其还原为
   原来的变量,这个过程成为序列化和反序列化。
   为了方便传输和存储类对象,也可以对齐进行序列化和反序列化处理。PHP中使用函数serialize()来序列化一个对象,其参数为对象名,
   返回值为序列化后得到的字符串。反序列化使用unserialize()函数,其参数为字符串,返回原来的对象。
   对象在序列化的时候,会自动调用一个名为__sleep()方法,完成一些睡前的事情,该方法不接收任何参数,但会返回一个数组,数组中
   指定需要序列化的属性,未被包含的属性将在序列化时被忽略。如果没有指定__sleep()方法,PHP将对所有的属性进行序列化。
   对象在反序列化时,会自动调用一个名为__wakeup()的方法,做一些对象醒来就要做的动作。
八、PHP访问MySQL数据库
1、数据库操作的基本步骤
   链接数据库服务器    mysql_connect(MySQL服务器主机名,用户名,密码);
   选择一个数据库      mysql_select_db(数据库名,资源标识);
   对数据库进行操作    mysql_query(数据库语句,资源标识);
   对数据记录进行处理 mysql_fetch_row(资源标识);
2、连接和关闭数据库
   $connect = mysql_connect("localhost","root","123456");
   在结束对数据库的操作之后,mysql_connect()会自动断开连接,也可以显式地使用mysql_close()断开连接。
 
   mysql_pconnect()建立的是一种持久连接,一旦建立连接,连接将被放到连接池中,即使数据库操作结束也
   不会自动关闭连接,而是留待以后使用。即使使用mysql_close()函数也无法关闭由函数mysql_pconnect()建立
   的连接。

   完成数据库操作后,应当关闭连接。但关闭不是必需的,因为PHP具有垃圾回收功能,会自动对不用的连接进行
   处理。当然可以显式地关闭连接,关闭连接需要资源标识号,如果没有指定,则默认关闭最近打开的连接。
   mysql_close(资源标识号);

3、选择数据库
   选择数据库mysql_select_db(数据库名,资源标识号);

4、查询数据库
   执行查询操作的函数有mysql_query()和mysql_db_query()。其中函数mysql_query()直接执行一个SQL语句,
   而函数mysql_db_query()可以在指定数据库上执行SQL语句。

   mysql_query(SQL语句,资源标识号):
     如果SQL语句是select、show、expllain、describe等查询语句,则执行成功时将返回一个资源标识号,失败时返回false
     如果SQL语句是其他语句(insert、update、delete等),成功时返回true,失败时返回false。

   mysql_db_query(数据库名,SQL语句,资源标识号)功能同上,此句相当于mysql|_slect_db()和mysql_query()的组合。

5、获取和显示数据
   mysql_fetch_row(资源标识号)以数组的形式返回查询结果集中的当前记录行,并在调用后将结果集中的当前行指针下移一行
   mysql_fetch_array(资源标识号)以数组的形式返回查询结果集中的当前记录行,并在调用后将结果集中的当前行下移一行
   NOTE:mysql_fetch_row()返回的结果数组只能使用数字下标进行访问,mysql_fetch_array()返回结果数组可以使用数组下标,
         也可以使用字段名进行访问,不过mysql_fetch_row()可以得到最快的执行速度
   mysql_fetch_assoc(资源标识号)以关联数组的形式返回查询结果集中的当前记录行,并在调用后将结果集中的当前行指针下移一行
   mysql_fetch_object(资源标识号)以对象的形式返回查询结果集中的当前记录行,并在嗲用后将结果集中的当前行指针下移一行
 
   mysql_result(资源标识号,行号,字段)字段可以使用数字索引,也可以使用字段名。数字索引下标从0开始
   该函数返回指定记录行的指定字段的值

   mysql_num_rows(资源标识号)返回符合查询条件的记录行数
   mysql_field_seek(资源标识号,定位的行号)定位到要查询的行
   mysql_fetch_length(资源标识号)以数字索引数组的形式返回,且每个数组元素值对应一个字段的字节数
6、数据的增删改及相关操作
   使用mysql_query()完成数据的增删改操作
   int mysql_affected_rows(资源标识号)返回受insert、update和delete影响的记录数
   mysql_num_rows()仅对select语句有效



PHP编程实战100例:初学者进阶之路 PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言。它特别适合于Web开发并可嵌入HTML中使用。搭建PHP开发环境是学习PHP的第一步。通常需要安装一个本地服务器环境,如XAMPP、WAMP或MAMP。这些软件包为开发人员提供了易于使用的Apache服务器、MySQL数据库和PHP解释器。PHP支持多种数据类型,包括:整型(int)浮点型(float)字符串(string)布尔型(bool)数组(array) 阅读详情

相关推荐

编程新手到忍者的转变:PHP & MySQL第七版读后感

本文是关于《PHP & MySQL: Novice to Ninja, 7th Edition》书籍的读后感。作者Tom Butler以自己丰富的编程经验,讲述了编程的变迁、学习的挑战与乐趣,以及如何在编程之路上不断进步。他强调了基础知识的重要性,并鼓励读者在遇到难题时勇于从头开始。

weixin_42143092的博客 313

php自学好还是培训,转行php选择自学还是培训

首先,我们要明确一点,不管是自学还是培训,兴趣是最好的老师,学习是一个由易到难、循序渐进的过程。接着,我们来说一下,应该如何去学习?1、你可以先简单了解一下关于PHP的相关知识,了解之后如果确定感兴趣,并且做好了准备,你就可以开始学习了。2、学习之前,再三询问一下身边有过学习经历或者入行这一职业的前辈,他们的意见可以为你提供参考。你需要结合他们的建议,制定自己的学习路线。最后,我们来说一下,如何选...

weixin_29017445的博客 427

Axure rp9 中继器新建表格

Axure rp9 中继器新建表格

weixin_49295490的博客 1652

php学习资源资料分享-初学到掌握

有一点值得很庆幸——就是我的F盘占用空间是最多的,里面都是这些年积攒的各类php学习及关于php的资料。有软件,有文档,有视频,有手册,也有很多php源码。都是以前学习过的,相对比较基础,容易上手,分享给爱好php学习的初学者。这几天真是难得能静下心来整理这些,资源不多,望能给大家那么百分之一的帮助,我也很欣慰! 视频大多是传智播客和php100上的,以前基本上有全套,因为电脑丢

funny的专栏 438

golang任意代码免杀绕过火绒+电脑管家

火绒和电脑管家主要以静态规则为主,但是有时候静态杀起来也挺让人奔溃的,这边分享一下如何拿捏火绒和电脑管家本文主要介绍如何通过garble进行混淆编译来绕过火绒,garble也可以绕过其他杀软,但是对火绒和电脑管家特别有效果,以火绒为例 下面来对比一下golang原生和garble混淆编译后得差距来一个很原始的的shellcode loader代码,将原始shellcode base64后就进行加载执行。

2301_79571829的博客 1533

HCIA重点知识

华为认证ICT工程师,是华为认证体系中用于标识个人能力在某一技术领域达到工程师级别的证明,表示通过认证的人员具备安装、配置、运行 ICT 设备,并进行基础故障排除的能力。抽象语言 -----> 编码 -----> 二进制 -----> 电信号 -----> 处理电信号信号的转换标准:协议,是一种允许电子设备相互交流的一系列标准的规则。即开放系统参考模型OSI/RM,简称“OSI”。OSI参考模型将计算机网络分为七个层次,自上而下依次为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。1、应用层:

Awen0201的博客 2543

php常用知识积累

php中的符号: ::这个符号是调用static的方法的 ->这个符号需要先实例化类在进行调用Author:leedaning 本文地址:http://blog.youkuaiyun.com/leedaning/article/details/46461269

leedaning的专栏 718

存内计算路线再获加持,清华存内芯片登Science

通过这种方法,可以比较有效的控制二氧化铪忆阻层中的微观变化,以及内部的温度和电场,使得器件具有非常优异的电学特性,而且可以在工厂里大规模生产,推动了高性能忆阻器阵列的诞生。团队搭建了全硬件构成的完整存算一体系统,如下图7所示,在系统里集成了多个忆阻器阵列,并在该系统上高效运行了卷积神经网络算法,成功验证了图像识别功能,证明了存算一体架构全硬件实现的可行性,并且成功实现了以更小的功耗和更低的硬件成本完成复杂的计算[6]。根据测试,在一般神经网络中权重更新的最后阶段,调整步长非常接近0,如图9(C)所示,

PXX12345678的博客 1556

php基础案例例子,PHP基础案例教程

内容简介本书是面向PHP初学者推出的一本入门教材,站在初学者的角度,以通俗易懂的语言、丰富的图解、实用的案例,详细讲解了PHP语言的基础知识。为了顺应技术的更新,本书基于PHP 7.1版本进行讲解,并介绍了PHP 5.4~7.1之间版本的差别,以确保代码的兼容性。全书共分为16章,其中有12个章节讲解新知识,4个章节为阶段案例。在知识讲解章节,还配备了动手实践,用于将本章所学内容进行练习和巩固,达...

weixin_30151653的博客 2284

UFS 功能描述:UFS boot

UFS 启动过程介绍:启动配置,启动代码下载过程和安全性

m0_51720747的博客 1601

【天气雷达】双偏振产品-差分反射率ZDR详解

双偏振产品-差分反射率ZDR详解。

珞瑜的博客 5411

回家几天中自己积累的PHP常用知识

 1, 语句脱离:和Echo “hello world”;?>是等价的。 2, print_r的使用:$a=array(1,2,”hello”,array(“one”,”two”));则print_r($a);后输出:Array ( [0] => 1 [1] => 2 [2] => hello [3] => Array ( [0] => one [1] =>

dx_andy 822

单细胞数据分析(三):单细胞聚类分析

本文介绍了单细胞聚类分析的基本概念及其在单细胞RNA测序(scRNA-seq)数据中的应用。单细胞聚类分析通过将具有相似基因表达模式的细胞分组到不同的簇中,帮助识别细胞类型、状态和功能。文章详细展示了使用R语言中的Seurat包进行单细胞数据聚类分析的步骤,包括数据加载、降维、聚类和结果可视化。通过FindNeighbors和FindClusters函数,文章展示了如何基于降维数据进行细胞聚类,并选择合适的分辨率值。

专注生信领域 1913

PHP开发者如何从初学者到高手:提升技能与收入的完整指南

当前,互联网广泛流行,PHP作为一种受欢迎的服务器端脚本语言,在众多网站开发任务中依然备受喜爱。无论是对小企业还是大公司来说,对PHP开发者的需求都十分强烈。那么,PHP开发者怎样从初学者变成高手,并逐步提升自己的收入水平?今天,我们就来聊聊这个话题。

F3vbiJz7的博客 140

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

PHP零基础入门到原生项目开发

在这个过程中,我们需要从最基本的PHP语法开始学起,逐步了解变量、数据类型、运算符、控制结构等基础知识。通过原生项目开发实践,我们可以更加清晰地了解整个Web应用的构建过程和运行机制,从而提高我们的技术水平和解决问题的能力。在这个过程中,我们不仅可以逐步掌握PHP开发技术的基础知识,还可以在实践中不断积累经验、提高技能水平。当我们谈论“PHP零基础入门”时,我们指的是一个从完全不了解PHP到初步掌握其基本语法、函数和特性的过程。通过以上措施的实施,我们可以逐步实现从PHP零基础入门到原生项目开发的转变。

2401_85979589的博客 438

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

视频教程-PHP全栈开发之练习案例:用户注册登录(巩固php基础知识以及mysql数据库)-PHP

PHP全栈开发之练习案例:用户注册登录(巩固php基础知识以及mysql数据库) ...

weixin_34898401的博客 180

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PHP爱好中修改的代码,经验积累,献给PHP爱好者!!!_php

最近刚刚完成手中的项目,比较闲。来这儿转转,把积累的一些技巧分享给大家!1、关于php重定向方法一:header("Location: index.php");方法二:echo "window.location =/"$PHP_SELF/";";方法三:echo "";http://www.gaodaima.com/45207.html经验积累,献给PHP爱好者!!!_php2、获取访问者浏览器f...

weixin_30840919的博客 197

php入门到精通

对于PHP来说,我给个从入门到精通大约需要几年的模板。其他语言大家自行套弄1、入门(第一阶段)标准:掌握基本的语法。能够在记事本上写 hello world 。能够从网上下载wamp等全自动套件安装php+apache环境。同时你的helloworld能够运行此阶段,大约需要一周到一个月时间。看激情,没有固定的。精神状态:迷茫。经常用手抓头发,熬夜是常事情感生活:有女朋友2、入门(第二阶段)标准:...

默孚龙 553

学习PHP到什么程度就可以去交流

这种情况下,可以说是,仅仅掌握基础知识和实践经验是不够的,我们还需要提升自己的交流能力。(如果)假设这一点,那就首先我们还需要学会尊重他人,保持谦虚和开放的态度,以建立良好的交流氛围。但我们可以从基础知识的掌握、实践经验的积累、交流能力的提升、对PHP生态系统的了解以及持续学习的态度等方面来不断提升自己。在编程的世界里,PHP以其广泛的应用和强大的功能,吸引了无数开发者的目光。了解这些内容,可以帮助我们更好地理解PHP的应用场景和最佳实践,从而在交流中提出更有价值的问题和观点。

2401_86114424的博客 463

学习php要学习c语言吗

通过本文的介绍我们了解到,虽然学习PHP并不严格要求事先具备C语言的知识,但在某些情况下拥有C语言的经验确实能够为PHP开发者带来优势。因此,根据自身情况做出合适的选择是非常重要的。不论采取何种学习路径,保持好奇心、勇于尝试新事物都是成为一名优秀程序员不可或缺的品质。最后提醒大家,编程是一项长期的学习过程,重要的是享受其中的乐趣并始终保持积极向上的态度。祝各位在未来的学习道路上越走越远!

x3088的博客 1131

学习PHP的路线:我的朴实之路

这些概念都让我感到头疼。这个过程并不容易,但我发现,每当我解决了一个问题,我就离真正的Web开发更近了一步。我相信只要我保持学习的热情不断积累经验和知识我一定能够成为一名优秀的PHP开发者。直到有一天,我偶然间看到了一本PHP的入门书籍,它用简单易懂的语言介绍了PHP的基本概念。在开发过程中,我遇到了很多困难,但正是这些困难让我更加深入地理解了PHP和Web开发。每当我解决了一个问题,我就感到自己的技能又提升了一点。那时候的我,连什么是服务器、什么是数据库都不懂,更别说PHP这种听起来就很高大上的东西了。

2401_85969294的博客 459

如何自学编程(三)-初学者应该知道的一些事

  在前两篇文章,我从初学者的角度给同学们分享了程序开发的一个基础概念,并做了一些简单的叙述,如果你还没有阅读前面两篇文章,你可以打开以下链接进行阅读: 1.如何自学编程? 2.如何自学编程(二)-该如何选择入门语言?   在这篇文章,我将继续给初学编程的小伙伴们分享一些建议,希望对你的自学之路有帮助的作用。 一、给自己制定学习目标   当我还是初学者的时候,对很多技术概念和一些专业术语知之甚少...

极客开发者的博客 3201

初学者php,PHP从入门到精通---适合PHP初学者

由于互联网相较于传统行业事一个门槛低薪资高的一个朝阳产业,所以,you很多you一些计算机基础或没编程基础的人就you些蠢蠢欲动,那么成为PHP工程师,you两种办法,第一种自学PHP,第二张参加PHP培训,那在选择学习PHP方式之前,我还想从以下几点阐述一下现在学习PHP人员的情况:第一种自学PHP:自学PHP无非两种结果成与不成,自综合来看成的情况基本是:自学能力强,自律性强,自主性强的还yo...

weixin_29169899的博客 459

PHP博大精深,入门容易,精通难,怎么才能真正学好PHP

基础最重要   (1)熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度   (2)理解动态语言的概念,运做机制,熟悉PHP语法   (3)学习如何将PHP与HTML结合起来完成简单动态页面   (4)接触MYSQL,开始设计数据库程序   (5)不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板   (6)完成一个

技术分享 2335
上一篇: PHP对XML的操作
下一篇: 各类邮箱服务器
yanfangphp
博客等级 码龄15年 126粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值