1、php if...else 在html中的替代语法

<?php $name = 'ok' ?>
<?php if ($name == '1ok') : ?>
<div>this is first</div>
<?php else: ?>
<div>this is second</div>
<?php endif ?>

2、php for在html中的替代语法

<?php for ($i = 0; $i < 10; $i++): ?>
<div>are you ok???</div>
<?php endfor ?>

3、php switch在html中的替代语法

<?php $a = 6 ?>
<?php switch (true): ?>
<?php case $a == 3: ?>
<div>this is first</div>
<?php break; ?>
<?php case $a == 4: ?>
<div>this is second</div>
<?php break; ?>
<?php case $a == 5: ?>
<div>this is third</div>
<?php break; ?>
<?php default: ?>
<div>没有可匹配的了</div>
<?php endswitch ?>

4、require,require_once,include,include_once的区别

require与include的用法一样,通常为引用一个文件,但是require的错误级别高,一旦遇到错误那么主停止运行,include的错误级别低,遇到一般性的错误还是会往下执行语句

如:

<?php
ini_set('display_errors', true);
require './index1.php';
//include './index1.php';
echo 'are you ok???'
?>

引入一个不存在的文件,require会报Fatal error,并且不会往下执行语句,但是include会输出are you ok???这个语句

require_once 同include_once除了以上的区别外其他的作用一样,在一个文件引入多次的情况下,只执行一次,以防重复引用

5、常用超全局作用域

可以接收表单或者超链接发送过来的数据

$_GET['参数名称‘]  可以通过表单发送过来的数据进行接收数据,也可以通过超链接的形式接收数据如下

<a href='./index.php?name=username&psd='aaa'>跳转</a>

那么在Php端的数据接收方式如下代码

<?php
header('content_type:text/html,charset=utf8');
ini_set('display_errors',true);
$name=$_GET['username'];
$pwd=$_GET['psd'];
echo '用户名'.$name,'密码'.$pwd;
?>

$_POST['参数名称']接收通过Post方式传输过来的数据,用法同get,但是不支持超链接传输

$_SERVER 返回的是服务器以及客户端的信息,如host信息,HTTP_USER_AGENT信息等

$_REQUEST 可以接收get请求,post请求,cookie等

$_FILES接收的是上传的文件的信息(注意上传文件在表单里面采用的是Post方式,同时设置enctype="multipart/form-data")

<?php
var_dump($_FILES);
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>test</title>
</head>
<body>
<form action="./test.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
</html>

输出的结果如下

array(1) {
["file"]=>
array(5) {
["name"]=> string(22) "method API整理.docx" //表示文件名称
["type"]=> string(71) "application/vnd.openxmlformats-officedocument.wordprocessingml.document" //表示文件类型
["tmp_name"]=> string(44) "C:\Users\yufen\AppData\Local\Temp\php465.tmp" //上传文件的临时存放的地址
["error"]=> int(0) //错误
["size"]=> int(15805) //文件大小
}
}

那么接收改变文件的名字可以用move_upload_file函数进行处理

6、变量的引用传值

变量的引用传值是用&来表示的,当采用引用传值后,一方的改变会影响的另一方的值,但是一方的删除则不会影响另一方的值

<?php
header('content-type:text/html;charset=urf8');
$first = 'are you ok???';
$second =& $first;
$second = 'good bye';
echo $first;
//输出 good bye
unset($first);
echo '<br>';
echo $second;
//输出 good bye $first的删除不会影响到$second的值
?>

 在php中默认的引用传值方式有

在对象中的默认的引用传值(注意区别与js,在数组中,js存在引用传值 ,而在php中数组不存在引用传值)

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
$arr = [
'first' => 'are you ok???',
'second' => 'today is good day'
];
$arr1 = $arr;
$arr1['first'] = 'haha';
var_dump($arr);
var_dump($arr1);
//输出
//array(2) {
// ["first"]=>
// string(13) "are you ok???"
// ["second"]=>
// string(17) "today is good day"
//}
//array(2) {
// ["first"]=>
// string(4) "haha"
// ["second"]=>
// string(17) "today is good day"
//}
?>

在类中存在引用传值

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
} $p1 = new Person();
$p1->name = 'Leo';
$p2 = $p1;
$p2->name = 'Jim';
echo $p1->name;
//输出 Jim;
echo $p1->name;
//输出 Jim;
?>

7、函数里的静态变量static

在php中如果一个函数运行完,那么里面的变量会被销毁,不会被保存,如果有需求要里面的变量继续存在,那么可以定义一个静态的变量(static修饰),静态变量在函数中的作用是保存已定义好的变量,不再重新定义,但是在全局变量里面静态变量就没有意义了

<?php
ini_set('display_errors', true);
function addNum()
{
$num = 0;
$num++;
echo $num;
} addNum();
addNum();
addNum();
//输出 111;
function addStaticNum()
{
static $num = 0;
$num++;
echo $num;
} echo '<br>';
addStaticNum();
addStaticNum();
addStaticNum()
//输出 123
?>

8、局部变量与全局变量的互相转换

局部变量与全局变理的互相转换是通过$GLOBALS与global来声明互相转换的,但是前者是以数组形式进行的,后者是以变量形式进行的,祥见例子

<?php
ini_set('display_errors', true);
$name = 'Leo';
$age = 30;
function getName()
{
//对全局变量进行声明
global $name, $age;
echo $name, $age;
//输出 Leo30
//对全局变量进行更改
$name = 'are you ok???';
echo $GLOBALS['name'], $GLOBALS['age'];
//(注意以上的写法,里面是字符串)输出 are you ok???30
global $say;
$say = 'today is good day';
//对全局变量进行声明,不建议在函数内部进行全局变量的声明
} getName();
echo $say;
//输出 today is good day
?>

 $GLOBALS可以访问到全部的全局变量可以用var_dump($GLOBALS)来查看

9、变量中常用的三个函数 isset   unset   empty

isset(mixed $val,...)检测变量是否已经定义

unset(mixed $val,...)销毁指定的变量

empty(mixed $val)判断指定的变量是否是空  如'',0,0.00,false,[],null等

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
$name = '123';
var_dump(isset($name));//输出true
var_dump(empty($name));//输出false
unset($name);
var_dump(isset($name));//输出false
?>

10、常量

常量一经定义是不能修改和删除的,只能等程序自动释放内存

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
//方式一,通过define来定义,但是大写的词必需添加引号
define('NAME', 'leo');
define('AGE', 20);
echo NAME, AGE;
define('ARR', [1, 23, 4, 5, 6]);
var_dump(ARR);
echo '<hr/>';
//方式二
const TOKEN = 'are you ok???';
echo TOKEN;
const WEAPON = [
'ARROW' => 1,
'GUN' => 2,
'AXE' => 3
];
const CNAME = [
WEAPON['ARROW'] => '箭',
WEAPON['GUN'] => '枪',
WEAPON['AXE'] => '斧'
];
var_dump(WEAPON);
var_dump(CNAME);
?>

11、魔术常量

__LINE__  返回当前代码的行号

__DIR__返回当前的目录

__FUNCITON__返回当前函数的名称

__CLASS__返回类的名称

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
echo(__LINE__);
//输出 4
echo(__DIR__);
//输出 C:\wnmp\nginx\www
function test()
{
echo __FUNCTION__;
} test(); //输出 test
echo '<hr>'; Class Check
{
public function __construct()
{
echo __CLASS__;
} public function init()
{
echo __CLASS__;
}
} $tc = new Check();
$tc->init();
//输出 Check Check;
?>

12、heredoc与nowdoc

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
$name = 'leo';
//可以解析变量
$heredoc = <<<AAA
<div>my name is {$name}</div>
AAA; echo $heredoc;
//不能解析变量
$nowdoc = <<<'AAA'
<div>my name is {$name}</div>
AAA;
echo '<br>';
echo $nowdoc;
?>

13、php的最大值可以用 PHP_INT_MAX来查看,最大的位数PHP_INT_SIZE;php的错误控制符@

<?php
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
echo @$a;
?>

14、数组的运算

两个数组相加,相当于合并,如果有相同项前者会覆盖后者

<?php
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
$a1 = ['name' => 'leo', 'age' => 30];
$a2 = ['age' => 20, 'hobby' => 'sport'];
var_dump($a1 + $a2);
//输出 array(3) { ["name"]=> string(3) "leo" ["age"]=> int(30) ["hobby"]=> string(5) "sport" }
$arr = [
'name' => 'aaa',
'age' => 20,
'sex' => 'man',
'hobby' => 'sport'
];
$arr1 = [
'name' => 'aaa',
'age' => 20,
'sex' => 'man',
'hobby' => 'sport'
]; var_dump($arr == $arr1);
//输出true
var_dump($arr === $arr1)
//输出true
?>

15、goto语句(该方法尽量少用)

<?php
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
goto a;
echo 'are you ok????';
a:
echo 'today is good day!!!'; //输出 today is good day!!!
?>

16、return的使用,不仅在函数中可以进行返回操作,同时也可以在页面进行return 进行停止页面,也可以在Php文件中return通常用作配置文件中

<?php
header('content_type:text/html,charset=utf8');
//输出页面
return array(
'name' => 'leo',
'age' => 20,
'sex' => 'man'
);
?> <?php
//在接收页面
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
$arr = include('./index.php');
var_dump($arr);
?>

17、可变函数

当变量名加上括号,那么Php系统会尝试着解析成函数如下

<?php
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
$a = 'sum';
function sum($a, $b, $c)
{
return $a + $b + $c;
} echo $a;
//输出 sum;
echo $a(1, 2, 3);
//输出 6
?>

18、回调函数

回调函数的调用可以分成两种方式,如下例子

<?php
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
function sum($a, $b)
{
return $a + $b;
} function getSum($a, $b)
{
return sum($a, $b);
} function getSum1($a, $b, $c)
{
return $c($a, $b);
} echo getSum(1, 3);
//输出4;
echo getSum1(2, 4, 'sum');
//输出6
?>

19、匿名函数

注意use在函数中的使用

<?php
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
$test = (function () {
$sum = function ($a, $b) {
return $a + $b;
};
$say = function () {
echo 'are you ok???';
};
return function ($a, $b) use ($sum, $say) {
$say();
return $sum($a, $b);
};
})();
echo($test(1, 3));
//输出 are you ok???4

20、递归调用

一个函数内部再次调用自己,并且有条件的退出调用,这种调用方法称作递归调用

<?php
header('content-type:text/html;charset=UTF8');
ini_set('display_errors', true);
//求斐波那契数列,每个数字都是由第面两个数的和,第一个数和第二数除外
//1,1,2,3,5,8,13,21,34...
//作用递归函数求
function getValue($num)
{
if ($num == 1 || $num == 2) {
return $num;
}
return getValue($num - 1) + getValue($num - 2);
} echo getValue(7);
?>

21、面向对象的构造函数

a、构造函数有三个修饰 public ,protected,private ,默认是Public

b、构造函数没有返回值,不能return,写法是固定的,不能修改

c、__construct是系统自调用,不能人为调用

d、如果在一个类中没有定义构造函数,那么就会默认一个构造函数

注意:在老的php版本里面,会把类名定义成里面的一个内置方法,那么相当于__construct的作用

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
public $age;
public $food; public function __construct($name, $age, $food)
{
$this->name = $name;
$this->age = $age;
$this->food = $food;
echo $this->name, $this->age, $this->food;
}
} $p = new Person('aaa', 20, 'cake');
//输出 aaa20cake
?>

22、析构函数

析构函数__destruct方法

a、在页面运行完后,系统自动释放缓存的时候被马上就会调用(在删除的时候,是按照后进先出的原则,即后声明的先执行析构函数)

b、在所有指向这个函数的方法都销毁后被调用

c、给程序员一个机会去及时的回收创建的资源(如关闭数据库)

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
public $age;
public $food; public function __construct($name, $age, $food)
{
$this->name = $name;
$this->age = $age;
$this->food = $food;
echo $this->name, $this->age, $this->food;
} public function __destruct()
{
echo __CLASS__ . '这个对象已经被销毁了';
}
} $p = new Person('aaa', 20, 'cake');
$p = null;
echo 'today is good day';
//输出 aaa20cake Person这个对象已经被销毁了 today is good day
?>

23、魔术方法

a、魔术方法都是系统提供的,程序员使用即可

b、所有的魔术方法都是以__开头的,所以在写自定义函数的时候不要以__开头

c、魔术方法是在满足某个条件的时候,有系统自动调用

A、魔术方法之__get 和__set的使用,当访问和设置类里不公开的属性的情况下,可以自动触发类里面的__get和__set方法

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
protected $age;
private $sex; public function __construct($name, $age, $sex)
{
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
} /**魔术方法,获取内部不能访问的方法
* @param $pro_name指定的变量名
* @return string
*/
public function __get($pro_name)
{
//property_exists是判断某个类里面是否含有指定的方法如下
if (property_exists($this, $pro_name)) {
return $this->$pro_name;
} else {
return '没有这个属性';
}
} /**设置内部的变量
* @param $pro_name变量名
* @param $pro_val变量值
*/
public function __set($pro_name, $pro_val)
{
if (property_exists($this, $pro_name)) {
$this->$pro_name = $pro_val;
}
}
} $p1 = new Person('aaa', 30, 'man');
var_dump($p1->name);
//输出 aaa
echo '<br>';
var_dump($p1->age);
//输出 30
$p1->sex = 'woman';
echo '<br>';
var_dump($p1->sex);
//输出 woman
?>

通过魔术方法__get来调用方法(常用)

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
public $age; public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
} public function getName()
{
return $this->name;
} public function __get($pro_name)
{
if (property_exists($this, $pro_name)) {
return $this->$pro_name;
} else if (method_exists($this, $pro_name)) {
return $this->$pro_name();
}
return '没有这个方法或者属性';
}
} $p = new Person('leo', 30);
var_dump($p->getName);
?>

注意:如果对一个不存在的变量进行赋值,那么会动态的在类里添加一个Public的属性,这个可以使用__set来阻止

注意,property_exists(class,per)在判断是否存在某个属性的时候,先判断是否存在,然后再去判断类里面是否设置过指定的属性,原理同isset判断类里的属性是否存在一样(这个主要是判断变量是否存在的,如果是判断方法是否存在的,那么要使用method_exists(class,per))来判断

B、__isset和__unset魔术方法

当调用isset和empty两个方法来判断类里的属性时,那么会自动触发类里的__isset的魔术方法

当调用unset这个方法来删除类里的属性时,那么会自动触发类里的__unset的魔术方法

以上两个方法接收一个参数,是属性的名字

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
private $age;
private $sex;
private $salary; public function __construct($name, $age, $sex, $salary)
{
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
$this->salary = $salary;
} public function __isset($pro_name)
{
return property_exists($this, $pro_name);
} public function __unset($pro_name)
{
if (property_exists($this, $pro_name)) {
unset($this->$pro_name);
}
} public function __get($pro_name)
{
if (property_exists($this, $pro_name)) {
return $this->$pro_name;
}
return '该属性不存在';
}
} $p = new Person('leo', 20, 'man', 10000);
var_dump(isset($p->sex));
//输出 true;
unset($p->salary);
var_dump($p->salary);
//会报错 并且返回Null
?>

C、__toString魔术方法

当打印实例化的类的时候,会触发__toString的方法,打印出指定的东西,这个是为了充当debug来使用,没有参数,但是返回的是一个字符串

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
private $age;
private $sex; public function __construct($name, $age, $sex)
{
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
} public function __toString()
{
return "name:{$this->name},age:{$this->age},sex:{$this->sex}";
}
} $p = new Person('aaa', 20, 'man');
echo $p;
//输出 name:aaa,age:20,sex:man
?>

D、魔术方法__clone

当调用clone方法的时候就会触发类里面的__clone方法,如果不改变其他值时,两个对象的属性和值是相同的,但是拥有独立的内存空间,如果想阻止克隆,那么把魔术变量设置为private便可

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
public $age;
public $sex; public function __construct($name, $age, $sex)
{
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
} public function __clone()
{
// $this->name = 'are you ok???'; //可以改变克隆时的值
} // 这个方法可以阻止克隆
// private function __clone(){
//
// }
} $p1 = new Person('aaa', 20, 'man');
$p2 = clone $p1;
var_dump($p1 == $p2); //返回true 对象里面的值和属性一样,那么相对比较是相等的
var_dump($p1 === $p2); //返回false 对象里的内存空间指向不一样,那么绝对比较是不相等的
//如果想阻止克隆,那么只要把__clone设置为Private便可
?>

E、魔术方法__call

当需要调用类里面不能调用的方法(注意是方法,区别__get这个魔术方法)private或者是protected时候会自动触发__call这个魔术方法,执行的顺序是,先去调用是否有公开的API,如果没有才会去调用__call的方法

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
protected $hobby; public function __construct($name, $hobby)
{
$this->name = $name;
$this->hobby = $hobby;
} //公共的方法
public function showHobby()
{
if (!empty($this->hobby)) {
foreach ($this->hobby as $key) {
echo $key;
}
}
} //私有的方法
private function getSum()
{
$arr = func_get_args();
if (!empty($arr)) {
return array_sum($arr);
}
return 0;
} /**调用私有方法的魔术变量
* @param $func_name
* @param $params
* @return mixed|string
*/
public function __call($func_name, $params)
{
var_dump(method_exists($this, $func_name));
if (method_exists($this, $func_name)) {
return call_user_func_array([$this, $func_name], $params);
} else {
return '没有你要调用的方法,请检查';
}
}
} $p = new Person('aaa', [
'a' => 'reading',
'b' => 'writing'
]);
$p->showHobby();
//输出 reading writing
echo '<hr/>';
var_dump($p->getSum(1, 2, 3, 4, 5, 6, 7));
//输出 28
?>

利用__call魔术方法来实现方法的重载

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name; public function __construct($name)
{
$this->name = $name;
} public function getSum($val1, $val2)
{
return $val1 + $val2;
} public function getMax($val1, $val2, $val3)
{
return max($val1, $val2, $val3);
} public function __call($method_name, $params)
{
if ($method_name == 'deal' && count($params) == 2) {
return call_user_func_array([$this, 'getSum'], $params);
} else if ($method_name == 'deal' && count($params) == 3) {
return call_user_func_array([$this, 'getMax'], $params);
}
return 'are you ok???';
} } $p = new Person('leo');
echo $p->deal(1, 2) . '<br>';
//输出 3
echo $p->deal(4, 5, 6);
//输出 6
?>

利用__callStatic来实现静态方法的重载

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Person
{
public $name;
public static $getSum;
public static $getMax; public function __construct($name)
{
$this->name = $name;
} private static function countSum($val1, $val2)
{
return $val1 + $val2;
} private static function countMax($val1, $val2, $val3)
{
return max($val1, $val2, $val3);
} public static function __callStatic($method_name, $params)
{
if ($method_name = 'sCount' && count($params) == 2) {
return call_user_func_array(['self', 'countSum'], $params);
} else if ($method_name = 'sCount' && count($params) == 3) {
return call_user_func_array(['self', 'countMax'], $params);
}
return '对不起,没有这个静态方法';
}
}
var_dump(Person::sCount(1, 6));
var_dump(Person::sCount(1, 6, 9));
//输出 int(7) int(9)
?>

F、类的自动加载,使用__autoLoad方法

__autoLoad是系统方法,有点像魔术方法,但是不是魔术方法

这个方法主要功能是完成类的自动加载,当程序员使用到一个未定义的的时候,就会自动触发__autoLoad这个函数

//Index.php里的文件
<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); class Index
{
public $name;
public $age;
private $salary; public function __construct($name, $age, $salary)
{
$this->name = $name;
$this->age = $age;
$this->salary = $salary;
} public function __get($pro_name)
{
if (property_exists($this, $pro_name)) {
return $this->$pro_name;
} else {
return '这个类里面是没有这个名字的';
}
}
}
?>
//test.php里的文件
<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
/**当方法在使用到这个类的时候,没有发现这个类,那么就会调用__autoLoad这个方法去加载类
* 接收一个参数,即所调用的类的类名
* @param $class_name
*/
function __autoload($class_name)
{
require "./{$class_name}.php";
} $I = new Index('aaa', 30, 10000);
echo $I->salary;
//输出 10000
?>

如果遇到多个引入文件的情况下,可以用一个数组进行封装, 这样比较方便操作

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true);
$class_name_arr = [
'Index' => './Index.php'
]; function __autoload($class_name)
{
global $class_name_arr;
require_once $class_name_arr[$class_name];
} //错误写法
//function test()use ($class_name_arr) {
// var_dump($class_name_arr);
//}; //正确写法
//闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。
$test = function () use ($class_name_arr) {
var_dump($class_name_arr);
}; $I = new Index('aaa', 23, 20000);
var_dump($I->salary);
//输出 20000
$test();
//输出 array(1) { ["Index"]=> string(11) "./Index.php" }
?>

 使用spl_autoload_register的高级方式来完成类的加载,在后面的版本中autoLoad有可能会被弃用,但是目前autoLoad的使用范围还是很广泛

spl_autoload_register可以灵活的来注册需要加载的类,用法举例如下

<?php
header('content-type:text/html;charset=utf8');
ini_set('display_errors', true); //指定的加载模块
spl_autoload_register('my_autoload_func'); /**自定义的自动加载函数
* @param $class_name
*/
function my_autoload_func($class_name)
{
var_dump(func_get_args());
//输出 array(1) { [0]=> string(5) "Index" }
require_once "./{$class_name}.php";
} //会自动引进Index这个类
$p = new Index('leo', 30, 30000);
var_dump($p->salary);
//输出 int(30000)
?>

php 常用的知识点归集(上)的更多相关文章

  1. php 常用的知识点归集(下)

    24.静态属性与静态方法在类中的使用 需求:在玩CS的时候不停有伙伴加入,那么现在想知道共有多少人在玩,这个时候就可能用静态变量的方法来处理 利用原有的全局变量的方法来解决以上的问题 <?php ...

  2. Windows Phone开发(10):常用控件(上)

    原文:Windows Phone开发(10):常用控件(上) Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件.一般而言,如 ...

  3. JS中常用开发知识点

     JS中常用开发知识点 1.获取指定范围内的随机数 2.随机获取数组中的元素 3.生成从0到指定值的数字数组 等同于: 4.打乱数字数组的顺序 5.对象转换为数组 //注意对象必须是以下格式的才可以通 ...

  4. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  5. Hadoop_常用命令(hdfs上)

    Hadoop_常用命令(hdfs上) hadoop fs所有文件系统都可以使用 hdfs dfs仅针对于hdfs文件系统 - 1 - 查看所有目录(文件夹)及文件  hdfs dfs -ls / - ...

  6. Linux常用命令详解上

    Linux常用命令详解上 目录 一.shell 二.Linux命令 2.1.内部命令与外部命令的区别 2.2.Linux命令行的格式 2.3.编辑Linux命令行的辅助操作 2.4.获得命令帮助的方法 ...

  7. 预备知识-python核心用法常用数据分析库(上)

    1.预备知识-python核心用法常用数据分析库(上) 目录 1.预备知识-python核心用法常用数据分析库(上) 概述 实验环境 任务一:环境安装与配置 [实验目标] [实验步骤] 任务二:Pan ...

  8. 一文学会 TypeScript 的 82% 常用知识点(上)

    前端专栏 2019-11-22 19:17:55 对于前端从业者来说,TypeScript(以下简称 TS)已经不算是新技术. Vue3 的源码基于 TS 编写, Angular 项目默认支持 TS ...

  9. Groovy常用编程知识点简明教程

    概述 Groovy 是一门基于JVM的动态类型语言,可以与 Java 平台几乎无缝融合(与Java代码一样编译成字节码). 使用 Groovy ,可以增强 Java 应用的灵活性和可扩展性,提升开发效 ...

随机推荐

  1. Springboot文件上传与下载

    一.创建简单的springboot-web项目 二.文件上传属性配置 #默认支持文件上传 spring.http.multipart.enabled =true spring.http.multipa ...

  2. 「洛谷3338」「ZJOI2014」力【FFT】

    题目链接 [BZOJ] [洛谷] 题解 首先我们需要对这个式子进行化简,否则对着这么大一坨东西只能暴力... \[F_i=\sum_{j<i} \frac{q_iq_j}{(i-j)^2}-\s ...

  3. TortoiseSVN版本管理的注意点

    @2019-04-18 [小记] 1.强烈建议以项目(功能区别较大(单.双机做两个版本))为区别单独版本管理,这样可保证工程的延续性(能更好的使用更新.提交等功能)及避免后期提交时的混乱(.svn信息 ...

  4. 树莓派wiringPi,BCM,BOARD编码对应管脚

    wiringPi,BCM,BOARD编码 由于上课需要, 嵌入式学习从树莓派开始 树莓派中执行: $> gpio readall 即可得到关于树莓派管脚的各种信息 上面的图可能不是特别清楚, 可 ...

  5. pwn-格式化字符串漏洞

    原理:因为没有正确使用printf()函数 正确使用 : printf('%s',str) 不正规使用:printf(str) 控制字符串str可以爆出stack内内容从而实现任意地址读或者任意地址写 ...

  6. React踩坑记

    一: Support for the experimental syntax 'classProperties' isn't currently enabled ERROR in ./src/inde ...

  7. Linux下的sudo及配置

    sudo的常用命令 man sudoers # 参阅帮助 visudo # 编辑sudoers文件的命令 sudo -l # 查看可执行或禁止执行的命令 sudo -u user1 /bin/ls # ...

  8. I/O模型系列之二:Unix的五种网络I/O模型

    1. Unix的五种I/O模型 从上往下:阻塞程度(高-----低)I/O效率  (低-----高) 阻塞I/O(Blocking I/O):传统的IO模型 非阻塞I/O(Non-Blocking I ...

  9. mysql删除多个重复数据,多个字段添加唯一性索引

    需求:删除station_id.ab_data_time.item_code_id.data_cycle.ab_value 字段重复的记录 #查询重复的数据 select b.id,b.station ...

  10. LabView ModBus安装

    好久没写东西了(好菜哦...) 最近搞一个项目,开始入门LabVIEW,感觉类似于MATLAB里面的simulink 我使用LabVIEW是想用来和PLC通信的.因为PLC里面可以做ModBus,所以 ...