-
yexindonglai@163.com
2022-03-01 11:34
Java
763°
0
在了解之前,我们先看看一个面试过程在面试的时候面试官经常会出现一道题:“Objecto=newObject()占用了多少内存?”A童鞋回答:“这个我知道,16个字节”,这时候面试官再问了:“为什么是16个字节呢?”A童鞋:“啊~~ 唉。。。。不知道唉,我只是来面试增删改查的,要知道这么多吗?”那么今天呢,为了解决这道题我们就需要了解对象的内存布局!什么是java对象的内存布局 java对象的内存布局主要的作用用来表示一个对象在计算机中占用了多少内存;内存布局主要分为四个部分:markword、类型指针、实例数据、对齐(补位)markword 对象头的组成部分,mark是标记的意思,所以m
-
yexindonglai@163.com
2022-03-01 11:33
Java
699°
0
我们先看看类的加载过程,在我们运行java代码时,首先会通过编译器将.java的文件编程成.class文件,之后在通过类加载器将.class文件转为字节码加载到jvm运行时数据区里面,整个加载过程如下 上图只是类的加载过程,还没有创建对象;那如果创建对象的话,比如执行newObject();这段代码,里面主要有2个步骤,分别是实例化和初始化 如果创建对象的是有引用变量,那就是这样的 实例化(半初始化)对象实例化的过程,其实也叫半初始化,就是时候你创建对象的过程中创建到一半的情况下,拿下面的代码来举例:packagecom.test;publicclassTest{publicstaticvo
-
yexindonglai@163.com
2022-03-01 11:32
后端
1486°
0
什么是RPC PRC全称是RemoteProcedureCall,即远程过程调用。比如我发送了一个rpc请求:POST/getUser?user_id=123;相当于是我本地的电脑调用了远在服务器的getUser(user_id)方法,这就叫远程过程调用,这个远不一定是跨网络的调用,同一台电脑的2个进程之间调用也可以称为是RPC; 还有一点,RPC也是一种“API设计风格”,因为rpc只有GET和POST请求,它不像restful风格那样有多种请求:DELETE、PUT、GET、POST; RPC和Dubbo rpc和dubbo比起来,rpc更像是一种编程细想或者是通信方式(RPC不是协议
-
yexindonglai@163.com
2022-03-01 11:29
数据库
924°
0
前戏--被面试官虐待的经历来自面试官发自灵魂深处的拷问:说说你对连接池的理解;一脸懵逼的我:“额~~~,连接池是把数据库的连接统一进行管理,做到连接复用的目的”;咄咄逼人的面试官:“嗯,没错,还有呢?说说连接池的原理”;一脸懵逼的我:“还有吗?额~~,不清楚耶”;咄咄逼人的面试官:“你简历上写着精通这,精通那,但我感觉你只是会用,连熟悉都说不上,是谁给你的自信来面试高级架构师职位的?下次面试把简历写真实一点,回去吧!一会赶不上二路汽车了!”;委屈的我: ↓ 以上是博主之前真实的面试经历,一点都不夸张,每当面试官问了好几个问题都回答不上来的时候,你就能感受到面试官充满嫌弃的表情,而你又是一副
-
yexindonglai@163.com
2022-03-01 11:28
Java
697°
0
创建对象的内存是分配在堆上还是栈上面?大部分童鞋的回答是这样的:“肯定分配在堆内存的嘛,栈内存是属于子线程和基本数据类型专用的内存空间,怎么会分配到栈上面呢?”,这个回答嘛,也对,也不对,说他对,没错,确实是堆上分配的,说他不对,是因为得看具体情况,那么接下来就为大家介绍下,什么是栈上分配,什么是堆上分配; 首先我们得先了解一个概念,现在java的虚拟机默认使用的都是oracle公司的hotsport虚拟机,在控制台输入:java-version就会打印出java版本以及虚拟机的信息不可否认,大部分的对象创建时都是分配到堆内存里面的,但是呢也有特例,以hotsport虚拟机为例,ho
-
yexindonglai@163.com
2022-03-01 11:25
Mybatis
870°
0
记得每次博主去面试时,都能想象到面试官会像一个饥渴难耐的硬汉,一见到面试者都会使用加特林连环炮疯狂地发问,势必要问到盲区为止,不为别的,就为了心中那种我会你不会的优越感,为了那种心理上的快感,哪怕是自己不会的也问,当面试者回答后若有所思,甚至假想点点头在那不懂装懂; 这不,面试题又来了:“我们都知道mybatis的mapper接口是没有实现类的,在使用的时候你知道它是如何实例化的吗?”懵逼的我:“知道啊,用的是jdk自带的动态代理;”;饥渴的面试官:“嗯,没错,继续说,它底层做了哪些事情?”;懵逼的我:“就是动态代理啊,还有啥?”得意的面试官:“这样子啊,那你回去等消息吧~” 原理
-
yexindonglai@163.com
2022-03-01 11:23
Mybatis
870°
0
缓存是什么 缓存其实就是存储在内存中的临时数据,这里的数据量会比较小,一般来说,服务器的内存也是有限的,不可能将所有的数据都放到服务器的内存里面,所以,只会把关键数据放到缓存中,缓存因为速度快,使用方便而出名! 为什么需要缓存 BS架构里面,用户的所有操作都是对数据库的增删改查,其中查询的操作是最多的,但如果用户想要某个数据时每次都去数据库查询,这无疑会增加数据库的压力,而且获取时间效率也会降低,所以为了解决这些问题,缓存应用而生,使用了缓存之后,服务器只需要查询一次数据库,然后将数据保存到服务器主机的内存中,以后读取时就直接取内存中的数据,而不需要每次都查数据库,这种方案除了降低数据库
-
yexindonglai@163.com
2022-03-01 11:21
SpringBoot
864°
0
springBoot是什么 springboot是一个框架,它依赖于spring,在过去我们使用spring项目的时候,需要大量各种繁琐的配置文件才能让spring跑起来,但自从有了springboot之后,它简化了使用方式,做到了无xml文件的配置即可运行,最大的特点是让配置文件变得简单,得益于自身的自动装配功能,部署也变得更简单(springboot内置web容器服务器tomcat),加上热部署后,可以快速开发和运行一个项目; spring大家都知道,boot是启动的意思。所以,springboot其实就是一个启动spring项目的一个工具而已,总而言之,springboot是一个服务
-
yexindonglai@163.com
2022-03-01 11:18
Java
680°
0
晋升的四种方式担保机制大对象直接进入老年代长期存活的对象动态年龄判断1、担保机制1.1什么是担保机制 我们都用过花呗借呗、或者信用卡吧?就是你身上的前不够用的时候,你可以去借信用卡、借花呗、借借呗,但是你必须有个东西来担保,不然人家凭什么借给你?现在来说一般都是用你的信用分来担保的,就像支付宝有芝麻信用分数;还有一些比较大的数目是需要你用车子或房子来抵押的,这就是担保,以确保你不会跑掉;那其实jvm在内存分配的时候也有担保机制,就是你的新生代内存不足的时候,通过担保分配的方式让大对象直接分配到老年代;1.2代码示例接下来,我们运行一组代码测试一下,在运行前需要先加上以下几个jvm的参数-X
-
yexindonglai@163.com
2022-03-01 11:17
Java
620°
0
1、什么是热部署 相信大家在写代码的时候都有这个困扰,就是每次我改完代码之后都需要重启项目才能看到结果,小项目还好,启动不会占用太多时间,如果是一个大项目,每次重启都要耗费很多时间的情况下,这无疑对开发效率都会大幅下降,那么有没有这样一种技术?我修改后无需重启服务器,就可以马上看到效果?我可以很肯定地回答你:“有”,就是热部署技术,在你修改完代码之后,这项技术会自动帮你重新加载被修改后class文件,真正实现实时查看改动的结果;2、准备 要知道热部署,就得先了解class加载机制,在我们启动项目的时候,首先编辑器会将后缀为.java的文件编译成.class文件,之后jvm虚拟机会把cla