自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 面经面经面经

1、讲讲项目吧?2、项目中你是如何解决你这个分布式session的为啥用到redis有没有其他的解决方案3、聊一下ThreadLocal是怎么用来保存用户的信息的4、为啥要使用zuul来做入口登陆5、JVM的四种垃圾回收机制的过程讲一下6、ArrayList和LinkedList的区别 如果说在数组的第五十位和链表的五十位加数据会发生什么变化7、HashMap底层实现原理 为什么要用红黑树而不用自平衡二叉树(这里我回答的是快 为啥快)8、Spring中IOC和AOP是什么???

2022-11-05 00:43:38 237 4

原创 ArrayList和Vector的区别

ArrayList和Vector的区别

2022-10-06 14:11:33 411

原创 集合fail-fast,fail-safe机制

集合fail-fast,fail-safe机制

2022-09-14 10:11:42 326

原创 HashMap和HashTable的区别

HashMap和HashTable的区别

2022-09-10 08:20:56 265 4

原创 MySQL中count(*)的实现方式

MySQL中count(*)的实现方式

2022-07-06 07:25:39 343 2

原创 hashCode()与equals()之间的关系

hashCode()与equals()之间的关系

2022-06-29 09:54:55 225

原创 ArrayList的自动扩容机制实现原理

ArrayList的自动扩容机制实现原理

2022-06-16 12:21:24 1532

原创 Spring的核心是什么

spring是一个开源框架spring是为了简化企业开发而生的,使得开发变得更加优雅和简洁spring是一个IOC和AOP的容器框架IOC:控制反转 AOP:面向切面编程 容器:包含并管理应用对象的生命周期,就好比桶装水一样,spring就是桶,而对象就是水...

2022-06-12 16:09:49 83

原创 如何理解SpringBoot里面的starter

SpringBoot里的starter组件

2022-06-10 13:41:05 1476 2

原创 Cookie和Session的区别

Cookie和Session的区别

2022-06-10 13:13:40 240

原创 受检异常和非受检异常的区别和理解

1、受检异常所谓的受检异常其实表示的是在编译的时候,要强制检查的异常,这种异常需要去显示的通过try/catch来进行捕获或者通过throws去抛出去否则程序无法通过编译的。2、非受检异常所谓的非受检异常表示编译器可以不需要去强制去检查异常,这种异常不需要去显示去捕获或者抛出。在java里面所有的异常都需要继承java.lang.Throwable这个类如下图:...

2022-05-31 10:35:17 6055

原创 在java中获取Class的三种方式

第一种:Class c = Class.forName("完整类名带包名")第二种:Class c = 对象.getClass();第三种:Class c = 任何类型.class;代码如下:package com.ws1;/*要操作一个类的字节码,首先要获取到这个类的字节码,怎么获取java.lang.Class实例? 三种方式: 第一种:Class c = Class.forName("完整类名带包名") 第二种:Class c = 对象..

2022-05-25 22:39:02 543

原创 Java创建线程的三种方式

1、继承Thread然后重写run方法(没有返回值)package com.ws;public class Demo01 { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); for (int i = 0; i < 10; i++) { System.out.println

2022-05-25 21:33:12 80

原创 String abc = new String(“abc“),到底创建了几个对象

String abc = new String("abc");咱们先不着急回答这个到底创建了几个人对象,先分析:首先这个代码里面有一个‘new’关键字,我们大概都听过凡是new出来的都是放在堆中的,这个关键字是在程序运行的时候,根据已经加载的系统类String在堆里面实例化一个字符串对象,然后在这个String的构造方法里面传递了一个“abc”的字符串,因为String里面的字符串成员变量底层是用final修饰的,所以它是一个字符串常量,所以JVM会拿字面量“abc”去字符串常量池里面去找,对应它的

2022-05-25 17:12:26 615

原创 ABA问题遇到过吗,详细说以下,如何避免ABA问题

1、有两个线程同时修改一个变量的值,线程1、线程2,都更新变量值,将变量从A更新为B2、首先线程1获得到CPU时间片,线程2由于某些原因原因发生等待,线程1进行比较更新,CAS(CompareAndSwap),成功将变量的值从A更新到B3、更新完毕后,恰好又有线程3进来想要把变量的值从B更新到A,线程3进行比较更新,成功将变量的值从B更新为A4、线程2获得到CPU时间片,然后进行比较更新,发现值是预期的A,然后又更新成了B,但是线程1并不知道该值已经从A-->B-->A这个过程,这

2022-05-24 23:05:33 571

原创 SpringBoot初识

接下来我下面写的是我们第一次使用SpringBoot的时候的使用步骤如下:第一步:创建一个Maven工程第二步:导入springboot相关的依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>

2022-05-21 23:04:15 149 1

原创 String、StringBuffer、StringBuilder的区别

String不可变,StringBuffer和StringBuilder是可变的。1、String是只读字符串,也就意味着String引用的字符串内容是不可以被改变的,但是我们往往会有这样一个误解:String str = "abc";str = "bcd";对于上面的代码来说,字符串明明是可以改变的呀,为啥是不可变的呢?其实不是,str只是一个引用对象,它指向一个字符串对象是"abc",第二行代码只是让它指向了一个新的字符串"bcd",而"abc"对象并没有任何改变。而String的源

2022-05-20 12:06:38 135 5

原创 fianl、finally、finalize三者的区别

首先这三者其实是没有本质关系的,面试的时候会考察我们对这块的理解: fianl fianl是用来修饰变量,修饰类,修饰类属性,当它修饰变量的时候,变量的引用不可变但是地址中的内容可以改变,当它修饰类的时候,这个类不可被继承但是可以被重载,当它修饰类属性的时候,子类就不能给这个属性重新赋值,如果赋值会报错。 finally 常用语try catch finally中,在异常处理时用finally执行任何清除操作,不管有没有异常抛出和捕获finally中的语句都会执行...

2022-05-20 10:52:21 402

原创 关于双亲委派机制和类加载的过程

我们写的java文件到最终运行,他必须经过编译和类加载两个阶段,而编译阶段的过程就是把.java文件编译成.class文件,而类加载的阶段就是把.class文件加载到JVM内存里面,加载完毕会得到一个Class对象,我们可以使用new关键字来实例化这个对象,如下图:而类的加载过程需要涉及到类加载器,JVM在运行的时候会产生三个类加载器,这三个类加载器组成了一个层级关系,每一个加载器分别去加载不同作用范围的jar包,比如说Bootstrap Classloader(启动类加载器)它主要是负责.

2022-05-20 09:32:12 128

原创 抽象类和接口的区别

首先咱们来看抽象类,什么是抽象类?1、抽象类里不一定有抽象方法,抽象类必须要有关键字abstract来修饰2、如果一个类包含抽象方法,那么这个类一定是抽象类3、抽象类不能用final修饰代表,因为抽象类是被用于继承的,但是final修饰代表不可修改,不可继承接口和抽象类的区别?1、一个子类只能继承一个抽象类,但是可以实现多个接口2、抽象类有构造方法,接口没有构造方法3、抽象类可以有普通成员变量,接口中不能有4、抽象类和接口都可以有静态成员变量,但是抽象类中成员变量可以是任意类

2022-05-18 18:10:41 99 2

原创 为什么要使用Redis

主要有以下两方面1、从高并发上来说:直接操作缓存能够承受的请求是,远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库2、从高性能上来说:用户第一次访问数据库中的某些数据,因为是从硬盈上读取的所以这个过程会比较慢,将该用户访问的数据存在缓存中,下一次再访问这些数据的时候就可以直接从缓存中获取了,操作缓存就是直接操作内存,所以速度相当快为什么要使用Redis而不是其他的,例如Java自带的map或者guava?

2022-05-17 23:18:37 288

原创 重载和重写的区别

首先,这道题面试常问,但是两个之间毫无任何关系重载:发生在同一个类当中,方法名必须相同,参考类型不同,个数不同,顺序不同,方法返回值和修饰可以不同,发生在编译时。重写:发生在父子类中,方法名,参数列表可以不同,返回值范围小于等于父类,子类不可以抛出比父类更多的异常,子类访问修饰符范围大于等于父类;如果父类方法访问修饰符为private,则子类就不能重写该方法以下这种情况也是错误的,会报错://以下编译会报错public int add(int a,int b)public St

2022-05-16 11:28:16 71

原创 spring、springmvc、springboot的区别

spring、springmvc、springboot

2022-05-15 18:55:48 371 2

原创 MySQL视图那些事儿

·什么是视图?view:站在不同的角度去看待同一份数据怎么创建视图对象?怎么删除视图对象?表复制:mysql> create table dept2 as select * from dept;创建视图对象:create view dept2_view as select * from dept2;删除视图对象:drop view dept2_view;注意:只有DQL(查询)语句才能以view的形式创建create view view_name as

2022-05-14 22:42:20 159

原创 MySQL索引那些事

今天给大家说一下MySQL索引方面的知识,大家一定要记住并掌握,这些东西也是MySQL中非常重要的知识点,务必认真阅读:1、什么是索引?索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制。一张表的一个字段可以添加一个索引。当然,多个字段联合起来也可以添加索引。索引相当于一本书的目录,是为了缩小扫描范围而存在的一种机制。比如如下一张t_user表:t_userid name email1 zhangsan 11112 lisi 22223 wangwu

2022-05-13 23:07:05 185

原创 MySQL事务那些事儿

以下就是关于MySQL这块的知识点,务必要一定记得,这块是比较重要的,需要我们掌握的,大家一定要好好看看我下面写的:1、什么是事务?一个事务其实就是一个完整的业务逻辑2、什么是一个完整的业务逻辑?假设转账,从A账户向B账户中转账10000将A账户的钱减去10000(update语句)将B账户的钱加上10000(update语句)这就是一个完整的业务逻辑以上的操作是一个最小的工作单元,要么同时成功,要么同时失败,不可再分。这两个update语句要求必须是同时成功或同时失败,

2022-05-11 12:21:23 161

原创 关于MySQL存储引擎那些事儿

什么是存储引擎,有什么用?存储引擎是MySQL中特有得一个术语。实际上存储引擎是一个表存储/组织数据得方式。不同得存储引擎,表存储数据的方式不同。怎么给表指定存储引擎?create table 表名()engine=InnoDB结论:MySQL默认的存储引擎是InnoDB怎么查看MySQL支持哪些存储引擎?在mysql中输入:show engines \G********* 1. row *********Engine: FEDERATEDSupport: NOC

2022-05-10 17:30:15 415

原创 Redis和Mysql如何保证数据一致性问题?

这是面试常问的关于Redis的问题,这样回答可能对于我们面试来说是一个加分:一般情况下来说Redis是用来实现应用和数据库之间的一个读操作的缓存层,主要目的时为了减少数据库的IO,还可以提升数据的IO性能,以下是它的整体架构当应用程序需要去读取某个数据的时候,首先会尝试去Redis里面去加载,如果命中了会直接返回,如果没有命中就直接去数据库里面查询,查询到数据之后,再把数据缓存到Redis里面去,会出现一个问题一份数据同时保存在数据库和Redis里面,当数据发生变化的时候,需要同时更新R

2022-05-09 21:59:57 228

原创 总结SQL语句关键字的执行顺序

我们一般些sql语句的时候肯定是如下写法:select...from...where..group by...having...order by...以上关键字只能按照这个顺序来不能颠倒。执行顺序是怎样的呢?from where group by having select order by首先从某张表中查询数据,先经过where条件筛选出有价值的数据对这个有价值的数据进行分组,分组之后可以使用having继续筛选。...

2022-05-07 13:57:52 424 1

原创 设计模式——单例模式

首先什么是单例模式?为什么需要单例模式?答:单例模式顾名思义就是在整个运行时,一个类只有一个实例对象因为有的类的实例对象创建和销毁对资源来说消耗不大,但是有些类比较庞大和复杂如果频繁的创建和销毁对象,并且这些对象完全是可以复用的,会造成不必要的性能浪费单例模式有多种写法需要考虑:是否线程安全 是否是懒加载 能否能被反射破坏(这个不用考虑一般都是会被破坏的)不会满足以上三点的单例如下:首先来一个简单的单例public class Singleton { privat

2022-05-06 23:37:47 143

原创 初识Mybatis

持久化数据持久化持久化就是将程序的数据在持久状态和瞬时状态转化的过程内存:断电即失数据库(jdbc),io文件持久化生活:冷藏,罐头为什么需要持久化?有一些对象,不能让他丢掉内存太贵持久层Dao层,Service层,Controller层完成持久化工作的代码块为什么需要Mybatis?帮助我们将数据存入到数据库中方便传统的JDBC代码太复杂,简化,框架。自动化不用Mybatis也可以,更容易上手。第一个Mybatis程序搭建环境

2022-05-05 17:06:02 58

原创 关于java中集合那些事儿……

Java中集合的重要性不要我多说了吧直接上硬货如下两个图:把几个解释的明明白白我在文章最后还进行了总结(老杜的)总结(所有的实现类):ArrayList:底层是数组LinkedList:底层是双向链表Vector:底层是数组,是线程安全的其底层使用synchronized关键字修饰,效率较低使用较少HashSet:底层是HashMap,放到HashSet集合中的元素等同于放到了HashMap的key部分了HashMap:底层是哈希表Hashtable:底层也...

2022-05-04 22:43:47 71

原创 为了防止资源导出失败

我们在些项目的时候为了防止资源导出失败我们需要在pom.xml里面配置如下代码: <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.

2022-05-04 22:23:13 207

原创 计算机网络整理

计算机网络

2022-05-04 19:41:17 1182 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除