听马哥将Java笔记

java  java不能编译成ABI的模式,所以要编译成类似于opcode的字节码的形式才能运行{bytecode:字节码}  字节码不是二进制,

所以需要特别的解释器才可以运行,即JVM

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

java程序设计语言

java API

java class 文件格式(需要运行在jvm上,java程序编译出来的字节码模式遵循那种规范需要java class来定义)

JVM:java virtual machine{bytecode

即java程序设计语言结合API开发出来原程序编译成(java  complier编译器)类文件在jvm上运行,

java成勋设计语言+API开发出来1.java-------->编译java complier------------>1.class

JVM的实现方式:(将字节码转换成二进制)

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

2.即使编译器(依赖于更多内存缓存解释结果)

3.自适应编译器,(自动进行缓存执行频率比较高的代码)缓存20%左右的代码,提供80%的速度

JVM: Hotspot JVM

(SAN)名字叫做jre 即java running engi(运行)jdk 即java开发环境=JVM+JAVA SE API jdk包含jre(开发+运行)=JAVA+API+JVM,是用于java程序开发的最小环境。

JVM: OpenJDK  (Oracle  (开发+运行+开源)

JAVA技术分为三类,

JAVA  SE  Standard  Edition

JAVA  EE  Enterprise  Edition

JAVA  ME  Mobile  Edtion

CGI: common gateway interface

作用:让用户访问某一种资源的时候,触发服务器,调用一种程序来处理请求

mime,通过html 或http协议转换成文本格式再换成原来的程序

假如用户请求a.cgi的网页,服务器调用一种程序将a.cgi转换成html返回跟客户端

Servlet:以java语言实现的CGI技术

MVC:实现页面,数据,业务分离

JSP:是servlet上的特殊类,java server page 可以实现html和jave共同嵌套

jasper----》servlet----》JVM----》html

.jsp---------.java----------.class

JSP执行效率比php高

Servlet container:servlet容器,接受用户发送的.cgi程序,负责源程序是否发生改变,

web  container:

JVM虚拟机在运行时数据区域

程序计数器:用来保存java代码执行在那个地方了(是每线程独有的)

java虚拟机栈:栈是用来保存本地变量,(每线程独有的)

线程共享内存区

方法区:

堆:就是实例出来的对象,所谓的程序溢出就是实例化出来的对象太多,导致内存不够用,就会溢出,

像java这种高级语言有java回收器,

本地常量区

本地方法站:

引用计数器:垃圾回收器根据进程的引用次数,当引用次数为0的时候,贴上标签

此对象已死,然后过一段时间垃圾回收站来回收

垃圾回收算法:新生代对象,老龄化对象

1.标记+清除,会产生碎片

2.复制  每一个对象在存储的时候,存两份,一个真正存数据,一个空闲着,用的时候存数据

3.标记整理算法 当不用的时候我们移动到另外一端,

垃圾回收器:

serial  一次只能回收一个垃圾,效率比较低,之后出生了并行的回收器,名字叫parnew,能够实现多线程回收(多颗cpu才可以)

Parallel Scavenge 吞吐量比较高,类似于ParNew,优点是收集垃圾占用时间少

Parallet old 多线程

CMS:并行标记清除器,concurrent mark sweep,标记清楚算法,并发收集,低停顿,吞吐量高  清除垃圾占用虚拟机的时间很短

缺点:无法清除浮动垃圾,指的是正在运行的进程产生的垃圾

由于基于标记,清除会产生碎片

Java配置参数:

-xx:+option:开启此参数的功能

-xx: -option:关闭参数

类的生命周期,

加载,loading

验证,verification  文件格式验证,字节码验证

准备,preparation

解析,resolution

初始化,initilization

使用,using

卸载,unloading

Sun JDK监控和故障处理工具

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

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

jinfo,现实虚拟机配置信息  jinfo -h

jmap:生成某hotspot虚拟机的内存转储快照,调试的时候才可以用到

可视化工具:

jconsole:java的监视与管理控制台

jvisualvm:

时间: 2024-10-25 18:44:21

听马哥将Java笔记的相关文章

马哥Linux学习笔记之二——网络

1.MAC(Media Access Control,介质访问控制) 是解决底层数据通信冲突的解决方案.因此,给每一个接入这样网络的主机一个id标示符,这个id标示符就叫做MAC地址. 2.CSMA/CD(Carrier Sense Multipath Access Collision Detection,载波侦听多路访问冲突检测),线型网络 以太网Ethernet最核心的标志. 3.Token-Ring(IBM)技术 环形网络解决冲突的方案.但是由于IBM的专利限制没能推广开来. 4.星形网络

马哥Linux学习笔记之四——DNS

1.BIND:Berkeley Internet Name Domain DNS:Domian Name Service 域名解析 2. Http 3.PAM 插入式认证模块 4.SMTP/POP3/IMAP4:Mail Server 5.域名 www.baidu.com这是一个主机名(FQDN,Full Qualified Domain Name,完全限定域名),com是一个域名,baidu.com也是一个域名,域名是好多主机的集合. 域名解析起后面有一个数据库,解析就是一个查询的过程.域名解

马哥Linux学习笔记之五——邮件服务

1.SMTP只负责将邮件发送到服务器,其他的,像身份认证检测邮件,都不能完成.(25/tcp) ESMTP:Extended SMTP POP3:Post Office Protocol IMAP4:Internet Mail Access Protocol 2.Open Relay:开放式中继 就是人家的邮件从这个邮件服务器过,你都帮忙转发,这样就会成为产生垃圾邮件的根源.所以都要关闭Open Relay 3.SASL,Simple Authintication Secure Layer,简单

马哥Linux学习笔记之三——加密

1.明文传输 ftp,http,smtp,telnet 2.机密性:plaintext-->转换规则-->ciphertext ciphertext-->转换规则-->plaintext 完整性:单项加密算法,提取数据特征码.输入一样,输出必然一样:雪崩效应,输入的微小改变,将会引起结果的巨大改变:无论原始数据是多少,结果大小都是相同的:不可逆,无法根据特征码还原原来的数据. 3.密钥 4.对称加密:有加密算法,有密钥 5.密钥交换算法 IKE(Internet Key Excha

马哥Linux学习笔记之一

1.在执行脚本的时候可以用./或者. ./(点空格点斜杠)来执行脚本 ./ 表示启动了另一个Shell去执行脚本(另一个进程),所以点斜杠执行脚本时,设置的环境变量会随着进程的退出而结束,其中的环境变量设置对当前Shell不起作用. . ./相当于source ./执行脚本,source是执行脚本当中的命令,也就是说在当前进程中执行命令,所以其中的环境变量的设置会对当前Shell其作用. 2. 读取硬盘上的文件 读取硬盘上的文件先要将文件读取到内存上,再将其在内存上地址交给进程,这样进程就可以读

马哥linux学习笔记:加密,解密基础

在计算机网络建设的初期,由于能使用到计算机的人少之又少,并没有考虑到有数据加密需求,随着社会的发展,互联网已俨然成为我们生活中不可或缺的一部分,人们不管是交流,购物,还是工作都已经离不开互联网.在电脑,手机,各种电子设备构建的互联网中,数据的安全问题已经成为人们很是关注一个重要环节. 现在,我们就来了解一下linux下是如何实现数据加密及解密的. 对于确保数据的安全性,我们要达成的目标有三个: 保密性,完整性,可用性. 现今蛇龙混杂的互联网,总是有很多拥有强烈好奇心的不安分的人想尽办法要获知其他

马哥linux学习笔记:源码编译安装

由于rpm包在作者制作封装的时候已经把程序的一些特性固定了,如果我们根据自己的需求,需要运用程序的一些没有普适性相关特性,就需要下载程序的源码手动编译安装了,这里只是简单的介绍一下C代码的程序包编译安装方法. 为了能更直观的看到源码编译安装的过程,我演示一下在centos7.2环境中编译安装httpd2.2: 首先,编译的前提是得有称手的工具及环境了,编译c源代码就需要用到开发工具,make,gcc了,环境就需要开发库跟头文件了,如果系统中没有这些,就需要yum安装了. 这里我运行yum gro

马哥linux学习笔记:htop命令使用详解

htop工具在centos官方yum源仓库中是不提供的,但在epel的yum源仓库中是有的,所以我们可以通过源码编译安装htop,也可以设置epel的yum源来用yum命令安装htop,设置epel的yum源方法为: 首先,下载epel官方网站提供的rpm包,然后安装,就可以设置epel的yum源直接使用了: centos6: wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm centos7:

马哥-python-课堂笔记12-python核心数据类型及类型显示转换

python的核心数据类型(内置)数字:int,long,float,complex(复数),bool(布尔型)字符:str,unicode列表:list字典:dict元组:tuple文件:file其他的类型:集合(set),frozenset(冻结集合),类类型,None其他文件类工具:pipes(管道),fifos(先进先出管道),sockets(套接字) 类型转换:内置函数,完成非字符串转化为字符型str():和print的输出的结果类似repr():表示的是精确值format():以特定