《SVN与旅游环境的搭建-笔记》

《SVN与旅游环境的搭建-笔记》

回顾

有哪三种仓库类型

仓库类型
本地仓库:放在本地,相当于缓存。
中央仓库:官方
私服仓库:在公司的内部,局域网中

pom.xml 说出下面元素的含义

元素名称说明
groupId公司,团队:代表一级或多级目录
artifactId项目或模块名:代表一级目录
version版本:代表一级目录
packaging指定打包的类型:jar或war
dependency导入一个依赖包
scope指定依赖范围
plugin导入插件

说出以下maven命令的作用

命令说明
mvn clean清除target目录
mvn compile编译main目录
mvn test执行test目录
mvn package将项目打包到target目录
mvn install将打好的包放到本地仓库

常见的依赖范围见下表

依赖范围编译classpath测试classpath运行时classpath
compileYYY
providedYY
runtimeYY
testY

ThreadLocal中的方法

功能:解决线程安全问题,以空间来换安全,底层是Map结构。

键:当前线程对象

方法说明
new ThreadLocal<T>()创建一容器对象,指定容器中类型
void set(T value)添加值
T get()取值
void remove()删除值

学习目标

  1. 能够了解SVN的作用及相关术语
  2. 了解常用的版本控制工具有哪些,理解checkout、update、commit的作用
  3. 掌握SVN常用操作
  4. 掌握VisualSVN和Tortoise SVN
  5. 掌握IDEA操作SVN

学习内容

SVN概述

目标

企业项目开发中一些常见问题

为什么要使用SVN

  1. 代码备份:代码除了在本地有一份,在服务器上也应该备份
  2. 项目分享:项目架构师搭好了开发环境,需要分发给项目组中所有的成员,让他们在这个基础上开发
  3. 项目整合:项目分给多个程序员开发,每个人开发1个功能模块,开发完成了后所有人需要把各自的项目都整合起来,整合成一个完整的项目。
  4. 权限控制:不同的模块的成员不能查看其它团队的代码,如:开发人员可以修改,测试人员只能查看
  5. 代码回溯:发现这几天的代码有问题,需要回到前面的哪个版本
  6. 协同修改:两个成员分别修改了同一个类中两个不同的方法

SVN的作用

作用:用于源代码和文档管理的工具,版本控制工具。

全称:Subversion,用于实现多个人共同开发一个项目,达到协同开发目的的工具。对整个软件开发过程中的源码和文档,进行版本控制和管理。

主流的版本控制工具

  1. VSS:Visual Source Safe(Microsoft Visual Studio成员)主要任务是负责项目文件的管理
  2. CVS:一套用于进行文件版本控制软件,大多数软件开发公司都使用SVN替代了CVS。
  3. SVN:Apache软件基金会名下的一套用于进行文件版本控制软件,它是一种集中式版本控制工具。命令方式,要记命令。CS结构
  4. GIT: 一个开源的分布式版本控制系统,最早是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

SVN的工作模式

CS(Client Server)结构:每个程序员使用客户端去连接SVN服务器,从服务器上下载源代码,修改完成以后上传到SVN服务器上。

常用的操作说明

  1. Share Project:共享项目,由系统架构设计师在第一次把项目结构搭好以后共享整个项目到SVN服务器上。
  2. checkout:检出,第一次程序员访问的时候,与SVN创建连接。
  3. commit:程序员修改了本地代码,提交到SVN服务器上,更新服务器上源代码。
  4. update:把服务器上最新的源代码下载到本地计算机上
  5. delete:删除本地和服务器上源代码

小结

  1. SVN的作用是什么?

    版本控制,对源代码进行管理

  2. 主流的版本控制工具有哪些?

    1. VSS
    2. CVS
    3. SVN
    4. GIT
  3. checkout与update的操作有什么区别?

    1. 第1次检出,创建连接,下载文件
    2. 更新,将服务器上源代码下载到本地,对本地来说就是得到服务器上最新的代码

VisualSVN服务器:概述与安装

目标

安装VisualSVN服务器

下载

命令行方式版本

官方网站:http://subversion.apache.org/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cG3c65yX-1588856561339)(assets/1574064634187.png)]

图形化界面版本
  1. 图形化服务端:https://www.visualsvn.com/downloads/

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4lrY8X3Z-1588856561363)(assets/1571392442421.png)]

  2. 两个安装包,分别对应32位和64位的操作系统

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zy0RtRPB-1588856561418)(assets/1571392494765.png)]

  3. 注:你的计算机名不要使用汉字

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MXgymxuu-1588856561423)(assets/image-20191224091907785.png)]

安装步骤

  1. 进入欢迎页面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOzZrOtU-1588856561428)(assets/1571392583849.png)]

  2. 接受软件许可协议

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jBu8gpVL-1588856561434)(assets/1571392622369.png)]

  3. 安装服务器和管理员工具,同时修改Path环境变量

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QH39lDJc-1588856561436)(assets/1571392662877.png)]

  4. 选择标准版安装

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iMbIMQ12-1588856561438)(assets/1571392693341.png)]

  5. 指定安装目录和仓库位置,服务器端口号,备份目录。其中端口号随意起,但不要占用系统端口号。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tdVqPvtL-1588856561440)(assets/image-20191120152956001.png)]

  6. 选择认证的模式,这里选择使用Subversion的认证。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRxfMO5W-1588856561444)(assets/image-20191120153132846.png)]

  7. 准备安装

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MckhBjsk-1588856561446)(assets/1571392760280.png)]

  8. 安装结束

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxtUidS4-1588856561448)(assets/1571392783113.png)]

  9. 查看服务,检查svn服务是否有正确启动

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V18xMK0R-1588856561451)(assets/1571392814956.png)]

开启服务端

  1. 点桌面图标

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7zEp3SOl-1588856561453)(assets/1571392894588.png)]

  2. 启动界面如下

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1H44bsYV-1588856561455)(assets/image-20191218101943547.png)]

  3. 各目录的说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lkyp6PX-1588856561457)(assets/image-20191128093257096.png)]

VisualSVN服务器:基本操作与目录结构说明

目标

  1. 创建仓库
  2. 创建工程目录
  3. 权限管理

仓库结构说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hP6Dc69l-1588856561459)(assets/1571393580228.png)]

创建仓库

  1. 在repositories上右键创建一个仓库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nvjoKR1C-1588856561461)(assets/1571393709183.png)]

  2. 选择仓库类型

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sJN48xPA-1588856561463)(assets/1571393765678.png)]

  3. 给仓库起名

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H7un99mD-1588856561467)(assets/1571394117367.png)]

  4. 创建一个空的仓库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WGOwXBNZ-1588856561469)(assets/1571393940855.png)]

  5. 配置仓库权限,所有用户都可以读写

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rMcjI7jd-1588856561472)(assets/1571393986187.png)]

  6. 仓库创建成功,可以看到仓库访问地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpI8x7eJ-1588856561474)(assets/image-20191128093431981.png)]

  7. 创建好的仓库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8ngO2be-1588856561477)(assets/1571394316201.png)]

创建工程结构

仓库中可以存放多个工程目录,每一个工程目录通常对应一个项目

  1. 在仓库中可以创建项目目录

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUOY35G9-1588856561480)(assets/1571394504900.png)]

  2. 输入工程名称

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7kudPqiE-1588856561482)(assets/1571394638084.png)]

  3. 工程结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gCs3XAXJ-1588856561484)(assets/1571394748232.png)]

    目录名说明
    trunk主干目录,此目录下的文件为基准文件 (开发时候代码都上传到此目录)
    branches用于开发的分支目录 (基于主干目录的一些扩展功能、个性化的定制功能)
    tags用于发布的版本目录 (项目阶段开发完毕,就把项目放到tags目录,如一期、二期代码)
  4. 举例说明:

    1. 假设有一个项目OA,平时开发的代码就放在trunk目录下。
    2. 当我们完成了1.0版本,这时就可以打一个tags
    3. 后续我们在OA项目上添加一个新的模块(及时通讯),我们就可以开一个分支(branches),又有一个公司需要在我们OA基础上添加财务管理模块,我们又可以打一个分支
    4. 我们后续针对OA的1.0版本再升级,我们不需要原来附加功能,就可以在原来的主干上(trunk)继续开发,形成OA2.0版本,开发完成后就可以再打一个tags

VisualSVN服务器:权限管理

创建用户

  1. 点右键创建用户

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0G9fYDE-1588856561486)(assets/1571396251030.png)]

  1. 输入用户名和密码,如:dev1,密码:123

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQyIFRIX-1588856561488)(assets/1571396295173.png)]

  2. 用户创建成功

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V56dKF6Z-1588856561490)(assets/1571396336631.png)]

  3. 为了模拟实际企业项目开发场景,我们创建了两个开发组人员,和两个测试组人员。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIaXcQxS-1588856561492)(assets/1571396388014.png)]

创建组

可以对单个帐号进行授权。在实际项目中,为了方便操作,通常以组的方式进行同一授权。以下我们创建一个开发组,一个测试组。

  1. 创建一个组devgroup

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0pxDVjUg-1588856561494)(assets/1571396448688.png)]

  2. 在组中添加成员

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CrTm8xuQ-1588856561497)(assets/1571396478850.png)]

  3. 创建2个组,一个开发组devgroup,一个测试组testgroup

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IB4heSjF-1588856561500)(assets/1571396503193.png)]

给trunk分配权限

把仓库中的每个目录,给组(或者账户)设置权限。以trunk主干目录为例。

需求
  1. 先给everyone组trunk不设置任何权限
  2. 给开发组trunk读写权限
  3. 给测试组trunk只读权限
步骤
  1. 在trunk上点右键,选择属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H6ahSpb5-1588856561503)(assets/1571396634564.png)]

  1. 设置默认权限为任何人不能访问

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EpGpfbyU-1588856561505)(assets/1571396691978.png)]

  2. 将开发组设置为可读写权限

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7aUXOvak-1588856561507)(assets/1571396760404.png)]

  3. 设置为读和写的权限

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLI7JTay-1588856561509)(assets/1571396782727.png)]

  4. 将测试组设置为只读权限

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GpDOTyhE-1588856561511)(assets/1571396818211.png)]

  5. 最终分配的结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MBYjkKC5-1588856561516)(assets/image-20191128093758639.png)]

在浏览器中浏览仓库

  1. 在工程名上点右键,复制访问地址到剪贴板。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i6Id1YSZ-1588856561519)(assets/1574067605110.png)]

  1. 在浏览器上粘贴地址,输入用户名和密码访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bv3fw92Y-1588856561522)(assets/1571397219470.png)]

  1. 登录后显示结果如下

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5hlRICf5-1588856561525)(assets/1571397260329.png)]

  2. 可以进行下载和检出的操作

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2QfBfjV-1588856561528)(assets/image-20191218103034025.png)]

小结

以下每一项表示什么作用?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9YWETQn-1588856561530)(assets/1574067509917.png)]

桌面客户端TortoiseSVN:概述与安装

目标

安装SVN的概述端

步骤

  1. 双击执行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DaJy7QDr-1588856561532)(assets/1573460161981.png)]

  2. 欢迎页面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1a6375b3-1588856561535)(assets/1573460184538.png)]

  3. 接收许可协议

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrMseXtK-1588856561537)(assets/1573460208095.png)]

  4. 全部都选择安装,注:命令行工具要安装, 否则在idea上集成svn的时候会找不到 svn.exe 而报错。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2rMFBbO8-1588856561539)(assets/1573460242758.png)]

  5. 准备安装

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MCC69fG0-1588856561541)(assets/1573460270090.png)]

  6. 安装完成

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZCgjKdYf-1588856561543)(assets/1573460284989.png)]

桌面客户端TortoiseSVN:添加与检出

目标

  1. Jack (dev1) 创建hello.txt文件添加到服务器
  2. Rose (dev2) 从服务器中检出文件

准备

  1. 在d:/temp/创建2个目录:Jack和Rose,用来模拟2个用户,同时打开2个窗口,左边表示Jack,右边表示Rose。

  2. 选择工程中tunk目录,右键复制URL地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0BC3ZJXW-1588856561548)(assets/image-20191120153911684.png)]

添加步骤

  1. 在Jack的窗口,右键选择SVN Checkout,自动出现URL地址和要检出到本地的目录

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtO0kW6A-1588856561550)(assets/image-20191120153956687.png)]

  2. 输入用户名和密码验证(注:不要保存密码,因为一会还要用另一个用户)。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jMaMq1xe-1588856561552)(assets/1573462455428.png)]

  3. 提示检出完成,这里客户端与服务器创建了连接

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2vq3Tot-1588856561554)(assets/1573462489720.png)]

  4. 在Jack的窗口中出现了一个.svn的目录,表示与服务器连接上了,不要删除这个目录。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HhOwZYnt-1588856561556)(assets/1573462507057.png)]

  5. 在Jack中创建一个空的hello.txt文件,右键选TortoiseSVN->add添加到服务器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y52liQlN-1588856561558)(assets/1573462541035.png)]

  6. 在hello.txt上出现一个加号的图标 ,如果有没加号也没有关系。重启电脑或注销一次就可以了。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AooDdwNP-1588856561560)(assets/1573462579871.png)]

  7. 在hello.txt点击SVN Commit提交到服务器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-urrYoFoN-1588856561563)(assets/1573462612006.png)]

  8. 在对话框中输入一些信息,再输入用户名和密码。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PvNFfwEi-1588856561565)(assets/1573462657121.png)]

  9. 再次输入用户名和密码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQOJpG9e-1588856561568)(assets/1573462697202.png)]

  10. 提示提交成功 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9B1gpXcv-1588856561570)(assets/1573462716450.png)]

  11. 这时服务器端已经有hello.txt文件了

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sb5JoHrs-1588856561572)(assets/1573462743282.png)]

检出步骤

  1. 在Rose这边点右键,选择SVN Checkout,自动出现URL地址和要检出到本地的目录

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f0yTe2US-1588856561574)(assets/1573462925864.png)]

  2. 输入用户名和密码,不要保存密码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GNOJS4bg-1588856561576)(assets/1573462954146.png)]

  3. 提示检出完成

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YaK4oAmP-1588856561579)(assets/1573462973194.png)]

  4. 这时可以看到Rose窗口下已经有hello.txt文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W6BCgsPq-1588856561581)(assets/1573462990835.png)]

清除认证缓存

有几种情况需要清除认证缓存
  1. 本地使用多个账号登陆,每次输入的账号和密码都不一样
  2. 当账号密码修改后
步骤

选择TortoiseSVN->Settings->Save Data中清空一些缓存的数组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AtWOu9By-1588856561584)(assets/1573460335143.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gN1LNBf8-1588856561586)(assets/1573460375089.png)]

桌面客户端TortoiseSVN:提交与更新

目标

学习文件的提交与更新

提交步骤

  1. 在Jack这边编辑hello.txt,输入一些内容并且保存。图标上有感叹号,表示已经与服务器不同。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfRXBmy3-1588856561589)(assets/1573464140344.png)]

  2. 在hello.txt上点击鼠标右键,选择SVN Commit,在弹出的信息框中输入一些文字信息

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tpGniGFS-1588856561591)(assets/1573464199373.png)]

  3. 再次输入用户名和密码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vZEbSJHh-1588856561592)(assets/1573464326915.png)]

  4. 这时版本也发生了变化

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Va5Kbgl-1588856561594)(assets/1573464357208.png)]

更新步骤

  1. 在Rose这边的hello.txt上点右键,选择SVN Update

  2. 输入用户名和密码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-odWxfOVD-1588856561597)(assets/1573464710789.png)]

  3. 显示更新成功

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rTC8UwuG-1588856561600)(assets/1573464730191.png)]

  4. 这时从服务器上更新了hello.txt的内容

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LyTJn0nr-1588856561602)(assets/1573464753642.png)]

小结

  1. 提交的作用是什么?
  2. 更新的作用是什么?

注:养成习惯,先更新后再修改代码。

桌面客户端TortoiseSVN:解决冲突

目标

解决两个人同时修改的冲突问题

场景

两个客户端修改了同一个文件,且修改了文件的相同位置。

注:通常应该先更新再修改,但如果是先修改再更新,则会出现与服务器上不同的内容,产生冲突。如果服务器的版本比本地的版本更高,就会产生冲突。

步骤

  1. 左边Jack再次打开hello.txt文件编辑,在第2行输入内容,保存后提交SVN Commit

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g1MxVvBX-1588856561605)(assets/1573631764402.png)]

  2. 右边Rose也同时打开hello.txt文件编辑同一行,保存后,选择提交SVN Commit

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dq2vIPd-1588856561607)(assets/1573631827925.png)]

  3. 这时提交会出现提交失败,因为出现了版本冲突

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kYDkLpVZ-1588856561609)(assets/1573631850574.png)]

  4. 第1项表示更新,自己解决冲突。第2项表示取消提交。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l2dTk34X-1588856561611)(assets/1573631883452.png)]

  5. 选择更新,发现冲突。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fcaj0YvL-1588856561613)(assets/1573631970881.png)]

  6. 在接下来出现的窗口中点"取消"

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oEsoOJsa-1588856561621)(assets/image-20191120155906989.png)]

  7. 这时在Rose目录下出现几个不同扩展名的文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tztdvHou-1588856561624)(assets/image-20191128115320916.png)]

  8. 在Rose中选中hello.txt,点右键选中TortoiseSVN->Edit conflicts。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pPoGRAbf-1588856561627)(assets/1573632061218.png)]

  9. 左上显示别人的,右上显示我的,下面显示合并后的。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eN3RhW70-1588856561630)(assets/1573632130248.png)]

  10. 在下面合并的每一行可以点右键,可以选使用别人的还是自己的。如果同时保留2行,可以选我的在前面还是在后面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rIbd4wjj-1588856561632)(assets/1573632190210.png)]

  1. 修改完成以后点上面工具栏:Mark as resolved (标记为已解决冲突),这时Rose下多余的文件自动删除。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QS4ujlqw-1588856561636)(assets/1573632231885.png)]

  2. 再次在hello.txt上点右键,选择SVN Commit,提交到服务器中。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVLErcTq-1588856561638)(assets/1573632290827.png)]

  3. 这时左边的Jack如果更新,也能看到最新的代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TA4u8ukj-1588856561641)(assets/1573632337888.png)]

小结

产生冲突的原因是什么?

桌面客户端TortoiseSVN:回滚到指定版本

目标

  1. 查看每个版本
  2. 回滚到指定版本

场景

Rose想将代码回滚到昨天的情况

查看版本号

  1. Rose在本地点右键,选择TortoiseSVN -> Show log

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z8rVBEhT-1588856561643)(assets/1573635041030.png)]

  2. 在打开的窗口中显示版本,作者,修改的时间,信息等。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yffGIp4-1588856561645)(assets/1573635104350.png)]

  3. 每个版本上都可以在下面的path中双击打开查看当时的代码,知道自己要回滚到哪个版本。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcitohJx-1588856561647)(assets/1573635138006.png)]

回滚到指定版本

  1. Rose在hello.txt上点右键,选择TortoiseSVN->Update to revision

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LmM2Mh7H-1588856561650)(assets/1573635181324.png)]

  2. 打开的窗口中,HEAD revision表示最后的那个版本,右边的按钮也可以显示所有的版本。下面的Revision可以输入要回滚到的版本。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QhV4wwia-1588856561652)(assets/1573635220188.png)]

  3. 这时Rose中的hello.txt就回滚到指定的版本了

小结

如果想回到以前的某个版本,我们可以进行什么样的操作?

桌面客户端TortoiseSVN:删除以及断开连接

目标

删除和断开连接

步骤

  1. Jack在本地删除hello.txt文件,但服务器中的并没有删除

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEf4ClGW-1588856561654)(assets/1573636140499.png)]

  2. 右键选择SVN Commit提交

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6FKaN32X-1588856561660)(assets/1573636219281.png)]

  3. 在出现的对话框中,会用红色显示与服务器不同的文件列表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcTGDagd-1588856561662)(assets/1573636171378.png)]

  4. 这时勾选要删除的文件,点OK后输入用户名和密码。这时服务器上的hello.txt文件删除

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0VSrUSQi-1588856561664)(assets/1573636244479.png)]

  5. 如果要彻底断开连接,则删除当前目录下隐藏的.svn目录即可

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4MfQyv8-1588856561667)(assets/image-20191222110635909.png)]

IDEA客户端:分享项目

目标

分享项目

创建一个模块

  1. 在d:/temp/Jack目录下,使用maven创建一个Web模块

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G3AejzYk-1588856561669)(assets/1573638192349.png)]

  2. 创建一个Servlet,部署运行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wow9Vb0g-1588856561671)(assets/1573638213684.png)]

选择SVN工具

  1. 选择VCS --> Enable Version Control Integration

  2. 选择Subversion工具,这时工程是橙色

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gs5kuEij-1588856561673)(assets/1573638298625.png)]

  3. 如果出现错误,选择svn.exe文件所在目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jCaRSZbT-1588856561675)(assets/image-20191224105232438.png)]

创建与服务器的连接

  1. 在工程上点右键

  2. 选择: Subversion->Share Directory…

  3. 在对话框中点上面的加号输入服务器的URL地址。(可以在服务器上的trunk目录上右键复制服务器目录地址)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ftb7PHxG-1588856561677)(assets/1573638366671.png)]

  4. 输入用户名和密码,可以保存密码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tYD8yO21-1588856561679)(assets/1573638409082.png)]

  5. 下面有三种目录方式,我们选择第二种方式。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TwRuitvJ-1588856561681)(assets/1573638453868.png)]

  6. 确定后可以选择SVN的版本格式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rOOOO6TQ-1588856561684)(assets/1573638471951.png)]

  7. 更新成功

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzcEVZ4w-1588856561686)(assets/1573638502295.png)]

  8. 分享成功后工程变成绿色,这时服务器并没有内容,只是创建了一个连接关系。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Db3dQP9Q-1588856561688)(assets/1573638518013.png)]

分享工程

  1. 在工程上点右键,选择Subversion->Commit Directory

    注:target目录等无关的目录和文件不用上传到服务器上

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eatpb7p4-1588856561690)(assets/1573638553828.png)]

  2. 上传之前可以输入一些描述信息

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DxrsFJ3-1588856561691)(assets/1573638697443.png)]

    注:如果代码中有一些错误或者警告信息,会导致提交失败。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y31As1Ws-1588856561693)(assets/1573638741114.png)]

  3. 如果代码中有警告,会出现如下提示,但我们可以依然选择提交:Commit

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a699bi9v-1588856561695)(assets/image-20191120163406354.png)]

  4. 上传成功后模块变成了黑色

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C9KX8rpZ-1588856561697)(assets/1573638797732.png)]

  5. 服务器有文件了

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJr01d9l-1588856561699)(assets/1573638821015.png)]

IDEA客户端:操作技巧

提交前不进行语法检查

注:在第3步中,如果想在提交前不进行代码检查,可以在idea中去掉下面的勾

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dipcOWg1-1588856561701)(assets/image-20191129100715347.png)]

上传到SVN服务器慢的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UyfRTGgz-1588856561703)(assets/image-20191222111744584.png)]

清除保存的用户名和密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ESYY9BvB-1588856561705)(assets/image-20191222111706698.png)]

IDEA客户端:检出项目

目标

Rose从服务器中检出Jack的项目

步骤

  1. 关闭之前的idea,Rose打开idea,在欢迎页面上选择Check out from Version Control,选择Subversion

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xdfsJwh7-1588856561707)(assets/1573721833828.png)]

  2. 在弹出的窗口中如果没有地址,则输入SVN服务器的请求地址,找到需要检出的项目,检出。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G3nPsJai-1588856561709)(assets/1573721923176.png)]

  3. 指定检出的地址,如:放在d:/temp/Rose目录

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BTdZrFIy-1588856561711)(assets/1573721999169.png)]

  4. 在Destination中选择合适的一项,这里选择第三项。Update/Switch to revision中选择HEAD,表示选最新版,也可以在Specified中第几版。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mXVjm5Ry-1588856561714)(assets/1573722047541.png)]

  5. 选择相应的Subversion版本格式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hyJ2VzLI-1588856561716)(assets/1573722059294.png)]

  6. 提示是否将工程描述文件(扩展名为.iml)这个文件从SVN服务器中删除,选择No,不删除这个文件。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VP0RcdiZ-1588856561719)(assets/image-20191128110937747.png)]

  7. 如果上一步选择了yes,则会出现新的提示:是否将当前这个工程的iml文件添加到SVN服务器,可以选择Add。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0SBEEHjr-1588856561721)(assets/1573722395873.png)]

  8. 检出后idea中就有项目了,在d:/temp/Rose目录下可以发现检出的代码。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z08GUVJf-1588856561723)(assets/1573722209554.png)]

解决Servlet报错的问题

如果这时Servlet代码中出现红色的错误,通常是tomcat的包没有加载,使用下图的设置重新添加一次tomcat的包。

  1. 选择File->Project Structure

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GW4QkbnK-1588856561724)(assets/image-20191222113125263.png)]

  1. 点加号后,选择第2项:Library

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-foo67I41-1588856561728)(assets/image-20191222113230232.png)]

  1. 选择Tomcat库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-huDitHtd-1588856561731)(assets/image-20191222113246715.png)]

IDEA客户端:提交与更新

目标

项目的提交与更新

当前状态

  1. 目前有2份代码,分别在JavaEEXXX班下的dayXX,另一份在Rose的目录下。目前Rose的代码是打开的。

  2. 选择File->Open Recent -> Manage Projects,在另一个idea窗口中打开了以前的项目,这时2份项目同时打开了。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDqd4aqn-1588856561734)(assets/1573724119795.png)]

如何设置在新窗口中打开项目

注:如果要在新窗口中打开项目,也可以进行如下设置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aDRjeY8A-1588856561736)(assets/1573897121582.png)]

提交步骤

  1. JavaXXX的dayXX代码Servlet中输入一些新的代码:“你好,我是杰克!”

  2. 在Servlet上点右键:Subversion->Commit File

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQblPRwb-1588856561738)(assets/1573724341426.png)]

  3. 也可以在某个目录上点右键,提交整个目录

更新步骤

  1. Rose在自己的Servlet上点右键:Subversion->Update File

  2. 在出现的窗口中可以确认一下要更新的文件,点OK。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3nllwwkF-1588856561740)(assets/1573724389444.png)]

  3. 这时可以发现Rose得到了最新的源代码

IDEA客户端:解决冲突

目标

解决冲突

冲突前步骤

  1. Jack在idea的Servlet中又输入了新的代码

  2. 在Servlet上点右键:Subversion->Commit File

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hF2V6NAH-1588856561741)(assets/1573893570798.png)]

出现冲突

  1. Rose输入新的代码

  2. 没有更新,直接提交。在Event Log中出现冲突问题

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8s38Bioj-1588856561743)(assets/1573894638215.png)]

  3. 这时在Servlet文件上点右键,选择更新文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-afbPeq4T-1588856561745)(assets/1573895401553.png)]

  4. 出现版本冲突的问题,有三个按钮:接受我的,接受他们的,合并

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TX4r3mUT-1588856561747)(assets/1573894677743.png)]

  1. 左边的工程文件中也会出现不同版本的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHjl0Lmo-1588856561749)(assets/1573895158962.png)]

  1. 点合并按钮,进入解决冲突界面,最左边是自己的,中间是合并的结果(Rose修改前的),最右边是服务器的。可以点左边或右边的小箭头选择左边或右边的代码行,也可以选择下面的按钮接受左边或接受右边。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbCUEqhy-1588856561753)(assets/1573895446873.png)]

  1. 也可以在Servlet上点右键,选择解决文本冲突,同样会出现上面的窗口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uwKLSaIA-1588856561754)(assets/image-20191120171213976.png)]

  1. 解决冲突后,目录下多余的文件消失

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEEfHIkL-1588856561757)(assets/image-20191120171321677.png)]

  1. 点右键:Subversion->Commit File
  2. 这时Jack需要更新,才能看到最新的代码

IDEA客户端:回退

目标

回退到指定的版本

步骤

  1. 在Servlet上点右键:Subersion -> Show History

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OUwLa4vo-1588856561759)(assets/1573900335089.png)]

  1. 选择相应的版本

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QPvrHq7j-1588856561761)(assets/1573900457403.png)]

  2. 双击可以打开查看代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsuXOiVU-1588856561763)(assets/image-20191120171754320.png)]

  3. 在相应的版本上点右键,选择get就可以回到这个版本了

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xaj2v179-1588856561765)(assets/1573900531592.png)]

IDEA客户端:断开连接

目标

  1. 安装断开连接的插件
  2. 在idea中断开连接

原理

断开连接其实就是删除每个目录下.svn的目录,一个项目如果每个目录都去删除比较麻烦,可以安装一个插件来完成。

安装插件

  1. 在线搜索市场安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJJKE6y4-1588856561770)(assets/1573896425146.png)]

  1. 也可以使用本地安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-18DA8kf0-1588856561772)(assets/1573897358185.png)]

  1. 选择相应的插件文件,点OK即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJGsxckF-1588856561774)(assets/image-20191222114406999.png)]

  1. 安装完成以后需要重启idea

步骤

  1. 安装完插件以后在VCS目录下会多出一项:SVN Disconnect

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9ACfJAp-1588856561776)(assets/1573896513984.png)]

  2. 删除前目录上有图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZavgeag-1588856561778)(assets/1573896581555.png)]

  3. 点SVN Disconnect

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7HFmrD33-1588856561780)(assets/1573896603651.png)]

  4. 删除后目录上的图标,并且目录下也没有.svn目录了

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zMDMbEPx-1588856561782)(assets/1573896626804.png)]

阶段课程介绍

  1. 黑马旅游前台用户界面(4天),纯异步开发

    使用技术:HTML+jQuery+Servlet+MyBatis

  2. 黑马旅游后台管理(2天),纯同步开发

    使用技术:JSP+JSTL+EL+Servlet+MyBatis

搭建黑马旅游项目

目标

使用maven搭建好环境

创建maven工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4pdfaS9-1588856561785)(assets/1545469091077.png)]

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.itheima</groupId>
    <artifactId>day36_day39_travel</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <!--  当前项目编码和JDK版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!--servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
            <scope>runtime</scope>
        </dependency>

        <!--BeanUtils-->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.2</version>
        </dependency>

        <!--jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.3.3</version>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.0</version>
        </dependency>

        <!--log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!--jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.7.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--Tomcat7插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                    <uriEncoding>UTF-8</uriEncoding>
                    <server>tomcat7</server>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

复制静态页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3npcXDT-1588856561787)(assets/1554073972166.png)]

配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vh0FmkK4-1588856561789)(assets/1564060738734.png)]

包结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MdlnB8F5-1588856561791)(assets/1545612920765.png)]

工具类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fTLJ6JDG-1588856561792)(assets/1564055892508.png)]

导入数据库

​ 将提供数据库和其它工具类导入到项目中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HpaljSAE-1588856561794)(assets/1545614191568.png)]

项目中的表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Z53USQl-1588856561796)(assets/1554074087151.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I9i7ww9W-1588856561797)(assets/image-20191224112504529.png)]

用户表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cdrAP31j-1588856561800)(assets/1545614397544.png)]

实体类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AxrqKdPa-1588856561802)(assets/1545614466896.png)]

其它类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y8xRJ60p-1588856561804)(assets/1554074166426.png)]

小结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tLdaezBb-1588856561805)(assets/image-20191224113034073.png)]

md5加密介绍、工具类的使用

目标

  1. 了解什么是md5,它有哪些特点
  2. 使用md5的工具类对字符串进行加密

应用场景

​ 在企业中,登录账户表,里面的密码是加密的,为了防止数据管理员或IT部内部人员数据泄密。注册用户的时候,添加用户,将用户数据新增到数据库里面的时候就将用户的密码加密存储。加密算法有很多种,有一种不可逆的加密算法MD5。

介绍

​ Message Digest Algorithm MD5(消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

特点

  1. 压缩性:任意长度字符串根据散列哈希算法得到一个16进制32个字符长度的字符串
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4. 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
  5. 不可逆的算法:由A字符串加密成B字符串,B是永远无法反推出A的。

代码

package com.itheima.travel.utils;

import java.math.BigInteger;
import java.security.MessageDigest;

public class Md5Utils {

	/**
	 * 对给定的字符使用md5进行加密,返回加密以后的字符串
	 * @param origin 明文,要加密的字符串
	 * @return 加密后的密文
	 */
	public static String getMd5(String origin) {
		// 1) 使用静态方法,创建MessageDigest对象
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			// 2) 将字符串使用utf-8进行编码,得到字节数组
			byte[] input = origin.getBytes("utf-8");
			// 3) 使用digest(input)对字节数组进行md5的哈希计算,得到加密以后的字节数组,长度是16个字节。
			byte[] num = md.digest(input);
			// 4) 使用类BigInteger(1, 加密后的字节数组),将这个二进制数组转成无符号的大整数
			// 1 正数, -1表示负数
			BigInteger big = new BigInteger(1, num);
			// 5) 将这个大整数转成16进制字符串,参数为多少进制
			return big.toString(16);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

    public static void main(String[] args) {
        String md5 = Md5Utils.getMd5("123");
        System.out.println(md5);
    }
}

小结

  1. 不可逆
  2. 容易计算
  3. 抗修改性
  4. 抗碰撞性
  5. 压缩性

学习总结

  1. 能够了解SVN的作用及相关术语

    版本控制,管理源代码

  2. 了解常用的版本控制工具有哪些,理解checkout、update、commit的作用

    1. VSS
    2. CVS
    3. SVN
    4. GIT

    checkout:检出,第一次连接的时候,与服务器创建连接

    update:更新,将服务器的最新代码更新到本地

    commit:提交本地代码到服务器

  3. 掌握SVN常用操作

  4. 掌握VisualSVN和Tortoise SVN

    1. VisualSVN:服务器,安装,创建仓库,创建用户和组,设置权限
    2. Tortoise SVN:客户端:添加与检出,提交与更新,解决冲突,回滚,删除
  5. 掌握IDEA操作SVN

    1. 创建与服务器连接
    2. 分享项目,检出,提交与更新,冲突,回退,断开
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值