充分发掘Subversion的资源库共享功能

宝塔 Apache 部署 Node.js 项目:挂到子路径,不影响同机其他站点 阅读详情

转自:http://www.javayou.com/showlog.jspe?log_id=972&cat_id=3

PS: IBM 不喜欢, 我喜欢

充分发掘Subversion的资源库共享功能

在上一篇文章《用Subversion构建版本控制环境》中,我们就Subversion的特性、安装以及如何通过各种客户端来操作资源库进行了详细的介绍。文章中Subversion是以独立的服务方式运行,我们必须借住一些特定的客户端,例如Subvresion本身提供的客户端命令行程序、 Eclipse插件以及集成在Windows资源管理器的TortoiseSVN工具。这些工具对于开发者而言当然是必须的,但是当我们有需要将资源库发布在互联网上的时候,就会让我们的用户操作起来非常不方便,用户可能仅仅是需要浏览一下项目,却要他安装一堆程序,这难免让人觉得繁琐。

怎么让我们的用户可以通过一些常用的程序例如资源管理器或者是浏览器就可以方便的浏览Subversion的资源库呢?因此本文将充分的发掘 Subversion在资源库共享方面的功能,同时对Subversion在权限控制方面的内容进行详细的介绍,同时也将详细介绍如何将已有的CVS资源库转到Subversion上来。

我们曾经提到过Subversion相比较而言在共享方面的功能是大大的超过了CVS系统,它可以通过Apache服务器提供基于 WebDAV/DeltaV协议的支持。有了它你就可以通过资源管理器或者浏览器对资源库进行浏览以及操作。接下来我们将详细介绍如何安装并使用这个功能。(本文的所有软件的安装都是在Windows系统下进行)

1. 安装Apache HTTP服务器

到http://httpd.apache.org下载最新的Apache服务器2.0.54版本的Windows安装程序apache_2.0.54-win32-x86-no_ssl.msi,下载完毕直接安装,使用默认设置进行安装即可,安装过程不再累赘。安装完毕后使用浏览器打开网址http://localhost 检查安装是否成功完成。

如果Apache无法启动请检查是否机器上已经装有IIS,把IIS停掉后再启动Apache服务进行测试。

2. 安装Subversion

Subversion的安装已经在上一篇文章中详细的介绍过了,如果你还不知道怎么安装Subversion请参照《用Subversion构建版本控制环境》。请确保将{subversion}/bin目录是否在系统的PATH变量中存在,如果不存在请加上。

有一点需要说明的是,使用跟Apache HTTP服务器结合的方式,你无需再启动SVNService服务。

3. 配置Apache HTTP服务器

首先在Subversion的安装目录下的bin子目录找到这样两个文件mod_dav_svn.so和mod_authz_svn.so,将这两个文件复制到Apache安装目录下的modules子目录,另外还有四个文件分别是intl3_svn.dll、libdb43.dll、 libeay32.dll、ssleay32.dll,把这四个文件拷贝到subversion的bin目录或者是modules目录。

打开Apache的配置文件httpd.conf,我们需要在该配置文件中通过LoadModule指令来加载Subversion的DAV模块,例如下面一行信息。

LoadModule dav_svn_module modules/mod_dav_svn.so

需要注意的是,因为Apache本身带有mod_dav模块,如果你的Apache中这个模块是动态 加载的而不是直接编译进Apache的可执行文件中的话,你应该确保上面的指令在mod_dav模块后面进行加载,默认的情况下mod_dav模块是不启用的,你需要把它前面的注释去掉,如下:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so

同时另外一个模块mod_authz_svn模块也需要进行加载,可以把它放置在mod_dav_svn后,例如:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

接下来我们必须告诉Apache我们的资源库所在的路径,可以通过Location指令来完成这个设置。因为不希望为每个单独的项目都进行单独的设置,所以我们把所有项目都存放在统一的资源库目录,那么可以使用SVNParentPath指令来指定存放所有项目的路径。在httpd.conf文件最后添加下面配置:


    DAV svn
    SVNParentPath d:/svn/repository

这样我们就可以通过http://myhost/svn/<项目名> 来访问存放于资源库d:/svn/repository中的指定项目。当然有可能你并不希望某个项目提供这样一种访问方式,这时候你可以使用SVNPath为每个项目进行单独的设置,SVNPath的使用方法如下:


    DAV svn
    SVNPath d:/svn/repository/project1

同样把这段配置放在httpd.conf最后,重启Apache HTTP服务即可通过http://myhost/svn/project1 来访问project1项目的资源库。

应该提醒的是,所有的这些访问都是匿名的,任何用户只要能访问这台机器都可以访问你所设定的资源库,他可以对项目进行浏览、检出或者是提交,我相信你肯定不希望发生这样的事情,接下来我们将介绍如何做好访问的权限控制。

现在我们先试着用Subversion自带的客户端提交一个项目以便于接下来的测试,随便弄一个项目,执行下列命令将项目加到资源库中。

输入:svn import . http://localhost/svn -m "test"
输出:svn: PROPFIND request failed on '/svn'svn: PROPFIND of '/svn': 403
Forbidden (http://localhost)

怎么回事?403 Forbidden?原因是我们必须先给项目创建资源库,D:/svn/repository只是我们存放所有项目的目录,我们必须在这个目录下创建要提交项目的资源库。使用下面命令先给项目创建好资源库

svnadmin create d:/svn/repository/project1

再次执行import命令后,就可以成功的导入项目。打开浏览器输入网址:http://localhost/svn/project1 看看你刚提交了什么:)

现在我们回顾一下新建一个项目的过程:首先必须使用svnadmin工具创建项目的资源库,然后再导入项目文件。

4. 访问用户的身份验证

在确定对访问用户的权限控制之前,你必须规划好是对整个资源库中的所有项目还是单独的某一个项目进行统一的身份验证, 也就是我们前面讲到的是使用SVNParentPath还是SVNPath的问题。

最简单的身份验证方式是使用Basic HTTP Authentication机制,该方式通过用户名和口令对访问用户进行身份验证。我们可以直接通过Apache提供的支持进行设置。Apache提供一个htpasswd工具来管理用户名和口令。接下来我们利用这个工具来添加两个用户。

在命令行窗口中转到Apache所在的目录,假设是 D:/Apache/bin,执行下列命令

说明:创建用户liudong1
输入:htpasswd –cm D:/svn/svn_auth_passwd liudong1
说明:使用-c参数来创建一个passwd文件
输出:
New password: *****
Re-type new password: *****
Adding password for user liudong1
说明:创建用户liudong2
输入:htpasswd –m D:/svn/svn_auth_passwd liudong2
说明:passwd文件已经创建,无需再使用-c参数
输出:
New password: *****
Re-type new password: *****
Adding password for user liudong2

打开D:/svn/svn_auth_passwd文件,密码使用MD5加密过了,而且同样的密码加密出来的内容却不相同,估计跟用户名也是有一点关系,内容如下:

liudong1:$apr1$5G3.....$x5jgK.sGp/Y3EFSXGMtoE.
liudong2:$apr1$cG3.....$IM5m73cqw8N8ZsMcJnKeX.

接下来我们必须告诉Apache服务器如何使用这个passwd文件,打开httpd.conf找到刚才我们添加的Location配置的位置,修改如下:


DAV svn
SVNParentPath d:/svn/repository
AuthType Basic
AuthName "Subversion repository"
AuthUserFile d:/svn/svn_auth_passwd
Require valid-user

重新启动Apache HTTP服务器,使用浏览器打开 http://localhost/svn/project1 你将会看到要求登录的对话框如下图所示(我所使用的是Opera 8浏览器),输入你刚设置的用户名和口令即可。

这就是利用Basic HTTP Authentication机制对用户进行访问控制的方法。你还可以使用SSL证书管理来加强Subversion的安全性(HTTPS的配置属于 Apache HTTP服务器的范畴,请参照Apache的文档),甚至你可以对设置对某些操作才需要验证用户的身份以及赋予不同用户对不同目录的操作权限,以及如何使用Windows的域帐号进行身份的验证。这些内容可以参考Subversion提供的文档svn-book.pdf的第六章——服务器配置。

以上介绍的是Subversion跟Apache结合提供基于HTTP方式的共享功能以及如何对用户进行身份的验证。接下来我们介绍大部分CVS用户非常关系的——如何将现有的CVS资源库移植到Subversion下。

我们可以通过一个cvs2svn的工具来将CVS资源库转到Subversion服务器上。Cvs2svn是一个用Python写的转换脚本,它的作用是用来一次性的从CVS转到Subversion,你不要指望它帮你同步CVS和Subversion资源库。如果你并不需要项目的一些历史修改信息,那么你最好先从CVS获取最新版本,然后提交到Subversion资源库中,这是最简单直接而有效的方法。如果你需要保留CVS意见的所有修改记录,那么接下来我们就是介绍如何通过cvs2svn来转换你的资源库。

首先我们需要安装Python,因为cvs2svn是用Python写的一些脚本。到 http://www.python.org/download/ 下载最新版本的Python for Windows的安装程序python-2.4.1.msi,按照默认的方式安装Python,假设安装目录是C:/Python。接下来下载cvs2svn,下载地址是:http://cvs2svn.tigris.org/servlets/ProjectDocumentList?folderID=2976,用WinRAR解压到任一个目录下。打开命令行窗口转到cvs2svn所在的目录先测试一下python,执行C:/python/python cvs2svn,这时候会输出cvs2svn的帮助信息。

由于cvs2svn用到了GUN sort工具,因此我们还必须到http://unxutils.sourceforge.net/ 下载UnxUtils.zip,把该压缩包下的usr/local/wbin/sort.exe文件解压到cvs2svn目录中;同时我们还需要下载RCS的一个工具co.exe,到http://www.cs.purdue.edu/homes/trinkle/RCS/ 下载rcs57pc1.zip,把该压缩包中的bin/win32下的rcslib.dll以及co.exe这两个文件同样解压到cvs2svn目录中。

接下来我们开始转换资源库,输入以下命令
C:/Python/python cvs2svn –s d:/svn/repository/project1 /project1

其中我们假设project1是原有CVS资源库中的一个项目。
下面是在我的机器上转换完毕后cvs2svn显示详细的统计信息:

cvs2svn Statistics:
------------------
Total CVS Files:                 7
Total CVS Revisions:             7
Total Unique Tags:               0
Total Unique Branches:           0
CVS Repos Size in KB:         2261
Total SVN Commits:               2
First Revision Date:    Sat Sep 03 15:05:26 2005
Last Revision Date:     Sat Sep 03 15:05:27 2005
------------------
Timings:
------------------
pass 1:     0 seconds
pass 2:     0 seconds
pass 3:     0 seconds
pass 4:     0 seconds
pass 5:     0 seconds
pass 6:     0 seconds
pass 7:     0 seconds
pass 8:     1 second
total:      3 seconds

转换完毕后我们用浏览器打开 http://localhost/svn/project1 即可看到

点击trunk链接就可以看到项目的所有文件,接下来可以把你需要转换的项目重复执行上面的步骤即可。

以上是本文要介绍的内容,涉及实际应用中经常要面临的问题。以独立服务方式运行的Subversion其守护端口是3690,我们通过其跟 Apache HTTP服务器结合使之可以方便的在互联网上进行资源库的发布;同时对于现在正在使用CVS的用户来讲可以通过cvs2svn来转换已有的资源库到 Subversion上,这可打消CVS用户在考虑移植时候的顾虑。


参考资料

《用Subversion构建版本控制环境》
http://www-128.ibm.com/developerworks/cn/opensource/os-subversion/
Subversion的官方网站  http://subversion.tigris.org/
CVS2SVN    http://cvs2svn.tigris.org/
Apache网站    http://httpd.apache.org/
Python官方网站   http://www.python.org/
Windows域用户验证模块 http://tortoisesvn.tigris.org/mod_auth_sspi.zip

Unity技能系统核心:从理论到实践构建可扩展的Buff管理器 本文深入探讨了Unity游戏开发中构建可扩展技能系统的核心——Buff管理器。通过剖析三层架构(数据、逻辑、渲染)与独立组件管理模式,提供了从Buff数据定义、管理器核心实现到可视化编辑器搭建的完整实践方案,旨在解决技能系统维护难题,提升开发效率与代码质量。 阅读详情

相关推荐

在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置

在pycharm中学习opencv图像处理安装python下载python安装包开始安装安装pycharm社区版下载pycharm开始安装如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 安装python 使用pycharm学习opencv应该是最简单的了,对新手比较友好,

steveqobs 7710

[Subversion]使用密碼文件认证,添加新用户

Subversion for Windows 安裝指南在家裡架的時候本來也想依樣畫葫蘆的可是到後來才發現我Windows不是Sever版沒有AD可設>所以也不能使用Windows認證機制 只好改用密碼文件認證參考文章http://blog.nona.name/archives/135.html Apache httpd.conf  

抢财猫股票课堂 4568

GEE去云处理代码段解读(位运算)

GEE去云处理代码段解读,包含位运算符号解读、bitwiseAnd()函数、eq()函数解读

jiekeheiguanglan的博客 2068

Subversion文件加锁

Subversion对于文件的管理分为文本文件和二进制文件,对于文本文件使用subversion可以进行行级别的管理,但是对于二进制文件,subversion使用锁的方式管理,所有的加锁文件都是只读的,而且在本地拷贝对应了一个锁令牌,下面我们模拟下加锁和解锁的过程。         用户Gongqingkui新建readme.doc文件,使用svn status检查状态,发现有了新建的readm

巩庆奎 3286

实战指南!基于STM32的智能环境监测系统(代码+硬件设计+云端控制)

本文详细介绍了基于STM32的智能环境监测系统的设计与实现,包括硬件选型、电路设计、软件架构和云端控制。系统通过DHT11温湿度传感器和MQ-2烟雾传感器实时监测环境数据,STM32F103C8T6主控芯片处理数据并通过ESP8266上传至中国移动物联网平台,支持手机APP远程监控。项目成本低、稳定性高,适合智能家居和环境监测应用。

weixin_29194817的博客 433

179、运动控制中的行业标准:机器人安全标准ISO 10218

今天这篇笔记,就把我踩过的坑和标准里的硬骨头掰开揉碎讲清楚。

m0_50546716的博客 169

【subversion】svn服务端部署及帐密权限配置

专题:Linux应用服务配置 各类Linux软件安装配置 更多内容请点击 我的博客 查看,欢迎来访。 Subversion(SVN),是一个集中式项目版本管理工具。 可以记录每一次文件和目录的修改情况,以版本号存储,可以根据这个版本号进行还原; 不同的用户可以随时从服务器端更新修改的文件,达到在开发中的实时共享; 在线安装 参考官方教程安装: http://subversion.apac...

吾星喵的博客 1722

国科大学习资料--VLSI测试与可测试设计--2020期末考试试题

国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 一、概念题 1简述可测试性测度与两个主要的测度指标的含义; 2以March C-算法为例,说明March算法的构成,以及March C-算法的故障覆盖率; 3“效果-原因”诊断法和“原因效果诊断法”的不同; 4列举四条扫描设计时出现的问 题及解决办法; 5最少写出1149.1与1500的五点不同; = = = = =

无名何许人的博客 1150

Subversion权限控制

当初按照网上的一篇文章装完SVN后,很长一段时间都以为Apache+Subversion是必须的组合,认为Subversion生来就是通过Http访问的,直到最近同一个项目参与开发的人增多后,感觉SSPI认证不能满足一些要求,才开始进一步研究SVN。当然,下面的认识仍然很初步Subversion的权限控制有3种方式: SSPI(windows帐号管理)(缺点非常明显:能够访问SV

孤星泪 1657

淘系商品的成长密码:历史与趋势透视

本文分析了淘系商品的发展历程,从早期的市场探索到如今的行业领先地位,深入探讨了技术创新、供应链优化、用户需求洞察等关键因素在淘系商品成功中的作用。通过对平台不断完善商品生态、提升购物体验和服务的过程分析,文章总结了淘系商品在竞争激烈的市场中如何通过创新应对挑战并推动电商行业的进步。未来,随着消费趋势变化和新兴模式的兴起,淘系商品将在更大范围内发挥其市场影响力。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

基于STM32L4XX、HAL库的ICP-10111压力传感器驱动程序设计

define ICP10111_CMD_MEAS_ULN 0x7866 // 超低噪声模式。#define ICP10111_CMD_MEAS_LP 0x609C // 低功耗模式。#define ICP10111_CMD_MEAS_LN 0x70DF // 低噪声模式。#define ICP10111_CMD_MEAS_N 0x6825 // 正常模式。ICP10111_MODE_LN, // 低噪声。// 等待测量完成(根据模式不同等待时间不同)

zhusl6688的博客 417

[转]Subversion的权限控制

在阅读本文之前,请确定你已经知道了Subversion基本的服务器管理,知道了svnserve或Apache的配置,清楚如何设置用户和密码。关于svnservee的配置可以看我们的《Subversion快速入门教程》和《用Apache和Subversion搭建安全的版本控制环境》,对于一些细节情参考《使用Subversio...

weixin_30873847的博客 150

如何使用CPU-Z获取内存条频率信息(编程)

当我们需要获取计算机内存条的频率信息时,可以利用CPU-Z这个工具来实现。CPU-Z是一款专门用于获取计算机硬件信息的工具,它提供了API接口,我们可以通过编程的方式来获取内存条频率信息。你可以从CPU-Z官方网站下载适用于你的操作系统的CPU-Z程序,并从安装目录中找到。函数,我们可以初始化CPU-Z,如果返回值不为0,则表示初始化失败。函数来获取内存条频率信息,如果返回值小于等于0,则表示获取失败。函数来初始化CPU-Z并获取内存条频率信息。最后,我们将获取到的内存条频率信息打印输出,并使用。

ByteProwl的博客 460

SVN创建不了资源库位置 解决方案

提示错误信息: svn: Unable to connect to a repository at URL 'http://192.168.0.20/demo' svn: Access to 'http://192.168.0.20/demo' forbidden 解决方法如下: 1. 查看Eclipse中使用的是什么SVN Interface  查看

小静的专栏 9206

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

linux 查找svn相关目录

 find / -name "*svn*"

xuhonglei_2004的专栏 7681

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Subversion的配置和使用说明

Subversion的配置和使用说明 john2007-08-18 1. 软件下载2. 服务器和客户端安装3. 建立版本库(Repository)4. 配置用户和权限5. 运行独立服务器6. 初始化导入7. 基本客户端操作8. 分支与合并1,软件下载* 下载Subversion服务器程序。到官方网站的下载二进制安装文件,目前可以下载svn-1.4.4-setup

BTXWUHEN的专栏 1614

Subversion版本管理工具服务器搭建与基本用法

搭建SVN服务端需要安装Subversion(服务端)和Tortoise(客户端) 安装完这两样东西之后,随便打开一个目录,鼠标右键任意空白处,发现右键菜单里已经多出了两个新选项 check out, TortoiseSVN,说明Tortoise安装成功 首先验证Subversion是否安装成功,进入DOS下: 输入命令 SVN help,系统显示SVN命令帮助列表,则证明Subversi

Taoism的博客 2228

Apache Flink 零基础

低代码、易开发、易维护、可读性强,适配实时数仓分层、指标统计、数据清洗、多源数据关联等绝大多数业务场景,支持Kafka、Doris、MySQL、Hive等主流组件读写,是企业实时开发主流方案。:接收客户端提交的实时/离线任务、解析任务逻辑、生成DAG执行流程图、分配集群资源、调度任务运行、管理Checkpoint/Savepoint、处理任务故障重启、协调集群节点状态。手动触发的状态快照,主要用于任务升级、代码迭代、版本更新、集群迁移、任务重启等运维操作,保证业务无感知、数据不错乱、任务无缝恢复。

2402_85354210的博客 327

每天认识一个组件:Apache Flink

Flink 的核心价值不只是“实时”,而是把持续数据流、事件时间、业务状态和一致恢复放入同一个分布式运行时中。对于实时指标、持续 ETL、CDC、欺诈检测和事件驱动应用,它提供了一套比“消息队列加手工状态管理”更完整的计算模型。

weixin_47983718的博客 645

每天认识一个组件:Apache StreamPark

StreamPark 解决的核心问题,不是如何执行流计算,而是如何让流处理应用以统一、可管理的方式进入生产环境,它把 Flink 应用开发与运维中的重复工作收拢到统一控制面。

weixin_47983718的博客 512

京东 Apache Doris 湖仓查询优化实践:从多引擎统一到百万级查询

京东基于 Apache Doris 构建统一湖仓查询引擎,支撑日均百万级查询与 PB 级数据扫描。深入解析 Presto、StarRocks 迁移、分区裁剪、Split 调度、向量化执行及 AI Agent 混合负载优化实践。

SelectDB 406

Casvisor 详解:Apache-2.0 开源堡垒机,一个 Go 二进制实现 SSH、RDP、VNC、Telnet 与会话录像

Casvisor 是 Apache-2.0 的开源堡垒机,用 Go 和 React 写,一个二进制里同时做了 SSH、RDP、VNC、Telnet 四种远程协议,带权限、命令审计、会话录像回放、SSH 网关和网域网关,默认 SQLite 加本地账号开箱即用。

Casbin开源社区 142

Apache Doris 基础

需根据业务数据特征精准选择,选错模型会导致数据错误、查询性能极差。

2402_85354210的博客 364

Apache2 Bash CGI:动态时间页面与请求验证

1. 服务介绍 CGI 让 Apache 执行服务端程序并将输出作为 HTTP 响应。本文用固定 Bash 脚本输出系统时间,说明响应头后的空行、模块与执行权限;不接受用户输入或拼接系统命令。 2. 准备运行环境 UOS/Debian 系 Apache2、Bash、管理员配置权限及隔离测试站点。先确认 Apache MPM 和现有虚拟主机,不将整个上传目录开

weixin_44524357的博客 240

Apache Doris 企业版怎么选?SelectDB 提供同源商业支持、私有化部署与信创适配

Apache Doris 企业版怎么选?了解 SelectDB 与 Doris 的同源关系、企业级商业支持、私有化部署、信创国产化适配,以及阿里云、华为云、腾讯云、AWS 云平台部署方案。

SelectDB 400

IIS + 安全狗模块导致 w3wp.exe 程序池崩溃(0xc0000005)踩坑实录

本文记录一次因安全狗IISModule64.dll内存越界导致w3wp崩溃的线上故障,引发接口中断一小时。故障主因是公网暴露的API站点遭海外扫描器攻击,触发防护模块漏洞(0xc0000005),程序池挂死且自动保护机制锁死,无法自愈。应急方案包括:重启程序池、封禁攻击源、部署事件触发式自动重启任务。长期建议:升级安全狗、启用云WAF或白名单访问控制,实现流量清洗前置,避免防护模块与业务耦合。核心启示:对小程序/APP接口,应优先采用来源白名单,从源头杜绝风险,构建分层防御体系。

u013334925的博客 163
上一篇: 用 Subversion 构建版本控制环境
下一篇: 为什么运行模拟器就一闪而过呢?“ClassFormatError: Bad version information”
luhao
博客等级 码龄26年 9粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值