java面试笔记(一)
1. 一万个string类型的数据,设计一个算法如何按照String长度来排序
以使用 Arrays.sort() 方法,并结合一个自定义的比较器。以下是实现的示例代码:
public class StringLengthSort {public static void main(String[] args) {// 定义一万个字符串的示例数组String[] strings = {"example", "test", "longerexample", "short", "medium"// 这里可以添加更多字符串以达到一万个};// 使用 Arrays.sort 方法按照字符串长度排序Arrays.sort(strings, Comparator.comparingInt(String::length));// 输出排序后的结果for (String s : strings) {System.out.println(s);}}
}
2.在 Spring Boot 中,如果你有一个包含一万条数据的 List,并且在一个接口中调用 list.remove(0),当有 100 多个线程同时请求这个接口时,会发生以下情况:
可能发生的问题
-
线程安全问题:
ArrayList和LinkedList等常见的List实现不是线程安全的。多个线程同时调用remove(0)可能导致数据竞争(data race),从而引发ConcurrentModificationException或者导致数据不一致。
-
数据不一致:
- 如果多个线程同时尝试移除第一个元素,某些线程可能会看到不一致的状态,导致它们移除错误的元素或抛出异常。
-
性能问题:
- 频繁的
remove(0)操作会导致数组的重排,性能开销较大。在高并发的情况下,这种性能损失会更加明显。
- 频繁的
解决方案
为了解决上述问题,可以考虑以下几种方案:
1. 使用线程安全的集合:使用 CopyOnWriteArrayList 或 Collections.synchronizedList(new ArrayList<>()) 来保证线程安全。
List<String> list = Collections.synchronizedList(new ArrayList<>());
2. 使用锁:在访问和修改 List 的地方使用显式的锁(如 ReentrantLock)来确保同一时间只有一个线程可以执行该操作。
private final Lock lock = new ReentrantLock();public void removeFirst() {lock.lock();try {if (!list.isEmpty()) {list.remove(0);}} finally {lock.unlock();}
}
3. 使用并发集合:
- 如果你的操作是复杂的,可以考虑使用
ConcurrentLinkedQueue或其他并发集合,这些集合设计用于高并发场景。
假如使用redis存储改结果
因为redis是单线程多路复用的可以解决多线程并发问题,但是也会出现其他的问题。如list数据量过大会导致redis大key问题,严重影响redis性能。
3. 现在有两个表A,B他们的字段一模一样,A中有少量数据,B中有大量数据;现在需要将A,B数据全部查出来,去掉id相同的数据。
可以使用以下 SQL 查询来获取去重后的结果:
SELECT id, name FROM A
UNION
SELECT id, name FROM B
WHERE id NOT IN (SELECT id FROM A);
-
UNION:
UNION操作符用于合并两个 SELECT 语句的结果集,并自动去除重复记录。
-
NOT IN:
- 在第二个 SELECT 语句中,使用
WHERE id NOT IN (SELECT id FROM A)来排除表 A 中已经存在的 ID,从而确保结果集中不会有重复的 ID。
- 在第二个 SELECT 语句中,使用
4. linux命令如何去查找文档里的某个字符并忽略大小写
grep -i '字符' 文件名
5. Linux如何按照日期去分割日志文件并按照每个日期的分别存储,然后zip打包到其他服务器
详细步骤
-
分割日志文件:
- 确保日志文件的日期格式一致。
- 使用
awk命令按日期分割。
-
打包:
- 使用
zip命令将所有生成的日志文件打包为logs.zip。
- 使用
-
传输:
- 使用
scp命令将打包文件发送到目标服务器。
- 使用
示例
假设你的日志文件名为 access.log,可以按以下步骤执行:
# 按日期分割
awk '{ date = substr($1, 1, 10); print >> date".log" }' access.log# 打包
zip logs.zip *.log# 传输
scp logs.zip user@remote_server:/path/to/destination/
相关文章:
java面试笔记(一)
1. 一万个string类型的数据,设计一个算法如何按照String长度来排序 以使用 Arrays.sort() 方法,并结合一个自定义的比较器。以下是实现的示例代码: public class StringLengthSort {public static void main(String[] args) {// 定义一万个字符串的示例…...
【C++】36.C++IO流
文章目录 1. C语言的输入与输出2. 流是什么3. CIO流3.1 C标准IO流3.2 C文件IO流 4. stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。pri…...
Qt5开发入门指南:从零开始掌握跨平台开发
目录 Qt框架概述 开发环境搭建 基础语法与核心机制 第一个Qt窗口程序 常见问题解答 一、Qt框架概述 1.1 什么是Qt? Qt是一个1995年由挪威Trolltech公司开发的跨平台C图形用户界面应用程序框架。最新Qt5版本主要包含: GUI模块:支持Wind…...
Rook-ceph(1.92最新版)
安装前准备 #确认安装lvm2 yum install lvm2 -y #启用rbd模块 modprobe rbd cat > /etc/rc.sysinit << EOF #!/bin/bash for file in /etc/sysconfig/modules/*.modules do[ -x \$file ] && \$file done EOF cat > /etc/sysconfig/modules/rbd.modules &l…...
深度学习在蛋白质-蛋白质相互作用(PPI)领域的研究进展(2022-2025)
一、蛋白质-蛋白质相互作用(PPI)的定义与生物学意义 蛋白质-蛋白质相互作用(Protein-Protein Interaction, PPI)是指两个或多个蛋白质通过物理结合形成复合物,进而调控细胞信号传导、代谢、免疫应答等生命活动的过程。PPI是生物体内复杂功能网络的核心,例如酶与底物的结…...
网络安全学习架构 网络安全架构内容
网上买的《信息安全原理及应用》的书还没到,就找了一本《密码编码学与网络安全》的电子书,写的也不错,计划今天和明天把第一章绪论和第二章的数论给看完 1. 计算机网络安全概念 计算机安全的三个核心是:完整性(只要特…...
硕成C语言24
不管风吹浪打,胜似闲庭信步! 1.选择排序: 不管风吹浪打,胜似闲庭信步!1.选择排序: // 这个宏定义用于忽略 Visual Studio 中一些安全相关的警告,使得可以使用像 scanf 这样的函数而不产生警告…...
《Stable Diffusion绘画完全指南:从入门到精通的Prompt设计艺术》-配套代码示例
第一章:模型加载与基础生成 1.1 基础模型加载 from diffusers import StableDiffusionPipeline import torch# 加载SD 1.5基础模型(FP32精度) pipe StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",…...
Linux下为Intel核显安装OpenCL
实验环境 CPU:N5105运行内存:32G系统:almalinux 8 (类似CentOS系统) 安装过程 检查i915驱动 输入命令dmesg | grep i915查看驱动的加载信息。 我这里没接显示器,输出正确的驱动加载信息如下图所示&…...
用deepseek学大模型04-机器学习建模过程
https://metaso.cn/s/7tEmBHr 目前已经学完深度学习的数学基础,给出机器学习建模的基本过程 好的,我现在需要回答用户的问题:已经学完深度学习的数学基础,现在要给出机器学习建模的基本过程。我需要结合我搜索到的资料来构建一个详…...
【ClickHouse】Ubuntu下离线安装ClickHouse数据库并使用DBeaver连接
目录 0. 安装前准备1 安装ClickHouse1.1 下载安装包1.2 离线安装1.3 配置密码1.4 启动ClickHouse服务 2 DBeaver连接配置2.1 下载ClickHouse驱动2.2 DBeaver配置2.2.1 配置主要参数2.2.2 配置驱动 2.3 常见问题处理2.3.1 修改远程登录配置2.3.2 更新驱动配置 0. 安装前准备 有…...
Unity3D实现接入DeepSeek对话
系列文章目录 unity知识点 文章目录 系列文章目录👉前言👉一、使用第一步👉1-1、登录注册DeepSeek👉1-2、创建API-key👉二、使用第二步👉三、使用第三步👉壁纸分享👉总结👉前言 随着人工智能和机器学习技术的不断进步,DeepSeek的未来发展趋势充满了无限可能…...
【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析②】
ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase02 作者:车端域控测试工程师 更新日期:2025年02月15日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-002测试用例 用例ID测试场景验证要点参考条款预期…...
前端新手必看:10 大 UI 组件库全面解析,快速搭建高质量 Web 应用」 「从零开始:Vue 和 React 最受欢迎的 UI 组件库入门指南」 「超实用!PC 端和移动端 UI 组件库推荐与实战
前端新手必看:10 大 UI 组件库全面解析,快速搭建高质量 Web 应用 目录 什么是 UI 组件库?为什么需要 UI 组件库?PC 端 UI 组件库推荐 Ant DesignElement UIVuetifyBootstrapVueiView (View UI)Quasar FrameworkMaterial-UI (MUI…...
【MySQL高级】17 - MySQL中常用工具
1. mysql 该mysql不是指mysql服务,而是指mysql的客户端工具。语法: mysql [options] [database]1.1 连接选项 参数 : -u, --username 指定用户名-p, --password[name] 指定密码-h, --hostname 指定服务器IP或域名-P, --por…...
【Linux】Linux 文件系统——有关 inode 不足的案例
ℹ️大家好,我是练小杰,今天周二了,明天星期三,还有三天就是星期五了,坚持住啊各位!!!😆 本文是对之前Linux文件权限中的inode号进行实例讨论,看到博客有错误…...
计算机视觉:卷积神经网络(CNN)基本概念(二)
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络(附代码) 第五章࿱…...
【第7章:注意力机制与Transformer模型—7.4 NLP领域的BERT、GPT系列模型】
当你在2017年第一次听说Transformer时,可能不会想到这个模型会在短短三年内彻底改变NLP领域。想象一下,原本需要数周训练的翻译模型,现在用Transformer架构几天就能达到更好的效果;那些让程序员们头疼的梯度消失问题,突然变得不再重要。这一切的魔法钥匙,都藏在一个叫做&…...
[代码调试]安装Text2Image(stable diffusion)模型环境的踩坑记录
文章目录 一、xFormers版本问题1、先确认下自己torch版本所对应的cuda版本2.安装对应版本(1) 到对应官网下载包本地安装(2)代码安装 二、attn_mask尺寸错误三、diffusers四、Huggingface 配置基于stable diffusion预训练模型的环境,记录踩坑记录 一、xFormers版本问…...
大数据SQL调优专题——Flink执行原理
引入 上一篇我们了解了Spark,相比起MapReduce来说,它确实已经快了超级多了,但是人类的欲望是没有止境的,这也是推动人类进步的动力。 Flink就是为了满足实时响应的场景需求诞生的。 其实在Flink之前,实时处理其实已…...
2026届最火的六大降重复率工具实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 能免费使用的AI论文生成技术,正一点点改变学术写作原本的传统范式。当下…...
月饼机排名:企业选购选型关键策略深度解析
月饼机排名与企业选购选型全攻略:高频疑问解答,选对设备少走弯路"月饼机排名≠选购唯一标准,企业选型更需结合生产需求与设备适配性" 很多企业在选购月饼机时,容易陷入排名误区,忽略实际生产场景的匹配&…...
Pyfa:EVE Online玩家的终极舰船配置解决方案,3分钟掌握专业配船技巧
Pyfa:EVE Online玩家的终极舰船配置解决方案,3分钟掌握专业配船技巧 【免费下载链接】Pyfa Python fitting assistant, cross-platform fitting tool for EVE Online 项目地址: https://gitcode.com/gh_mirrors/py/Pyfa 在EVE Online这个浩瀚的宇…...
UE5多人游戏开发避坑指南:从零配置Steam联机插件到打包测试(含SDK问题解决)
UE5多人游戏开发实战:Steam联机插件配置与疑难解析 第一次打开虚幻引擎5的多人游戏模板时,那种跃跃欲试的兴奋感很快会被各种配置问题浇灭。我清楚地记得自己第一次尝试配置Steam联机插件时,花了整整三天时间才让两个客户端成功建立连接。本文…...
AI对话生成PPT:基于LLM与python-pptx的自动化方案解析
1. 项目概述:当PPT制作遇上AI对话如果你和我一样,经常需要制作各种汇报、方案或者教学用的PPT,那你一定对“找模板、调格式、写文案、配图表”这个循环往复的过程感到疲惫。传统的PPT制作工具,无论是PowerPoint还是Keynote&#x…...
终极指南:3分钟上手libdxfrw,轻松读写DXF/DWG文件
终极指南:3分钟上手libdxfrw,轻松读写DXF/DWG文件 【免费下载链接】libdxfrw C library to read and write DXF/DWG files 项目地址: https://gitcode.com/gh_mirrors/li/libdxfrw 你是否曾为处理CAD文件而头疼?想要在自己的C应用中读…...
Vue3 + Vite项目里,用el-amap插件快速集成高德地图(保姆级避坑指南)
Vue3 Vite项目中优雅集成高德地图:el-amap全流程实战指南 最近在重构公司旧项目时,发现很多团队还在用Vue2 Webpack那套老方法集成地图功能。当我尝试在Vite构建的Vue3项目中复用时,各种报错接踵而至——全局变量未定义、插件加载异常、样…...
当伺服电机遇上PWM整流:在Simulink里搭建一个带能量回馈的“绿色”驱动系统
伺服驱动系统的绿色革命:基于PWM整流的能量回馈技术全解析 在工业自动化领域,伺服系统作为精密控制的核心部件,其能耗问题日益受到关注。传统伺服驱动采用二极管整流方案,虽然结构简单,但存在功率因数低、谐波污染严重…...
终极Turborepo错误恢复指南:7个简单步骤让构建失败自动修复
终极Turborepo错误恢复指南:7个简单步骤让构建失败自动修复 【免费下载链接】turbo Build system optimized for JavaScript and TypeScript, written in Rust 项目地址: https://gitcode.com/gh_mirrors/tu/turbo Turborepo作为一款用Rust编写的JavaScript和…...
别再乱买线了!一文看懂手机OTG连接U盘、键盘的正确姿势(附Type-C/Micro接口区别)
手机OTG连接全攻略:从U盘到键盘的智能玩法解析 每次看到抽屉里那堆形状各异的USB线材就头疼?明明都是"OTG线",为什么有的能连U盘却识别不了键盘?上周帮同事调试手机外接设备时,发现她买了三条不同接口的OTG线…...
