自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二分查找和五种排序算法的实现及优化

本文通过Java代码实现并优化二分查找、冒泡排序、插入排序、选择排序、希尔排序、快速排序中的单边循环快排和双边循环快排,文章言简意赅,一读就会。

2023-02-02 23:10:00 175

原创 SpringBoot学习笔记

SpringBoot是Spring中的一个成员,可以简化Spring,SpringMVC的使用,他的核心还是IOC容器特点:创建Spring应用内嵌的tomcat,jetty,Undertow提供了starter起步依赖,简化应用的配置。比如使用MyBatis框架,需要在Spring项目中,配置MyBatis的对象SqlSessionFactory,DAO的代理对象。

2022-09-26 20:22:24 302

原创 Java框架中的注解

Repository:放在dao层的实现类上面,创建dao对象,注入到容器,这个注解使用的少,是因为现在使用的MyBatis框架,dao对象是通过MyBatis通过代理对象生成的,不需要使用@Repository了。@Resource:来自JDK中的定义,javax.annotation,实现引用类型的自动注入,支持byName和byType,默认是byName,如果byName失败在使用byType,推荐在属性上面使用。@DubboService:在提供者端使用,暴露服务的,放在接口的实现类上面使用。

2022-09-22 16:26:20 142

原创 JAVA面试题总结-JVM(194-208)

想要知道双亲委派机制,就要先了解类加载器。启动类加载器:加载JAVA_HOME\lib 下的核心类库。拓展类加载器:加载JAVA_HOME\lib\ext 下的拓展库。应用类加载器:加载ClassPath下指定类库,一般情况下没有自定义类加载器,默认就是应用类加载器。自定义类加载器:通过继承 java.lang.ClassLoader 类的方式自行实现的类加载器。双亲委派机制。

2022-09-15 15:02:32 164

原创 Dubbo-RPC框架学习笔记

自学了一天的Dubbo,第一次接触RPC框架,印象深刻的例如Dubbo官网的RPC原理图(下文笔记有)、分层注册中心、提供者、消费者的思想以及提供者暴露接口的version字段等,学完受益良多,发此文方便日后复习,也希望可以帮助到需要快速熟悉上手Dubbo、Zookeeper的童鞋。

2022-09-09 17:48:30 564

原创 JAVA面试题总结-MySql(164-178)

表的引擎不同,结果也不同。如果表的引擎类型是MyISAM,此时id为8,因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL后,自增主键的最大ID不会丢失。如果表的引擎类型是InnoDB,此时id可能为8也可能为6。主要看MySQL版本。MySQL8之前id值为6,InnoDB表会把自增主键的最大ID记录到内存中,所以重启MySQL之后,自增主键的最大ID会丢失,数据库会重新计算最大ID,将其存入内存。MySQL8之后,每次对数据库进行更改都会写入重做日志,所以不会丢失最大ID。

2022-09-06 10:21:29 400

原创 JAVA面试题总结-对象拷贝(61-63)

克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性还是初始化的值,所以当需要一个新的对象来保存当前对象的状态,就需要用到Object类下的clone()方法,它是native关键字修饰的本地方法,底层由C语言实现,执行效率高。浅拷贝:如果原型对象的成员变量为普通类型,将克隆一份给克隆对象,如果原型对象的成员变量中有引用类型,则将引用类型的地址克隆给克隆对象,此时原型对象和克隆对象中的引用类型的成员变量指向相同的内存地址,也就是说二者的引用类型的成员变量是一个。直接new一个对象不行吗?

2022-09-02 11:59:40 189

原创 JAVA面试题总结-反射(57-60)

JAVA反射机制是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法,对于任意一个对象,都能够调用他的任意方法和属性,这种动态获取的信息以及动态调用对象的方法的功能成为JAVA的反射机制。序列化是将 Java 对象转换成字节序列的过程。反序列化是将字节序列转换成 Java 对象的过程。不同进程/程序间进行远程通信时,可以互相发送各种类型的数据,包括文本、图片、音频等,而这些数据都会以二进制序列的形式在网络上传送。当两个Java进程进行通信时,怎么实现进程间的对象传送呢?...

2022-09-01 10:50:46 99

原创 JAVA面试题总结-多线程(52-56)

atomic原子操作类通过CAS(Compare And Swap,比较并交换,主要是通过CPU指定来保证原子性的,CAS指令包含3个参数:共享变量的内存地址A、预期的值B和共享变量的新值C,只有当内存地址A中的值和B相等的时候,内存地址A中的值才会更新为新值C)保证原子性,通过自旋保证修改的成功,通过多段锁来降低锁粒度从而提高并发性能。从性能上来说,如果竞争资源不激烈,两者的性能是差不多的,而当竞争资源非常激烈,此时Lock的i性能要远远由于synchronized。...

2022-08-31 11:14:13 98

原创 JAVA面试题总结-多线程(49-51)

死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的互相等待的现象,再无外力的情况下,这些线程会一直互相等待而无法继续运行下去。

2022-08-30 09:20:47 92

原创 JAVA面试题总结-多线程(41-48)

该线程池可以无限扩展,当需求增加时,可以添加新的线程,而当需求降低时会自动回收空闲线程,适用于执行很多的短期异步操作,或者是负载较轻的服务器。execute()的参数只可以使Runnable类型,而submit()重载了三个方法,参数可以是Runnable类型,也可以是Callable类型,也可以是Runnable+结果。缓存导致的可见性问题:一个线程对共享变量的修改,其他线程能够立即看到。正常的顺序是用start()启动线程,每一个线程抢占到CPU之后执行run()方法,这样才有多线程的效果。...

2022-08-29 10:05:41 128

原创 JAVA面试题总结-多线程(35-40)

超时等待(TIMED_WAITING):(wait(long)/join(long)/sleep(long))不同于WAITING,他是可以在指定的时间自行返回的。并发是同一时刻,只有一个线程执行,但是一个时间段,多个线程都执行了。等待(WAITING):表示进入等待状态(wait()/join()),当前线程需要等待其他线程做出特定的动作(通知或中断)。线程是进程的一个执行路径,一个进程至少有一个线程,多个线程共享进程的资源。线程分为用户线程和守护线程,守护线程中包括垃圾回收线程等。...

2022-08-26 09:46:18 94

原创 JAVA面试题总结-容器(27-34)

正所谓专业的人做专业的事,Iterator就是专业用来取出集合中的元素,这也符合面向对象的编程思想,但是Iterator不能直接通过new去创建对象,是以内部类的形式存在于每个集合中,也就是调用迭代器的人不需要知道该集合对象的底层实现,这也是面向对象三大特性之封装的体现。Queue是队列,先进先出,其中有添加元素的方法offer()和add(),不移除的情况下返回队头的方法peek()和element(),移除并且返回队头的方法poll()和remove()。...

2022-08-24 22:09:29 96

原创 JAVA面试题总结-容器(18-26)

但是ArrayList的效率比LinkedList高,有一位博士说:如果不知道用什么的时候,就用ArrayList,在实际的开发中ArrayList的使用度远远高于LinkedList。HashSet底层是基于HashMap实现的,HashSet的源码非常少,除了实现了一些方法之外,其他方法都是直接调用HashMap中的方法。在之前Map的链表结构是头插法,但是在并发的情况下,链表的头插法可能会发生反转,从而产生环,所有JDK1.8后改为尾插法解决这个问题。Map:无序,Key唯一,Value可重复。...

2022-08-22 10:23:54 214

原创 JAVA面试题总结-Java基础(15-17)

AIO:Asynchronous I/O,JDK7引入的,异步非阻塞IO 一个有效请求一个线程,IO请求立即返回,操作结束后通知,适用于连接数目较多且连接时间较长的应用。NIO:java non-blocking IO,JDK4引入的,同步非阻塞IO,一个请求一个线程,多个连接一个线程,数据面向缓冲区Buffer。BIO:blocking IO,同步阻塞IO,一个连接一个线程,发起请求一直阻塞,适用于连接数目小且固定的架构,是JDK4之前的唯一选择。readAllBytes:从一个文件中读取所有字节。...

2022-08-19 09:44:47 80

原创 JAVA面试题总结-Java基础(10-14)

区别:substring和subSequence的返回类型不一样,substring返回的是String,subSequence返回的是实现了CharSequence接口的类,也就是说使用subSequence得到的结果,只能使用CharSequence接口中的方法。startsWith(String prefix,int toffset):判断字符串对象是否以指定的字符开头,参数toffset为指定从哪个下标开始。split(String regex):去除字符串中指定的的字符,然后返回一个新的字符串。.

2022-08-17 22:04:18 195

原创 JAVA面试题总结-Java基础(6-9)

不属于。Java数据类型包括基本数据类型和引用数据类型。基本数据类型有8个,可以分成4类,分别为整数型(byte,short,int,long)、浮点型(float,double)、布尔型(boolean)、字符型(char),整数类型中int最常用,浮点型中double常用,除了boolean之外的类型都可以进行类型转换。引用数据类型有类、接口、数组,String属于引用数据类型。拓展:byte:所占字节:1,数据范围: -2^7 ~ 2^7-1,默认值:0,对应包装类:Byte。...

2022-08-16 22:25:44 76

原创 JAVA面试题总结-Java基础(1-5)

不对,首先这个问题是在重写后的hashCode和equals方法的前提下,hashCode()方法底层是生成hash算法进行比较,效率比equals高,不同的对象的hash值可能会冲突,所以一般比较对象会先用hashCode进行比较,如果二者的hashCode不相等,则两个对象肯定不相等,如果二者的hashCode相等,再用equals进行比较,equals相等则对象相等,阿里有一个规范:重写equals方法必须重写hashCode方法。如果没有重写equals,那么跟“==”相同,比较对象的内存地址。..

2022-08-15 20:08:57 129 2

空空如也

空空如也

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

TA关注的人

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