Skip to content

Index

常用docker-compose环境

数据库

mysql

  • mysql8.0
version: "3"
services:
  mysql:
    # restart: always
    restart: no
    privileged: true
    image: mysql:8.0.28
    container_name: mysql8.0
    volumes:
      - ./db:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d
      - ./logs:/logs
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_USER: "test"
      MYSQL_PASSWORD: "123456"
      MYSQL_INITDB_SKIP_TZINFO: "Asia/Shanghai"
    ports:
      - 33306:3306

redis

version: "3"
services:
  redis:
    image: redis:latest
    container_name: redis
    # restart: always
    ports:
      - "6379:6379"
    volumes:
      # - ./data/redis/conf/:/etc/redis/
      - ./data/redis/data:/data
    command: redis-server --requirepass exchangepwd --save "" --appendonly no

mongo

version: '3.1'
services:
  mongo:
    image: mongo:5.0
    restart: always
    container_name: mongov5
    ports:
      - 27017:27017
    volumes:
      - ./data:/etc/mongo
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
  mongo-express:
    image: mongo-express:0.54.0
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example

nginx

基本使用

docker-compose.yml

version: "3.3"
services:
  nginx:
    restart: always
    container_name: nginx
    image: nginx:alpine
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      # 放静态网页
      - ./htmls:/usr/share/nginx/htmls
      - ./log:/var/log/nginx
      # conf.d文件下必须要有 default.conf
      - ./conf/conf.d:/etc/nginx/conf.d

常用

  1. 时区问题 一般用东 8 区
  2. 网络问题 一般用 host 网络,如果业务有网络重定向的需求,跳转到其他业务
version: "3.3"
services:
  nginx:
    restart: always
    container_name: nginx
    image: nginx:alpine
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      - ./htmls:/usr/share/nginx/htmls
      - ./log:/var/log/nginx
      - ./conf/conf.d:/etc/nginx/conf.d
    network_mode: host

intellij 使用,对标 vscode操作

操作篇

文本操作

opt 说明
ctrl + 左右 关闭快速移动到词头尾
ctrl + shift + 左右 关闭快速选择一个词
ctrl + shift + L 快速选择鼠标所在的词, 包含文档中所有相同的词
  • 段 | opt | 说明 | |---|---| | ctrl + F2 | 选中了一段之后执行此快捷键,会选出所有相同的元素 |

  • opt 说明
    ctrl + L 快速选择当前行, 一般会和其他快捷键冲突,建议修改为 ctrl + alt + L
    ctrl + D 复制一行到下一行
    shift + Enter 新增下一行为空白行

问题汇总

goland 显示 Unresolved type xxxxxx

插件

PasteImageIntoMarkdown

支持相对路径插入,默认的插件粘贴图片是在同级目录

搭建完美vscode环境

操作篇

文本操作

opt 说明
ctrl + 左右 关闭快速移动到词头尾
ctrl + shift + 左右 关闭快速选择一个词
ctrl + shift + L 快速选择鼠标所在的词, 包含文档中所有相同的词
  • 段 | opt | 说明 | |---|---| | ctrl + F2 | 选中了一段之后执行此快捷键,会选出所有相同的元素 |

  • opt 说明
    ctrl + L 快速选择当前行, 一般会和其他快捷键冲突,建议修改为 ctrl + alt + L
    alt + shift + 上下 复制一行到上一行或下一行

配置篇

  • 常用配置
{
    // "terminal.integrated.profiles.windows": {
    //     // ...
    //     "Git Bash": {
    //         "source": "Git Bash",
    //         "path": "E:\\apps\\Git\\bin\\bash.exe"
    //     }
    // },
    "terminal.integrated.defaultProfile.windows": "Git Bash",
    // 配置此项,保证windows 环境和 linux 环境 换行符一致
    "files.eol": "\n",
    // 保证编辑文本时,左侧explore 不要跟着动, 这样配合 快捷键绑定(2) 中操作,左侧就不会跳来跳去了,又非常好找代码
    "explorer.autoReveal": false
}
  • 快捷键绑定
id option 说明 binding key
1 Switch Window 切换窗口 ctrl + shift + i
2 Reveal Active Key 显示当前文件所在目录 ctrl + alt + i

其他

代理配置

// 不要写成 http://127.0.0.1:7890, 否则有些走代理会出现错误
"terminal.integrated.env.linux": {
    "http_proxy": "127.0.0.1:7890",
    "https_proxy": "127.0.0.1:7890"
},

markdown 图片复制

vscode 1.79 版支持在markdown 中直接粘贴图片,不用再担心本机、wsl或remote环境的markdown图片配置问题了^[https://juejin.cn/post/7244809769794289721]

我的配置参考:

"markdown.copyFiles.destination": {
    // 将复制的图片放入根目录下的imgs文件夹中
    "**/*": "${documentWorkspaceFolder}/imgs/"
}

插件篇

根据路径跳转到文件

https://marketplace.visualstudio.com/items?itemName=rexebin.f12-open-file

  • 主要用于在注释中跳转到对应文件,相当好用

golang chromeDp 使用

借助谷歌开发者工具协议(CDP,Chrome DevTools Protocol)远程与浏览器交互

在Go中实现了Chrome DevTools协议的知名第三方库是 chromedp

linux 界面搭建 chromeDp 环境

docker-compose 搭建 headless-shell

version: '3.1'
services:
  chrome:
    image: chromedp/headless-shell:latest
    ports:
      - "9222:9222"

获取信息

curl localhost:9222/json/version
{
   "Browser": "Chrome/114.0.5735.199",
   "Protocol-Version": "1.3",
   "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.199 Safari/537.36",
   "V8-Version": "11.4.183.25",
   "WebKit-Version": "537.36 (@581ada08cf738a4eb44f712c6f8cd40030e5c1a0)",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/browser/5b3453d9-d437-4d7d-8f23-633d10b96a15"
}

golang 使用

func main() {
    // arg : ws://url:9222/

    c, cancel := chromedp.NewRemoteAllocator(context.Background(), os.Args[1])
    defer cancel()

    ctx, cancel2 := chromedp.NewContext(c)
    defer cancel2()

    ... // logic
}

vscode wsl2

环境变量问题

windows 和 wsl2 环境冲突

同时使用 nvs

屏蔽 windows nvs环境路径, 在 ~/.bashrc 中设置如下, {user} 替换为windows系统的用户名

export PATH=$(echo $PATH | sed -e 's;:/mnt/c/Users/{user}/AppData/Local/nvs/default;;' -e 's;:/mnt/c/Users/{user}/AppData/Local/nvs/;;')
同时使用 npm公共库路径名

最好配置时与windows 配置名区分, 如下如果同时配置了 .npm-global 名称则需要屏蔽掉windows 的名称

export PATH=$(echo $PATH | sed -e 's;:/mnt/c/Users/{user}/.npm-global/bin:/mnt/c/Users/{user}/.npm-global;;')

在wsl2中 禁止继承windows 环境变量

在 /etc/wsl.conf 中设置

[interop]
enabled=false
appendWindowsPath=false

但这样有些 windows 命令不能使用,可以将其加入到 path环境变量中, 常用的有以下

# 包含 explore.exe 命令
/mnt/c/Windows  

各文件启动顺序

~/.bashrc  vscode 终端会默认加载一次
/etc/profile    vscode 调试模块会加载一次此相关的环境变量,但这个必须重启wsl

vscode c++配置

vscode debug配置

调试c++项目配置

launch.json配置

"version": "0.2.0",
"configurations": [
    {
        "name": "C++ Debug",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/dist/${relativeFileDirname}/${fileBasenameNoExtension}",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "preLaunchTask": "build",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    }
]

tasks.json

{
    "tasks": [
        {
            "label": "mkdir",
            "type": "shell",
            "command": "mkdir",
            "args": [
                "-p",
                "${workspaceFolder}/dist/${relativeFileDirname}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "build",
            "type": "shell",
            "command": "g++", // 或者你用的其他 C++ 编译器的命令
            "args": [
                "-g",
                "${relativeFileDirname}/*.cpp",
                "-o",
                "${workspaceFolder}/dist/${relativeFileDirname}/${fileBasenameNoExtension}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "dependsOn": "mkdir"
        }
    ],
    "version": "2.0.0"
}

配置括号位置

{
    "C_Cpp.clang_format_style": "{ BasedOnStyle: Chromium, IndentWidth: 4}",
}

plantuml常用汇总

linux 上中文文字层叠现象

ubuntu

sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy

centos

sudo yum install -y wqy-microhei-fonts
sudo yum install -y adobe-source-han-sans-cn-fonts

测试

400. PlantUML 1.2025.3beta4[From string (line 3) ] @startuml<style>root {--common-background: #f1f1f1;--note-background: #FEFFDD;...... ( skipping 485 lines )...BackgroundColor: var(--grey-blue);FontSize 12}server {FontSize 12}group {FontSize 12BackGroundColor #e7e7e7}arrow {FontSize 11}} .person, .system, .container, .component, .external_person, .external_system, .external_container {HorizontalAlignment center}</style>listfonts 你好Syntax Error? (Assumed diagram type: sequence)
400. PlantUML 1.2025.3beta4[From string (line 3) ] @startuml<style>root {FontName SansSerif  HyperLinkUnderlineThickness 1...... ( skipping 548 lines )...BackGroundColor #5E5E5ELineColor #5E5E5E} .external_system {BackGroundColor #8F8F8FLineColor #8F8F8F} .external_container {BackGroundColor #8B8B8BLineColor #8B8B8B} .node {BackgroundColor transparentFontColor white}</style>listfonts 你好Syntax Error? (Assumed diagram type: sequence)

code-server 使用

共用 vscode 目录插件

code-server 安装插件自带的源很费事

可以使用远程 vscode-remote 安装好插件后再进行软连接,如下

ln -s ~/.vscode/extensions ~/.local/share/code-server/extensions

这样就很方便安装源了

vim

vim9 编译

下载最新源码,解压 有些vim插件需要用到 python3环境,所以需要编译时使用 python3, 如果已编译过可先 make uninstall卸载, 最好先 export LDFLAGS="-rdynamic" 然后再编译,否则可能找不到python3的头文件

  • 编译
make & make install
  • 配置
./configure --with-features=huge \
--enable-multibyte \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/local/lib/python3.12/config-3.12-x86_64-linux-gnu/ \
--with-python3-command=python3 \
--enable-cscope \
--enable-gui=auto \
--enable-gtk3-check \
--enable-fontset \
--enable-largefile \
--disable-netbeans \
--enable-fail-if-missing \
--prefix=/usr/local
  • make & make install

docker elasticsearch 搭建

docker-compose.yml

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.12.0
    container_name: es01
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
      - bootstrap.memory_lock=true
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=mycluster
      - node.name=es01
      - discovery.seed_hosts=es02,es03,es04
    storage_opt:
      size: '5G'
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.12.0
    container_name: es02
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
      - bootstrap.memory_lock=true
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=mycluster
      - node.name=es02
      - discovery.seed_hosts=es01,es03,es04
    storage_opt:
      size: '5G'
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.12.0
    container_name: es03
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
      - bootstrap.memory_lock=true
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=mycluster
      - node.name=es03
      - discovery.seed_hosts=es01,es02,es04
    storage_opt:
      size: '5G'
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic
  es04:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.12.0
    container_name: es04
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
      - bootstrap.memory_lock=true
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=mycluster
      - node.name=es04
      - discovery.seed_hosts=es01,es02,es03
    storage_opt:
      size: '5G'
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data04:/usr/share/elasticsearch/data
    networks:
      - elastic
  kibana7.12.0:
    image:  docker.elastic.co/kibana/kibana:7.12.0
    container_name: kibana7.12.0
    environment:
      - ELASTICSEARCH_HOSTS=http://es01:9200
    ports:
        - 5601:5601
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local
  data04:
    driver: local

networks:
  elastic:
    driver: bridge