java基础复习(第七日)

java基础复习(七)

1.MQ如何避免消息重复投递或重复消费?

在消息生产时,MQ 内部针对每条生产者发送到消息生成一个 inner-msg-id,作为去重的依据(消息投递失败并重传),避免重复的消息进入队列;

在消息消费时,要求消息体中必须要有一个 bizId(对于同一业务全局唯一,如支付ID、订单ID、帖子ID等)作为去重的依据,避免同一条消息被重复消费

2.Java 语言有哪些特点?

  • 1.简单易学
  • 2.面向对象(封装、继承、多态)
  • 3.平台无关性(java 虚拟机实现平台无关性)
  • 4.可靠性
  • 5.安全性
  • 6.支持多线程(C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 java 语言却提供了多线程支持)
  • 7.支持网络编程并且很方便(java 语言诞生本身就是为简化网络编程设计的,因此 java 语言不仅支持网络编程很方便)

3.什么是 java 程序的主类 应用程序和小程序的主类有何不同?

一个程序中可以有多个类,但只能有一个类是主类。在 java 应用程序中,这个主类是指包含 main() 方法的类。而在 java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 java 程序执行的入口点

4.Java 应用程序与小程序之间有那些差别

简单说应用程序锁从主线程启动(也就是 main() 方法)。applet 小程序没有main方法,主要是嵌在浏览器页面上运行(调用 init()或者 run()来启动),嵌入浏览器这点跟 flash 的小游戏类似

5.自动装箱与拆箱

装箱:将基本类型用它们对应的引用类型包装起来

拆箱:将包装类型转换为基本数据类型

6.接口和抽象类的区别是什么?

  • 1.接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以有非抽象的方法
  • 2.接口中的实例变量默认是 final 类型的,而抽象类中则不一定
  • 3.一个类可以实现多个接口,但最多只能实现一个抽象类
  • 4.一个类实现接口的话要实现接口的所有方法,而抽象类不一定
  • 5.接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象,从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范

7. == 与 equals(重要)

==:它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型比较的是值,引用数据类型比较的是内存地址)

equals:它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

  • 情况 1 :类没有覆盖 equals()方法。则通过 equals() 比较该类的两个对象时,等价于通过"=="比较这两个对象
  • 情况 2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来了两个对象的内容相等;若它们的内容相等,则返回 true(即,认为这两个对象相等)

例子:

public class test1 {public static void main(String[] args) {String a = new String("ab"); // a 为一个引用String b = new String("ab"); // b 为另一个引用,对象的内容一样String aa = "ab"; // 放在常量池中String bb = "ab"; // 从常量池中查找if (aa == bb) // trueSystem.out.println("aa==bb");if (a == b) // false,非同一对象System.out.println("a==b");if (a.equals(b)) // trueSystem.out.println("aEQb");if (42 == 42.0) { // trueSystem.out.println("true");}}
}

说明

  • String 中的 equals 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值
  • 当创建 String 类型的对象时, 虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个 String 对象

MyBatis(以下都是)

8.#{}和${}的区别是什么?

#{}是预编译处理,${}是字符串替换

Mybatis 在处理 #{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;

Mybatis 在处理 时,就是把 {}时,就是把 时,就是把{}替换成变量的值

使用#{}可以有效的防止 SQL 注入,提高系统安全性

9.Mybatis是如何将 sql 执行结果封装为目标对象并返回到? 都有哪些映射形式?

第一种是使用 标签,逐一定义数据库列名和对象属性名之间的映 射关系

第二种是使用 sql 列的别名功能,将列的别名书写为对象属性名

有了列名与属性名的映 射关系后,Mybatis 通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的

10.在 mapper 中如何传递多个参数?

1、第一种

DAO 层的函数

public UserselectUser(String name,String area);
对应的 xml,#{0}代表接收的是 dao 层中的第一个参数,#{1}代表 dao 层中第二
参数,更多参数一致往后加即可。
<select id="selectUser"resultMap="BaseResultMap">
select * fromuser_user_t whereuser_name = #{0}
anduser_area=#{1}
</select>

2、第二种:使用 @param 注解:

public interface usermapper {user selectuser(@param(“username”) stringusername,@param(“hashedpassword”) string hashedpassword);
}

然后,就可以在 xml 像下面这样使用(推荐封装为一个 map,作为单个参数传递给 mapper):

<select id=”selectuser” resulttype=user>select id, username, hashedpasswordfrom some_tablewhere username = #{username}and hashedpassword = #{hashedpassword}
</select>

3、第三种:多个参数封装成 map

try {//映射文件的命名空间.SQL 片段的 ID,就可以调用对应的映射文件中的
SQL//由于我们的参数超过了两个,而方法中只有一个 Object 参数收集,因此我们使用 Map 集合来装载我们的参数Map < String, Object > map = new HashMap();map.put("start", start);map.put("end", end);return sqlSession.selectList("StudentID.pagination", map);
} catch (Exception e) {e.printStackTrace();sqlSession.rollback();throw e;
} finally {MybatisUtil.closeSqlSession();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++——函数重载

函数重载 1、函数重载的概念 同一作用域内&#xff0c;同一函数名定义多个函数&#xff0c;这些函数的参数个数、参数类型不同、顺序。这就是函数的重载(function overloading)。即对一个函数名重新赋予它新的含义&#xff0c;使一个函数名可以多用。函数重载允许我们使用相同…

攻防世界-Web_php_include

原题 解题思路 php://被替换了&#xff0c;但是只做了一次比对&#xff0c;改大小写就可以绕过。 用burp抓包&#xff0c;看看有哪些文件 flag明显在第一个PHP文件里&#xff0c;直接看

飞天使-k8s基础组件分析-pod

文章目录 pod介绍pod 生命周期init 容器容器handlerpod中容器共享进程空间sidecar 容器共享 参考链接 pod介绍 最小的容器单元 为啥需要pod? 答: 多个进程丢一个容器里&#xff0c;会因为容器里个别进程出问题而出现蝴蝶效应&#xff0c;pod 是更高级的处理方式pod 如何共享相…

【李群李代数】李群控制器(lie-group-controllers)介绍——控制 SO(3) 空间中的系统的比例控制器Demo...

李群控制器SO(3)测试 测试代码是一个用于控制 SO(3) 空间中的系统的比例控制器。它通过计算控制策略来使当前状态逼近期望状态。该控制器使用比例增益 kp 进行参数化&#xff0c;然后进行一系列迭代以更新系统状态&#xff0c;最终检查状态误差是否小于给定的阈值。这个控制器用…

Python 网页解析高级篇:深度掌握BeautifulSoup库

在Python的网络爬虫中&#xff0c;BeautifulSoup库是一个强大的工具&#xff0c;用于解析HTML和XML文档并提取其中的数据。在前两篇文章中&#xff0c;我们已经讨论了BeautifulSoup库的基本和中级使用方法&#xff0c;但BeautifulSoup的能力远远超出了这些。在这篇文章中&#…

VUE Table表格动态列,数据错位问题

1.首先&#xff0c;检查了前端用于接数据的字段是否与后端传过来的字段相同&#xff0c;在确定传参没有出现问题之后&#xff0c;这个问题仍然存在。 2.发生原因&#xff1a;因为使用了elementui&#xff0c;表格通过循环产生&#xff0c;vue在dom重新渲染时存在一个性能优化机…

摩托车外廓尺寸检测软件

本系统为摩托车外廓尺寸检测软件&#xff0c;该系统共涉及两种测量方法&#xff1a;自动测量和手动测量&#xff0c;旨在测量出每一台摩托车的外廓尺寸&#xff0c;包括但不限于摩托车的车长、车宽、车高、轮距、前悬、后悬、前伸距等需要测量的参数&#xff0c;可通过运行软件…

二、Kafka快速入门

目录 2.1 安装部署1、【单机部署】2、【集群部署】 2.2 Kafka命令行操作1、查看topic相关命令参数2、查看当前kafka服务器中的所有Topic3、创建 first topic4、查看 first 主题的详情5、修改分区数&#xff08;注意&#xff1a;分区数只能增加&#xff0c;不能减少&#xff09;…

回归预测 | MATLAB实现WOA-SVM鲸鱼算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现WOA-SVM鲸鱼算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现WOA-SVM鲸鱼算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍程…

【C++】早绑定、析构与多态 | 一道关于多态的选择题记录

今天在和群友聊天的时候看到了一道很坑的题目&#xff0c;分享给大家 1.看题&#xff01; 先来看看题目 struct Dad { public:Dad(){ echo();}~Dad(){ echo();}virtual void echo() {cout << "DAD ";} };struct Son:Dad { public:void echo() const override…

Java后端开发面试题——微服务篇总结

Spring Cloud 5大组件有哪些&#xff1f; 随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件 注册中心/配置中心 Nacos 负载均衡 Ribbon 服务调用 Feign 服务保护 sentinel 服务网关 Gateway Ribbon负载均衡策略有哪些 ? RoundRobinRule&…

vue 项目在编译时,总是出现系统崩的状态,报错信息中有v7 或者 v8 的样式-项目太大内存溢出

vue 项目在编译时&#xff0c;总是出现系统崩的状态&#xff0c;node 命令框也会报错&#xff0c;如下图&#xff1a;有v7 或者 v8 的样式。 原因分析&#xff1a; 分析&#xff1a;遇到与上面图片相似的问题&#xff0c;我们要首先要想到是否是 有关内存的问题&#xff0c;当然…

传输层协议——TCP(下)

文章目录 1. listen的第二个参数2. 滑动窗口3. 流量控制4. 拥塞控制5. 延迟应答6. 捎带应答7. 面向字节流7.1 粘包问题 8. TCP异常情况10. TCP小结 1. listen的第二个参数 listen的第二个参数&#xff0c;叫做底层的全连接队列的长度&#xff0c;算法是&#xff1a;n1&#xf…

Elasticsearch(十四)搜索---搜索匹配功能⑤--全文搜索

一、前言 不同于之前的term。terms等结构化查询&#xff0c;全文搜索首先对查询词进行分析&#xff0c;然后根据查询词的分词结果构建查询。这里所说的全文指的是文本类型数据&#xff08;text类型&#xff09;,默认的数据形式是人类的自然语言&#xff0c;如对话内容、图书名…

(6)(6.2) 任务命令

文章目录 前言 6.2.1 概述 6.2.2 导航命令 6.2.3 条件命令 6.2.4 DO命令 前言 本文介绍了 Copter、Plane 和 Rover 切换到自动模式时支持的任务指令。 &#xff01;Warning 这是一项正在进行中的工作&#xff0c;尚未经过全面审核。有关 Copter 的更佳列表&#xff0c;请…

MySQL视图

一、视图-介绍及基本语法 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xf…

Chrome如何安装插件(文件夹)

1.下载的插件 说明&#xff1a;插件文件夹 2.打开扩展程序位置 3.点击已加载的扩展程序 说明&#xff1a;找到插件的位置 4.报错 说明&#xff1a;那还要进入文件里面。 5.插件的位置 说明&#xff1a;如果已经安装了插件&#xff0c;那么需要查看插件的位置。chrome输入 …

【OpenCV学习笔记】我的OpenCV学习之路

刚开始接触OpenCV是因为需要进行图像的处理&#xff0c;由于之前没有接触过&#xff0c;所以只能自己进行学习&#xff0c;下面将学习的过程做简单记录分享。 OpenCV专栏链接 OpenCV学习笔记 一、引言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是…

基于Python的图像信息隐藏技术的设计与实现

博主介绍&#xff1a;✌csdn特邀作者、博客专家、java领域优质创作者、博客之星&#xff0c;擅长Java、微信小程序、Python、Android等技术&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推…

Docker创建 LNMP 服务+Wordpress 网站平台

文章目录 Docker创建 LNMP 服务Wordpress 网站平台一.环境及准备工作1.项目环境2.服务器环境3.任务需求 二.Linux 系统基础镜像三.docker构建Nginx1.建立工作目录上传安装包2.编写 Dockerfile 脚本3.准备 nginx.conf 配置文件4.生成镜像5.创建自定义网络6.启动镜像容器7.验证 n…