Maven 私服的搭建与使用(一)
一、引言
在 Java 项目开发中,Maven 作为强大的项目管理和构建工具,极大地提高了开发效率,而 Maven 私服在开发过程中也扮演着至关重要的角色。私服是一种特殊的远程仓库,架设在局域网内,代理广域网上的远程仓库,供局域网内的 Maven 用户使用。当 Maven 需要下载构件时,它首先从私服请求,如果私服上不存在该构件,才从外部的远程仓库下载,缓存在私服上之后,再为 Maven 的下载请求提供服务。
搭建 Maven 私服有诸多好处。在带宽方面,对于一个团队或企业来说,如果所有成员都直接从中央仓库或其他公共远程仓库下载依赖,会消耗大量的外网带宽。有了私服后,只需首次从外网下载构件,后续团队成员都可从私服获取,大大节省了带宽资源 。比如在一个拥有 100 人的开发团队中,若每人每天因构建项目需从外网下载 100MB 的依赖,那么一天就会消耗 10GB 的外网带宽,而使用私服后,外网带宽消耗将大幅减少。
构建速度上,不停连接请求外部仓库相当耗时,特别是当项目配置了很多外部远程仓库时,构建速度会明显降低。使用私服,Maven 只需检查局域网内部私服的数据,构建速度便会有显著提高。假设一个项目构建时原本需要连接外部仓库 10 次,每次平均耗时 5 秒,那么构建一次就需要 50 秒,使用私服后,若连接私服平均每次耗时 1 秒,构建一次则只需 10 秒,构建效率大幅提升。
此外,在一些情况下,我们可能需要使用一些无法从外部仓库下载到的构件,比如 Oracle 的 JDBC 驱动由于版本原因不能发布到公共仓库中。建立私服后,便可以将这些构件部署到这个内部仓库中,供内部 Maven 项目使用。同时,私服还能提高稳定性,增强控制。当外网不可用时,Maven 构建有可能因为依赖没有下载而不可行,搭建并应用私服后,即使没有外网,如果该构件之前被其他人下载过就会存在私服上,此时再次依赖该构件就可以不用连接外网,直接从私服上下载到。
本文将详细介绍 Maven 私服的搭建与使用,帮助大家充分利用 Maven 私服提升开发效率。
二、Maven 私服简介
2.1 什么是 Maven 私服
Maven 私服是一种特殊的 Maven 远程仓库,它架设在局域网内 ,主要用于代理外部的远程仓库,如中央仓库以及其他远程公共仓库。私服的存在,就像是在局域网内建立了一个专属的资源中转站。当项目需要下载构件时,Maven 首先会向私服发起请求,如果私服中有该构件,就会直接下载到本地仓库供项目使用;若私服中没有,它才会去外部的远程仓库下载,然后将下载的构件缓存到私服,以便下次有相同需求时可以直接从私服获取 。这就好比你所在的社区建立了一个图书馆,大家需要借阅书籍时,先到社区图书馆找,如果没有,社区图书馆再去更大的图书馆借回来,同时把借回来的书存放在社区图书馆,方便下次借阅。这样一来,私服就大大提高了构件的获取效率,减少了对外部网络的依赖和重复下载。
2.2 Maven 私服的优势
- 节省带宽:在一个团队或企业中,如果没有私服,每个成员在构建项目时都直接从外部远程仓库下载依赖,会消耗大量的外网带宽资源。有了私服后,团队成员首次从外网下载构件到私服,后续其他人就可以直接从私服获取,大大节省了外网带宽。例如,一个拥有 50 名开发人员的团队,每天构建项目可能需要下载大量的依赖包,假设每个依赖包平均大小为 5MB,若没有私服,每天因下载依赖包消耗的外网带宽就可能达到 50 * 5MB = 250MB,而使用私服后,外网带宽的消耗会显著降低。
- 加快下载速度:私服位于局域网内,与外部远程仓库相比,从私服下载构件的速度更快且更稳定。在构建项目时,减少了等待依赖下载的时间,从而提高了构建效率。当项目依赖较多时,若直接从外部仓库下载,可能会因为网络波动等原因导致下载速度缓慢,甚至下载失败。而通过私服下载,由于网络环境更稳定,下载速度会得到明显提升,比如原本从外部仓库下载一个 20MB 的依赖包需要 1 分钟,从私服下载可能只需要 10 秒左右。
- 便于部署第三方构件:在实际开发中,有些构件无法从外部仓库下载到,如公司内部的私有构件、某些受版权限制的第三方库(如 Oracle 的 JDBC 驱动)等。建立私服后,就可以将这些构件部署到私服中,供内部 Maven 项目使用,方便团队成员共享和管理这些特殊的构件。
- 提高稳定性和增强控制:如果项目构建高度依赖外部远程仓库,当外部网络不稳定时,构建过程就会受到影响,甚至导致构建失败。而私服缓存了所需的构件,即使外部网络状况不佳甚至中断,只要私服中已经缓存了相应构件,Maven 项目依然能够正常构建 。此外,一些私服软件(如 Nexus)还提供了丰富的控制功能,如权限管理、版本控制等,可以对仓库进行更高级的管理,确保项目的稳定性和安全性。比如,通过权限管理,可以限制不同人员对构件的访问和操作权限,防止误操作或非法访问。
2.3 常见的 Maven 私服产品
- Nexus:由 Sonatype 公司推出,是目前最流行、使用最广泛的 Maven 私服产品。它提供了强大的仓库管理功能和构件搜索功能,基于 REST 架构,拥有友好的 UI 界面(基于 ext.js 的 REST 客户端),占用内存较少,并且使用简单文件系统而非数据库来组织数据 。Nexus 支持多种仓库格式,除了 Maven 仓库,还支持 npm、Docker 等仓库,能满足不同项目和团队的多样化需求。许多大型企业和开源项目都选择使用 Nexus 来搭建私服,例如一些互联网公司的内部项目开发中,Nexus 被广泛应用于管理项目依赖和构件。
- Artifactory:JFrog 公司开发的一款领先的构建制品仓库管理工具,支持各种构建工具,如 Maven、Gradle、npm 等。它具有高度可伸缩性和灵活的部署选项,可以根据企业的规模和需求进行定制化部署。Artifactory 提供了丰富的功能,包括版本控制、访问控制、安全扫描、依赖分析等,能够帮助企业更好地管理软件制品,保障项目的安全和稳定。不过,Artifactory 是一款商用产品,相比一些开源的私服产品,使用成本较高,但对于对功能和服务有较高要求的企业来说,它是一个不错的选择。
- Apache Archiva:这是由 Apache 软件基金会提供的开源 Maven 私服工具,提供了基本的仓库管理功能,适用于小型项目或对简单配置有需求的团队。它的优点是简单易用,部署和配置相对较为简便,对于一些资源有限、项目规模较小的团队来说,使用 Apache Archiva 搭建私服是一个经济实惠的选择 。虽然它的功能没有 Nexus 和 Artifactory 那么丰富和强大,但对于一些基础的仓库管理需求,如构件的存储、下载和简单的权限控制等,也能够很好地满足。
三、搭建 Maven 私服(以 Nexus 为例)
在众多 Maven 私服产品中,Nexus 以其强大的功能、友好的界面和广泛的应用而备受青睐,因此本文选择 Nexus 来详细介绍 Maven 私服的搭建过程。
3.1 准备工作
在搭建 Nexus 私服之前,需要确保系统中已经安装了 Java 环境。Nexus 要求 Java 版本为 1.8 及以上 ,你可以通过以下命令检查 Java 版本:
java -version
如果系统中没有安装 Java 或者 Java 版本不符合要求,请先安装或升级 Java 环境。
此外,还需要下载 Nexus 安装包。Nexus 官方提供了多种版本的下载,包括适用于 Windows、Linux 等不同操作系统的版本。你可以访问 Nexus 官方下载页面:https://help.sonatype.com/repomanager3/product-information/download,根据你的操作系统选择合适的版本进行下载。
3.2 下载与安装 Nexus
以 Windows 系统为例,下载完成后,得到一个压缩包(如nexus-3.x.x-01-win64.zip)。将压缩包解压到你希望安装 Nexus 的目录,例如D:\nexus 。解压完成后,进入解压后的nexus-3.x.x-01\bin目录,该目录下有nexus.exe文件。
启动 Nexus 有两种方式,一种是在命令行中运行nexus.exe /run,这种方式会在前台启动 Nexus,控制台会输出 Nexus 的启动信息,便于查看启动过程中的日志和错误信息;另一种方式是运行nexus.exe /install将 Nexus 安装为系统服务,然后通过net start nexus命令启动服务 ,这种方式适合在后台长期运行 Nexus,即使关闭命令行窗口,Nexus 服务依然会继续运行。
3.3 初始设置
Nexus 启动成功后,打开浏览器,访问http://localhost:8081(默认端口为 8081,如果在启动前修改了端口配置,则需使用修改后的端口),进入 Nexus 登录页面。
首次登录 Nexus 时,用户名是admin,密码需要从sonatype-work\nexus3\admin.password文件中获取 。打开该文件,复制其中的密码,然后在登录页面输入用户名和密码进行登录。登录成功后,系统会提示修改密码,按照提示设置新的密码。
为了提高私服的安全性,建议禁用匿名登录。在 Nexus 界面中,点击右上角的用户头像,选择 “Settings”,在左侧菜单中选择 “Anonymous”,将 “Allow anonymous users to access the server” 选项的勾选去掉,然后点击 “Save” 保存设置。这样,只有通过认证的用户才能访问 Nexus 私服。
3.4 认识 Nexus 中的仓库
Nexus 默认创建了多个仓库,这些仓库根据其用途和类型可以分为不同的类别。
- maven-central:这是一个代理仓库,它代理了 Maven 中央仓库,用于从中央仓库下载构件到私服。当本地项目需要某个构件时,如果私服中没有,就会从这个代理仓库去中央仓库查找并下载,然后缓存到私服中,方便后续再次使用。
- maven-releases:宿主仓库,用于存储项目发布的正式版本构件。通常,当项目开发完成,准备发布正式版本时,会将构件部署到这个仓库中。
- maven-snapshots:同样是宿主仓库,用于存储项目开发过程中的快照版本构件。快照版本是指在开发过程中,尚未正式发布的版本,这些版本可能会频繁更新,通过这个仓库可以方便地管理和获取这些快照版本的构件。
- maven-public:仓库组,它将多个仓库组合在一起,方便用户进行统一的访问。例如,它可以包含maven-central、maven-releases、maven-snapshots等仓库,当配置项目的依赖仓库时,只需要配置这个仓库组,就可以同时访问组内的所有仓库,简化了配置过程 。
3.5 配置私服
为了提高下载速度,我们可以将中央仓库的位置修改为阿里云镜像地址。在 Nexus 界面中,点击左侧菜单中的 “Repositories”,找到 “maven-central” 仓库,点击进入其配置页面。在 “Remote Storage” 部分,将 “URL” 修改为阿里云镜像地址:http://maven.aliyun.com/nexus/content/groups/public/,然后点击 “Save” 保存配置。
创建 hosted 类型的仓库,用于存储我们自己项目的发布版本(release)和快照版本(snapshot)。点击 “Create repository” 按钮,在弹出的仓库类型选择页面中,选择 “maven2 (hosted)”。
- 创建 release 仓库:在创建仓库的配置页面中,填写仓库的 “Name”(例如maven-releases),“Version Policy” 选择 “Release”,“Deployment Policy” 选择 “Allow redeploy”(允许重新部署,方便在开发过程中对构件进行更新),其他配置保持默认,然后点击 “Create repository” 按钮完成创建。
- 创建 snapshot 仓库:同样点击 “Create repository” 按钮,选择 “maven2 (hosted)”,在配置页面中填写 “Name”(例如maven-snapshots),“Version Policy” 选择 “Snapshot”,“Deployment Policy” 选择 “Allow redeploy”,其他配置默认,点击 “Create repository” 按钮完成创建。
在实际使用中,为了更好地管理权限,我们可以添加角色和用户。点击左侧菜单中的 “Security”,然后选择 “Roles”,点击 “Create role” 按钮创建新角色。在创建角色页面,填写角色的 “Name” 和 “Description”,并在 “Privileges” 部分为角色分配相应的权限,例如 “nx-repository-view-< 仓库名 >--read” 表示对某个仓库的读取权限,“nx-repository-view-< 仓库名>--write” 表示对某个仓库的写入权限等。根据实际需求为角色分配好权限后,点击 “Create role” 按钮完成角色创建。
创建用户,点击 “Security” 下的 “Users”,然后点击 “Create local user” 按钮。在创建用户页面,填写 “User ID”、“Password”、“Full Name” 等信息,并在 “Roles” 部分选择为该用户分配之前创建的角色,最后点击 “Create user” 按钮完成用户创建。通过这样的角色和用户管理,可以实现对不同人员访问和操作私服仓库的精细控制。
相关文章:
Maven 私服的搭建与使用(一)
一、引言 在 Java 项目开发中,Maven 作为强大的项目管理和构建工具,极大地提高了开发效率,而 Maven 私服在开发过程中也扮演着至关重要的角色。私服是一种特殊的远程仓库,架设在局域网内,代理广域网上的远程仓库&…...
java每日精进 3.06 【多数据源】
数据库连接池(Database Connection Pool) 基本信息 是一种用于管理数据库连接的技术。它通过预先创建一定数量的数据库连接,并将其缓存在池中,供多个客户端或应用程序使用,从而减少了每次请求时连接数据库的开销。 …...
Leetcode 3469. Find Minimum Cost to Remove Array Elements
Leetcode 3469. Find Minimum Cost to Remove Array Elements 1. 解题思路2. 代码实现 题目链接:3469. Find Minimum Cost to Remove Array Elements 1. 解题思路 这一题我没啥特别好的思路,就只能动态规划了,倒是也能过,不过总…...
多线程-CompletableFuture
简介 CompletableFuture:异步任务编排工具。java 8中引入的一个类,位于juc包下,是Future的增强版。它可以让用户更好地构建和组合异步任务,避免回调地狱。 在CompletableFuture中,如果用户没有指定执行异步任务时的线…...
常用限流算法解析与实现
一、固定窗口计数器法 原理:在固定时间窗口(如1秒)内统计请求次数,超过阈值则触发限流。 Java实现: public class FixedWindowCounter { private static final long WINDOW_MS 1000; // 1秒窗口 priv…...
Swift系列02-Swift 数据类型系统与内存模型
Swift 是一门现代的、安全的编程语言,其类型系统和内存模型设计对性能和安全性有着重要影响。本文将深入探讨 Swift 的数据类型系统与内存模型,帮助你更好地理解并利用这些特性来优化你的 iOS 应用。本文主要包含: 值类型和引用类型…...
如何不重启,生效windows环境变量
场景 使用php 进行composer 时,composer 要求php7.2以上,我常用的是7.1,不想来回修改,还是重启电脑 临时修改 打印当前环境变量 echo %PATH%临时修改当前环境变量(如果需要指定的值,可将全部复制出来&a…...
Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(二):训练与推理
Ubuntu20.04本地配置IsaacLab4 4.2.0的G1训练环境(二):训练与推理 训练推理 写在前面,本文档的实现需要IsaacLab的成功安装,可参考(一)。 训练 在IsaacLab目录下,isaaclab的conda虚…...
设计模式说明
23种设计模式说明 以下是常见的 23 种设计模式 分类及其核心思想、应用场景和简单代码示例,帮助你在实际开发中灵活运用: 一、创建型模式(5种) 解决对象创建问题,降低对象耦合。 1. 单例模式(Singleton&…...
K8s 1.27.1 实战系列(四)验证集群及应用部署测试
一、验证集群可用性 1、检查节点 kubectl get nodes ------------------------------------------------------ NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 3h48m v1.27.1 k8s-node1 Ready <none> …...
Artec Leo+Ray II 三维扫描仪成功为VR展数字化30吨重设备-沪敖3D
挑战:在贸易展上展示重达30吨的机械设备,同时克服设备搬运和展示的难题,减轻物流负担。。 解决方案:Artec Leo、Artec Ray II、Artec Studio、Blender、Unity、Microsoft HoloLens、HTC VIVE PRO 效果:在虚拟展厅中&am…...
Redis 各数据类型使用场景详解
1. 字符串(String) 场景 1:计数器(如文章阅读量) 问题: 高并发下对同一数值进行增减操作时,需保证原子性,避免竞态条件导致数据不一致。 频繁读写可能成为性能瓶颈。 解决方案&a…...
spark写数据库用连接池找不到driver类
最近遇到一个很离谱的bug,在写spark代码把数据写到mysql的时候考虑到连接的开销,所以用了HikariCP连接池,但是无语的是程序执行死活加载不到mysql的Driver类,但是解压了jar看到mysql-conn包就在lib下面,版本也是5.x的没…...
上传文件到对象存储是选择前端还是后端
对于云上对象存储的上传方式选择(前端直传或后端代理上传),需综合考虑安全性、性能、成本、业务需求等因素。 1. 推荐前端直传的场景 适用条件: 大文件上传(如视频、大型数据集)高并发场景(如…...
NanoMQ ds笔记250306
NanoMQ多版本下载地址 https://www.emqx.com/zh/downloads/nanomq NanoMQ官方文档 https://nanomq.io/docs/zh/latest/ NanoMQ 是一个专为物联网边缘计算设计的轻量级、高性能 MQTT 消息代理(Message Broker),由中国的开源物联网公司 EMQ 开…...
sqlmap:从基础用法到漏洞利用实战
1. sqlmap基础认知 sqlmap是一款开源的渗透测试工具,能自动检测和利用SQL注入漏洞,支持MySQL、Oracle、PostgreSQL等多种数据库管理系统。其设计旨在简化SQL注入检测流程,助力安全人员在复杂网络环境中快速定位与评估漏洞风险。它通过发送精…...
DFS学习笔记
题目描述 X 国王有一个地宫宝库。是 nm 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值…...
C++ STL string容器全解析
一、引言 在 C 编程的广阔领域中,字符串处理是一项极为基础且频繁的操作。从简单的文本解析,到复杂的文件读取与处理,字符串几乎无处不在。而 C 中的 string 容器,就像是一把瑞士军刀,为我们处理字符串提供了强大而便…...
React基础之项目创建
项目创建 create-react-app 项目名(小写) 运行 pnpm run start 在React中,使用的语法格式是jsx,也就是js与html相结合的形式 import logo from ./logo.svg; import ./App.css; function App() { return ( <div className"App"> <head…...
迷你世界脚本道具接口:Item
道具接口:Item 彼得兔 更新时间: 2023-04-26 10:26:18 继承自 Actor 具体函数名及描述如下: 序号 函数名 函数描述 1 getItemName(...) 获取道具名称 2 getItemId(...) 获取actor对应的道具ID,如球类等 3 getDropItemNum(...) …...
Unity摄像机跟随物体
功能描述 实现摄像机跟随物体,并使物体始终保持在画面中心位置。 实现步骤 创建脚本:在Unity中创建一个新的C#脚本,命名为CameraFollow。 代码如下: using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…...
计算机毕业设计SpringBoot+Vue.js青年公寓服务平台(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
vue实现日历签到效果
在工作任务进行时,有一个签到日历的功能需求要实现,经过文档查询和样式优化实现了需求,在此记录一下。 技术背景:vue2vant(样式控件) less 一个公共样式文件 html实现部分: <div class"calenderB…...
(十 八)趣学设计模式 之 观察者模式!
目录 一、 啥是观察者模式?二、 为什么要用观察者模式?三、 观察者模式的实现方式四、 观察者模式的优缺点五、 观察者模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…...
笔记:在Git中.gitmodules文件的功能和作用和如何使用
一、目的:简单介绍下在Git中.gitmodules文件的功能和作用已经 .gitmodules 文件是 Git 子模块(submodule)功能的一部分,用于管理和配置子模块。子模块允许一个 Git 仓库包含另一个 Git 仓库作为其子目录,这对于管理依赖…...
Swift 常量
Swift 常量 引言 Swift 是一种由苹果公司开发的编程语言,主要用于 iOS、macOS、watchOS 和 tvOS 等平台的应用开发。在 Swift 中,常量是一种不可变的变量,它用于存储固定不变的值。了解和使用常量是 Swift 编程的基础,本文将详细介绍 Swift 常量的概念、类型、声明以及使…...
Ubuntu20.04双系统安装及软件安装(七):Anaconda3
Ubuntu20.04双系统安装及软件安装(七):Anaconda3 打开Anaconda官网,在右侧处填写邮箱(要真实有效!),然后Submit。会出现如图示的Success界面。 进入填写的邮箱,有一封Ana…...
Google AI概览升级,AI模式全新登场!
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别
1. 什么是智能体 将大语言模型作为一个推理引擎。给定一个任务, 智能体自动生成完成任务所需步骤, 执行相应动作(例如选择并调用工具), 直到任务完成。 2. 先定义工具:Tools 可以是一个函数或三方 API也…...
nginx 配置403页面(已亲测)
问题:GET请求访问漏洞url即可看到泄露的内网ip 解决方式: 1.配置nginx 不显示真实Ip 2.限制接口只能是POST请求 具体配置: 编写一个403.html 在nginx的配置文件中,配置location参数: location /api/validationCode…...
安卓基础组件Looper - 02 native层面的剖析
文章目录 native使用使用总结创建Looper构造函数创建(不推荐)使用举例源代码 Looper::prepare 获取Looper可忽略初始化Looper主动休眠 pollAll主动唤醒 wake 发送消息 sendMessage轮询消息 native使用 Android Native Looper 机制 - 掘金 (juejin.cn) /system/core/libutils/…...
nodejs关于后端服务开发的探究
前提 在当前的环境中关于web server的主流开发基本上都是java、php之类的,其中java spring系列基本上占了大头,而python之流也在奋起直追,但别忘了nodejs也是可以做这个服务的,只是位置有点尴尬,现在就来探究下nodejs…...
QTday4
1:是进度条通过线程自己动起来 mythread.h #ifndef MYTHREAD_H #define MYTHREAD_H #include <QThread>class mythread : public QThread {Q_OBJECT public:mythread(QObject* parent nullptr); protected:virtual void run() override; private: signals:virtual voi…...
服务器时间同步
方法一 [rootbogon hwh-ansible]# cat time-sync.sh #!/bin/bash # NTP 服务器信息 NTP_SERVER"192.168.42.12" PASSWORD"123456" # 多个 IP 地址 HOSTS("192.168.42.8" "192.168.42.9" "192.168.42.10" "192.168.42…...
蓝桥杯备赛日记【day1】(c++赛道)
一、裁纸刀问题(2022、规律、思维、省赛) 解法思路: 参考题目给出的例子发现。不管要裁剪多少次。最外围的四次是固定的。然后通过观察发现,我们的行的裁剪次数为(m-1) 次,而每行都需要裁剪列数…...
DeepSeek大模型 —— 全维度技术解析
DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!点我试试!! 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1.1…...
嵌入式开发:傅里叶变换(5):基于STM32,实现CMSIS中的DSP库
目录 步骤 1:准备工作 步骤 2:创建 Keil 项目,并配置工程 步骤 3:在MDK工程上添加 CMSIS-DSP 库 步骤 5:编写代码 步骤 6:配置时钟和优化 步骤 7:调试与验证 步骤 8:优化和调…...
Ubuntu 24.04 配置ODBC连接ORACLE 11G数据库
1. 安装必要工具和驱动 1.1 安装unixODBC和依赖库 # apt update # apt install unixodbc unixodbc-dev libaio1 执行失败,报错 libaio1包找不到,先跳过,安装其他两个。 # apt install unixodbc unixodbc-dev 安装成功 1.2 下载Oracle…...
upload-labs靶场 1-21通关
目录 1.Pass-01 前端绕过 分析 解题 2.Pass-02 服务器端检测--修改IMME 分析 解题 3.Pass-03 黑名单绕过 分析 解题 4.Pass-04 .htaccess绕过 分析 解题 5.Pass-05 . .绕过和.user.ini绕过 分析 解题 6.Pass-06 大小写绕过 分析 解题 7.Pass-07 空格绕过 分…...
Docker新手入门(持续更新中)
一、定义 快速构建、运行、管理应用的工具。 Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用。 所谓镜像,就是将应用所需的函数库、依赖、配置等应用一起打包得到的。 所谓容器,为每个镜像的应用进程创建…...
c语言笔记 指针篇(上)
1.指针 在计算的存储器中有很多的存储单元,我们的操作系统把这些存储单元以字节为单位进行编号,也就是每个存储单元(字节),都有编码。这些编码在我们内存中就称为地址。一个字节有八位,位是存储信息的最小单…...
要查看 SQLite 数据库中的所有表,可以通过查询 SQLite 的系统表 sqlite_master
要查看 SQLite 数据库中的所有表,可以查询 SQLite 的系统表 sqlite_master。 每个 SQLite 数据库都包含一个名为 sqlite_master 的系统表。该表定义了数据库的模式,存储了数据库中所有表、索引、视图和触发器等对象的信息。 通过查询 sqlite_master&am…...
C#释放内存空间的方法
目录 前言释放 C# 对象内存的六种方法1、手动释放内存空间2、使用 Using 语句3、使用 垃圾回收器4、GC.Collect() 方法5、GC.WaitForPendingFinalizers() 方法6、WeakReference 类 注意 前言 当不再需要对象时释放内存空间对于防止内存泄漏和提高应用程序性能至关重要。C# 提供…...
mapbox基础,使用点类型geojson加载symbol符号图层,用于标注文字
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️symbol符号图层样式二、🍀使用点类型…...
Java数组详解/从JVM理解数组/数组反转/随机排名/数组在计算机如何存储
本文详细讲解了数组的定义、数组的访问方法、数组的遍历、静态数组和动态数组、以及数组中的自动类型转换、引用类型指向数组的地址、以及从JVM理解数组、空指针异常、数组反转、随机排名的案例。 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索…...
网络安全wireshark题目
一、填空题: 网络安全的目标是在计算机网络的信息传输、存储与处理的整个过程中,提高 物理逻辑上 的防护、监控、反应恢复和 对抗 的能力。SSL协议是在网络传输过程中,提供通信双方网络信息 保密性 和 可靠性 。TCP/IP网络安全管理…...
TomcatServlet
https://www.bilibili.com/video/BV1UN411x7xe tomcat tomcat 架构图,与 jre,应用程序之前的关系 安装使用 tomcat 10 开始,api 从 javax.* 转为使用 jakarta.*,需要至少使用 jdk 11 cmd 中默认 gbk 编码,解决控制…...
Seurat - Guided Clustering Tutorial官方文档学习及复现
由于本人没有使用过Seurat4.0,而是直接使用的最新版。所以本文都是基于Seurat5.2.0(截止2025/3/6)来进行撰写。 参考的官方教程来进行学习(上图中的 Guided tutorial-2.700 PBMCs),肯定没有官方文档那么全面…...
Python数据分析面试题及参考答案
目录 处理 DataFrame 中多列缺失值的 5 种方法 批量替换指定列中的异常值为中位数 使用正则表达式清洗电话号码格式 合并两个存在部分重叠列的 DataFrame 将非结构化 JSON 日志转换为结构化表格 处理日期列中的多种非标准格式(如 "2023 年 12 月 / 05 日") 识…...
极狐GitLab 正式发布安全版本17.9.1、17.8.4、17.7.6
本分分享极狐GitLab 补丁版本 17.9.1、17.8.4、17.7.6 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任何…...