首页
Search
1
解决 docker run 报错 oci runtime error
49,335 阅读
2
WebStorm2025最新激活码
27,568 阅读
3
互点群、互助群、微信互助群
22,731 阅读
4
常用正则表达式
21,540 阅读
5
罗技鼠标logic g102驱动程序lghub_installer百度云下载windows LIGHTSYNC
19,320 阅读
自习室
CODER
课程
SEO
学习视频
手册资料
呆萌
工具软件
运维
DBA
互通有无
资源
微信群
激活工具
搞钱日记
养生记
包罗万象
登录
Search
标签搜索
DeepSeek
学习指北
Prompt
提示词
Loong
累计撰写
179
篇文章
累计收到
0
条评论
首页
栏目
自习室
CODER
课程
SEO
学习视频
手册资料
呆萌
工具软件
运维
DBA
互通有无
资源
微信群
激活工具
搞钱日记
养生记
包罗万象
页面
搜索到
36
篇与
的结果
2019-07-10
PHP经典面试题汇总(五)
五十一·用php写出显示客户端ip与服务器ip的代码?$_SERVER['SERVER_ADDR']; $_SERVER['REMOTE_ADDR']; gethostbyname("www.mobanw.com");五十二·include,require,include_once,require_once的区别 ?1·include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误,require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误。2·include有返回值,而require没有。3·include_once()会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入。4·include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容五十三·如何修改session的生存时间?方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache方法2:session_start(); //保存一天,session的过期时间是有cookie决定的 $lifetime = 24*3600; setcookie(session_name(),session_id(),time()+$lifetime,'/');五十四·写出发帖数最多的十个人的名字的sql语句?,利用下表:members(id,username,posts,pass,email)select username,count(id) from members group by username order by count(id) desc limit 10;五十五·请说明php中传值和传引用的区别,什么时候传值什么时候传引用?按值传递:函数范围内对值的任何改变在函数外部都会被忽略,外部不会改变。按引用传递:函数范围内对值的任何改变在函数外部也能反应出这些修改,外部也可以改变。优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。五十六·在php中error_reporting这个函数的作用是什么?设置错误级别,错误信息回报。错误级别有以下五种:E_ALL,E_PARSE,E_ERROR,E_WARNING,E_NOTICE五十七·msyql_fetch_row(),mysql_fetch_assoc(),mysql_fetch_array()之间有什么区别?msyql_fetch_row()是从结果取出1行索引数组,作为枚举。mysql_fetch_assoc()获取的是关联数组msyql_fetch_array()获取的是关联和索引混合的数组mysql_num_rows($result)取得查询结果集总数五十八·$a=”abcdef”;请打印出$a中第一个字母?echo $a{0}或者echo substr($a,0,1);五十九·写出正则匹配js标签?$str = <<<scriptscript; preg_match_all('/
2019年07月10日
5,844 阅读
0 评论
0 点赞
2019-07-10
PHP经典面试题汇总(四)
三十九·请使用 php编写程序,读取出www.baidu.com的首页的网页内容,并存入字符串$str?方法一:$url ="http://www.baidu.com"; $str = file_get_contents($url); echo $str;方法二:$fp = fopen("http://www.baidu.com",'r'); $str = ''; while(!feof($fp)){ echo $str.=fread($fp,'1024'); }请用php将上题中读出来的网页内容的<title>标签的值解析出来?header("Content-type:text/html;charset=utf-8"); $url ="http://www.baidu.com"; $str = file_get_contents($url); preg_match('/<title>(.+)<\/title>/',$str,$ms); echo $ms[1];四十·通过php函数循环遍历出文件夹下的所有目录的文件,写出程序?$dir = "zt"; function dirList($dir){ $arr = scandir($dir); foreach($arr as $file){ if($file !='.' && $file !='..'){ $path = $dir."/".$file; if(is_dir($path)){ dirList($path); }else{ echo "<p>{$path}</p>"; } } } } dirList($dir);四十一·linux打印出一个文件夹下的所有目录和文件,编写shell脚本?vi tree.sh #! /bin/bash tree chomd 777 tree.sh四十二·什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?数据库索引就相当于一本书的目录,就是给数据库中的每张表建立索引,便于检索提高select 效率,加快搜索速度主键索引就是给每张表的主键设置索引,唯一索引就是给每张表的唯一值字段设置索引,主键索引本身就内置唯一索引,一旦在列里加唯一索引,列里的值就不能重复,主键索引在检索中比唯一索引快,一个表只能有一个主键索引,一个表可以有多个唯一索引,索引的缺点是建立索引需要增加存储空间,空间利用率低,并且数据发生变化时会改变索引资源消耗较大。四十三·数据库设计时,常遇到的性能瓶颈有哪些,常有的解决方案是?1·查询速度慢,避免全盘扫描,因为全盘扫描会导致大量的磁盘I/O操作,用sphinx来解决,和添加索引。2·读写过于频繁,使用读写分离操作。3·数据库压力大,采用分布式数据库负载均衡来解决。4·memcache缓存。5·链接数据库使用pdo,或者mysqli,预处理缓存字段。6·尽量使用MyISAM。7·建议表的列不要过多,要适当的多用些表。四十四·通过js实现页面的前进和后退操作?<a href="javascript:window.history.go(1)">前进</a> <a href="javascript:window.history.go(-1)">后退</a>四十五·浏览器ie和非ie浏览器的区分,区别是什么?<script> var val = navigator.userAgent; if(val.search('MSIE')>=0){ alert('ie浏览器'); }else{ alert('非ie浏览器'); } </script>四十六·设定网站的用户数量在千万级,但是活跃用户的数量只有1%,如何通过优化数据库提高活跃用户的访问速度?1·分区。(分活跃用户表和非活跃用户表)2·分表。(人为分表,需要在php写一段路由层,判断是活跃用户,或者非活跃用户)3·索引优化四十七·ajax技术利用了什么协议,简述一下ajax的工作机制?利用http协议工作原理:1·先通过浏览器内置的XMLHttpRequest类产生一个ajax对象,2·调用ajax对象open方法建立一个与某一个脚本发生通讯的链接3·设定好传输方式get/post,还要确定是异步还是同步,默认是异步4·调用ajax的send方法发送请求,发起对php文件的请求5·通过给ajax绑定状态检测事件,当状态码为4,并且服务器响应码为200时则获取php文件的响应数据。<script> function showHint(str) { var xmlhttp; if (str.length==0) { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","/try/ajax/gethint.php?q="+str,true); xmlhttp.send(); } </script>四十八·利用php打印出前一天的时间格式是2017-8-10 22:21:50?echo date('Y-n-d H:i:s',strtotime('-1 day'));四十九·echo ,print ,print_r的区别是什么?1·echo 和print是语言结构,print_r是函数2·echo 可以有多个参数,print,print_r只能有一个参数3·print()只能打印简单的数据类型变量的值(int ,string)print_r()可以打印出复杂类型变量的值(数组,对象)echo 可以输出一个或者多个字符串五十·能够使html和php分离开使用的模板引擎?Smarty,template,thinkphp,laravel,yii
2019年07月10日
5,945 阅读
0 评论
1 点赞
2019-07-10
PHP经典面试题汇总(三)
二十一·写出数据类型(int char varchar datetime text)的意思,varchar 和char的区别?int数字类型,char固定长度字符串,varchar实际(可变)长度字符串,datetime日期时间类型,text文本类型char长度是固定的,不管你存储的数据是多少他都会都固定的长度。而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置,由于某种原因char 固定长度,所以在处理速度上要比varchar快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例二十二·MyISAM和InnoDB的基本区别?innoDB支持事务机制、存储过程、行级锁定,MyISAM不支持,MyISAM在增删改查中速度快于InnoDB,作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,如果数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是首选,InnoDB不支持FULLTEXT类型的索引,InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可二十三·客户端禁用了cookie,怎么实现session技术共享多个页面?方法一.通过session获取session_id进行传值:a.php页面(设置session) session_start(); header("Content-type:text/html;charset=utf-8"); $user = $_SESSION['name'] = 'zhangsan'; echo $sid = session_id(); $sname = session_name(); echo ""; print_r($user); echo ""; echo "cookie"; b.php页面(接收session) if(isset($_GET['PHPSESSID'])){ session_id($_GET['PHPSESSID']); } session_start(); echo session_id(); echo ""; print_r($_SESSION); echo "";方法二.或者php.ini 配置选项,里面有一个session.use_trans_sid=0设置为1(在herf action header会自动添加SID,但是js跳转不会自动增加); 重启apache可以生效二十四·isset()和empty()的区别,对不同数据的判断结果?isset()是判断变量是否存在,是否定义empty()是判断变量的值是否为空二十五·如何在页面之间传递变量?get,post,ajax,curl,cookie,session二十六·写出匹配url的正则表达式?$url = "https://www.baidu.com/index.php?id=1&name=user1"; $reg = "/(http|ftp|https):[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]* /"; echo preg_match($reg,$url);二十七·请写出常见的排序算法,并用php实现冒泡排序,将数组$a=array()按照从小到大的方式进行排序?function mysort($arr){ for($i=0;$i<count($arr)-1;$i++){ for($j=0;$j
2019年07月10日
5,687 阅读
0 评论
0 点赞
2019-07-10
PHP经典面试题汇总(二)
十一·如何进行防止SQL注入?1·表单尽量用post提交,核心用户验证都用post,表单判断使用get,因为get比post快2·使用$_SERVER[HTTP_REFERER]判断提交表单的源头是否是本机域名$path = $_SERVER['HTTP_REFERER']; $arr = parse_url($path); $arr2= $arr['host']; echo "<pre>"; print_r($arr2);3·php.ini开启addslashes,防止用户输入信息有单引号或者双引号对sql语句带来的破坏性,开启之后会在单双引号之前加反斜杠\’\”4·密码需要设置md5或Sha1加密5·服务器本身的安全(web + mysql)十二·防止盗链?1·服务器上防止盗链:Apache 和Nginx做rewrite基于源来做判断阻止盗链Apache设置防盗链方法:(.htaccess文件)RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !linuxidc.cn [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L] RewriteRule ^(.*)$ http://image.linuxidc.cn/image/$1 [L]不是以上网站访问来源就直接转向:RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]Nginx设置防盗链方法:(/usr/local/nginx/conf/nginx.conf文件)location ~ .*\.(jpg|gif|png|bmp|swf|jpeg)$ { expires 30d; valid_referers none blocked *.linuxidc.cn *.google.com *.baidu.com; if ($invalid_referer) { rewrite ^/ ; return 404; } }2·代码防止盗链:$_SERVER[‘HTTP_REFERER’]十三·用php写出一个安全的用户登录系统需要注意哪些方面?1·验证码2·U盾3·动态口令卡4·限制登录次数5·使用数字键盘6·密码不能粘贴7·网址使用ssl,服务器证书https8·注册验证必须要使用php验证9·以post提交给后端php程序十四·使用过哪些php框架,试着描述其优劣点?Thinkphp:ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟悉J2EE的开发人员相对比较容易上手,适合php框架初学者。 ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、 Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的兼容性较强,但是其功能有限,因此更适合用于中小项目的开发。优点:1.易于上手,有丰富的中文文档;2.框架的兼容性较强,PHP4和PHP5完全兼容、完全支持UTF8等。3. 适合用于中小项目的开发缺点1.对Ajax的支持不是很好;2.目录结构混乱,需要花时间整理;3.上手容易,但是深入学习较难。Yii:Yii 是一个基于组件的高性能php框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了 今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。优点1·纯OOP2·用于大规模Web应用3·模型使用方便4·开发速度快,运行速度也快。性能优异且功能丰富5·使用命令行工具。缺点:1·对Model层的指导和考虑较少2·文档实例较少3·英文太多4·要求PHP技术精通,OOP编程要熟练!5·View并不是理想view,理想中的view可能只是html代码,不会涉及PHP代码。Lavarel:优点Laravel 的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD 和BDD,作为一个框架,它准备好了一切,composer 是个php 的未来,没有composer,PHP 肯定要走向没落。laravel 最大的特点和优秀之处就是集合了php 比较新的特性,以及各种各样的设计模式,Ioc 容器,依赖注入等。缺点基于组件式的框架,所以比较臃肿CodeIgniter:优点:推崇“简单就是美”这一原则。没有花哨的设计模式、没有华丽的对象结构,一切都是那么简单。几行代码就能开始运行,再加几行代码就可以进行输出。可谓是“大道至简”的典范。 配置简单,全部的配置使用PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路 由;具有初步的Layout功能,能够制作一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能. 快速简洁,代码不多,执行性能高,框架简单,容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用.缺点:本身的实现不太理想。内部结构过于混乱,虽然简单易用,但缺乏扩展能力。 把Model层简单的理解为数据库操作. 框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要.评价:总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不 错,并且CodeIgniter没有使用很多太复杂的设计模式,执行性能和代码可读性上都不错。至于附加的library 也还不错,简洁高效。十五·用过哪些版本控制工具?svn subversion 版本控制github 版本控制十六·进制转换?对照表:1 1 1 1 1 1 1 1(二进制)128 64 32 16 8 4 2 1(十进制)例如:(二进制转换为十进制) 101010111 = 1×2^8 + 1×2^6 + 1×2^4 + 1×2^2 + 1×2^1 + 1×2^0 = 256+64+16+4+2+1 = 343(十六进制转换为十进制) 3A5B=3×16^3 + Ax16^2 + 5×16^1 + Bx16^0 = 3×4096 + 10×256 + 80 + 11×1 = 12288+2560+80+11=14939(十六进制转换为二进制) 41=0100 000116进制的1位数代表2进制的4位数(二进制转换为十六进制) 11010110 = B6四个数为一组(1101)= 1×2^3 + 1×2^2 + 1×2^0 = 13=B,(0110)= 1×2^2 + 1×2^1 = B6(十进制转换为二进制) 13=1101余数=被除数-除数*商13/2(商6 余数1),6/2(商3 余数0),3/2(商1 余数1),1/2(商0 余数1)规律:不断除以2,保留余数,商为0时不再除以2,将所有余数倒序排列。(十进制转换为十六进制) 138=8A138/16(商8 余数10 A),8/16(商0 余数8)规律:不断除以16,保留余数,商为0时不再除以16,将所有余数倒序排列。$int = 1+2+"23+4" = 26; ascii码转换: chr(65) == A; ord(A) == 65; $a = array(1=>5,5=>8,22,2=>'8',81); $a[7] == 81 //前一个最大下标加2 $a[6] == 81 //前一个最大下标加1 $a[3] 不存在,空 $a[bar] = 'hello'; $a[bar] 和 $a['bar'] 结果一样hello;位运算:echo 1>>0; // 001 ==>1 echo 2>>1; // 010 ==> 001 => 1 二进制向右移动1位,结果转十进制 echo 3<<2; // 011 ==> 01100 => 1x2^3+1x2^2=12 二进制向左移动2位,结果转十进制echo 可以打印多个参数,print不可以十七·下面能正确输出yellow的结果有哪些:$fruits = array('apple' =>'red','banana' =>'yellow'); echo "A banana is {$fruits[banana]}"; echo "A banana is {$fruits['banana']}"; echo "A banana is $fruits[banana]"; heredoc: $str=<<<str this is string str; echo $str;以上等同于$str=”this is string”;十八·什么是面向对象,主要特征是什么?也就是我们常说的OOP,以对象为中心的程序设计思维或者方式,好处是有两个成员组成,成员属性和成员方法,提高代码重用性,避免代码冗余度三大特征:封装,继承,多态十九·session和cookie的区别是什么,请从协议,产生的原因与作用说明?cookie数据存放在客户端的浏览器上,session数据放在服务器上,cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE,单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,将登陆信息等重要信息存放为SESSION, 其他信息如果需要保留,可以放在COOKIE中二十·HTTP状态中的200,302,304,403,404,500代码含义?200:成功访问,并返回数据302:重定向304:缓存未过期403:服务器拒绝访问,Apache权限拒绝访问404:访问的页面不存在500:服务器内部错误linux压缩:tar czf text.tar.gz test.phplinux解压:tar xzf test.tar.gz
2019年07月10日
6,582 阅读
0 评论
2 点赞
2019-07-10
PHP经典面试题汇总(一)
一· 用php获取当前时间并打印,打印格式:2017-3-25 22:20:21?echo date('Y-n-d H:i:s'); //月份未满十不补零,二十四小时制 echo date('Y-m-d h:i:s'); //月份未满十补零,十二小时制二· 字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么?1)字符串转数组:$str = 'www.baidu.com'; print_r(str_split($str,3)); print_r(explode(".",$str));2)数组转字符串:$arr = array('aaa','bbb','ccc'); echo implode('',$arr); echo join(' ',$arr);3)字符串截取:$str = "这是一个字符串this is a string!"; echo substr($str,0,4); //截取英文字符串 echo mb_substr($str,0,4,'utf-8'); //按照字符个数截取字符串 echo mb_strcut($str,0,6); //按照字节数截取字符串(中文三个字节为一个中文字)4)字符串替换:$table_change = array('you'=>'her sister','Love' => 'hate'); echo strtr("I Love you",$table_change); //比str_replace快四倍,区分大小写,但是这个函数挺麻烦,不能替换为空,可以替换空白 $bodytag = str_replace("%body%", "black", ""); //区分大小写 echo $bodytag; $str = "linux is very good server for php"; echo preg_replace('/linux|php/','java',$str); //使用正则替换5)字符串查找:$str = "/web/b/c/index.html"; echo strpos($str,'/'); //查找第一个出现的位置,返回位置数 echo strrpos($str,'/'); //查找最后一个出现的位置,返回位置数 $pos = strrpos($str,'/'); echo substr($str,$pos+1); //截取路径里面的文件部分 echo substr($str,0,$pos); //截取路径里面的目录部分 echo basename($str); //获取路径中的文件名 echo dirname($str); //获取路径中的目录 $str = "pap is pbp and pcp or pdp"; preg_match_all('/p.p/',$str,$ms); //正则匹配,返回数组 echo "
2019年07月10日
6,587 阅读
0 评论
5 点赞
1
...
4
5
6
...
8