这个题有点绕。考的还是 cookie 和 ssion 的基础知识。服务端通过 t-cookie 命令来通知客户端保存 cookie。
只要按照 domain path 过期时间等规则 用 header 函数就可以实现。
分布式系统 ssion,集中处理。按我们公司的架构,为了实现高可用和高容灾,提供一个分布式的验签服务。具体的可以看下 redis 的分布式服务架构。
思路:生产者和消费者模式。这个问题也没有说其他的状态,比如数据库的数据会实时增加么?redis 中每个钱包是否有其他服务在读取或者写入啊。什么的。数据库和 redis 放一起,要么考数据一致性,要么考出现锁,导致效率降低。
tail -f access.log | awk -f '[' '{print $2}' | awk '{print $1}' | uniq -c
redis 集群主从同步的简单原理
redis 的复制功能是基于内存外来物快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了 redis 的复制功能,就一定会有内存快照发生。
当 slave 启动并连接到 master 之后,它将主动发送一个 sync 命令 (首先 master 会启动一个后台进程,将数据快照保存到文件中 [rdb 文件] master 会给 slave 发送一个
ping 命令来判断 slave 的存活状态 当存活时 master 会将数据文件发送给 slave 并将所有写命令发送到 slave )。
slave 首先会将数据文件保存到本地 之后再将 数据 加载到内存中。
当第一次链接 或者高考数学选择题是 故障后 重新连接 都会先判断 slave 的存活状态 在做全部数据的同步 , 之后只会同步 master 的写操作 (将命令发送给 slave)
问题:
当 master 同步数据时 若数据量较大 而 master 本身只会启用一个后台进程 来对多个 slave 进行同步 , 这样 master 就会压力过大 , 而且 slave 恢复的时间也会很慢!
redis 主从复制的优点:
(1)在一个redis集群中,master负责写请求,slave负责读请求,这么做一方面通过将读请求分散到其他机器从而大大减少了master服务器的压力,另一方面slave专注于提供
读服务从而提高了响应和读取速度。(2) 在一个 redis 集群中,如果 master 宕机,slave 可以介入并取代 master 的位置,因此对于整个 redis 服务来说不至于提供不了服务,这样使得整个 redis 服务足够安全。
(3) 水平增加 slave 机器可以提高性能
不是核心业务的话,先停写,把备机拉起来,查看两台机器的日志,进行数据补偿,开写。
如果是核心业务的话,现在所有的写操作都在正常的状态机器上。把好的这台机器的备机拉起来,当主机。
以上全是应急操作。实际上数据库的容灾设计要复杂的多。
面试官要是问你,备机的数据不一致怎么办,你要勇敢怼回去,你们每秒多少写入操作。按照百万级表,每秒 1000 的写入效率,正常的设计是,分布在 2 台机器上每台 500。这个级别的数据同步,出现差异的概率 可以忽略不计的。有一台出现问题,另一台也可以抗住。
(正常的操作,还是先停写,等数据一致,切换,开写外婆的手纹。我们公司搞这些切换都是在凌晨 4.00 左右,核心业务的每秒写操作,只有十几个。前后耽搁不到 20 秒)。
echo substr(strrchr($file, '.'), 1);echo substr($file, strrpos($file, '.')+1);$arr=explode('.', $file);echo $arr[count($arr)-1];$arr=explode('.', $file);echo end($arr);echo strrev(explode('.', strrev($file))[0]);echo pathinfo($file)['extension'];echo pathinfo($file, pathinfo_extension);
function download_images($article_url = '', $image_path = 'tmp'){ // 获取文章类容 $content = file_get_contents($article_url); // 利用正则表达式得到图片链接 $reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif|png)).*?>/'; $ret = preg_match_all($reg_tag, $content, $match_result); $pic_url_array = array_unique($match_result1[1]); // 创建路径 $dir = getcwd() . directory_parator .$image_path; mkdir(iconv("utf-8", "gbk", $dir), 0777, true); foreach($pic_url_array as $pic_url){ // 获取文件信息 $ch = curl_init($pic_url); curl_topt($ch, curlopt_header, 0); curl_topt($ch, curlopt_nobody, 0); curl_topt($ch, curlopt_ssl_verifypeer, fal ); curl_topt($ch, curlopt_ssl_verifyhost, fal ); curl_topt($ch, curlopt_returntransfer, 1); $fileinfo = curl_exec($ch); $httpinfo = curl_getinfo($ch); curl_clo($ch); // 获取图片文件后缀 $ext = strrchr($pic_url, '.'); $filename = $dir . '/课题立项申报书' . uniqid() . $ext; // 保存图片信息到文件 $local_file = fopen($filename, 'w'); if(fal !== $local_file){ if( fal !== fwrite($local_file, $filecontent) ){ fclo($local_file); } } }}
四只
二进制问题。薛定谔的老鼠。
一只老鼠有两个状态,死活,对应 01。假设老鼠的个数为 a,则有 2^a>=10; a=4;
思路很简单,十瓶药编号:0,1,10,11….1001;
0 不喝。第一只老鼠喝所有个位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。
24 小时后,看下死了的是 1,活着的是 0。按老鼠的顺序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有问题。
本文发布于:2023-04-08 11:59:19,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/505e00b6add78fbf33ec19bc0b8ef646.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:十个PHP 高级工程经典面试题.doc
本文 PDF 下载地址:十个PHP 高级工程经典面试题.pdf
留言与评论(共有 0 条评论) |