标签:ike nec multi 使用率 java进程 git 核心 oss htm
1.开发常用的网络知识
http://www.cnblogs.com/songQQ/archive/2009/05/27/1490612.html
178.123.111.234 255.225.0.0
cookie, session, token:
举个简单例子就像人们去超市购物,去存包,第一个去的时候(客户第一次发送请求给服务器),超市会给你一个号码牌(此时服务器产生一个唯一的sessionID,并返回给客户端(通过cookie)),你可以在你自己的柜子里存东西(在服务器属于此客户的内存区域存数据),下次你再去的时候,拿着这个号码牌(请求request中携带cookie),超市就知道哪些东西是你的,然后给你取出来,如果你几天都没去取(session失效了,在服务器端配置),你再去的时候东西就拿不到了。如果你把这个号码牌丢了(刚才的cookie失效了,比如你重启电脑,刚才存于内存中sessionID也就丢了),再去拿东西,当然无法定位了,也就拿不到东西了。如果是新打开一个浏览器的情况,那就像是又一个人去超市存东西一样,你的东西跟他的东西是两码事,互不影响,他有他自己的sessionID,你有你自己的。 1.session存储于服务器,可以理解为一个状态列表,拥有一个唯一识别符号sessionId,通常存放于cookie中。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session。依赖cookie而使用。
1.session存储于服务器,可以理解为一个状态列表,拥有一个唯一识别符号sessionId,通常存放于cookie中。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session。依赖cookie而使用。
2.cookie类似一个令牌,装有sessionId,存储在客户端,浏览器通常会自动添加。
3.token也类似一个令牌,无状态,用户信息都被加密到token中,服务器收到token后解密就可知道是哪个用户。需要开发者手动添加。
http://bubkoo.com/2014/04/21/http-cookies-explained/, https://segmentfault.com/a/1190000017831088, https://www.cnblogs.com/wxinyu/p/9154178.html,
https://blog.csdn.net/ToBeTheEnder/article/details/52485948, https://blog.csdn.net/jikeehuang/article/details/51488020,
http://www.cnblogs.com/moyand/p/9047978.html, https://segmentfault.com/q/1010000012984880/a-1020000012987025.
Cross-site request forgery: 跨站请求伪造, 是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0
Cross-site scripting: 跨站脚本攻击, 是恶意攻击者往Web页面里插入恶意代码(java, javascript, vbscript等),当用户浏览该页之时,嵌入其中Web页面里面的代码会被执行,从而达到恶意用户的特殊目的。https://www.cnblogs.com/dolphinX/p/3391351.html, https://thief.one/2017/05/31/1/
网络分层:
应用层, 运输层, 网络层, 链路层, 物理层, 一般应用层完成的是各种应用的开发和使用, 是上层应用的驰骋之地, 连接的话, 需要三次握手, 四次挥手, 握手连接, 挥手断开连接, 三次握手(A:你好, 我想和你说话? B: 你好, 我在的. A:那我给你发送数据了.[表示A&B同时在线, 这时候, 会话已经是连接上了]), 四次挥手()
https://github.com/jawil/blog/issues/14
2.HTTP错误码
HTTP请求, 返回了什么错误码, 就要根据错误码去分析, 前端的, 后端的, 根据各自的错误情况, 着手去分析, 这样才能分析到问题的原因
1xx:信息提示
这些状态码表示临时的响应,客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。
100:Continue,继续,初始的请求已经接受,客户应当继续发送请求的其余部分。
101:Switching Protocols,切换协议,服务器将遵从客户的请求转换到另外一种协议。
2xx:成功
这类状态代码表明服务器成功地接受了客户端请求。
200:OK,请求成功。
201:Created,服务器已经创建了文档,Location头给出了它的URL。
202:Accepted,服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。返回202状态码的响应的目的是允许服务器接受其他过程的请求,而不必让客户端一直保持与服务器的连接直到批处理操作全部完成。
203:?Non-Authoritative Information,文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝),非权威性信息。
3xx:重定向
这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
300:?Multiple Choices,多路选择,客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。用户或浏览器能够自行选择一个首选的地址进行重定向。
301:?Moved Permanently,永久转移,客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302:?Found,暂时转移,类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。
4xx:客户端
这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
400:Bad Request,错误请求。1)语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。2)请求参数有误。
401:Unauthorized,未授权,访问被拒绝。
402:Payment Required,需要付费。
403:Forbidden,禁止,服务器已经理解请求,但是拒绝执行它。
404:Not Found,未找到,服务器找不到指定的资源,文档不存在。
405:Method Not Allowed,方法不允许,请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用,用来访问本页面的 HTTP 谓词不被允许(方法不被允许)。
406:Not Acceptable,不接受,请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
407:Proxy Authentication Required,需要代理认证,与401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。
408:Request Timeout,请求超时,客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。
409:Conflict,冲突,通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。
410:Gone,失败,被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这样的状况应当被认为是永久性的。
411:Length Required,需要长度,服务器拒绝在没有定义 Content-Length 头的情况下接受请求。
412:Precondition Failed,前提条件失败,服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
413:Request Entity Too Large,请求实体太长,服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。
414:Request-URI Too Long,请求URI太长,请求的URI 长度超过了服务器能够解释的长度。
5xx:服务器错误
这类状态码代表服务器遇到了意料不到的情况,不能完成客户的请求。
500:Internal Server Error,服务器内部错误。
501:Not Implemented,页眉指定了未实现的配置,服务器不支持当前请求所需要的某个功能。
502:Bad Gateway,网关失败,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503:Service Unavailable,服务不可用,服务器由于维护或者负载过重未能应答。
504:Gateway Timeout,网关超时,作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器收到响应。
505:HTTP Version Not Supported,服务器不支持请求中所指明的HTTP版本。
参考链接:
https://blog.csdn.net/qq_38820315/article/details/81512056
https://blog.csdn.net/qiutiandepaomo/article/details/81984830
3.常用的Linux命令
系统:
命令检查, 设置服务
1.chkconfig
命令检查, 设置系统的各种服务, 常用的有如下的几种, 增加一个服务的时候, 脚本必须在/etc/init.d/的目录下
chkconfig --list #列出所有的系统服务.
chkconfig --add httpd #增加httpd服务.
chkconfig --del httpd #删除httpd服务.
参考链接:
http://man.linuxde.net/chkconfig
文件:
复制:cp
移动:mv,
删除:rm -rf
创建文件夹: mkdir
scp: ssh
网络:
监听状态, 端口监听, 端口操作:
1.netstat
netstat命令用于显示与IP, TCP, UDP和ICMP协议相关的统计数据, 一般用于检验本机各端口的网络连接情况. netstat是在内核中访问网络及相关信息的程序,
它能提供TCP连接, TCP和UDP监听, 进程内存管理的相关报告.
常用参数:
-a或–all: 显示所有连线中的Socket;
-c或–continuous: 持续列出网络状态;
-l或–listening: 显示监控中的服务器的Socket;
-n或–numeric: 直接使用ip地址,而不通过域名服务器;
-p或–programs: 显示正在使用Socket的程序识别码和程序名称;
-t或–tcp: 显示TCP传输协议的连线状况;
-u或–udp: 显示UDP传输协议的连线状况;
-o或者--timers: 显示计时器
常用命令:
netstat -ano
netstat -anpo
netstat -lntup
netstat -r :显示路由信息
常见网络连接状态:
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
zuiguangyin:~ # netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:61806 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6432 0.0.0.0:* LISTEN
tcp 0 624 100.133.175.197:22 8.46.214.227:61370 ESTABLISHED
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
tcp 0 0 127.0.0.1:25410 :::* LISTEN
tcp 0 0 100.133.175.197:25411 :::* LISTEN
udp 0 0 0.0.0.0:631 0.0.0.0:*
udp 0 0 0.0.0.0:784 0.0.0.0:*
参考链接:
https://www.cnblogs.com/ftl1012/p/netstat.html
http://man.linuxde.net/netstat
https://blog.csdn.net/freeking101/article/details/53520974
https://blog.csdn.net/u010739551/article/details/80736032
https://www.cnblogs.com/liuzhengliang/p/4609632.html
https://www.cnblogs.com/chenweichu/articles/6441710.html
2.telnet
远程登录
通常可以判断端口是不是通了, 默认23端口, 比如telnet 100.133.138.67 8239, 测试100.133.138.67的8239端口是否是通的,比如
telnet 14.29.122.153 80 连接失败, 就表示是80端口不通
参考链接:
https://www.cnblogs.com/walter371/p/3973579.html
https://www.cnblogs.com/ylcms/p/7250129.html
https://www.cnblogs.com/linuxprobe/p/5381554.html
https://blog.csdn.net/weixin_33716154/article/details/86018627
https://www.cnblogs.com/ylcms/p/7250129.html
https://www.cnblogs.com/linuxprobe/p/5381554.html
https://blog.csdn.net/doubleqinyan/article/details/80492421
https://blog.csdn.net/weixin_33716154/article/details/86018627
https://zhidao.baidu.com/question/130016945.html
https://blog.csdn.net/junmail/article/details/5429458
https://www.cnblogs.com/duyy/archive/2014/04/01/3637782.html
3.lsof
lsof命令用于查看你进程开打的文件, 打开文件的进程, 进程打开的端口(TCP, UDP). 找回/恢复删除的文件.
是十分方便的系统监视工具, 因为lsof命令需要访问核心内存和各种文件, 所以需要root用户执行.
常用命令:
lsof 文件名 :查看谁正在使用某个文件(lsof 文件名)
lsof -i 22 :查看端口22现在的运行情况
lsof -p 12 :列出进程号为12的进程打开了哪些文件
lsof -a -u root -d txt :查看所属root用户进程所打开的文件类型为txt的文件
zuiguangyin:~ # lsof |grep sshd
sshd 7481 root cwd DIR 8,2 4096 2 /
sshd 7481 root rtd DIR 8,2 4096 2 /
sshd 7481 root txt REG 8,2 571568 3023009 /usr/sbin/sshd
sshd 7481 root mem REG 8,2 135124 2261027 /lib64/libpthread-2.11.3.so
sshd 7481 root mem REG 8,2 35800 2834502 /usr/lib64/libkrb5support.so.0.1
sshd 7481 root mem REG 8,2 351360 642021 /usr/lib64/libssl.so.0.9.8
sshd 7481 root mem REG 8,2 110440 2834532 /usr/lib64/libsasl2.so.2.0.22
参数含义:
COMMAND: 进程的名称
PID: 进程标识符
PPID: 父进程标识符(需要指定-R参数)
USER: 进程所有者
PGID: 进程所属组
FD: 文件描述符,应用程序通过文件描述符识别该文件.
参考链接:
https://blog.csdn.net/yr137157/article/details/87112312
https://blog.csdn.net/lemontree1945/article/details/80742522
https://www.cnblogs.com/sparkbj/p/7161669.html
权限:
group:
chgrp
owner:
chown ICUser xxx.txt; chown ICUser abc*; 改变xxx.txt文件的所有者为ICUser,
right:
chmod 777 XXX
进程:
查看进程:
1.ps(program status)
ps是显示瞬间进程的状态, 将某个进程显示出来, 并不动态连续; 如果想对进程进行实时监控应该用top命令.
grep是查找, "|"是管道命令, 让ps与grep同时执行, grep命令是查找,是一种强大的文本搜索工具,
它能使用正则表达式搜索文本, 并把匹配的行打印出来. grep表示全局正则表达式, 它的使用权限是所有用户.
以下这条命令是检查java 进程是否存在:ps -ef |grep java
字段含义如下:
UID PID PPID C STIME TTY TIME CMD
zzw 14124 13991 0 00:38 pts/0 00:00:00 grep --color=auto dae
UID是执行者, PID是进程号, PPID:其上级父程序的ID, C是cpu占用资源, TTY是登入者的终端机位置, TIME是使用掉的CPU时间, CMD是下达的指令名称
常用参数:
-A: 所有的进程均显示出来, 与 -e 具有同样的效用;
-a: 显示现行终端机下的所有进程, 包括其他用户的进程;
-u: 以用户为主的进程状态;
x: 通常与 a 这个参数一起使用, 可列出较完整信息.
输出格式规划:
l: 较长, 较详细的将该 PID 的的信息列出;
j: 工作的格式(jobs format)
-f: 做一个更为完整的输出.
常用命令:
ps -ef |grep java 检查java进程
ps aux 列出所有正在内存中的程序
ps aux |grep java
参考链接:
https://www.cnblogs.com/freinds/p/8074651.html
https://blog.csdn.net/u011641865/article/details/71435510
https://www.cnblogs.com/liuzhengliang/p/4609632.html
2.top
Linux系统可以通过top命令查看系统的CPU, 内存, 运行时间, 交换分区, 执行的线程等信息. 通过top命令可以有效的发现系统的
缺陷出在哪里, 是内存不够, CPU处理能力不够, IO读写过高等,
zuiguangyin:~ # top
top - 00:12:54 up 22 days, 5:22, 1 user, load average: 0.01, 0.04, 0.31
Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie
Cpu(s): 24.5%us, 17.3%sy, 0.0%ni, 58.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8062708k total, 3135080k used, 4927628k free, 238292k buffers
Swap: 8394744k total, 0k used, 8394744k free, 2398544k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18327 root 20 0 3544m 59m 13m S 54 0.8 0:01.13 java
17670 gaussdb 20 0 12944 3012 1296 S 2 0.0 0:00.05 gaussdb.sh
4462 root 20 0 8364 4584 320 S 0 0.1 40:00.14 haveged
6736 gdm 20 0 261m 36m 12m S 0 0.5 45:29.09 gdm-simple-gree
3 root 20 0 0 0 0 S 0 0.0 5:59.61 ksoftirqd/0
参数说明:
前5行为系统总体资源统计情况
top - 系统当前时间
up 系统已开机多长时间
user 当前用户数
load average cpu平均负载,三个数值分别为,1分钟,5分钟,15分钟
Tasks 系统当前进程数,total:总进程数,running:正在运行的进程数,sleeping:睡眠的进程数,stopped:停止的进程数,zombie:僵尸进程数
%Cpu(s) cpu使用率,us:用户使用cpu百分百,sy:系统内核使用cpu百分百,id:剩余的cpu百分百
Mem 内存使用信息,total:总内存大小,free:空闲的内存,used:已使用的内存,buff/cache:缓存的内存大小
Swap 虚拟内存信息
PID 进程id
USER 进程所有者
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量
RES 进程使用的物理内存大小
SHR 共享内存大小
S 进程状态,D:不可中断的睡眠状态,R:运行,S:睡眠,T:跟踪/停止,Z:僵尸进程
%CPU 进程使用的CPU占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计
COMMAND 命令名
参考链接:
https://blog.csdn.net/csdn066/article/details/77171018
https://www.cnblogs.com/ftl1012/p/top.html
https://www.cnblogs.com/yhongji/p/9355290.html
杀死进程:
1.kill
一般而言, 杀掉进程之前, 需要查找进程, 就需要使用ps -ef |grep java, ps -ef|grep tomcat等命令, 找到了之后杀掉.
语法如下:
kill: usage: kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... or kill -l [信号声明]
通过kill -l我们可以找到相应的信号, 然后用相应的数字, 比如常用的kill -9 pid, 9表示立即强制杀死. 比如 kill -9 1234.
参考链接:
https://www.cnblogs.com/xiaojinniu425/p/9429716.html
https://www.cnblogs.com/liuhouhou/p/5400540.html
vim:
写模式: i
退出: ecs +:
4.Java多线程
1
5.多线程调试技巧
1
标签:ike nec multi 使用率 java进程 git 核心 oss htm
原文地址:https://www.cnblogs.com/prayjourney/p/10923576.html