JAVA
学致前端攻略
学致前端攻略,致力于技术分享,本博客将每日分享互联网相关文章。
展开
-
什么是微服务?微服务之间是如何独立通讯的?
什么是微服务微服务架构是一个分布式系统,按照业务进行划分成为不同的服务单元,解决单体系统性能等不足。微服务是一种架构风格,一个大型软件应用由多个服务单元组成。系统中的服务单元可以单独部署,各个服务单元之间是松耦合的。微服务概念起源:Microservices微服务之间是如何独立通讯的同步REST HTTP 协议REST 请求在微服务中是最为常用的一种通讯方式,它依赖于 HTTP\HTTPS 协议。RESTFUL 的特点是:每一个 URI 代表 1 种资源客户端使用 GET、POS转载 2020-12-21 13:35:38 · 1183 阅读 · 0 评论 -
Git 入门
版本控制什么是版本控制版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制。为什么要版本控制有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。本地版本控制系统许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就转载 2020-12-19 14:23:47 · 170 阅读 · 1 评论 -
手把手教你定位常见Java性能问题
概述性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。预备知识既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。top命令top命令使我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信息。top -Hp转载 2020-12-19 10:41:25 · 228 阅读 · 2 评论 -
RocketMQ 的几个简单问题与答案
1 单机版消息中心一个消息中心,最基本的需要支持多生产者、多消费者,例如下:class Scratch { public static void main(String[] args) { // 实际中会有 nameserver 服务来找到 broker 具体位置以及 broker 主从信息 Broker broker = new Broker(); Producer producer1 = new Producer(); pro转载 2020-12-18 15:01:23 · 270 阅读 · 0 评论 -
消息队列扫盲(RocketMQ 入门)
消息队列扫盲消息队列顾名思义就是存放消息的队列,队列我就不解释了,别告诉我你连队列都不知道似啥吧?所以问题并不是消息队列是什么,而是 消息队列为什么会出现?消息队列能用来干什么?用它来干这些事会带来什么好处?消息队列会带来副作用吗?消息队列为什么会出现?消息队列算是作为后端程序员的一个必备技能吧,因为分布式应用必定涉及到各个系统之间的通信问题,这个时候消息队列也应运而生了。可以说分布式的产生是消息队列的基础,而分布式怕是一个很古老的概念了吧,所以消息队列也是一个很古老的中间件了。消息队列能用来干什转载 2020-12-17 09:53:40 · 499 阅读 · 0 评论 -
RabbitMQ入门看这一篇就够了
一文搞懂 RabbitMQ 的重要概念以及安装一 RabbitMQ 介绍这部分参考了 《RabbitMQ实战指南》这本书的第 1 章和第 2 章。1.1 RabbitMQ 简介RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ 发展到今天,被越来越多的人认可,这和它在易用性、扩展性、可靠性和高可用性等方面的卓著表现是分不转载 2020-12-16 16:40:09 · 462 阅读 · 0 评论 -
大白话入门 Spring Cloud
首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟。什么是Spring cloud构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的 Spring Cloud 就是微服务系统架构的一转载 2020-12-16 10:25:28 · 198 阅读 · 0 评论 -
Java 书单
Java基础《Head First Java》有人说这本书不适合编程新手阅读?其实本书还是很适合稍微有一点点经验的新手来阅读的,当然也适合我们用来温故 Java 知识点。ps:刚入门编程,最好的方式还是通过看视频来学习。《Java 核心技术卷 1+卷 2》建议有点 Java 基础之后再读,介绍的还是比较深入和全面的,非常推荐。这两本书的内容很多,全看的话比较费时间,建议大家用来巩固知识点或者当做工具书参考,是两本适合放在自己身边的好书。《Java 编程思想 (第 4 版)》大部分人称之转载 2020-12-15 17:05:45 · 233 阅读 · 0 评论 -
JAD 反编译
自动拆装箱对于基本类型和包装类型之间的转换,通过xxxValue()和valueOf()两个方法完成自动拆装箱,使用jad进行反编译可以看到该过程:public class Demo { public static void main(String[] args) { int x = new Integer(10); // 自动拆箱 Integer y = x; // 自动装箱 }} 反编译后结果:public class Demo{ p转载 2020-12-15 10:34:00 · 987 阅读 · 0 评论 -
JVM 详解,大白话带你认识 JVM
前言如果在文中用词或者理解方面出现问题,欢迎指出。此文旨在提及而不深究,但会尽量效率地把知识点都抛出来一、JVM的基本介绍JVM 是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,一种规范。通过在实际的计算机上仿真模拟各类计算机功能实现···好,其实抛开这么专业的句子不说,就知道JVM其实就类似于一台小电脑运行在windows或者linux这些操作系统环境下即可。它直接和操作系统进行交互,与硬件不直接交互,可操作系统可以帮我们完成和硬件进行交互的工作。1.1 Jav转载 2020-12-14 10:42:19 · 469 阅读 · 0 评论 -
分布式id生成方案总结
ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID。下面来分析各个生成分布式ID的机制转载 2020-12-10 12:04:22 · 152 阅读 · 0 评论 -
如何设计一个亿级网关(API Gateway)?
1.背景1.1 什么是API网关API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,缓存,请求路由等等。1.2 为什么需要API网关RPC协议转成HTTP。由于在内部开发中我们都是以RPC协议(thrift or dubbo)去做开发,暴露给内部服务,当外部服务需要使用这个接口的时候往往需要将RPC协议转换成HTTP协议。请求路由在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。统一鉴转载 2020-12-09 10:17:17 · 817 阅读 · 0 评论 -
服务之间的调用为啥不直接用 HTTP 而用 RPC?
什么是 RPC?RPC原理是什么?什么是 RPC?RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。RPC原理是什么?我这里这是简单的提一下,详细内容可以查看下面这篇文章:http://w转载 2020-12-08 17:02:28 · 156 阅读 · 0 评论 -
Dubbo 总结:关于 Dubbo 的重要知识点
一 重要的概念1.1 什么是 Dubbo?Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo 目前已经有接近 23k 的 Star ,Dubbo的Github 地址:https://github.com/apache/转载 2020-12-08 10:07:50 · 145 阅读 · 0 评论 -
CAP理论解读
经历过技术面试的小伙伴想必对这个两个概念已经再熟悉不过了!我当年参加面试的时候,不夸张地说,只要问到分布式相关的内容,面试官几乎是必定会问这两个分布式相关的理论。并且,这两个理论也可以说是小伙伴们学习分布式相关内容的基础了!因此,小伙伴们非常非常有必要将这理论搞懂,并且能够用自己的理解给别人讲出来。这篇文章我会站在自己的角度对这两个概念进行解读!CAP理论CAP 理论/定理起源于 2000年,由加州大学伯克利分校的Eric Brewer教授在分布式计算原理研讨会(PODC)上提出,因此 CAP定转载 2020-12-07 10:15:46 · 412 阅读 · 0 评论 -
单点登录(SSO)的设计与实现
一、前言1、SSO说明SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。https://baike.baidu.com/item/SSO/3451380例如访问在网易账号中心(http://reg.163.com/ )登录之后访问以下站点都是登录状态网易直播 http://v.163.com网易博客 http://blog.163.com网易花田 http://love.163.com网易考拉 https:/转载 2020-12-04 16:01:04 · 244 阅读 · 0 评论 -
JWT 身份认证优缺点分析以及常见问题解决方案
之前分享了一个使用 Spring Security 实现 JWT 身份认证的 Demo,文章地址:适合初学者入门 Spring Security With JWT 的 Demo。 Demo 非常简单,没有介绍到 JWT 存在的一些问题。所以,单独抽了一篇文章出来介绍。为了完成这篇文章,我查阅了很多资料和文献,我觉得应该对大家有帮助。相关阅读:《一问带你区分清楚Authentication,Authorization以及Cookie、Session、Token》适合初学者入门 Spring Secur转载 2020-12-04 09:57:30 · 232 阅读 · 0 评论 -
认证授权基础
1. 认证 (Authentication) 和授权 (Authorization)的区别是什么?这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。说简单点就是:认证 (Authentication): 你是谁。授权 (Authorization): 你有权限干什么。稍微正式点(啰嗦点)的说法就是:Authentication(认证) 是验证您的身份的凭据(例如用户名/用户ID转载 2020-12-03 17:06:20 · 359 阅读 · 0 评论 -
【实战】ZooKeeper 实战
1. 前言这篇文章简单给演示一下 ZooKeeper 常见命令的使用以及 ZooKeeper Java客户端 Curator 的基本使用。介绍到的内容都是最基本的操作,能满足日常工作的基本需要。如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!2. ZooKeeper 安装和使用2.1. 使用Docker 安装 zookeepera.使用 Docker 下载 ZooKeeperdocker pull zookeeper:3.5.8b.运行 ZooKeeperdocker ru转载 2020-12-03 09:44:14 · 167 阅读 · 0 评论 -
【进阶】ZooKeeper 相关概念总结
1. 开卷有益学习是一种习惯,只有把这种习惯保持下来,每天不学习一点就感觉浑身不自在,达到这样的境界,那么你成为大佬也就不远了买,正如我们标题所写的“开卷有益”。人生匆匆,要想过得有意义,那么加油吧!文章很长,先赞后看,养成习惯。2. 什么是ZooKeeperZooKeeper 由 Yahoo 开发,后来捐赠给了 Apache ,现已成为 Apache 顶级项目。ZooKeeper 是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于 Paxos 算法的 ZAB转载 2020-12-02 14:20:24 · 259 阅读 · 0 评论 -
【入门】ZooKeeper 相关概念总结
1. 前言相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢?拿我自己来说吧!我本人曾经使用 Dubbo 来做分布式项目的时候,使用了 ZooKeeper 作为注册中心。为了保证分布式系统能够同步访问某个资源,我还使用 ZooKeeper 做过分布式锁。另外,我在学习 Kafka 的时候,知道 Kafka 很多功能的实现依赖了 ZooKeeper。前几天,总结项目经验的时候,转载 2020-11-30 15:27:41 · 126 阅读 · 0 评论 -
MyBatis 常见面试题总结
1、#{}和${}的区别是什么?注:这道题是面试官面试我同事的。答:${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。#{}是 sql 的参数占位符,MyBatis 会将 sql 中的#{}替换为?号,在 sql 执行前会使用 PreparedStatement 的参数设置方法,按序给 sql 的?号占位符设置参数值,比如 ps.setInt(0, parame转载 2020-11-30 10:08:18 · 102 阅读 · 0 评论 -
Spring 设计模式介绍
JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见。我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下,由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章篇幅有限,对于设计模式以及一些源码的解读我只是一笔带过,这篇文章的主要目的是回顾一下 Spring 中的设计模式。Design Patterns(设计模式) 表示面向对象软件开发中最好的计算机编程实践。 Spring 框架转载 2020-11-27 09:41:46 · 235 阅读 · 0 评论 -
Spring事务总结
1. 什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson() 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。 public void savePerson() { personDao.save(person); personDetailDao.save(personDetail); }另外,需要格外注意的是:事务能否生效数据库引擎是否支转载 2020-11-26 17:04:10 · 210 阅读 · 0 评论 -
SpringBoot+Spring常用注解总结
为什么要写这篇文章?最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数)。所以,自己索性花了大概 两天时间简单总结一下了。因为我个人的能力和精力有限,如果有任何不对或者需要完善的地方,请帮忙指出!Guide 哥感激不尽!1. @SpringBootApplication这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。Gui转载 2020-11-26 10:38:59 · 200 阅读 · 0 评论 -
Spring常见问题总结
1. 什么是 Spring 框架?Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。Spring 官网:https://spring.io/。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。比如:Core Container 中的 Core 组件是Spring 所有组件的核心,Beans 组件转载 2020-11-25 12:08:51 · 126 阅读 · 0 评论 -
Java 命名之道
为什么需要重视命名?好的命名即是注释,别人一看到你的命名就知道你的变量、方法或者类是做什么的! 好的命名对于其他人(包括你自己)理解你的代码有着很大的帮助!简单举个例子说明一下命名的重要性。《Clean Code》这本书明确指出:好的代码本身就是注释,我们要尽量规范和美化自己的代码来减少不必要的注释。若编程语言足够有表达力,就不需要注释,尽量通过代码来阐述。举个例子:去掉下面复杂的注释,只需要创建一个与注释所言同一事物的函数即可// check to see if the emp转载 2020-11-24 16:16:45 · 209 阅读 · 0 评论 -
Redis 常见问题总结
1. 简单介绍一下 Redis 呗!简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。另外,Redis 除了做缓存之外,Redis 也经常用来做分布式锁,甚至是消息队列。Redis 提供了多种数据类型来支持不同的业务场景。Redis 还支持事务 、持久化、Lua 脚本、多种集群方案。2. 分布式缓存常见的技术选型方案有哪些?分布式缓存的话,使用的比转载 2020-11-24 09:54:48 · 236 阅读 · 0 评论 -
关于缓存的一些重要概念(Redis 前置菜)
1. 缓存的基本思想很多朋友,只知道缓存可以提高系统性能以及减少请求相应时间,但是,不太清楚缓存的本质思想是什么。缓存的基本思想其实很简单,就是我们非常熟悉的空间换时间。不要把缓存想的太高大上,虽然,它的确对系统的性能提升的性价比非常高。其实,我们在学习使用缓存的时候,你会发现缓存的思想实际在操作系统或者其他地方都被大量用到。 比如 CPU Cache 缓存的是内存数据用于解决 CPU 处理速度和内存不匹配的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。 再比如操作系统在 页表方案 基础之转载 2020-11-23 15:20:35 · 299 阅读 · 0 评论 -
MySQL 高性能优化规范建议
数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 bak_为前缀并以日期 (时间戳) 为后缀所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)数据库基本设转载 2020-11-23 09:10:10 · 200 阅读 · 0 评论 -
关于数据库中如何存储时间的一点思考
1.切记不要用字符串存储日期我记得我在大学的时候就这样干过,而且现在很多对数据库不太了解的新手也会这样干,可见,这种存储日期的方式的优点还是有的,就是简单直白,容易上手。但是,这是不正确的做法,主要会有下面两个问题:字符串占用的空间更大!字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。2.Datetime 和 Timestamp 之间抉择Datetime 和 Timestamp 是 MySQL 提供的两种比较相似的保存时间的数据类型。他们两者究竟转载 2020-11-21 15:46:53 · 292 阅读 · 0 评论 -
一千行MySQL命令
基本操作/* Windows服务 */-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格)/* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VARIABLES -- 显示系统变量信息数据库操作/* 数据库操作 */ -------转载 2020-11-21 09:32:12 · 196 阅读 · 0 评论 -
事务隔离级别(图文详解)
事务隔离级别(图文详解)什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。事务的特性(ACID)原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部转载 2020-11-20 17:15:08 · 234 阅读 · 0 评论 -
数据库索引总结(二)
什么是索引?索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B树, B+树和Hash。索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。为什么要用索引?索引的优缺点分析索引的优点可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。毕竟大部分系统的读请求总是大于写请求的。 另外,通过创建唯一性索转载 2020-11-19 14:20:55 · 257 阅读 · 0 评论 -
不了解布隆过滤器?一文给你整的明明白白!
海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!下面我们将分为几个方面来介绍布隆过滤器:什么是布隆过滤器?布隆过滤器的原理介绍。布隆过滤器使用场景。通过 Java 编程手动实现布隆过滤器。利用Google开源的Guava中自带的布隆过滤器。Redis 中的布隆过滤器。1.什么是布隆过滤器?首先,我们需要了解布隆过转载 2020-11-17 09:39:29 · 178 阅读 · 0 评论 -
一文带你看遍 JDK9~14 的重要新特性!
Java9发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如集合、Stream 流Java 平台模块系统Java 平台模块系统,也就是 Project Jigsaw,把模块化开发实践引入到了 Java 平台中。在引入了模块系统之后,JDK 被重新组织成 94 个模块。Java 应用可以通过新增的 jlink 工具,创建出只包含所依赖的 JDK 模块的自定义运行时镜像转载 2020-11-12 10:14:24 · 318 阅读 · 0 评论 -
类加载器
回顾一下类加载过程类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式(重写一个类加载器的 loadClass() 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。所有的类都由类加载器加载,加载的作用就是将 .class文件加载到内存。类加载器总结JVM 中内置了三转载 2020-11-11 09:26:35 · 104 阅读 · 0 评论 -
类加载过程
类的生命周期一个类的完整生命周期如下:类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访转载 2020-11-10 10:13:51 · 369 阅读 · 0 评论 -
类文件结构
类文件结构一 概述在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。Clojure(Lisp 语言的一种方言)、Groovy、Scala 等语转载 2020-11-09 09:37:05 · 96 阅读 · 0 评论 -
JDK 监控和故障处理工具
JDK 监控和故障处理工具总结JDK 命令行工具这些命令在 JDK 安装目录下的 bin 目录下:jps (JVM Process Status): 类似 UNIX 的 ps 命令。用户查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息;jstat( JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据;jinfo (Configuration Info for Java)转载 2020-11-07 15:47:22 · 2491 阅读 · 0 评论