0%

android 简单操作

自动下载歌曲

  1. you-get 下载视频
  2. 通过ffmpeg获取音频
    1
    2
    3
    4
    5
    6
    7
    8
    filename=$1
    url=$2

    you-get -O ${filename} ${url}

    ffmpeg -i ${filename}.mp4 ${filename}.mp3

    echo "download "${filename}".mp3"
  3. 通过adb push放置到安卓设备
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ipHost=$1
    file=$2

    echo "connect phone:"${ipHost}

    adb connect ${ipHost}

    if [ -z ${file} ];
    then
    adb push *.mp3 /sdcard/fmzh
    else
    adb push ${file} /sdcard/fmzh
    fi

电脑连接手机

  1. android开启远程调试;通过adb connect进行连接

    1
    2
    3
    4
    5
    6
    7
    8
    for (( i=400000; i<=65536; i++))
    do
    echo $i
    adb connect 192.168.31.31:$i
    done

    使用配对码连接
    adb pair 192.168.31.31:41267
  2. 通过手机安装Termux ssh **

    1
    2
    3
    4
    5
    6
    sshd
    whoami
    passwd

    ssh u0_a311@192.168.31.31 -p 8022
    cd /storage/shared/fmzh

语言助手

  • 需要硬件
  • 天猫精灵、Siri、小爱同学语音助手api开发

附件

  1. termux 下载地址

混沌工程

对于磁盘io、cpu高负载、强弱依赖、高并发等复杂线上环境,提供故障复现,以便快速定位故障、解决故障

示例工程

  1. chaosblade 命令行使用
  2. chaosblade-box 包含web界面,功能展示

docker工程里blade版本较低,建议使用github发布的版本,进行测试

环境要求

  1. k8s
  2. 同城、异地容灾
  3. 微服务强弱依赖

实际操作

实际操作要求

  1. 安装ansible
  2. 安装expect
  3. 通过ssh-keygen生成public key
  4. 安装jdk1.8
  5. 安装探针

存在问题

  1. 不同主机,不能远程处理
  2. docker安装,对于宿主主机如何处理

参考

  1. chaosblade 官网
  2. AHAS 商业开源功能对比
  3. chaosblade github地址
  4. chaosblade介绍

docker-compose 处理

安装

1
2
3
4
5
6
7
8
9
10
11
12
uname -s
uname -m
https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-Linux-x86_64

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

## 检查版本
docker-compose version

使用

1
2
3
4
5
6
7
8
9
10
docker-compose up -d

docker-compose -f /root/soft/docker/rocketmq/docker-compose.yml up -d

docker-compose start

docker-compose stop

# 赋权
chown -R 3000:3000 ./

参考

  1. docker compose github地址
  2. docker compose 安装
  3. docker compose 命令使用

开发工具

phpmyadmin

1
2
3
docker pull phpmyadmin

docker run --name myadmin -d -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin:latest

dbgate

1
2
3
docker pull dbgate/dbgate

docker run -d -p 6688:80 -p 3000:3000 --name dbgate dbgate/dbgate

docker 传参

dockerfile

1
2
3
4
5
6
7
FROM fmzh/cqguide:v1.0.0

ENV domain=".appdlwebs.com"

EXPOSE 80

CMD chmod +x /usr/share/nginx/startGuide.sh && sh /usr/share/nginx/startGuide.sh ${domain} && nginx -g 'daemon off;'

docker run

1
2
docker build -t cqguide . 
docker run --name cqguide -e domain=".dlios.cc" -p 9988:80 -d cqguide

注意

  • ENV 变量可以在实例运行时传入

  • AVG 为在镜像生成时使用

    1
    docker build --build-arg JAR_FILE=build/libs/*.jar -t myorg/myapp .
  • RUN 执行一个命令,即在镜像加一层,创建实例时不会再执行

  • CMD 实例启动时执行的命令,以最后一条为准

  • ENTRYPOINT 实例启动时执行的命令,以最后一条为准

apijson 部署

镜像创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 找不到java命令
cd /usr/sbin/
ln -s /root/soft/jdk1.8.0_291/bin/java java


# 将历史镜像删除干净
docker commit jdk1.8 fmzh/jdk1.8-cst
docker image build -t fmzh/apijson .
docker run --name apijson -p 8080:8080 -d fmzh/apijson
docker exec -it apijson bash

docker run --name apijson -p 8080:8080 -v /Volumes/T7/project/project_foxhello/apijsonboot-multidatasource/docker/upload:/root/app/upload -d fmzh/apijson


docker run -e JAVA_TOOL_OPTIONS="-Dapijson.debug=false" --name apijson -p 8080:8080 -v /Volumes/T7/project/project_foxhello/apijsonboot-multidatasource/docker/upload:/root/app/upload -v /Volumes/T7/project/project_foxhello/apijsonboot-multidatasource/docker/application.yml:/root/app/application.yml -d fmzh/apijson

docker logs -f apijson

# 查看系统语言
locale

# 日志乱码

镜像上传

1
2
3
4
docker tag fmzh/apijson fmzh/apijson:v1.0.0
docker push fmzh/apijson:v1.0.0

docker push fmzh/apijson

镜像版本规划

1
2
3
先提交版本号版本,再发布最新版本

docker tag时 如果别名存在, 原来的镜像会变成none名称

参考

  1. docker 更新并保存历史版本

远程开发

可以减少硬盘要求、数据集中存放,便于服务器调试,了解服务器部署,但是要求网络稳定

vs code

1
读取config,远程安装code,但是java工程,在git使用时,没法使用本地,只能使用code插件,不好用

idea remote

1
配置ssh, 下载idea,激活验证码(远程激活失败、占用cache 6g)

remote jvm debug

1
2
java 程序添加参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

mac sshfs

brew install Caskroom/cask/osxfuse

brew install sshfs

1
2
3
4
5
6
7
8
9
10
11
brew install --cask macfuse
brew install gromgit/fuse/sshfs-mac
brew link --overwrite sshfs-mac

mkdir ~/remote

sshfs foxhello-home:/home/fmzh/project ~/remote

ls ~/remote

umount ~/remote

参考

  1. sshfs 安装

域名映射 frp不占用80、443

frp结合nginx处理

frp 配置文件

server 配置

1
2
3
4
5
6
7
8
9
[common]
bind_port = 10500
token = 123456
vhost_http_port = 10580
dashboard_addr = 0.0.0.0
dashboard_port = 10599

dashboard_user = admin
dashboard_pwd = 123456

client 配置

1
2
3
4
5
6
7
8
9
10
[common]
server_addr = 8.8.8.8
server_port = 10500
token = 123456

[web-gitlab]
type = http
local_ip = 192.168.3.31
local_port = 80
custom_domains = gitlab.foxhello.com

nginx 配置文件

nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# 服务器端管理后台
server {
listen 80;
server_name foxhello.com www.foxhello.com;
return 301 https://$host$request_uri;


# location / {
# proxy_pass http://127.0.0.1:7999;
# proxy_set_header Host $host:80;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_hide_header X-Powered-By;
#
# root /var/www/build;
# index index.html;
# }
}

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

# 代理http web
server {
listen 80;
server_name *.foxhello.com;
return 301 https://$host$request_uri;

# location / {
# proxy_pass http://127.0.0.1:10580;
# proxy_set_header Host $host:80;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_hide_header X-Powered-By;
#
# client_max_body_size 2048m;
#
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection $connection_upgrade;
# }
}

# 如果启用SSL
server {
listen 443 ssl;
server_name foxhello.com www.foxhello.com;

# ssl on;
ssl_certificate /etc/nginx/ssl/foxhello.com/foxhello.com.crt;
ssl_certificate_key /etc/nginx/ssl/foxhello.com/foxhello.com.key;
ssl_prefer_server_ciphers on;
ssl_session_timeout 60m;

location / {
root /var/www/build;
index index.html;
}
}

server {
listen 443 ssl;
server_name *.foxhello.com;

# ssl on;
ssl_certificate /etc/nginx/ssl/foxhello.com/foxhello.com.crt;
ssl_certificate_key /etc/nginx/ssl/foxhello.com/foxhello.com.key;
ssl_prefer_server_ciphers on;
ssl_session_timeout 60m;

location / {
proxy_pass http://127.0.0.1:10580;
# proxy_set_header Host $host:80;
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;

client_max_body_size 2048m;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}