2017年12月

算法图解 笔记

  1. 大O表示法都是指的 log₂ 对数O(1)或O(N)或O(log₂N),最糟情况用的次数, 大O符号:是用于描述函数渐近行为的数学符号;
  2. 二分查找 有序的列表
  3. 数组和链表 对比 增删改查
  4. while 循环可能更快,但是递归更易读,递归使栈更深;

JVM GC 实现分类

  1. serial: 单线程 既可以年轻代 (标记复制)也可以老年代(标记清除整理);
  2. ParNew: 年轻代, 多线程版本的serial, 与 CMS 搭配使用,强交互,适合互联网应用;
  3. Parallel Scavenge: 年轻代,多线程,强调高吞吐量-通过改变年轻代大小实现, 根据参数自适应策略;
  4. ParOld: 老年代,多线程,标记整理,与 PS 搭配使用,强调高吞吐量
  5. CMS: 老年代,多线程,大多数时间与应用线程同时运行,除非并发失效,强调强交互,与 ParNew 搭配
    -- 初始标记 CMS initial mark - stop the world
    -- 并发标记 CMS concurrent mark
    -- 重新标记 CMS remark - stop the world
    -- 并发清除 CMS concurrent sweep
    浮动垃圾 和 并发失效 (内存不够) -> serial old 和 垃圾碎片
    设置的 CMSInitiatingOccupancyFraction 的大小和次数的 tradeoff
  6. G1: 多线程,既年轻代,又老年代,适合大于大内存,分 region;
    -- 可预测的停顿时间模型
    -- 回收价值列表 - 优先级

tcpdump

tcpdump - dump traffic on a network

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]

  • -w 写入文件
  • -r 从文件读入 -F 读入的文件
  • -V 从一批文件读入
  • -c 处理多少 package
  • -D or --list-interfaces 列出接口列表
  • -i --interface= 制定接口
  • -K --dont-verify-checksums 不验证 checksum 加快速度
  • -n 不转换数字为地址
  • -Q --direction=in|out|inout

samples here
sudo tcpdump host 10.102.196.239 -w /tmp/tcpdump.log.cap
sudo tcpdump -C 50 -W 10 -w /tmp/tcp.cap ##循环写 10个文件, 每个 50M
sudo tcpdump'(host 10.135.250.186 or host 10.189.248.238 or host 10.20.170.138 or host 10.21.233.128 or port 53)' -w /tmp/tcp.cap # 多个 IP 或者 DNS 查询

ping:
sudo tcpdump -e icmp[icmptype] == 8 //ping echo request
sudo tcpdump -e icmp[icmptype] == 0 //ping echo reply

network diagnosis commands 网络诊断命令

  1. wget
    -- wget -S --spider -T 1 -t 2 sellerprof.vip
    -- wget -S --spider -T 1 -t 2  --no-check-certificate https://esams.vip
  2. curl
    -- curl -I --retry 2 --connect-timeout 1 sellerprof.vip
    -- curl -I --retry 2 --connect-timeout 1 -k https://esams.vip
  3. telnet
  4. nslookup
    -- nslookup -query=hinfo  -timeout=1 -retry=1 esams.vip
  5. ping
    -- ping -c 10 -W 1 sellerprof.vip
  6. traceroute/tracert
    -- traceroute esams.vip
  7. mtr
    -- mtr -w --timeout=1 esams.vip
  8. dig 由 BIND(互联网上最广泛使用的 DNS 软件) 提供的查询 DNS 的辅助工具,替换原来老的 nslookup 和 host

    dig //不带任何参数查询root dns .
    dig -h //help
    dig +short www.tianxiaohui.com // 简化输出
    dig +trace www.tianxiaohui.com //输出迭代式所有来回
    dig @8.8.8.8 tianxiaohui.com
    dig -x 54.222.60.252 //反向查询
    dig -f query.txt +short //从文件读
    dig google.com ANY //查询所有记录

  9. netstat
    来自于 net-tools 软件包. 已不推荐使用, 由 ss 命令来替换此命令.
    -- netstat -t --wide
    -- netstat -t -l
    -- netstat -s
  10. nstat
    来自于 iproute2 软件包
    -- nstat -a
    -- nstat #可以提供2 次使用间的 delta
    -- nstat --json #以 json 格式输出
  11. ss
    来自 iproute2 软件包, 用以替换 netstat. 更偏重于 socket 连接, 数据来自 /proc/net/tcp.
    -- ss -t -l
    -- ss --info
    -- ss -it state syn-sent #根据状态查
    -- ss -it dst abc.tianxiaohui.com #根据地址过滤
    -- ss -it '( dport = :443 )' #根据目标端口查, 一定要注意这里面的空格, 括号里的空格每处都需要
    -- ss -it '( dport = :443 or dport = :80 )' #或者
    -- ss -it '( sport = :45321 )' #根据源端口查,
  12. routetable
    -- netstat -r
  13. ifconfig/ipconfig