您的位置:首页 > 健康 > 养生 > 网页设计效果图分析_企业如何网络营销推广_网站推广的常用方法_软件商店安装

网页设计效果图分析_企业如何网络营销推广_网站推广的常用方法_软件商店安装

2025/4/17 9:59:44 来源:https://blog.csdn.net/weixin_74308571/article/details/143025287  浏览:    关键词:网页设计效果图分析_企业如何网络营销推广_网站推广的常用方法_软件商店安装
网页设计效果图分析_企业如何网络营销推广_网站推广的常用方法_软件商店安装

Q:为什么MySQL的InnoDB采用B+树作为索引结构,而Redis采用跳表实现Zset?或者说,InnoDB为什么不用跳表,Redis为什么不用B+树?

对于MySQL来说,高度,代表磁盘IO次数,在相同高度下,B+树能存储的数据量远大于跳表。

所以对于相同的数据量,MySQL的InnoDB采用B+树索引只需要较少的磁盘IO即可完成读操作;

而对于写操作,B+树需要拆分合并索引数据页;跳表则独立插入,并根据随机函数确定层数,没有旋转和维持平衡的开销,写入性能会比B+树好很多。

由于Redis工作在内存,一次内存IO的开销较小,所以为了提高写入性能,采用跳表作为Zset的实现。

Q:JDK8的新特性

  • 函数式接口
  • Stream流
  • Optional
  • Datatime API

此处可以参考:https://javaguide.cn/java/new-features/java8-common-new-features.html#optional

Q:对Linux命令的了解 问了如何查看日志,解压缩的命令

关于Linux命令,查看日志和解压缩是两个常见操作。以下是相关的命令介绍:

查看日志的命令:

  1. cat:用于一次性显示整个日志文件内容。
    • 示例:cat /var/log/syslog
  2. less:分屏查看日志,适合查看大型文件。
    • 示例:less /var/log/syslog
    • 可以用键盘上的 UpDown 键滚动文件。
  3. tail:查看文件末尾部分,常用于查看最新日志。
    • 示例:tail -n 100 /var/log/syslog 显示最后 100 行日志。
    • 加上 -f 选项可以实时查看日志的更新。
      • 示例:tail -f /var/log/syslog
  4. grep:用于在日志文件中查找特定关键字。
    • 示例:grep "error" /var/log/syslog 查找包含 “error” 的日志。

解压缩相关命令:

  1. tar:用于压缩和解压 .tar.tar.gz.tar.bz2 等文件。
    • 解压 .tar.gz 文件:tar -xzvf file.tar.gz
    • 解压 .tar.bz2 文件:tar -xjvf file.tar.bz2
    • 创建 .tar.gz 压缩包:tar -czvf archive.tar.gz folder/
  2. zip / unzip:用于压缩和解压 .zip 文件。
    • 解压 .zip 文件:unzip file.zip
    • 创建 .zip 文件:zip -r archive.zip folder/
  3. gzipgunzip:用于压缩和解压 .gz 文件。
    • 压缩:gzip file
    • 解压:gunzip file.gz
  4. 7z:用于解压 .7z 文件,需要安装 p7zip
    • 解压 .7z 文件:7z x file.7z

Q:https加密的原理

  • 哈希报文:为保证数据完整性,HTTPS会利用哈希算法如SHA-256生成报文摘要。如果接收到的数据经过计算得到的哈希值与原始值不符,则说明数据可能已被篡改
  • 对称加密与非对称加密结合:非对称用于客户端和服务器交换密钥;服务器会发送它的公钥给客户端;客户端生成一个随机的对称密钥,并用服务器的公钥对其进行加密后发送回去。如此,客户端和服务端都获得了对称密钥,后续可以使用效率更高的对称加密进行对话

Q:sychronized和ReentrantLock区别

  • synchronized是Java的内置关键字,Lock是Java的一个类
  • synchronized无法获取锁的状态,Lock可以
  • synchronized自动释放锁,Lock需要手动释放锁
  • synchronized会造成忙等待,Lock可以使用tryLock
  • synchronized是可重入锁,不可中断,且非公平;Lock也是可重入的,但是自由度更高,允许设置公平与非公平
  • Lock可以与Condtion结合,实现更灵活的条件判断

Q:为什么ReentrantLock性能更好

  1. 自选等待:ReentrantLock 利用了 CAS (Compare-And-Swap) 操作进行自旋等待,而 synchronized 在某些情况下会直接将线程挂起。自旋锁在高并发环境下,如果锁的持有时间较短,可以避免线程切换带来的开销,从而提高性能
  2. 条件变量:ReentrantLock 允许通过 Condition 类实现多条件等待和唤醒,灵活性更高。它支持细粒度的通知机制,而 synchronized 则依赖于 waitnotify/notifyAll,只能对整个临界区进行等待和唤醒,可能导致不必要的性能损耗
  3. 尝试获取:ReentrantLock 提供了 tryLock() 方法,可以尝试获取锁,而不是总是等待,这在某些场景下能够避免不必要的阻塞,提升程序响应性
  4. 可中断锁:ReentrantLock 提供可中断的锁请求 (lockInterruptibly),当线程等待锁的过程中,可以响应中断信号。相比之下,synchronized 无法中断,线程必须等到锁被释放
  5. 释放灵活:ReentrantLock 允许在不同的代码块中加锁和解锁,锁的释放是显式的,这让开发者可以更灵活地控制锁的范围,而 synchronized 则是隐式加锁和释放,灵活性较低。

Q:工厂模式的几种实现区别

工厂模式有几种主要实现方式,包括简单工厂模式、工厂方法模式和抽象工厂模式:

  1. 简单工厂:工厂类中包含一个静态方法,根据传入的参数决定实例化哪一个具体的类
  2. 工厂方法:在父类中定义一个抽象的工厂方法,让子类去实现具体的创建逻辑
  3. 抽象工厂:提供一个接口,定义多个创建对象的工厂方法,用于创建一系列相关或依赖的对象,而无需指定具体的类。缺点是,扩展产品族较为困难,需要修改抽象工厂的接口及所有具体工厂。

Q:inner join、left join、right join区别

类型作用结果集特性
INNER JOIN只返回两张表中匹配的行返回匹配行
LEFT JOIN返回左表中所有行,即使右表没有匹配,右表中没有匹配时显示 NULL返回左表所有行,右表无匹配时为 NULL
RIGHT JOIN返回右表中所有行,即使左表没有匹配,左表中没有匹配时显示 NULL返回右表所有行,左表无匹配时为 NULL
NATURAL JOIN自动基于同名列进行匹配,不需要指定 ON 条件自动使用同名列连接,可能会导致意外连接结果

在 SQL 中,直接使用 JOIN(不加前缀)默认是 INNER JOIN

Q:mysql 多表联合更新

在 MySQL 中,可以使用多表联合更新(UPDATE JOIN)来同时更新多个表的内容。通常,通过使用 JOIN 将多个表关联起来,再基于这些关联条件更新目标表中的数据。

UPDATE table1 
JOIN table2 ON table1.column = table2.column
SET table1.column1 = value1, table2.column2 = value2
WHERE condition;

Q:mysql的存储过程

存储过程是预编译的 SQL 语句的集合,可以接收输入参数,进行逻辑处理,执行一系列操作,并且可以返回多个结果集。

语法:

IN:表示输入参数,调用时传递进去,存储过程内部可以使用,但不能修改。

OUT:表示输出参数,存储过程内部可以修改,并返回给调用者。

INOUT:既可以输入,也可以输出,存储过程内部可以修改其值。

DELIMITER $$CREATE PROCEDURE procedure_name ([IN|OUT|INOUT] parameter_name data_type, ...)
BEGIN-- 过程中的逻辑代码-- SQL 语句集合
END$$DELIMITER ;

例如:

DELIMITER $$CREATE PROCEDURE GetEmployee(IN emp_id INT, OUT emp_name VARCHAR(50))
BEGINSELECT name INTO emp_nameFROM employeesWHERE id = emp_id;
END$$DELIMITER ;

调用示例:

CALL GetEmployee(1, @emp_name);
SELECT @emp_name;

Q:MySQl的存储过程与函数的区别

示例:

DELIMITER $$CREATE FUNCTION GetEmployeeName(emp_id INT)
RETURNS VARCHAR(50)
BEGINDECLARE emp_name VARCHAR(50);SELECT name INTO emp_nameFROM employeesWHERE id = emp_id;RETURN emp_name;
END$$DELIMITER ;

调用示例:

SELECT GetEmployeeName(1);

返回值

  • 存储过程:可以返回多个结果集或通过 OUT 参数返回值。
  • 函数:必须返回一个值,且只能返回一个值。

调用方式

  • 存储过程:通过 CALL 语句调用。
  • 函数:可以在 SQL 语句中像表达式一样调用,通常在 SELECTWHEREORDER BY 等语句中使用。

使用场景

  • 存储过程:适用于需要执行复杂逻辑、多步骤操作,且可能不需要返回值或返回多个结果集的场景。
  • 函数:适用于需要在 SQL 语句中进行简单计算或返回单一值的场景。

输入输出参数

  • 存储过程:可以有 INOUTINOUT 参数。
  • 函数:只能有 IN 参数,不能有 OUT 参数,且必须有 RETURN 返回值。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com