java基础复习(第五日)

java基础复习(五)

1.如何在Map中遍历删除指定的 key? 如何在List 中遍历删除指定的元素?

两个方法都使用iterator解决

过程:

获取 map/list的iterator

whlie(iterator.hasNext){

//获取下一个元素

entry = iterator.next();

if(entry.getKey == 指定的值)

​ iterator.remove()

}

并发注意加锁

2.请构造一个线程池。要求并发数量控制在3-10,排队长度控制在100,当队列满的时候,直接在调用线程上执行任务。

ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, 10,200, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), new ThreadPoolExecutor.CallerRunsPolicy());

3.请描述实现定时任务的常用方式,以及差异和注意事项。

1.线程等待实现,缺点:实现功能有限,需要手动实现

2.JDK自带的Timer实现,缺点:基于绝对时间,不是相对时间,不会捕获异常

3.JDK自带ScheduledExecutorservice,缺点:只有执行时调度才是一个真正的线程,其余时间都是轮询任务的状态

4.Quartz框架结合Spring实现

5.Spring Task 由@Scheduled指定执行 可以使用fixedDelay和fixedRate,缺点:不支持持久化,

6.Quartz 分布式 异步策略保证唯一性 缺点:只解决高可用问题,处理瓶颈在数据库,没有执行层面的任务分片,无法zzuzui最大化效率

7.经常用轻量级神器XXL-Job,特点:平台化、易部署、开发迅速、学习简单、轻量级、易扩展

8.Elastic-job、Saturn基于Elastic-job(唯品会)

4.有哪些可能导致内存泄露的场景? 写一段有内存泄露的代码

1.不关闭资源引发内存泄露,如数据库连接、网络连接、IO连接、使用忘了关闭,GC无法回收

静态集合、饿汉单例、不合理的设置变量作用域都会使对象生命周期变长,从而导致内存泄漏
非静态内部对象有隐式指向外部对象的指针、使用集合不删除元素等都会隐式导致内存泄漏
忘记关闭资源导致内存泄漏(try-with-resource自动关闭解决)
使用散列表时,充当Key 对象的哈希值被改变导致内存泄漏(key 使用逻辑不可变对象,关键域不能被修改)
缓存引发内存泄漏(使用弱引用解决)

static List list = new ArrayList<>();@Testpublic  void Test() {Object object = new Object();list.add(object);}

5.如何理解 Http keep-alive的存在,如何针对性优化?

客户端与服务端的约定,是否关闭TCP连接。

复用减少创建/关闭d多个TCP连接的开销(响应时间、cpu资源等)

优化:

控制持久的生存时间和最大服务请求数

6.如何找出应用中开销最大的查询?(数据库)

方法1:

如果配置慢SQL参数,在/etc/my.cnf

文件位置

默认会保存在mysql的data文件夹下,文件名为host_name-slow.log即 主机名-slow.log

这时你可以去查看日志,记录了查询慢的sql语句,分析优化进行。

方法2:

使用 top 查看进程

top -H -p <mysqld进程>

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23974 mysql 20 0 1658m 358m 12m R 99.9 1.1 0:05.52 mysqld
12295 mysql 20 0 1658m 358m 12m S 0.3 1.1 0:02.44 mysqld
12283 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:01.60 mysqld
12284 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:00.00 mysqld
12285 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:02.63 mysqld
12286 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:02.24 mysqld
12287 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:01.68 mysqld
12288 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:01.77 mysqld
12289 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:01.64 mysqld
12290 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:01.80 mysqld
12291 mysql 20 0 1658m 358m 12m S 0.0 1.1 0:02.37 mysqld

方法3:

查询低效率sql:show processlist

然后 根据 explain 分析执行计划

7.什么情况出现数据库死锁?那些操作可能会导致锁表?

1.两个sql都有锁的情况,互相访问对方的加锁数据会产生死锁

锁表情况:

1.多个数据库连接,同时对一个表的数据进行更新操作,持续一段时间后将出现数据表被锁的现象

解决办法:相关字段加索引

2.并发情况下:

索引字段且值不是唯一

更新操作如果一个id 有多个值相同的记录,会锁表

解决办法:索引唯一则是行锁,反之锁表

3.同一个表,有两个索引 A,B字段

delete from table where A=1 and b=2

delete from table where A=1

也会锁表,解决方法:删除条件尽量统一

8.你使用过 mysql 哪些比较复杂的 SOL,或者高级法? 请列出

order by 、group by、limit、通配符、子查询、正则表达式、

运算符如算术、比较、逻辑

聚合函数如sum等、字符串函数length、trim等

日期函数如day、week、dayofweek等

连表如 inner join 、left join等

视图如创建视图、更新视图等

9.在 SpringBoot项目启动的时仅执行特定代码有几种方法? 请详述

1.实现applicationListener容器刷新成功,应用程序可以达到 监听容器初始化完成事件

2.实现ServletContextAware接口重写setServletContext方法

3.实现ServletContextListener接口重写contextlnitialized方法

4.@PostConstruct注解 前提这些操作不依懒其它Bean的初始化

5.实现ApplicationRunner接口重写runf方法

6.实现CommandLineRunner接口重写run方法

applicationRunner比CommandLineRunner先执行

等方法

控制bean初始化顺序

7.实现ordered接口

8.使用@order注解

10.如何理解最终一致性(Eventual Consistency)? 你一般如何实现

指系统中的所有数据副本经过一段时间后,最终能够达到一致的状态

基如消息队列的解决方案

如使用RabbitMQ实现分布式事务的最终一致性。

如 电商系统

用户下单和支付不是同时进行的,使用MQ的延迟队列,设置30分钟支付过期时间,将该队列绑定到一个延迟交换机上

下单后先锁库存,如果没有支付、延迟队列没有被消费者消费,会被投递到绑定的死信交换机,并路由到死信队列。死信队列可以记录日志,发送告警等操作

支付成功代表消费者消费了订单信息,但处理失败,我们可以将消息重新发送到一个专门用于重试的队列,设置最大重试次数3次,重试间隔为5分钟。在重试队列中,消费者会尝试处理消息,并进行3次的重试,如果还是无法处理成功,则消息会被投递到绑定的死信交换机,并路由到死信队列

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

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

相关文章

小程序学习(五):WXSS模板语法

1.什么是WXSS WXSS是一套样式语言,用于美化WXML的组件样式,类似于网页开发中的CSS 2.WXSS和CSS的关系 WXSS模板样式-rpx 3.什么是rpx尺寸单位 4.rpx的实现原理 5.rpx与px之间的单位换算* WXSS模板样式-样式导入 6.什么是样式导入 使用WXSS提供的import语法,可以导入外联的样式…

前端js--剪刀石头布

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><linkrel"stylesheet"href"ht…

微服务——操作索引库+文档操作+RestClient操作索引库和文档(java程序)

索引库操作 mapping属性 mapping是对文档的约束&#xff0c;常见约束属性包括: 创建索引库 #创建索引库 PUT /heima {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},…

带头循环双向链表详解

目录 一、什么是带头循环双向链表&#xff1f; 1.特点&#xff1a; 2.优点&#xff1a; 二、实现接口 1.前置准备 1.1需要的三个文件 1.2结构体的创建和头文件的引用 2.接口实现 2.1函数创建新节点 2.2打印链表内容 2.3尾插新节点 2.4头插新节点 2.5头删节点 2.6尾删…

软件测试新人入职新公司第一次分享

新公司每周都有分享会&#xff0c;本周轮到我&#xff0c;工作很多年&#xff0c;仍然处于社会主义中级阶段&#xff0c;上升高阶有待提升&#xff0c;如果想在测试的道路上继续走下去&#xff0c;还需要多多深入了解&#xff0c;多多加油将我分享的内容&#xff0c;想在这里标…

Vue实现 水果购物车业务(内包含技术要点、代码详细解释)

水果购物车业务 需求说明 渲染功能删除功能修改功能全选反选功能统计 选中的 总价 和 总数量持久化到本地 业务技术点总结&#xff1a; 渲染功能&#xff1a; v-if/v-else v-for :class删除功能&#xff1a; 点击传参 filter过滤覆盖原数组修改个数&#xff1a; 点击传参 find找…

【CSS】倾斜按钮

效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"viewport" content"widthdevice-…

Pytest简介及jenkins集成

一、pytest介绍 pytest介绍 - unittest\nose pytest&#xff1a;基于unittest之上的单元测试框架 自动发现测试模块和测试方法 断言使用assert表达式即可 可以设置测试会话级、模块级、类级、函数级的fixtures 数据准备 清理工作 unittest&#xff1a;setUp、teardown、…

【NLP pytorch】基于BiLSTM-CRF模型医疗数据实体识别实战(项目详解)

基于BiLSTM-CRF模型医疗数据实体识别实战 1数据来源与加载1.1 数据来源1.2 数据类别名称和定义1.3 数据介绍2 模型介绍2 数据预处理2.1 数据读取2.2 数据标注2.3 数据集划分2.4 词表和标签的生成3 Dataset和DataLoader3.1 Dataset3.2 DataLoader4 BiLSTM模型定义5 CRF模型6 模型…

16. Spring Boot 统一功能处理

目录 1. 用户登录权限校验 1.1 最初用户登录验证 1.2 Spring AOP 用户统一登陆验证 1.3 Spring 拦截器 1.3.1 创建自定义拦截器 1.3.2 将自定义拦截器加入系统配置 1.4 练习&#xff1a;登录拦截器 1.5 拦截器实现原理 1.6 统一访问前缀添加 2. 统一异常处理 3. 统…

C++设计模式行为型之观察者模式

一、概述 观察者模式定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 二、示例代码 #include <list> class Subject; class Observer { public: virtual ~Observer(); virt…

心跳跟随的心形灯(STM32(HAL)+WS2812+MAX30102)

文章目录 前言介绍系统框架原项目地址本项目开发开源地址硬件PCB软件功能 详细内容硬件外壳制作WS2812级联及控制MAX30102血氧传感器0.96OLEDFreeRTOS 效果视频总结 前言 在好几年前&#xff0c;我好像就看到了焊武帝 jiripraus在纪念结婚五周年时&#xff0c;制作的一个心跳跟…

R语言中数据重塑(长宽表的转化)

学习笔记&#xff0c;仅供学习使用。 目录 1-什么是整洁的数据&#xff1f; 2-宽表变成长表 示例1&#xff1a; 示例2&#xff1a; 示例3&#xff1a; 3-长表变宽表 示例1&#xff1a; 示例2&#xff1a; 1-什么是整洁的数据&#xff1f; 按照Hadley的表述&#xf…

【redis】redis的认识和安装

目录 1.redis是什么2.Redis的特点3.安装redis4.设置远程连接4.1 开启隧道4.2 可视化客户端连接4.3 开启防火墙 5.redis常见数据类型5.1 redis的一些全局命令5.2 数据结构 6. redis的典型应用---缓存&#xff08;cache&#xff09;6.1 使用redis做缓存6.2 缓存穿透&#xff0c;缓…

华为VRP 系统基础配置

1.flash 相当于电脑的 硬盘 2.NVRAM 拿来专门存放系统配置文件 3.RAM 运行内存 4.ROM 系统引导 1.修改系统名[Huawei]sysname SWL1 2.配置登入信息 [SWL1]header shell information "Welocom to the learning" [SWL1]q <SWL1>q User interface con0 …

Excel·VBA表格横向、纵向相互转换

如图&#xff1a;对图中区域 A1:M6 横向表格&#xff0c;转换成区域 A1:C20 纵向表格&#xff0c;即 B:M 列转换成每2列一组按行写入&#xff0c;并删除空行。同理&#xff0c;反向操作就是纵向表格转换成横向表格 目录 横向转纵向实现方法1转换结果 实现方法2转换结果 纵向转横…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(30)-Fiddler如何抓Android7.0以上的Https包-番外篇

1.简介 通过宏哥前边几篇文章的讲解和介绍想必大家都知道android7.0以上&#xff0c;有android的机制不在信任用户证书&#xff0c;导致https协议无法抓包。除非把证书装在系统信任的证书里&#xff0c;此时手机需要root权限。但是大家都知道root手机是非常繁琐的且不安全&…

HDFS中的sequence file

sequence file序列化文件 介绍优缺点格式未压缩格式基于record压缩格式基于block压缩格式 介绍 sequence file是hadoop提供的一种二进制文件存储格式一条数据称之为record&#xff08;记录&#xff09;&#xff0c;底层直接以<key, value>键值对形式序列化到文件中 优…

Android随笔-VPN判断

Android中判断当前网络是否为VPN /*** 判断当前网络是否为VPN* param context* return*/public static boolean hasVPN(Context context) {// 查询网络状态&#xff0c;被动监听网络状态变化ConnectivityManager cm (ConnectivityManager) context.getSystemService(Context.C…

动态规划(一)

一、背包问题 1.1 01背包问题 特点:每件物品最多只用于一次 属性包括:最大值(Max)、最小值(Min)、数量 #include<iostream> #include<algorithm>using namespace std;const int N 1010;int n,m; int v[N],w[N]; int f[N][N];int main() {cin>>n>>m;…