菜鸟学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

相关文章
|
9天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
9天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
14 0
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
2月前
|
监控 负载均衡 Dubbo
|
2月前
|
Java 关系型数据库 应用服务中间件
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
45 0
|
2月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
39 0
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
4天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
18 0
|
9天前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
9 0
|
14天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境