设为首页 收藏本站
查看: 768|回复: 0

[经验分享] Java技术简介及Tomcat部署

[复制链接]

尚未签到

发表于 2018-12-2 09:49:43 | 显示全部楼层 |阅读模式
  Tomcat
  引言:
  开发语言如:PHP,可以用smarty框架。
  另外最流行框架有mvc框架: data           数据
  bussiness      业务
  presentation   展示
  而像这种能使用框架的语言,尤其适合开发web站点。
  

  C语言相比PHP,首先,c语言与服务器硬件以及OS关系非常紧密,很难使用框架,并且移植平台困难,而且代码维护成本相当高。但正是由于硬件、系统紧密结合,所以开发出来程序运行速度相当快。如可开发驱动等等。
  

  API:application programming interface(可以给程序调用API接口,调用系统库文件,有system call包装出来)
  ABI:applications binary interface(应用二进制接口)
  一个程序为了开发快速,所以使用了操作系统提供的API。大家知道,一个程序要在系统上运行,需要编译后才能运行,就是把开发的语言转换成系统可以认识的二进制机器指令。那个在windows操作系统上编译出来的程序使用的API肯定与Linux系统上开发出来使用的API是不一样的。所以不同系统开发程序无法在另一个系统上运行。
  操作系统运行平台windows,API ABI(.dll)、linux,API ABI(.so)
  由此出现了:POSIX:portable operating system,可以跨平台编译。
  所以一个程序一般在一个系统环境编译后是无法在另一个系统上运行的,因为调用的动态库,而且二进制格式(ABI)都不一样。
  所以为了跨平台运行,还需要抹合系统的动态库及ABI。这时,JAVA就出现了。1995年,Java1.0由sun公司JamesGosling带队研究开发出。
  

  JAVA的组件包含四个独立却又彼此相关的技术:
  Java程序设计语言
  Java API(Java为了快速开发提供的)
  Java Class文件格式(Java类文件,bytecode字节码需要运行在JVM上)
  JVM:Java Virtual Machine(用于解释bytecode:字节码)
  Java程序语言(.java)使用JavaCompiler编译成Java类文件(.class),然后运行在JVM上。并且JavaAPI调用到的库文件也需要装载进库文件。
  

  JVM的实现方式有如下三种:
  1. 一次性解释器,解释字节码并执行
  2. 即时编译器(just-in-time complier),把编译后的结果缓存下来,所以依赖于更多内存缓存解释后的结果
  3. 自适应编译器(缓存20%左右代码)
  

  所以这四种技术,Java语言是有sun公司开发并且开源了,而JAVAAPI的规范由于开源了,后来演变为由第三方组织定义的,JavaClass的格式规范还是由Sun公司的定义规范的,最后的JVM,sun公司和第三方组织都有提供。
  SUN公司提供的JVM,总的叫做HotspotJVM,但具体软件分为如下两种:
  JRE java:running环境。
  JDK java:开发环境。
  第三方提供的JVM是叫做OpenJDK:开源的开发加运行。
  JDK可以理解为包含了java代码+JavaAPI+JVM,这是用于实现Java开发的最小环境。JRE只有JVM和Java SE API
  

  Java应用领域不同,Java可以分为三类:
  Java SE Standard Edtion     j2se
  Java EE Enterprise Edition  j2ee
  Java ME Mobile Edition      j2me
  Java问世后,人们对动态网站需求越来越大,Java就引入了applet这个技术。这个东西只要HTML网页开发者加入applet这个小程序,用户使用的浏览器装有jre的插件,就可以直接运行。使得动态网站得以实现。但这是客户端动态网站实现方式。
  随后CGI技术就诞生了,CGI:common gateway interface 通用网关协议。
  html,mime可以将其他格式全都转换成文本格式。
  随后Java为了引入类似cgi的技术出现了servlet。servlet:简单说以java语言cgi技术
  Servlet技术出现,增加了Java对于http处理能力。但随之又有一个问题产生,所有http请求,都必须转成后端Java程序进行编译运行,这样一来,严重影响了Java的处理性能。而且Java程序员必须还要懂HTML,这样Java返回用户时的HTML格式才能正确。所以就必须使用框架,并且JSP就诞生了。
  JSP:java server page,能够嵌入HTML网页的一种技术,为使用mvc框架打下了基础。
  SSH框架:Structs,Spring,Hebernate。
  JSP ——> Servlet(通过Jasper)
  Servlet Container Servlet容器
  Web Container Web容器
  总的来说就是对JVM的功能进行扩展。所以就是一个jvm instance,那么100个请求怎么实现并行处理?难道启动100个JVM实例来实现吗?一个JVM就是一个进程,但这个进程的创建与撤销代价非常大,资源消耗很厉害,所以,JVM是通过启动多个线程来实现并行处理的。这样JVM运行时内存分配是非常复杂的。可以通过如下介绍进行理解。
  运行时数据区域:
  线程私有内存区:程序计数器
  java虚拟机桟
  线程共享内存区:方法区
  java堆(存放对象)(类-执行操作,对象-执行方法,对象都是同一类)
  上述的东西都是存放在内存中的,当内存存满后就会内存溢出,为了避免这个情况,Java会进行内存回收;Java定时自动内存回收,使用垃圾回收器GC。
  垃圾回收算法:
  1、标记清除(会产生碎片)
  2、复制
  3、标记整理
  

  垃圾回收器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old
  CMS:Concurrent Mark Sweep 并行标记清除器
  特点:并发收集,低停顿,但无法收集浮动垃圾
  JDK安装
  oracle官网下载下来,jdk进行安装。
  安装完成后配置环境变量:vim /etc/profile.d/java.sh;
  【export JAVA_HOME=/usr/java/jdk1.6.0_21】
  【export PATH=$PATH:$JAVA_HOME/bin      】
  . /etc/profile.d/java.sh
  JVM:启动JVM虚拟机,就是使用java这个程序。
  java命令的配置参数:
  -xx:+        : 开启此参数指定的功能
  -xx:-        : 关闭功能
  -xx:= : 给option指定的选项赋值
  java -xx:+PrintFlagsFinal  用于获取配置参数帮助!
  类加载器:类运行需要到运行区进行运行,并且有可能要依赖其他的公共类或私有类,所以需要一个类加载器。
  类的生命周期:[Loading-Verification-Preparation-Resolution-Initilization]-Using-Unloading
  

  sun的jdk监控和故障处理工具
  jps,JVM Process Status Tool:显示指定系统内所有的HotSpot虚拟机过程列表信息
  jstat,JVM Statistic Monitoring Tool:收集并显示HotSpot虚拟机各方面的运行数据
  jinfo:显示正在运行的某HotSpot虚拟机配置信息
  jmap:生成某HotSpot虚拟机的内存转储快照
  可视化工具:
  jconsole: java的监控与管理控制台
  jvisualvm:
  Java EE APIS:EJB JMS JMX JTA JavaMail
  Java SE APIS:JNDI JAXP
  

  JAVA EE Application Servers:
  Websphere Weblogic oc4j JBoss JOnAS Geronimo Glassflish
  

  Tomcat各组件的关系
  
  
  
  
  
  
  
  
  
  
  

  
  
  
  
  JSP test.page.
  
  
  
  
  
  Tomcat的conf/下
  server.xml核心配置文件,tomcat-users.xml用户权限管理文件、web.xml 默认的应用程序部署描述符、context.xml上下文配置文件
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642258-1-1.html 上篇帖子: cacti 监控tomcat服务 下篇帖子: tomcat7线程池配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表