Java学习日志之SpringMVC、SVN、IO流和反射机制

SpringMVC

Spring MVC为我们提供了一个基于组件和松耦合的MVC实现框架。在使用Java中其它MVC框架多年之后,面对Spring MVC有一种相见恨晚的感觉。Spring MVC是如此的优雅,轻盈与简洁, 让人从其它框架的桎梏解脱出来。

宏观
中观
微观

SVN

SVN是版本控制工具,对应的比较热门的版本控制工具还有git.
首先就是要对SVN的客户端服务端进行配置
然后就主要是对多人代码的管理了,更删改查
包括恢复等等,还有一些常见的问题等等
1、每天早上上班要update SVN,每天下班要commit SVN。
2、查看是谁动了我的代码,右键 tortoise 后查看 log 日志。
3、文件被别人删除,在空白处右击,show log,可以查看整个库的所有增删改查操作记录,如果单个文件还在,只想查看该文件记录,那就在该文件上查看 log(自从新建一个文件后,对该文件的所有操作都会被服务器仓库记录下来,随时可以可别人商量恢复)。
4、权限清空:TortoiseSVN——Settings——Seved Date——Clear clear all。
5、commit 上面有一块区域是做注释的(推荐常用)。
6、良好冲突:
如果A和B都在修改了代码,B先于A上交,当A去commit的时候,就会提交失败,必须先更新你的本地文件,那么B的代码会和A的代码同时存在(两个人修改的不是一个地方算好的情况了)。
7、较差冲突:
有冲突时提交会产生三个文件,.mine是自己改好之后的代码,rx,ry,x,y两个数字较小者是我改之前的代码,数字较大者,是服务端的代码
1)如果要保留自己的版本,就用mine覆盖原来的代码,再次提交
2)如果认为对方是正确的,就revert一下,这个时候已经拿到了最新的代码(不一定非要这样操作,但是这样方便)
3)如果认为上一个版本是正确的,用版本较小的覆盖(直接删除改后缀名)
经验1:如果Commit Failed!就不要点了ok继续按update了,先把自己的代码复制到一边,再把那个文件revert,再update,再把放在一边的文件重命名复制到相同文件夹下,选中两个冲突的文件,TortoiesSVN->diff,左边是最新的代码,右边的是我的,解决冲突之后两个人最好都update一下。
经验2:与历史记录比对:show log之后,同时选中两个版本(比如现在到了第10版,那么要10/9先比较,看看有没有差异,没有差异,则比较9/8版,如果仍没有差异,以此类推继续比较),Compare revisions。


IO流

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

JavaIO流类图

看图呢,就可以发现IO流分为字节流和字符流,也可分为输入流和输出流
那么字节流和字符流有啥区别呢,字节流是基于字节(byte),可以用于所有文件类型的传输(.mp3,.mp4)、字符流基于字符(char),对于纯文本文件的传输效率高于字节流,但不能用于其他类型的文件。

File类的使用

  • java.io.File类用于表示文件(目录)
  • File类只用于表示文件(目录)的信息(属性)(名称,大小等),不能用于文件内容的访问
  • RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写
  • RandomAccessFile支持随机访问文件,可以访问文件的任意位置

字节流

1.InputStream OutputStream
InputStream抽象了应用程序读取数据的方式
OutputStream抽象了应用程序写出数据的方式
2.EOF=End 读到-1就读到结尾
3.输入流基本方法
int b=in.read(); 读取一个字节无符号填充到int低八位。 -1是EOF
4.输出流基本方法
out.write(int b) 写出一个byte到流,b的低八位
5.FileInputStream----->具体实现了在文件上读取数据
6.FileOutputStream----->实现了向文件中写出byte数据的方法
7.DateOutputStream/DateInputStream
对“流”功能的扩展,可以更加方便的读取int,long,字符等基本数据类型
DateOutputStream
writeInt()/writeDouble()/writeUTF()
8.BufferedInputStream BufferedOutputStream 字节缓冲流
两个流类为IO提供了带缓冲区的操作,一般打开文件进行读写操作时,都会加上缓冲
这种流模式提高了IO的【性能】
从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中:
FileOutputStream---->write()方法相当于一滴一滴地把水转移过去
DateOutputStream---->write()方法会方便一些,相当于一票一票把水转移过去
BufferedOutputStream---->write()方法更方便,相当于一票一票先放入桶中(缓冲区),再从桶中倒去过去

字符流


反射

反射呢,是在运行状态中,对于任意一个,都能够知道这个类的所有属性方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

反射的操作都是编译之后的操作,Java中集合的泛型,是防止错误输入的,只在编译阶段有效。因此可以通过反射绕过编译,就可以绕过泛型。

可以做些什么呢

  • 在运行时判断任意一个对象所属的类(Class类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所具有的构造函数成员变量方法Constructor类Filed类Method类
  • 在运行时调用任意一个对象的方法(方法反射:method.invoke(对象,参数列表))
  • 生成动态代理

获得Class对象的三种方式

    class1 = Class.forName("net.xsoftlab.baike.TestReflect");

    class2 = new TestReflect().getClass();

    class3 = TestReflect.class;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,769评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,086评论 18 399
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,473评论 11 349
  • 亲爱的,你要明白,人生而孤独,你不能要求,不能奢望,永远会有人陪着你。你要明白,长长的一生中,独处的时光远远多过于...
    顾碧辞阅读 1,410评论 0 0
  • 淘宝毋庸置疑是国内最大的网购购物平台了,今年双十一仅仅一天的成交额更是达到了一千多亿,双十一如此厉害的秘诀到底是什...
    lh事在人为阅读 4,151评论 0 0