
java高级
丨风语者丨
专注于大数据
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM笔记9:对象的实例化内存布局与访问定位
1、对象的实例化 美团: 对象在了VM中是怎么存储的? 对象头信息里面有哪些东西? 蚂蚁金服: 二面: java对象头里有什么1.判断对象对应的类是否加载、链接、初始化虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。(即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名...原创 2020-12-11 10:26:31 · 257 阅读 · 0 评论 -
JVM笔记8:方法区
1、栈、堆、方法区的交互关系从线程共享与否的角度来看2、方法区的理解官方文档《Java虚拟机规范》中明确说眀:尽管所有的方法区在逻辑上是属于堆的一部分,但些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于 HotspotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开所以,方法区看作是一块独立于Java堆的内存空间。方法区( Method area)与Java堆一样,是各个线程共享的内存区域方法区在JVM启动的时候被创建,原创 2020-12-07 20:32:50 · 963 阅读 · 0 评论 -
JVM笔记7:堆
目录1、堆的核心概述java7和java8对比2、设置堆内存大小与OOM设置堆内存大小默认情况下Out0fMemory举例3、年轻代与老年代存储在JVM中的Java对象可以被划分为两类:配置新生代与老年代在堆结构的占比4、图解对象分配过程总结:对象分配的特殊过程JVisualVM演示常用调优工具5、Minor GC、 Major GC 与Full GC年轻代GC( Minor GC)触发机制:老年代GC( Major GC/Full GC)原创 2020-12-06 19:18:12 · 1353 阅读 · 0 评论 -
JVM笔记6:本地方法接口和栈
目录1、什么是本地方法?2、为什么要使用Native Method?3、现状1、什么是本地方法?简单地讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如c。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个c的函数。 "A native method is a Java method wh原创 2020-12-04 11:05:16 · 319 阅读 · 0 评论 -
JVM笔记5:虚拟机栈
1、虚拟机主要特点虚拟机栈出现的背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。初步印象有不少Java开发人员一提到Java内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有Java堆(heap) 和Java栈(stack)?为什么?...原创 2020-12-03 23:11:16 · 834 阅读 · 0 评论 -
JVM笔记4:程序计数器
1、PC寄存器概述官方文档https://docs.oracle.com/javase/specs/jvms/se8/html/JVM中的程序计数寄存器(Program Counter Regi ster) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物..原创 2020-11-26 16:19:07 · 185 阅读 · 0 评论 -
JVM笔记3:运行时数据区概述及线程
1、运行时数据区内部结构内存是非常重要的系统资源,是硬盘和CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了 JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。Java虚拟机定义了若千种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程原创 2020-11-26 15:28:31 · 217 阅读 · 0 评论 -
JVM笔记2:类加载子系统
1、内存结构概述2、类的加载器及类加载过程 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Executior Engine决定。 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)eg:...原创 2020-11-26 12:35:37 · 789 阅读 · 0 评论 -
JVM笔记1:JVM与Java体系架构
目录1、jvm位置2、jvm整体结构3、java执行流程4、JVM的架构模型基于栈式架构的特点基于寄存器架构的特点总结:5、JVM的生命周期虚拟机启动虚拟机执行虚拟机的退出6、JVM发展历程Sun Classic VMExact VMSUN公司的HotSpot VMBEA 的JRockitIBM 的J9KVM和CDC/CLDC HotspotAzul VMLiquid VMApache HarmonyMicroso.原创 2020-11-25 15:33:38 · 1295 阅读 · 0 评论 -
项目面试题5:消息队列
消息队列在项目中的使用背景:在分布式系统中是如何处理高并发的。 由于在高并发的环境下,来不及同步处理用户发送的请求,则会导致请求发生阻塞。比如说,大量的insert,update之类的请求同时到达数据库MYSQL,直接导致无数的行锁表锁,甚至会导致请求堆积很多。从而触发 too many connections 错误。使用消息队列可以解决【异步通信】1、异步2、并行3、排队消息队列电商使用场景:消息队列的弊端: 消息的不确定性:延迟队列,...原创 2020-11-21 09:44:10 · 148 阅读 · 0 评论 -
项目面试题4:购物车
购物车实现过程购物车:购物车跟用户的关系? 一个用户必须对应一个购物车【一个用户不管买多少商品,都会存在属于自己的购物车中。】 单点登录一定在购物车之前。 跟购物车有关的操作有哪些? 添加购物车 用户未登录状态 添加到什么地方?未登录将数据保存到什么地方? Redis? --- 京东 Cookie? --- 自己开发项目的时候【如果浏览器禁用cookie】 用户登录状态 Redis 缓存中 【读写速度快】 Hash :原创 2020-11-21 09:43:45 · 2937 阅读 · 1 评论 -
项目面试题3:单点登录
单点登录实现过程单点登录:一处登录多处使用!前提:单点登录多使用在分布式系统中。Demo:参观动物园流程:检票员=认证中心模块我直接带着大家进动物园,则会被检票员拦住【看我们是否有门票】,没有[售票处买票]登录=买票我去买票【带着票,带着大家一起准备进入动物园】检票员check【有票】Token=piao我们手中有票就可以任意观赏动物的每处景点。京东:单点登录,是将token放入到cookie中的。 案例:将浏览器的cookie禁用,则在登录京东则失...原创 2020-11-21 09:43:15 · 761 阅读 · 0 评论 -
项目面试题2:es与solr的区别
背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】开发语言:java语言开发诞生时间:Solr :2004年诞生。Es:2010年诞生。Es 更新【功能越强大】区别:当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。 在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。 Solr利用zookeeper进行分布式管理原创 2020-11-21 09:42:49 · 394 阅读 · 0 评论 -
项目面试题1:redis 在项目中的使用场景
数据类型 使用场景 String 比如说 ,我想知道什么时候封锁一个IP地址。Incrby命令 Hash 存储用户信息【id,name,age】 Hset(key,field,value) Hset(userKey,id,101) Hset(userKey,name,admin) Hset(userKey,age,23) ----修改案例---- ...原创 2020-11-21 09:42:08 · 1019 阅读 · 1 评论 -
Java高级5:JVM垃圾回收机制
jvm分区4大算法1、引用计数算法2、复制算法3、标记清除4、标记压缩5、标记-清除-压缩原创 2020-11-21 09:41:24 · 159 阅读 · 0 评论 -
Java高级4:Mysql什么时候建索引
索引是什么?MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。优势类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗劣势实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表原创 2020-11-21 09:40:59 · 146 阅读 · 0 评论 -
Java高级3:redis持久化
Redis提供了两种不同形式的持久化方式RDB(Redis DataBase) AOF (Append OF File)RDBAOF原创 2020-11-20 17:50:16 · 181 阅读 · 0 评论 -
Java高级2:git分支相关命令
原创 2020-11-20 17:43:43 · 136 阅读 · 0 评论 -
Java高级1:Linux常用服务类相关命令
原创 2020-11-20 17:40:43 · 189 阅读 · 0 评论