八股面试2(自用)
mysql存储引擎
存储引擎:定义数据的存储方式,以及数据读取的实现逻辑
在以前数据库5.5默认MyISAM引擎,之后默认InnoDB引擎
MyISAM引擎的数据和索引是分开存储的,InnoDb将索引和文件存储在同一个文件。
MyISAM不支持事务,InnoDB支持事务
MyISAM只支持表锁,InnoDB支持表锁,行锁等
(补充:表锁和行锁)
表锁:粒度更粗的锁,锁定整个数据表,其他事务不能对该表进行任何读写操作。并发低不会死锁
行锁:粒度更细的锁,锁定数据表中的特定行,其他事务只能对该表的其他行进行读写操作,并发高,会死锁。
MyISAM不支持外键,InnoDB支持外键
如果大部分表操作是查询-->选用MyISAM,反之若是需要支持事务,使用InnoDB
ArrayList和LinkedList的区别
都是List接口下的两个实现类
1.内部实现
ArrayList使用的是数组的实现,通过索引访问元素,支持快速随机访问
LinkedList使用的是双向链表,每个元素都包含指向前一个元素和后一个元素的引用,适合插入删除操作
2.数据访问的时间复杂度不同
ArrayList时间复杂度为O(1),LinkedList需要从头部或者尾部开始遍历链表直到找到元素,故为O(n)
3.空间占用
ArrayList基于数组实现,占用空间是连续的,可能产生内存碎片;LinkedList通过链表连接元素,每个元素都包含前后节点的引用,占用的空间比较大
线程安全的集合有哪些
1.Vector 相当于 ArrayList 的翻版,是长度可变的数组,Vector的每个方法都加了 synchronized 修饰符,是线程安全的。
2.Hashtable是一个线程安全的集合,是单线程集合,它给几乎所有public方法都加上了synchronized关键字
3.ConcurrentHashMap 采用了分段锁(Segment),并非锁住整个方法,而是通过原子操作和局部加锁的方法保证了多线程的线程安全,且尽可能减少了性能损耗。
设计模式
单例模式
1.提供有且仅有一个单例的实例
2.私有化它的构造方法,不让外部通过构造方法创建单例类的实例
3.提供一个公共方法给外界获取这个实例
代理模式
工厂模式
1.工厂方法模式
抽象工厂实现类只生产单一产品
2.抽象工厂(超级工厂)
抽象工厂实现类可以生产某一类的产品
观察者模式
可以理解为:我发朋友圈,其他人(观察者)可以自动立刻看到我发送的内容。
使用场景
List 元素去重 ?
该问题可以分为去重是否考虑顺序
去重不考虑顺序:
1.使用循环去重,判断集合中该元素是否存在,不存在才添加
2.使用循环去重,判断集合中该元素是否有相等的,有的话则remove删除
3.使用set去重(最简单),先装进hashSet,再装进ArrayList集合
去重考虑顺序:
1.使用LinkedHashSet
2.使用Stream流的distinct方法去重
判断元素是否在List里面
可以使用contains()
方法来检查一个元素是否存在于一个List
中
线程之间通信方式 ?
1.使用volatile和synchronized关键字
volatile:告诉程序,任何对于该变量的访问都需要从共享内存中获取,并且它们的改变必须同步刷新到共享内存里面,即可保证所有线程对该变量访问的可见性
synchronized:同步方法或代码块,确保同一时间只有一个线程可以执行某个特定区域的代码。
2.等待/通知机制
等待通知机制
一个线程修改对应的一个值,另外一个线程可以感知到变化,进行相应的操作
线程是抢占式执行的,无法预知线程之间的执行顺序。但有时程序员也希望能合理协调多个线程的执行顺序。因此,在 Java 中使用了等待(wait)和通知(notify)机制,用于在应用层面上干预多个线程的执行顺序。
3.管道pipe输入/输出流
和文件/网络 输入/输出流的区别在于,主要用于线程之间的数据传输,传输的媒介是内存
4.Thread.join
用于让一个线程A等待另一个线程B执行完。
5.ThreadLocal
可以通过set方法设置值,也能通过get方法获得set的值
Mybatis一级缓存和二级缓存 ?
一级缓存:是sqlSession级别的缓存,也叫本地缓存,每个用户执行查询时,都需要使用sqlSession来执行,为了避免每一次都去查询数据库,mybatis把查询出来的数据缓存到sqlSession的本地缓存里面,后续sql如果命中缓存,就可以直接从本地缓存中读取数据。
二级缓存:当多个用户在查询数据时,只要有任何一个sqlSession拿到了数据就会放入到二级缓存里面,其他的sqlSession就可以直接从二级缓存里面去加载数据。
每个sqlSession都有自己的一级缓存,不共享
二级缓存是由每个sqlSession放入组成的,共享
MyBatis的一级缓存是基于SqlSession的,也就是说,在一个SqlSession内部,如果多次查询相同的数据,MyBatis会首先从一级缓存中查找。如果一级缓存中有数据,则直接返回结果;如果没有,则查询数据库,并将结果放入一级缓存。
然而,如果有多个SqlSession都需要查询相同的数据,那么一级缓存就无法满足需求了,因为每个SqlSession都有自己的一级缓存,它们之间不共享数据。为了解决这个问题,MyBatis引入了二级缓存。二级缓存是基于mapper的namespace的,这意味着多个SqlSession可以共享同一个mapper的二级缓存。当多个SqlSession都需要查询相同的数据时,MyBatis会先检查二级缓存,如果有数据,则直接返回;如果没有,则查询数据库,并将结果放入二级缓存。
Redis为什么是单线程 ?
Redis最大的两个特点:基于内存,单线程模型
这个问题要先明白,redis的单线程指代的是什么
单线程指的是,如图,接收命令1,返回结果1,执行命令,接受命令2,返回结果2,这些所有的步骤,都是由1个线程来完成的。
为什么要设计成单线程:
1.单线程简化设计,避免了多线程常见问题,如锁,并发控制,单线程不存在这些问题。
2.避免锁的开销,多线程环境为了保证数据的一致性,需要使用锁来同步不同线程的操作,但是对于锁会产生额外的开销,如获取锁,释放锁,死锁
3.降低cpu的消耗,避免上下文切换
相关文章:

八股面试2(自用)
mysql存储引擎 存储引擎:定义数据的存储方式,以及数据读取的实现逻辑 在以前数据库5.5默认MyISAM引擎,之后默认InnoDB引擎 MyISAM引擎的数据和索引是分开存储的,InnoDb将索引和文件存储在同一个文件。 MyISAM不支持事务&#…...

Leetcode 347 Top K Frequent Elements
题意: 求前k个出现频率最高的元素 首先得到一个频率图这是肯定的,下一步要考虑建立一个堆,堆中保存着前k个频率最大的数字,这个怎么做,可以用customized cmp来做,把数字存进去完事儿。注意这里不用 保存所有…...

[Linux网络编程]03-TCP协议
一.TCP协议数据通信的过程 TCP数据报如下,数据报中的标志位双端通信的关键。 三次握手: 1.客户端向服务端发送SYN标志位,请求建立连接,同时发送空包 2.服务端向客户端回发ACK标志位(即确认标志位,任何一端发送数据后都需要另一端…...

Windows和Linux在客户端/服务端在安全攻防方面的区别
Windows和Linux在客户端/服务端的安全攻防上存在一些显著区别,主要体现在系统架构、权限管理、安全工具、更新机制以及社区支持等方面。 一、系统架构与设计差异 1. 内核架构 Windows:Windows是一个闭源的操作系统,由微软开发和维护&#…...

VUE 仿神州租车-开放平台
项目背景: 神州租车是一家提供汽车租赁服务的公司,其API开放平台为开发者提供了访问神州租车相关服务和数据的接口。用VUE技术来仿照其开发平台。 成果展示: 首页: API文档: 关于我们:...
计算机的错误计算(一百二十九)
摘要 用错数解释计算机的错误计算(一百二十七)中的计算错误的原因。 从(一百二十七)知, 有四种形式: 四个 分别有1位、8位、8位、0位错误数字。 下面用错数解释前面3个错误计算的由来。 (1&a…...

process.platform 作用
process.platform 可以获取当前运行 Node.js 进程的操作系统平台的信息。 一、平台特定的代码执行 1. 适应不同操作系统 不同的操作系统可能有不同的行为、文件路径格式、命令行参数等。通过检查process.platform的值,可以根据当前运行的平台执行特定的代码逻辑。…...

Java项目-基于springboot框架的企业客户信息反馈系统项目实战(附源码+文档)
作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…...

《深度学习》dlib 人脸应用实例 仿射变换 换脸术
目录 一、仿射变换 1、什么是仿射变换 2、原理 3、图像的仿射变换 1)图像的几何变换主要包括 2)图像的几何变换主要分为 1、刚性变换: 2、仿射变换 3、透视变换 3)常见仿射变换 二、案例实现 1、定义关键点索引 2、定…...

springboot044美容院管理系统(论文+源码)_kaic
本科毕业设计论文 题目:美容院管理系统设计与实现 系 别: XX系(全称) 专 业: 软件工程 班 级: 软件工程15201 学生姓名: 学生学号: 指导教师: 导师…...

大数据新视界 --大数据大厂之数据脱敏技术在大数据中的应用与挑战
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

Erric Gamma 关于resuable code的采访
采访地址 The risk of speculating Bill Venners: The GoF book says, “The key to maximizing reuse lies in anticipating new requirements and changes to existing requirements, and in designing your systems so they can evolve accordingly. To design a system s…...

【Ubuntu18.04命令行code打不开】可能的解决方法
目录 问题:命令行code打不开文件尝试① kimi是这么说的② sudo apt-get install apparmor apparmor_utils③ 在混沌的操作完以上一通后,sudo apt-get install snapd 我试了将近一个小时 : ( so depressed 我只是想用vscode打开个文件夹,我甚至…...

大数据毕业设计基于springboot+Hadoop实现的豆瓣电子图书推荐系统
文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图 前言 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 随着开数字化阅读的普及,豆瓣电子图书推荐系统应运而生,旨在为用户提供个性化的阅…...

【进阶OpenCV】 (15)-- 人脸识别 -- EigenFaces算法
文章目录 EigenFaces算法一、算法原理二、算法流程三、算法特点四、代码步骤1. 图像预处理2. 创建Eigenfaces人脸识别器3. 训练模型4. 预测图像 总结 EigenFaces算法 EigenFaces算法是一种基于主成分分析(PCA)的人脸识别方法,其核心思想是通…...

无人机封闭空间建图检测系统技术详解
无人机封闭空间建图检测系统技术是一种集成了多种传感器、智能算法与控制系统的高级技术,旨在实现无人机在复杂封闭环境下的自主导航、精确建图与高效检测。以下是对该技术的详细解析: 一、技术概述 无人机封闭空间建图检测系统通过集成激光雷达(LiDAR…...

webpack自定义插件 ChangeScriptSrcPlugin
插件文件 class ChangeScriptSrcPlugin {apply(compiler) {const pluginName "ChangeScriptSrcPlugin";compiler.hooks.compilation.tap(pluginName, (compilation, callback) > {compilation.hooks.htmlWebpackPluginAlterAssetTags.tapAsync(pluginName,(html…...

win11 笔记本指纹驱动正常就是使用不了
去微信官网下载最新的win11重装系统后,发现笔记本上的指纹登录失效了,网上搜索各种试过不行,新版本与旧的win11有微出入,那些方法都不行。系统版本如下: 操作前确保: 1. win11能升级,默认有试用…...

表的约束
约束就是设定条条框框,保证被约束目标符合约束条件。表的约束就是对表内列数据的约束,保证列数据的正确性。 default 设置列数据的默认值。当用户添加记录的时候没有初始化该列的数据,就是使用默认值初始化。 如果创建表的时候没有设置默认…...

jmeter是怎么用的,怎么设计接口测试用例的
如何使用: Apache JMeter 是一款广泛使用的开源性能测试工具,用于对各种服务(如 Web 应用、数据库、FTP、WEB 服务等)进行负载测试和性能测试。以下是如何使用 JMeter 的基本步骤。 1. 安装 JMeter 下载 JMeter:访问…...

数据挖掘示例
案例背景,有公司进行橡胶玩具的生产,一共生产两种产品,分别为橡皮鱼和橡皮鸭。 已知条件为: 1、公司的橡胶原材料能够生产500只橡皮鸭或者400条橡皮鱼。 2、生产效率为公司产量不会高于400只橡皮鸭和300条橡皮鱼。 3、每只橡皮…...

【PHP】在ThinkPHP6中Swoole与FPM的简单性能测试对比
一、前言 本文主要测试在ThinkPHP 6框架中,使用Swoole扩展库与使用PHP-FPM两者的HTTP并发性能差距,测试方法较简单,仅供参考。 二、测试环境 系统:Ubuntu 22.04 PHP版本:7.4.33 Swoole版本:4.8.13 ThinkPHP版本:6.1.5 ThinkPHP-Swoole扩展库版本:3.1.4 测试工具:A…...

论文写作学习--POLYGCL
POLYGCL: GRAPH CONTRASTIVE LEARNING VIA LEARNABLE SPECTRAL POLYNOMIAL filters 今天由于开了一天的积极分子会议以及要写汇报,因此,只来得及学一会。 摘要 第一步,设定背景 Recently, Graph Contrastive Learning (GCL) has achieved …...
【高等数学】无穷级数
0. 了解 无穷级数是指将无穷多个数按照一定的规律相加起来的表达式。 打个比方,就像你有一个无穷长的梯子,每一级梯子代表一个数。把这些数一个一个加起来,就形成了无穷级数。 比如常见的等比级数,这里是首项,是公比。如果,这个等比级数是收敛的,也就是它的和是一个有限…...

计算机网络——无连接传输UDP
UDP用于流媒体应用和事务性应用(一次往返搞定的应用)...

DS几大常见排序讲解和实现(下)(15)
文章目录 前言一、快排的思想二、Hoare版基本思路代码实现 三、挖坑法基本思路代码实现 四、双指针法基本思想代码实现 五、三数取中六、小区间优化七、三路划分八、自省排序总结 前言 其实下篇就单独讲个快速排序 你可能会想这是什么神通,竟然能单独开一篇来讲…...

电脑视频剪辑大比拼,谁更胜一筹?
随着短视频的火爆,越来越多的人开始尝试自己动手制作视频,无论是记录生活点滴还是创作个性短片,一款好用的视频剪辑软件是必不可少的。今天,我们就从短视频运营的角度,来聊聊几款热门的电脑视频剪辑软件,看…...

计算机毕业设计 基于Web的景区管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

计算生物学与生物信息学漫谈-2-测序深度/读长质量和Fasta处理
上一篇文章中我们介绍了测序技术的由来与发展,那么在介绍第三代测序的时候,我们提到了关于测序深度和读长的问题,那么本篇文章就详解介绍一下。 计算生物学与生物信息学漫谈-1-测序一路走来-CSDN博客 目录 1.测序深度SEQUENCING DEPTH &…...

基于SSM+微信小程序的电子点餐管理系统(点餐1)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的电子点餐管理系统实现了管理员及用户。管理员实现了首页、个人中心、餐品分类管理、特色餐品管理、订单信息管理、用户管理、特价餐品管理、活动订单管理、系统管理。…...