php 的一些问题
<?php
/**
* $path相对于$base的相对路径
* @param string $base
* @param string $path
*/
function abs2rel(string $base, string $path) {
if (is_dir($base)) {
$base = rtrim($base, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . ".";
} $a = explode(DIRECTORY_SEPARATOR, $base);
$b = explode(DIRECTORY_SEPARATOR, $path); $d = []; // $path push
$i = count($a)-1; $sliceEquals = function($a, $b, $j) {
if ($j >= count($a) || $j >= count($b)) {
throw new Exception('$j out of range');
}
for ($i = $j; $i >= 0; $i--) {
if (strcmp($b[$i], $a[$i])!==0) {
return false;
}
}
return true;
};
// 找到a,b数组元素相同的下标
while (array_pop($a)) {
$i = count($a)-1;
if (isset($b[$i])) {
if ($sliceEquals($a, $b, $i)) {
break;
}
}
array_push($d, "..");
}
// 从首个不同元素开始
for ($i+=1; $i < count($b); $i++) {
array_push($d, $b[$i]);
}
return ".".DIRECTORY_SEPARATOR.implode(DIRECTORY_SEPARATOR, $d);
}
* 联合索引哪些有效
* 链表逆顺序 包含头节点
* 数组合并哪几种方式
1. 负载均衡 [TO BE DONE]
https://blog.csdn.net/qq_28602957/article/details/61615876
2. 索引的建立 和查询 以及索引场景建立
3. thinkphp的路由 [ONGOING]
https://www.kancloud.cn/manual/thinkphp5/118030
./application/route.php
4.PHP中一些常用的spl函数 [TO BE DONE]
http://php.net/manual/en/book.spl.php
5.mysql的主从分离 对id进行hash 理解hash
6.linux的一些常用命令 熟悉linux [DONE]
7. 递归 n! [DONE]
8. php单例模式
9. mysql 分表
10. CAS认证, ucenter认证

---------------------------------------------爬虫相关的问题---------------------------------------------------
* php程序发送http请求
- curl
$ch = curl_init(); curl_setopt_array($ch, [
CURLOPT_URL => 'https://www.baidu.com',
CURLOPT_HEADER => 1,
CURLOPT_RETURNTRANSFER => 1
]); $data = curl_exec($ch);
curl_close($ch); echo $data.PHP_EOL;
-socket
* mysql存储引擎 myisam / innodb select count(*) ... 用哪个存储引擎快
MyISAM会保存表的总行数,select count(*)在MyISAM存储引擎中执行,MyISAM只要简单地读出保存好的行数即可。
InnoDB存储引擎不会保存表的具体行数,因此,在InnoDB存储引擎中执行这段代码,InnoDB要扫描一遍整个表来计算有多少行。
* mysql 函数pconnect/connect
mysql_pconnect — Open a persistent connection to a MySQL server
* linux shell 定时器 脚本
crontab
* 投票限制 每人每分钟3次,每人每小时10次; 每个IP每分钟30次,每天100次
* 爬虫架构
* php实现一个跨请求的队列 (redis?)
* 上传文件安全限制
* "Hello world Blog Control" 字符串按空格分隔,分成数组,全部转化为小写,按字母顺序排
(php sort 和javascript的sort方法不同 不传回调用SORT_STRING )
<?php
class TestArrayObject {
private $s = ""; public function __construct($s) {
$this->s = $s;
} public function run() { $ao = new ArrayObject(array_map(function($word) {
return strtolower($word);
}, explode(' ', $this->s))); $ao->uasort(function($a, $b) {
return strcmp($a, $b);
}); return $ao->getArrayCopy();
} } $o = new TestArrayObject("Hello world Blog Controll Hola Hi Shalom");
$a = $o->run();
var_dump($a);
TestArrayObject.php
---------------------------------------------/爬虫相关的问题---------------------------------------------------
随机推荐
- How to build your custom release bazel version?
一般情况下用源代码编译,生成的都是开发版本,这种版本做版本号校验方面会有很多问题,所以需要编译自己的release版本. export USE_BAZEL_VERSION=1.2.1 # 选择使用版本 ...
- NOIP 模拟 $34\; \rm Rectangle$
题解 \(by\;zj\varphi\) 对于没有在同一行或同一列的情况,直接枚举右边界,左边界从大到小,用树状数组维护上下边界即可. 而对于有多个在一列或一行的情况,这些点将左右分成了几个区间,枚举 ...
- rsync基本使用
概念 rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. 目前,已支持跨平台,可以在Windo ...
- flutter获取状态栏高度及安全区域
获取状态栏高度: final double statusBarHeight = MediaQuery.of(context).padding.top; 所谓安全区域,就是适配现在一些刘海屏之类的非常规 ...
- mysql查询附近门店
mysql 查询一个地点(经纬度) 附近N公里内的数据.(根据一个地点的经纬度查询这个地点方圆几公里内的数据)1.创建测试表 CREATE TABLE `location` ( `id` int(10 ...
- 【springcloud】API Gateway 的路由和过滤(Zuul--1)
转自:https://blog.csdn.net/pengjunlee/article/details/87084646 Zuul是什么? API Gateway 是随着微服务(Microservic ...
- C# 计时器用法(DispatcherTimer、System.Timers.Timer、System.Threading.Timer)
首先,我觉得三种计时器最大的区别是:DispatcherTimer触发的内容会直接转到主线程去执行(耗时操作会卡住主线程),另外两个则是在副线程执行,如果需要修改界面,则需要手动转到主线程. Disp ...
- linux(2)-----新装linux配置
1.配置本机ip,刚装的Linux无内网ip vi /etc/susconfig/network-scripts/ifcfq-ens33 编辑配置文件 最后一行改为yes service net ...
- ABC类IP地址
A类IP地址一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位 必须是"0", 地址范围从1.0.0.0 到126.0.0.0.可用的A类网络有126个,每个 ...
- ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别
ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别 ScheduledThreadPoolExecut ...