作者开发PHP项目利用的是ThinkPHP3.2+PhpStorm这样的环境,下面结合实际开发经历介绍一下周边的调节方法。

36:计算多项式的价值

  • 查看
  • 提交
  • 统计
  • 提问

总时限定: 
1000ms

内存限制: 
65536kB

描述
要是多项式的样式也xn+xn-1+…+x2+x+1,请计算为定单精度浮点数x和正整数n值的事态下此差不多项式的价值。

输入
输入才一行,包括x和n,用么空格隔开。x在float范围外,n <= 1000000。

输出
输出一个实数,即多项式的价值,精确到多少数点后少位。保证最终结出以float范围外。

样例输入
2.0 4

样例输出
31.00

 1 de<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 int main()
 7 {
 8     float x;
 9     int n;
10     float tot=0;
11     cin>>x>>n;
12     int a=n;
13     for(int i=n;i>=1;i--)
14     {
15         tot=tot+pow(x,a);
16         a--;
17     }
18     printf("%.2f",tot+1);
19     return 0;
20 }

 

[ThinkPHP框架开启调试模式]

ThinkPHP有特意为开销进程要装的调试模式,开启调试模式后,会牺牲一定之执行效率,但带的便宜和除错功能非常值得。

哪被
展调试模式很简短,只需要以入口文件中长一行常量定义代码。在完成开发阶段部署至生产条件后,只需要关闭调试模式或者去除调试模式定义代码即可切换至布置模式。

<?php
 // 开启调试模式
 define('APP_DEBUG', true);
 // 定义应用目录
 define('APP_PATH', './Application/');
 // 加载框架入口文件
 require './ThinkPHP/ThinkPHP.php';

调试模式的亮点在于:

  • 启日志记录,任何错误信息和调试信息都见面详细笔录,便于调试;
  • 关闭模板缓存,模板修改好尽管经常生效;
  • 记录SQL日志,方便分析SQL;
  • 闭馆字段缓存,数据表字段修改不给缓存影响;
  • 严酷检查文件大小写(即使是Windows平台),帮助您提前发现Linux部署可能引致的隐患问题;
  • 透过页面Trace功能重新好之调节以及意识左;

[日志]

日记的拍卖工作是由系统活动进行的,在拉开日志记录的情状下,会记录下同意的日记级别之备日志信息。

框架默认是在调试模式下记录日志信息,如果急需以安排模式下被日志记录,需要在部署中打开LOG_RECORD参数,以及可以在利用配置文件中配备需要记录的日志级别。日志的记录并非实时保存之,只有当当前恳请完成或者很了后才会实际写副日志信息,否则只是记录在内存中。

'LOG_RECORD' => true, // 开启日志记录
'LOG_LEVEL'  =>'EMERG,ALERT,CRIT,ERR', // 只记录EMERG ALERT CRIT ERR 错误

手动记录日志
这里,主要介绍下以框架提供的Log日志类的老三单主意来手动记录日志。

  1. Log::record(),记录日志信息到内存。
    \Think\Log::record(‘测试日志信息’);
    \Think\Log::record(‘测试日志信息,这是告诫级别’,’WARN’);//默认的说话记录的日志级别是ERR,也可指定日志级别
  2. Log::save(),把保存在内存中之日记信息(用指定的记录道)写入。
    出于系统于请了晚会自行调用Log::save方法,所以普通,你只有待调用Log::record记录日志信息即可。
  3. Log::write(),实时写副一长长的日志信息。
    动用record方法记录之日记信息不是实时保存的,如果用实时记录以来,可以使write方法。write方法勾勒副日志的时候
    不深受配置的许日志级别影响,可以实时写副随便级别之日记信息。

    \Think\Log::write(‘测试日志信息,这是警示级别,并且实时写入’,’WARN’);

[利用Xdebug工具]

参见我勾勒的另外一首文章,Mac下深受PhpStorm安装调试工具Xdebug

[变量调试]

变量调试对于简易的问题可于及老迅速的调剂作用,有时候通过对变量的考察可以长足定位到题目位置,但是比使用Xdebug方法,缺乏流程性和整体观。

  1. echo方法
    echo
    输出一个或者多个字符串或变量值,多单价值期间因此逗号分隔
    ,他是php语句子,不是函数。因为他莫是函数,所以没返回值,不可知同日而语表达式的相同片段应用。
    echo $str,’world’,’hello!’;
    echo $str;
  2. print方法
    print()用于出口一个或者多独字符串或变量值的音。它只能打印出大概类型变量的价(如int,string),不可知打印数组和对象。稍慢于echo。
  3. print_r方法
    好管字符串和数字略地打印出,而数组则因洋溢起来的键和值得列表形式展示,并坐Array开头。print_r返回值是布尔型的,参数是mix类型的,可以是字符串,整形,数组,对象类print_r()
    显示关于一个变量的善理解的信息。如果吃闹之凡 string、integer 或
    float,将打印变量值本身。如果叫出之是
    array,将见面遵循一定格式显示键和因素。print_r()
    对数组作用后用拿数组的指针移到结尾界限。使用 reset()
    可于指针回到开始处于。

    $data = [‘test1’, ‘test2’, ‘test3’, ‘test’ => ‘test’];
    print_r($data);//Array ( [0] => test1 [1] => test2 [2]
    => test3 [test] => test )
  4. var_dump方法
    用于展示关于一个要多个表达式的布局信息,包括表达式的档次及价值。数组将递归展开值,通过缩进显示其组织。信息于详细,用的于多。
    $data = [‘test1’, ‘test2’, ‘test3’, ‘test’ => ‘test’];
    var_dump($data);
    array (size=4)
    //输出
    0 => string ‘test1’ (length=5)
    1 => string ‘test2’ (length=5)
    2 => string ‘test3’ (length=5)
    ‘test’ => string ‘test’ (length=4)
  5. dump方法
    dump不是php方法,属于ThinkPHP框架自带的,工能和var_dump差不多。

[性调试]

开发过程中,有些上为了测试性能,经常索要调剂某段代码的运转时刻或者内存占用开销,系统提供了G方法可以好有益于之拿走有区间的运行时与内存占用情况。

G(‘begin’,’end’)
表示统计begin位置到end位置的行时间(单位凡秒),begin必须是一个就记了之岗位,如果此时刻end位置还从未为记了,则会自行将当下职标记为end标签,输出的结果类似于:0.0056s

G('begin');
$data = ['test1', 'test2', 'test3', 'test' => 'test'];//这里是其他代码
G('end');
echo G('begin', 'end', 5) . 's';//数字代表保留几位小数

假若条件支持内存占用统计来说,还可以应用G方法进行区间内存开销统计(单位也kb)

G('begin','end','m').'kb';

[范调试]

  1. 调节执行之SQL语句
    getLastsql主意来输出上次履行的sql语句,有时候数据未吻合预期时,用此方可方便的体察询问语句,判断逻辑是不是来无意。
    $User = M(“User”); // 实例化User对象
    $User->find(1);
    echo $User->getLastSql();
    // 3.2本被可以采取简化的法门
    echo $User->_sql();
  2. 调剂数据库错误信息

CURD操作而回去回值为false,表示数据库操作发生误,这个时便待运用模型的getDbError方法来查看数据库返回的切实错误信息。

   $User = M("User"); // 实例化User对象
   $result = $User->find(1);
   if(false === $result){
       echo $User->getDbError();
   }