工作中遇到的问题总结
1. HTTP协议中,报文头部 Content-Length 指的是 \r\n空行之后内容的长度。比如下面的报文:
POST /submitdata/service.asmx/g_Submit HTTP/1.1 Host: cf.51welink.com Content-Type: application/x-www-form-urlencoded Content-Length: length sname=string&spwd=string&scorpid=string&sprdid=string&sdst=string&smsg=string
Content-Length 的长度是 strlen("sname=string&spwd=string&scorpid=string&sprdid=string&sdst=string&smsg=string") 的返回值。
3. telent 命令
------------------------------------------------------------------------------------
telent www.shouxiner.com 80
Trying 198.168.11.254 ...
Connected to localhost.
Escape character is .
GET / index.html HTTP/1.1
Host : www.shouxiner.com
HTTP/1.1 200 OK
Date : Sun, 01 Oct 2000 23:25:17 GMT
Server : Apache/1.3.11 BSafe-SSL/1.38 (Unix) FrontPage/4.0.4.3
Last-Modified: Tue, 04 Jul 2000 09:46:21 GMT
......
-----------------------------------------------------------------------------------
curl -d 可以输入post 参数
6. installation parttern of php extension (php拓展安装模式)
phpize ./configure make sudo make install
7. pv命令的使用 & pv命令源码分析
8. Linux 管道符 与 重定向的区别
| > < >> <<
9. QoS 学习
https://en.wikipedia.org/wiki/Quality_of_service#Standards
10. 查看U盘
查看 linux 插入的U盘,必须有管理员权限: sudo fdisk -l 或者 su && fdisk -l
11. 手动配置网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
配置完以后 重启网络
service network restart 或 /etc/init.d/network restart
12. 翻译C++ reference
http://www.cplusplus.com/reference/algorithm/count/?kw=count
http://www.cplusplus.com/reference/algorithm/find/?kw=find
http://www.cplusplus.com/reference/algorithm/lower_bound/?kw=lower_bound
http://www.cplusplus.com/reference/algorithm/upper_bound/?kw=upper_bound
13. Linux平台内存泄漏检测工具 - valgrind
14. time 工具
time 工具 用于初步分析程序性能很有用,real 项就是程序执行的时间,user 项就是程序在用户态 cpu 时间,sys 表示内核态 CPU 的时间。real - user - sys 不一定等于 0,这正好是程序 IOwait 的时间。——韩天峰
16. 保护进程不被中断:nohup / screen / supervisor(python编写) / & 操作符
nohup 命令
$ nohup ./binTreeTravel
nohup: ignoring input and appending output to ‘nohup.out’
输出被重定向并 append 到 nohup.dat
$ nohup ./binTreeTravel > output.dat
nohup: ignoring input and redirecting stderr to stdout
输出被重定向并 append 到 output.dat 文件。
17. cat 和 head 命令辨析
18. Q:禁用COOKIE 后 SEESION 还能用吗?
A: session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据。HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscape将cookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众多用户的会话数据呢? 首先要将客户端和服务器端建立一一联系,每个客户端都得有一个唯一标识,这样服务器才能识别出来。建议唯一标识的方法有两种:cookie或者通过GET方式指定。默认配置的PHP使用session的时会建立一个名叫”PHPSESSID”的cookie(可以通过php.ini修改session.name值指定),如果客户端禁用cookie,你也可以指定通过GET方式把session id传到服务器(修改php.ini中session.use_trans_sid等参数)。<a href=”p.php?<?php print session_name() ?>=<?php print session_id() ?>”>xxx</a>,也可以通过POST来传递session值.
19. ps 命令 -ef 选项和 aux 选项的区别
$ ps -ef | head -2 UID PID PPID C STIME TTY TIME CMD root 1 0 0 Dec17 ? 00:00:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
$ ps aux | head -2 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 57696 6772 ? Ss Dec17 0:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
20. nc 命令、type命令、locate 命令、updatedb 命令
21. php-fpm 调整进程数以节省内存
http://levi.yii.so/archives/3200
http://segmentfault.com/a/1190000000630270
22. APUE open lseek 和 write 的原子调用问题
open (... | O_APPEND...)
23. parallel 命令 并行地执行命令
24. man
man 2 write
man 3 是 lib 的
25. PHP 解决 跨子域问题
http://blog.csdn.net/veverrr/article/details/7079348
当访问a.sso.com时,则将通过 session_start(); $_SESSION['person'] = "SBSBSBS"; $session_id = session_id(); setcookie('name',$session_id,time()+3600*24,'/','SSO.com'); 将session_id 保存在cookie中。 由于在PHP中,session是一个数组,PHP有 serialize() 函数,将数组序列化 $session_value = serialize($_SESSION); 然后将$session_value 保存在数据库中。 在访问b.sso.com时,则从cookie中获取到session_id,然后到数据库中根据session_id将 经过序列化过的session 获取出来 接着就可以对该session进行操作,实现session 跨子域。 由于将session保存在数据库中,存取都是比较费时的操作,因此可以将session保存在缓存中,例如memcached 或者redis中, 这样对session的存取操作就比较快速了。 使用缓存还有个好处就是,通常session有一定得存活时间,如果存在数据库中,还需要保存该session的存活时间,在取出session时,还需要判断其是否失效。 使用缓存存放session就可以在存放的时候设置其存活时间,减少了取出后的失效判断这一个过程。
session_id() || session_start(); // 如果 session_id() 返回 FALSE , 执行 session_start() ; 如果 session_id() 返回 string , 就执行下面的代码——或运算符的性质
26. C++ 中 unsigned int 等价于 unsigned
http://en.cppreference.com/w/cpp/language/types
27 CentOS install xfce
# yum install epel-release # yum groupinstall "X Window system" # systemctl isolate graphical.target $ yum groupinfo xfce # yum groupinstall xfce
# systemctl isolate graphical.target
http://blog.csdn.net/smstong/article/details/44802989#32-安装x-window-system
28. ubuntu 开启 22端口 —— 开启SSH服务
http://www.cnblogs.com/nodot/archive/2011/06/10/2077595.html
29. 基于数据库的抢购系统设计
利用MySQL update 操作的原子性,预先设定 一定数量的 token ,当有用户第一次下单时,执行 SQL 如下:
UPDATE table_name SET token=1 where token=0 and ......
30. C++ 迭代器深入理解
http://www.cplusplus.com/reference/iterator/BidirectionalIterator/
31. “并发、并行、异步、阻塞” 等网络通信模型,彻底弄清。
32. 线程获得时间片并访问到了加锁的资源时,线程会挂起等待吗?
从以上内容可以推断,在多处理机系统中,当多个线程访问到同一个加锁的资源时,线程会等待其读 / 写锁被解除。尤其是当某线程获得时间片,访问到加锁的资源时,线程也是需要等待的。
33. baidu实习岗 内推竞聘 技术笔试
i. 尽可能多的说出所使用的语言的几种内建类型。
i. 栈和队列的区别,分别说出它们的一种应用场景。
i. 是否熟悉 linux 和 vim。
i. 线程与进程的区别,同步与异步的区别。具体解释异步。
i. N * N 的矩阵里面,矩阵元素都是整形,设计算法,取得矩阵当中最大的 N 个元素。
34. mysql报错:ERROR 1045 (28000)
解决方案:i.停止 mysql 服务进程
i. mysqld_safe --user=mysql --skip-grant-tables &
i. 再次正常地进入mysql : mysql -u root -p
i. use mysql , 修改 user 表用户密码或者host——取决于具体引发 error 的原因。
参考链接:http://blog.sina.com.cn/s/blog_a7cf995a0101azwg.html
https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=ERROR+1045+%2828000%29
35. 抖动-操作系统
在计算机操作系统的抖动,又叫颠簸。如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。在请求分页存储管理中,可能出现这种情况,即对刚被替换出去的页,立即又要被访问。需要将它调入,因无空闲内存又要替换另一页,而后者又是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重导致系统瘫痪,这种现象称为抖动现象。
http://baike.baidu.com/view/1500530.htm
36. 磁盘管理与维护
df -h 命令查看磁盘占用情况
du -sh 显示目录或文件占用磁盘空间
37. mysql InnoDB 优化配置
innodb_file_per_table=1 //修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间 # log-bin=mysql-bin //注释掉该选项,不然自动记录操作日志(用于主从同步)
reference: http://blog.csdn.net/gaoxuefeng/article/details/7699400
38. mysql 命令 show processlist 会展示出线程的的几种状——sleep、query end 等等
39. 在代码目录下查找文件中包含关键字的 grep 命令。一定要有表示(当前)路径的 . (点)
grep -R|-r -n 'function static_version' . | grep -v .svn
-r, -R 递归
-v 排除(原文: -invert-match——匹配反转)
-n 行号
-l 只显示文件名,会停止在第一个匹配项
40. ssh 客户端禁用 ctrl + s 设置。
在远端主机上修改用户的 .bashrc 文件
vim ~/.bashrc # disable ctrl + s stty ixany stty ixoff -ixon
41. Linux 硬件资源管理
lspci,
more /proc/cpuinfo,
more /proc/meminfo,
fdisk -l
42. 网络管理
netstat -lntp 列出状态为 listen 且 tcp 连接的端口
43. vim + ctags
i.命令行执行
alias phptags='ctags --langmap=php:.engine.inc.module.theme.php --php-kinds=cdf --languages=php -R .'
i. vim ~/.ctags
--regex-php=/^[ \t]*[(private|public|static)( \t)]*function[ \t]+([A-Za-z0-9_]+)[ \t]*\(/\1/f, function, functions/ --regex-php=/^[ \t]*[(private|public|static)]+[ \t]+\$([A-Za-z0-9_]+)[ \t]*/\1/p, property, properties/ --regex-php=/^[ \t]*(const)[ \t]+([A-Za-z0-9_]+)[ \t]*/\2/d, const, constants/
i. 执行 phptags
参考:http://www.epooll.com/archives/829/
44.编译原理入门:网上流传较广的一篇《编译原理学习导论》(作者四川大学唐良)
45. vim 自动补全默认支持 PHP
To enable PHP autocomplete every time you open a PHP file, add this to your ~/.vimrc;
autocmd FileType php set omnifunc=phpcomplete
46. To avoid having to use sudo
when you use the docker
command, create a Unix group called docker
and add users to it.
sudo usermod -aG docker your_username
Start the docker daemon at boot
sudo chkconfig docker on
47. mysql 命令附加参数,非交互式地执行 sql 语句。其执行结果直接写到文件中
mysql -h 10.48.55.128 -P 8005 -u map -p place_waimai_boye -e "show tables" > place_waimai_boye.tables.sql
查询数据库数据量大小
use information_schema; #比如查看数据库home的大小 select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='home';
reference : http://www.frostsky.com/2011/08/mysql-query-size/
48. 使 ~/.bash_profile 文件生效
source ~/.bash_profile
49. .sock 文件是什么?
在搭建LNMP环境时,我经常会看到各种 .sock 文件,比如安装 MySQL 时,会有 /tmp/MySQL.sock; nginx 与 php-fpm(fastCGI) 来连接。
50. 删除 mysql 数据表全部数据 delete table 和 truncate table
http://www.cnblogs.com/herbert/archive/2010/07/06/1772135.html
51. wget HTTP response data 回显在控制台
wget 'www.baidu.com' -O -
52. PHP OO:父类的构造函数不会被自动调用,需要收到执行
parent::__construct();
不然会报出下面的 PHP Fatal error: Call to a member function foo() on a non-object in /home/map/odp_wmaudit/app/wmaudit/models/service/....php on line 33。
53.既然 php zvalue 是 hashtable 那么 foreach 是如何实现的?hash 存取又是如何实现的?
同理,可以引申出另外一个问题:Hash思想确实很好用,可以帮我们解决元素判重问题,但缺点是 hash 之后元素的排布是无序的,有没有一种数据结构既可以 hash、又可以保持元素原来的顺序?
54. 为什么有些应用场景中,本机的相对IP (127.0.0.1) 和绝对IP(hostname -i) 不能透明地使用? 比如在 NMQ 中,使用相对 IP 时,pusher 会报错,但是改成 相对IP 就解决了。
55. SVN merge 以后,报错:local add, incoming add upon merge
解决方法:svn resolve --accept working -R .
56. output specific line with sed.
This is output the 202947th line to the standard output
sed -n '202947p' train.en
57. GDB debug C program "core dump" error
gcc word2vec run -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 2 -binary 1 -iter 15 bt
使用 bt 命令,可以查看程序调用堆栈,从而找出程序在哪一行出错。
58. sed 删除文件的第一行
sed -i '1d' <file name>
59. 持续观察 GPU 状态
watch -n -1 nvidia-smi
60. 运维工程师启动程序时的模板
command args > /dev/null 2>&1 &
解释: 将标准输出(1)重定向到黑洞(/dev/null)、将标准错误输出(2)重定向到标准输出(1),也即将标准错误输出和标准输出都重定向到了黑洞。
已解决:
2. CentOS 7 合上上盖时,机器不休眠。
4. Nginx 像 Apache 一样列出文件
5. iptables 添加规则 开放 80 端口
15. Implemeting the simple sorting of bucket