PHP笔记
PHP笔记
1.php4种标签风格及3种注释风格
i.标签风格
a.XML风格
echo "hello world!";
?>
b.ASP风格
<%
echo "hello world!";
%>
c.脚本风格
echo "hello world!";
d.极简风格
注意:当使用极简风格和ASP风格时需要在php.ini文件中配置short_open_tag和asp_tags设置为on
ii.注释风格
a.c++风格的单行注释 //
b.c++风格的多行注释 /**/
c.shell风格的注释 #
2.php脚本执行的3种参数传递与解析
a.$argc和$argv 传递参数
echo "接收到{$argc}个参数";
print_r($argv);
?>
执行结果: php.exe .\hello.php hello world -a 123
paras count : 5Array
(
[0] => .\hello.php
[1] => hello
[2] => world
[3] => -a
[4] => 123
)
b.getopt()函数解析参数
$param_arr = getopt('a:b:c:');
print_r($param_arr);
?>
执行结果:php test.php -a 345 -b 12q3
Array
(
[a] => 345
[b] => 12q3
)
c.提示用户输入
fwrite(STDOUT,'请输入您的博客名:');
echo '您输入的信息是:'.fgets(STDIN);
?>
3.php数据类型
php的变量使用$开头,属于动态数据类型,数据类型包括:
boolean string integer float array object resource null值
数据类型的定义:
a.string 单引号和双引号字符串的区别
同shell中的单双引号的区别相同,双引号的字符串需要先执行递归的变量替代
$a='hello world';
echo "hi,$a";
b1.string的界定符输出
目的:增强可读性
$string=<<
hi,
hello world
std; //结束
b2.格式化字符串
$formatted = sprintf ("hello,%s", "world");
printf($formatted);
c.array3种定义
$array=array("v1","v2");//数值自动键,从0开始
$array[key]="vkey";//字符指定键
$array=array(key1=>v1,key2=>v2) //字符键和数字键可以混用
d.null值
通常会用于变量申明
$str=null;
is_null($str) //true
$str="str"
is_null($str) //false
unset($str)
is_null($str) //true
e.数据类型之间的强制转换
$str="123"
$num=(integer)$str
$bl=(boolean)$str
f.数据类型检测函数
is_bool(),is_string,is_float(),is_double(),is_integer(),is_int(),is_null(),is_array(),is_object(),is_numeric()
g.常量定义函数
define(string 常量名,值,true/false大小写敏感)
bool defined(string 常量名) //判断该常量是否已经定义
define("ms",123)
echo ms+24;
h.php预定义常量
__FILE__ PHP程序文件名
__LINE__ PHP当前文件行数
PHP_VERSION
PHP_OS 执行PHP的OS
...
i.string的+运算和。运算
string + :表示将字符串转换成数字再执行+ (只转换字符串首部的数字,首部为字母则结果为0)
string . :表示将字符串拼接
$n="3.14r";
$m=1;
echo $n.$m , $n+$m //3.14r1 4.14
4.变量
a.变量的引用定义&
$i="hello"
$j=&$i
$i="$i,world"
echo $i // hello,world
echo $j // hello,world
b.变量的3种作用域
i.局部变量
函数中定义的变量,作用域为整个函数
ii.全局变量
函数以外的变量,作用域为当前PHP文件,但函数内部不可用,除非在函数中申明global才可作用于函数中
iii.静态变量
定义于函数中,函数结束时不会被释放
$msg="hello"; //全局变量
function hello(){
static $msg1="hello";//静态变量
global $msg; //函数中使用全局变量
$msg1="hello" //局部变量
}
?>
c.变量的递归性(可变变量)
$a="hello,world";
$b="a"
echo $$b //将输出hello,world
d.php预定义变量
$_SERVER['SERVER_ADDR'] //当前运行脚本所在的服务器IP
$_SERVER['SERVER_NAME'] //...服务器名
$_SERVER['REQUEST_METHOD'] //请求方法
$_SERVER['REMOTE_ADDR'] //
$_SERVER['REMOTE_HOST'] //
$_SERVER['REMOTE_PORT'] //
$_SERVER['SCRIPT_FILENAME'] //当前脚本的绝对路径
$_SERVER['SERVER_PORT'] //
$_SERVER['DOCUMENT_ROOT'] //当前脚本的文档根目录
$_COOKIE //通过HTTPCookie传递到脚本的信息(数组)
$_SESSION //包含与所有回话有关的信息(数组)
$_POST //包含通过POST方法传递的相关信息(数组)
$_GET //包含通过GET方法传递的相关信息(数组)
$_GLOBALS //所以已定义的全局变量组成的数组,变量名是该数组的索引(数组)
5.运算符
c语言中的所有运算符适用于PHP,并有其他运算符:
@:错误屏蔽运算符,可以屏蔽表达式产生的错误
$err=@(5/0) ;//防止系统报错,使得程序可以继续运行
6.函数
a.函数定义与调用
function fun_name($arg1,&$arg2,$arg3=value,...){
}
function exap($num){
return $num+10;
}
echo exap(10);
特点:入参的传递有2种值传递和引用传递,参数可以有默认值
b.函数作为变量值时的调用(变量函数)
$fun="exap";
$fun(10);
c.函数返回值得引用<=>函数的引用
$a=&exap(10)
echo $a."
";
unset($a) //解引用或解变量
7.流控制语句
a.if,switch,while,do...while,for与C语言相同
b.foreach 用于数组和对象
foreach(array_expression as $value) 或者 foreach(array_expression as $key => $value)
8.字符串处理
a.trim(string str[,string charlist]),ltrim,rtrim
默认删除字符串左右两边所有的空格,\0,\t,\n,\x0B,\r
b.字符串转义
"\",addcslashes(),stripcslashes()
例子:$m1="select * from t where book='m'";
$m="select * from t where book=\'m\'";
$m=addcslashes($m1)
也可以去转义
stripcslashes($m)
c.子字符串
string substr(string str,int start[,int len])
d.比较字符串
int strcmp(string str1,string str2)
int strnatcmp(string str1,string str2) 不区分大小写
int strncmp(string str1,string str2,int len)
e.字符串查找
string strstr(string str,string findstr) 返回findstr第一次出现的位置到str末尾的子字符串
int substr_count(string str,string findstr) 查找子字符串出现的次数
f.字符串替代
string str_ireplace(string new_substr,string old_substr,string str[,int count替代次数])
string substr_replace(string str,string repl,int star[,int len])
g.分割字符串
array explode(string sep,string str[,int limit限制返回值最多包含的元素])
h.合成字符串
string implode(string glue,array)
9.正则表达式
a.bool ereg/e regi(string pattern,string str[,returnarray]) 在字符串str中匹配pattern模式, 将匹配的字符放在返回数组中;如果匹配成功返回true,否则返回false。
b.string ereg_replace/eregi_replace(string pattern,string rep,string str) 使用rep替代 str中所有匹配pattern的子串,返回最后替代的结果
c.array split/spliti(string pattern,string str[,int limit]) 使用pattern分割str,返回 分割后的数组,最后返回limit个元素
d. array preg_grep(string pattern ,array input) 使用pattern匹配数组array中的所有元素, 返回完全匹配的元素(而不是部分匹配);pattern必须使用"/.../"包围
e.preg_match/preg_match_all(string pattern,string str [,array matches]) 使用pattern 匹配str中所有的子串并返回,返回匹配的次数
f. string preg_quote(string str[,string delimiter]) 将str中的所有特殊字符自动转义, delimiter字符串指定的所有字符也将被转义(即加上一个‘\’)
g.mixed preg_replace(mixed pattern, mixed replacement,mixed str[,int limit]) 使用pattern在str中匹配,将匹配的子串替代为replacement,最多替代limit次
h.mixed preg_replace(mixed pattern, callback ck,mixed str[,int limit]) 与上述函数相同,但是是使用ck函数的返回值来替代,ck的入参是一个数组,该数组是每一个匹配返回的所有分组
i.array preg_split(string pattern,string str[,int limit]) 使用pattern模式分割str。
10.数组
print_r(mixed)可以打印数组
each()和list()
explode()字符串拆分成数组
implode()数组组合成字符串
int count(array[,int mode]) 统计数组元素个数(mode==1递归统计)
mixed array_search(key,array) 在array中查找键值,如果找到返回键值;否则返回FALSE
mixed array_pop(array) 获取并删除数组中的最后一个元素,如果数组为空则返回null
int array_push(array,mixed v1[,v2,...]) 向数组尾部插入元素,并返回数组中的元素总数
array array_unique(array) 删除数组中重复的元素
11.php与web表单交互数据
a.表单用于浏览器发送数据到服务器,并使用action指明使用哪个url进行表单数据的处理。浏览器的数据只能通过表单来传送。表单的元素较多:checkbox,submit,reset,button,textarea...
b.GET和POST提交表单的区别:使用GET提交的表单将会将表单数据作为参数附加到url中进行提交;而POST方法不会。
c.关于全局变量$_POST,$_GET,$_SESSION
$_POST:数组格式,POST方法传递表单,使用表单元素的元素名获取元素值:$_POST['user'] .
$_GET :数组格式,GET方法传递表单,使用表单元素的元素名获取元素值:$_GET['user']
$_SESSION:session传参获取变量。使用表单元素的元素名获取元素值:$_SESSION['user']
根据表单元素的不同,传回来的'user'键对应的值有可能是一个数组
d.在web中嵌入php脚本的方法只有2种:
使用HTML标记编写php脚本;对表单元素的value属性进行赋值
include("index.php");//可以引用外部文件解耦合,多次引用将多次包含,如果只引用一次可以使用require_once
require_once("index.php"); //require
?>
$hidden="yg0025";
?>
$re=require("...")函数及其变种都具有返回值,返回调用的php文件中return函数的值
return "hello";
?>
include 和require的执行过程都是先将代码原本的拷贝到当前文件再执行。
return的效果也可以理解成将代码返回。return后面的代码将不会被拷贝。
这种拷贝有一个缺陷就是:同名变量或类有可能产生错误。
12.php与JavaScript交互
a.js的一些常识
js是一种由浏览器运行解析的脚本(也可以由服务器执行)。可以在不与服务器交互的条件下实现动态网页。
事件驱动:js是基于对象的语言。采用了事件驱动,当激发了某些事件时将执行相应的js代码。
js事件相应模式:
js的常用事件:onclick,ondblclick,onmousedown,...可以在网上查询js常用事件
与html解耦合: 包含外部文件
在页面底部(
之前)引入js脚本,原因:由于js加载阻塞页面,而HTML是下载多少渲染多少,因此我们把它至于页面底部,让UI线程先执行完再加载js脚本
13.日期与时间
14.cookie与session
cookie:
a.cookie是从一个web页面到下一个web页面的数据传递方法,存储在客户端;session是让数据在页面中持续有效的方法,存储在服务器端。功能:记录访客的信息;在页面之间传递变量;将所查看的Internet页缓存在cookie临时文件夹中;
b.php设置cookie
必须写在文件开头
setcookie("tmcookie","www.baidu.com");//生命周期默认为浏览器会话周期
setcookie("tmcookie","www.baidu.com",time()+60);//有效期60秒
setcookie("tmcookie","www.baidu.com",time+60,"/tm/",".baidu.com",1); //设置有效目录和域名
setcookie("tmcookie","",time()-1);//删除cookie
?>
浏览器会定时清流cookie,即使是未过期cookie也可能在cookie容量满时被清理
session
a.session以随机且唯一的session_id为文件名保存在服务器的文件中,该session_id则是保存在cookie中
写session:
session_start();
$_SESSION["admin"]="hello";//完成写session
?>
读session
if(!empty($_SESSION['admin'])) //将判断cookie中是否存在session_id和‘admin’字段,否则均返回null
$user=$_SESSION['admin']
?>
删除session
unset($_SESSION['admin']);
$_SESSION=array();//删除所有session
session_destory();//彻底销毁会话,确定会话结束时,应该这么做
b.session的过期时间(只有存在cookie时才能使用)
i.session_set_cookie_params将设置session_id的过期时间
session_set_cookie_params(1*60);
session_start();
$_SESSION["admin"]='hello'
?>
ii.setcookie设置session_id的过期时间
session_start();
setcookie(session_name(),session_id(),time()+60,'/');
$_SESSION["admin"]='hello'
?>
c.session只能使用当前session,如果想用上一个session,那是不可能的,因为无法得知session id。
d.session_id的4种传递方式
i.通过cookie传递,默认.需要客户端浏览器打开cookie。
ii.设置php.ini中的session.use_trans_sid=1,让PHP自动跨页面传递session_id
iii.通过GET方法,隐藏表单传递session_id
iv.使用文件或者数据库存储session_id,在页面间传递中手动调用
15.php的图形图像处理技术
16.php文件处理
17.php面向对象
a.定义
与c++相似
final class demo{
public function __construct(){ //构造函数
echo __METHOD__.":".__LINE__."\n";
}
public function func($param){ //普通函数
$param++;
echo "method func $paramn";
}
public function __destruct(){ //析构函数
echo __METHOD__.":".__LINE__."\n";
echo $this->sex;
}
//public $name = 123+456; 错误:初始化时不能带有计算
static $a = '$a';
const A = 'A';
public $name = '凤姐';
protected $sex = '男+女';
private $age = 23;
}
类的构造及成员的调用:$demo = new demo(); $demo->func(1);
成员的可见性有:public protected private 3种
其它修饰符:static final const
成员的调用方式: $this->property
b.类中的魔术方法(具有一定意义的方法)
i. 魔术方法必须被定义为公共的,所有其他魔术方法都必须如此
ii. 从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法,接下来列出一些魔术方法,如果大家想详细了解可以针对某一个进行查询了解,这里就不大篇幅的介绍了。
b1.__construct() 构造方法
__destruct()析构方法
b2.__autoload() 自动加载魔术方法。有的时候,在文件众多的项目中,要一一将所需类的文件都 include 进来,PHP 提供了 __autoload()方法,它会在试图使用尚未被定义的类时自动调用。 通过调用此函数,脚本引擎在PHP 出错失败前有了最后一个机会加载所需的类。
加入在Person.php中存在Person类,则当在另一个文件中调用时可以这样:
function __autoload($class_name)
{
require_once $class_name.'.php';
}
//当前页面 Pserson 类不存在则自动调用 __autoload() 方法,传入参数 Person
$p1 = new Person("张三","20");
$p1 -> say();
?>
b3.__get() 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名。
__set() 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。 这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。
__isset() 当在一个未定义的属性上调用isset()函数时调用此方法
__unset() 当在一个未定义的属性上调用unset()函数时调用此方法
class Person {
private $name;
private $sex;
private $age;
//__set()方法用来设置私有属性
function __set($property_name, $value) { //在属性赋值时会被调用
echo "在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值 ";
$this->$property_name = $value;
}
//__get()方法用来获取私有属性
function __get($property_name) {
echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法 ";
return isset($this->$property_name) ? $this->$property_name : null;
}
}
$p1=new Person();
$p1->name = "张三";
echo "我的名字叫:".$p1->name;
?>
运行该例子,输出:
在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值
在直接获取私有属性值的时候,自动调用了这个 __get() 方法
我的名字叫:张三
b4.__call( $method, $arg_array ) 当调用一个未定义的方法是调用此方法,这里的未定义的方法包括没有权限访问的方法;如果方法不存在就去父类中找这个方法,如果父类中也不存在就去调用本类的__call()方法,如果本类中不存在__call()方法就去找父类中的__call()方法。
b5.__clone()如果想复制一个对象则需要使用clone方法
如果想在克隆后改变原对象的内容,需要在类中添加一个特殊的 __clone() 方法来重写原本的属性和方法。__clone() 方法只会在对象被克隆clone的时候自动调用。
class Person {
private $name;
private $age;
function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
function say() {
echo "我的名字叫:".$this->name;
echo " 我的年龄是:".$this->age." ";
}
function __clone() {
$this->name = "我是假的".$this->name;
$this->age = 30;
}
}
$p1 = new Person("张三", 20);
$p1->say();
$p2 = clone $p1;
$p2->say();
?>
b6.
__toString()方法在将一个对象转化成字符串时自动调用,比如使用echo打印对象时
__sleep() 串行化的时候用
__wakeup 反串行化的时候调用
__set_state()当调用var_export()时,这个静态 方法会被调用(自PHP 5.1.0起有效)
__invoke当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。
__callStatic(PHP 5.3.0以上版本有效) 是为了处理静态方法调用
c.继承与多态
c1.范围解析操作符(::)
作用:范围解析操作符或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。self,parent 和 static这三个特殊的关键字是用于在类定义的内部对其属性或 方法进行访问的。范围解析操作符(::)与类名连用,可以用于访问静态成员、方法和常量;与parent连用,可以访问被覆盖类中的成员和方法。
class MyClass
{
protected function myFunc() {
echo "MyClass::myFunc()\n";
}
}
class OtherClass extends MyClass
{
// 覆盖了父类的定义
public function myFunc()
{
// 但还是可以调用父类中被覆盖的方法
parent::myFunc();
echo "OtherClass::myFunc()\n";
}
}
$class = new OtherClass();
$class->myFunc();
/**
* 输出结果 ->
* MyClass::myFunc()
* OtherClass::myFunc()
*/
function mycall(MyClass $a){ //函数的入参可以指明类型也可以不指明
$a->myFunc();
}
mycall(new OtherClass()); 多态
?>
c2.接口interface与实现implements
class 子类 extends 父类 implemtns 接口1, 接口2, ...
{
......
}
interface User{
function getDiscount();
function getUserType();
}
//VIP用户 接口实现
class VipUser implements User{
// VIP 用户折扣系数
private $discount = 0.8;
function getDiscount() {
return $this->discount;
}
function getUserType() {
return "VIP用户";
}
}
d.对象的序列化与反序列化->存储
序列化完整过程包括两个步骤:一个是序列化,就是把对象转化为二进制的字符串,serialize() 函数用于序列化一个对象;另一个是反序列化,就是把对象被序列转化的二进制字符串再转化为对象,unserialize() 函数来反序列化一个被序列化的对象。这样整个过程下来,对象内的类型结构及数据都是 完整的。
$p1 = new Person("张三", 20);
$p1_string = serialize($p1);
//将对象序列化后写入文件
$fh = fopen("p1.text", "w");
fwrite($fh, $p1_string);
fclose($fh);
$p2 = unserialize(file_get_contents("p1.text"));
$p2 -> say();
?>
18.php 加密技术
19.php操作mysql数据库
resource mysql_connect("hostname","username","password"); //成功返回连接conn,失败返回null
mysql_select_db(string dbname[,resource conn]);//选择使用的数据库 mysql_query("dbname"[,conn])
$result=mysql_query(string query[,resource conn]);//适合所有sql语句,语句中不能加";"
$info=mysql_fetch_array($result[,int result_type]); 从数组结果中获取递归一行信息,返回数组;如果是select则$info的键为字段的名字,如果到底尾部则false
$info=mysql_fetch_object($result[,int result_type]); 获取一行作为对象,成员为字段名
$info=mysql_fetch_row($result[,int result_type]); 返回数组,但是是以下标索引的。
int mysql_num_rows()获取查询结果中总的记录数
20.php的PDO
a.支持的数据库
PDO支持MS SQL SERVER,MYSQL,ODBC,ORACLE,POSTGRE SQL等。
需要的php版本:php5.1以上
b.当数据库发生变化时只需要修改PDO的DSN数据源名称
c.PDO连接mysql
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'nsfocus123');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO user VALUES ('5', 'xiaohua');";
$stmt = $dbh->prepare($sql);
$stmt->execute();
echo $dbh->lastinsertid();
$sql = "SELECT * FROM user";
$stmt = $dbh->prepare($sql);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ // print_r($stmt->fetchAll() 以列名为索引的数组
print_r($row);
}
关于fetch的参数取值:
PDO::FETCH_ASSOC 从结果集中获取以列名为索引的关联数组。
PDO::FETCH_NUM 从结果集中获取一个以列在行中的数值偏移量为索引的值数组。
PDO::FETCH_BOTH 这是默认值,包含上面两种数组。
PDO::FETCH_OBJ 从结果集当前行的记录中获取其属性对应各个列名的一个对象。
PDO::FETCH_BOUND 使fetch()返回TRUE,并将获取的列赋给在bindParm()方法中指 定的相应变量。
PDO::FETCH_LAZY 创建关联数组和索引数组,以及包含列属性的一个对象,从而可以在这三种接口中任选一种。
21.ThinkPHP架构
22.一些有用的函数
a.trigger_error("输出信息", E_USER_ERROR);触发fatal错误,并退出程序执行
b.exit(0); 退出当前进程
c.$pid = pcntl_fork(); 创建子进程,需要pcntl模块
23.php的模块安装方法
a.下载需要安装的源码,编译生成.so或.dll
b.将动态库复制到php安装目录下的ext目录中
c.修改安装目录下的php.ini配置文件,在[php]字段中添加 extension=***.so
e.php -m |grep *** 查看模块是否安装成功
你可能感兴趣的:(php)
PHP环境搭建详细教程
好看资源平台
前端 php
PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这
如何用matlab灵活控制feko的求解
NingrLi
matlab 开发语言
https://bbs.rfeda.cn/read.php?tid=3778Feko中的模型和求解设置等都可以通过editfeko进行设置,其文件存储为.pre文件,该文件可以用文本打开,因此,我们可以通过VB、VC、matlab等工具对.pre文件进行读写操作,以达到更灵活的使用feko。同样,对于.out文件,我们也可以进行读操作。熟练使用对.pre文件和.out文件的操作后,我们可以方便的计
进销存小程序源码 PHP网络版ERP进销存管理系统 全开源可二开
摸鱼小号
php
可直接源码搭建部署发布后使用:一、功能模块介绍该系统模板主要有进,销,存三个主要模板功能组成,下面将介绍各模块所对应的功能;进:需要将产品采购入库,自动生成采购明细台账同时关联财务生成付款账单;销:是指对客户的销售订单记录,汇总生成产品销售明细及回款计划;存:库存的日常盘点与统计,库存下限预警、出入库台账、库存位置等。1.进购管理采购订单:采购下单审批→由上级审批通过采购入库;采购入库:货品到货>
计算机毕业设计PHP仓储综合管理系统(源码+程序+VUE+lw+部署)
java毕设程序源码王哥
php 课程设计 vue.js
该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:phpStudy+Vscode+Mysql5.7+HBuilderX+Navicat11+Vue+Express。项目技术:原生PHP++Vue等等组成,B/S模式+Vscode管理+前后端分离等等。环境需要1.运行环境:最好是小皮phpstudy最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发
分享一个基于python的电子书数据采集与可视化分析 hadoop电子书数据分析与推荐系统 spark大数据毕设项目(源码、调试、LW、开题、PPT)
计算机源码社
Python项目 大数据 大数据 python hadoop 计算机毕业设计选题 计算机毕业设计源码 数据分析 spark毕设
作者:计算机源码社个人简介:本人八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流!学习资料、程序开发、技术解答、文档报告如需要源码,可以扫取文章下方二维码联系咨询Java项目微信小程序项目Android项目Python项目PHP项目ASP.NET项目Node.js项目选题推荐项目实战|p
php服务器状态监测,PHP网站状态在线监控源码
傲雪吟霜白如冰
php服务器状态监测
在网上找的一个在线监控源码,比较简单,但是功能也略有不足,例如如果网站挂了就按照监控频率一直发邮件提示,网站恢复之后不会发邮件通知;不能直接填写要监控的网址或者某一页面,适合监控大量的网站或者vps、服务器。最新使用感受:没有发送邮件限制,我设置监控频率是一个小时,一天没管就把邮箱塞满了。如果服务器恢复的话不会专门发邮件提醒。如果只是监控几个站的话有很多免费的监控网站可以使用,只是使用数量上有限制
php状态监控源码,PHP服务器状态监控实现程序
江子星
php状态监控源码
*/header('Content-type:text/html;charset=utf-8');include'./smtp/class.smtp.php';include'./smtp/class.phpmailer.php';functionsendmail($subject='',$body=''){date_default_timezone_set('Asia/Shanghai');//
服务器状态监控php源码,服务器状态监控_监控Linux服务器网站状态的SHELL脚本
温糯米
服务器状态监控php源码
摘要腾兴网为您分享:监控Linux服务器网站状态的SHELL脚本,蜗牛集市,同花顺,探客宝,手柄助手等软件知识,以及日期倒计时插件,云南省教育资源公共,rui手机桌面,小屁孩桌面便签,合金装备崛起复仇,朝夕日历,photoshop图像处理软件,一年级学生每日计划表,悟空找房,饿了吗外卖商家版,逃生,中国民宿网,realpolitiks,交通安全知识竞赛,雅思流利说等软件it资讯,欢迎关注腾兴网。1
php 实现JWT
每天瞎忙的农民工
php php
在PHP中,JSONWebToken(JWT)是一种开放标准(RFC7519)用于在各方之间作为JSON对象安全地传输信息。JWT通常用于身份验证系统,如OAuth2或基于令牌的身份验证。以下是一个基本的PHP实现JWT生成和验证的代码示例。JWT的组成部分JWT包含三个部分:Header(头部):说明算法和令牌类型。Payload(有效载荷):包含声明(如用户数据、过期时间等)。Signatur
discuz discuz_admincp.php 讲解,Discuz! 1.5-2.5 命令执行漏洞分析(CVE-2018-14729)
weixin_39740419
discuz 讲解
0x00漏洞简述漏洞信息8月27号有人在GitHub上公布了有关Discuz1.5-2.5版本中后台数据库备份功能存在的命令执行漏洞的细节。漏洞影响版本Discuz!1.5-2.50x01漏洞复现官方论坛下载相应版本就好。0x02漏洞分析需要注意的是这个漏洞其实是需要登录后台的,并且能有数据库备份权限,所以比较鸡肋。我这边是用Discuz!2.5完成漏洞复现的,并用此进行漏洞分析的。漏洞点在:so
FastCGI结合docker下的Nginx执行shell脚本
南波波
nginx docker
1使用docker下载Nginx下面展示一些内联代码片。a.#dockerpullnginx#dockerrun--namerunoob-php-nginx-p8088:80-d\-v~/nginx/www:/usr/share/nginx/html:ro\-v~/nginx/conf/conf.d:/etc/nginx/conf.d:ro\nginxb.在~/nginx/conf/conf.d创
什么是 PHP? 为什么用 PHP? 谁在用 PHP?
m0_37438181
永远学习 php 开发语言
一、什么是PHP?PHP(HypertextPreprocessor,超文本预处理器)是一种广泛应用于Web开发的通用开源脚本语言。PHP主要用于服务器端编程,可以嵌入HTML中,与数据库进行交互,生成动态网页内容。它具有以下特点:简单易学:语法相对简单,容易上手,对于初学者来说是一个不错的选择。跨平台性:可以在多种操作系统上运行,如Windows、Linux、Unix等。丰富的函数库:提供了大量
【网络安全】漏洞挖掘:php代码审计
秋说
网络安全 php web安全 漏洞挖掘
未经许可,不得转载。文章目录正文正文在应用程序中,通过一个JavaScript注释发现了一个备份ZIP文件。解压后,获取了应用程序的代码,其中包含如下代码片段:代码首先检查变量$action是否等于'convert',如果是,则继续执行。随后对传入的变量$data使用trim()函数去除两端空白字符,并使用eval()函数执行$data的内容。显然,代码对$data没有进行任何过滤或验证,因此可以
内网穿透之EW使用、判断服务器是否出网
板栗妖怪
学习 内网渗透
环境搭建使用的是下面文章的环境记一次学习--内网穿透-CSDN博客ew代理然后同样通过thinkphp漏洞写入文件,然后通过蚁剑连接然后上传ew的Linux版本,然后加权执行一层代理正向代理设置正向代理(在ubuntu上),然后kali在proxychain配置文件中连接ubuntu的192.168.244.154的代理端口反向代理在ubuntu上设置反向代理,将连接反弹到kali上的某个端口。然
python基于django/flask的NBA球员大数据分析与可视化python+java+node.js
QQ_511008285
python django flask java spring boot 数据分析
前端开发框架:vue.js数据库mysql版本不限后端语言框架支持:1java(SSM/springboot)-idea/eclipse2.Nodejs+Vue.js-vscode3.python(flask/django)--pycharm/vscode4.php(thinkphp/laravel)-hbuilderx数据库工具:Navicat/SQLyog等都可以本文针对NBA球员的大数据进行
Java基于spring boot的国产电影数据分析与可视化python+java+node.js
QQ_511008285
java spring boot 数据分析 python django vue.js flask
前端开发框架:vue.js数据库mysql版本不限后端语言框架支持:1java(SSM/springboot)-idea/eclipse2.Nodejs+Vue.js-vscode3.python(flask/django)--pycharm/vscode4.php(thinkphp/laravel)-hbuilderx数据库工具:Navicat/SQLyog等都可以 该系统使用进行大数据处理和
定制优化Nextcloud镜像
攻城狮_正
Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Mac、Android、iOS、Linux等各种平台,也提供了网页端以及WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。Nextcloud基于PHP语言开发,可以使用Nginx+PH
华纳云:修复WordPress内存耗尽错误的常用方法有哪些?
华纳云IDC服务商
服务器 WordPress
WordPress内存耗尽错误通常是由于PHP内存限制不足导致的。修复这种错误的方法有多种,以下是几种常用的方法:1.修改wp-config.php文件在WordPress根目录的wp-config.php文件中添加或修改以下代码,增加PHP的内存限制:define('WP_MEMORY_LIMIT','256M');将256M替换为所需的内存值。例如,可以将其设置为128M,256M,512M等
CentOS下php安装mcrypt扩展
天咋哭了
(以下步骤均为本人实际操作,可能与你的安装方法有所区别,但我会尽量排除疑惑)大致步骤(1)安装mcrypt,(2)安装php对mcrypt的扩展,(3)重启apache(1)、确认你的linux没有安装mcrypt库,如果已安装,跳过安装步骤[root@test-206~]#yumlistinstalled|grepmcryptlibmcrypt.x86_642.5.8-4.el5.centosi
[Unity优化] Unity3D如何减少安装包大小
hcq666
译官方文档:http://docs.unity3d.com/Manual/ReducingFilesize.htmlPDF文档:http://www.rukawa.cn/Uploads/Attachment/ReducingFilesize/ReducingFilesize.pdf原文地址:http://www.rukawa.cn/index.php?s=/home/article/detail/
4个步骤,解锁“非暴力沟通”12字秘诀(转)
谭琳_freeisok
原文地址:http://sa.sogou.com/sgsearch/sgs_tc_news.php?req=HvihEyHzKTRpqhoFoRYZrxkyz8qRuXiOGTd2-liL6rMw32GQqbt6pIHt_qlL7scd&user_type=1作为一个遵纪守法的好人,也许我们从来没有把谈话和“暴力”扯上关系。不过,如果稍微留意一下我们生活中的谈话方式,一定会发现,有些话确实伤人。不
PHP中的microtime(true)是干什么的?底层原理是什么?
快点好好学习吧
php 开发语言
microtime(true)是PHP中用于获取当前Unix时间戳(包括微秒部分)的一个函数。它返回一个浮点数,表示自Unix纪元(1970年1月1日00:00:00UTC)以来的当前时间,精确到微秒。用法示例$time=microtime(true);echo$time;参数true:如果传递true作为参数,microtime()会返回一个浮点数。如果不传递参数或传递false,则返回一个字符
计算机毕业设计选题推荐-基于Python框架项目推荐(中)
计算机毕设大佬
Java毕设实战项目 Python毕设实战项目 爬虫+大数据毕设实战项目 python 计算机毕业设计 django 计算机毕业设计如何选题 25届计算机毕业设计如何选题 计算机毕业设计选题推荐 24届计算机毕设选题推荐
博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告、任务书、系统功能实现、功能代码讲解、答辩PPT、文档编写、文档修改、文档降重、一对一辅导答辩。获取源码可以联系
PHP健身微信小程序系统源码
2401_84593753
miui52086微码在线 微信开放平台 微信小程序 微信公众平台 微信 小程序
️♀️健身新潮流!解锁“健身微信小程序”的全方位塑形秘籍开篇:掌中健身房,随时随地动起来你还在为找不到合适的健身场地或教练而烦恼吗?是时候告别这些束缚,拥抱“健身微信小程序”带来的便捷与高效了!♀️这个小小的程序,就像你的私人健身顾问,让你随时随地都能享受专业的健身体验。️♂️个性化训练计划,科学塑形1️⃣智能评估,定制方案一打开“健身微信小程序”,首先迎接你的是智能体质评估。通过简单的问答
2020-05-10
石呈凯
php常用的系统函数字符串函数strlen:获取字符串长度,字节长度substr_count某字符串出现的次数substr:字符串截取,获取字符串(按照字节进行截取)mb_strlenmb_substrstrchr:与substr相似,从指定位置截取一直到最后strrchr(获取文件后缀名):与strchr一样,只是从右边开始查找字符strtolower:所有的字符都小写(针对英文字母)strto
2024网络安全学习路线 非常详细 推荐学习
白帽黑客-晨哥
web安全 学习 安全 数据库 php
关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人会倒在学习语言上;2、知识点掌握程度不清楚对于网络安全基础内容,很多人不清楚需要学到什么程度,囫囵吞枣,导致在基础上花费太多时间;看到很多小伙伴,买了HTML,PHP,数据库,计算机
PHP导入Excel文件后缀xlsx与xls的处理问题
木子李0531
PHPExcel thinkphp5 thinkPHP PHP Excel xlsx xls
publicfunctionimportData(){//先执行文件上传$file=$this->request->file('files');//获取表单上传文件if(empty($file)){$this->error('请选择上传文件');}else{//移动到框架应用根目录public/excel$info=$file->move(ROOT_PATH.'public'.DS.'Excel'
Git提交文件之前强制对php文件进行格式化
梅先森森森森森森
要执行这个操作需要掌握两个知识点php语法检查工具php-cs-fixer(使用方法自行百度)。git钩子的使用方法(如果不懂就继续百度吧)。具体操作方式:在一个git项目的根目录下进入钩子目录编辑提交之前的钩子文件大约能看到以下几个钩子文件,是git提供的一些例子。去掉.sample后缀名之后都可以运行。在文件列表中,pre-commit.sample文件就是执行gitcommit命令之前的钩子
php工程师绩效考核表_如何对程序员绩效考核?
weixin_39637233
php工程师绩效考核表
如何对程序员绩效考核?1、什么是绩效考核?来在百度百科的解释,绩效考核(performanceexamine),是企业绩效管理中的一个环节,是指考核主体对照工作目标和绩效标准,采用科学的考核方式,评定员工的工作任务完成情况、员工的工作职责履行程度和员工的发展情况,并且将评定结果反馈给员工的过程。常见绩效考核方法包括BSC、KPI及360度考核等。绩效考核是一项系统工程。2、绩效考核是否有用?对企业
初中级PHP面试基础汇总
PHP9年架构师
这是我整理的一套面试题,老铁们看看就当复习了哦概述感觉现在发面试题有些冷门,就跟昨天德国那场似的,不过看看当提前复习了。提前备战。这2个月出门面试的童鞋可注意不要中暑哦。10年架构师领你架构-成长之路-(附面试题(含答案))(腾讯T3-T4)打造互联网PHP架构师教程目录大全,只要你看完,薪资立马提升2倍(持续更新)点击与我交流企鹅群说几个你所知道的设计模式单例模式保证一个类仅有一个实例,并提供一
桌面上有多个球在同时运动,怎么实现球之间不交叉,即碰撞?
换个号韩国红果果
html 小球碰撞
稍微想了一下,然后解决了很多bug,最后终于把它实现了。其实原理很简单。在每改变一个小球的x y坐标后,遍历整个在dom树中的其他小球,看一下它们与当前小球的距离是否小于球半径的两倍?若小于说明下一次绘制该小球(设为a)前要把他的方向变为原来相反方向(与a要碰撞的小球设为b),即假如当前小球的距离小于球半径的两倍的话,马上改变当前小球方向。那么下一次绘制也是先绘制b,再绘制a,由于a的方向已经改变
《高性能HTML5》读后整理的Web性能优化内容
白糖_
html5
读后感
先说说《高性能HTML5》这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影。个人觉得作者应该首先把HTML5的大菜拿出来讲一讲,再去分析性能优化的内容,这样才会有吸引力。因为只是在线试读,没有机会看后面的内容,所以不胡乱评价了。
[JShop]Spring MVC的RequestContextHolder使用误区
dinguangx
jeeshop 商城系统 jshop 电商系统
在spring mvc中,为了随时都能取到当前请求的request对象,可以通过RequestContextHolder的静态方法getRequestAttributes()获取Request相关的变量,如request, response等。 在jshop中,对RequestContextHolder的
算法之时间复杂度
周凡杨
java 算法 时间复杂度 效率
在
计算机科学 中,
算法 的时间复杂度是一个
函数 ,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的
字符串 的长度的函数。时间复杂度常用
大O符号 表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是
渐近 的,它考察当输入值大小趋近无穷时的情况。
这样用大写O()来体现算法时间复杂度的记法,
Java事务处理
g21121
java
一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状
Linux awk命令详解
510888780
linux
一. AWK 说明
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。
awk的处理文本和数据的方式:它逐行扫描文件,从第一行到
android permission
布衣凌宇
Permission
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" ></uses-permission>允许读写访问"properties"表在checkin数据库中,改值可以修改上传
<uses-permission android:na
Oracle和谷歌Java Android官司将推迟
aijuans
java oracle
北京时间 10 月 7 日,据国外媒体报道,Oracle 和谷歌之间一场等待已久的官司可能会推迟至 10 月 17 日以后进行,这场官司的内容是 Android 操作系统所谓的 Java 专利权之争。本案法官 William Alsup 称根据专利权专家 Florian Mueller 的预测,谷歌 Oracle 案很可能会被推迟。 该案中的第二波辩护被安排在 10 月 17 日出庭,从目前看来
linux shell 常用命令
antlove
linux shell command
grep [options] [regex] [files]
/var/root # grep -n "o" *
hello.c:1:/* This C source can be compiled with:
Java解析XML配置数据库连接(DOM技术连接 SAX技术连接)
百合不是茶
sax技术 Java解析xml文档 dom技术 XML配置数据库连接
XML配置数据库文件的连接其实是个很简单的问题,为什么到现在才写出来主要是昨天在网上看了别人写的,然后一直陷入其中,最后发现不能自拔 所以今天决定自己完成 ,,,,现将代码与思路贴出来供大家一起学习
XML配置数据库的连接主要技术点的博客;
JDBC编程 : JDBC连接数据库
DOM解析XML: DOM解析XML文件
SA
underscore.js 学习(二)
bijian1013
JavaScript underscore
Array Functions 所有数组函数对参数对象一样适用。1.first _.first(array, [n]) 别名: head, take 返回array的第一个元素,设置了参数n,就
plSql介绍
bijian1013
oracle 数据库 plsql
/*
* PL/SQL 程序设计学习笔记
* 学习plSql介绍.pdf
* 时间:2010-10-05
*/
--创建DEPT表
create table DEPT
(
DEPTNO NUMBER(10),
DNAME NVARCHAR2(255),
LOC NVARCHAR2(255)
)
delete dept;
select
【Nginx一】Nginx安装与总体介绍
bit1129
nginx
启动、停止、重新加载Nginx
nginx 启动Nginx服务器,不需要任何参数u
nginx -s stop 快速(强制)关系Nginx服务器
nginx -s quit 优雅的关闭Nginx服务器
nginx -s reload 重新加载Nginx服务器的配置文件
nginx -s reopen 重新打开Nginx日志文件
spring mvc开发中浏览器兼容的奇怪问题
bitray
jquery Ajax springMVC 浏览器 上传文件
最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.
在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquer
Lua的io库函数列表
ronin47
lua io
1、io表调用方式:使用io表,io.open将返回指定文件的描述,并且所有的操作将围绕这个文件描述
io表同样提供三种预定义的文件描述io.stdin,io.stdout,io.stderr
2、文件句柄直接调用方式,即使用file:XXX()函数方式进行操作,其中file为io.open()返回的文件句柄
多数I/O函数调用失败时返回nil加错误信息,有些函数成功时返回nil
java-26-左旋转字符串
bylijinnan
java
public class LeftRotateString {
/**
* Q 26 左旋转字符串
* 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
* 如把字符串abcdef左旋转2位得到字符串cdefab。
* 请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
*/
pu
《vi中的替换艺术》-linux命令五分钟系列之十一
cfyme
linux命令
vi方面的内容不知道分类到哪里好,就放到《Linux命令五分钟系列》里吧!
今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号)。
其实这个不难,不过我觉得应该总结一下vi里的替换技术了,以备以后查阅。
1
所有替换方案都要在冒号“:”状态下书写。
2
如果想将abc替换为xyz,那么就这样
:s/abc/xyz/
不过要特别
[轨道与计算]新的并行计算架构
comsci
并行计算
我在进行流程引擎循环反馈试验的过程中,发现一个有趣的事情。。。如果我们在流程图的每个节点中嵌入一个双向循环代码段,而整个流程中又充满着很多并行路由,每个并行路由中又包含着一些并行节点,那么当整个流程图开始循环反馈过程的时候,这个流程图的运行过程是否变成一个并行计算的架构呢?
重复执行某段代码
dai_lm
android
用handler就可以了
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
update();
handler.postDelayed(this, 5000);
}
};
开始计时
h
Java实现堆栈(list实现)
datageek
数据结构——堆栈
public interface IStack<T> {
//元素出栈,并返回出栈元素
public T pop();
//元素入栈
public void push(T element);
//获取栈顶元素
public T peek();
//判断栈是否为空
public boolean isEmpty
四大备份MySql数据库方法及可能遇到的问题
dcj3sjt126com
DB backup
一:通过备份王等软件进行备份前台进不去?
用备份王等软件进行备份是大多老站长的选择,这种方法方便快捷,只要上传备份软件到空间一步步操作就可以,但是许多刚接触备份王软件的客用户来说还原后会出现一个问题:因为新老空间数据库用户名和密码不统一,网站文件打包过来后因没有修改连接文件,还原数据库是好了,可是前台会提示数据库连接错误,网站从而出现打不开的情况。
解决方法:学会修改网站配置文件,大多是由co
github做webhooks:[1]钩子触发是否成功测试
dcj3sjt126com
github git webhook
转自: http://jingyan.baidu.com/article/5d6edee228c88899ebdeec47.html
github和svn一样有钩子的功能,而且更加强大。例如我做的是最常见的push操作触发的钩子操作,则每次更新之后的钩子操作记录都会在github的控制板可以看到!
工具/原料
github
方法/步骤
">的作用" target="_blank">JSP中 的作用
蕃薯耀
JSP中<base href="<%=basePath%>">的作用
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
linux下SAMBA服务安装与配置
hanqunfeng
linux
局域网使用的文件共享服务。
一.安装包:
rpm -qa | grep samba
samba-3.6.9-151.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-winbind-clients
guava cache
IXHONG
cache
缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。
缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的
Query的开始--全局变量,noconflict和兼容各种js的初始化方法
kvhur
JavaScript jquery css
这个是整个jQuery代码的开始,里面包含了对不同环境的js进行的处理,例如普通环境,Nodejs,和requiredJs的处理方法。 还有jQuery生成$, jQuery全局变量的代码和noConflict代码详解 完整资源:
http://www.gbtags.com/gb/share/5640.htm jQuery 源码:
(
美国人的福利和中国人的储蓄
nannan408
今天看了篇文章,震动很大,说的是美国的福利。
美国医院的无偿入院真的是个好措施。小小的改善,对于社会是大大的信心。小孩,税费等,政府不收反补,真的体现了人文主义。
美国这么高的社会保障会不会使人变懒?答案是否定的。正因为政府解决了后顾之忧,人们才得以倾尽精力去做一些有创造力,更造福社会的事情,这竟成了美国社会思想、人
N阶行列式计算(JAVA)
qiuwanchi
N阶行列式计算
package gaodai;
import java.util.List;
/**
* N阶行列式计算
* @author 邱万迟
*
*/
public class DeterminantCalculation {
public DeterminantCalculation(List<List<Double>> determina
C语言算法之打渔晒网问题
qiufeihu
c 算法
如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日以后任意一天,输出该渔夫是在打渔还是在晒网。
代码如下:
#include <stdio.h>
int leap(int a) /*自定义函数leap()用来指定输入的年份是否为闰年*/
{
if((a%4 == 0 && a%100 != 0
XML中DOCTYPE字段的解析
wyzuomumu
xml
DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称,如果是内部DTD,则再空一格出现[],在中括号中是文档类型定义的内容. 而对于外部DTD,则又分为私有DTD与公共DTD,私有DTD使用SYSTEM表示,接着是外部DTD的URL. 而公共DTD则使用PUBLIC,接着是DTD公共名称,接着是DTD的URL.
私有DTD
<!DOCTYPErootSYST