教程:postman的平替hoppscotch,又叫postwoman,hoppscotch的docker-compose安装过程

目录

  • 1. 背景
  • 2. 前期准备
    • 2.1 准备docker-compose文件,两个版本,一个3合1,一个分开
      • 2.1.1 3合1版本(推荐)
      • 2.1.2 独立版本
    • 2.2 准备安装nginx-proxy-manager(可选)
    • 2.2 准备.env文件
      • 2.2.1 默认ip的.env
      • 2.2.2 二级域名版的.env(推荐)
  • 3. 安装
  • 4. 解决数据库迁移报错
    • 4.1 3合1版本
    • 4.2 独立版本
  • 5. 安装浏览器插件
  • 6. 配置github登录选项(可选)
  • 7. 官方相关文档

1. 背景

postman强制登录,不登录不给用,登录也就算了,还默认自动同步,这样的话就尴尬了。有些私人的接口啊,私人的账密啊,私人的token啊,真心不敢同步到别人的服务器上,把隐私安全寄托在别人的节操上。

一直在找平替,也有几家国产,现在不都喊着支持国货嘛,试用了一下,也是各种登录,各种同步,各种大版本升级,然后小版本的内容就不见了,寻寻觅觅的,可算是找到了一款开源的平替。

hoppscotch,以前还叫做postwoman,看看这个命名,想干啥懂的都懂。

看了开源代码的文档,只说了原生docker的用法,自带的docker-compose又很多坑,本科普就是把这个过程捋一遍,理论上照着做就行!

2. 前期准备

2.1 准备docker-compose文件,两个版本,一个3合1,一个分开

  • 稍微介绍一下,hoppscotch的服务容器分为4个,1个容器是api测试平台hoppscotch-frontend,端口是3000,(也就是常用的使用界面),即前台界面,如图,眼熟吧,跟postman差不多,主要使用的也是这个:
    在这里插入图片描述

  • 1个容器是后端接口hoppscotch-backend,端口是3170,没啥好说,所有核心服务都在这个里

  • 1个容器是后台管理平台hoppscotch-admin,端口是3100,如图
    在这里插入图片描述

  • 还有一个容器就是postgresql数据库了,hoppscotch不能换数据库,说是用了postgresql的什么json独有的功能,不能换mysql

2.1.1 3合1版本(推荐)

  • 推荐使用这个版本,可以直接把3个服务合成1个启动
  • 只需要确认一下容器hoppscotch-db数据库配置就行,完全可以一点不改,直接拿来就用
# To make it easier to self-host, we have a preset docker compose config that also
# has a container with a Postgres instance running.
# You can tweak around this file to match your instancesservices:# The service that spins up all 3 services at once in one containerhoppscotch-aio:container_name: hoppscotch-aioimage: hoppscotch/hoppscotchrestart: unless-stoppedenv_file:- ./.envdepends_on:hoppscotch-db:condition: service_healthyports:- "3000:3000"- "3100:3100"- "3170:3170"- "3080:80"# The preset DB service, you can delete/comment the below lines if# you are using an external postgres instance# This will be exposed at port 5432hoppscotch-db:image: postgres:15ports:- "5432:5432"volumes:- ./postgres-data:/var/lib/postgresql/dataenvironment:# The default user defined by the docker imagePOSTGRES_USER: postgres# NOTE: Please UPDATE THIS PASSWORD!POSTGRES_PASSWORD: passwordPOSTGRES_DB: hoppscotchhealthcheck:test:["CMD-SHELL","sh -c 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'",]interval: 5stimeout: 5sretries: 10

2.1.2 独立版本

  • 这个版本就是多个容器都分开了,各起各的
  • 直接在下面的docker-compose里修改成你自己版本的就行,主要就是改一下数据库连接
  • hoppscotch-backend容器里的DATABASE_URL,数据库连接,账号是postgresql默认的,可以不改,密码如果想改,要改对应的hoppscotch-db容器里的postgresql配置里的POSTGRES_PASSWORD字段,172.17.0.1这个要看你本地的docker 网络 ip(一般本地开发都用127.0.0.1,这个就是docker自己的本地开发ip,类似的),理论上应该是这个,可以通过ifconfig,找到docker0,复制列出来的ip就行
  • 其实除了172.17.0.1要确认一下是否一样,其他的都可以不改的
# To make it easier to self-host, we have a preset docker compose config that also
# has a container with a Postgres instance running.
# You can tweak around this file to match your instancesservices:# This service runs the backend app in the port 3170hoppscotch-backend:container_name: hoppscotch-backendimage: hoppscotch/hoppscotch-backendrestart: unless-stoppedenv_file:- ./.envenvironment:# Edit the below line to match your PostgresDB URL if you have an outside DB (make sure to update the .env file as well)- DATABASE_URL=postgresql://postgres:password@172.17.0.1:5432/hoppscotch?connect_timeout=300depends_on:hoppscotch-db:condition: service_healthyports:- "3180:80"- "3170:3170"# The main hoppscotch app. This will be hosted at port 3000# NOTE: To do TLS or play around with how the app is hosted, you can look into the Caddyfile for#       the SH admin dashboard server at packages/hoppscotch-selfhost-web/Caddyfilehoppscotch-frontend:container_name: hoppscotch-frontendimage: hoppscotch/hoppscotch-frontendrestart: unless-stoppedenv_file:- ./.envdepends_on:- hoppscotch-backendports:- "3080:80"- "3000:3000"# The Self Host dashboard for managing the app. This will be hosted at port 3100# NOTE: To do TLS or play around with how the app is hosted, you can look into the Caddyfile for#       the SH admin dashboard server at packages/hoppscotch-sh-admin/Caddyfilehoppscotch-admin:container_name: hoppscotch-adminimage: hoppscotch/hoppscotch-adminrestart: unless-stoppedenv_file:- ./.envdepends_on:- hoppscotch-backendports:- "3280:80"- "3100:3100"# The preset DB service, you can delete/comment the below lines if# you are using an external postgres instance# This will be exposed at port 5432hoppscotch-db:image: postgres:15ports:- "5432:5432"volumes:- ./postgres-data:/var/lib/postgresql/dataenvironment:# The default user defined by the docker imagePOSTGRES_USER: postgres# NOTE: Please UPDATE THIS PASSWORD!POSTGRES_PASSWORD: passwordPOSTGRES_DB: hoppscotchhealthcheck:test:["CMD-SHELL","sh -c 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'",]interval: 5stimeout: 5sretries: 10

2.2 准备安装nginx-proxy-manager(可选)

  • 为什么要安装这个呢,因为hoppscotch起的是3个服务端口,如果用域名的话就是3个二级域名,使用nginx-proxy-manager配置起来简单快速,如果不打算使用域名,可不看
  • 强烈推荐安装这个,简单说就是一个可以通过简单的配置就实现反向代理,https证书安装的神器
  • 假设配置了,那大概就是这样,
    • 端口3000对应:https://h-frontend.xxx.xxx
    • 端口3170对应:https://h-backend.xxx.xxx
    • 端口3100对应:https://h-admin.xxx.xxx
  • 贴一下docker-compose文件,没啥好说的,直接跑起就行
version: '3'
services:app:image: 'jc21/nginx-proxy-manager:latest'restart: unless-stoppedports:- '80:80'- '81:81'- '443:443'volumes:- ./data:/data- ./letsencrypt:/etc/letsencrypt

2.2 准备.env文件

  • 这个是hoppscotch的配置文件,里面配置了所有需要用的字段,标注了必改的必须认真看看
  • 打开源码地址,找到.env.example,把内容复制,在本地随便找个编辑器,粘贴后修改
  • 主要改到的地方有(以下讲解一下各个改到的参数的用途,最后附上改好的全文):
    • DATABASE_URL必改,数据库连接,具体可参考前面的2.1.2 3个分开版本里面的数据库字段说明
    • JWT_SECRET必改,jwt加密,可以通过Windows自带的powershell自带的函数快速生成,打开powershell,输入 [guid]::NewGuid().ToString(),把生成的直接复制填上就行
    • SESSION_SECRET必改,同上
    • REDIRECT_URL:跳转地址,默认是http://localhost:3000,也就是前端api界面服务,如果要配置二级域名,就改成对应的二级域名,假设配置了证书的二级域名,类似这样:https://h-frontend.xxx.xxx
    • WHITELISTED_ORIGINS:白名单,必须配置,不然会有cors错误,默认是http://localhost:3170,http://localhost:3000,http://localhost:3100,如果要配置二级域名,就改成对应的二级域名,具体端口对应的,假设配置了证书的二级域名,类似这样:https://h-backend.xxx.xxx,https://h-frontend.xxx.xxx,https://h-admin.xxx.xxx
    • VITE_ALLOWED_AUTH_PROVIDERS:配置登录方式,可改可不改,如果没有同步需求的话,不用改,默认是GOOGLE,GITHUB,MICROSOFT,EMAIL,也就是配置了谷歌登录,github登录,微软登录和邮箱登录
      • 后面跟着的是对应的登录方式的配置,具体配置方法可以搜索或问gpt4
      • 需要关注的是***_CALLBACK_URL,每一个登录方式里都有一个回调地址,默认是http://localhost:3170/v1/auth/google/callback,可以看出是用的接口的端口,假设配置了证书的二级域名,类似这样:https://h-backend.xxx.xxx/v1/auth/microsoft/callback
  • VITE_BASE_URL必改,前端地址,默认是http://localhost:3000,假设配置了证书的二级域名,类似这样:https://h-frontend.xxx.xxx
  • VITE_SHORTCODE_BASE_URL必改,短地址,可以跟前端地址一样,同上
  • VITE_ADMIN_URL必改,后台地址,默认是http://localhost:3100,假设配置了证书的二级域名,类似这样:https://h-admin.xxx.xxx
  • VITE_BACKEND_GQL_URL必改,默认是http://localhost:3170/graphql,假设配置了证书的二级域名,类似这样:https://h-backend.xxx.xxx/graphql
  • VITE_BACKEND_WS_URL必改,默认是ws://localhost:3170/graphql,假设配置了证书的二级域名,类似这样ws://h-backend.lulua.net/graphql
  • VITE_BACKEND_API_URL必改,默认是http://localhost:3170/v1,假设配置了证书的二级域名,类似这样https://h-backend.xxx.xxx/v1

2.2.1 默认ip的.env

#-----------------------Backend Config------------------------------#
# Prisma Config
DATABASE_URL=postgresql://postgres:password@172.17.0.1:5432/hoppscotch# Auth Tokens Config
JWT_SECRET="自己生成"
TOKEN_SALT_COMPLEXITY=10
MAGIC_LINK_TOKEN_VALIDITY= 3
REFRESH_TOKEN_VALIDITY="604800000" # Default validity is 7 days (604800000 ms) in ms
ACCESS_TOKEN_VALIDITY="86400000" # Default validity is 1 day (86400000 ms) in ms
SESSION_SECRET='自己生成'
# Reccomended to be true, set to false if you are using http
# Note: Some auth providers may not support http requests
ALLOW_SECURE_COOKIES=true# Hoppscotch App Domain Config
REDIRECT_URL="http://localhost:3000"
WHITELISTED_ORIGINS="http://localhost:3170,http://localhost:3000,http://localhost:3100"
VITE_ALLOWED_AUTH_PROVIDERS=GOOGLE,GITHUB,MICROSOFT,EMAIL# Google Auth Config
GOOGLE_CLIENT_ID="************************************************"
GOOGLE_CLIENT_SECRET="************************************************"
GOOGLE_CALLBACK_URL="http://localhost:3170/v1/auth/google/callback"
GOOGLE_SCOPE="email,profile"# Github Auth Config
GITHUB_CLIENT_ID="************************************************"
GITHUB_CLIENT_SECRET="************************************************"
GITHUB_CALLBACK_URL="http://localhost:3170/v1/auth/github/callback"
GITHUB_SCOPE="user:email"# Microsoft Auth Config
MICROSOFT_CLIENT_ID="************************************************"
MICROSOFT_CLIENT_SECRET="************************************************"
MICROSOFT_CALLBACK_URL="http://localhost:3170/v1/auth/microsoft/callback"
MICROSOFT_SCOPE="user.read"
MICROSOFT_TENANT="common"# Mailer config
MAILER_SMTP_ENABLE="true"
MAILER_USE_CUSTOM_CONFIGS="false"
MAILER_ADDRESS_FROM='"From Name Here" <from@example.com>'MAILER_SMTP_URL="smtps://user@domain.com:pass@smtp.domain.com" # used if custom mailer configs is false# The following are used if custom mailer configs is true
MAILER_SMTP_HOST="smtp.domain.com"
MAILER_SMTP_PORT="587"
MAILER_SMTP_SECURE="true"
MAILER_SMTP_USER="user@domain.com"
MAILER_SMTP_PASSWORD="pass"
MAILER_TLS_REJECT_UNAUTHORIZED="true"# Rate Limit Config
RATE_LIMIT_TTL=60 # In seconds
RATE_LIMIT_MAX=100 # Max requests per IP#-----------------------Frontend Config------------------------------## Base URLs
VITE_BASE_URL=http://localhost:3000
VITE_SHORTCODE_BASE_URL=http://localhost:3000
VITE_ADMIN_URL=http://localhost:3100# Backend URLs
VITE_BACKEND_GQL_URL=http://localhost:3170/graphql
VITE_BACKEND_WS_URL=ws://localhost:3170/graphql
VITE_BACKEND_API_URL=http://localhost:3170/v1# Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy# Set to `true` for subpath based access
ENABLE_SUBPATH_BASED_ACCESS=false

2.2.2 二级域名版的.env(推荐)

#-----------------------Backend Config------------------------------#
# Prisma Config
DATABASE_URL=postgresql://postgres:password@172.17.0.1:5432/hoppscotch# Auth Tokens Config
JWT_SECRET="自己生成"
TOKEN_SALT_COMPLEXITY=10
MAGIC_LINK_TOKEN_VALIDITY= 3
REFRESH_TOKEN_VALIDITY="604800000" # Default validity is 7 days (604800000 ms) in ms
ACCESS_TOKEN_VALIDITY="86400000" # Default validity is 1 day (86400000 ms) in ms
SESSION_SECRET='自己生成'
# Reccomended to be true, set to false if you are using http
# Note: Some auth providers may not support http requests
ALLOW_SECURE_COOKIES=true# Hoppscotch App Domain Config
REDIRECT_URL="https://h-frontend.xxx.xxx"
WHITELISTED_ORIGINS="https://h-backend.xxx.xxx,https://h-frontend.xxx.xxx,https://h-admin.xxx.xxx"
VITE_ALLOWED_AUTH_PROVIDERS=GOOGLE,GITHUB,MICROSOFT,EMAIL# Google Auth Config
GOOGLE_CLIENT_ID="************************************************"
GOOGLE_CLIENT_SECRET="************************************************"
GOOGLE_CALLBACK_URL="https://h-backend.xxx.xxx/v1/auth/google/callback"
GOOGLE_SCOPE="email,profile"# Github Auth Config
GITHUB_CLIENT_ID="************************************************"
GITHUB_CLIENT_SECRET="************************************************"
GITHUB_CALLBACK_URL="https://h-backend.xxx.xxx/v1/auth/github/callback"
GITHUB_SCOPE="user:email"# Microsoft Auth Config
MICROSOFT_CLIENT_ID="************************************************"
MICROSOFT_CLIENT_SECRET="************************************************"
MICROSOFT_CALLBACK_URL="https://h-backend.xxx.xxx/v1/auth/microsoft/callback"
MICROSOFT_SCOPE="user.read"
MICROSOFT_TENANT="common"# Mailer config
MAILER_SMTP_ENABLE="true"
MAILER_USE_CUSTOM_CONFIGS="false"
MAILER_ADDRESS_FROM='"From Name Here" <from@example.com>'MAILER_SMTP_URL="smtps://user@domain.com:pass@smtp.domain.com" # used if custom mailer configs is false# The following are used if custom mailer configs is true
MAILER_SMTP_HOST="smtp.domain.com"
MAILER_SMTP_PORT="587"
MAILER_SMTP_SECURE="true"
MAILER_SMTP_USER="user@domain.com"
MAILER_SMTP_PASSWORD="pass"
MAILER_TLS_REJECT_UNAUTHORIZED="true"# Rate Limit Config
RATE_LIMIT_TTL=60 # In seconds
RATE_LIMIT_MAX=100 # Max requests per IP#-----------------------Frontend Config------------------------------## Base URLs
VITE_BASE_URL=https://h-frontend.xxx.xxx
VITE_SHORTCODE_BASE_URL=https://h-frontend.xxx.xxx
VITE_ADMIN_URL=https://h-admin.xxx.xxx# Backend URLs
VITE_BACKEND_GQL_URL=https://h-backend.xxx.xxx/graphql
VITE_BACKEND_WS_URL=ws://h-backend.xxx.xxx/graphql
VITE_BACKEND_API_URL=https://h-backend.xxx.xxx/v1# Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy# Set to `true` for subpath based access
ENABLE_SUBPATH_BASED_ACCESS=false

3. 安装

  • 安装就很简单了,复杂的是前期的准备工作,把前面任意版本的docker-compose文件和.env文件,在服务器上新建个文件夹hoppscotch放好,结构如图:
    在这里插入图片描述
  • 直接命令:docker-compose up -d ,使用docker ps 观察是否成功启动容器(PS:如果无法拉取镜像,可看我另一文章)
  • 启动成功后,会多一个文件夹,是postgresql的存储目录,如图:
    在这里插入图片描述
  • 细心观察会发现,其实容器一直在重启报错,这是因为没有数据库迁移,看下一步

4. 解决数据库迁移报错

4.1 3合1版本

  • 运行命令:docker compose run --entrypoint sh hoppscotch-aio,这时候会进入容器内部
  • 在容器内运行命令:npm config set registry https://registry.npmmirror.com,配置一下镜像地址
  • 在容器内运行命令:pnpx prisma migrate deploy,这是在做数据库迁移,PS,这里偶尔会卡住,直接ctrl+c,强行停止,重新运行一次命令就ok。
  • 在容器内运行命令:exit,退出容器
  • 运行命令:docker-compose down,关闭容器
  • 运行命令:docker-compose up -d,启动容器,这时候理论上就不重启了
  • 浏览器尝试打开地址:
    • ip版本
      • 前端地址是:http://localhost:3000,第一次打开要加载资源,有点慢,等全部打开后,就是眼熟的类似postman的界面了
      • 后台管理地址是:http://localhost:3100
    • 二级域名版本
      • 前端地址是:https://h-frontend.xxx.xxx,第一次打开要加载资源,有点慢,等全部打开后,就是眼熟的类似postman的界面了
      • 后台管理地址是:https://h-admin.xxx.xxx

4.2 独立版本

  • 运行命令:docker compose run --entrypoint sh hoppscotch-backend,这时候会进入容器内部
  • 在容器内运行命令:npm config set registry https://registry.npmmirror.com,配置一下镜像地址
  • 在容器内运行命令:pnpx prisma migrate deploy,这是在做数据库迁移,PS,这里偶尔会卡住,直接ctrl+c,强行停止,重新运行一次命令就ok。
  • 在容器内运行命令:exit,退出容器
  • 运行命令:docker-compose down,关闭容器
  • 运行命令:docker-compose up -d,启动容器,这时候理论上就不重启了
  • 浏览器尝试打开地址:
    • ip版本
      • 前端地址是:http://localhost:3000,第一次打开要加载资源,有点慢,等全部打开后,就是眼熟的类似postman的界面了
      • 后台管理地址是:http://localhost:3100
    • 二级域名版本
      • 前端地址是:https://h-frontend.xxx.xxx,第一次打开要加载资源,有点慢,等全部打开后,就是眼熟的类似postman的界面了
      • 后台管理地址是:https://h-admin.xxx.xxx

5. 安装浏览器插件

  • 其实理论上,到上面的一步,能打开前端界面,能测试api,就可以愉快的使用了,但是,多用几个api就会发现,有些接口明明是通的,但是无法使用,这是浏览器的锅,为了安全,浏览器自作主张加了很多安全策略,在平时的时候保护了我们,但在开发的时候就是拦路虎,比如不同源不能调用接口啦,比如有证书的域名不能调用无证书的接口啦等等等。
  • 解决的办法hoppscotch也提供了,安装hoppscotch提供的浏览器插件
  • 先点击前端界面的设置按钮
    在这里插入图片描述
  • 往下拖动,最底下有浏览器插件的字眼,点击使用的对应的浏览器图标,会跳转到相应的地址
    在这里插入图片描述
  • 安装完成后,还得设置启用
    在这里插入图片描述
  • 哦对了,如果有人不习惯侧边栏在右侧,可以选择在左侧
    在这里插入图片描述
  • 至此,就可以愉快的使用了!

6. 配置github登录选项(可选)

  • 如果想配置github登录,先打开github设置页,打开后,点击右上角,新建一个新的支持oauth的app
    在这里插入图片描述
  • 如下图所示,按照图里提示的填写,最重要的是回调地址,这个地址其实配置在.env文件里
    在这里插入图片描述
  • 注册成功后,获得GITHUB_CLIENT_IDGITHUB_CLIENT_SECRET,填写到.env文件对应的地方
  • 最后,需要重启一下服务,这里用个坑,修改了.env文件后,不会生效,需要清空配置表
  • 先用docker ps,获得postgresql的容器id
  • 获得容器id后,组装命令:docker exec -it <db_container_id> psql -d hoppscotch -c "TRUNCATE \"InfraConfig\";",把<db_container_id>一整个替换成容器id,不要留<>,运行完毕后
  • 使用命令:docker-compose down,停止服务
  • 使用命令:docker-compose up -d ,启动服务
  • 重启成功后,点击登录,使用github登录,能够成功跳转github并登录就ok了
    在这里插入图片描述

7. 官方相关文档

  • 附上github项目地址
  • 附上官方文档地址

over, enjoy!!!
如对您有帮助,感谢投喂!
微信感谢投喂版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405920.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据集][目标检测]木材缺陷检测数据集VOC+YOLO格式2383张10类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2383 标注数量(xml文件个数)&#xff1a;2383 标注数量(txt文件个数)&#xff1a;2383 标注…

c++习题25-判断字符串是否回文

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 描述 输入一个字符串&#xff0c;输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。 输入描述 输入为一行字符串&#xff08;字符串中没有空白字符&#xff0c;字符串长度不…

第十二届青少年蓝桥杯Python组省赛试题

一、选择题 1.设s’Hello Lan Qiao’,执行print(s[4:11])输出的结果为()。 *选择题严禁使用程序验证 A、lo Lan Qi B、lo Lan Q C、o Lan Qi D、o Lan Q 提示&#xff1a;切片 2.循环语句for i in range(8,-4,-2):执行了几次循环()。 *选择题严禁使用程序验证 A、4 B、5 C、6…

Manim动画:相机的移动(MovingCameraScene)

1.相机的移动(MovingCameraScene) MovingCameraScene 是 Manim 中的一个类&#xff0c;用于创建可以移动的相机场景。这个类继承自 Scene&#xff0c;并提供了关于相机移动的额外功能。 MovingCameraScene(camera_class<class manim.camera.moving_camera.MovingCamera>…

Cobalt Strike 4.8 用户指南-第二节-用户界面

2.1、概述 Cobalt Strike用户界面分为两部分。界面顶部显示会话或目标的可视化。界面底部显示与你交互的每个 Cobalt Strike 功能或会话的选项卡。可以单击这两个部分之间的区域并根据自己的喜好调整它们的大小。 # 2.2、工具栏 顶部的工具栏提供对常见 Cobalt Strike功能的快…

Day23 第十站 文件IO的多路复用

#include <myhead.h>void insert_client(int *client_arr,int *len,int client) {//client_arr[n]{3,4} len&client_count,client_count2;//添加 5 client_arr[2(*len)]5(client)client_arr[*len]client;(*len); } int find_client(int *client_arr,int len,int clie…

【Python开发实践】在线商城系统——需求及需求分析

项目背景及需求 这个练习项目的设置背景是一家图书销售公司&#xff0c;为了扩大销售渠道&#xff0c;想要开通网上商城&#xff0c;利用在线博客和电子商城来销售图书。 具体需求如下&#xff1a; 每个商品可以留言 实现在线购物车处理和订单处理 实现对产品、购物车和订单的…

python依赖包安装失败的解决办法(适用于conda安装)

版权声明&#xff1a;本文为博主原创文章&#xff0c;如需转载请贴上原博文链接&#xff1a;python依赖包安装失败的解决办法&#xff08;适用于conda安装&#xff09;-CSDN博客 前言&#xff1a;这个问题之前一直困扰着我&#xff0c;因为最近要升级Anaconda-Navigator&#x…

haproxy实验

基本介绍 http://t.csdnimg.cn/Z64QVhttp://t.csdnimg.cn/Z64QV 实验环境 功能IP客户端172.25.254.233haproxy eth0:172.25.254.100 eth1:192.168.0.10 rs1eth0:192.168.0.101rs2eth0:192.168.0.102 安装haproxy yum install haproxy -y 多进程和多线程 vim /etc/hap…

基于Conda的Python版本管理与Python包管理

文章目录 前言Conda是什么Conda与Anaconda安装Anaconda安装包windows v2024.06-1安装包更多版本安装包(Windows/Mac/Linux) 安装添加环境变量安装过程中遇到的问题 使用步骤创建Python环境激活Python环境安装Python包列出和切换 Python 版本管理多个环境 总结 前言 开发环境中…

力扣 1425带限制的子序列和

这是一道 动态规划加单调队列的题&#xff0c;重点加强单调队列知识的学习 回归本题&#xff0c;这个题中&#xff0c;动态规划的部分略去&#xff0c;状态转移方程可求 单调队列部分 1维护队头 if(i-sta.front() k) sta.pop_front(); 2维护队尾 while(!sta.empty() &…

[C#]基于winform结合photocartoon算法实现人物卡通化源码实现

【官方框架】 https://github.com/minivision-ai/photo2cartoon 简介 人像卡通风格渲染的目标是&#xff0c;在保持原图像ID信息和纹理细节的同时&#xff0c;将真实照片转换为卡通风格的非真实感图像。我们的思路是&#xff0c;从大量照片/卡通数据中习得照片到卡通画的映射…

2024年思维导图工具怎样可以轻松选择

思维导图&#xff0c;作为一种直观、有效的思维工具&#xff0c;凭借其强大的信息整理能力和创意激发潜力&#xff0c;逐渐成为了人们学习、工作和生活中不可或缺的一部分。今天&#xff0c;就让我们一起走进这个充满智慧的领域&#xff0c;探索那些2024年大家都在使用的思维导…

Mac安装Typora

文章目录 介绍软件功能下载安装1.下载完成后打开downloads 双击进行安装2.将软件拖到应用程序中3.在程序坞中搜索打开4.提示安全问题就打开通用&#xff0c;安全隐私与设置5.打开成功 小结 介绍 Typora for mac 是一款简洁的轻量级的markdown编辑器、写作软件。它去除了预览窗…

C++求职LinuxWebServer面试篇(项目介绍)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️ Qt5.9专栏定期更新Qt的一些项目Demo 项目与…

Tomcat性能调优

Tomcat性能调优 Tomcat9参数配置&#xff1a;Apache Tomcat 9 Configuration Reference (9.0.93) - The HTTP Connector 2.1 如何监控Tomcat的性能 Tomcat 的关键指标 Tomcat 的关键指标有吞吐量、响应时间、错误数、线程池、CPU 以及 JVM 内存。前三个指标是我们最关心的业…

JVM指令重排序

文章目录 什么是指令重排序编译器优化JIT 编译优化处理器优化重排序数据依赖性 硬件层的内存屏障指令重排的代码验证好处减少管道阻塞提高缓存利用率利用并行执行单元性能提升更好地利用硬件资源 问题内存可见性问题编程复杂性增加调试困难 解决方案&#xff1a;Java内存模型&a…

Pinia

搭建pinia环境 1.引入依赖 npm i pinia 2.在main.ts中引入pinia 准备一个基本的效果 <template><h2>测试一下pinia</h2><br><span>当前求和为&#xff1a;{{ sum }}</span><br><select v-model.number"n"><o…

2 kubeflow系统架构 学习笔记

1 Kubeflow生态系统 2 生态系统说明 2.1. Hardware&#xff08;硬件层&#xff09; 提供计算资源的底层硬件支持。GPU&#xff08;如NVIDIA&#xff09;通常用于加速机器学习和深度学习的计算任务&#xff0c;而Intel和AMD则可能提供CPU计算资源。 2.2. Infrastructure&…

[OC]萝卜圈玩行车记录仪

图1-1&#xff0c;你的手动小车 代码是 #机器人驱动主程序 #请在main中编写您自己的机器人驱动代码 import tkinter as tk import turtle v0 # 速度 accFalse;slowFalse;leftFalse;rightFalse # 按键状态 step0.5 # 一次速度变化量 def keyup_press(event):global acc;accTru…