zoukankan      html  css  js  c++  java
  • 关于一个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是构建工程,一般会经过清理,编译,打包等过程,生成最终可运行或可部署的程序包

     
     
     

           

  • 相关阅读:
    css文本溢出省略号
    SQL语句判断是否为今天或昨天
    git 常用命令
    SwitchHosts—hosts管理利器
    ORACLE ERP consolidation流程(一)
    R12 AR INVOICE 接口表导入
    FA模块的10个API范例
    使用dbms_profiler包测试存储过程性能
    WebADI应用到Office 2016 64-bit
    Oracle EBS主界面的Top Ten List
  • 原文地址:https://www.cnblogs.com/take-it-easy/p/12491375.html
Copyright © 2011-2022 走看看