pqy_java面试题
文章平均质量分 82
从java入门到入土,希望我对每一个面试题都能有自己的理解!
Alan.qy
csdnalanqy
展开
-
IO流总结
一次写一个字节数组的一部分。关闭流释放资源, 注意关闭前会先刷新流再关闭;字节流 -> 字符流的桥梁, 使用指定的charset将 -> “读到的字节解码为字符”字符流 -> 字节流的桥梁, 使用指定的charset将 -> “将字符编码为字节写出”用int接收,读出来为字节,转为char,就是字符。原创 2023-04-13 22:59:01 · 99 阅读 · 0 评论 -
ElasticSearch
倒排索引是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条。用以计算一些值,比如:最大值、最小值、平均值等。是因为集群中的节点失联导致的。其它聚合的结果为基础做聚合。原创 2023-04-04 12:01:53 · 72 阅读 · 0 评论 -
Git命令
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。分支合并时需注意合并的方向,如上图所示,在Master分支执行操作,结果就是将b3分支合并到Master分支。版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等。Git 中的标签,指的是某个分支某个特定时间点的状态。工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码。git branch -a 列出所有本地分支和远程分支。原创 2023-04-04 11:37:33 · 84 阅读 · 0 评论 -
Docker容器化技术命令
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。docker run -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中。Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!docker load -i 加载镜像中的磁盘(相当于是加载为程序)将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。原创 2023-04-04 10:48:20 · 124 阅读 · 2 评论 -
Linux命令
tar -zxvf hello.tar.gz -C /usr/local 将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录。开放指定端口 : firewall-cmd --zone=public --add -port=8080/tcp --permanent(永久的)关闭指定端口 : firewall-cmd --zeone=public --remove -port=8080/tcp --permanent。原创 2023-04-04 10:23:20 · 86 阅读 · 0 评论 -
MySql
临键锁是行锁和间隙锁的组合。存储引擎是决定了表中数据如何存储,查询,更新及索引如何存储。默认的存储引擎创建表的时候指定存储引擎如果一张表有主键,那主键索引就是聚集索引既无主键又无唯一索引,用一个自动生成**虚拟主键,**最终利用虚拟主键生成聚集索引B+树row代表这一行下面的数据。原创 2023-04-03 18:09:36 · 114 阅读 · 0 评论 -
RabbitMq
通过手动编码方式,告诉rabbitmq消息已经进行了消费,rabbitmq会自动将消息删除。消费者从MQ中获取消息,无论是否出现异常,rabbitmq都会将消息从消息队列中删除。根据消费者是否有抛出异常,自动告诉rabbitmq,消费者是否成功消费了消息;在消费者的application.yml文件中配置;MQ中的消息默认存放在内存中,MQ宕机重启,丢失。原创 2023-04-01 18:50:28 · 68 阅读 · 0 评论 -
MyBatis
1:1和1:m查询查询的结果集字段名称和类中属性名称不一致就是在创建组件的时候生成代理对象( Plugin ),执行组件方法的时候拦截即可,通过暴力反射的方式增强通过拦截器将SQL执行语句拦截,然后拼接上分页语句,之后执行拼接完整的SQL语句即可,原创 2023-04-01 18:15:04 · 126 阅读 · 0 评论 -
javaWeb
由于 Servlet 采用的是单例,也就是整个应用中只有一个实例对象。如果多个线程访问Servlet中的成员变量并且进行写操作就可能引发线程安全。原创 2023-04-01 09:39:48 · 73 阅读 · 0 评论 -
SpringCloud
是微服务系统架构解决方案。原创 2023-03-31 17:35:35 · 135 阅读 · 0 评论 -
Spring
Spring的事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法对事务的态度。举例:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。Spring中提供了7种事务的传播行为:1、REQUIRED(要求):如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。原创 2023-03-31 16:29:56 · 240 阅读 · 0 评论 -
行为型设计模式(对象直接的交互和职责划分)
它定义了一个算法族(一组算法),并将每个算法封装起来,使得它们可以相互替换。职责链模式可以将请求的发送者和接收者解耦,从而提高系统的灵活性和可扩展性。策略模式让算法的变化,不会影响到使用算法的客户端。(将不变与变化相结合)它允许将请求沿着处理者的链条进行传递,并在链条中寻找可以处理请求的对象。当一个对象的状态发生改变时,所有依赖于它的对象都将自动得到通知并更新。模板模式让子类可以对算法的特定步骤进行重写,但是不改变算法的整体结构。定义了一个算法的骨架,将算法中不同步骤的实现延迟到子类中。原创 2023-03-30 17:18:42 · 71 阅读 · 0 评论 -
结构性模式(对类在设计上的总结,比较关注类继承,组合关系。)
装饰者模式的优点在于它可以在不改变原有对象的代码的情况下,增加新的行为或修改现有的行为。这种灵活的设计方式使得装饰者模式非常适合在需要灵活地扩展对象行为的情况下使用。动态代理的优点是可以在运行时生成代理对象,并可以动态地添加、删除、修改代理的行为,同时代理对象的代码不需要手动编写,这大大提高了开发效率。它可以将一组不兼容的接口转换为另一组兼容的接口,让原本不能一起工作的类可以协同工作。在运行时动态地添加或修改对象的行为,而不必修改属性或行为的本质。它允许使用一个代理对象来控制对另一个对象的访问。原创 2023-03-30 17:04:10 · 77 阅读 · 0 评论 -
创建型模式(提供了对象创建过程中的各种问题的解决方案总结)
创建对象的具体实现被封装在工厂类中,客户端无需知道具体实现类的名称,对具体实现类的依赖性降低,从而提高系统的灵活性和可扩展性。工厂方法模式通过定义一个抽象工厂接口,并让其子类来实现所需对象的创建,从而将对象实例的创建过程委托给工厂子类。//将源对象转化为JSON字符串。抽象工厂模式的目的是提供一个标准化的接口,用于创建一系列相互关联的产品,这些产品可以应用于不同的场景。是抽象工厂的实现类,用于创建特定的产品对象,每个具体工厂只生产特定产品族的产品对象。可以简化复杂对象的创建过程,将其分解为多个简单的步骤;原创 2023-03-30 16:36:34 · 75 阅读 · 0 评论 -
SpringBoot
通过引入spring-boot-maven-plugin插件可以将springboot项目打包成一个可以直接运行的jar包,运行方式和常规jar包一样java -jar xxx.jar,启动后可以直接运行内嵌的web容器,根据具体引入的依赖来确定到底该启动哪种web容器。使用starter来封装依赖,简化项目引入相关依赖的复杂度springboot将spring4中的 @Condition(条件注入)注解发扬光大,根据特定的条件来创建相关的bean(如classpath下存在某个或者是某些类时自动创建某原创 2023-03-30 09:35:32 · 126 阅读 · 0 评论 -
SpringMvc
一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller。3、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。用于类上,则表示类中的所有的方法都是以该地址作为父路径。2、@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。原创 2023-03-30 10:09:02 · 95 阅读 · 0 评论 -
Redis
1.是一个 Key-Value 类型的内存数据库;2、数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存;3、因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的Key-Value DB;4.支持保存多种数据结构(string,list,set,hash,sortedset),此外单个 value 的最大限制是 1GB;5.Redis也可以对存入的 Key-Value 设置 过期expire 时间.原创 2023-03-29 22:23:46 · 94 阅读 · 0 评论 -
JVM
JVM可以分为两大部分,线程私有区和线程共享区。② 虚拟机栈③ 本地方法栈(2):线程共享区:① 堆内存② 方法区2、堆和栈的区别?(高频)① 存储不同:栈内存用来存储局部变量和方法调用,而堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。② 共享不同:栈内存是线程私有的。堆内存是所有线程共有的。③ 异常错误不同:④ 大小:栈的空间小于堆空间。3、怎么获取Java程序使用的堆内存使用的百分比?可以通过java.lang.R原创 2023-02-21 15:37:47 · 304 阅读 · 2 评论 -
java目录
所有java面试题目录原创 2023-02-09 20:48:53 · 201 阅读 · 1 评论 -
javaSE(基础 集合 多线程)
java基础知识面试题,包含了java基础,java集合,以及java多线程的面试题的汇总.原创 2023-02-08 09:35:30 · 508 阅读 · 0 评论