自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java目录2

Java目录2

2021-09-03 16:51:41 178 1

原创 Java总目录

Java总目录

2020-05-19 17:47:14 210 1

原创 Java目录1

java目录

2020-05-17 11:11:15 185 1

原创 面试准备0918

AQS是一个抽象类,可以用来构造锁和同步类,如ReentrantLockAQS的原理是,AQS内部有三个核心组件,一个是state代表加锁状态初始值为0,一个是获取到锁的线程,还有一个阻塞队列。当有线程想获取锁时,会以CAS的形式将state变为1,CAS成功后便将加锁线程设为自己。当其他线程来竞争锁时会判断state是不是0,不是0再判断加锁线程是不是自己,不是的话就把自己放入阻塞队列。这个阻塞队列是用双向链表实现的。

2023-09-17 22:01:31 229

原创 Redis面试题总结

Redis是一个基于Key-Value存储结构的Nosql开源内存数据库。它提供了5种常用的数据类型,String、Map、Set、ZSet(有序集合)、Listredis5.0之后引入Stream3种特殊的数据结构类型:Geospatial、Hyperloglog、BitmapBitmaps :用一个比特位来映射某个元素的状态,在 Redis 中,它的底层是基于字符串类型实现的 ,可以把 bitmaps 成作一个以比特位为单位的数组针对不同的结构,可以解决不同场景的问题。

2023-09-05 14:43:16 121

原创 MySQL面试题总结2

内连接(inner join):取得两张表中满足存在连接匹配关系的记录。外连接(outer join):取得两张表中满足存在连接匹配关系的记录,以及某张表 (或两张表)中不满足匹配关系的记录。交叉连接(cross join):显示两张表所有记录一一对应,没有匹配关系进行筛选, 也被称为:笛卡尔积。

2023-09-04 17:14:32 233

原创 面试题

这个需要结合 JVM 的相关知识,静态方法是属于类的,在类加载的时候就会分配内存,可以通过类名直接访问。而非静态成员属于实例对象,只有在对象实例化之后才存在,然后通过类的实例对象去访问。在类的非静态成员不存在的时候静态成员就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。如果说大家研究过框架的底层原理或者咱们自己写过框架的话,一定对反射这个概念不陌生。反射之所以被称为框架的灵魂,主要是因为它赋予了我们在运行时分析类以及执行类中方法的能力。

2023-08-31 13:46:28 155

原创 Mybatis

MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了googlecode,并且改名为MyBatis。2013年11月迁移到Github官网负责将数据到保存到数据库的那一层代码。(以后开发我们会将操作数据库的Java代码作为持久层。而Mybatis就是对jdbc代码进行了封装)JavaEE三层架构:表现层、业务层、持久层。

2023-08-25 13:53:26 72

原创 面试题总结

保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出CloneNotSupportedException 异常,深拷贝也需要实现 Cloneable,同时其成员变量为引用类型的也需要实现 Cloneable,然后重写 clone 方法。配合 synchronized 使用,该方法唤醒在该对象上等待队列中的某个线程(同步队列中的线程是给 抢占 CPU 的线程,等待队列中的线程指的是等待唤醒的线程)。该方法使用频率非常高。1/ 其他线程调用了该对象的 notify 方法;

2023-08-20 23:53:19 169

原创 计算机网络——数据链路层

文章目录1. 数据链路层概述1.1 数据链路层在网络体系结构中的地位数据链路层的三个重要问题1.2 使用点对点信道的数据链路层1.3 使用广播信道的数据链路层1.4 数据链路层的互联设备2. 封装成帧2.1 封装成帧2.2 透明传输2.3 提高帧传输效率3. 差错检测3.1 差错检测3.2 奇偶校验3.3 循环冗余检验3.4 本节总结4. 可靠传输4.1 可靠传输的基本概念4.2 三种可靠传输实现机制4.3 (一)停止-等待协议4.4 (二)回退N帧协议GBN4.5 (三)选择重传协议SR5. 点对点协议P

2023-08-20 23:27:34 142

原创 计算机网络总目录

1. 计算机概述计算机网络在信息时代的作用因特网概述三种交换方式电路交换、分组交换、报文交换计算机网络的定义和分类计算机网络的性能指标速率、带宽、 吞吐量、时延时延带宽积、往返时间RTT、利用率、 丢包率计算机网络体系结构总时延习题物理层物理层基本概念物理层下面的传输媒体传输方式串行传输与并行传输;同步传输和异步传输;单工、半双工、全双工通信编码与调制码元、 编码、 调制、信道复用技术信道的极限容量奈氏准则、香农公式习题数据链路层

2023-08-20 23:27:12 55

原创 35 复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:示例 2:示例 3:示例 4:head = [][]解释:给定的链表为空(空指针),因此返回 null。

2023-08-20 23:09:08 40

原创 48. 最长不含重复字符的子字符串(中等)

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入:"abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入:"bbbbb"输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入:"pwwkew"输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。

2023-08-20 22:29:54 47

原创 46. 把数字翻译成字符串(中等)

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

2023-08-17 15:47:57 59

原创 47. 礼物的最大价值

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?

2023-08-17 15:00:58 110

原创 63. 股票的最大利润(中等)

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

2023-08-17 13:27:38 64

原创 61. 扑克牌中的顺子

从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13]

2023-08-17 10:23:47 61

原创 45. 把数组排成最小的数

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入:[10,2]输出:"102"示例 2:输入:"3033459"说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0‘

2023-08-17 09:54:49 49

原创 剑指offer50题总目录

Offer 05. 替换空格06. 从尾到头打印链表09. 用两个栈实现一个队列21. 调整数组顺序使奇数位于偶数前面22. 链表中倒数第k个节点25. 合并两个排序的链表26. 树的子结构(中等)27. 二叉树的镜像28. 对称的二叉树29. 顺时针打印矩阵30. 包含min函数的栈31. 栈的压入、弹出序列(中等)32 - I. 从上到下打印二叉树(中等)32 - II. 从上到下打印二叉树 II32 - III. 从上到下打印二叉树 III(中等)

2023-08-17 09:02:29 357

原创 Java异常面试题

注意:在 finally 中改变返回值的做法是不好的,因为如果存在 finally 代码块,try中的 return 语句不会立马返回调用者,而是记录下返回值待 finally 代码块执行完毕之后再向调用者返回其值,然后如果在 finally 中修改了返回值,就会返回修改后的值。在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。但是,使用 try 代码块是有原因的,一般调用一个或多个可能抛出异常的方法,而且,你自己也可能会抛出一个异常,这意味着代码可能不会执行到 try 代码块的最后部分。

2023-08-14 23:28:10 87

原创 Java集合容器面试题

这样我们就可以将拥有相同哈希值的对象组织成一个链表放在hash值所对应的bucket下,但相比于hashCode返回的int类型,我们HashMap初始的容量大小DEFAULT_INITIAL_CAPACITY = 1

2023-08-14 23:27:38 64

原创 Java基础知识面试题

编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

2023-08-14 23:26:33 231

原创 MySQL数据库面试题

结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。作用:用于存取数据、查询、更新和管理关系数据库系统。MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

2023-08-14 23:02:01 482

原创 网络编程面试题

HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,非常的慢。

2023-08-14 22:17:32 64

原创 MyBatis面试题

MyBatis 是一款优秀的持久层框架,一个半 ORM(对象关系映射)框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2023-08-14 22:01:58 84

原创 Spring面试题

Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。

2023-08-14 21:31:19 129

原创 JVM面试题总结

CMS 是英文 Concurrent Mark-Sweep 的简称,是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动 JVM 的参数加上“-XX:+UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。

2023-08-14 20:58:38 180

原创 行为型模式 -- 模板方法模式

在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。

2023-08-10 10:12:08 31

原创 行为型模式 -- 观察者模式

又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。

2023-08-09 20:06:15 28

原创 结构型模式-- 代理模式

由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。

2023-08-09 20:02:10 39

原创 创建者模式对比

我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方法模式,直接产生出来的就是一个力大无穷、能够飞翔、内裤外穿的超人;抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式则是不需要关心构建过程,只关心什么产品由什么工厂生产即可。如果将抽象工厂模式看成汽车配件生产工厂,生产一个产品族的产品,那么建造者模式就是一个汽车组装工厂,通过对部件的组装可以返回一辆完整的汽车。工厂方法模式注重的是整体对象的创建方式;

2023-08-09 19:56:47 38

原创 创建型模式 -- 建造者模式

将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。

2023-08-09 19:55:54 40

原创 创建型模式 -- 原型模式

用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。

2023-08-09 19:52:14 28

原创 创建型模式 -- 抽象工厂模式

这些工厂只生产同种类产品,同种类产品称为同等级产品,也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。本节要介绍的抽象工厂模式将考虑多等级产品的生产,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族,下图所示横轴是产品等级,也就是同一类产品;抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。

2023-08-09 19:47:34 29

原创 创建型模式--工厂模式

需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。

2023-08-09 19:41:21 28

原创 创建型模式--单例模式

双重检查锁模式是一种非常好的单例实现模式,解决了单例、性能、线程安全问题,上面的双重检测锁模式看上去完美无缺,其实是存在问题,在多线程的情况下,可能会出现空指针问题,出现问题的原因是JVM在实例化对象的时候会进行优化和指令重排序操作。枚举类实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,设计者充分的利用了枚举的这个特性来实现单例模式,枚举的写法非常简单,而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。instance对象是随着类的加载而创建的。

2023-08-09 19:25:05 28

原创 设计模式目录

将对象的创建与使用分离–>降低系统的耦合度,使用者不需要关注对象的创建细节。

2023-08-09 19:23:13 25

原创 设计模式概述

"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。

2023-08-09 19:08:46 29

原创 44. 数字序列中某一位的数字(中等)

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。示例 1:n = 33示例 2:n = 11输出:0。

2023-07-26 09:28:27 62

原创 42. 连续子数组的最大和

输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入:输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

2023-07-25 14:55:44 55

空空如也

空空如也

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

TA关注的人

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