关于一个springcloud项目中学到的(二:分布式集群,Maven,JDKJRE,编译和解释)

关于分布式和集群的概念

我的一些理解:

  • 如果不是分布式的话,一个springboot项目需要完成所有需要的工作。比如说它需要负责从第三方采集基金净值数据,需要把这些数据放到redis里,还需要进行计算进行显示等等。这些服务都是部署在一个服务器上的,如果这个服务器挂掉了,从头到尾所有服务都会挂掉。
  • 集群:同样一个功能模块开好几个springboot服务去运行(端口号不同)。这样首先挂掉一个服务器,另一个还能用,有一定高可用的逻辑。另外他们之间会做负载均衡(自动的?)。
  • 微服务:最近提到蛮多的一个概念。这里比较直接的解释是:“一个微服务就是一个springboot”
  • 低耦合和高内聚两个概念

Maven的使用

  • 项目肯定有非常多复杂的jar包依赖,Maven是一个统一的依赖仓库。
  • 传统的web项目是jar包放在项目中。Maven管理的项目,项目中间只有pom.xml,Maven会根据xml(jar包坐标)里的信息去统一的jar包仓库中去找jar包。可能有很多不同的项目,但是只需要在xml里面写坐标就行了,只需要一个仓库去存放jar。
  • 我看的课里面提到Maven的两大功能:依赖管理,一键构建(Tomcat)。第二点还需要了解。
  • 实际在idea写的时候,在pom.xml里写了坐标后,Maven会自己去网上下载对应的jar包。可能涉及到需要改成国内镜像这个步骤。
  • 这样看起来确实和Python里常常使用的anaconda好像,不过anaconda还需要控制台各种打,这个感觉更加方便。

JDK JRE IDE

  • JRE: Java Runtime Environment。JRE顾名思义是java运行时环境,包含了java虚拟机java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
  • JDK:Java Development Kit。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
  • 如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK
  • JVM:java专用的虚拟机
  • JDK有j2se(standard),j2ee(enterprise),j2me。标准版和企业版。
  • idea是一个ide, 也就是集成开发环境(IDE,Integrated Development Environment )。用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。

有时候pom里面的依赖报错

  • 重新启动一下idea
  • 删除pom内容,重新复制一遍让maven帮你解决依赖

编译和解释

  • compile---编译。对 C 语言或者其他编译型语言来说,编译生成了目标文件,而这个目标文件是针对特定的 CPU 体系的,为 ARM 生成的目标文件,不能被用于 MIPS 的 CPU。这段代码在编译过程中就已经被翻译成了目标 CPU 指令,所以,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。
  • 对于各种非编译型语言(例如python/java)来说,同样也可能存在某种编译过程,但他们编译生成的通常是一种『平台无关』的中间代码(字节码,java中的.class文件),这种代码一般不是针对特定的 CPU 平台,他们是在运行过程中才被翻译成目标 CPU 指令的,因而,在 ARM CPU 上能执行,换到 MIPS 也能执行,换到 X86 也能执行,不需要重新对源代码进行编译。
  • java中在javac编译为字节码之后有两种执行的方式。
    1. 运行时,BYTECODE由JVM逐条解释执行
    2. 运行时,部分代码可能由JIT(just in time)翻译为目标机器指令(以method为翻译单位,还会保存起来,第二次执行就不用翻译了)直接执行;
  • 对只执行一次的代码做JIT编译再执行,可以说是得不偿失。
    对只执行少量次数的代码,JIT编译带来的执行速度的提升也未必能抵消掉最初编译带来的开销。
    只有对频繁执行的代码,JIT编译才能保证有正面的收益。
  • 这中JIT的方式需要人为设定吗?还是JVM自己就解决了。
  • 只有部署的时候才会用到build。compile只是编译工程,既对编译路径下的源代码进行编译。build是构建工程,一般会经过清理,编译,打包等过程,生成最终可运行或可部署的程序包

 
 
 

       

 

posted @ 2020-03-14 13:01  将来的事  阅读(270)  评论(0编辑  收藏  举报