- 博客(17)
- 收藏
- 关注
原创 彻底搞懂mysql的MVCC多版本控制机制
多事务操作同一行数据的时候,就会出现各种并发问题,mysql通过四种隔离级别来解决这些问题,读未提交隔离级别是最宽松的,基本没有做隔离,所以实现起来很简单;
2022-06-10 09:01:53
942
1
原创 mysql隔离级别到底是什么
mysql作为最常用的关系型数据库,无论是在应用还是在面试中都是必须掌握的技能。DDL:数据定义,它用来定义数据库对象,包括库,表,列,通过ddl我们可以创建,删除,修改数据库和表结构;
2022-06-10 08:59:48
282
原创 spring入门必读
java语言是使用最广的开发语言,而spring是java开发中所有框架的基础,掌握spring就已经拿下框架的半壁江山。本篇是纵观spring全局,宏观把控spring框架的开端
2022-06-01 15:30:45
120
原创 必须要掌握的基本功面向对象基础
在日常的开发中能够写出高质量的代码,不仅仅可以在日常工作中负责审视同事代码,能够提出宝贵意见,而且还可以在面试的时候游刃有余。写出高质量的代码,不仅仅是要求写出规范的代码,还要求写出高性能的代码,高质量的代码往往具备这些特点:可扩展性、可维护性、可读性、可复用、高内聚低耦合、高性能、安全性、整洁、简单、分层清晰、健壮性,那么这样的代码就要依托java自身的面向对象思想以及各种设计原则,设计模式,编程规范,以及不断的重构来实现。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的
2022-03-23 16:46:07
166
原创 浅析这篇spring扛住了所有面试
本篇就对spring做一个整体的浅析,后面会陆续对流程中的每个环节的源码进行梳理和讲解。1spring是什么关于spring是什么,相信有一部分同学很清楚了,但一定也有一部分同学虽然清楚,如果用语言表达出来总是会差强人意。因此这里先简单说一下spring概念以及存在的意义。spring是一个容器,容器里面存放的是bean(对象),spring同时提供了对于bean创建和管理的一套机制,spring ioc是其实现思想,Spring Framework是具体项目名称,此项目就是具体实现的源码。而sp
2022-02-15 09:49:02
163
原创 jvm 是如何把对象判定死亡的
笔者把java生态分为多个模块,本篇讲解jvm模块的垃圾回收机制,学习jvm,对垃圾回收机制必须了如指掌,才能对jvm的调优有深入的见解。我们知道jvm的垃圾回收机制其实就是进行垃圾回收处理的。在学习前先抛出几个问题,整个垃圾回收机制也是围绕着这几个问题进行的。哪些内存需要回收?什么时候进行回收?如何回收?接下来就围绕这几个问题进行讨论1哪些内存需要回收垃圾收集器主要是对堆进行回收,堆里面机会存放着java世界的所有对象,要想回收这些对象就要先确定这些对象是否还有用,对于如何确定对象还有用,ja
2021-12-30 12:45:35
321
原创 jvm是这样来创建对象的
我们知道new关键字是用来创建对象的,当程序遇到一个new关键字的时候,会首先判断对象对应的类是否已经被加载,如果没有被加载要先走类加载流程,如果已经加载就会直接走对象创建过程
2021-12-29 12:56:50
114
原创 JVM类加载器就做了一件事
笔者把java生态分为多个模块,本篇讲解jvm模块的类加载机制,学习jvm,就必须要知道类是怎么加载的,篇幅有点长,但是掌握本篇已经可以透彻了解类加载过程了。假设有这样一个类package com.manong.jvm;public class Math { public static final int initData = 666; &nbs
2021-12-23 15:56:15
649
原创 被面试官问到线程基础,这样答满分
笔者把整个java生态分为多个模块,java并发编程是其中一个重要的模块,本篇讲的就是java并发编程模块中的线程基础。java并发编程在整个java生态中的地位举足轻重,贯穿整个java开发应用过程以及面试流程中,而在并发编程中,线程是其基础,要想掌握并发编程的精髓,必须先精通线程基础,本篇就带你搞清楚线程到底是什么?线程概念虽然我知道很多读者的基础已经很好,但是为了篇幅的完整性,我还是先要把线程概念阐述出来。进程进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基
2021-12-06 20:49:21
493
原创 多线程为什么是你必需要掌握的知识
作为程序员,无论是在面试中还是在开发中都少不了多线程,如果不知道多线程,都不好意思和同行打招呼。但是对多线程有深入了解的开发人员却并不多。有着丰富经验的更是凤毛麟角。多线程开发其实在软件开发领域有着很重要的地位,绝大多数框架或者软件工具都使用了多线程。比如耳熟能详的 Tomcat、Kafka、Akka 等等。JVM 的垃圾回收也是由单独的线程执行。正是有着如此多的优秀框架,才使得我们编写绝大多数业务代码时无需考虑使用多线程。但这是否可以认为多线程开发对于普通开发者并不重要?其实恰恰相反。多线程开发在当今.
2021-10-26 20:12:24
172
原创 面试被问到如何理解开闭原则
但凡是面试中遇到问设计模式的时候,一定要提想法设法的提设计原则,阐述设计原则在开发中应用的重要性,对代码性能,系统拓展性的重要性,相信按照这篇文章阐述一番,面试官一定能发现你高深设计思想。开闭原则是SOLID中最难理解、最难掌握,同时也是最有用的一条原则。之所以说这条原则难理解,那是因为:怎样的代码改动才被定义为‘扩展’?怎样的代码改动才被定义为‘修改’?怎么才算满足或违反‘开闭原则’?修改代码就一定意味着违反‘开闭原则’吗?等等这些问题,都比较难理解。之所以说这条原则难掌握,那是因为:
2021-10-26 13:24:19
164
原创 面试被问到如何理解单一职责原则
前言面试官在进行了redis和mysql连环问后,自我感觉答的还可以,正洋洋得意,但是面试官随口又问怎么理解单一职责原则,本人心想,不就是功能单一,职责单一吗,心里还在想这么基础的问题带一嘴就行了,谁成想,面试官接着问,单一职责是如何指导开发的?开发的过程会考虑设计原则吗,都应用过什么设计原则和设计模式,你是如何写出高性能代码的,你是如何给别人review代码的(我前面有提过自己山擅长写高性能代码,负责组织团队内代码review),场面一度尴尬。因此我决心把这一部分变为自己的长处,而不是短板,也想让自己
2021-10-25 20:12:40
281
原创 一文读懂JVM对象创建及内存分配机制下
各位小伙伴,当我们new一个对象的时候,对象的分配过程中伴随着内存的分配,这一部分也是面试官经常问到的问题,吃透这部分,你会希望面试官问你这些问题。对象内存分配 对象内存分配流程图 1.对象在栈上分配我们通过JVM内存分配可以知道JAVA中的对象都是在堆上进行分配,当对象没有被引用的时候,需要依靠GC进行回收内存,如果对象数量较多的时候,会给GC带来较大压力,也间接影响了应用的性能。为了减少临时对象在堆
2021-09-06 12:55:25
297
原创 一文读懂JVM对象创建及内存分配机制上
各位小伙伴,当我们new一个对象的时候,对象到底是怎么生产出来的呢,我们这篇说一说对象生成的过程和内存的分配机制,面试的时候可以扯一扯,绝对是加分项。1.加载类时检查虚拟机在执行的过程中,执行到new关键字(new关键词、对象克隆、对象序列化等)的时候,第一步是先去检查这个指令的参数对应的符号引用是否在常量池中,其对应的类是否已经被加载解析和初始化,如果已经有,就代表此类已经被加载过了,如果吗,没有就说明类还没有被加载,那就要执行类记载的整个过程。2.内存的分配在类加载过程完成后,就要对新创建的对
2021-09-06 12:38:06
363
原创 JVM之类加载运行全过程
JVM之类加载运行全过程public class ClassLoading{public static final int data = 666;public static User user = new User();public int handle() {int a = 1;int b = 2;int c = a + b;return c;}public static void main(String[] args) {Math math = new Math();math.c
2021-06-12 13:26:38
1253
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人