菜鸟学Linux 第100篇笔记 tomcat 之 java

简介:

菜鸟学Linux 第100篇笔记 tomcat 之 java




内容总览

java概述

java  包含四个独立却又彼此相关的技术

四个独立的技术运作流程

JVM的实现方式

JVM的虚拟机软件

JAVA应用领域的不同,Java可分为三类 SE, EE, ME

CGI (Common Gateway Interface)

servlet CGI (JSP)

JVM 虚拟机运行时内存空间

类加载器、类的生命周期

jdk的安装

java配置参数

Sun JDK监控和故障处理工具

可视化工具 gui




tomcat 

PHP:

开发语言:脚本语言

运行环境:解释执行

Zend Engine: Opcode

Xcache, APC, eAccelerator

MVC (model view controller)

data数据

bussiness:业务

presentation:展示


C/C++ cpu, os

移植困难

维护成本高


高速

驱动


C: 面向过程

C++ 面向对象


C API (Application Programming Interface)

os, system call

api


windows, api

linux, api

POSIX: Portable Operating System


ABI: Application Binary Interface



oak: 橡树

java能够在不同的硬件平台上运行同一种语言所开发出来的程序

全球最流行语言


java  包含四个独立却又彼此相关的技术

java程序设计语言

Java API

Java Class文件格式 (运行在jvm上) bytecode: 字节码

JVM:Java Virtual Machine


Once for all 一次编译到处运行 Write Once, Run anywhere


四个独立的技术运作流程

使用java程序设计语言结合Java API所提供的库编写出来的原程序,由编译器编译成Java 

Class文件格式最后将此文件在jvm上运行



JVM

提供公共类和私有类

class loader


JVM的实现方式

1. 一次性解释器,解释字节码并执行。

每次执行时还需要再进行编译才可执行,此次的编译则是将字节码编译成不同的硬件和软件

平台可以识别的执行程序

2. 即时编译器(just-in-time complier)

依赖于更多内存来缓存解释器解释后的结果

3. 自适应编译器

优化程序缓存的代码,缓存20%左右的代码,提高80%的速度



Java设计语言: Sun

Java API: Sun, Java规范开放组织定义的,第三方类库

Java class: Sun



JVM的虚拟机软件

JVM: Hostspot JVM(Sun)

JRE Java Runtime Environment运行时环境 (没有编译只可运行) 

JDK Java Development Kit (开发编译+运行)


JVM: OpenJDK

开发+运行(开源实现)


JDK=Java + API + JVM 用于实现Java程序开发的最小环境

JRE=JVM + Java SE API



JAVA应用领域的不同,Java可分为三类

JAVA SE:Standard Edition, J2SE

JAVA EE:Enterprise Edition, J2EE

JAVA ME:Mobile Edition, J2ME


1995年, JAVA 1.0面世, James Gosling, Green Project

GPL (General Public License)


applet: 小程序 类库 

动态网站


CGI (Common Gateway Interface) 协议和规范,

可以使web服务器额外调用其它应用程序或启动其它进程来执行用户所请求的动态程序类的资源

在本地执行以后,格式化为html文档再返回给客户端的一种技术


servlet CGI

以JAVA语言实现的CGI技术,以java来开发网站,开发必须遵守servlet规范,servlet能够接受

http请求,能够理解http协议,并且能够将html文档的执行结果通过封装成http报文的格式来

响应给客户端的请求


任何一种静态内容都得在java程序中生成,这使java程序开发者必须得懂html


JSP:是servlet的一种特殊类 Java Server Page (可以分离html和java动态)

可以将java的脚本程序嵌入至html文档中

<%language="java">

SSH: Structs, Spring, Hebernate


JSP --> servlet

jasper 将jsp转换成.java

java编译器 负责将.java 编译成 .class



.jsp --> .java --> (JVM) .class


JDK: javac, .java --> .class


Web

Servlet Container: Servlet 容器

web container



JVM 虚拟机运行时内存空间

线程私有内存区

程序计数器区 程序执行状态

java虚拟机栈 保存局部变量

线程共享内存区

本地方法栈

方法区 (类)

堆 (对象区) java自动内存回收 GC (Garbage collector)

垃圾回收算法

1. 标记 清除

2. 复制 (避免碎片,浪费内存)

3. 标记整理


垃圾回收器

Serial

ParNew 并行回收

Parallel Scavenge 降低垃圾回收所需要用的时间

Serial Old 单线程

Parallel Old 多线程


CMS:Concurrent Mark Sweep

并发收集,低停顿

无法收集浮动垃圾,由于基于标记,清除会产生碎片


G1 不会产生碎片,能够精准控制停顿时间



类加载器

jvm提供

外部提供


类生命周期

loading

verification

preparation

resolution

initialization

using

unloading



jdk的安装

从官方网站下载

www.oracle.com download

我这里下载的是jdk-8u121-linux-x64不知道为何没找到之前的版本呵呵 


安装

下载到linux文件夹里 因为是rpm包直接命令rpm命令安装即可

 # rpm -ivh jdk-8u121-linux-x64.rpm


配置环境变量

# vim /etc/profile.d/java.sh

添加如下两行

export JAVA_HOME=/usr/java/jdk1.8.0_121

export PATH=$PATH:$JAVA_HOME/bin


此时使用命令便可查看已经安装好的jdk版本信息

# java -version



java配置参数

-XX:+<option> 开启此参数指定的功能

-XX:-<option> 关闭功能

-XX:<option>=<value> 给option指定的选项赋值


-D<name>=<value>  set a system property


                 

java -XX:+PrintFlagsFinal  显示所支持的所有参数和其默认值






Sun JDK监控和故障处理工具

jps  JVM process status tool  显示指定系统内所有的hotspot虚拟机进程的列表信息

jstat JVM statistics Monitoring tool 收集并显示hotspot虚拟机各方面的运行数据

jinfo 显示正在运行的hotspot虚拟机配置信息

jmap 生成某hotspot虚拟机的内存转储快照



可视化工具

jconsole  Java的监控与管理控制台

jvisualvm java的虚拟化控制台工具 可视化的vm

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1896001如需转载请自行联系原作者


Winthcloud

相关文章
|
28天前
|
前端开发 JavaScript Java
Java构建工具-maven的复习笔记【适用于复习】
这篇文档由「潜意识Java」创作,主要介绍Maven的相关知识。内容涵盖Maven的基本概念、作用、项目导入步骤、依赖管理(包括依赖配置、代码示例、总结)、依赖传递、依赖范围以及依赖的生命周期等七个方面。作者擅长前端开发,秉持“得之坦然,失之淡然”的座右铭。期待您的点赞、关注和收藏,这将是作者持续创作的动力! [个人主页](https://blog.csdn.net/weixin_73355603?spm=1000.2115.3001.5343)
35 3
|
28天前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
49 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
2月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
181 26
|
2月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
2月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
3月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
58 2
|
3月前
|
分布式计算 Java Hadoop
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
通过以上步骤,可以有效地解决 `HADOOP_HOME`和 `JAVA_HOME`删除后依然指向旧目录的问题。确保在所有相关的配置文件中正确设置和删除环境变量,并刷新当前会话,使更改生效。通过这些措施,能够确保系统环境变量的正确性和一致性。
49 1
|
2月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
82 0
|
3月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)

热门文章

最新文章