面试题的一些汇总

1.	公司是做什么业务的
答:贯通云网快递平台网页版。集合了国内七大现有快递公司的业务终端,并在陆续扩展中。集中了在线填写,预约发件;智能跟踪,智能查询,快件信息管理等优点!
指尖快递APP---基于线上平台数据,建立快递代办点业务体系。
2.	2.公司有多少服务器
答:80台
3.	你负责多少台
答:我主要负责web服务器nginx的40台
4.	每台服务器都跑的啥
答:6台web,两台redis,6台数据库,还有nginx,tomcat,LVS负载+keepalived高可用什么的,剩下的都是平时测试用的。
5.	公司规模多大
答:中小型企业。
6.	公司有个运维
答:2个,我负载web端,另一个负责APP端。
7.	你的汇报对象是谁
答:我们老大
8.	你们公司用的什么语言
答:开发用的是JAVA
9.	你们的开发有多少人
答:开发是3个
10.	运维怎么分工的
答:也没啥分工,一起干
11.	你的期望薪资是多少
答:因为上家公司给的是13K,所以 不低于13吧
12.	你平时出差多吗
答:出差不多,因为公司业务主要都在线上。说实话我还是挺想出去走走的。
13.	你们学校是统招还是非统招
答:统招的。
14.	你们学校是全日制的吗
答:是全日制的
15.	你离职原因是啥
答:因为学历问题,公司要给我做降薪处理,有点接受不了
16.	你觉得你的优点和缺点是啥
答:优点:沟通能力强,团队协作能力强,乐于助人,喜欢学习。
    缺点:长得丑算吗?
17.	你工作之余有什么爱好
答:看一些技术方面的书,研究一些新的技术。
18.	你最近有学习过哪些新技术
答:python
19.	你住的地方,离公司有多远
公司在哪里,我就住哪里
20.	你们公司哪年成立的
答:2014年5月成立的。
21.	你们公司服务器都是什么型号
答:戴尔R710  R720 
22.	机房温度是多少
15--22
23.	你对加班怎么看的
答:我觉得IT行业加班很正常啊,如果我有幸进入公司的话,我会主动去加班,尽快熟悉公司业务,能早点上手工作。
24.	你来北京的原因
答:当时年轻气盛,跟我哥打赌来的。他来北京漂了两年,漂不下去了,就回家了,我就想,我必须在北京漂出个名堂。
25.	你是从什么时候开始接触Linux的
答:在大学的时候就有接触,当时是我的一个室友,他哥就是干运维的,有一次一起吃饭了解了一下运维这个行业。
26.	你的工资是怎么样的薪资结构
答:基本+绩效
27.	你现在是离职状态吗
答:是的
28.	你们过节都有什么福利
看老板心情
29.	你对你们领导的看法是
答:我们领导人还是挺好的,与人为善,挺随和,对我们也挺好的。
30.	如果让你入职了,你首先会怎么做
答:多跟公司的同事们沟通,尽快了解自己的工作和公司的业务,争取能早点上手工作
31.	你的学历学信网可查吗
答:我是民办本科毕业的,学信网好像查不了,民教网能查。
32.	你的年龄和身份证上 的不符合
答:没有不符啊,身份证上就是我的真实年龄。
33.	你门的机房放在哪
答:在三元桥那边,托管的。
34.	你能适应出差吗
答:刚才我也说了,我其实挺想出去看看的,毕业完了就来了北京,一直在这种快节奏的生活环境下,确实有点小累,而且我目前也是单身,没什么牵挂,可以说走就走。
35.	如果你跟领导的意见不一样,你会如何做
答:那就要看是什么方面的了,如果是技术方面的话,我觉得我会跟领导私下再去沟通一下,跟领导阐明我的观点和理由,剩下的就看领导的决定了。
36.	你能提上份工作的工资流水证明吗
答:离职以后想出国去旅游,当时开了一个资产证明,可以吗?
37.	你上份薪资多少
答:到手13K
38.	你跟同事关系怎么样
答:我们关系还是很好的,因为我这个性格就是喜欢交朋友,所以我跟我的同事们都是比较好的朋友。
39.	你是如何看待跳槽的
答:我觉得跳槽是一种不负责任的表现,进入公司以后公司对我们进行了培养,把我们培养成一个技术型人才,随意跳槽是对自己和公司不负责任。
40.	用三个词描述自己的优点,你觉得会是啥。 用三个词描述自己缺点,你觉得会是啥,分别对每个词进行举例子
答:优点:1.乐观  我是一个不善于表功的人,一般就是默默的做着自己的工作,而有时候功劳却会成文别人的,对此,我没有任何怨言,我相信,只有真正的付出了,才会有回报。
2.	开朗  我是一个外向的人,跟谁都能合得来,跟谁都能成为朋友,这也使我跟别人沟通的时候会有很好的效果。大家也都愿意跟我成为朋友。
3.	好学  我对新鲜的事物有特别中的好奇心,这使我特别喜欢研究一些新的技能,而且我都会把它搞清楚,弄明白。
HR面试题借鉴王济宇的(自己整理自己的HR面试题)
技术面试题:
41.	主从原理
答:从库的 I/O 线程去请求主库中的 bin-log 二进制日志,并将得到的 binlog 日志写到 relay log(中继日志) 文件中;
主库的 dump 线程用来给从库的 I/O 线程传送 binlog 二进制日志;
从库的 SQL 线程会读取从库中的 rely-log 文件中的日志,并且解析成具体的操作进行持久化,从而实现主从的一致;
 

42.	主从同步异常如何解决
答:1) 一般异常只需要跳过一步即可恢复
 >slave stop;
>SET GLOBAL sql_slave_skip_counter =1;
>slave start 
   2) 断电导致的不能同步,通过主库的最后一个bin-log日志进行恢复。 
   3) 主键冲突,表已经存在等错误代码如1602,1032,1060 可以在配置文件中指定
 【MySQL】
slave-skip-errors = 1060,1032,1060
43.	主从同步主服务器宕机如何处理?

答:1. 硬件问题宕机(服务器,ecs,虚拟主机) 查看IDC巡检记录,或通过远程控制卡查看硬件运行状态
1)	查看报警,确认业务是否受到影响,必要时切从库进行数据交换
2)	IDC询问排查
3)	确认硬件故障,通知部门领导,处理进度,并实时记录
4)	处理完成后,写故障报告,会议通报
2. 软件问题(服务中断)(一主多从的场景)
1) 判断是否影响业务,是否需要切库,保证业务的正常运行是首要任务。
2)先查看MySQL从库状态,若io线程和sql线程双YES,表示是同步的。(如果不同步,拷出binlog进行同步)
3)登陆从库进行查看,选OPS最大的作为主库
4)确保relay log 全部更新完毕
在每个从库上执行 stop slave io_thread;show processlist(在每个从库上执行)
5)设置选择的从库提升为主库master
6)所有的从库指向新的master
先保证业务的正常运行,暂时将从服务器变成主业务服务器;排查问题,先程序,看看数据库的各项指标,看日志,看端口,看所占用的内存,然后看硬件,网线,服务器本身是不是出问题,基本看日志就可以了。
44.	数据库备份如何做
答:MySQL dump+全备,bin-log增量备份。
45.	MySQL优化你做了哪些操作
答:1. 对Linux内核进行优化防止操作系统影响MySQL性能     
net.ipv4.tcp_fin_timeout = 30
#TIME_WAIT超时时间,默认是60s
net.ipv4.tcp_tw_reuse = 1
#1表示开启复用,允许TIME_WAIT socket重新用于新的TCP连接,0表示关闭
net.ipv4.tcp_tw_recycle = 1
#1表示开启TIME_WAIT socket快速回收,0表示关闭
net.ipv4.tcp_max_tw_buckets = 4096
#系统保持TIME_WAIT socket最大数量,如果超出这个数,系统将随机清除一些TIME_WAIT并打印警告信息
net.ipv4.tcp_max_syn_backlog = 4096
#进入SYN队列最大长度,加大队列长度可容纳更多的等待连接
2.为防止出现too many files open 调整打开文件句柄限制
vim /etc/security/limits.conf
#加入以下配置,*代表所有用户,也可以指定用户,重启系统生效
* soft nofile 65535
* hard nofile 65535
# ulimit -SHn 65535 #立刻生效

3.从硬件方面:加大物理内存,用SSD代替SAS或者将RAID级别调整为RAID10. 
4.	给数据库增加缓存,把热备数据加到内存中,提高读性能。我们公司用的是redis,之所以没用memcached主要考虑到想做数据的持久化。 
5. 当然还有些分库分表,当时跟Java开发和新来的DBA一起做的,把一些相关的表切分到不同的数据库里,把一些大字段放在一个单独的表里
6.开启慢查询日志,分析哪条SQL比较慢,我还跟DBA学了个工具 pt工具,主要用来分析慢查询日志,比如pt-querry-digest

46.	nginx优化你做了哪些操作

答:老服务的nginx优化我做的比较少,新业务当中在编译nginx的时候做过隐藏版本信息的优化,算是安全方面的优化把
在一个在安全方面还做过降权启动nginx,
性能方面的优化,我知道一些,比如优化nginx的进程个数(worker_process )
还有一些调整nginx单个进程的允许的客户最大连接数以及nginx worker进程最大打开数。
nginx 日志方面写过脚本实现nginx的日志轮询

47.	nginx怎么定义403错误界面

答:首先在nginx的http模块加入
   fastcgi_intercept_errors on;
然后再server模块加入的location/{}加入403.html

location / {
    deny   192.168.1.0/24;
    alllow all;
    error_page 403 /403.html;
     location  /403.html {   
        allow   all;
     }
}

最后创建一个自己定义的页面
# vim 403.html 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

403 Forbidden<<span class="token operator">/</span>title><<span class="token operator">/</span>head>
<body bgcolor=<span class="token string">"white"</span>>
<h1>403 Forbidden<<span class="token operator">/</span>h1>
<p>You don<span class="token string">'t have permission to access the URL on this server. Sorry for the inconvenience.<br/>
This is a  our  test website, please visit our official website <a href="http://monitor.zmedu.com/fzj/index.html" title="Click View Site " ><font size="5"> monitor.zmedu.com </a>!
</font><br/>
Thank you very much!</p>
URL: http://monitor.zmedu.com/
<br/>Date: 
<script language="JavaScript" type="text/javascript">
var enabled = 0; today = new Date();
var date;
M=today.getMonth() + 1
D=today.getDate()
HH=today.getHours()
MM=today.getMinutes()
SS=today.getSeconds()
if (M<10)
{
M="0"+M
}
if (D<10)
{
D="0"+D
}
if (MM<10)
{
MM="0"+MM
}
if (HH<10)
{
HH="0"+HH
}
if (SS<10)
{
SS="0"+SS
}
date = (today.getFullYear()) + "/" + M + "/" + D + " " + HH+":"+MM+":"+SS +"";
document.write(date);
</script>
<hr/>Powered by zmedu.com!</body>
</html>


最后重启  :  /etc/init.d/nginx  reload
效果
 



48.	nginx平滑启动的命令是什么
答:/usr/nginx/sbin/nginx -s reload
/usr/nginx/sbin/nginx -t
49.	nginx和apache有什么区别
答:1. apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
动态页面,nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多超稳定
2) nginx相对于apache的优点:
轻量级,同样起web 服务,比apache占用更少的内存及资源 ,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 这归功于Nginx为我们选择了 epoll and kqueue 作为开发模型.
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速啊
Nginx本身就是一个反向代理服务器
负载均衡能力突出,Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多



50.	tomcat端口有哪些,都是什么用途
答:80port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。
8005 port:指定一个端口,这个端口负责监听关闭Tomcat的请求

51.	公司代码上线是怎么做的,发布周期是多长时间,一般什么时候上线
答:
最初始的代码上线
 
dev: 开发服务版本库  bate 测试服务版本库,  online线上服务版本库
测试通过后,再客户端选2000到3000个用户强制弹窗,让其更新版本。进行灰度发布。 有bug修复后再走一遍流程。
所谓的灰度发布: 根据自己的配置,将部分用户的流量导到新系统来验证新功能的修改,一旦出现问题可以马上修复。 
一周上线一次,周四上线,有问题就回滚,周五继续上线

2. 代码如何回滚,用jenkins如何实现
答:发布:jenkins配置好代码路径(SVN或GIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins里面可以调脚本),然后从分发服务器往下分发到业务服务器上。发布:jenkins配置好代码路径(SVN或GIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins里面可以调脚本),然后从分发服务器往下分发到业务服务器上。
回滚:按照版本号到发布服务器找到对应的版本推送
3. 什么是灰度发布,什么是灰度测试
答: 所谓的灰度发布: 根据自己的配置,将部分用户的流量导到新系统来验证新功能的修改,一旦出现问题可以马上修复

5. 上线前开发给你的包是什么包
答:jar war
6. svn与git相比有什么区别?
答:1)git 只关心文件数据的整体是否发生改变,而svn关心 的是内容是否改变
2)git的绝大多数操作只需要访问本地的文件和资源,不用联网查看所有的历史版本记录,而svn需要联网
3) svn断网后无法commit代码,而git可以先commit到本地仓库
4)git克隆一个完整项目非常快,而svn非常慢
范例一:
我们公司用的是SVN,但我私下里也学习了下git,个人感觉,SVN更好上手,但是论功能强大的化还是git好一些,比如同样是克隆一个完整项目,git就比svn快,而且有时候,一旦断网git可以commit到本地仓库,但是SVN就没法commit .  

7. 代码上线时运维需要做的事情?
答:配合开发搭建测试环境,调试,测试代码
	采购阿里云服务器,安装系统,配置服务
	部署上线过程中发现bug,与开发沟通,前端沟通,开发解决完继续上线
	出现问题,回滚(需要提前确定好回滚机制)
备份恢复:
52.	备份分为哪几种?
答:完全备份 增量备份 文件备份
53.	全量用什么工具,增量用什么工具
答:全量:XtraBackup
增量:mysqldump
1.	写脚本每天晚上0点,定时将B服务器数据备份到A,并把备份结果发给运维
#!/bin/sh
ip=$(/sbin/ifconfig eth0|sed -rn '</span>s<span class="token comment">#^.*addr:(.*)  Bca.*$#\1#gp')</span>
scp <span class="token operator">-</span><span class="token function">rp</span> <span class="token operator">-</span>P52113 <span class="token operator">/</span><span class="token keyword">data</span><span class="token operator">/</span> 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>100<span class="token punctuation">.</span>61:~<span class="token operator">/</span>data_<span class="token variable">$ip</span>
<span class="token keyword">if</span> <span class="token punctuation">[</span> $? <span class="token operator">-eq</span> 0 <span class="token punctuation">]</span>
        then
        <span class="token function">echo</span> <span class="token string">"192.168.100.62 is ok"</span> >> <span class="token operator">/</span>home<span class="token operator">/</span>heavenfish<span class="token operator">/</span>bak62<span class="token punctuation">.</span>log
        scp <span class="token operator">-</span><span class="token function">rp</span> <span class="token operator">-</span>P52113 <span class="token operator">/</span>home<span class="token operator">/</span>heavenfish<span class="token operator">/</span>bak62<span class="token punctuation">.</span>log 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>100<span class="token punctuation">.</span>61:~
fi
定时任务:
<span class="token namespace">[heavenfish@B ~]</span>$ crontab <span class="token operator">-</span>e
<span class="token comment">####注释###</span>
00 00 <span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">/</span>bin<span class="token operator">/</span>sh <span class="token operator">/</span>home<span class="token operator">/</span>heavenfish<span class="token operator">/</span>bak62<span class="token punctuation">.</span>sh ><span class="token operator">/</span>dev<span class="token operator">/</span>null 2>&1
54<span class="token punctuation">.</span>	备份主要备份什么?
答:1)	数据库中的数据
2)	MySQL配置文件
3)	存储过程,存储函数和触发器
4)	计划任务相关的脚本
5)	主从场景下,跟复制相关的信息
6)	二进制文件
web方面
1<span class="token punctuation">.</span> nginx负载均衡的算法是怎么实现的,目前支持几种
答:目前支持五种算法:
1<span class="token punctuation">)</span>	round robin(默认)
轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。 适用于后台机器性能一致的情况。 挂掉的机器可以自动从服务列表中剔除
2<span class="token punctuation">)</span>	weight
根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3<span class="token punctuation">)</span>	IP_hash
根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
4<span class="token punctuation">)</span>	url_hash<span class="token punctuation">(</span>第三方<span class="token punctuation">)</span>
根据请求的url的hash值将请求分到不同的机器中,当后台服务器为缓存的时候效率高。
5<span class="token punctuation">)</span>	fair(第三方)
根据后台响应时间来分发请求,响应时间短的分发的请求多。
2<span class="token punctuation">.</span>	 nginx与apache相比有什么优势
答:作为web服务,nginx比apache占用内存资源少,处理请求上来看,nginx是异步非阻塞的,高并发下nginx有绝对的优势。而且nginx编写模块相对简单,社区活跃。所以我们公司再14年用的是apache<span class="token punctuation">,</span>后来换成了nginx<span class="token punctuation">.</span>而且我有个体会,apache改配置文件重启时候才知道有没有错,而nginx再重启前就可以用 <span class="token operator">-</span>t测试配置文件有没有问题。

3<span class="token punctuation">.</span>	nginx 的master和worker进程分别是什么?
答:master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后<span class="token punctuation">(</span>异常情况下<span class="token punctuation">)</span>,会自动重新启动新的worker进程。
worker进程则处理基本的网络事件。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。
4<span class="token punctuation">.</span>	请解释什么是C10k
答:C10K问题的本质上是操作系统的问题。对于Web 1<span class="token punctuation">.</span>0<span class="token operator">/</span>2<span class="token punctuation">.</span>0时代的操作系统,传统的同步阻塞I<span class="token operator">/</span>O模型处理方式都是requests per second。当创建的进程或线程多了,数据拷贝频繁(缓存I<span class="token operator">/</span>O、内核将数据拷贝到用户进程空间、阻塞,进程<span class="token operator">/</span>线程上下文切换消耗大, 导致操作系统崩溃,这就是C10K问题的本质。
5<span class="token punctuation">.</span>	 ngx_http_upstream_module的作用是什么
答:ngx_http_upstream_module 模块用于定义可以被 proxy_pass、fastcgi_pass 以及memcached_pass 等指令引用的服务器群。
6<span class="token punctuation">.</span>	使用方向代理的优点?
答:防止主服务器被恶意攻击
为负载均衡和动静分离提供实现支持
7<span class="token punctuation">.</span> nginx做过哪些方面的优化?
答:隐藏nginx header里版本号信息。
配置nginx worker的进程个数。
设置连接超时时间。
配置nginx gzip压缩功能。
8<span class="token punctuation">.</span>	 动静分离中什么样的数据是动态数据,什么是静态数据
答:动态:随着时间的发展,常常变化的数据,如网站访问量、在线人数、日销售等
静态:是基本保持稳定的数据,比如一个单位的名称、员工信息、系统参数等
9<span class="token punctuation">.</span>	 nginx导致磁盘空间占满的问题如何解决?(too many open files<span class="token punctuation">)</span>
答:这个问题一般是打开文件数量超过了系统的设置数量,可以用ulimit <span class="token operator">-</span>n 65535来修改最大允许的文件数。而且nginx<span class="token punctuation">.</span>conf配置文件里不要设置太大的文件数。也有一种情况你使用df <span class="token operator">-</span>h查看某个分区几乎被用光了,而用df <span class="token operator">-</span>i 发现节点数没那么多<span class="token punctuation">,</span>可以先停掉nginx<span class="token punctuation">,</span>再启动,释放nginx占用的空间。
10<span class="token punctuation">.</span>tomcat 默认端口号
答:8080
10<span class="token punctuation">.</span>	 访问一个网站的流程
答:第一,将域名解析成ip的过程,第二,通过ip找到网站服务器,请求打开具体的网页,服务器响应请求,客户端浏览器收到响应报文后,渲染html文档,最终得到我们看到的网页页面。
12<span class="token punctuation">.</span> tomcat调优
答:JVM参数的调节(根据Java开发的要求,在 catalina<span class="token punctuation">.</span>bat中把JAVA_OPTS的值调大)
	耗时太长时候,为了测试,禁用DNS查询)
13<span class="token punctuation">.</span> 如何修改tomcat的端口号
答:server<span class="token punctuation">.</span>xml里把port = <span class="token string">"8080"</span> 改成你想要的端口就可以
14<span class="token punctuation">.</span> tomcat 集群方式的优缺点
答:tomcat三种集群
     1) 使用DNS轮询
     2)使用apache R<span class="token operator">-</span>proxy方式
     3)使用APACHE mod_jk方式
15<span class="token punctuation">.</span> 负载均衡你听过哪几种,你们用的哪一种
答:LVS、NGINX、F5。我们用的是LVS的DR模式
16<span class="token punctuation">.</span> LVS 与nginx相比有什么优缺点?
答:LVS:负载能力强、配置性低、工作稳定、无流量、能支持所有应用
Nginx:工作在第七层,可以针对HTTP应用本身做分流策略、对网络的依赖小、安装配置比较简单,测试起来也很方便、负载均衡和稳定度差了LVS几个等级
17<span class="token punctuation">.</span> LVS目前实现的几种调度算法有?你们用的哪一种?说下原理?
答:调度算法:10种
轮询(rr)、加权轮询(wrr)、最少连接(LC)、加权最少连接(WLC)、最少队列调度(NQ)
我们用的是wrr加权轮询,它可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为1。假设服务器A的权值为1,B的权值为2,则表示服务器B的处理性能是A的两倍。加权轮叫调度算法是按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数	
18<span class="token punctuation">.</span> LVS集群架构我们采用哪种调度算法?
答:一般使用加权轮叫调度算法或者加权最小连接调度。
19<span class="token punctuation">.</span> LVS工作原理
答:LVS分为三层,调度层,server集群和共享存储
 
1<span class="token punctuation">)</span>	当用户向负载均衡director server发送请求,调度器将请求发往内核空间
2<span class="token punctuation">)</span>	prerouting链首先会接受用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
3<span class="token punctuation">)</span>	IPVS是工作再input链上的,当2的请求过来后,IPVS会将用户请求和自己定义好的集群服务做对比。如果用户请求的就是定义集群服务,那么此时IPVS会强行修改数据包里的目标IP地址和端口,并将新的数据包发往POSTrouting链
4<span class="token punctuation">)</span>	POSTROUTING链接收到数据包后发现目标IP刚好是自己的后端服务器,那么此时选路,将数据包最终发往真实的后端服务器。
注: 详细了解net模式原理图和DR模式原理图
http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>sohu<span class="token punctuation">.</span>com<span class="token operator">/</span>a<span class="token operator">/</span>126661836_467792<span class="token comment">##2</span>

20<span class="token punctuation">.</span>	 大致说一下LVS搭建过程
答:配置分发器的网络环境、配置LVS<span class="token operator">-</span>DR规则、安装服务并开启、配置网络环境、关闭APR包的转发、测试
21<span class="token punctuation">.</span> LVS在项目运行前需要注意什么问题
答:1<span class="token punctuation">.</span>keepavlied 主备之间要开放防火墙
    	2<span class="token punctuation">.</span> keepalived 主备要接在同一个交换机上使用DR模式时候,如果跨了交换机,可能出现主备都有流量
    	3<span class="token punctuation">.</span> 版本号一致
22<span class="token punctuation">.</span> 查看tomcat进程号和端口号
答:查看Tomcat的进程号:<span class="token function">ps</span> <span class="token operator">-</span>aux <span class="token punctuation">|</span> grep tomcat<span class="token operator">/</span><span class="token function">ps</span> <span class="token operator">-</span>ef <span class="token punctuation">|</span> grep tomcat
查看Tomcat的端口号:lsof <span class="token operator">-</span>i <span class="token punctuation">|</span> grep 8080
23<span class="token punctuation">.</span> 简单描述nginx 与 php<span class="token operator">-</span>fpm的两种连接方式及优缺点

答:nginx与php<span class="token operator">-</span>fpm连接的两种方式为:tcp<span class="token operator">-</span>socket 和unix<span class="token operator">-</span>socket

unix socket方式要比tcp的方式快,而且消耗资源少,因为socket之间在nginx和php<span class="token operator">-</span>fpm的进程之间通信,而tcp需要经过本地回环驱动,还要申请临时端口和tcp相关资源。
unix socket会显得不是那么稳定,当并发连接数爆发时,会产生大量的长时缓存,在没有面向连接协议支撑的情况下,大数据包很有可能就直接出错并不会返回异常。而TCP这样的面向连接的协议,多少可以保证通信的正确性和完整性。
24<span class="token punctuation">.</span>	web服务器错误代码(200、201、301、404、500、502、503)代表什么?
答:200<span class="token operator">-</span>确定。客户端请求已成功。 
201<span class="token operator">-</span>已创建。 
301<span class="token operator">-</span>对象已永久移走,即永久重定向。
404<span class="token operator">-</span>未找到。 
500<span class="token operator">-</span>内部服务器错误。
502<span class="token operator">-</span>Web服务器用作网关或代理服务器时收到了无效响应。 
503<span class="token operator">-</span>服务不可用。这个错误代码为IIS6<span class="token punctuation">.</span>0所专用。 
25<span class="token punctuation">.</span> nginx组成部分及常用模块有哪些
答:三部分:全局块、events块、http块
worker性能相关配置  进程的数量,nice值,能打开文件的数量上限
时间驱动events相关的配置   
http核心模块相关配置ngx_http_core_module
web服务模板   虚拟主机
隐藏版本信息
location匹配
错误页面显示 
长连接相关配置
请求报文缓存
26<span class="token punctuation">.</span> nginx怎么自定义403错误界面
答:error_page 403 <span class="token operator">/</span>403<span class="token punctuation">.</span>html
27<span class="token punctuation">.</span> keepalived原理
答:keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将Ñ台提供相同功能的路由器组成一个路由器组,这个组里面有一个主和多个备份,主上面有一个对外提供服务的VIP(该路由器所在局域网内其他机器的默认路由为该VIP),主会发组播,当备份收不到VRRP包时就认为主宕掉了,这时就需要根据VRRP优先的级来选举一个备份当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是核心,检查和vrrp<span class="token punctuation">.</span>core模块为keepalived的核心,负责主进程的启动,维护以及全局配置文件的加载和解析。检查负责健康检查,包括常见的各种检查方式。 VRRP模块是来实现VRRP协议的。
28<span class="token punctuation">.</span>	tomcat工作模式
答:即阻塞式I<span class="token operator">/</span>O操作,表示Tomcat使用的是传统的Java I<span class="token operator">/</span>O操作<span class="token punctuation">(</span>即java<span class="token punctuation">.</span>io包及其子包<span class="token punctuation">)</span>。是基于JAVA的HTTP<span class="token operator">/</span>1<span class="token punctuation">.</span>1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。<span class="token punctuation">(</span>Tomcat7 或以下,在 Linux 系统中默认使用这种方式)
一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源
二、nio<span class="token punctuation">(</span>new I<span class="token operator">/</span>O<span class="token punctuation">)</span>
是Java SE 1<span class="token punctuation">.</span>4及后续版本提供的一种新的I<span class="token operator">/</span>O操作方式<span class="token punctuation">(</span>即java<span class="token punctuation">.</span>nio包及其子包<span class="token punctuation">)</span>。Java nio是一个基于缓冲区、并能提供非阻塞I<span class="token operator">/</span>O操作的Java API,因此nio也被看成是non<span class="token operator">-</span>blocking I<span class="token operator">/</span>O的缩写。它拥有比传统I<span class="token operator">/</span>O操作<span class="token punctuation">(</span>bio<span class="token punctuation">)</span>更好的并发运行性能。要让Tomcat以nio模式来运行只需要在Tomcat安装目录<span class="token operator">/</span>conf<span class="token operator">/</span>server<span class="token punctuation">.</span>xml 中将对应的中protocol的属性值改为org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>coyote<span class="token punctuation">.</span>http11<span class="token punctuation">.</span>Http11NioProtocol即可利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求
三、apr<span class="token punctuation">(</span>Apache Portable Runtime<span class="token operator">/</span>Apache可移植运行时<span class="token punctuation">)</span> ( 安装配置过程相对复杂)
Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。从操作系统级别来解决异步的IO问题
APR是使用原生C语言编写的非堵塞I<span class="token operator">/</span>O,利用了操作系统的网络连接功能,速度很快。 
但是需先安装apr和native,若直接启动就支持apr,能大幅度提升性能。
zabbix:
1<span class="token punctuation">.</span>你们zabbix运行在什么环境里
答:Zabbix Server需运行在 LAMP(Linux<span class="token operator">+</span>Apache<span class="token operator">+</span>Mysql<span class="token operator">+</span>PHP)环境下对硬件要求低
2<span class="token punctuation">.</span>	zabbix有哪些组件
答:zabbix_agent Zabbix_get Zabbix_server Zabbix_proxy
3<span class="token punctuation">.</span>	zabbix是怎么实施的
答:agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server<span class="token operator">/</span>proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
4<span class="token punctuation">.</span>	zabbix是怎么微信报警的
答:首先需要申请一个微信企业号,点击通讯录创建公司和部门,添加需要的信息,然后添加成员信息,填上微信号,手机号、邮箱、三者中的一个,能够和报警的微信号匹配,然后用添加的微信号扫描二维码关注,收集资料:应用ID 、部门ID 、成员账号 、cropid、Secret,添加到报警脚本里面(第一组答案)
答:1<span class="token punctuation">.</span>首先,需要有一个微信企业号。(一个实名认证的<span class="token punctuation">[</span>微信号<span class="token punctuation">]</span>一个可以使用的<span class="token punctuation">[</span>手机号<span class="token punctuation">]</span>一个可以登录的<span class="token punctuation">[</span>邮箱号<span class="token punctuation">]</span>
2<span class="token punctuation">.</span>下载并配置微信公众平台私有接口。
3<span class="token punctuation">.</span>配置Zabbix告警,(增加示警媒介类型,添加用户报警媒介,添加报警动作)。(二组答案)
5<span class="token punctuation">.</span>	 zabbix监控了多少客户端,客户端是怎么进行批量安装的
答:监控了40台机器,客户端用ansible分发的配置文件,配置文件里面设置了被动发现。
6<span class="token punctuation">.</span> 你维护的zabbix监控有多少节点(监控项)。 zabbix数据存放在哪
答:监控了web服务的几个选项,机器的状态,数据库的状态,加起来是30多个选项;数据存放在数据库的<span class="token keyword">var</span><span class="token operator">/</span>lib<span class="token operator">/</span>mysql
7<span class="token punctuation">.</span> zabbix数据越来越大,有什么样的解决方案
答:将数据迁移到其他地方或者直接将不需要的数据清除
8<span class="token punctuation">.</span> zabbix是否支持读写分离
答:zabbix本事没有读写分离,但是可以对储存zabbix数据的数据库进行读写分离
9<span class="token punctuation">.</span> 线上的zabbix用的哪种模式监控,服务器怎么监控,有哪些业务做了监控,做么做的
答:主动监控,通过agent这个客户端去监控,要么是自带的模板,要么就是自己写一个模板,zabbix支持很多的扩展。
10<span class="token punctuation">.</span> zabbix中的item是什么
答:Item是从主机里面获取的所有数据。通常情况下我叫itme为监控项
11<span class="token punctuation">.</span> zabbix用  的哪个版本
答:3<span class="token punctuation">.</span>2版本<span class="token punctuation">,</span>因为这个版本比较稳定
12<span class="token punctuation">.</span> zabbix如果要监控100台机器,最快的方式你怎么做
答: 使用server端的自动发现,使用ansible或者saltstack进行快速部署agent端配置文件,然后配置自动发现即可
13<span class="token punctuation">.</span> zabbix那台服务器如果出现问题怎么解决
答:一般问题有:
找不到url,原因:Apache缺少指向<span class="token operator">/</span>usr<span class="token operator">/</span>share<span class="token operator">/</span>zabbix相关目录的配置文件
解决办法:配置<span class="token operator">/</span>etc<span class="token operator">/</span>httpd<span class="token operator">/</span>conf<span class="token punctuation">.</span>d<span class="token operator">/</span>zabbix<span class="token punctuation">.</span>conf文件内容如下
服务器无法处理说当前请求,PHP解析出错,原因:PHP版本太低,需要安装PHP5<span class="token punctuation">.</span>4以上的版本
解决办法:CentOS6默认yum安装的是php5<span class="token punctuation">.</span>3,需要构建yum源安装或进			行源码安装高版本PHP
服务器无法处理当前请求,权限不足,原因:apache对<span class="token operator">/</span>etc<span class="token operator">/</span>zabbix<span class="token operator">/</span>web<span class="token operator">/</span>maintenance<span class="token punctuation">.</span>inc<span class="token punctuation">.</span>php文件的权限不足导致处理中断
解决办法:更改<span class="token operator">/</span>etc<span class="token operator">/</span>zabbix<span class="token operator">/</span>web<span class="token operator">/</span>目录的属主

14<span class="token punctuation">.</span> zabbix模板有自己写过吗
答:比如监控nginx,脚本就不说了,主要是agent里面加的规则,在zabbix_agentd<span class="token punctuation">.</span>conf中添加UserParameter=nginx<span class="token punctuation">.</span>status<span class="token punctuation">[</span><span class="token operator">*</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token operator">/</span>bin<span class="token operator">/</span>bash <span class="token operator">/</span>etc<span class="token operator">/</span>zabbix<span class="token operator">/</span>scripts<span class="token operator">/</span>nginx_status<span class="token punctuation">.</span>sh <span class="token variable">$1</span>
15<span class="token punctuation">.</span> zabbix是否可以实现当一个服务断掉,就触发一个动作,然后重启
答:只会执行,成功不成功不会检测。
远程执行命令是server端向agent端执行,不支持主动模式的agent、不支持代理模式、zabbix用户必须对命令具有执行权限,可以使用sudo赋予root权限<span class="token punctuation">(</span>配置sudo无密码方式<span class="token punctuation">)</span>、远程命令只是执行,执行成功与否并不检测并确认,可在” Monitoring-<span class="token operator">-</span>>Events”中查看action执行时,或在”Reports-<span class="token operator">-</span>>Action log”中查看远程命令是否执行成功<span class="token punctuation">(</span>成功为” Executed”<span class="token punctuation">)</span>。
16<span class="token punctuation">.</span>	zabbix自动发现怎么做
答:agent端指定自动发现的ip
客户端正常创建
Configuration-<span class="token operator">-</span>>Discovery-<span class="token operator">-</span>>Creat discovery rule
Name:自动发现规则的名字
Discovery by proxy:是否使用代理
ip range:扫描地址段,可以配置为单个IP
Delay(in sec):延迟时长,为了试验效果,建议设置小一点,一分钟即可
checks:检查客户端手段
Device upiqueness criteris:设置唯一标准性
Enable:启动
17<span class="token punctuation">.</span>zabbix监控MySQL哪些参数, zabbix监控硬件哪些参数
答:查询吞吐量 查询执行性能 连接情况 缓冲池使用情况
18<span class="token punctuation">.</span>zabbix监控硬件哪些参数
答:CPU使用情况,内存使用情况,网络情况,硬盘挂载使用率等
19<span class="token punctuation">.</span>	除了zabbix你还用过哪些监控工具
答:Nagios、openfalcon
20<span class="token punctuation">.</span> zabbix监控和nagios有什么区别
答:Nagios简单直观,报警与数据都在同一页面,红色即为问题项。Nagios web端不要做任何配置。
Zabbix监控数据与报警是分开的,查看问题项需要看触发器,查看数据在最新数据查看。而且zabbix有很多其它配置项
Nagios要花很多时间写插件,Zabbix要花很多时间探索功能。
Nagios更易上手,Nagios两天弄会,Zabbix两周弄会。
Zabbix画图功能比Nagios更强大
高薪技术必备:
1<span class="token punctuation">.</span> 你知道的中间件有哪些?
答:Tomcat、redis、memcache
2<span class="token punctuation">.</span>memcache与redis区别?
答:数据结构:Memcache仅能支持简单的K<span class="token operator">-</span>V形式,Redis支持的数据更多
多线程:Memcache支持多线程<span class="token punctuation">,</span>Redis支持单线程,CPU利用Memcache利用率更高
持久化:Redis支持持久化,Memcache不支持持久化
分布式:Redis做主从结构,而Memcache服务器需要通过hash一致化来支撑主从结构
虚拟内存:Redis当物理内存使用完时,会将一些很久没有用的内存交换到磁盘,而Memcache采取的LUR策略,将一部分数据刷新
3<span class="token punctuation">.</span>	redis如何做持久化?
答:Redis有二种持久化方式:
1<span class="token punctuation">.</span>	RDB: 将Redis内存中的数据,完整的生成一个快照,以二进制格式文件(后缀RDB)保存在硬盘当中。当需要进行恢复时,再从硬盘加载到内存中。<span class="token punctuation">(</span>Redis主从复制,用的也是基于RDB方式,做一个复制文件的传输。<span class="token punctuation">)</span>
2<span class="token punctuation">.</span>	AOF:就是写日志,每次执行Redis写命令,让命令同时记录日志(以AOF日志格式)。Redis宕机时,只要进行日志回放就可以恢复数据。
4<span class="token punctuation">.</span>使用redis有什么好处
答:速度快,数据运行在内存当中,但要小心占全部内存
   	支持的数据类型丰富,
   	支持事务
   	可以做缓存,消息队列,可以设置过期时间。
   	在排行榜,计数器,发布和订阅场景下都在使用redis
   	但是reids 不能保证数据的一致性,在特定条件下可能会丢失写操作
5<span class="token punctuation">.</span>redis集群的原理
答:redis一般最少是6台机器,3主3从的结构,就是说,每台主至少会有一台从机;每一个节点都会存有这个集群所有主节点以及从节点的信息。
投票机制:
它们之间通过互相的ping<span class="token operator">-</span>pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。

如果一半以上的主宕机,集群就会进入fail状态
6<span class="token punctuation">.</span>docker集群最大节点数是 
答:16384个
7<span class="token punctuation">.</span>怎么测试redis连通性?
答:使用ping命令
8<span class="token punctuation">.</span>列出安装hadoop流程步骤
答:1<span class="token punctuation">)</span> 创建Hadoop账号
   	2)更改ip
   	3<span class="token punctuation">)</span>安装Java环境
   	4)修改host文件域名
   	5)安装ssh配置无密钥登陆
   	6)解压hadoop包
   	7)配置conf 下面的配置文件
   	8)hadoop namenode<span class="token operator">-</span>format 格式化
   	9) <span class="token function">start</span> 启动
9<span class="token punctuation">.</span>日志分析主要分析哪些数据?
答:1、基础信息,总抓取量、停留时间<span class="token punctuation">(</span>h<span class="token punctuation">)</span>及访问次数这三个基础信息;
2、目录抓取,提取出爬虫抓取的目录,分析每日目录抓取量;
3、时间段抓取,提取每日的时间段的爬虫抓取量,重在分析每日的抓取情况,找到相应的抓取量较为密集的时间段;
4、IP段的抓取,进行统计,每日每个IP的抓取量;
5、状态码的统计,HTTP状态码返回值

10<span class="token punctuation">.</span>ELK由哪及部分组成,每个的作用是啥
答:Elasticsearch 是一个分布式的搜索引擎,负责搜集、分析、存储数据三大功能
Logstash 用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。
Kibana 提供一个友好的web界面
Logstash去搜集所需要的日志,进行过滤<span class="token operator">--</span>>Elasticsearch再次去分析,存储<span class="token operator">--</span>>Kibana 将搜集的数据展示到web页面上

11<span class="token punctuation">.</span>ELK主要用来分析哪些数据
答:主要就是一个日志分析系统,常用的有web日志,数据库日志。也可以监控系统的硬件和应用各个组件的状态。
12<span class="token punctuation">.</span>ELK能用来做什么?
答:分析日志,也可以做系统监控,报表功能。
13<span class="token punctuation">.</span>ES常用插件有哪些?
答:head是一个与Elastic集群相交互的Web前台
  	kopf管理工具  
bigdesk集群提供动态的图表与统计数据
14<span class="token punctuation">.</span>kibana是什么,有什么作用
答:Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,就是为了提供可视化
15<span class="token punctuation">.</span>ansible与saltstack区别
答:1<span class="token punctuation">.</span>响应速度
	SaltStack的master和minion主机是通过ZeroMQ传输数据,而Ansible是通过标准SSH进行数据传输,SaltStack的 响应速度要比Ansible快很多。
2<span class="token punctuation">.</span>安全
SaltStack使用ZeroMQ进行数据传输,ZeroMQ本身不加密,AES加密,需注意MITM攻击
Ansible使用标准SSH连接传输数据,不需要在远程主机上启动守护进程,并且标准SSH数据传输本身就是加密传输,这样远程主机不容易被攻击。
3<span class="token punctuation">.</span>自身运维
	SaltStack需要在Master和Minion主机启动守护进程,自身需要检测守护进程的运行状态,增加运维成本。Ansible和远端主机之间的 通信是通过标准SSH进行,远程主机上只需要运行SSH进程就可以进行运维操作,SSH是机房主机中一般都安装和启动的进程,所以在Ansible进行运 维的时候只需要关注Ansible主机的运行状态。Ansible对机房运维不会增加过多的运维成本。从工具本身的运维角度来说,Ansible要比 SaltStack简单很多。
4<span class="token punctuation">.</span>使用语法
	Ansible的Playbook语法要比SaltStack的State语法具有更好的可读性。在使用的过程中发现Ansible在实现loop的更加的简洁,也可以使用相对路径。
16<span class="token punctuation">.</span> ansible 使用过哪些模块
答:<span class="token function">copy</span>模块,file模块,cron模块,<span class="token function">group</span>模块,yum模块,service模块,ping模块
17<span class="token punctuation">.</span> 你们在公司主要用来做什么
答:主要是用来批量自动化的去给我们的服务器部署一些服务

18<span class="token punctuation">.</span> elk中的logstash是怎么收集日志的,在客户端的logstash配置文件主要有哪些内容?
答:通过指定的配置文件,按规定的正则去收集指定文件里的数据。
input指定的输入<span class="token keyword">filter</span>过滤规则output输出到指定的地方



运维案例

1.有客户反映无法访问网站
案例:有客户说访问不到你们的网站,但是你们自己测试内网和外网都是通的,你会怎么排查并解决客户的问题。我们自己测了都没问题,只是这个客户访问有问题,那肯定是要先联系到这个客户,能远程最好问一下客户的网络是不是正常的,访问其它的网站有没有问题(比如京东、百度什么的)如果访问其它网站有问题,那叫客户解决本身网络问题。
如果访问其它网站都没问题,
    用ping和nslookup解析一下我们的网站是不是正常的,让客户用IP来访问我们的网站是否可行,
    如果IP访问没问题,那就是客户的DNS服务器有问题或者DNS服务器解析不到我们的网站。
    还有一种可能就是跨运营商访问的问题,比如我们的服务器用的是北方联通、而客户用的是南方移动,就也有可能突然在某个时间段访问不到,这种情况在庞大的中国网络环境中经常发生(一般是靠CDN解决)。
    还有可能就是我们的网站没有SSL证书,在公网是使用的是http协议,这种情况有可能就是没有用https协议网站被运营商劫持。
2.如果网站出现了5XX错误,你会如何解决?

案例:在服务器处理请求时出问题了,服务器可以发一个 5xx 系列错误码给客户端,表示服务器在处理请求的时候出问题了,问题是出在服务器身上而不是客户端身上。
以nginxWeb服务器为例的:
5xx: 服务器错误
501  服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
503  服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用)
505  服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)
一、解决500错误:
1、500错误指的是服务器内部错误,也就是服务器遇到意外情况,而无法履行请求。
2、500错误一般有几种情况:
(1)web脚本错误,如php语法错误,lua语法错误等。
(2)访问量大的时候,由于系统资源限制,而不能打开过多的文件
3、一般分析思路:
(1)查看nginx error log ,查看php error log
(2)如果是too many open files,修改nginx的worker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改<span class="token operator">/</span>etc<span class="token operator">/</span>security<span class="token operator">/</span>limits<span class="token punctuation">.</span>conf
(3)如果是脚本的问题,则需要修复脚本错误,并优化代码
(4)各种优化都做好,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了
二、解决502,504错误
https:<span class="token operator">/</span><span class="token operator">/</span>blog<span class="token punctuation">.</span>csdn<span class="token punctuation">.</span>net<span class="token operator">/</span>chris_hee<span class="token operator">/</span>article<span class="token operator">/</span>details<span class="token operator">/</span>83359438
https:<span class="token operator">/</span><span class="token operator">/</span>blog<span class="token punctuation">.</span>csdn<span class="token punctuation">.</span>net<span class="token operator">/</span>fangoooooooooooo<span class="token operator">/</span>article<span class="token operator">/</span>details<span class="token operator">/</span>80103444


1、使用nginx代理,而后端服务器发生故障;或者php<span class="token operator">-</span>cgi进程数不够用;php执行时间长,或者是php<span class="token operator">-</span>cgi进程死掉;已经fastCGI使用情况等都会导致502、504。
2、502 是指请求的php<span class="token operator">-</span>fpm已经执行,但是由于某种原因而没有执行完毕,最终导致php<span class="token operator">-</span>fpm进程终止。
一般来说,与php<span class="token operator">-</span>fpm<span class="token punctuation">.</span>conf的设置有关,也与php的执行程序性能有关,网站的访问量大,而php<span class="token operator">-</span>cgi的进程数偏少。针对这种情况的502错误,只需增加php<span class="token operator">-</span>cgi的进程数。
具体就是修改<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>php<span class="token operator">/</span>etc<span class="token operator">/</span>php<span class="token operator">-</span>fpm<span class="token punctuation">.</span>conf文件,将其中的max_children值适当增加。
这个数据要依据你的VPS或独立服务器的配置进行设置。一般一个php<span class="token operator">-</span>cgi进程占20M内存,你可以自己计算下,适量增多。
<span class="token operator">/</span>etc<span class="token operator">/</span>init<span class="token punctuation">.</span>d<span class="token operator">/</span>php<span class="token operator">-</span>fpm restart 然后重启一下<span class="token punctuation">.</span>
3、504 表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php<span class="token operator">-</span>fpm。与nginx<span class="token punctuation">.</span>conf的配置也有关系。


3.如果网站访问很慢,你会如何排查
https:<span class="token operator">/</span><span class="token operator">/</span>blog<span class="token punctuation">.</span>csdn<span class="token punctuation">.</span>net<span class="token operator">/</span>lufeisan<span class="token operator">/</span>article<span class="token operator">/</span>details<span class="token operator">/</span>53150971

范例一: Linux 中一个java进程占用cpu很高
解决: top <span class="token operator">-</span>p 33301    strace <span class="token operator">-</span>p 33301
范例二: 线上的一台服务器,总出现访问慢的情况,点击一个链接要2S以上时间才打开,按照当时对访问人数的统计,服务器不应该这么慢,所以我做了对apache进程进行分析。
一. 在页面访问变慢的时候,我用top查看服务器负载,发现负载不高,因此有可能不是程序问题。
二. 我查看了线程中HTTP的数量,线程达到了访问最大值,由此断定是访问人数过多导致的
三. 为了验证,我用netstat查看连接数和当前连接数,发现访问量特别大,超出了我们的估算值。
四. 查看了用户访问页面的情况,把access_log打开,发现90<span class="token operator">%</span>以上的访问都是直接访问资源文件,猜测可能用户使用了多线程下载工具,或者遭受了盗链。
解决方法: 对单个IP链接的线程限制,不允许多个线程链接资源。 我当时采用的是mod_limitipconn这个模块。  然后添加URL重写,防止盗链。

4<span class="token punctuation">.</span> cpu突然飙高如何处理 

像这种情况有很多种可能:
1<span class="token punctuation">.</span>同时运行的应用太多了,占用服务器资源
2<span class="token punctuation">.</span>服务器内存存的数据太多了 
3<span class="token punctuation">.</span>服务器被CC攻击了 
4<span class="token punctuation">.</span>某个程序起冲突了
案例:有个java进程占用cpu资源特多
解决:
使用top查看进程维度的CPU负载
通过 top 命令查看系统的负载问题,并定位耗用较多 CPU 资源的进程,发现是个java进程,将进程信息发送给java开发,确定此进程无用,便将此进程杀掉,cpu问题就解决了。


5.数据库强制关闭导致故障排查案例

https:<span class="token operator">/</span><span class="token operator">/</span>blog<span class="token punctuation">.</span>csdn<span class="token punctuation">.</span>net<span class="token operator">/</span>jethai<span class="token operator">/</span>article<span class="token operator">/</span>details<span class="token operator">/</span>52345231

案例:
mysql意外断电后启动mysql数据库报错
Another MySQL daemon already running withthe same unix socket<span class="token punctuation">.</span>
本地登录mysql数据库提示:
ERROR 2002 <span class="token punctuation">(</span>HY000<span class="token punctuation">)</span>: Can<span class="token string">'t connect to local MySQL server through socket '</span><span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>lib<span class="token operator">/</span>mysql<span class="token operator">/</span>mysql<span class="token punctuation">.</span>sock<span class="token string">' (111)
原因:
mysql没有正常停止,机器重启后mysql.sock一直存在,但机器重启后mysql实际上为启动的,
所以呢需要把/var/lib/mysql 下的mysql.sock文件给删掉,然后就可以启动了
6. CDN或者IDC机房带宽增加很高案例分析
案例: 
   有一次我们公司在做一个推广活动,CDN带宽突然增加很多,第一反应是不是遭受DDOS攻击了,或者是内部服务器中毒,比如redis服务器就有一次被当作矿机,
原因:
内部服务器中毒,大量外发流量。
解决办法:
我联系机房确定机房自身无问题后(机房一般没法帮我们的),请机房断开连接外部IP服务器的网线,如负载均衡器,仅保留VPN SERVER,然后断掉内部服务器出网光关的线路,切断外发流量源头。
     接下来查看监控流量服务,判断外发流量的服务器,然后进行处理。

7. 一次网站迁移故障案例分析
案例:
公司服务器要整改,准备用一台新服务器安装LAMP环境,承担现在的WEB服务器,然后将现有的服务器重新规划整理。当把代码用rsync同步到新服务器上,开启apache服务,做好DNS解析后,刚开始访问的时候是没问题的!但是在不到一分钟的时候,网站就打开的非常慢,主页打开时间有时到了几分钟(几乎相当于访问不了),查看Apache报错日志,没有明显的错误异常日志;
原因:
原因是perfork模式的参数设置有问题,根本就没生效,而导致采用默认的256,但是现在的链接并发数已经大于256了,所以后面的访问用户就处在等待的状态,也就出现了一分钟后就访问特别慢的情况;
解决办法:
遇到这种问题的时候,我们要先分析故障原因,定义问题出现的大范围,这次故障是在服务器压力并不大的时候就出现访问很慢的现象,所以我们可以确认不是服务器本身的问题,而是配置问题。
先通过服务器的top命令我们可以得到不是服务器硬件的问题
再通过内网访问,得到的也不是网络的因素
创建静态页面,排除apache以外其他服务配置问题
查看配置文件,找到了问题所在,然后解决问题
具体解决方式在以下网址:一次生产环境web服务迁移故障总结与反思http://blog.51cto.com/oldboy/1227976
8.一主多从,主从库分别宕机解决案例
案例:
早晨发现msyql主宕机,并且没有任何异常记录,日志表现为执行shutdown命令,但是shwtdown完成后没有重新启动
原因:
是因为apt的自动更新导致的mysql shutdown
解决办法:
如果是主宕机的话,那么读写服务都不能提供了,我们就要把从提升为主,首先我们要确保从库把所有的relay log日志都读取完毕,然后通过show slave status查看,如果几个从库io进程都是正常,没有落后于主的话,选择哪个从都是一样的,然后我们进入从库,执行stop slave;然后进入数据库目录,删除aster.info和relay-log.info文件,删除之前先做下备份,然后配置my.cnf文件,开启log-bin,把程序里面之前记录的master的IP改成现在从的IP,重启就解决了这个问题
具体解决方式在以下网址:具体解决方式在以下网址:
9. 网站遭受木马攻击,导致网站目录下所有的文件被篡改
案例:
公司一个lamp的服务器站点目录下的文件一打开就会出现另一个网址
原因:
所有文件都被植入了一下内容<script language=javascript src=http://luoahong.blog.51cto.com/504977/1827164>包括图片文件也被植入了,网站打开时就会调用这个地址,造成的影响很恶劣
解决办法:
遍历所有目录有文件 把以上被植入的内容删除掉。[root@test ~]# find /oldboy -type f|xargs sed -i '</span>s<span class="token comment"># <script language=javascript src=http://luoahong.blog.51cto.com/504977/1827164>##g'</span>
1、  先备份数据。然后,执行命令批量修改回来。
2、  a<span class="token punctuation">.</span>备份原始出问题的原始文件; b<span class="token punctuation">.</span>历史备份覆盖;c<span class="token punctuation">.</span>find<span class="token operator">+</span>sed 替换;
<span class="token namespace">[root@test ~]</span>find<span class="token punctuation">.</span> <span class="token operator">-</span><span class="token function">type</span> f <span class="token operator">-</span>exec sed <span class="token operator">-</span>i ‘s<span class="token comment">#<script language=javascript src=http://luoahong.blog.51cto.com/504977/1827164>##g’ {} \;</span>
查看处理结果,详细查看了日志,追踪问题发生来源
10<span class="token punctuation">.</span> fstab修改错误导致系统无法启动修复案例
案例:
为了公司需要,在linux下修改自动挂载<span class="token operator">/</span>dev<span class="token operator">/</span>sda5到<span class="token operator">/</span>u01,修改成<span class="token operator">/</span>dev<span class="token operator">/</span>sda5<span class="token operator">/</span>weblogic,于是把fstab文件中<span class="token operator">/</span>u01修改成了<span class="token operator">/</span>weblogic,启动时报无法挂载错误,进入repair filesystem模式后,想要修改<span class="token operator">/</span>etc<span class="token operator">/</span>fstab,结果文件都是read only
原因:
把fstab文件中<span class="token operator">/</span>u01修改成了<span class="token operator">/</span>weblogic,原因是把配置文件修改错误了
解决办法:
1<span class="token punctuation">.</span>启动linux提示失败<span class="token punctuation">,</span>输入root账户密码,进入 repair filesystem<span class="token comment">#,注意此时修复fstab文件会提示readonly无法保存修改。</span>
2<span class="token punctuation">.</span>提权成root
3<span class="token punctuation">.</span><span class="token function">mount</span> <span class="token operator">/</span> <span class="token operator">-</span>o remount
这时候,<span class="token operator">/</span>etc<span class="token operator">/</span>fstab就可以修改了,这一步是核心内容
4<span class="token punctuation">.</span>修改fstab文件  vi <span class="token operator">/</span>etc<span class="token operator">/</span>fsta

11<span class="token punctuation">.</span> Linux服务器中木马,手工清除方法 

 https:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>cnblogs<span class="token punctuation">.</span>com<span class="token operator">/</span>shiyiwen<span class="token operator">/</span>p<span class="token operator">/</span>5191869<span class="token punctuation">.</span>html
故障现象:
那天下午有几台服务器出现流量超高,平时只有几百M的流量,那时候发现流量上G了,达到这个量第一感觉就是遭受了DDOS流量攻击,那时候手上的服务器比较多,出现几台并没有放在眼里,觉得查查就可以出来结果。
原因:
iftop发现我们的服务器一直向外大量发包,对某个IP的流量能到达600多M<span class="token punctuation">,</span>这时我们意识到服务器被黑了
解决方案:
一直在杀进程,刚开始进程杀了又起来,文件删了又自动生成,线上环境又没有防火墙配置,无奈之下只好想了一个怪招,把<span class="token operator">/</span>bin<span class="token operator">/</span>bash重命名一下,果然流量下来了。

12记一次服务器被植入挖矿木马CPU飙升200<span class="token operator">%</span>解
https:<span class="token operator">/</span><span class="token operator">/</span>blog<span class="token punctuation">.</span>csdn<span class="token punctuation">.</span>net<span class="token operator">/</span>bntx2jsqfehy7<span class="token operator">/</span>article<span class="token operator">/</span>details<span class="token operator">/</span>79797937
故障现象:
我打开了服务器,看到Tomcat挂了,然后顺其自然的重启,启动过程中直接被killed,再试试数据库,同样没成功,多次尝试甚至重启机器无果,我打了个top,不知道谁的进程,因为它就是Tomcat等程序启动不了的元凶然而并没有什么用,过一会再看那个东西又跑出来占cpu。怀疑是个定时任务,
Crontab <span class="token operator">-</span>l 进行查看,发现什么也没有,但是黑色的屏幕右下角有个白色方框,肯定是伪装的,
原因:
crul过去是下面的脚本,过程就是在挖矿,既然知道它是个定时任务,那就先取消了它,并且看看它是谁在运行杀掉,找到存放目录:进入临时目录:被我发现配置文件了,先来看看内容发现了不少信息啊,user是他的server的登录用户<span class="token punctuation">,</span>下面是密码,只可惜加密过,应该找不到对方。干掉这两个文件后再查看top
解决方案:
找到寄生的目录,一般都会在tmp里,我这个是在<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>tmp<span class="token operator">/</span>。首先把crontab干掉,杀掉进程,再删除产生的文件。启动Tomcat等程序,大功告成!
13<span class="token punctuation">.</span> 9台nosql 同时宕机故障
http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>361way<span class="token punctuation">.</span>com<span class="token operator">/</span>login<span class="token operator">-</span>underlying<span class="token operator">-</span>authentication<span class="token operator">/</span>4216<span class="token punctuation">.</span>html
故障现象:
晚上22:20分左右,手机收到现网主机的宕机拨测短信告警。收到宕机短信本属正常,现网业务有二千多台 server 难保其中哪台不出问题。可是还未能赶着打开电脑,紧接着同一时间又是8台主机的宕机短信。未查看工程文档核对主机之前,猜测怀疑是某一刀框出了问题,导致同一机框内的所有刀片不能服务。不过等查看过第一台以后,发现是pc server ,另外8台和第一台是同一业务下的另外几个节点。
原因:
通过查看9台主机的操作记录,都存在相同的histroy记录、ts_user用户登录和su操作(故障发生时间点之前几分钟内)。在9台主机上也通过<span class="token function">echo</span> $变量名 ,发现history记录中的部分变量是不存在的。导致前面一部分被解析成空。
解决方案:
在我的测试机中不存在变量<span class="token variable">$ABC</span> ,所以<span class="token variable">$ABC</span>被解析为空,这里执行<span class="token function">ls</span>  <span class="token variable">$ABC</span><span class="token operator">/</span> 的结果相当于执行成了 <span class="token function">ls</span> 同样,把变量改正确 
14<span class="token punctuation">.</span> 大并发慢查询导致CPU资源耗尽,如何处理
https:<span class="token operator">/</span><span class="token operator">/</span>support<span class="token punctuation">.</span>huaweicloud<span class="token punctuation">.</span>com<span class="token operator">/</span>usermanual<span class="token operator">-</span>rds<span class="token operator">/</span>rds_12_0008<span class="token punctuation">.</span>html
故障现象:
数据库实例上存在大量并发的<span class="token function">select</span> count<span class="token punctuation">(</span>0<span class="token punctuation">)</span>慢操作,系统CPU耗尽,随时有宕机的风险。
原因:
应用端大并发触发<span class="token function">select</span> count<span class="token punctuation">(</span>0<span class="token punctuation">)</span>慢操作,导致系统CPU资源耗尽。
解决方案:
申请<span class="token function">kill</span>权限,间歇性批量执行<span class="token function">kill</span> <span class="token function">select</span> count<span class="token punctuation">(</span>0<span class="token punctuation">)</span>慢操作,定位<span class="token function">select</span> count<span class="token punctuation">(</span>0<span class="token punctuation">)</span>触发来源,停止来源,并拆分优化sql。
15<span class="token punctuation">.</span> crontab mailr op造成的拒绝房屋
http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>361way<span class="token punctuation">.</span>com<span class="token operator">/</span>crontab<span class="token operator">-</span>mailto<span class="token operator">-</span>deny<span class="token operator">-</span>ssh<span class="token operator">/</span>4300<span class="token punctuation">.</span>html

故障现象:
接业务同事电话,其中一台server无法ssh正常连接,同时也收到宕机短信告警信息。直接ping了下主机地址可以ping通<span class="token punctuation">.</span>
原因:
crontab进程在执行时,每执行一次会向root 进行一次汇报。即会调用后面的sendmail 进程和postdrop 进程,邮件文件会存放在<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>spool<span class="token operator">/</span>postfix<span class="token operator">/</span>maildrop目录 ,查看logcollect 用户的crontab任务发现, 有几百个crontab任务存在<span class="token punctuation">,</span>造成maildrop目录文件越堆越多。目录被占满后,导致sendmail和postdrop进程长时间得不到释放。进程越堆越到,直到资源耗尽,ssh连接异常。
解决方法:
禁用crontab MAILTO功能或crontab中新增自动清理<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>spool<span class="token operator">/</span>postfix<span class="token operator">/</span>maildrop目录。当然比较推荐前者,crontab里启用这个本来就是个资源浪费的功能---有查看root下的性能汇报需求者除外。禁用crontab的mailto功能操作步骤为:
vi <span class="token operator">/</span>etc<span class="token operator">/</span>crontab 
将‘MAILTO=root’替换成‘MAILTO=<span class="token string">""</span>,
然后service crond restart即可。
后记:
另外,这个问题和Suse工程师也沟通过,该问题更多的是操作规范性的范畴。如果在每个crontab任务后面加上1><span class="token operator">/</span>dev<span class="token operator">/</span>null 2>&1 ,就不会出现邮件调用到maildrop目录的问题了。这里由于crontab任务过多,使用了在用户的crontab配置首行增加MAILTO=<span class="token string">""</span>的方法。

16<span class="token punctuation">.</span>inode满导致passwd 命令出错处理
http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>361way<span class="token punctuation">.</span>com<span class="token operator">/</span>passwd<span class="token operator">-</span>token<span class="token operator">-</span>manipulation<span class="token operator">-</span>error<span class="token operator">/</span>4304<span class="token punctuation">.</span>html

故障现象:
1、修改密码时报错 passwd: Authentication token manipulation error
2、添加用户报错:unable to lock password file 
分析问题:
1、检查相关配置文件
 <span class="token operator">/</span>etc<span class="token operator">/</span>passwd 
 <span class="token operator">/</span>etc<span class="token operator">/</span>shadow
检查上面两相配置文件并与正常主机进行比对,未发现异常。
2、查看磁盘使用率
根据报错信息,google查看提示有可能是磁盘空间满引起。不过通过df 查看时未发现异常
3、strace追踪分析
使用命令strace <span class="token operator">-</span>f passwd 追踪分析原因,看到关键报错信息:“No space left on device”,即然df查看硬盘空间够用,很可能就是inode满了。查看的确是根分区inode满了,然后清除了一些小文件<span class="token punctuation">.</span>
17<span class="token punctuation">.</span>阿里云ssh连接慢问题处理
http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>361way<span class="token punctuation">.</span>com<span class="token operator">/</span>aliyun<span class="token operator">-</span>ssh<span class="token operator">-</span>slow<span class="token operator">/</span>5771<span class="token punctuation">.</span>html

一、问题描述
阿里云平台上分发的虚拟机会有ssh连接慢的问题(一般30多秒才能出现密码认证界面,同一模板分发的虚拟机,一小部分有ssh连接慢的问题)。
通过查看sshd_config配置文件,发现影响ssh连接两项已做过处理:
UseDNS=no
GSSAPIAuthentication no
而主机OS重启后,ssh连接慢的问题就没有了。
1、排查网络影响
通过阿里云内部的主机通过内网连接发现同样慢。通过ssh 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1也同样很慢。
2、ssh连接详情分析
通过 ssh <span class="token operator">-</span>v参数查看详细连接过程。发现只除了认证等待时间过长外,后面未发现异常。
三、问题解决
通过查询到的资料,了解到问题原因为:dbus的服务重启后,systemd<span class="token operator">-</span>logind服务没有重启导致。故而在日志中会出现“<span class="token namespace">[system]</span> Failed to activate service ‘org<span class="token punctuation">.</span>freedesktop<span class="token punctuation">.</span>login1‘: timed out”的报错。解决方法为重启systemd<span class="token operator">-</span>logind服务。命令如下:
systemctl restart systemd<span class="token operator">-</span>logind
systemctl status systemd<span class="token operator">-</span>logind


18<span class="token punctuation">.</span>mysql innodb异常修复
https:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>linuxprobe<span class="token punctuation">.</span>com<span class="token operator">/</span>mysql<span class="token operator">-</span>innodb<span class="token operator">-</span>yichang<span class="token punctuation">.</span>html

启动mysql服务,提示未知<span class="token operator">/</span>不支持的表类型:innodb,无法正常启动。
删除<span class="token operator">/</span> <span class="token keyword">var</span> <span class="token operator">/</span> lib <span class="token operator">/</span> mysql <span class="token operator">/</span>目录,重新启动数据库服务,并初始化,发现正常,show engines能发现有innodb引擎。再将数据库停掉,将之前备份的<span class="token operator">/</span> <span class="token keyword">var</span> <span class="token operator">/</span> lib <span class="token operator">/</span> mysql <span class="token operator">/</span>目录的内容覆盖当前位置的内容,重启。又发现不能进行启动,报错内容和刚刚一样。
wiki目录是测试数据的库,ib开头的两个文件为日志文件,mysql目录下为系统库相关的东西。再次使用初始化的数据,并将wiki目录和ibdata1文件覆盖到<span class="token operator">/</span> <span class="token keyword">var</span> <span class="token operator">/</span> lib <span class="token operator">/</span> mysql目录下,可以正常启动,也可以正常登录。
打开迫使<span class="token operator">-</span>InnoDB的恢复官方页面,发现可以通过指定innodb_force_recovery参数,进行强制启动和恢复在<span class="token operator">/</span>etc<span class="token operator">/</span>my<span class="token punctuation">.</span>cnf中中增加如下内容:
1<span class="token punctuation">.</span>	innodb_force_recovery = 6= 6

不过在通过mysqldump备份时,又提示unknow table engine“Innodb”。登录后,查看当前所有的引擎类型,发现其中果然不存在innodb类型:

由于mysql innodb数据文件的特性,可以在出现问题,无法正常启动时,先将<span class="token punctuation">.</span><span class="token operator">/</span>ib
_logfile0和<span class="token punctuation">.</span><span class="token operator">/</span>ib_logfile1两个日志文件先移走,再启动,如果还不成功,可以用innodb_force_recovery参数进行强制恢复。除此之外,日志也很重启,有问题先看日志。
19<span class="token punctuation">.</span>已删除但空间不释放问题的分析与解决办法
https:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>jb51<span class="token punctuation">.</span>net<span class="token operator">/</span>LINUXjishu<span class="token operator">/</span>224652<span class="token punctuation">.</span>html

1、错误现象
运维的监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实没有空间了,由于Linux没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统<span class="token operator">/</span>tmp目录下,然后定期清除<span class="token operator">/</span>tmp目录下的数据。这个策略本身没有问题,但是通过检查发现这台服务器的系统分区中并没有单独划分<span class="token operator">/</span>tmp分区,这样<span class="token operator">/</span>tmp下的数据其实是占用了根分区的空间。既然找到了问题,那么删除<span class="token operator">/</span>tmp目录下一些大数据即可
从输出可以看到,根分区空间仍然没有释放,这是怎么回事?
2、解决思路
之所以出现删除access_log文件后,空间还没释放,就是因为httpd进程还在一直向这个文件写入内容,导致虽然删除了access_log文件,但文件对应的指针部分由于进程锁定,并未从meta<span class="token operator">-</span><span class="token keyword">data</span>中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就不足为奇了。
3、问题排查
既然有了解决问题的思路,那么接下来看看是否有进程一直在向acess<span class="token punctuation">.</span>log文件中写数据,这里需要用到Linux下的lsof命令,通过这个命令可以获取一个已经被删除但仍然被应用程序占用的文件列表<span class="token punctuation">.</span> 
从输出结果可以看到,<span class="token operator">/</span>tmp<span class="token operator">/</span>acess<span class="token punctuation">.</span>log文件被进程httpd锁定,而httpd进程还一直向这个文件写入日志数据,说明这个日志文件已经被删除,但由于进程还在一直向此文件写入数据,空间并未释放。
4、解决问题
到这里问题就基本排查清楚了,解决这一类问题的方法有很多种,最简单的方法是关闭或者重启httpd进程,当然也可以重启操作系统,不过这并不是最好的方法,对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件,可以通过如下命令完成:
<span class="token function">echo</span> <span class="token string">" "</span> ><span class="token operator">/</span>tmp<span class="token operator">/</span>acess<span class="token punctuation">.</span>log
通过这种方法,磁盘空间不但可以马上释放,也可保障进程继续向文件写入日志,这种方法经常用于在线清理Apache、Tomcat、Nginx等Web服务产生的日志文件

20<span class="token punctuation">.</span>linux Argument list too long错误解决方法
https:<span class="token operator">/</span><span class="token operator">/</span>blog<span class="token punctuation">.</span>csdn<span class="token punctuation">.</span>net<span class="token operator">/</span>fdipzone<span class="token operator">/</span>article<span class="token operator">/</span>details<span class="token operator">/</span>41558461

今日需要删除<span class="token operator">/</span>tmp目录下的所有文件,文件数量比较多。
<span class="token function">ls</span> <span class="token operator">-lt</span> <span class="token operator">/</span>tmp <span class="token punctuation">|</span> wc <span class="token operator">-</span>l
385412
使用 <span class="token function">rm</span> <span class="token operator">*</span> 后,系统提示错误 Argument list too long
原因是在linux下,试图传太多参数给一个系统命令<span class="token punctuation">(</span><span class="token function">ls</span> <span class="token operator">*</span><span class="token punctuation">;</span> <span class="token function">cp</span> <span class="token operator">*</span><span class="token punctuation">;</span> <span class="token function">rm</span> <span class="token operator">*</span><span class="token punctuation">;</span> <span class="token function">cat</span> <span class="token operator">*</span><span class="token punctuation">;</span> etc<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span>时,就会出现 Argument list too long错误。
解决方法如下:
使用find <span class="token operator">-</span>exec 遍历,然后执行删除便可。
sudo find <span class="token operator">/</span>tmp <span class="token operator">-</span><span class="token function">type</span> f <span class="token operator">-</span>exec <span class="token function">rm</span> <span class="token punctuation">{</span><span class="token punctuation">}</span> \
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1275597804026216448"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(面试题的一些汇总)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1879798795265437696.htm"
                           title="认识包管理工具: npm、yarn和pnpm" target="_blank">认识包管理工具: npm、yarn和pnpm</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AFnpm%E5%B7%A5%E7%A8%8B%E5%8C%96/1.htm">前端npm工程化</a>
                        <div>包管理工具的发展2010年1月,一款名为npm的包管理器诞生。它确立了包管理器工作的核心原则。npm的发布诞生了一场革命,在此之前,项目依赖项都是手动下载和管理的。npm引入了文件和元数据字段,将依赖项列表存储在package.json文件中,并且将下载的文件保存到node_modules文件夹中。后来因为npm的缺陷或者旧版本的不足,又出现了一个个替代npm来进行包管理的轮子,例如:yarn,y</div>
                    </li>
                    <li><a href="/article/1879798667993477120.htm"
                           title="Node.js 单线程模型如何处理高并发?" target="_blank">Node.js 单线程模型如何处理高并发?</a>
                        <span class="text-muted"></span>

                        <div>引言Node.js是一个基于事件驱动、非阻塞I/O模型的运行时环境,这让它在处理高并发任务时表现出色。然而,与传统多线程模型不同,Node.js使用单线程架构,这让许多开发者在初学时感到困惑:单线程如何处理大量并发请求而不会阻塞呢?本文将聚焦于这个问题,解析Node.js单线程模型的核心机制,以及它在高并发场景中的应用和优势。Node.js的事件循环:单线程的秘密武器Node.js的单线程模型是建</div>
                    </li>
                    <li><a href="/article/1879798414800121856.htm"
                           title="2024前端面试经验分享" target="_blank">2024前端面试经验分享</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a>
                        <div>一、简历1、整理步骤把自己过去做过的有亮点的事情整理一遍。项目经历,通过star法则来做,不赘述,网上很多人讲。需要突出的亮点见下面。2、前端开发常见突出亮点:性能优化代码优化组件封装框架原理项目推进、协调能力技术难点的解决能力技术方案设计能力前端工程化的推进3、管理相关亮点如何制定代码规范,以及review如何提升团队人员的水平如何制定流程为团队提效4、注意点遵循star法则;尽量简洁,减少面试</div>
                    </li>
                    <li><a href="/article/1879798317735538688.htm"
                           title="华为OD E卷(100分)54-查找接口成功率最优时间段" target="_blank">华为OD E卷(100分)54-查找接口成功率最优时间段</a>
                        <span class="text-muted">arnold66</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>前言工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老,没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。题目描述服务之间交换的接口</div>
                    </li>
                    <li><a href="/article/1879798191302438912.htm"
                           title="net core程序部署到 iis 出现跨域问题" target="_blank">net core程序部署到 iis 出现跨域问题</a>
                        <span class="text-muted">apgk1</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/NetCore/1.htm">NetCore</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/IIS/1.htm">IIS</a>
                        <div>1.首先确定netcore项目直接双击启动是否存在跨域问题2.基于1如果没有跨域问题,那么问题出在iis上3.iis移除跨域代码即可解决4.net4.5之类框架跨域类似上方配置直类无效,直接做个特性拦截只要返回内容头加入跨域标识即可参考链接关于netcore站点通过iis部署,跨域配置遇到的问题-郑小超-博客园</div>
                    </li>
                    <li><a href="/article/1879798161900367872.htm"
                           title="HarmonyOS 应用中复杂业务场景下的接口设计" target="_blank">HarmonyOS 应用中复杂业务场景下的接口设计</a>
                        <span class="text-muted"></span>

                        <div>前言在开发复杂业务应用时,接口设计不仅需要满足业务功能,还要考虑通用性和高效性。对于多业务耦合场景,接口如何灵活扩展、避免过度设计,同时保证数据传输的高效,是开发者需要解决的重要问题。本文结合HarmonyOS的开发实践,分享如何针对复杂业务场景设计高扩展性、低耦合的接口。设计理念与原则模块化设计通过将接口按业务功能模块划分,减少不同模块之间的耦合。例如用户管理、订单管理等模块独立设计,接口职责清</div>
                    </li>
                    <li><a href="/article/1879797939069579264.htm"
                           title="笔记:vue 打包忽略部分文件检查。" target="_blank">笔记:vue 打包忽略部分文件检查。</a>
                        <span class="text-muted">apgk1</span>
<a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a>
                        <div>在需要忽略的文件中加入/*eslint-disable*/1.js文件首行直接加入/*eslint-disable*/2.vue文件script中加入/*eslint-disable*/3.配置文件进行配置看大佬文章。vue中指定文件或文件夹忽略eslint</div>
                    </li>
                    <li><a href="/article/1879797907520024576.htm"
                           title="Vue3中通过加密串进行后端验证并实现登录跳转教程" target="_blank">Vue3中通过加密串进行后端验证并实现登录跳转教程</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/ecmascript-6/1.htm">ecmascript-6</a>
                        <div>在Vue3中进行登录并通过加密串进行后端验证,一般步骤是:用户输入用户名和密码,前端将其加密后发送给后端进行验证,后端验证通过后,返回身份验证信息(如令牌),前端接收验证结果并实现登录跳转。主要步骤:用户输入信息并加密用户输入的密码可以通过加密算法(如SHA256,AES等)进行加密,确保数据的安全性。发送请求到后端前端将加密后的数据发送到后端进行验证,通常使用POST请求。后端验证加密数据后端解</div>
                    </li>
                    <li><a href="/article/1879797908895756288.htm"
                           title="【职业发展】从ETL到大数据:如何规划你的数据职业生涯?" target="_blank">【职业发展】从ETL到大数据:如何规划你的数据职业生涯?</a>
                        <span class="text-muted"></span>

                        <div>首先:ETL工程师其实是一个特别简单的岗位。为什么简单?ETL就是数据仓库项目建设和日常维护中的一种工作,ETL,就是抽取、转换、装载的英文缩写。但是这个现实中都是使用相应工具软件的。至于怎么抽取,怎么转换、怎么装载,都是与具体业务相结合的。比如:每天晚8点抽取,a+b转换成c,从A设备读出a和b,计算成c之后存到W设备上。这就是ETL要干的事。特别简单。没有技术含量。但是工作量却比较大。但是工作</div>
                    </li>
                    <li><a href="/article/1879797906127515648.htm"
                           title="SSL context 中设置TLS版本无效的原因和有效解决办法" target="_blank">SSL context 中设置TLS版本无效的原因和有效解决办法</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/ecmascript-6/1.htm">ecmascript-6</a>
                        <div>如果在设置SSL/TLS上下文时,指定的TLS版本无效,可能有多种原因。这里列出了一些常见的问题及其解决方法:1.TLS版本设置方法不正确在很多编程语言和框架中,设置TLS版本的方法各不相同。如果你没有正确配置或选择正确的API,TLS版本的设置可能不会生效。确保你按照相应的文档或官方指导进行配置。例如,在Python中,使用ssl.create_default_context()设置TLS版本:</div>
                    </li>
                    <li><a href="/article/1879797903715790848.htm"
                           title="NodeJS项目架构设计,看这一篇就足够了!" target="_blank">NodeJS项目架构设计,看这一篇就足够了!</a>
                        <span class="text-muted"></span>

                        <div>NodeJS项目架构设计,看这一篇就足够了!前言大家好,我是倔强青铜三。我是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。1.整洁架构简介CleanArchitecture(整洁架构)由RobertC.Martin(UncleBob)提出,它强调应用程序内部关注点的分离。该架构提倡业务逻辑应与任何框架、数据库或外部</div>
                    </li>
                    <li><a href="/article/1879797904886001664.htm"
                           title="教你玩转JavaScript元编程" target="_blank">教你玩转JavaScript元编程</a>
                        <span class="text-muted"></span>

                        <div>教你玩转JavaScript元编程大家好,我是倔强青铜三。我是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。JavaScript元编程:深度解析Proxy、Reflect和对象属性控制JavaScript元编程超越了典型编程的范畴,为开发人员提供了一套创建高度灵活、高效和响应式代码库的工具。让我们深入探讨Proxy</div>
                    </li>
                    <li><a href="/article/1879797560948879360.htm"
                           title="基于jQuery / 原生JS两种方式流畅实现半屏悬浮窗" target="_blank">基于jQuery / 原生JS两种方式流畅实现半屏悬浮窗</a>
                        <span class="text-muted">池泽123</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/jQuery/1.htm">jQuery</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>本篇分别用jQuery和原生两种方式实现悬浮窗功能和样式的切换,兼容IE完成样式示例使用技术栈:jquery、javaScript、HTML/CSS一、基础版面悬浮窗可以有很多样式,但基础结构可以大致分为触发按钮、遮罩层、内容三部分。触发按钮通常设置在屏幕边缘,我这里举例一个右下的位置展示;联系我们/*悬浮窗触发按钮样式*/.Suspended_window_box{width:150px;hei</div>
                    </li>
                    <li><a href="/article/1879797523644739584.htm"
                           title="TypeScript 中的类型推断详解:为什么我们应该信任 TypeScript 的推断能力?" target="_blank">TypeScript 中的类型推断详解:为什么我们应该信任 TypeScript 的推断能力?</a>
                        <span class="text-muted"></span>

                        <div>在TypeScript中,类型推断(TypeInference)是一个强大且被广泛使用的特性。它允许开发者在许多情况下省略显式的类型注解,从而简化代码,同时仍然享受强类型系统带来的安全性和可靠性。然而,对于初学者或经验不足的开发者来说,常常会疑惑:我真的可以完全信任TypeScript的类型推断吗?它的边界和局限性是什么?本文将聚焦于这个问题,通过深入解析TypeScript的类型推断机制,探讨它</div>
                    </li>
                    <li><a href="/article/1879797396595077120.htm"
                           title="如何为IP地址申请SSL证书并安装到服务器" target="_blank">如何为IP地址申请SSL证书并安装到服务器</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/chromessl%E8%AF%81%E4%B9%A6/1.htm">chromessl证书</a>
                        <div>在网络安全很重要的情况下,给IP地址申请SSL证书就像给它上个安全锁,保护信息不被偷看。下面是详细的步骤:准备工作公网IP地址:确保您有一个能从互联网直接访问的IP地址。开放端口:确保您的IP地址的80或443端口是开的,这样才能进行证书验证和安全的HTTPS通信。挑选证书颁发机构(CA)选择一个信誉好的SSL证书提供商,比如JoySSL等,他们提供专门给IP地址的SSL证书服务。申请SSL证书注</div>
                    </li>
                    <li><a href="/article/1879797269235036160.htm"
                           title="前端-从入门到入土" target="_blank">前端-从入门到入土</a>
                        <span class="text-muted"></span>

                        <div>前端学习路线基础部分(HTML+CSS+JS入门)快速了解,能够进行简单的页面布局,交互JS部分,可以写一些小demo来熟悉常见的API推荐教程:https://www.bilibili.com/video/BV1BT4y1W7Aw/?spm_id_from=333....框架部分这里推荐Vue框架,相对React会更容易上手,并且中文文档也相对友好推荐教程:https://www.bilibil</div>
                    </li>
                    <li><a href="/article/1879797182786236416.htm"
                           title="[Python基础](5) Python列表( list )详细解读" target="_blank">[Python基础](5) Python列表( list )详细解读</a>
                        <span class="text-muted">apk___</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a>
                        <div>作者制作不易,关注、点赞、收藏一下吧!目录1.列表的基本概念2.一维列表2.1.创建一维列表与访问元素2.2.在一维列表中修改元素、添加元素、删除元素2.3.列表排序2.4.一维列表遍历重点!2.5.列表切片3.二维列表3.1.创建二维列表和访问元素3.2.在二维数组中修改元素、添加元素、删除元素3.3.二维列表遍历3.4.二维列表切片4.拓展NumPy数组1.列表的基本概念在Python中,列表</div>
                    </li>
                    <li><a href="/article/1879797180483563520.htm"
                           title="JavaScript防抖与节流的运用" target="_blank">JavaScript防抖与节流的运用</a>
                        <span class="text-muted">Enti7c</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>防抖(Debounce)概念:防抖是指在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。防抖的主要目的是将多次连续触发的事件合并为一次执行,适用于例如输入框输入搜索内容时,避免频繁发送请求,只在用户停止输入一段时间后才发送请求。实现思路:创建一个定时器。当事件触发时,清除之前的定时器。重新创建一个新的定时器,在指定延迟时间后执行回调函数。functiondebounce(func,</div>
                    </li>
                    <li><a href="/article/1879797142025990144.htm"
                           title="等保、密评专用—双算法SSL证书" target="_blank">等保、密评专用—双算法SSL证书</a>
                        <span class="text-muted"></span>

                        <div>等保(网络安全等级保护)和密评(商用密码应用安全性评估)专用的双算法SSL证书,是结合了国际加密算法(如RSA)和国密算法(如SM2)的SSL证书。这类证书不仅满足了国内对于数据安全和信息保密的合规性要求,同时也确保了与国际标准的互操作性。以下是关于等保、密评专用双算法SSL证书的详细解析:一、优势合规性:满足《信息安全技术网络安全等级保护安全设计技术要求》(GB/T25070)中关于二级等保安全</div>
                    </li>
                    <li><a href="/article/1879797014875664384.htm"
                           title="API接口设计的未来趋势:探索技术方向与实践方案" target="_blank">API接口设计的未来趋势:探索技术方向与实践方案</a>
                        <span class="text-muted"></span>

                        <div>摘要随着技术的发展,API接口设计从最初的单一请求响应模式逐渐演化为多样化的架构模式和高效的传输协议。从REST到GraphQL,从API网关到服务网格,API接口设计正向着更高效、更安全、更可扩展的方向发展。本文将探讨未来API设计的新趋势,深入分析API网关和服务网格的应用场景及技术优势,并通过ArkUI和ArkTS实现简单的API交互示例。引言API(ApplicationProgrammi</div>
                    </li>
                    <li><a href="/article/1879796887712755712.htm"
                           title="Java中的内存管理:垃圾回收机制详解" target="_blank">Java中的内存管理:垃圾回收机制详解</a>
                        <span class="text-muted"></span>

                        <div>在Java开发中,内存管理是一个至关重要的话题。Java通过其内建的垃圾回收机制(GarbageCollection,GC)来管理内存,自动处理对象的内存分配和释放,从而减轻了开发者的负担。然而,尽管Java的垃圾回收机制极大地提高了程序的稳定性和开发效率,但它的背后却是一个复杂的机制,理解其工作原理对于优化性能和调试内存相关问题至关重要。本文将专注于Java的垃圾回收机制,深入分析它是如何运作的</div>
                    </li>
                    <li><a href="/article/1879796885187784704.htm"
                           title="Java基础面试:Java中的方法" target="_blank">Java基础面试:Java中的方法</a>
                        <span class="text-muted"></span>

                        <div>Java中的方法什么是方法方法是Java中的一段可重用的代码块,用于执行特定的任务,是程序中的最小执行单元。参数:方法可以接受一个或多个参数,这些参数是传递给方法的值,用于方法内部的逻辑运算。返回值:方法可以返回一个值,叫做方法的返回值,返回值的类型在方法声明中指定,无返回值使用关键字void声明。方法的声明:修饰符返回值方法名(参数数据类型参数名称){方法体}方法有哪些种构造方法:构造方法是一种</div>
                    </li>
                    <li><a href="/article/1879796886395744256.htm"
                           title="WebApp开发中的身份验证:如何确保安全性与用户体验的平衡?" target="_blank">WebApp开发中的身份验证:如何确保安全性与用户体验的平衡?</a>
                        <span class="text-muted"></span>

                        <div>在Web应用程序(WebApp)开发中,身份验证(Authentication)是一个至关重要的环节,它决定了用户如何登录、如何识别以及如何保护用户数据。然而,随着安全威胁的不断演化,开发者面临着一个挑战:如何在确保安全性的同时,提供顺畅的用户体验?本文将专注于WebApp中的身份验证问题,探索如何通过合理设计身份验证流程,平衡安全性和用户体验之间的关系,防止安全漏洞,同时避免让用户在登录过程中产</div>
                    </li>
                    <li><a href="/article/1879796676739264512.htm"
                           title="代码随想录算法训练营第 5 天(哈希表1)| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和" target="_blank">代码随想录算法训练营第 5 天(哈希表1)| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和</a>
                        <span class="text-muted">去薯条搞点码头</span>
<a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E9%9A%8F%E6%83%B3%E5%BD%95/1.htm">代码随想录</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法数据小用数组,数据大用set,数据比较散用map一、242.有效的字母异位词题目:242.有效的字母异位词-力扣(LeetCode)视频:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词_哔哩哔哩_bilibili讲解:代码随想录思路a-z的ASCll码是连续的,用字母减去a的ASCll码的就是每个字母的码1.</div>
                    </li>
                    <li><a href="/article/1879795875723669504.htm"
                           title="谷歌上架,新号没办法上架成功?总是高风险被封,是什么原因?" target="_blank">谷歌上架,新号没办法上架成功?总是高风险被封,是什么原因?</a>
                        <span class="text-muted"></span>

                        <div>目前,在Googleplay上架应用,大家都普遍认为新号没办法上架成功,要么在提审的时候就高风险封号,要么过审了两三天也高风险封号了,相比,用老号不仅上架成功率高,而且审核也更快。难道新号真的如大家所说的那样,真的几乎没办法成功上架吗?是什么原因?其实,谷歌并不是不让新号上架,是不是新号,也跟高风险没什么关系。主要是因为新号的“权重”不高,在谷歌审核系统那里的可信任度不高,任何一点“风吹草动”,都</div>
                    </li>
                    <li><a href="/article/1879795748674007040.htm"
                           title="【JAVA】接口和抽象类有什么区别?" target="_blank">【JAVA】接口和抽象类有什么区别?</a>
                        <span class="text-muted"></span>

                        <div>Java中接口(Interface)与抽象类(AbstractClass)的区别详解️在Java编程中,接口和抽象类是实现抽象化的重要工具。它们在设计和实现上有诸多区别,理解这些差异对于编写高效、可维护的代码至关重要。本文将从多个方面详细对比接口和抽象类,帮助开发者在实际项目中做出最佳选择。1.继承关系抽象类单继承:一个类只能继承一个抽象类。用途:用于表达类之间的“is-a”关系,构建类的层次结构</div>
                    </li>
                    <li><a href="/article/1879795495489040384.htm"
                           title="C语言中的内存管理:`malloc`、`free`和内存泄漏" target="_blank">C语言中的内存管理:`malloc`、`free`和内存泄漏</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/cc%2B%2Bc%23%E5%90%8E%E7%AB%AFgo/1.htm">cc++c#后端go</a>
                        <div>C语言是一种非常强大的低级编程语言,提供了直接操作计算机内存的能力,这使得它在系统编程、嵌入式开发、以及高性能计算等领域得到了广泛应用。然而,这种能力同时也带来了复杂的内存管理问题。如何正确、有效地分配和释放内存是每一个C程序员都必须掌握的基本技能。本文将详细探讨C语言中的内存管理,重点关注内存分配函数malloc、内存释放函数free,以及常见的内存管理错误,如内存泄漏。1.动态内存分配:mal</div>
                    </li>
                    <li><a href="/article/1879795417449820160.htm"
                           title="【C语言】exit函数详解" target="_blank">【C语言】exit函数详解</a>
                        <span class="text-muted">DevKevin</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/C/1.htm">C</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>一、exit函数的定义exit函数是C标准库中的函数,其原型定义在stdlib.h头文件中。exit函数的作用是终止当前程序的执行,并返回一个指定的退出码给操作系统。其基本用法如下:#includevoidexit(intstatus);具体功能分类有以下三种,不同的类型对应不同的使用环境:status参数是程序的退出状态码,通常情况下,0表示程序正常结束,非零值表示程序出现了错误或异常情况。调用</div>
                    </li>
                    <li><a href="/article/1879795291155132416.htm"
                           title="Python | 经典类与新式类,静态方法、类方法与实例方法详解!" target="_blank">Python | 经典类与新式类,静态方法、类方法与实例方法详解!</a>
                        <span class="text-muted">chaochao️</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B/1.htm">面向对象编程</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E5%BC%8F%E7%B1%BB/1.htm">新式类</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E5%85%B8%E7%B1%BB/1.htm">经典类</a>
                        <div>创作不易,来了的客官点点关注,收藏,订阅一键三连❤前言“人生苦短,我用python”,我是一个即将毕业的大学生,超超。如果你也爱python,不妨跟着萌新超超一起学习python,拿下python,一起加油,共同努力,拿到理想offer!系列文章目录Python——什么是面向对象?类的定义、self和继承详解Python——函数大全及使用方法!lambda?global?Python——流程控制,</div>
                    </li>
                    <li><a href="/article/1879794613171056640.htm"
                           title="JavaScript 与 TypeScript 的详细对比" target="_blank">JavaScript 与 TypeScript 的详细对比</a>
                        <span class="text-muted"></span>

                        <div>JavaScript是当前Web开发的主要编程语言,也是现代前端开发的基石。尽管它灵活而强大,但在大型项目中,JavaScript的动态类型系统和无类型检查常常带来代码管理上的问题。为了解决这些问题,微软在2012年推出了TypeScript,这是一种JavaScript的超集,增加了静态类型检查、接口、类和其他现代化的编程特性。本文将深入对比JavaScript和TypeScript,分析两者在</div>
                    </li>
                                <li><a href="/article/54.htm"
                                       title="JAVA中的Enum" target="_blank">JAVA中的Enum</a>
                                    <span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a>
                                    <div>Enum是计算机编程语言中的一种数据类型---枚举类型。 在实际问题中,有些变量的取值被限定在一个有限的范围内。       例如,一个星期内只有七天 我们通常这样实现上面的定义: 
public String monday;
public String tuesday;
public String wensday;
public String thursday</div>
                                </li>
                                <li><a href="/article/181.htm"
                                       title="赶集网mysql开发36条军规" target="_blank">赶集网mysql开发36条军规</a>
                                    <span class="text-muted">Bill_chen</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E4%B8%9A%E5%8A%A1%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">业务架构设计</a><a class="tag" taget="_blank" href="/search/mysql%E8%B0%83%E4%BC%98/1.htm">mysql调优</a><a class="tag" taget="_blank" href="/search/mysql%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">mysql性能优化</a>
                                    <div>(一)核心军规   (1)不在数据库做运算      cpu计算务必移至业务层;   (2)控制单表数据量      int型不超过1000w,含char则不超过500w;      合理分表;      限制单库表数量在300以内;   (3)控制列数量      字段少而精,字段数建议在20以内</div>
                                </li>
                                <li><a href="/article/308.htm"
                                       title="Shell test命令" target="_blank">Shell test命令</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">字符串</a><a class="tag" taget="_blank" href="/search/test/1.htm">test</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%97/1.htm">数字</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E6%AF%94%E8%BE%83/1.htm">文件比较</a>
                                    <div>Shell test命令 
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。  数值测试    参数 说明   -eq 等于则为真   -ne 不等于则为真   -gt 大于则为真   -ge 大于等于则为真   -lt 小于则为真   -le 小于等于则为真    
实例演示: 
num1=100
num2=100if test $[num1]</div>
                                </li>
                                <li><a href="/article/435.htm"
                                       title="XFire框架实现WebService(二)" target="_blank">XFire框架实现WebService(二)</a>
                                    <span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/webservice/1.htm">webservice</a>
                                    <div>   有了XFire框架实现WebService(一),就可以继续开发WebService的简单应用。 
Webservice的服务端(WEB工程): 
两个java bean类: 
Course.java 
   package cn.com.bean; 
public class Course { 
    private </div>
                                </li>
                                <li><a href="/article/562.htm"
                                       title="重绘之画图板" target="_blank">重绘之画图板</a>
                                    <span class="text-muted">朱辉辉33</span>
<a class="tag" taget="_blank" href="/search/%E7%94%BB%E5%9B%BE%E6%9D%BF/1.htm">画图板</a>
                                    <div>       上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法paint()时加入棋盘和棋子的绘制。这次我想说说画图板的重绘。 
       画图板重绘难在需要重绘的类型很多,比如说里面有矩形,园,直线之类的,所以我们要想办法将里面的图形加入一个队列中,这样在重绘时就</div>
                                </li>
                                <li><a href="/article/689.htm"
                                       title="Java的IO流" target="_blank">Java的IO流</a>
                                    <span class="text-muted">西蜀石兰</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>刚学Java的IO流时,被各种inputStream流弄的很迷糊,看老罗视频时说想象成插在文件上的一根管道,当初听时觉得自己很明白,可到自己用时,有不知道怎么代码了。。。 
每当遇到这种问题时,我习惯性的从头开始理逻辑,会问自己一些很简单的问题,把这些简单的问题想明白了,再看代码时才不会迷糊。 
 
IO流作用是什么? 
答:实现对文件的读写,这里的文件是广义的; 
 
Java如何实现程序到文件</div>
                                </li>
                                <li><a href="/article/816.htm"
                                       title="No matching PlatformTransactionManager bean found for qualifier 'add' - neither" target="_blank">No matching PlatformTransactionManager bean found for qualifier 'add' - neither</a>
                                    <span class="text-muted">林鹤霄</span>

                                    <div>java.lang.IllegalStateException: No matching PlatformTransactionManager bean found for qualifier 'add' - neither qualifier match nor bean name match! 
  
网上找了好多的资料没能解决,后来发现:项目中使用的是xml配置的方式配置事务,但是</div>
                                </li>
                                <li><a href="/article/943.htm"
                                       title="Row size too large (> 8126). Changing some columns to TEXT or BLOB" target="_blank">Row size too large (> 8126). Changing some columns to TEXT or BLOB</a>
                                    <span class="text-muted">aigo</span>
<a class="tag" taget="_blank" href="/search/column/1.htm">column</a>
                                    <div>原文:http://stackoverflow.com/questions/15585602/change-limit-for-mysql-row-size-too-large 
  
异常信息: 
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAM</div>
                                </li>
                                <li><a href="/article/1070.htm"
                                       title="JS 格式化时间" target="_blank">JS 格式化时间</a>
                                    <span class="text-muted">alxw4616</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>/**
 * 格式化时间 2013/6/13 by 半仙 alxw4616@msn.com
 * 需要 pad 函数
 * 接收可用的时间值.
 * 返回替换时间占位符后的字符串
 *
 * 时间占位符:年 Y 月 M 日 D 小时 h 分 m 秒 s 重复次数表示占位数
 * 如 YYYY 4占4位 YY 占2位<p></p>
 * MM DD hh mm</div>
                                </li>
                                <li><a href="/article/1197.htm"
                                       title="队列中数据的移除问题" target="_blank">队列中数据的移除问题</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97%E7%A7%BB%E9%99%A4/1.htm">队列移除</a>
                                    <div>  
   队列的移除一般都是使用的remov();都可以移除的,但是在昨天做线程移除的时候出现了点问题,没有将遍历出来的全部移除,  代码如下; 
  
   // 
package com.Thread0715.com;

import java.util.ArrayList;

public class Threa</div>
                                </li>
                                <li><a href="/article/1324.htm"
                                       title="Runnable接口使用实例" target="_blank">Runnable接口使用实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/Runnable/1.htm">Runnable</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a>
                                    <div>Runnable接口 
a.       该接口只有一个方法:public void run(); 
b.       实现该接口的类必须覆盖该run方法 
c.       实现了Runnable接口的类并不具有任何天</div>
                                </li>
                                <li><a href="/article/1451.htm"
                                       title="oracle里的extend详解" target="_blank">oracle里的extend详解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/extend/1.htm">extend</a>
                                    <div>扩展已知的数组空间,例: 
DECLARE
  TYPE CourseList IS TABLE OF VARCHAR2(10);
  courses CourseList;
BEGIN
  --   初始化数组元素,大小为3
  courses := CourseList('Biol   4412 ', 'Psyc   3112 ', 'Anth   3001 ');
  --   </div>
                                </li>
                                <li><a href="/article/1578.htm"
                                       title="【httpclient】httpclient发送表单POST请求" target="_blank">【httpclient】httpclient发送表单POST请求</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a>
                                    <div>浏览器Form Post请求 
浏览器可以通过提交表单的方式向服务器发起POST请求,这种形式的POST请求不同于一般的POST请求 
1. 一般的POST请求,将请求数据放置于请求体中,服务器端以二进制流的方式读取数据,HttpServletRequest.getInputStream()。这种方式的请求可以处理任意数据形式的POST请求,比如请求数据是字符串或者是二进制数据 
2. Form </div>
                                </li>
                                <li><a href="/article/1705.htm"
                                       title="【Hive十三】Hive读写Avro格式的数据" target="_blank">【Hive十三】Hive读写Avro格式的数据</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a>
                                    <div> 1. 原始数据 
hive> select * from word; 
OK
1	MSN  
10	QQ  
100	Gtalk  
1000	Skype  
  
  
 2. 创建avro格式的数据表 
  
hive> CREATE TABLE avro_table(age INT, name STRING)STORE</div>
                                </li>
                                <li><a href="/article/1832.htm"
                                       title="nginx+lua+redis自动识别封解禁频繁访问IP" target="_blank">nginx+lua+redis自动识别封解禁频繁访问IP</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>在站点遇到攻击且无明显攻击特征,造成站点访问慢,nginx不断返回502等错误时,可利用nginx+lua+redis实现在指定的时间段 内,若单IP的请求量达到指定的数量后对该IP进行封禁,nginx返回403禁止访问。利用redis的expire命令设置封禁IP的过期时间达到在 指定的封禁时间后实行自动解封的目的。 
一、安装环境: 
 
 CentOS x64 release 6.4(Fin</div>
                                </li>
                                <li><a href="/article/1959.htm"
                                       title="java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历" target="_blank">java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;


public class BinTreeTraverse {
	//private int[] array={ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	private int[] array={ 10,6,</div>
                                </li>
                                <li><a href="/article/2086.htm"
                                       title="Spring源码学习-XML 配置方式的IoC容器启动过程分析" target="_blank">Spring源码学习-XML 配置方式的IoC容器启动过程分析</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a>
                                    <div>以FileSystemXmlApplicationContext为例,把Spring IoC容器的初始化流程走一遍: 
 

ApplicationContext context = new FileSystemXmlApplicationContext
            ("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml&q</div>
                                </li>
                                <li><a href="/article/2213.htm"
                                       title="[科研与项目]民营企业请慎重参与军事科技工程" target="_blank">[科研与项目]民营企业请慎重参与军事科技工程</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A/1.htm">企业</a>
                                    <div> 
 
     军事科研工程和项目 并非要用最先进,最时髦的技术,而是要做到“万无一失” 
 
   而民营科技企业在搞科技创新工程的时候,往往考虑的是技术的先进性,而对先进技术带来的风险考虑得不够,在今天提倡军民融合发展的大环境下,这种“万无一失”和“时髦性”的矛盾会日益凸显。。。。。。所以请大家在参与任何重大的军事和政府项目之前,对</div>
                                </li>
                                <li><a href="/article/2340.htm"
                                       title="spring 定时器-两种方式" target="_blank">spring 定时器-两种方式</a>
                                    <span class="text-muted">cuityang</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
                                    <div>方式一: 
间隔一定时间 运行 
 
<bean id="updateSessionIdTask" class="com.yang.iprms.common.UpdateSessionTask" autowire="byName" /> 
 
 <bean id="updateSessionIdSchedule</div>
                                </li>
                                <li><a href="/article/2467.htm"
                                       title="简述一下关于BroadView站点的相关设计" target="_blank">简述一下关于BroadView站点的相关设计</a>
                                    <span class="text-muted">damoqiongqiu</span>
<a class="tag" taget="_blank" href="/search/view/1.htm">view</a>
                                    <div>终于弄上线了,累趴,戳这里http://www.broadview.com.cn 
  
简述一下相关的技术点 
  
前端:jQuery+BootStrap3.2+HandleBars,全站Ajax(貌似对SEO的影响很大啊!怎么破?),用Grunt对全部JS做了压缩处理,对部分JS和CSS做了合并(模块间存在很多依赖,全部合并比较繁琐,待完善)。 
  
后端:U</div>
                                </li>
                                <li><a href="/article/2594.htm"
                                       title="运维 PHP问题汇总" target="_blank">运维 PHP问题汇总</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/windows2003/1.htm">windows2003</a>
                                    <div>1、Dede(织梦)发表文章时,内容自动添加关键字显示空白页 
解决方法: 
后台>系统>系统基本参数>核心设置>关键字替换(是/否),这里选择“是”。 
后台>系统>系统基本参数>其他选项>自动提取关键字,这里选择“是”。 
  
2、解决PHP168超级管理员上传图片提示你的空间不足 
网站是用PHP168做的,反映使用管理员在后台无法</div>
                                </li>
                                <li><a href="/article/2721.htm"
                                       title="mac 下 安装php扩展 - mcrypt" target="_blank">mac 下 安装php扩展 - mcrypt</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法,phpMyAdmin依赖这个PHP扩展,具体如下: 
 
  
  下载并解压libmcrypt-2.5.8.tar.gz。 
  在终端执行如下命令:  tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --disable-posix-threads --</div>
                                </li>
                                <li><a href="/article/2848.htm"
                                       title="MongoDB更新文档 [四]" target="_blank">MongoDB更新文档 [四]</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/Mongodb%E6%9B%B4%E6%96%B0%E6%96%87%E6%A1%A3/1.htm">Mongodb更新文档</a>
                                    <div>MongoDB更新文档 
转载请出自出处:http://eksliang.iteye.com/blog/2174104 
MongoDB对文档的CURD,前面的博客简单介绍了,但是对文档更新篇幅比较大,所以这里单独拿出来。 
语法结构如下: 
db.collection.update( criteria, objNew, upsert, multi) 
参数含义    参数   </div>
                                </li>
                                <li><a href="/article/2975.htm"
                                       title="Linux下的解压,移除,复制,查看tomcat命令" target="_blank">Linux下的解压,移除,复制,查看tomcat命令</a>
                                    <span class="text-muted">y806839048</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>重复myeclipse生成webservice有问题删除以前的,干净 
 
 1、先切换到:cd usr/local/tomcat5/logs 
 
2、tail -f catalina.out 
 
3、这样运行时就可以实时查看运行日志了 
 
 
 
 
Ctrl+c 是退出tail命令。 
 有问题不明的先注掉 
   cp /opt/tomcat-6.0.44/webapps/g</div>
                                </li>
                                <li><a href="/article/3102.htm"
                                       title="Spring之使用事务缘由(3-XML实现)" target="_blank">Spring之使用事务缘由(3-XML实现)</a>
                                    <span class="text-muted">ihuning</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>  
用事务通知声明式地管理事务 
  
事务管理是一种横切关注点。为了在 Spring 2.x 中启用声明式事务管理,可以通过 tx Schema 中定义的 <tx:advice> 元素声明事务通知,为此必须事先将这个 Schema 定义添加到 <beans> 根元素中去。声明了事务通知后,就需要将它与切入点关联起来。由于事务通知是在 <aop:</div>
                                </li>
                                <li><a href="/article/3229.htm"
                                       title="GCD使用经验与技巧浅谈" target="_blank">GCD使用经验与技巧浅谈</a>
                                    <span class="text-muted">啸笑天</span>
<a class="tag" taget="_blank" href="/search/GC/1.htm">GC</a>
                                    <div>前言 
GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。 
dispatch_once_t必须是全局或static变量 
这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下:        1  </div>
                                </li>
                                <li><a href="/article/3356.htm"
                                       title="linux(Ubuntu)下常用命令备忘录1" target="_blank">linux(Ubuntu)下常用命令备忘录1</a>
                                    <span class="text-muted">macroli</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                                    <div>在使用下面的命令是可以通过--help来获取更多的信息1,查询当前目录文件列表:ls 
 
 ls命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息:  
 ls / 显示/.下的所有文件和目录  
 ls -l 给出文件或者文件夹的详细信息 
 ls -a 显示所有文件,包括隐藏文</div>
                                </li>
                                <li><a href="/article/3483.htm"
                                       title="nodejs同步操作mysql" target="_blank">nodejs同步操作mysql</a>
                                    <span class="text-muted">qiaolevip</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a>
                                    <div>// db-util.js
var mysql = require('mysql');
var pool = mysql.createPool({
  connectionLimit : 10,
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'test',
  port: 3306
});

</div>
                                </li>
                                <li><a href="/article/3610.htm"
                                       title="一起学Hive系列文章" target="_blank">一起学Hive系列文章</a>
                                    <span class="text-muted">superlxw1234</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/Hive%E5%85%A5%E9%97%A8/1.htm">Hive入门</a>
                                    <div>  
[一起学Hive]系列文章 目录贴,入门Hive,持续更新中。 
  
[一起学Hive]之一—Hive概述,Hive是什么 
[一起学Hive]之二—Hive函数大全-完整版 
[一起学Hive]之三—Hive中的数据库(Database)和表(Table) 
[一起学Hive]之四-Hive的安装配置 
[一起学Hive]之五-Hive的视图和分区 
[一起学Hive</div>
                                </li>
                                <li><a href="/article/3737.htm"
                                       title="Spring开发利器:Spring Tool Suite 3.7.0 发布" target="_blank">Spring开发利器:Spring Tool Suite 3.7.0 发布</a>
                                    <span class="text-muted">wiselyman</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>Spring Tool Suite(简称STS)是基于Eclipse,专门针对Spring开发者提供大量的便捷功能的优秀开发工具。 
  
在3.7.0版本主要做了如下的更新: 
  
 
 将eclipse版本更新至Eclipse Mars 4.5 GA 
 Spring Boot(JavaEE开发的颠覆者集大成者,推荐大家学习)的配置语言YAML编辑器的支持(包含自动提示,</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>