Oracle 数据库基础入门(六):视图与索引的深入解析
在 Oracle 数据库的知识体系中,视图与索引是提升数据库操作效率和优化数据管理的重要工具。对于 Java 全栈开发者而言,熟练掌握视图与索引的运用,不仅能够增强数据库查询的性能,还能为构建高效稳定的后端应用提供有力支持。接下来,让我们深入探索 Oracle 数据库中的视图与索引。
目录
一、Oracle 视图
(一)视图的本质与作用
(二)普通视图
(三)物理视图
二、索引(重要)
(一)索引的重要性与类比
(二)索引结构
(三)主键索引
(四)唯一索引
(五)普通索引
(六)组合索引
(七)执行计划
(八)外键索引
(九)反向键索引
(十)位图索引
(十一)不适合添加索引的条件
(十二)索引失效的场景
三、企业工作小技巧
一、Oracle 视图
(一)视图的本质与作用
视图,从本质上来说,是一张虚拟表。它并不像物理表那样实际存储数据,其数据来源于底层的多张物理表。视图的主要作用是降低程序员编写 SQL 语句的复杂度。通过将复杂的查询逻辑封装在视图中,后续在进行数据查询时,只需对视图进行操作,而无需每次都编写复杂的多表联合查询语句。视图分为普通视图和物理视图。
(二)普通视图
- 语法与创建示例:创建普通视图的语法为
Create view 视图名称 as select 查询语句
。例如,我们有Employees
表和Departments
表,想要创建一个能够同时查询员工信息及其所在部门名称的视图,可以这样写:
Create view emp_dept_view AS
SelectE.*,D.Departmentname
FromEmployees e
Left join departments d on e.Departmentid = d.Id;
- 视图查询:查询视图与查询普通表类似,使用
Select * from 视图名称 [where 条件筛选] [order by 排序] [group by分组]
。比如,要查询工资大于 6000 的用户,可以这样写:
Select*
FromEmp_dept_view
WhereSalary >= 6000;
需要注意的是,视图主要用于查询操作,通常不建议针对视图进行新增、修改和删除操作。因为视图本身不存储数据,对视图的增删改操作可能会导致底层物理表数据的不一致或不可预期的结果。在 Java 全栈开发中,当我们开发企业人力资源管理系统时,可能会创建类似上述的视图。后端开发人员通过 Java 代码使用 JDBC 或相关框架(如 MyBatis)连接数据库,查询该视图获取员工和部门的关联信息。然后将这些信息封装成 Java 对象(如EmployeeDepartment
对象,包含员工和部门的相关属性),传递给前端。前端可以利用这些数据在员工信息展示页面中,方便地呈现员工所属部门等详细信息,提升用户体验。
(三)物理视图
- 与普通视图的区别:在 MySQL 数据库中,只有普通视图,而 Oracle 数据库提出了物理视图的概念。普通视图在每次查询时都需要扫描一次底层物理表数据,这在数据量较大时,性能表现较差。物理视图则通过预先计算并存储查询结果,大大提高了查询性能。不过,物理视图的缺点是会占用更大的磁盘空间。
- 语法与创建示例:创建物理视图的语法为
Create materialized view 视图名称 referesh on commit as select 查询语句
。例如:
Create materialized view emp_dept_mater_view refresh on commit as
selectE.*,D.Departmentname
FromEmployes e,Departments d
Wheree.departmentid = d.id;
需要注意的是,物理视图创建时,联表不能携带left/right/inner join on
。同样,物理视图也主要适用于查询操作,不适合进行新增、修改和删除。在 Java 全栈开发的电商数据分析系统中,如果需要频繁查询一些复杂的商品销售统计数据,使用物理视图可以显著提升查询性能。后端开发人员创建物理视图后,在 Java 代码中查询该视图,将统计结果传递给前端。前端可以根据这些数据生成销售报表、图表等,为运营人员提供高效的数据展示和分析功能。
二、索引
(一)索引的重要性与类比
索引是数据库查询调用的最佳手段之一,它类似于书的目录。当我们需要在书中查找特定内容时,通过目录可以快速定位到相关页面。在数据库中,索引能够帮助我们快速定位到所需的数据行,极大地提高查询效率。索引有多种类型,包括分类索引、主键索引、唯一索引、外键索引、组合索引、反向键索引、位图索引等。
(二)索引结构
- Oracle 数据库的 B 树结构:Oracle 数据库索引底层的数据存储结构是 B 树(B - Tree)。在 B 树中,数据挂载在主键索引上。B 树的特点是能够高效地进行数据的插入、删除和查找操作,适用于各种类型的数据。
- MySQL 数据库的 B + 树结构:MySQL 数据库使用 B + 树(B + Tree)。B + 树与 B 树有所不同,聚簇索引中索引和数据是挂在一起的,主键索引通常都是聚簇的,这意味着找到索引就能够直接找到数据。而非聚簇索引中索引和数据是分开存储的,使用非聚簇索引查询时可能会出现回表的情况,即先通过索引找到数据的位置,再到实际的数据存储位置获取完整的数据。在 Java 全栈开发中,了解不同数据库的索引结构有助于我们在进行数据库设计和查询优化时做出更合理的决策。例如,在设计数据库表结构时,根据数据的特点和查询需求选择合适的索引类型,以提高系统性能。
(三)主键索引
在创建表时,使用primary key
主键约束,实际上也就创建了主键索引。例如:
create table EMP_INFO(id number primary key,-- 其他字段
);
对于主键索引,查询时效率非常高。比如查询id
为 10 的记录:
select * from EMP_INFO where id = 10;
在 Java 全栈开发的用户管理系统中,通过主键索引查询用户信息能够快速响应前端请求。后端开发人员在编写查询用户信息的 SQL 语句时,利用主键索引的高效性,将查询结果快速返回给前端,提升用户体验。
(四)唯一索引
- 创建语法与示例:建表时使用
unique
唯一约束,实际上就是创建了唯一索引。也可以使用以下语法单独创建唯一索引:create unique index 索引名称 on 表(字段)
。例如:
create unique index uk_login_name on EMP_INFO(LOGIN_NAME);
- 查询示例与回表问题:假设我们有如下查询:
-- 查询目录中的所有内容
select id,login_name from emp_info;
-- 在目录表中,筛选对应的数据
select id,login_name from emp_info where login_name = 'zy';
这两个查询直接通过唯一索引就可以获取到所需数据。但如果查询的字段超出了索引覆盖的范围,就可能会出现回表的情况,例如:
select id,login_name,emp_name from emp_info where login_name = 'zy';
回表操作会降低查询效率,在实际开发中应尽量规避。在 Java 全栈开发的系统登录模块中,使用唯一索引查询用户登录名能够快速验证用户身份。但如果在查询用户登录信息时,不小心查询了过多未被索引覆盖的字段,就可能导致回表,影响系统性能。因此,开发人员需要对查询语句进行优化,确保查询字段在索引覆盖范围内。
(五)普通索引
普通索引和唯一索引的区别在于普通索引可以存储重复的值。创建普通索引的语法为create index 索引名称 on 表(字段)
。例如,在emp_info
的emp_name
字段上构建一个普通索引:
create index idx_emp_name on emp_info(emp_name);
查询示例如下:
-- 查询整个索引表
select id,emp_name from emp_info;
-- 从索引表中查询姓 "赵"的人
select id,emp_name from emp_info where emp_name like '赵%';
当查询的字段超出索引覆盖范围时,同样会出现回表情况:
select * from emp_info where emp_name like '赵%';
为了减少回表次数,可以采用索引覆盖和索引下推的方法。在 Java 全栈开发的客户信息管理系统中,如果经常需要根据客户姓名进行查询,创建普通索引可以提高查询效率。但开发人员要注意避免因查询语句不当导致的回表问题,通过合理设计查询语句和索引结构,提升系统性能。
(六)组合索引
组合索引,也称为复合索引。索引覆盖实际上就是利用组合索引将查询的多列都组合到同一个索引表中。创建组合索引的语法为create index 索引名称 on 表(字段1,字段2,……)
。例如
create index idx_emp_name_emp_no on emp_info(emp_no,emp_name);
查询时要满足 “最左化查询原则”,例如:
select id,emp_name,emp_no from emp_info where emp_name like '赵%' and emp_no like '00%';
最左化原则要求在使用组合索引查询时,先匹配最左边的索引字段,然后依次下推到其他字段进行匹配。索引下推则是在组合索引中,按照最左化原则,先在一级索引中进行匹配,然后下推到二级索引继续匹配,以此类推。在 Java 全栈开发的订单管理系统中,如果经常需要根据订单编号和客户姓名进行联合查询,创建组合索引并遵循最左化原则能够显著提高查询效率。后端开发人员在编写查询订单信息的 SQL 语句时,要确保查询条件符合组合索引的最左化原则,从而充分利用索引的优势,快速返回查询结果给前端,提升系统响应速度。
(七)执行计划
执行计划是数据库提供的一种查询 SQL 执行方案的技术。通过执行计划,我们可以了解数据库是如何执行 SQL 查询的,从而对查询进行优化。使用执行计划的语法如下
explain plan for 查询语句;
select * from table(dbms_xplan.display);
例如:
explain plan for select id,emp_name,emp_no from emp_info where emp_no like '00%' and emp_name like '赵%';
-- 显示最新的执行计划
select * from table(dbms_xplan.display);
在 Java 全栈开发中,开发人员可以通过分析执行计划,了解查询语句的性能瓶颈,进而优化 SQL 语句。比如,如果执行计划显示某个查询使用了全表扫描而不是索引,开发人员可以检查索引是否存在、是否合理,以及查询语句是否正确使用了索引等,通过优化使查询能够利用索引,提高查询效率。
(八)外键索引
当表和表之间在外键上添加了外键约束时,在查询时会自动使用外键索引。例如:
-- 父表
create table class_info(id number(11) primary key,class_name nvarchar2(20)
);
-- 子表
create table students(id number(11) primary key,stu_no varchar(11) unique,stu_name nvarchar2(20) not null,age number(3) check (age >=0 and age<= 200 ),gender char(3) check (gender in ('MALE','FEMALE')),fk_class_id number(11) constraint fk_cls_cons references class_info(id)
);
-- on s.fk_class_id = c.id; 使用外键索引
select s.* from students s left join class_info c on s.fk_class_id = c.id;
在 Java 全栈开发的学校管理系统中,通过外键索引能够快速查询学生所属班级等关联信息。后端开发人员利用外键索引的特性,编写高效的查询语句,将查询结果传递给前端,用于展示学生的班级信息等功能。
(九)反向键索引
反向键索引是一种特殊的索引类型,了解即可。创建反向键索引的语法为:
-- 普通索引
create index 索引名称 on 表(字段);
-- 反向键索引
create index 索引名称 on 表(字段) reverse;
例如:
create index idx_emp_name_reverse on emp_info(emp_name) reverse;
(十)位图索引
位图索引是一种特殊的索引,比较适合于重复值较多的列,例如性别(男 / 女)、状态等。创建位图索引的语法为create bitmap index 索引名称 on 表的表名(字段)
。例如:
create bitmap index idx_gender_bitmap on emp_info(gender);
(十一)不适合添加索引的条件
- 经常变化的列:由于索引需要维护,如果列的值经常变化,会导致索引频繁更新,降低数据库性能。
- 小表:对于数据量较小的表,全表扫描的效率可能更高,添加索引反而会增加存储开销。
- 列中存在大量的重复值:在这种情况下,索引的优势不明显,因为通过索引查询和全表扫描的效率差异不大。
- 当列中数据太多:如果列中的数据量非常大,创建索引可能会占用大量的磁盘空间,并且索引的维护成本也会很高。
- 很少使用的列:为很少使用的列创建索引是一种资源浪费,因为这些索引几乎不会被使用。
(十二)索引失效的场景
- SQL 语句中使用
*
或非索引字段:使用*
会导致数据库查询所有字段,可能无法利用索引。查询非索引字段也会使索引失效。 - SQL 包含四则运算:例如在查询条件中对字段进行加、减、乘、除等运算,可能导致索引无法使用。
- SQL 中在执行模糊查询时,将
%
写到前面:如where column like '%value'
,这种情况下无法使用索引进行查询。 - SQL 中使用
or
关键字:使用or
连接多个查询条件时,索引可能失效。 - SQL 中使用
<?
或!=
:这两种运算符可能导致索引无法使用。 - SQL 中使用
in
或not in
:在某些情况下,in
和not in
会使索引失效。 - 组合索引没有遵从 “最左化原则”:如果在使用组合索引时不遵循最左化原则,索引可能无法发挥作用。
- 数据库认为不需要使用索引:数据库的查询优化器会根据数据量、查询条件等因素判断是否使用索引,如果认为全表扫描更高效,索引就会失效。
三、企业工作小技巧
- 视图的使用技巧:在企业项目中,当涉及复杂的多表联合查询时,优先考虑创建视图。例如,在一个大型企业的财务系统中,涉及多个财务相关表的联合查询来生成财务报表。通过创建视图,将复杂的查询逻辑封装起来,不仅方便了开发人员后续的查询操作,还能提高代码的可读性和可维护性。同时,在 Java 全栈开发中,视图可以与后端框架紧密结合。比如在 Spring Boot 项目中,通过 MyBatis 操作视图,将视图查询结果映射为 Java 对象,方便前端调用接口获取数据。
- 索引的优化技巧:在创建索引时,要根据业务需求和数据特点进行合理设计。对于高频查询的字段,优先创建索引。例如,在电商系统中,用户经常根据商品名称和价格进行查询,那么可以在商品表的
product_name
和price
字段上创建索引。同时,要定期对索引进行维护,比如使用ALTER INDEX
语句对索引进行重建或重组,以提高索引的性能。在 Java 全栈开发中,开发人员要时刻关注索引的使用情况。通过分析执行计划,及时发现索引失效的情况,并对 SQL 语句和索引结构进行优化。此外,在数据量较大的系统中,可以使用缓存技术(如 Redis)结合索引,进一步提高查询性能。先从缓存中查询数据,如果缓存中没有,再通过索引从数据库中查询,将查询结果存入缓存,以便下次查询使用。
通过对 Oracle 数据库视图与索引的深入学习,我们掌握了提升数据库性能和优化数据管理的重要技能。在未来的 Java 全栈开发工作中,灵活运用视图与索引,将为我们构建高效、稳定的应用系统提供有力保障。
相关文章:
Oracle 数据库基础入门(六):视图与索引的深入解析
在 Oracle 数据库的知识体系中,视图与索引是提升数据库操作效率和优化数据管理的重要工具。对于 Java 全栈开发者而言,熟练掌握视图与索引的运用,不仅能够增强数据库查询的性能,还能为构建高效稳定的后端应用提供有力支持。接下来…...
机器学习-随机森林解析
目录 一、.随机森林的思想 二、随机森林构建步骤 1.自助采样 2.特征随机选择 3构建决策树 4.集成预测 三. 随机森林的关键优势 **(1) 减少过拟合** **(2) 高效并行化** **(3) 特征重要性评估** **(4) 耐抗噪声** 四. 随机森林的优缺点 优点 缺点 五.…...
Qt添加MySql数据库驱动
文章目录 一. 安装MySql二.编译mysql动态链接库 Qt版本:5.14.2 MySql版本:8.0.41 一. 安装MySql 参考这里进行安装:https://blog.csdn.net/qq_30150579/article/details/146042922 将mysql安装目录里的bin,include和lib拷贝出来…...
MR的环形缓冲区(底层)
MapReduce的大致流程: 1、HDFS读取数据; 2、按照规则进行分片,形成若干个spilt; 3、进行Map 4、打上分区标签(patition) 5、数据入环形缓冲区(KVbuffer) 6、原地排序ÿ…...
RMAN备份bug-审计日志暴涨(select action from gv$session)
问题概述 /oracle 文件系统使用率过大,经过检查是审计日志过大,/oracle 目录 197G 审计日志占用70G,每6个小时产生大量审计日志,日志内容全是select action from gv$session ,猜测可能跟备份有关, $>df -h /oracle…...
30秒从零搭建机器人管理系统(Trae)
1. 安装 [Trae官网】(https://www.trae.com.cn/) 2. 提示词 创建一个BS架构的机器人远程操控系统,具备机器人状态及位置实时更新,可以实现机器人远程遥控,可以对机器人工作日志进行统计分析,以及其它管理系统的常用功能3. 模型…...
OpenFeign 学习笔记
OpenFeign 学习笔记 一、基础入门 1.1 简介 OpenFeign 是基于声明式的 REST 客户端,用于简化服务间远程调用。(编程式 REST 客户端(RestTemplate)) 通过接口注解方式定义 HTTP 请求,自动实现服务调用。 …...
单例模式(线程案例)
单例模式可以分为两种:1.饿汉模式 2.懒汉模式 一.饿汉模式 //饿汉模式👇 class MySingleTon{//因为这是一个静态成员变量,在类加载的时候,就创建了private static MySingleTon mySingleTon new MySingleTon();//创建一个静…...
HttpServletRequest 和 HttpServletResponse 不同JDK版本的引入
java中,可能会用到JWT令牌校验, 这时,大概率会用到 HttpServletRequest,和 HttpServletResponse。 若为 JDK8,SpringBoot 2.7.3 的版本则引入: import javax.servlet.http.HttpServletRequest; import ja…...
数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南
文章目录 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南ChatGPTKimi腾讯元宝DeepSeek 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南 产品隐私设置操作路径隐私协议ChatGPT…...
【JavaEE】SpringMVC简单练习
目录 一、计算器1.1 接口定义1.2 前端代码1.3 后端代码1.4 运行结果 二、⽤⼾登录2.1 需求2.2 接口定义2.3 前端页面2.4 后端代码2.5 结果 三、留⾔板3.1 需求:3.2 接口3.3 前端代码3.4 后端代码3.5 运行结果 四、图书管理系统4.1 需求4.2 接口定义4.3 后端代码 一、计算器 1.…...
文件上传漏洞:upload-labs靶场11-20
目录 pass-11 pass-12 pass-13 pass-14 pass-15 pass-16 pass-17 pass-18 pass-19 pass-20 pass-11 分析源代码 ,发现上传文件的存放路径可控 if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file][name],st…...
苹果Siri升级遇阻,国行iPhone或将引入阿里、百度AI自救
AI整合进展缓慢 苹果正加速将生成式AI技术整合至Siri,但内部消息称其底层技术研发落后于竞争对手,进展未达预期。 国行iPhone将引入双AI模型 苹果计划在2025年中期为国行iPhone引入AI功能,目前已敲定与 阿里巴巴、百度 合作,用户…...
立即释放 Mac 空间!Duplicate File Finder 8 重复文件高速清理工具
Duplicate File Finder 专业的 Mac 重复文件清理工具。查找并删除重复的文件、文件夹,甚至相似的照片。 不要让无用的文件占用磁盘上的宝贵空间。 整理你的 Mac。用最好的重复文件查找器来管理你的文件集合。 扫描任何磁盘或文件夹 主文件夹、照片/音乐库、外部磁…...
ES时序数据库的性能优化
本文主要是讲解了Elasticsearch数据库的优化,大家可以看一下。因为当时实操中涉及了6版本和7版本的一起优化,所以内容上大家自行区分一下。 一、基础设置 1. jvm.options参数详解 不同版本java配置会不一样 -Xms12g -Xmx12g 说明: 将 Xms…...
第3章:启动界面与主界面设计
第3章:启动界面与主界面设计 学习目标 掌握SwiftUI中的启动界面(Splash Screen)设计与实现学习主界面的布局与导航结构设计实现灵感笔记的列表与网格视图掌握SwiftUI中的动画与过渡效果学习如何使用环境对象共享数据理论知识讲解 启动界面设计原则 启动界面(Splash Scre…...
c++ 作用域解析操作符::
目录 什么是 ::? 基本语法 主要用途 1. 访问全局作用域 2. 访问类的静态成员 3. 访问命名空间中的内容 4. 区分嵌套作用域 5. 在类中定义成员函数 注意事项 什么是 ::? 在C中,:: 是作用域解析操作符(Scope Resolution O…...
JavaScript数据类型转换
在JavaScript编程中,由于其动态类型特性,经常需要在不同的数据类型之间进行转换。正确地执行类型转换不仅能够避免潜在的错误,还能提高代码的灵活性和可维护性。本文将探讨JavaScript中的常见数据类型转换方法,并提供一些实用的例…...
css错峰布局/瀑布流样式(类似于快手样式)
当样式一侧比较高的时候会自动换行,尽量保持高度大概一致, 例: 一侧元素为5,另一侧元素为6 当为5的一侧过于高的时候,可能会变为4/7分部dom节点 如果不需要这样的话删除样式 flex-flow:column wrap; 设置父级dom样…...
AI 技术 引入 RTK(实时动态定位)系统,可以实现智能化管理和自动化运行
将 AI 技术 引入 RTK(实时动态定位)系统,可以实现智能化管理和自动化运行,从而提高系统的精度、效率和可靠性。以下是 AI 技术在 RTK 系统中的应用实例: 一、AI 技术在 RTK 系统中的应用场景 1. 整周模糊度快速解算 问题:RTK 的核心是解算载波相位的整周模糊度,传统方法…...
【STM32F103ZET6——库函数】11.捕获红外信号
目录 红外原理 数据码 引导码 连发码 配置捕获引脚 使能引脚时钟 配置定时器 使能定时器时钟 配置输入捕获 中断优先级分组 配置定时器4中断 定时器中断使能 使能定时器 重写定时器中断服务函数 清空定时器中断标志位 例程 例程说明 main.h main.c HongWai…...
江科大51单片机笔记【9】DS1302实时时钟(上)
一、DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。RTC(Real Time Clock):实时时钟,是一种集成电路…...
在Spring Boot + MyBatis中优雅处理多表数据清洗:基于XML的配置化方案
问题背景 在实际业务中,我们常会遇到数据冗余问题。例如,一个公司表(sys_company)中存在多条相同公司名的记录,但只有一条有效(del_flag0),其余需要删除。删除前需将关联表…...
【计网】网络层
网络层 4.1 网络层提供的两种服务(一) 面向连接的虚电路服务(二) 无连接的数据报服务 4.2 IPv44.2.1 IPv4概述4.2.2 分类编址的IPv4地址4.2.3 划分子网的IPv4地址4.2.4 无分类编址的IPv4地址4.2.5 IPv4地址的应用规划(…...
稳定性保障-前端
前端稳定性保障是确保应用在各种环境下都能 高效、稳定、无错误 运行的策略和方法。可以从 监控、测试、容灾、优化 等方面进行保障。 📌 1. 监控 & 报警 实时监控 线上情况,及时发现问题。 ✅ 1.1 前端错误监控 • Sentry、Fundebug:…...
批量给 Word 中的所有图片添加水印
如果要给一个 Word 文档加水印,很多小伙伴都能轻松的完成,因为使用 Office 就能轻松的操作,并且也有很多第三方的工具可以帮我们实现。那假如需要给 Word 中的每一张图片都添加上水印,那有什么比较好的方法实现呢?今天…...
jQuery UI 简介
jQuery UI 简介 引言 随着互联网技术的飞速发展,前端开发已经成为网站和应用程序建设的重要组成部分。jQuery UI 是一个基于 jQuery 的用户界面库,它为开发者提供了丰富的交互组件和视觉效果,使得创建具有吸引力和互动性的网页变得更加简单。本文将为您详细介绍 jQuery UI…...
`label` 标签的 `for` 属性详解
一、基本概念 label 标签的 for 属性用于将标签与表单控件(如 input、select 等)绑定,其值需与目标元素的 id 完全匹配。这种关联允许用户点击标签时触发控件交互(如聚焦输入框或切换复选框),提升操作便捷…...
ArcGIS操作:10 投影坐标系转地理坐标系
应用情景:在计算shp面质心坐标的时,由于需要的坐标是经纬度,所以需要将投影坐标系转化为地理坐标系 1、打开工具箱 2、右侧:数据管理工具 → 投影和变换 → 要素 → 投影 3、选择投影的数据、输出路径、地理坐标系,点…...
【单片机通信技术】串口通信的几种方式与比较,详细解释SPI通信
一、介绍 串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于嵌入式系统、工业控制、传感器网络等领域。 二、以下是几种常见的串口通信方式及其对比: 1.UART(Universal Asynchronous Receiver/Transmitter) 特点&am…...
DeepSeek开源Day5:3FSsmallpond技术详解
2 月 24 日,DeepSeek 启动 “开源周”,第四个开源的代码库为 3FS&smallpond(又是一下发布了两个)。 3FS(Fire-Flyer File System)是 DeepSeek 内部开发的一款高性能分布式文件系统,旨在为 A…...
常见的限流算法有哪些
计数器算法 原理:在固定的时间窗口内,对请求进行计数,当请求数量达到设定的阈值时,就开始限流,拒绝多余的请求。例如,设定 1 分钟的时间窗口内允许最多 100 个请求,那么在这 1 分钟内每来一个请…...
Android 低功率蓝牙之BluetoothGattCallback回调方法详解
BluetoothGattCallback 是 Android 中用于处理蓝牙低功耗(BLE)设备通信的核心回调类。它负责处理与 BLE 设备的连接、服务发现、数据读写等操作的结果。以下是对 BluetoothGattCallback 的详细解析: 1. onConnectionStateChange 触发时机&am…...
socket.io协议内容详解
Socket.IO 是一个基于事件的实时通信库,支持双向通信。它并非单一协议,而是结合了 Engine.IO 传输层和 Socket.IO 应用层协议的复合体系。以下是其协议核心内容的详细解析: 1. 协议分层 Engine.IO:负责底层传输(如 WebSocket、HTTP 长轮询),处理连接稳定性、心跳和断线重…...
在Oracle中编写雪花算法升学雪花ID
雪花算法的定义不详细说了哈,直接给出代码! --雪花配置 --DROP TABLE SNOWFLAKE_CONFIG; CREATE TABLE SNOWFLAKE_CONFIG ( DATA_CENTER_ID NUMBER(5) NOT NULL, WORKER_ID NUMBER(5) NOT NULL, LAST_TIMESTAMP NUMBER(20) NOT NULL, SEQUENCE NUMBE…...
我们来学nginx -- 优化下游响应速度
优化下游响应速度 题记启用 Gzip 压缩优化缓冲区设置设置超时时间 题记 专家给出的配置文件真是…,信息量有点大啊! nginx:我只想作为一个简单的代理专家爸爸:都是为了你好! 这样,先从有关响应速度的角度&…...
SELECT ... FOR UPDATE 加锁后,其他线程能读取数据吗
在执行 SELECT * FROM table WHERE ... FOR UPDATE 语句时,MySQL 会对查询结果集中的行加 排他锁(X锁)。这种锁的行为会影响其他事务对这些行的读写操作。以下是具体的影响: 1. 加锁后的效果 当前事务: 对查询结果集中…...
【论文阅读】多模态——LSeg
文献基本信息 标题:Language-Driven Semantic Segmentation作者:Boyi Li、Kilian Q. Weinberger、Serge Belongie、Vladlen Koltun、Ren Ranftl单位:Cornell University、University of Copenhagen、Apple、Intel Labs会议/期刊:…...
GBT32960 协议编解码器的设计与实现
GBT32960 协议编解码器的设计与实现 引言 在车联网领域,GBT32960 是一个重要的国家标准协议,用于新能源汽车与监控平台之间的数据交互。本文将详细介绍如何使用 Rust 实现一个高效可靠的 GBT32960 协议编解码器。 整体架构 编解码器的核心由三个主要组…...
Tomcat之 配置https协议即SSL证书
太难了,Tomcat7服务器配置Https协议的SSL证书,半天没搞定啊 切换,Tomcat8 分分钟 参考 https://blog.csdn.net/u014553029/article/details/86672342 https://blog.csdn.net/qq_37138756/article/details/103516627 https://blog.csdn.net/r…...
如何将飞书多维表格与DeepSeek R1结合使用:效率提升的完美搭档
将飞书的多维表格与DeepSeek R1结合使用,就像为你的数据管理和分析之旅装上一台涡轮增压器。两者的合作,不仅仅在速度上让人耳目一新,更是将智能化分析带入了日常的工作场景。以下是它们如何相辅相成并改变我们工作方式的一些分享。 --- 在…...
JPA编程,去重查询ES索引中的字段,对已有数据的去重过滤,而非全部字典数据
一、背景 课程管理界面,查询前,需要把查询元数据给出。 学科列表、学段列表和分类列表,我们把它定义为查询元数据。 一般的业务需求是: 系统维护好多个字典,比如学科、学段等等,相当于属性库。 但是&…...
Kubermetes 部署mysql pod
步骤 1: 创建 PersistentVolume 和 PersistentVolumeClaim 首先为 MySQL 创建一个 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来确保数据的持久性。 mysql-pv.yaml: apiVersion: v1 kind: PersistentVolume metadata:name: mysql-pv-volume spec:cap…...
自定义wordpress三级导航菜单代码
首先,在你的主题functions.php文件中,添加以下代码以注册一个新的菜单位置: function mytheme_register_menus() {register_nav_menus(array(primary-menu > __(Primary Menu, mytheme))); } add_action(init, mytheme_register_menus); …...
剑指 Offer II 060. 出现频率最高的 k 个数字
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20060.%20%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%20k%20%E4%B8%AA%E6%95%B0%E5%AD%97/README.md 剑指 Offer II 060. 出现频率最高的…...
SQL Server数据库中用存储过程来取顺序号
SQL Server数据库中用存储过程来取顺序号 表sys_number,字段name字符,表示前缀,value数字,一个一个递增 存储过程代码: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[usp_GetSysid]name varchar(5…...
JS—组成:2分钟掌握什么是ECMAScript操作,什么是DOM操作,什么是BOM操作
个人博客:haichenyi.com。感谢关注 1. 目录 1–目录2–组成3–内置对象 2. 组成 一直都在说JS,JS,到底啥是JS有了解过吗?JS由哪几部分组成的呢? 定义: JavaScript是一种轻量级、解释型或即时编译型的编程语…...
如何使用 Ollama 的 API 来生成聊天
如何使用 Ollama 的 API 来生成聊天 简介 生成聊天 生成聊天的示例 加载模型 卸载模型 简介 Ollama 提供了一个 RESTful API,允许开发者通过 HTTP 请求与 Ollama 服务进行交互。这个 API 覆盖了所有 Ollama 的核心功能,包括模型管理、运行和监控。本…...
Jenkins学习笔记
文章目录 一、Jenkins简介二、Jenkins的安装1. 安装前准备2. 安装Jenkins3. 启动Jenkins 三、Jenkins的配置1. 初始配置2. 全局工具配置3. 插件安装 四、Jenkins的使用1. 创建新任务2. 配置任务3. 触发构建4. 查看构建结果 五、Jenkins的高级功能1. 分布式构建2. 流水线&#x…...
公开笔记:自然语言处理(NLP)中文文本预处理主流方法
在自然语言处理(NLP)领域,将中文文本转化为数字的主流方法主要集中在预训练语言模型和子词编码技术上。这些方法能够更好地捕捉语义信息,并且在各种NLP任务中表现出色。以下是目前主流的文本编码方法: 1. 基于预训练语…...