摘要:
1.运行时控制Nginx进程 NGINX有一个主进程和一个或多个工作进程。 如果启用了缓存,则缓存加载器和缓存管理器进程也会在启动时运行。 主进程的主要目的是读取和评估配置文件,以及维护工作进程。 工作进程执行请求的实际处理。 NGINX依赖于依赖操作系统的机制来有效地在工作进程之间分配请求。 工作进程数由nginx.conf配置文件中的worker_processes指令定义,可以设置为固... 阅读全文
摘要:
随着互联网的爆炸性增长及其在我们生活中日益重要的作用,互联网上的流量急剧增加,并且每年以超过100%的速度增长。服务器上的工作负载正在迅速增加,因此服务器很容易在短时间内过载,尤其是对于流行的网站。为了克服服务器的过载问题,有两种解决方案。一种是单服务器解决方案,即将服务器升级到性能更高的服务器,但 阅读全文
摘要:
1.常见参数 tcpdump -i eth0 -nn -s0 -v port 80 -i 选择监控的网卡 -nn 不解析主机名和端口号,捕获大量数据,名称解析会降低解析速度 -s0 捕获长度无限制 -v 增加输出中显示的详细信息量 port 80 端口过滤器,只捕获80端口的流量,通常是HTTP 2. tcpdump -A -s0 port 80 -A 输出ASCII数据 -X 输出... 阅读全文
摘要:
DNS DomainNameSystem域名系统,根据域名查出IP地址 1.dig命令可以显示整个查询的过程 root@VM-38-204-ubuntu:~# dig www.sopans.com //这一段是查询参数和统计 ; > DiG 9.10.3-P4-Ubuntu > www.sopans.com ;; global options: +cmd ;; Got answer: ;; -... 阅读全文
摘要:
php timer.php 每500毫秒执行一次 阅读全文
摘要:
1.闭包函数也叫匿名函数,一个没有指定名称的函数,一般会用在回调部分 2.闭包作为回调的基本使用, echo preg_replace_callback('~-([a-z])~', function ($match) { return strtoupper($match[1]); }, 'hello-world'); 第三个参数是要匹配的目标字符串,第二个参数是一个匿名函数,当preg... 阅读全文
摘要:
PHP代码的执行:1.和大部分程序一样,接收数据,处理数据,输出结果2.编写的代码就是输入的数据,php内核进行处理,返回相应的输出3.php作为业务程序和编译语言的区别就是,php多了一步把用户代码翻译为机器语言的步骤:词法分析,语法分析4.词法分析把php代码分割成一个个单元,语法分析将这些单元 阅读全文
摘要:
两个类有依赖关系的时候 使用者通过构造函数参数,方法或属性等方式将具体组件,传给自己 $storage=new Storge(); //构造函数注入 class User{ public function __construct($storage){ $this->storage = $storage; } } //方法注入 class User{... 阅读全文
摘要:
2016年刚入职后在新浪微盘项目上所遇到的问题: 1.前端接口的程序不同版本问题,版本号在程序路径中区分,比如2.4.2/lib/sdk/api/weipan/Client.php 2.文件夹接口的mc缓存问题,用户创建文件夹的时候会从新读取数据库更新MC缓存 3.文件库和用户库分开,比如:用户表在 阅读全文
摘要:
向消息队列发送数据和获取数据的测试 阅读全文
摘要:
每一个连接对应一个进程,类似apache的perwork模式 php多进程的解释 阅读全文
摘要:
建立composer.json 执行 建立server.php 建立client.php 执行 结果 阅读全文
摘要:
upstream mail.sina.net { #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。 server 192.168.80.121:80 weight=3; server 192.168.80.122:80 weight=2; ... 阅读全文
摘要:
apache的三种模式 阅读全文
摘要:
web缓存: 1.可以自动保存常见文档副本的HTTP设备,当web请求抵达缓存时,如果存在缓存副本,就直接从本地存储设备返回,而不是去源服务器获取 2.缓存命中和未命中 3.HTTP再验证,检测服务器上的内容是否发生了变化,新鲜度检测规则。缓存对副本进行再验证时,会向服务器发送一个小的再验证请求,如果没变化,服务器会返回304 Not Modified,get请求中添加if-modified... 阅读全文
摘要:
HTTP连接管理: 1.误解的Connection首部 当http报文经过中间客户端到服务端中间的各种代理设备时,对标签中列出的头信息进行删除,close是事务结束后关掉此条连接 2.消除串行化的时延 并行连接:多条TCP连接发起并发的HTTP请求 持久连接:重用TCP连接,消除连接和关闭时延 管道化连接:通过并发的TCP连接发起并发的HTTP请求 3.打开少量的并行连接,每一个连接都是持久... 阅读全文
摘要:
HTTP的媒体类型 1.MIME类型的数据格式标签(MultIpurpose Internet Mail Extension) 2.最初用于电子邮件系统之间搬移,多用途互联网邮件扩展 3.MIME类型是一种文本标记,表示一种主要的对象类型和一种子类型,通过相应报头content-type传递 4.MIME类型举例 html格式 text/html 普通ASCII文本 text/... 阅读全文
摘要:
100-199 信息性状态码 100 continue 请继续 101 switching protocols 切换协议,返回upgraded头 200-299 成功状态码 200 ok 201 created 创建资源 202 accepted 请求已经接收到,不保证完成 203 non-authoritative information 非权... 阅读全文
摘要:
证明: 阅读全文
摘要:
1. fgetss函数php官网的解释是: (PHP 4, PHP 5, PHP 7) fgetss — 从文件指针中读取一行并过滤掉 HTML 标记 2. 测试后出现的问题是: 当文本中有一行数据出现 < 左尖括号字符时,会把下面的数据全部替换成空白行 ,每行读取到的数据都是空白 阅读全文
摘要:
选择排序: 1.数组分成前后两个部分,前部分是排序的,后部分是无序的 2.两层循环,先假定当前循环的第一个索引为最小值,内部循环找比该索引还小的值,找到交换 for i;i<len;i++ minIndex=i for j=i+1;j<len;j++ if arr[j]<arr[minIndex] minIndex=j t=arr... 阅读全文
摘要:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路: 1.指数的二进制表达10^6次方 可以表示10^110(二进制) 10^100 * 10^10 * 10^000=>10^4 * 10^2 2.移位运算 while(n!=0){ if((n&1)==1) res*=curr; curr*=c... 阅读全文
摘要:
1.行数和列数取出来row,col,圈数就是 (较小值-1)/2+1 2.外层循环控制圈数,内层四个for循环,i 3.第一个for循环,从左到右,j=i;j=i&&row-1-i!=i;m-- arr[row-1-i][m]//row-1-i!=i单行的时候只打印一次 6.第四个循环,从下到上,n=row-2-i;n>=i&&col-1-i!=i;n-- arr[n][i] $col... 阅读全文
摘要:
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 1.字符串翻转,前n位取模长度,abc翻转成cba 后面的翻转成fedXYX ,然后再统一翻转 XYZde... 阅读全文
摘要:
题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 示例1 输入 +2147483647 1a33 输出 2147483647 0 思路: 1.处理负号 2.处理正号 3.字符串中包含非数字字... 阅读全文
摘要:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路: 1.利用递归形成递归树,达到深度优先,固定首字母的效果 2.得复位以后才能再次深度优先 3.回溯法思想 4.一张图和一个运行过程,只能慢慢体会了 string(3) "abc" } string(7) ... 阅读全文
摘要:
1.堆(二叉堆):可以视为一棵完全的二叉树,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示,每一个结点对应数组中的一个元素 2.给出某个结点的下标,可以计算出父结点的和孩子结点的下标; parent(i)=floor(i/2) left(i)=2i+1 right=2i+2 3.最大堆和 阅读全文
摘要:
二进制中1的个数: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路: 1.右移位运算>> 和 与运算& 2.先移位个然后再与1 &运算为1的就是1 3.这里如果是负数就会出现死循环,负数右移后高位会一直补1 4.因此要实现一下无符号位移 无符号右移的实现思路 1.这个负数右移n位后的结果,然后把符号位后n位的1变为0 2.2147483647 这个数是0...31个... 阅读全文
摘要:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 1.可以看成是二分查找法,查找最小的元素 2.{3,4,5,1,2} 可以看成{3,4,5} {1,2},left和r... 阅读全文
摘要:
wget https://getcomposer.org/installer //下载一个脚本文件 php installer //php执行下这个php脚本 mv composer.phar /usr/bin/composer //下载的文件转移到执行目录 composer config -g repo.packagist composer https://packagist.l... 阅读全文
摘要:
最长公共子串问题: 给定两个字符串,求出它们之间最长的相同子字符串的长度。 暴力解法思路: 1.以两个字符串的每个字符为开头,往后比较,这样就会需要两层循环 2.两层循环内部的比较方式,也是一层循环,以当前字符为起点,往后遍历比较,直到有不同就跳出这次循环,记录下相同子字符串的长度 3.以最长的那次长度为准,因此也就是有三层循环。时间复杂度O(n^3) longest=0 for i=0;i... 阅读全文
摘要:
拼接最小字典序: 给定一个字符串类型的数组strs,请找到一种拼接顺序,使得将所有字符串拼接起来组成的大字符串是所有可能性中字典顺序最小的并放回这个大字符串。 思路: 1.字典序,12345这五个数,按不同的顺序排列,所有的排列中最前面的是12345,最后面的是 54321。 2.使用比较函数usort(arr,'costomcomp'),自定义比较大小的函数,costomcomp(a,b) ... 阅读全文
摘要:
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路: 1.php数组完全就能实现 2.array_push 从尾部往里压入元素 3.array_shift 从头部删除元素 $list=array(); array_push($list,$node); array_shift($list); <?php ... 阅读全文
摘要:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 思路: 1.找规律 f(1)=1 f(2)=2 f(3)=3 f(4)=5 f(n)=f(n-1)+f(n-2)这是一个斐波那契数列 2.因为调到第n个台阶时,倒数第一个台阶可以一步跳过来,倒数第二个台阶也可以一步就跳过来 非递归版本: JumpFloor(target) ... 阅读全文
摘要:
替换空格: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: 1.先循环一遍,找出该字符串中" "空格的个数count 2.因为要把" "空格替换成 "%20",所以,要倒着数,最后一个空格后面的元素要移动到2*count位置 3.继续往前遍历,倒数第二个空格后面直到最后空格之... 阅读全文
摘要:
二叉树中和为某一值的路径: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 思路: 1.二叉树的前序遍历,中左右顺序 2.把目标值target传进去,target-=val 3.target为0并且left和right都为null,达到叶... 阅读全文
摘要:
二叉搜索树的后序遍历序列: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 1.后序遍历是 左右中 , 最后一个元素是根结点 2.二叉搜索树,左子树=end return true root=seq[end] index for i=start;i= root ... 阅读全文
摘要:
二叉树的深度: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路: 1.非递归层序遍历 2.使用辅助队列,根结点先入队列 3. 循环判断队列是否为空,如果不为空就继续循环队列里面的每个结点 4. 循环队列时,当前当前结点出队列,把该结点的左右孩子入队列 TreeDepth(tree) if !tree re... 阅读全文
摘要:
操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / ... 阅读全文
摘要:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 1.子树的意思是包含了一个节点,就得包含这个节点下的所有节点,两棵树同时到底 2.子结构可以是A树的任意一部分 思路: 1.第一个递归:A和B两棵树,先在A中找到与B的根结点相同的点,如果A的根不是,那就递归A的左右子树来找 2.第二个递归:从两棵树的根结点开始进行比较,遍历的过程中,如果B树为空,则... 阅读全文