当前位置: 首页 > news >正文

Java面试题(每天10题)-------连载(40)

目录

Mysql篇

1、表中有大字段X(例如:text类型),且字段X不会经常更新,将该字段拆成子表好处是什么?

2、Mysql中InnoDB引擎的行锁是通过加载什么上完成的?

3、Mysql中控制内存分配的全局参数,有哪些?

4、若一张表只有一个字段VARCHAR(N)类型,utf8编码,则N的最大值时多少(精确到数量级即可)?

5、 [SELECT *]和[SELECT 全部字段]的2种写法有何优缺点?

6、HAVNG子句和WHERE的异同点?

7、Mysql当记录不存在时insert,当记录存在时update,语句怎么写? 

8、Mysql的insert和update的select语句语法


Mysql篇

1、表中有大字段X(例如:text类型),且字段X不会经常更新,将该字段拆成子表好处是什么?

如果字段里面有大字段( text,blob) 类型的,而且这些字段的访问并不多,这时候放在一起就变成缺点了。 MYSQL 数据库的记录存储是按行存储的,数据块大小又是固定的(16K ),每条记录越小,相同的块存储的记录就越多。此时应该把大字段拆走,这样应付大部分小字段的查询时,就能提高效率。当需要查询大字段时,此时的关联查询是不可避免的,但也是值得的。拆分开后,对字段的 UPDAE 就要 UPDATE 多个表了

2、Mysql中InnoDB引擎的行锁是通过加载什么上完成的?

InnoDB 行锁是通过给索引上的索引项加锁来实现的,这一点 MySQL 与Oracle 不同,后者是通过在数据块中对相应数据行加锁来实现的。 InnoDB 这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB 才使用行级锁,否则,InnoDB 将使用表锁!

3、Mysql中控制内存分配的全局参数,有哪些?

  1. Keybuffersize
    > * keybuffersize 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Keyreadrequests Keyreads,可以知道 keybuffersize 设置是否合理。比例 keyreads /keyreadrequests 应该尽可能的低,至少是1:100,1:1000 更好(上述状态值可以使用 SHOW STATUS LIKE ‘keyread%'获得)。
    > * keybuffersize 只对 MyISAM 表起作用。即使你不使用 MyISAM 表,但是内部的临时磁盘表是 MyISAM 表,也要使用该值。可以使用检查状态值 createdtmpdisktables 得知详情。对于 1G 内存的机器,如果不使用 MyISAM 表,推荐值是 16M(8-64M) > * keybuffersize 设置注意事项:
    >>>1. 单个 keybuffer 的大小不能超过 4G,如果设置超过 4G,就有可能遇到下面 3 个bug: >>>>> http://bugs.mysql.com/bug.php?id=29446  
    >>>>> http://bugs.mysql.com/bug.php?id=29419
    >>>>> http://bugs.mysql.com/bug.php?id=5731
    >>>2. 建议
    keybuffer 设置为物理内存的 1/4(针对 MyISAM 引擎),甚至是物理内存的30%~40%,如果 keybuffersize 设置太大,系统就会频繁的换页,降低系统性能。因为 MySQL 使用操作系统的缓存来缓存数据,所以我们得为系统留够足够的内存;在很多情况下数据要比索引大得多。
    >>>3.
    如果机器性能优越,可以设置多个keybuffer,分别让不同的 keybuffer 来缓存专门的索引
  2. i nnodbbufferpool_size > 表示缓冲池字节大小,InnoDB 缓存表和索引数据的内存区域。mysql 默认的值是 128M。最大值与你的CPU 体系结构有关,在 32 位操作系统,最大值是 4294967295(2^32-1) ,在 64 位操作系统,最大值为18446744073709551615 (2^64-1)。
    > 32 位操作系统中,CPU 和操作系统实用的最大大小低于设置的最大值。如果设定的缓冲池的大小大于 1G,设置 innodbbufferpoolinstances 的值大于 1。
     > *
    数据读写在内存中非常快, innodbbufferpoolsize 减少了对磁盘的读写。 当数据提交或满足检查点条件后才一次性将内存数据刷新到磁盘中。然而内存还有操作系统或数据库其他进程使用, 一般设置 buffer pool 大小为总内存的 3/4 4/5。 若设置不当, 内存使用可能浪费或者使用过多。 对于繁忙的服务器, buffer pool 将划分为多个实例以提高系统并发性, 减少线程间读写缓存的争用。buffer pool 的大小首先受 innodbbufferpool_instances 影响, 当然影响较小。
  3. querycachesize > mysql 接收到一条 select 类型的 query时,mysql 会对这条 query 进行 hash 计算而得到一个 hash 值,然后通过该 hash 值到 query cache 中去匹配,如果没有匹配中,则将这个hash 值存放在一个 hash 链表中,同时将 query 的结果集存放进cache 中,存放 hash 值的链表的每一个 hash 节点存放了相应 query结果集在 cache 中的地址,以及该 query 所涉及到的一些 table 的相关信息;如果通过 hash 值匹配到了一样的 query,则直接将 cache 中相应的 query 结果集返回给客户端。如果 mysql 任何一个表中的任何一条数据发生了变化,便会通知 query cache 需要与该 table 相关的query 的 cache 全部失效,并释放占用的内存地址。
    > query cache优缺点
    >> 1. query
    语句的 hash 计算和 hash 查找带来的资源消耗。mysql 会对每条接收到的 select 类型的 query 进行 hash 计算然后查找该 query cache 是否存在,虽然 hash 计算和查找的效率已经足够高了,一条 query 所带来的消耗可以忽略,但一旦涉及到高并发,有成千上万条 query 时,hash 计算和查找所带来的开销就的重视了;
    >> 2. query cache 的失效问题。如果表变更比较频繁,则会造
    成 query cache 的失效率非常高。表变更不仅仅指表中的数据发生变化,还包括结构或者索引的任何变化;
    >> 3.
    对于不同 sql 但同一结果集的 query 都会被缓存,这样便会造成内存资源的过渡消耗。sql 的字符大小写、空格或者注释的不同,缓存都是认为是不同的 sql(因为他们的 hash 值会不同);
    >> 4. 相关参数设置不合理会造成大量内
    存碎片,相关的参数设置会稍后介绍。
  4. readbuffersize >是 MySQL 读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL 会为它分配一段内存缓冲区。readbuffersize 变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以 及内存缓冲区大小提高其性能 。    

4、若一张表只有一个字段VARCHAR(N)类型,utf8编码,则N的最大值时多少(精确到数量级即可)?

由于 utf8 的每个字符最多占用 3 个字节。而 MySQL 定义行的长度不能超过65535,因此 N 的最大值计算方法为: (65535-1-2)/3 。减去 1 的原因是实际存储从第二个字节开始,减去 2 的原因是因为要在列表长度存储实际的字符长度,除以 3 是因为 utf8 限制:每个字符最多占用 3 个字节。

5、 [SELECT *]和[SELECT 全部字段]的2种写法有何优缺点?

  1. 前者要解析数据字典,后者不需要
  2. 结果输出顺序,前者与建表列顺序相同,后者按指定字段顺序。
  3. 表字段改名,前者不需要修改,后者需要改
  4. 后者可以建立索引进行优化,前者无法优化
  5. 后者的可读性比前者要高

6、HAVNG子句和WHERE的异同点?

  1. 语法上:where 用表中列名,having select 结果别名。
  2. 影响结果范围:where 从表读出数据的行数,having 返回客户端的行数。
  3. 索引:where 可以使用索引,having 不能使用索引,只能在临时结果集操作。
  4. where 后面不能使用聚集函数,having 是专门使用聚集函数的。

7、Mysql当记录不存在时insert,当记录存在时update,语句怎么写? 

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

8、Mysql的insert和update的select语句语法

`SQL insert into student (stuid,stuname,deptid) select 10,'xzm',3 from student where stuid > 8; update student a inner join student b on b.stuID=10 set a.stuname=concat(b.stuname, b.stuID) where a.stuID=10 ; `

*Mysql的全部更新完了 

相关文章:

Java面试题(每天10题)-------连载(40)

目录 Mysql篇 1、表中有大字段X(例如:text类型),且字段X不会经常更新,将该字段拆成子表好处是什么? 2、Mysql中InnoDB引擎的行锁是通过加载什么上完成的? 3、Mysql中控制内存分配的全局参数…...

2023年【起重机司机(限桥式起重机)】报名考试及起重机司机(限桥式起重机)考试资料

题库来源:安全生产模拟考试一点通公众号小程序 2023年【起重机司机(限桥式起重机)】报名考试及起重机司机(限桥式起重机)考试资料,包含起重机司机(限桥式起重机)报名考试答案和解析及起重机司机(限桥式起重机)考试资料练习。安全生产模拟考试一点通结合…...

Linux的基本指令(3)

目录 制作小文件&查看 nano指令 cat指令 tac指令 制作大文件&查看 一切皆文件 echo指令 > 输出重定向 以写"w"的形式打开文件 以追加"a"的形式打开文件 cat指令 < 输入重定向 创建big.txt more指令 less指令&#xff08;推…...

C语言memcpy,memmove的介绍及模拟实现

文章目录 每日一言memcpy介绍模拟实现 memmove介绍模拟实现思路代码 结语 每日一言 If you want to lift yourself up, lift up someone else. 如果你想振奋自己&#xff0c; 先振奋周遭的人。 memcpy 介绍 函数原型&#xff1a; void *memcpy(void *dest, const void *sr…...

克服.360勒索病毒:.360勒索病毒的解密和预防

导言: 在数字化的今天&#xff0c;数据安全问题变得愈发棘手。.360勒索病毒是当前网络空间的一场潜在灾难&#xff0c;对于这个威胁&#xff0c;了解应对之道和采取切实的预防措施至关重要。如果您正在经历勒索病毒的困境&#xff0c;欢迎联系我们的vx技术服务号&#xff08;s…...

21、Resnet50 中包含哪些算法?

(本文已加入“计算机视觉入门与调优”专栏,点击专栏查看更多文章信息) 这一节汇总一下resnet50 中包含的算法,并且简单介绍。 总共卷积算法、激活算法(relu)、最大池化算法、加法(主要是为了实现残差结构)、全局平均池化、全连接和 softmax 算法这几种算法。 卷积 卷…...

pybind11教程

pybind11教程 文章目录 pybind11教程1. pybind11简介2. cmake使用pybind11教程3. pybind11的历史 1. pybind11简介 项目的GitHub地址为&#xff1a; pybind11 pybind11 是一个轻量级的头文件库&#xff0c;用于在 Python 和 C 之间进行互操作。它允许 C 代码被 Python 调用&am…...

Java基础- 自定义类加载器

自定义类加载器 在 Java 中实现自定义类加载器通常涉及继承 ClassLoader 类并重写其 findClass 方法。自定义类加载器允许我们从非标准来源&#xff08;如网络、加密文件或其他媒体&#xff09;加载类。下面是实现自定义类加载器的基本步骤&#xff1a; 1. 继承 ClassLoader …...

2022年高校大数据挑战赛A题工业机械设备故障预测求解全过程论文及程序

2022年高校大数据挑战赛 A题 工业机械设备故障预测 原题再现&#xff1a; 制造业是国民经济的主体&#xff0c;近十年来&#xff0c;嫦娥探月、祝融探火、北斗组网&#xff0c;一大批重大标志性创新成果引领中国制造业不断攀上新高度。作为制造业的核心&#xff0c;机械设备在…...

洛谷 P1998 阶乘之和 C++代码

前言 今天我们来做洛谷上的一道题目。 网址&#xff1a;[NOIP1998 普及组] 阶乘之和 - 洛谷 西江月夜行黄沙道中 【宋】 辛弃疾 明月别枝惊鹊&#xff0c;清风半夜鸣蝉。稻花香里说丰年&#xff0c;听取WA声一片。 七八个星天外&#xff0c;两三点雨山前。旧时茅店社林边&…...

洛谷 B2006 地球人口承载力估计 C++代码

目录 前言 思路点拨 AC代码 结尾 前言 今天我们来做洛谷上的一道题目。 网址&#xff1a;地球人口承载力估计 - 洛谷 题目&#xff1a; 思路点拨 经典牛吃草问题。 解设一个人一年吃一份草。 则x*a-y*b为会多出的草&#xff0c;为什么会多呢&#xff1f;是因为每年都有…...

少走弯路:OpenCV、insightface 等多方案人脸推理和识别

脑壳有包又花时间折腾了一下&#xff0c;其实之前也折腾过&#xff0c;主要是新看了一个方法 在下图中查找脸部 第一种方案&#xff1a; 使用了opencv 的cv2.FaceDetectorYN. &#xff0c;完整代码如下&#xff1a; import numpy as np import cv2imgcv2.imread("00000…...

github代码连接vercel 建立一个公用网站

Deploying to the Cloud using Vercel 前置任务 建立一个基于flask的web app代码库并上传至github repo Vercel用途 vercel有点像一个免费的cloud server&#xff0c;帮助你将flask框架下的程序运行在云端。可以public访问。 deploy流程 在主文件夹中建立requirements.tx…...

使用pandas将字符串格式数据转换为单独的行

有时在处理数据时&#xff0c;可能会遇到这样的情况&#xff0c;即数据框中的整个字符串条目需要拆分到不同的行中。这可能是一项具有挑战性的任务&#xff0c;特别是当数据庞大而复杂时。尽管如此&#xff0c;一个名为pandas的Python库提供了各种函数&#xff0c;使用这些函数…...

【Tkinter 入门教程】

【Tkinter 入门教程】 1. Tkinter库的简介&#xff1a;1.1 GUI编程1.2 Tkinter的定位 2. Hello word! 程序起飞2.1 第⼀个程序2.2 字体颜色主题 3. 组件讲解3.1 tkinter 的核⼼组件3.2 组件的使⽤3.3 标签Label3.3.1 标签显示内容3.3.2 多标签的应⽤程序3.3.3 总结 3.4 按钮but…...

深入理解Java中继承的高级使用方案

摘要&#xff1a; 继承是Java中的一项强大的特性&#xff0c;它允许子类从父类中继承属性和方法。然而&#xff0c;继承的高级使用方案涉及更复杂的概念和技术&#xff0c;可以帮助开发人员构建更加灵活、可维护和可扩展的代码。本文将深入探讨Java中继承的高级用法&#xff0c…...

nexus私服开启HTTPS

maven3.8.1以上不允许使用HTTP服务的仓库地址&#xff0c;如果自己搭建的私服需要升级为HTTPS或做一些设置&#xff0c;如果要升级HTTPS服务有两种方式&#xff1a;1、使用Nginx开启HTTPS并反向代理nexus&#xff1b;2、直接在nexus开启HTTPS。这里介绍第二种方式 1、在ssl目录…...

融合CFPNet的EVC-Block改进YOLO的太阳能电池板缺陷检测系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着太阳能电池板的广泛应用&#xff0c;对其质量和性能的要求也越来越高。然而&#xff0c;由于生产过程中的各种因素&#xff0c;太阳能电池板上可能存在各种缺…...

传媒行业CRM:打造高效客户管理,提升品牌影响力

传媒行业充满竞争和变化&#xff0c;传媒企业面临着客户管理不透明、业务流程混乱、销售数据分析不足&#xff0c;无法优化营销策略和运营管理等问题。CRM系统是企业实现数智化管理的神器&#xff0c;可以有效解决这些问题。下面说说&#xff0c;传媒行业CRM系统推荐。 1、建立…...

基于深度学习的肺炎CT图像检测诊断系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在肺炎CT图像检测诊断方面具有广泛的应用前景。以下是关于肺炎CT图像检测诊断系统的介绍&#xff1a; 任务…...

YOLOv8改进 | 2023 | SCConv空间和通道重构卷积(精细化检测,又轻量又提点)

一、本文介绍 本文给大家带来的改进内容是SCConv&#xff0c;即空间和通道重构卷积&#xff0c;是一种发布于2023.9月份的一个新的改进机制。它的核心创新在于能够同时处理图像的空间&#xff08;形状、结构&#xff09;和通道&#xff08;色彩、深度&#xff09;信息&#xf…...

Python 全栈体系【四阶】(一)

四阶&#xff1a;机器学习 - 深度学习 第一章 numpy 一、numpy 概述 Numerical Python&#xff0c;数值的 Python&#xff0c;补充了 Python 语言所欠缺的数值计算能力。 Numpy 是其它数据分析及机器学习库的底层库。 Numpy 完全标准 C 语言实现&#xff0c;运行效率充分优…...

Git【成神路】

目录 1.为啥要学git啊&#xff1f;&#x1f615;&#x1f615;&#x1f615; 2.版本控制软件的基本功能 &#x1f91e;&#x1f91e;&#x1f91e; 3.集中式版本控制 &#x1f936;&#x1f936;&#x1f936; 4.分布式版本控制&#x1f60e;&#x1f60e;&#x1f60e; …...

文件操作详解

文件操作详解 一&#xff1a;文件相关概念1&#xff1a;问什么使用文件2&#xff1a;什么是文件&#xff1f;&#xff1f;&#xff1f;2.1&#xff1a;程序文件2.2数据文件 二&#xff1a;文件的打开和关闭1&#xff1a;流的定义2&#xff1a;标准流3&#xff1a;文件指针 一&a…...

模块 A:web理论测试

模块 A&#xff1a;理论测试 任务一&#xff1a;单选题 1.为 EMP 表的 namesalary 字段创建名为 emp name salary idx 的校复习接课 name 字段升序&#xff0c; salary 字段降序的复合索引的 SQL 语句是? B A: CREATEINDEX emp name salary idx ON EMP(namesalary) B: …...

git rebase冲突说明(base\remote\local概念说明)

主线日志及修改 $ git log master -p commit 31213fad6150b9899c7e6b27b245aaa69d2fdcff (master) Author: Date: Tue Nov 28 10:19:53 2023 08004diff --git a/123.txt b/123.txt index 294d779..a712711 100644 --- a/123.txtb/123.txt-1,3 1,4 123 4^Mcommit a77b518156…...

函数式接口的妙用,让异步执行更简单

你是否曾经遇到过在SpringBoot中Async注解无法正常工作的问题&#xff1f;今天&#xff0c;我们用函数式接口来解决这个问题。 一、什么是函数式接口&#xff1f; 函数式接口&#xff08;Functional Interface&#xff09;是 Java 8 中引入的一个概念&#xff0c;是指只包含一…...

读书笔记:《More Effective C++》

More Effective C Basics reference & pointer reference 必定有值&#xff0c;pointer 可以为空reference 声明时必须定义&#xff0c;必须初始化reference 无需测试有效性&#xff0c;pointer 必须测试是否为 nullreference 可以更改指向对象的值&#xff0c;但是无法…...

手写VUE后台管理系统6 - 支持TS声明文件.d.ts

TS 使用声明文件进行类型定义。 配置 在 tsconfig.json 文件中&#xff0c;找到 include 属性&#xff0c;添加 "src/**/*.d.ts"&#xff0c;表示 src 目录下的所有 .d.ts 文件都会被自动加载。 添加后内容如下 "include": ["src/**/*.ts",&…...

第八天:信息打点-系统端口CDN负载均衡防火墙

信息打点-系统篇&端口扫描&CDN服务&负载均衡&WAF防火墙 一、知识点 1、获取网络信息-服务器厂商&#xff1a; 阿里云&#xff0c;腾讯云&#xff0c;机房内部等。 网络架构&#xff1a; 内外网环境。 2、获取服务信息-应用协议-内网资产&#xff1a; FTP…...