Skip to content

博客

Markdown小技巧

记录Markdown的使用小技巧

使用下面的方式显示图片时,会使用图片的本身的尺寸来显示图片:

![](https://github.com/kubernetes/minikube/raw/master/logo/logo.png)

这种方式无法修改图片的显示大小,可以使用在Markdown中HTML,来指定图片大小:

<img src="https://github.com/kubernetes/minikube/raw/master/logo/logo.png" width="200"/>

或者通过 style属性来设置:

<img src="https://github.com/kubernetes/minikube/raw/master/logo/logo.png" style="width:200px;"/>

位置:靠左、靠右、居中

  • 靠左
<p>
<img align="left" width="200" height="200" src="https://github.com/kubernetes/minikube/raw/master/logo/logo.png">
</p>
  • 靠右
<p>
<img align="right" width="200" height="200" src="https://github.com/kubernetes/minikube/raw/master/logo/logo.png">
</p>
  • 居中
<p align="center">
<img width="200" height="200" src="https://github.com/kubernetes/minikube/raw/master/logo/logo.png">
</p>

在生成静态博客时,可以通过CSS的方式进行控制

css

p>img[alt$=">"] {
float: right;
}
p>img[alt$="<"] {
float: left;
}
p>img[alt$="<>"] {
display: block;
max-width: 100%;
height: auto;
margin: auto;
float: none !important;
}
![<](https://github.com/kubernetes/minikube/raw/master/logo/logo.png)
![>](https://github.com/kubernetes/minikube/raw/master/logo/logo.png)
![<>](https://github.com/kubernetes/minikube/raw/master/logo/logo.png)

Iproute2

现在,绝大多数 Linux 发行版和绝大多数 UNIX 都使用古老的 arp, ifconfig 和route 命令。虽然这些工具能够工作,但它们在 Linux2.2 和更高版本的内核上显得有一些落伍。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2。

作为网络配置工具的一份子,iproute2的出现旨在从功能上取代net-tools。net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。抛开性能而言,iproute2的用户接口比net-tools显得更加直观。比如,各种网络资源(如link、IP地址、路由和隧道等)均使用合适的对象抽象去定义,使得用户可使用一致的语法去管理不同的对象。

iproute2 工具集包含以下命令行程序 : ip, ss, bridge, rtacct, rtmon, tc, ctstat, lnstat, nstat, routef, routel, rtstat, tipc, arpd, devlink。

下面是替换对照表:

net-tools(被废弃)iproute2备注
ifconfigip addr, ip link, ip -s地址和链路配置
routeip route路由表
arpip neighNeighbors
iptunnelip tunnel隧道
nameififrename, ip link set nameRename network interfaces
ipmaddrip maddr组播
netstatip -s, ss, ip route统计
  1. https://www.lartc.org/LARTC-zh_CN.GB2312.pdf
  2. Linux 使用ss命令代替 netstat
  3. iproute2 对决 net-tools
  4. https://en.wikipedia.org/wiki/Iproute2

ss

ss命令用来获取socket的统计信息, 显示的信息同netstat显示。 但ss可以显示更多的TCP和连接状态信息。ss直接从Linux内核中获取信息,效率并netstat更高。

常用命令选项:

Terminal window
-h, --help this message
-V, --version output version information
-n, --numeric don't resolve service names
-r, --resolve resolve host names
-a, --all display all sockets
-l, --listening display listening sockets
-o, --options show timer information
-e, --extended show detailed socket information
-m, --memory show socket memory usage
-p, --processes show process using socket
-i, --info show internal TCP information
-s, --summary show socket usage summary
-b, --bpf show bpf filter socket information
-E, --events continually display sockets as they are destroyed
-Z, --context display process SELinux security contexts
-z, --contexts display process and socket SELinux security contexts
-N, --net switch to the specified network namespace name
-4, --ipv4 display only IP version 4 sockets
-6, --ipv6 display only IP version 6 sockets
-0, --packet display PACKET sockets
-t, --tcp display only TCP sockets
-S, --sctp display only SCTP sockets
-u, --udp display only UDP sockets
-d, --dccp display only DCCP sockets
-w, --raw display only RAW sockets
-x, --unix display only Unix domain sockets
--vsock display only vsock sockets
-f, --family=FAMILY display sockets of type FAMILY
FAMILY := {inet|inet6|link|unix|netlink|vsock|help}
示例备注
ss -a查看所有连接状态
ss -au显示所有udp连接信息
ss -at显示所有的tcp连接信息
ss -l显示端口监听信息
ss -lt显示监听tcp端口连接信息
ss -lu显示监听的udp端口连接信息
ss -tun显示tcp和udp端口连接信息,且不进行hostname解析
ss -ltp显示监听tcp端口信息,并显示对应进程信息
ss -s显示socket的统计信息

参考:

Netstat

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCPUDPICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

一般格式为:

Terminal window
netstat [-AaLlnW] [-f address_family | -p protocol]

常用的命令行选项:

-l 显示当前正在监听的连接情况

-a 显示所有socket(包括正在监听的)

-c 每隔固定时间执行netstat命令

-n 以网络IP地址代替名称,显示出网络连接情形

-t 显示tcp连接情况

-u 显示udp连接情况

-r 显示核心路由表,格式同“route -e”

-i 显示所有网络接口的信息,格式“netstat -i”

-p 显示建立相关连接的程序名和PID(需要root权限)

示例备注
netstat -a显示系统中所有连接
netstat -au显示所有UDP端口
netstat -at显示所有TCP端口
netstat -l显示所有监听状态的端口
netstat -lt显示所有监听状态的TCP端口
netstat -lu显示所有监听状态的UDP端口
netstat -lx显示所有监听状态的Unix端口
netstat -r显示核心路由信息
netstat -na以网络IP地址代替名称, 显示所有连接
netstat -np显示所有连接信息,包括关联的程序名进程id信息
  1. 查找监听指定端口的进程
Terminal window
$sudo netstat -ltp | grep 8081 | awk '{print NF}'
1/sport
$sudo netstat -ltp | grep 8081
tcp 0 0 :::8081 :::* LISTEN 1/sport

Flutter初体验-VS Code环境搭建

Flutter是Fuchsia的开发框架,是一套移动UI框架,可以快速在iOS、Android以及Fuchsia上构建高质量的原生用户界面。 目前Flutter是完全免费、开源的,GitHub地址。其官方编程语言为Dart,也是一门全新的语言。Flutter Live 2018 上,Google 宣布 Flutter 1.0 正式发布。

官方介绍的特性:

  • 快速开发:Flutter的热重载可以快速地进行测试、构建UI、添加功能并更快地修复错误。

  • 富有表现力,漂亮的用户界面:自带的Material Design和Cupertino(iOS风格)widget、丰富的motion API、平滑而自然的滑动效果。

  • 响应式框架:使用Flutter的现代、响应式框架,和一系列基础widget,轻松构建您的用户界面。

  • 原生性能:Flutter包含了许多核心的widget,如滚动、导航、图标和字体等,这些都可以在iOS和Android上达到原生应用一样的性能。

https://flutter.io/docs/get-started/install/macos

声明 PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL 两个环境变量,执行如下两行命令,是为了让 Flutter 在安装过程中使用国内的镜像:

Terminal window
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

下载sdk后, 我将其解压到了/usr/local/flutter/, 将sdk添加到环境变量中

Terminal window
export PATH=/usr/local/flutter/bin:$PATH

更新环境变量

Terminal window
source ~/.zshrc

验证配置是否正确

Terminal window
flutter docter
shlock: open(/usr/local/flutter/bin/cache/shlock4177): Permission denied
shlock: open(/usr/local/flutter/bin/cache/shlock4179): Permission denied
shlock: open(/usr/local/flutter/bin/cache/shlock4181): Permission denied
shlock: open(/usr/local/flutter/bin/cache/shlock4183): Permission denied
shlock: open(/usr/local/flutter/bin/cache/shlock4185): Permission denied

修改flutter文件夹的拥有者

Terminal window
sudo chown -R $USER /usr/local/flutter

再次执行flutter doctor正常:

Terminal window
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.1 18B75, locale en-CN)
  • 启动VS Code

  • 调用View> Command Palette

  • 输入”install”, 选择Extensions: Install Extension action

  • 在搜索库输入”flutter”, 搜索结果中选择”Flutter”, 点击 “Install”

  • 选择”OK”, 重启VS Code

  • 在View>Command Palette中输入doctor, 选择”Flutter: Run Flutter Doctor”, 查看OUTPUT中的输出环境是否有问题

    配置完成!

{
"message": "Unauthorized",
"error_code": 10000, //错误代码
"status_code": 401 //401表示未授权
}