java 加密规则变更

java.lang.IllegalArgumentException: Unable to initialize due to invalid secret key

需要下载:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 

下载解压后,把里面的jar文件上传到需要安装jce机器上的JDK或JRE的security目录下,覆盖源文件即可。
JDK:将两个jar文件也放到%JDK_HOME%\jre\lib\security下
JRE:将两个jar文件放到%JRE_HOME%\lib\security下

Windows 10上MarkdownPad2无法预览


最近电脑系统升级windows 10 打开 MarkdownPad2无法预览,之前也遇到这种问题,现在总结整理记录


Windows10上使用MarkdownPad会出现无法预览的情况

image

从官方的说法可以看出是从 Win 8 开始就有这个问题了,解决办法就是安装 Awesomium 1.6.6 SDK. 如果还是不行就再安装 Microsoft’s DirectX End-User Runtimes (June 2010)。

image

下载安装 Awesomium 1.6.6 SDK

image

安装完成

image

重启MarkdownPad2

image

可以预览


vscode安装Markdown插件编辑使用


Shell

搭建运行环境

Shell 初体验

# 创建文件
$ touch test.sh
# chmod 修改 test.sh 权限
$ chmod 771 ./test.sh
$ ll  # 查看权限
# -rw-r--r-- 1 huapisong 197121  0 8月  13 15:57 test.sh
 # 没有修改成功
$ vi test.sh 
# 添加 头 #!/bin/bash 或 #!/bin/sh
$ chmod 771 ./test.sh
$ ll
# 修改成功
# -rwxr-xr-x 1 huapisong 197121 10 8月  13 15:56 test.sh*

关机操作

# 会立即关闭机器
shutdown -h now

# 60秒后关机
shutdown -s -t 60

重启操作

shutdown -r now
sudo reboot
这两个命令功能一样,其中shutdown -r now的-r应当就是restart的意思。

Shell 写入文件

cat 多行写入

1.cat 覆盖写入

# 语法: cat > 文件名 <<EOF, 然后把多行文字放在下面,并以EOF结束
#!/bin/bash
# start.sh

echo "___________脚本开始____________"
cat>./test.sh <<EOF
#!/bin/bash
echo "hello test.sh"
echo $RANDOM
EOF
bash ./test.sh
echo "___________脚本结束____________"

2.cat 追加写入

# 如果需要追加文本,那就变成cat>>:
# 语法: cat >> 文件名 <<EOF
#!/bin/bash
# start.sh

echo "___________脚本开始____________"
cat>>./test.sh <<EOF
#!/bin/bash
echo "hello test.sh"
echo $RANDOM
EOF
bash ./test.sh
echo "___________脚本结束____________"

3.查看写入

# 执行
$ bash start.sh
# 输出
    ___________脚本开始____________
    hello test.sh
    21312
    ___________脚本结束____________

# 查看生成的文件
$ cat ./test.sh
# 输出

    #!/bin/bash
    echo "hello test.sh"
    echo 21312

echo 输出重定向写入

1.echo > 覆盖写入

# 输出重定向
echo echo "输出重定向"> test1.sh

2.echo >> 追加写入

# 输出追加重定向
echo echo "输出追加重定向" >> test1.sh

Sort 命令常用相关选项

选项 说明
-c 会检查文件顺序是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,然后返回1
-k 指定排序的列数
-b 忽略每一行前面所有的空白行,从第一个可见的字符开始比较
-f 将小写字母都转换成大写字母进行排序
-r 反转降序
-u 去除重复行
-o 输出命名,重定向
-n 按字符来排序
-t 指定分隔符
-M 以月份排序

uniq命令的作用

选项 说明
-c/–count 在每列旁边显示除改行重复出现的次数
-d/–repeated 仅显示重复出现的行列
-s<字符位置> 忽略比较指定的字符
-u/–unique 仅显示只有一次,不重复的行列
-w<字符位置> 指定要比较的字符

join命令的作用

选项 说明
-a FILENAME FILENAME表示第几个文件,-a1表示第一个文件,-a2表示第二个文件
-e EMPTY 若在FILE1与FILE2找不到指定的栏位,则在输出中填入-e选定的字符串
-i,–ignore-case 比较时忽略大小写差异
-o FORMAT 按照指定的格式显示结果
-v FILENUM -v 1表示只显示FILE1中与FILE2中没有相同栏位的行;
-v 2表示只显示FILE2中与FILE1中没有相同栏位的行:
-t CHAR 使用栏位的分隔符
-1 FIELD 链接FILE1指定的栏位
-j FIELD 等价与-1 FIELD -2 FIELD
# 重复输出
sort test.txt | uniq -d 

加密算法

优缺点

"DES":   数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用费而使用。1977年被美国政府正式采纳。

"AES":   高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

优点:“DES”:运算速度快,资源消耗较少;“AES”:运算速度快,安全性高,资源消耗少

缺点:“DES”:安全性低

DES算法缺点:

1、分组比较短。

2、密钥太短。

3、密码生命周期短。

4、安全性低。

AES算法优点:

1、运算速度快。

2、 对内存的需求非常低,适合于受限环境。

3、分组长度和密钥长度设计灵活。

4、 AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。

5、 AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能破解的。

6、很好的抵抗差分密码分析及线性密码分析的能力。

vscode vue 用户代码片段

1.打开vscode 设置-用户代码片段-vue 模板

image
image

vue.json 配置信息如下

{    "Print to console": {
        "prefix": "vue",
        "body": [
            "<!-- $1 -->",
            "<template>",
            "<div class='$2'>$5</div>",
            "</template>",
            "",
            "<script>",
            "//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)",
            "//例如:import 《组件名称》 from '《组件路径》';",
            "",
            "export default {",
            "//import引入的组件需要注入到对象中才能使用",
            "components: {},",
            "data() {",
            "//这里存放数据",
            "return {",
            "",
            "};",
            "},",
            "//监听属性 类似于data概念",
            "computed: {},",
            "//监控data中的数据变化",
            "watch: {},",
            "//方法集合",
            "methods: {",
            "",
            "},",
            "//生命周期 - 创建完成(可以访问当前this实例)",
            "created() {",
            "",
            "},",
            "//生命周期 - 挂载完成(可以访问DOM元素)",
            "mounted() {",
            "",
            "},",
            "beforeCreate() {}, //生命周期 - 创建之前",
            "beforeMount() {}, //生命周期 - 挂载之前",
            "beforeUpdate() {}, //生命周期 - 更新之前",
            "updated() {}, //生命周期 - 更新之后",
            "beforeDestroy() {}, //生命周期 - 销毁之前",
            "destroyed() {}, //生命周期 - 销毁完成",
            "activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发",
            "}",
            "</script>",
            "<style lang='scss' scoped>",
            "//@import url($3); 引入公共css类",
            "$4",
            "</style>"
        ],
        "description": "Log output to console"
    }
}

测试

新建test.vue 文件 输入 ‘vue’ 选择配置的vue用户代码片段,如下

image
image

js 导出 excel

使用 js-export-excel 导出

github

扩展使用(添加二级标题, 合并单元格)

修改 js-export-excel.js

// # 添加二级标题 
workbook: {
    SheetNames: [],
    Sheets: {},
    merges: [],
    sheetHeaderSecond: [],
}, 
// # 在标题下一行添加
let sheetHeaderSecond= _options.sheetHeaderSecond || data.sheetHeaderSecond;
if (sheetHeaderSecond && sheetHeaderSecond.length > 0) {
    sheetData.unshift(sheetHeaderSecond);
}
// 添加合并规则
if (!ws['!merges']) ws['!merges'] = [];
let merge = (_options.merges || data.merges) || [];
// ws['!merges'].push(merge);
ws['!merges'] = merge;

具体使用

import ExportJsonExcel from"@/common/js-export-excel";
//  sheetHeaderSecond: ['二级标题', '二级标题', '二级标题', '二级标题', '二级标题','二级标题' ],
itemContent= {
  sheetData: sheetData,
  sheetName: sheetName,
  merges: [{ s: {r:1, c:1}, e: {r:1, c:6} }], // 合并
  sheetHeaderSecond:sheetHeaderSecond, // 二级标题
  sheetFilter:filterData,
  sheetHeader:headerData // 一级标题
};

option.datas.push(itemContent);
let toExcel = new ExportJsonExcel(option);
toExcel.saveExcel();

js

日期

1
2
3
4
# 前一月
new Date(new Date().setMonth(new Date().getMonth() -1 )).getFullYear() + '-' + (new Date(new Date().setMonth(new Date().getMonth() - 1)).getMonth() + 1)
# 前一天
new Date(new Date()-24*60*60*1000)

函数防抖

函数防抖(debounce):触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。

  • 实现方式:每次触发事件时设置一个延迟调用方法,并且取消之前的延时调用方法
  • 缺点:如果事件在规定的时间间隔内被不断的触发,则调用方法会被不断的延迟
1
2
3
4
5
6
7
8
9
10
11
12
13
function debounce (fn, wait){
var timer = null;
return function(){
if(timer !== null){
clearTimeout(timer);
}
timer = setTimeout(fn,wait);
}
}
function handle(){
console.log(Math.random());
}
window.addEventListener("scroll",debounce(handle,1000));

函数节流

函数节流(throttle):高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。

  • 实现方式:每次触发事件时,如果当前有等待执行的延时函数,则直接return
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//节流throttle代码:
function throttle(fn,delay) {
let canRun = true; // 通过闭包保存一个标记
return function () {
// 在函数开头判断标记是否为true,不为true则return
if (!canRun) return;
// 立即设置为false
canRun = false;
// 将外部传入的函数的执行放在setTimeout中
setTimeout(() => {
// 最后在setTimeout执行完毕后再把标记设置为true(关键)表示可以执行下一次循环了。
// 当定时器没有执行的时候标记永远是false,在开头被return掉
fn.apply(this, arguments);
canRun = true;
}, delay);
};
}
function sayHi(e) {
console.log('节流:', e.target.innerWidth, e.target.innerHeight);
}
window.addEventListener('resize', throttle(sayHi,500));

反转

‘1234567’.split(‘’).reverse().join(‘’)

markdown 文档中自动生成目录的方式

markdown 文档中自动生成目录的方式

一、有道自动生成

在文章开始地方输入[toc],即可在对应位置插入目录

二、npm 语法生成

全局安装doctoc插件

npm install doctoc -g

执行

doctoc demo.md

文件,即可在文档中自动生成目录

三、两种方式的优缺点

1.有道生成目录

优点是:简单快捷,

缺点是:直接生成文字目录,没有生成相应的目录连接

2.npm doctoc生成目录

优点:生成了相应的目录连接(例如:文章段落一有地方要跳转到段落二,这时候有目录链接就很方便的完成跳转了)

缺点:依赖npm

vue 一点点

VUE

Vue.js 是什么

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
api

兼容性

Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。

image

指令

[v-text](https://cn.vuejs.org/v2/api/ ##v-text)
[v-html](https://cn.vuejs.org/v2/api/ ##v-html)
[v-show](https://cn.vuejs.org/v2/api/ ##v-show)
[v-if](https://cn.vuejs.org/v2/api/ ##v-if)
[v-else](https://cn.vuejs.org/v2/api/ ##v-else)
[v-else-if](https://cn.vuejs.org/v2/api/ ##v-else-if)
[v-for](https://cn.vuejs.org/v2/api/ ##v-for)
[v-on](https://cn.vuejs.org/v2/api/ ##v-on)
[v-bind](https://cn.vuejs.org/v2/api/ ##v-bind)
[v-model](https://cn.vuejs.org/v2/api/ ##v-model)
[v-slot](https://cn.vuejs.org/v2/api/ ##v-slot)
[v-pre](https://cn.vuejs.org/v2/api/ ##v-pre)
[v-cloak](https://cn.vuejs.org/v2/api/ ##v-cloak)
[v-once](https://cn.vuejs.org/v2/api/ ##v-once)

Vue 实例

new Vue({

el:’ ##app’,

data:{},

computed:{},

methods:{},

watch:{},
mounted:{},

directives:{},

components:{},

filters:{}
})

$ npm install -g vue-cli
$ vue init webpack my-project
$ cd my-project
$ npm install
$ npm run dev
$ npm run build
$ npm run unit
$ npm run e2e

$ vue init webpack#develop my-project
$ vue init username/repo my-project

Documentation can be found at https://vuejs-templates.github.io/webpack

netstat 查看端口占用情况

netstat 命令详解

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

该命令的一般格式为

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]

选项

# 命令中各选项的含义如下:
  -a            显示所有连接和侦听端口。
  -b            显示在创建每个连接或侦听端口时涉及的可执行程序。
                在某些情况下,已知可执行程序承载多个独立的
                组件,这些情况下,显示创建连接或侦听端口时涉
                及的组件序列。此情况下,可执行程序的名称
                位于底部[]中,它调用的组件位于顶部,直至达
                到 TCP/IP。注意,此选项可能很耗时,并且在您没有
                足够权限时可能失败。
  -e            显示以太网统计。此选项可以与 -s 选项结合使用。
  -f            显示外部地址的完全限定域名(FQDN)。
  -n            以数字形式显示地址和端口号。
  -o            显示拥有的与每个连接关联的进程 ID。
  -p proto      显示 proto 指定的协议的连接;proto 可以是下列任
                何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选
                项一起用来显示每个协议的统计,proto 可以是下列任
                何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP
                或 UDPv6。
  -r            显示路由表。
  -s            显示每个协议的统计。默认情况下,显示
                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6
                的统计;-p 选项可用于指定默认的子网。
  -t            显示当前连接卸载状态。
  interval      重新显示选定的统计,各个显示间暂停的间隔秒数。
                按 CTRL+C 停止重新显示统计。如果省略,则 netstat
                将打印当前的配置信息一次。

列标题

Name            接口的名字
Mtu             接口的最大传输单位
Net/Dest        接口所在的网络
Address         接口的IP地址
Ipkts           接收到的数据包数目
Ierrs           接收到时已损坏的数据包数目
Opkts           发送的数据包数目
Oeers           发送时已损坏的数据包数目
Collisions      由这个接口所记录的网络冲突数目

常见状态

# 即连接状态。在原模式中没有状态,在用户数据报协议中也经常没有状态,于是状态列可以空出来。若有状态,通常取值为:
LISTEN          侦听来自远方的TCP端口的连接请求
SYN-SENT        在发送连接请求后等待匹配的连接请求
SYN-RECEIVED    在收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED     代表一个打开的连接
FIN-WAIT-1      等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2      从远程TCP等待连接中断请求
CLOSE-WAIT      等待从本地用户发来的连接中断请求
CLOSING         等待远程TCP对连接中断的确认
LAST-ACK        等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT       等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED          没有任何连接状态

命令示例

# window
netstat

活动连接

协议    本地地址               外部地址                状态
TCP    10.43.22.175:445       WIN-FLOHTHI4JEE:52946  ESTABLISHED
TCP    10.43.22.175:445       WIN-FLOHTHI4JEE:55759  ESTABLISHED
TCP    10.43.22.175:445       WIN-FLOHTHI4JEE:58502  ESTABLISHED
TCP    10.43.22.175:445       WIN-FLOHTHI4JEE:65469  ESTABLISHED
TCP    10.43.22.175:49244     115.239.210.27:https   ESTABLISHED
TCP    10.43.22.175:49280     ec2-52-26-166-58:https  ESTABLISHED
TCP    10.43.22.175:49286     ec2-52-26-166-58:https  ESTABLISHED
TCP    10.43.22.175:49309     115.239.210.27:https   ESTABLISHED
TCP    10.43.22.175:49317     115.239.210.27:https   ESTABLISHED

# linux
nestat -ano

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       Timer
tcp        0      0 0.0.0.0:9400            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9401            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9091            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9092            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9093            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9094            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9096            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9097            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9098            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9300            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:8660            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:8661            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9301            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:9302            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:8662            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 10.42.0.172:7926        10.42.0.171:3306        ESTABLISHED keepalive (1249.51/0/0)
tcp        0      0 10.42.0.172:29541       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        1      0 10.42.0.172:41354       140.207.127.79:443      CLOSE_WAIT  off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29569       ESTABLISHED off (0.00/0/0)
tcp        1      0 10.42.0.172:15065       10.42.0.172:9092        CLOSE_WAIT  off (0.00/0/0)
tcp        0      0 10.42.0.172:40634       10.42.0.171:6380        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:40590       10.42.0.171:6380        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:13171       10.42.0.171:6380        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:38967       10.42.0.171:3306        TIME_WAIT   timewait (11.86/0/0)
...
...
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  3      [ ]         DGRAM                    6159     /run/systemd/notify
unix  2      [ ]         DGRAM                    6161     /run/systemd/cgroups-agent
unix  2      [ ACC ]     STREAM     LISTENING     6169     /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    6172     /run/systemd/journal/socket
unix  11     [ ]         DGRAM                    6174     /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     15465    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     9897     /run/systemd/private
unix  2      [ ]         DGRAM                    16559    /var/run/chrony/chronyd.sock
unix  2      [ ]         DGRAM                    9913     /run/systemd/shutdownd
unix  2      [ ACC ]     SEQPACKET  LISTENING     9922     /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     9943     /run/lvm/lvmetad.socket
unix  2      [ ACC ]     STREAM     LISTENING     15080    /var/run/vmware/guestServicePipe
unix  2      [ ACC ]     STREAM     LISTENING     9978     /run/lvm/lvmpolld.socket
unix  3      [ ]         STREAM     CONNECTED     10197
unix  2      [ ]         STREAM     CONNECTED     34959351

查看端口为8080的情况

1
2
# windows
netstat -ano |grep 8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 59932 TCP 10.43.22.175:53227 183.3.235.67:8080 ESTABLISHED 5280
1
2
# linux
netstat -ano |grep 8660

输出

tcp        0      0 0.0.0.0:8660            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 10.42.0.172:29541       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29569       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29345       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29407       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29595       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        1      0 10.42.0.172:25839       10.42.0.172:8660        CLOSE_WAIT  off (0.00/0/0)
tcp        0      0 10.42.0.172:29523       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29583       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.182:16848       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29565       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29395       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29345       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29467       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29595       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29339       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29467       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29581       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29407       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29571       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29571       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29523       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.182:16844       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29325       TIME_WAIT   timewait (8.36/0/0)
tcp        0      0 10.42.0.172:29583       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29581       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29565       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29339       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29395       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29393       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29499       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29499       ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29393       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:29569       10.42.0.172:8660        ESTABLISHED off (0.00/0/0)
tcp        0      0 10.42.0.172:8660        10.42.0.172:29541       ESTABLISHED off (0.00/0/0)

被占用端口对应的PID 对应的进程

1
2
# windows
tasklist|grep 8080
node.exe 8080 Console 1 11,144 K
1
2
# linux
ps -ef|grep 8660
root 4825 4749 0 13:28 pts/0 00:00:00 grep --color=auto 8660