私有仓库搭建

目前市面上比较常见的私有仓库搭建方法为:

  • 通过 Sinopia 或 verdaccio 搭建(Sinopia 已经停止维护,verdaccio 是 Fork 自 Sinopia,基本上大同小异),其优点是搭建简单,不需要其他服务。
  • 通过 cnpm 搭建,需要数据库服务,后期也支持了 redis 缓存(当 redis 设置了密码,访问好像有些问题),目前用的人最多,cnpm 推荐的是用 docker 作为容器。
  • 基于github私有库来搭建npm私有库,搭建简单管理方便,只需要维护github私有库,不需要本地搭建服务器、数据库等。
    1. 但是需要在package.json设置private为true(为了保证不小心发布到npm官方库)
    2. 安装之后,想要更新,只能重新npm install xxx;
    3. 发布的时候不能使用npm的相关命令,比如npm version patch、npm publish;
    4. 有时候拉取都比较慢,有时容易失败

npm及私有npm的工作原理?

当我们使用npm install去安装一个模块时,会先检查node_modules目录中是否已经存在这个模块,如果没有便会向远程仓库查询。

npm提供了一个模块信息查询服务,通过访问

registry.npmjs.org/packaename/version

就可以查到某个发布在npm模块上的具体信息以及下载地址,下载并解压到本地完成安装。
在这里插入图片描述
那如果我们搭建了私有的npm
使用 npm install 命令安装包时,NPM 将首先检查是否可以从私有注册表获取所需的包。如果私有注册表配置为代理公共注册表,且包不存在于私有注册表中,它还可以从公共注册表中拉取包。
在这里插入图片描述

verdaccio

Verdaccio 是一个轻量级、易于配置的开源私有 NPM 仓库解决方案,非常适合用于内部团队的包管理。下面是使用 Verdaccio 搭建私有 NPM 仓库的步骤。

安装 Verdaccio

  1. 安装 Node.js
    确保你已经安装了 Node.js。Verdaccio 要求 Node.js 的版本至少是 10.x。

  2. 安装 Verdaccio
    使用 npm 安装 Verdaccio:

    npm install -g verdaccio
    
  3. 运行 Verdaccio
    安装完成后,运行 Verdaccio:

    verdaccio
    

    默认情况下,Verdaccio 会在 http://localhost:4873 上运行。
    在这里插入图片描述

配置 Verdaccio

  1. 配置文件
    Verdaccio 会在首次运行时创建一个默认的配置文件 ~/.config/verdaccio/config.yaml。你可以编辑这个文件来调整设置,如端口、权限、存储路径等。
    文档: https://verdaccio.org/zh-cn/docs/configuration/
    • 全部配置

      # #号后面是注释
      # 所有包的缓存目录
      storage: ./storage
      # 插件目录
      plugins: ./plugins#开启web 服务,能够通过web 访问
      web:# WebUI is enabled as default, if you want disable it, just uncomment this line#enable: falsetitle: Verdaccio
      #验证信息
      auth:htpasswd:#  用户信息存储目录file: ./htpasswd# Maximum amount of users allowed to register, defaults to "+inf".# You can set this to -1 to disable registration.#max_users: 1000# a list of other known repositories we can talk to
      #公有仓库配置
      uplinks:npmjs:url: https://registry.npmjs.org/packages:'@*/*':# scoped packagesaccess: $allpublish: $authenticated#代理 表示没有的仓库会去这个npmjs 里面去找 ,#npmjs 又指向  https://registry.npmjs.org/ ,就是上面的 uplinks 配置proxy: npmjs'**':# 三种身份,所有人,匿名用户,认证(登陆)用户# "$all", "$anonymous", "$authenticated"#是否可访问所需要的权限access: $all#发布package 的权限publish: $authenticated# 如果package 不存在,就向代理的上游服务发起请求proxy: npmjs# To use `npm audit` uncomment the following section
      middlewares:audit:enabled: true
      # 监听的端口,IP,重点,不配置这个,只能本机能访问
      listen: 0.0.0.0:4873
      # log settings
      logs:- {type: stdout, format: pretty, level: http}#- {type: file, path: verdaccio.log, level: info}
      
    • Verdaccio 允许你通过修改 config.yaml 中的 authpackages 部分来配置访问控制和权限:

      auth:htpasswd:file: ./htpasswdmax_users: 1000packages:'@*/*':access: $authenticatedpublish: $authenticatedproxy: npmjs'**':access: $authenticatedpublish: $authenticatedproxy: npmjs
      

      这样配置后,只有经过认证的用户才能访问和发布包。

使用 Verdaccio

  1. 添加用户
    如果你想要管理用户登录,可以通过命令行添加用户:

    npm adduser --registry http://localhost:4873
    

    这将创建一个用户,并将其信息存储在 Verdaccio 的用户数据库中。
    在这里插入图片描述

  2. 登录到私有注册表

    npm login --registry=http://your-private-registry-url/
    
  3. 发布包

    • 配置你的 package.json 中的 publishConfig 字段指向 Verdaccio 的 URL:

      "publishConfig": {"registry": "http://localhost:4873"
      }
      

      文档:https://docs.npmjs.com/cli/v8/using-npm/registry#how-can-i-prevent-my-package-from-being-published-in-the-official-registry在这里插入图片描述

    • 或者设置 .npmrc 文件
      在 npm 中更改注册表地址有几种不同的方法,可以根据需求选择适合的方法:
      1. 永久更改注册表地址
      如果您希望所有的 npm 命令都默认使用特定的注册表,您可以通过 npm 配置来设置:

       ```bashnpm config set registry https://example.com/```这将更新您的用户级 npm 配置文件(通常在用户主目录的 `.npmrc` 文件中)。2. **为单个项目设置注册表地址**如果只想为某个特定项目设置注册表地址,可以在项目根目录下创建或修改 `.npmrc` 文件,并添加以下内容:```bashregistry=https://example.com/```这样设置后,只有在该项目目录下运行的 npm 命令会使用这个注册表地址。
      
    • 使用 npm 发布包:

      npm publish
      // 更新版本
      npm version patch
      
    • 再次发布之前要先进行更新版本,否则会失败

           // 更新版本npm version patch
      
  4. 撤销

    npm unpublish 命令用于从 npm 注册表中删除已发布的包。这个命令非常有用,但也应谨慎使用,因为它会影响到依赖该包的任何人或任何项目。以下是命令的格式和详细解释:

    格式

    npm unpublish [<@scope>/]<pkg>@<version>
    

    解释

    • <@scope>/: 可选项。如果你的包是发布在一个作用域下(通常是组织或团队的命名空间),你需要包含这个作用域。作用域名称前面加上 @ 符号,并与包名通过 / 分隔。

    • <pkg>: 必需项。这是你想要取消发布的包的名称。

    • <version>: 必需项。这是你想要取消发布的包的具体版本号。提供版本号是必须的,因为 npm unpublish 默认不允许删除整个包,只能删除指定版本。

    使用示例

    假设你有一个名为 example-package 的包,版本 1.0.1,并且这个包是在作用域 @mycompany 下:

    npm unpublish @mycompany/example-package@1.0.1
    

    如果你的包没有使用作用域,命令如下:

    npm unpublish example-package@1.0.1
    
  5. 安装包

    • 使用命令行参数指定 Verdaccio 的 URL 来安装包:
      npm install <package-name> --registry http://localhost:4873
      

优点与缺点

优点

  • 易于安装和配置:快速搭建,简单易用。
  • 轻量级:非常适合小团队和个人使用。
  • 支持插件:可以通过插件扩展功能。

缺点

  • 缩放性:对于非常大的企业或高负载环境,可能不够强大。
  • 高级特性缺乏:相比于一些商业解决方案,如 Artifactory 或 Nexus,功能上可能有所欠缺。

Verdaccio 是一个非常实用的工具,对于希望快速搭建私有 NPM 仓库的小团队或个人开发者来说,它提供了一个成本低且维护简单的解决方案。

服务器Linux搭建NPM私有仓库-verdaccio

创建opt文件夹

liunx文件夹都有自己的用途,可以看这篇Linux 系统目录结构

mkdir opt
安装verdaccio
docker pull verdaccio/verdaccio
创建项目结构和文件

执行以下命令

mkdir -p opt/{plugins,config,storage}

生成以下目录结构

-opt-docker-compose.yml   #docker-compose 配置文件-plugins              -config-config.yaml      #verdaccio 配置文件-storage
编辑 docker-compose 配置文件
version: '3.4'services:verdaccio:image: verdaccio/verdacciocontainer_name: "verdaccio"networks:- node-networkenvironment:# VERDACCIO 服务端口- VERDACCIO_PORT=3005# 当前登录 linux 服务器的用户名- VERDACCIO_USER_NAME="root" ports:# 宿主和容器的端口- "3005:3005"volumes:- "./storage:/verdaccio/storage"- "./config:/verdaccio/conf"- "./plugins:/verdaccio/plugins"
networks:node-network:driver: bridge

下面是对每一行配置的详细解释:

version: '3.4'
  • 版本: 这一行指定了 docker-compose 文件使用的版本是 3.4。每个版本的 docker-compose 支持特定的功能集合。
services:
  • 服务: 开始定义一个或多个服务的部分,每个服务将对应一个容器。
  verdaccio:
  • verdaccio 服务: 这里定义了一个名为 verdaccio 的服务。
    image: verdaccio/verdaccio
  • 镜像: 为 verdaccio 服务指定使用 verdaccio/verdaccio 镜像,这是一个预构建的 Docker 镜像,可从 Docker Hub 获取。
    container_name: "verdaccio"
  • 容器名称: 设置这个容器运行时的名称为 “verdaccio”。
    networks:- node-network
  • 网络: 将该服务连接到名为 node-network 的网络。
    environment:
  • 环境变量: 开始定义环境变量的部分。
      # VERDACCIO 服务端口- VERDACCIO_PORT=3005
  • 环境变量: 设置环境变量 VERDACCIO_PORT3005,这通常用于指定应用监听的端口。
      # 当前登录 linux 服务器的用户名- VERDACCIO_USER_NAME="root"
  • 环境变量: 设置环境变量 VERDACCIO_USER_NAME 为 “root”,这可以用于应用中需要引用服务器用户的场景。
    ports:# 宿主和容器的端口- "3005:3005"
  • 端口映射: 将容器内的端口 3005 映射到宿主机的端口 3005 上,使得外部可以通过宿主机的端口访问服务。
    volumes:- "./storage:/verdaccio/storage"- "./config:/verdaccio/conf"- "./plugins:/verdaccio/plugins"
  • 卷挂载:
    • ./storage:/verdaccio/storage:将宿主机上当前目录下的 storage 目录挂载到容器的 /verdaccio/storage 目录,用于数据持久化。
    • ./config:/verdaccio/conf:将宿主机上当前目录下的 config 目录挂载到容器的 /verdaccio/conf 目录,用于配置文件的持久化。
    • ./plugins:/verdaccio/plugins:将宿主机上当前目录下的 plugins 目录挂载到容器的 /verdaccio/plugins 目录,用于插件的持久化。
networks:node-network:driver: bridge
  • 网络定义:
    • node-network: 这里定义了一个名为 node-network 的网络。
    • 驱动: 使用 bridge 驱动,这是 Docker 默认的网络类型,适用于同一宿主机上的容器间通信。

整体来看,这个 docker-compose.yml 文件配置了一个单服务的应用,使用了网络、环境变量、端口映射和卷挂载来确保 verdaccio 正常运行并且是配置化和持久化的。

编辑 verdaccio 配置文件
storage: /verdaccio/storage
auth:htpasswd:file: /verdaccio/conf/htpasswd
uplinks:npmjs:url: https://registry.npmjs.org/server2:url: https://registry.npm.taobao.org/
packages:'@*/*':access: $allpublish: $authenticatedproxy: npmjs server2'**':# 这里如果不设置在使用 npm i xxx、 npm publish 时将会提示包不存在,为了方便这里直接设置上如下两行access: $allpublish: $authenticatedproxy: npmjs
logs:- {type: stdout, format: pretty, level: http}
listen:# 这个端口务必对应上- 0.0.0.0:3005
启动容器
docker-compose up -d --build

在浏览器打开 服务器网址:端口(3005) 将会出现如下页面
在这里插入图片描述

可能的报错

npm版本太低
这个是因为本地npm 版本太低导致的, https://github.com/verdaccio/verdaccio/issues/3413
在这里插入图片描述
本地添加用户报错 500
查看日志

 error--- the user hehe could not being added. Error: EACCES: permission denied, open '/verdaccio/conf/htpasswd'

在这里插入图片描述
是因为Verdaccio在容器中以非根用户(uid=10001)的身份运行,要授权
因为当前的目录结构为

-opt-docker-compose.yml   #docker-compose 配置文件-plugins              -config-config.yaml      #verdaccio 配置文件-storage

所以先进入opt文件夹,从报错来看是/verdaccio/conf/htpasswd没有权限
因为./config:/verdaccio/conf:将宿主机上当前目录下的 config 目录挂载到容器的 /verdaccio/conf 目录,用于配置文件的持久化。
执行一下操作就可以解决

chown -R 10001:65533 ./config/

CNPM

要使用 cnpm(中国国内镜像版本的 npm)来搭建私有 NPM 仓库,我们主要会使用到 cnpmjs.org,这是一个开源的私有 NPM 服务解决方案,支持 npm 的所有功能。cnpm 本身主要是为了优化在中国大陆访问 npm 的速度,而 cnpmjs.org 提供了完整的私有库服务。

安装和配置 cnpmjs.org

下面是基于 cnpmjs.org 搭建私有 NPM 仓库的步骤:

  1. 环境要求

    • 需要 Node.js 环境,确保你的系统上已安装 Node.js。
    • 安装 MySQL 或其他数据库,因为 cnpmjs.org 需要数据库来存储数据。
  2. 安装 cnpmjs.org

    • 使用 npm 安装 cnpmjs.org
      npm install -g cnpmjs.org
      
  3. 配置数据库

    • cnpmjs.org 默认使用 SQLite,但对于生产环境,推荐使用 MySQL。
    • 创建一个 MySQL 数据库并配置到 cnpmjs.org 的配置文件中。可以从 cnpmjs.org 的 GitHub 仓库 下载默认的 config.js 文件,然后修改数据库设置部分。
  4. 启动服务

    • 启动 cnpmjs.org 服务:
      cnpmjs.org start --admins='admin:admin@example.com' --config=config.js
      
    • 其中 admins 是管理员账号的设置,可以根据实际情况调整。
  5. 使用 cnpm

    • 安装 cnpm(如果尚未安装):
      npm install -g cnpm --registry=https://registry.npmmirror.com
      
    • 配置 cnpm 使用你的私有仓库:
      cnpm set registry http://localhost:7001
      

发布和安装包

  • 发布包:使用 cnpm publish 发布你的 npm 包。
  • 安装包:使用 cnpm install <package-name> 来安装包。

优点与缺点

优点

  • 完全控制:私有部署意味着你拥有对仓库的完全控制。
  • 扩展性:相比于简单的 Verdaccio,cnpmjs.org 支持更多的定制和扩展功能。
  • 适合中国用户cnpm 的设置和优化适合中国国内用户,网络连接更快、更稳定。

缺点

  • 维护成本:需要自行维护服务器和数据库。
  • 配置复杂:相比直接使用 npm 或 Verdaccio,配置和管理稍显复杂。
  • 资源消耗:相对于轻量级的方案,cnpmjs.org 可能会占用更多的系统资源。

使用 cnpmjs.org 搭建私有 NPM 仓库是一种有效的方式,特别是对于需要高度定制化和控制的大型团队或企业。这种方法提供了良好的性能和可扩展性,但也需要相应的技术支持来维护和管理。

GitHub Packages

使用 GitHub Packages 创建私有 NPM 库允许你将 NPM 包直接存储在 GitHub 上,利用 GitHub 提供的版本控制和协作功能,以及包管理的便利性。这是一个集成度高、配置简单的方案,适合已经使用 GitHub 进行源代码管理的团队。以下是详细的步骤说明:

步骤概览

  1. 启用 GitHub Packages

    • GitHub Packages 通常默认在所有账户上启用。
  2. 创建或选择一个 GitHub 仓库

    • 使用一个现有的 GitHub 仓库或创建一个新仓库用于托管你的私有 NPM 包。
  3. 生成 Personal Access Token

    • 在 GitHub 上生成一个访问令牌(Personal Access Token, PAT),确保它包含对 Packages 的适当权限。
  4. 配置 NPM 使用 GitHub Packages

    • 在你的项目中配置 .npmrc 文件以使用 GitHub 的 NPM 仓库。
  5. 发布 NPM 包

    • 将你的 NPM 包发布到 GitHub Packages。
  6. 安装和使用包

    • 通过 GitHub Packages 安装和使用你的 NPM 包。

详细步骤

1. 启用 GitHub Packages
  • 此服务通常已为 GitHub 用户启用。如果未启用,你可能需要联系 GitHub 支持。
2. 创建或选择一个仓库
  • 直接在 GitHub 上创建一个新的仓库或选择一个已有仓库。私有包必须存储在私有仓库中。
3. 生成 Personal Access Token
  • 在 GitHub 网站上,点击你的头像 > Settings > Developer settings > Personal access tokens > Generate new token。
  • 选择 write:packages 用于上传包,read:packages 用于下载包。确保也选择了 repo 权限,这对私有仓库是必需的。
4. 配置 NPM 使用 GitHub Packages
  • 在你的项目根目录下创建 .npmrc 文件,加入以下内容(替换 OWNER 为你的 GitHub 用户名或组织名):
    registry=https://npm.pkg.github.com/OWNER
    
  • 在你的用户主目录下的 .npmrc 文件中配置 PAT:
    //npm.pkg.github.com/:_authToken=YOUR_TOKEN
    
5. 发布 NPM 包
  • 修改你的 package.json 文件中的 name 属性,以确保它是 @owner/repo 形式,其中 owner 是你的 GitHub 用户或组织名,repo 是仓库名。
  • 确保你已登录到 NPM(使用命令 npm login),然后运行:
    npm publish
    
6. 安装和使用包
  • 确保 .npmrc 文件配置正确。然后你可以像使用其他 NPM 包一样安装和使用这些包:
    npm install @owner/package-name
    

优点与缺点

优点

  • 集成:紧密集成于 GitHub,简化了源代码和包管理的流程。
  • 安全性:利用 GitHub 的安全设置,可以细粒度控制包的访问权限。
  • 方便的版本控制和协作:利用 GitHub 强大的版本控制和协作特性。

缺点

  • 成本:对于私有仓库和私有包,需要 GitHub 的付费账户。
  • 依赖性:依赖 GitHub 的在线服务,如果 GitHub 服务中断,可能会影响到包的访问。
  • 配置和使用限制:虽然相对简单,但对于不熟悉 GitHub 的用户来说可能需要一定的学习曲线。

这些步骤总结了如何通过 GitHub Packages 设置和管理私有 NPM 库,希望对你的项目或团队有所帮

参考文档
https://verdaccio.org/zh-cn/docs/configuration/#storage
https://juejin.cn/post/7096701542408912933
https://auan.cn/internet/2010.html
https://juejin.cn/post/7063032346206797860

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

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

相关文章

【最新鸿蒙应用开发】——沙箱机制是什么?作用?场景?

沙箱机制 1. 什么是沙箱机制&#xff1f; 1.1. 概念 在操作系统当中&#xff0c;沙箱机制&#xff08;Sandboxing&#xff09;是一种安全机制&#xff0c;用于限制程序代码的访问权限&#xff0c;防止恶意软件对系统造成破坏。在沙箱环境中&#xff0c;程序只能访问特定的资…

动态库加载【Linux】

从此往后&#xff0c;建立映射&#xff0c;我们执行的任何代码&#xff0c;都是在我们的进程地址空间中进行执行 例如&#xff1a;将动态库映射到共享区&#xff0c;进程在CPU调度时&#xff0c;是在进程的进程地址空间处运行 程序在编译好之后&#xff0c;在加载到内存之前&a…

欧美北美南美国外媒体投稿和东南亚中东亚洲媒体海外新闻发稿软文推广营销策略有哪些?

在当今全球化的浪潮中&#xff0c;中国品牌正积极拓展海外市场&#xff0c;寻求更广阔的发展空间。面对国际竞争&#xff0c;有效的海外媒体发稿营销策略对于品牌国际化至关重要。以下是一些关键点和建议&#xff0c;以帮助品牌在海外市场取得成功。 深入了解目标市场&#xf…

Linux 内核之 mmap 内存映射触发的缺页异常 Page Fault

文章目录 前言一、简介1. MMU 内存管理2. 缺页中断3. 页表4. 小节 二、mmap 提前分配物理内存1. mm_populate 函数2. __mm_populate 函数3. populate_vma_page_range 函数4. __get_user_pages 函数5. find_extend_vma 函数6. find_vma 函数7. follow_page_mask 函数8. follow_p…

Ubuntu22.04 下 pybind11 搭建,示例

Pybind11 是一个轻量级的库&#xff0c;用于在 C 中创建 Python 绑定。Ubuntu22下安装pybind11步骤如下&#xff1a; 1. 安装 pybind11 1.1 pip 命令安装 pip3 install pybind11 1.2 源代码安装 安装依赖库&#xff1a; sudo pip install -i https://pypi.tuna.tsinghua.e…

一、Electron 环境初步搭建

新建一个文件夹&#xff0c;然后进行 npm init -y 进行初始化&#xff0c;然后我们在进行 npm i electron --save-dev , 此时我们按照官网的教程进行一个初步的搭建&#xff0c; 1.在 package.json 文件进行修改 {"name": "electron-ui","version…

【全开源】多功能投票小程序系统源码(ThinkPHP+FastAdmin+Uniapp)

&#x1f680; 多功能投票小程序&#xff0c;让决策变得更简单&#xff01; 基于ThinkPHPFastAdminUniapp开发的多功能系统&#xff0c;支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署&#xff0c…

Java项目如何外发告警日志到企业微信

前言 最近领导交代了一个需求,就是有些许客户不单单满足平台告警日志外发到邮箱、短信的形式,还要以消息聊天的形式外发给企业微信。 具体操作 1、注册企业微信。 2、登录企业微信,找到应用管理,创建应用。 3、创建完之后需要记录以下图片中两个值的信息。 4、然后记录下…

vue实现大语言模型返回的数据将代码高亮显示的实现

0. 引言 最近在学习ai大模型相关的东西&#xff0c;就想着自己做一个类似于chatGPT的网站&#xff0c;做到最后的时候代码块始终是不能高亮显示&#xff0c;以前一直搞Java没太了解过前端vue相关的东西&#xff0c;经过自己查资料&#xff0c;自己慢慢也是研究出来了。 这个项目…

RFID模块板子JY-LD6900通用自由口协议通信说明

RFID模块板子JY-LD6900是健永科技基于RFID无线射频识别技术推出的一款低频读卡模块&#xff0c;体积小巧&#xff0c;性能优越&#xff0c;读卡时间小于30ms&#xff0c;识别速度达2m/s&#xff0c;配套62mm直径圆形天线&#xff0c;读卡距离可达20cm以上。支持双频134.2kHz、1…

分享:618学习狂欢节活动来啦——大数据培训班

618狂欢学习节 限时优惠大放送 活动时间&#xff1a;6月1日—6月18日

商淘云电商分账系统如何为企业降低连锁财务成本

当今激烈的市场竞争中&#xff0c;连锁品牌企业面临着多样化的挑战&#xff0c;其中财务管理尤为关键。商淘云连锁收银系统作为一款专为连锁品牌量身定制的解决方案&#xff0c;不仅可以帮助企业实现总部入账管控财务、银行结算规范财务的目标&#xff0c;还能通过分账系统优化…

什么是SIEM

SIEM 解决方案是一种企业级应用程序&#xff0c;可集中和自动化与网络安全相关的操作&#xff0c;该工具通过收集、分析和关联从组织 IT 基础设施中的各种实体聚合的网络事件来帮助应对网络威胁。 与帮助监控和评估组织物理空间中的危险的监视控制台相比&#xff0c;SIEM解决方…

【漏扫工具】Afrog V3.0.6一款漏洞扫描神器

简介 [Afrog]是一款高性能的漏洞扫描器&#xff0c;快速稳定。它支持用户自定义的 PoC&#xff0c;并内置了多种类型&#xff0c;例如 CVE、CNVD、默认密码、信息泄露、指纹识别、未经授权的访问、任意文件读取和命令执行。借助 afrog&#xff0c;网络安全专业人员可以快速验证…

从一道题看利用sqlite打jdbc达到RCE

前言 从今年国赛的一道java题遇到了sqlite数据库去打jdbc达到RCE的姿势&#xff0c;故笔者写篇文章记下 复现 反编译源代码可以看见这三个数据库 这里提供了mysql sqlite psql 但mysql和psql都不行 这里我们用sqlite去打 jdbc就可以执行load_extension() CVE-2023-32697&#…

重磅就业报告前美股涨势消减,标普暂别纪录高位,英伟达盘中闪崩近6%,欧央行降息预期“退烧”,欧元跳涨

标普纳指创盘中历史新高后转跌&#xff0c;道指三连涨至近两周新高&#xff1b;芯片股指和台积电美股跌落纪录高位&#xff0c;英伟达三日收创历史新高后回落&#xff1b;游戏驿站盘中一度暴拉50%。中概股指回落&#xff0c;财报后蔚来收跌6.8%。欧央行会后&#xff0c;欧元盘中…

美颜SDK与直播美颜插件:开发者指南与优化技巧

本篇文章&#xff0c;小编将详细探讨如何利用美颜SDK和直播美颜插件进行开发&#xff0c;以及在实际应用中优化这些工具的技巧。 一、美颜SDK简介 美颜SDK这些功能通过复杂的图像处理算法实现&#xff0c;SDK的存在大大简化了开发者的工作&#xff0c;使他们无需从零开始编写…

项目3:从0开始的RPC框架

一. 基本概念 区别于传统的增删改查型的业务项目&#xff0c;本项目侧重于开发框架&#xff0c;并且涉及架构方面的技术知识点。 1. 什么是RPC&#xff1f; 远程过程调用&#xff08;Remote Procedure Call&#xff09;&#xff0c;是一种计算机通信协议&#xff0c;它允许程…

GAT1399协议分析(10)--视频定义及解析

一、官方定义 二、字段解析 VideoID 类型BasicObjectID 解析参考GAT1399协议分析(8)--ImageInfo字段详解-CSDN博客 InfoKind 采集类型

小程序自定义marker弹出框教程

需求背景 微信小程序开发&#xff0c;需要使用腾讯地图显示自定义marker&#xff0c;并且点击marker后弹出自定义的customCallout&#xff0c;并且customCallout的内容为用户点击marker的时候再从后台接口获取数据。 百度了一圈后发现居然没有一篇文章可以一次性完成&#xf…