卸载 launchctl 配置(清除保活规则)
launchctl unload ~/Library/LaunchAgents/com.iuu.frpc.plist
确认服务已卸载
launchctl list | grep com.iuu.frpc # 无输出 → 卸载成功
重新加载配置
launchctl load ~/Library/LaunchAgents/com.iuu.frpc.plist
启动
launchctl start com.iuu.frpc
停止
launchctl stop com.iuu.frpc
查看用户的
launchctl list | grep iuu
查看任务详情
launchctl list com.iuu.frpc
作者: iuu
实时监控网络流量
iftop(推荐) - 实时流量监控
iftop是一个类似 top的网络流量监控工具,可以按进程/连接实时显示网络带宽使用情况。
安装 iftop
sudo apt update
sudo apt install iftop
基本用法
sudo iftop
常用参数
参数 说明
-i <网卡>
指定监控的网卡(如 eth0、wlan0)
-n
不解析主机名(加快显示速度)
-P
显示端口号
-B
以字节(Bytes)为单位显示流量
示例:
sudo iftop -i eth0 -nP
界面说明:
上半部分:显示带宽使用情况(发送/接收)。
下半部分:按连接显示流量(IP:Port)。
排序:按 T(发送流量)、R(接收流量)、2(2秒刷新)调整。
- nload- 简单直观的流量监控
nload提供更简洁的界面,适合快速查看带宽占用。
安装 nload
sudo apt install nload
基本用法
nload
Docker搭建samba服务
Docker搭建samba服务
docker run -d \
--name docker-samba \
-e NAME="NAS" \
-e USER="iuu" \
-e PASS="iuuiuuiuu" \
-p 139:139 \
-p 445:445 \
-v /home/iuu/storage/:/storage \
--restart always \
dockurr/samba
MoonTV安装
MoonTV安装
docker run -d \
--name moontv-core \
--restart on-failure \
-p 3000:3000 \
-e USERNAME=用户 \
-e PASSWORD=密码 \
-e NEXT_PUBLIC_STORAGE_TYPE=kvrocks \
-e KVROCKS_URL=redis://moontv-kvrocks:6666 \
-e AUTH_TOKEN=7113f6e645cf82558c8e40d030e59195 \
--network moontv-network \
99fb52e42dd6
docker run -d \
--name moontv-kvrocks \
--restart unless-stopped \
--network moontv-network \
apache/kvrocks
java中的作用域
在Java中,我们经常看到public、protected、private这些修饰符。在Java中,这些修饰符可以用来限定访问作用域。
public
定义为public的class、interface可以被其他任何类访问:
package abc;
public class Hello {
public void hi() {
}
}
上面的Hello是public,因此,可以被其他包的类访问:
package xyz;
class Main {
void foo() {
// Main可以访问Hello
Hello h = new Hello();
}
}
定义为public的field、method可以被其他类访问,前提是首先有访问class的权限:
package abc;
public class Hello {
public void hi() {
}
}
上面的hi()方法是public,可以被其他类调用,前提是首先要能访问Hello类:
package xyz;
class Main {
void foo() {
Hello h = new Hello();
h.hi();
}
}
private
定义为private的field、method无法被其他类访问:
package abc;
public class Hello {
// 不能被其他类调用:
private void hi() {
}
public void hello() {
this.hi();
}
}
实际上,确切地说,private访问权限被限定在class的内部,而且与方法声明顺序无关。推荐把private方法放到后面,因为public方法定义了类对外提供的功能,阅读代码的时候,应该先关注public方法:
package abc;
public class Hello {
public void hello() {
this.hi();
}
private void hi() {
}
}
由于Java支持嵌套类,如果一个类内部还定义了嵌套类,那么,嵌套类拥有访问private的权限:
// private
public class Main {
public static void main(String[] args) {
Inner i = new Inner();
i.hi();
}
// private方法:
private static void hello() {
System.out.println("private hello!");
}
// 静态内部类:
static class Inner {
public void hi() {
Main.hello();
}
}
}
定义在一个class内部的class称为嵌套类(nested class),Java支持好几种嵌套类。
protected
protected作用于继承关系。定义为protected的字段和方法可以被子类访问,以及子类的子类:
package abc;
public class Hello {
// protected方法:
protected void hi() {
}
}
上面的protected方法可以被继承的类访问:
package xyz;
class Main extends Hello {
void foo() {
// 可以访问protected方法:
hi();
}
}
package
最后,包作用域是指一个类允许访问同一个package的没有public、private修饰的class,以及没有public、protected、private修饰的字段和方法。
package abc;
// package权限的类:
class Hello {
// package权限的方法:
void hi() {
}
}
只要在同一个包,就可以访问package权限的class、field和method:
package abc;
class Main {
void foo() {
// 可以访问package权限的类:
Hello h = new Hello();
// 可以调用package权限的方法:
h.hi();
}
}
注意,包名必须完全一致,包没有父子关系,com.apache和com.apache.abc是不同的包。
局部变量
在方法内部定义的变量称为局部变量,局部变量作用域从变量声明处开始到对应的块结束。方法参数也是局部变量。
package abc;
public class Hello {
void hi(String name) { // 1
String s = name.toLowerCase(); // 2
int len = s.length(); // 3
if (len < 10) { // 4
int p = 10 - len; // 5
for (int i=0; i<10; i++) { // 6
System.out.println(); // 7
} // 8
} // 9
} // 10
}
我们观察上面的hi()方法代码:
方法参数name是局部变量,它的作用域是整个方法,即1 ~ 10;
变量s的作用域是定义处到方法结束,即2 ~ 10;
变量len的作用域是定义处到方法结束,即3 ~ 10;
变量p的作用域是定义处到if块结束,即5 ~ 9;
变量i的作用域是for循环,即6 ~ 8。
使用局部变量时,应该尽可能把局部变量的作用域缩小,尽可能延后声明局部变量。
final
Java还提供了一个final修饰符。final与访问权限不冲突,它有很多作用。
用final修饰class可以阻止被继承:
package abc;
// 无法被继承:
public final class Hello {
private int n = 0;
protected void hi(int t) {
long i = t;
}
}
用final修饰method可以阻止被子类覆写:
package abc;
public class Hello {
// 无法被覆写:
protected final void hi() {
}
}
用final修饰field可以阻止被重新赋值:
package abc;
public class Hello {
private final int n = 0;
protected void hi() {
this.n = 1; // error!
}
}
用final修饰局部变量可以阻止被重新赋值:
package abc;
public class Hello {
protected void hi(final int t) {
t = 1; // error!
}
}