Java程序员都会碰到的Mysql索引失效问题,看完收获满满!

地瓜派RDK X5部署YOLOv11n避坑指南:从Softmax瓶颈到BPU加速的实战解析 本文详细解析了在地瓜派RDK X5开发板上部署YOLOv11n模型时,从性能暴跌到成功优化的全过程。核心在于通过配置`node_info`将模型中的Softmax算子强制在BPU上以int16精度运行,解决了因算子被分配到CPU导致的严重性能瓶颈。实战部署后,模型推理延迟从126ms降至10.8ms,FPS从7.9提升至92.3,实现了显著的性能优化。 阅读详情

在这里插入图片描述

准备

为了进行Mysql失效的实践,我们首先创建一个表,执行以下 sql 语句:

mysql> create table staff(
    -> id int(11) not null auto_increment,
    -> name varchar(20) not null,
    -> pos varchar(20),
    -> add_time datetime,
    -> grade int(10),
    -> weight int(10),
    -> age int(10),
    -> UNIQUE INDEX name_idx (name),
    -> primary key (id))engine = innodb default charset = utf8;

执行插入语句,

insert into staff(name,pos,add_time,grade,weight,age) values("liyang", "dev","1998-5-20", 100, 23);
insert into staff(name,pos,add_time,grade,weight,age) values("zaolie", "manager","1994-5-20", 87,80, 28);
insert into staff(name,pos,add_time,grade,weight,age) values("yinhui", "dev_1","1997-5-20", 78,50, 27);
insert into staff(name,pos,add_time,grade,weight,age) values("shaoyu", "dev_2","1995-5-20", 65,78, 27);

执行 select * from staff:

Explain关键字

mysql为我们提供了很有用的辅助武器 explain,它向我们展示了 mysql 接收到一条sql语句的执行计划。根据explain 返回的结果我们便可以知道我们的 sql 写的怎么样,是否会造成查询瓶颈,同时根据结果不断的修改调整查询语句,从而完成 sql优化的过程。

虽然 explain返回的结果项很多,这里我们只关注三种,分别是type,key,rows。

其中 key 表示用到了什么索引,为NULL表示未用到索引;rows 表示查找数据扫描的行数, type 表示连接类型;

type 字段出现不同的值表示的含义:

  • all, 全表扫描;
  • index,这种连接类型只是另外一种形式的全表扫描,只不过它的扫描顺序是按照索引的顺序。这种扫描根据索引然后回表取数据,和all相比,他们都是取得了全表的数据,而且index要先读索引而且要回表随机取数据,因此index不可能会比all快(取同一个表数据),但为什么官方的手册将它的效率说的比all好,唯一可能的原因在于,按照索引扫描全表的数据是有序的。
  • range, 有范围的索引扫描,使用了范围索引,比如between, and 以及 ‘<’, ‘>’, in 和 or 也是索引范围优扫描。
  • ref, 查找条件列使用了索引而且不为主键和unique。其实,意思就是虽然使用了索引,但该索引列的值并不唯一,有重复。
  • ref_eq, 使用了主键或者唯一性索引;
  • const, 如果将一个主键放置到where后面作为条件查询,mysql优化器就能把这次查询优化转化为一个常量。
索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。

索引分单列索引和组合索引。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

普通索引

查看索引

show index from staff: 查看表的索引

image

其中,

  • Table: 表名,

  • Non_unique : 表示如果索引不能包含重复项,则返回 0 ;如果可以,则返回 1.

  • Key_name: 索引名称,或者键名;

  • Seq_in_index: 索引中的序列号,从1开始。

  • Column_name :列名;

  • Collation: 列在索引中的排序方式。升序值 A 或者 NULL 未排序;

  • Cardinality: 索引中唯一值数量的估计。Cardinality是根据存储为整数的统计信息进行计数的.

  • Sub_part: 索引前缀,如果仅对列进行部分索引,则为已索引字符的数目;如果对整个列索引则为null.

    Note

    前缀限制以字节为单位。但是,对于CREATE TABLE,ALTER TABLE和CREATE INDEX语句中的索引规范,前缀 length 被解释为非二进制字符串类型(CHAR,VARCHAR,TEXT)的字符数和二进制字符串类型(BINARY,VARBINARY,BLOB)的字节数。

  • Packed: 指示密钥的包装方式。

  • NULL: 如果该列可能包含NULL个值,则包含YES;否则,则包含''。

  • Index_type: 使用的索引方法(BTREE,FULLTEXT,HASH,RTREE)

  • Comment: 关于索引的信息未在其自己的列中描述,例如disabled(如果禁用了索引)。

  • Index_comment: 创建索引时,为索引提供的具有COMMENT属性的任何 Comments。

参考

创建索引

  1. 创建索引

    CREATE INDEX indexName ON table_name (column_name)
    
    

    如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

  2. 修改表结构添加

    Alter table tableName ADD INDEX indexName(column)
    
    
  3. 创建表时添加

    CREATE TABLE mytable(  
    ID INT NOT NULL,   
    username VARCHAR(16) NOT NULL,  
    INDEX [indexName] (username(length))  
    ); 
    
    

删除索引

DROP INDEX [indexName] ON mytable; 

唯一索引

与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

创建索引

  • 创建索引

    CREATE UNIQUE INDEX indexName ON mytable(username(length)) 
    
    
  • 修改表结构

    ALTER table mytable ADD UNIQUE [indexName] (username(length))
    
    
  • 创建表时指定

    CREATE TABLE mytable(  
    ID INT NOT NULL,   
    username VARCHAR(16) NOT NULL,  
    UNIQUE [indexName] (username(length))  
    ); 
    
    
使用ALTER 命令添加和删除索引

添加主键

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list)

该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

添加唯一索引

ALTER TABLE tbl_name ADD UNIQUE index_name (column_list)

这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。

添加普通索引

ALTER TABLE tbl_name ADD INDEX index_name (column_list)

添加普通索引,索引值可出现多次。

添加全文索引

ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list)

该语句指定了索引为 FULLTEXT ,用于全文索引。

删除表中的索引

ALTER 命令中使用 DROP 子句来删除索引:

ALTER table tableName DROP INDEX c;

使用ALTER 命令添加和删除主键

主键作用于列上(可以一个列或多个列联合主键),添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。

添加主键:

 ALTER TABLE testalter_tbl MODIFY c INT NOT NULL;
 ALTER TABLE testalter_tbl ADD PRIMARY KEY (c)

使用 ALTER 命令删除主键:

ALTER TABLE testalter_tbl DROP PRIMARY KEY;

索引失效

索引失效主要原因有以下:

  1. 违反最佳最前缀法则
  2. 在索引列上做操作
  3. 索引范围条件右边的列
  4. 使用不等于
  5. like以通配符开头
  6. 字符串不加单引号
  7. or连接
  8. order by: 违反最左前缀法则,含非索引字段排序,导致文件排序;
  9. group by: 违反最左前缀法则,含非索引字段,会导致产生临时表;
违反最左前缀法则

在age, weight, grade列创建复合索引:

create index age_weight_grade_idx on staff (age,weight,grade);

image

如果索引有多列,要遵守最左前缀法则:即查询从索引的最左前列开始并且不跳过索引中的列。

正确姿势:

explain select * from staff where age = 23 and weight = 70 and grade = 100;

image

错误方式:

image

这也就是说,我们创建索引一定是基于某种原因或者基于特定的sql语句去做优化,而不是一上来就创建索引。

在索引列上操作

执行计算、函数、自动转换类型等,或导致索引失效。

比如我们执行以下语句,

explain select * from staff where id + 1 = 3;

image

范围索引右边的列失效

复合索引中,如果有一列使用了范围控制符,则右边的索引会失效。

explain select * from staff where age = 23 and weight > 70 and grade = 100;

image

使用不等于

使用 ‘!=’ 或者’<>’ 导致索引失效,全表扫描;

explain select * from staff where age != 1;

image

like以通配符开头("%abc")
explain select * from staff where name like '%ang';

image

字符串不加单引号
explain select * from staff where name = 200;

image

使用or连接
// 少用or 连接
explain select * from staff where age = 23 or grade = 70;

image

order by

正常使用, 索引有两个作用:排序和查找

explain select * from staff where age = 23 order by age,weight;

image

违反最左前缀法则或者使用非索引字段会导致索引失效。

explain select * from staff where age = 23 order by age,grade;

image

group by

正常使用(分组之前必须排序)

explain select * from staff where age = 23 group by age;

image

违反最左前缀法则或者使用非索引字段会导致索引失效。

 explain select * from staff where age = 23 group by grade;
 explain select * from staff where age = 23 group by add_time;

image

image

分类: [Mysql]

在这里插入图片描述

库卡kuka仿真软件sim Pro 3.1简单实用教程 实验目的 建立机器人,自定义抓手,导入外部模型,掌握工具坐标、基坐标的使用,自动生成轨迹。 实验步骤 打开KUKA.Sim Pro 3.1.2仿真软件,依次点击KUKA Sim Library 3.1 → KUKA_ROBOTS→Small Robots(3kg-10kg)→Archiv→AGILUS-1 Series→sixx,双击KR 6 R700 sixx,加载机器臂到工作空间; 加载自定义抓手。双击Miscellaneous,再双击圆锥Cone设置上半径为0,下半径为40,高为100; 点击“捕 阅读详情

相关推荐

化学科学催化反应产率预测之Transformer建模SMILES(Datawhale AI 夏令营)

循环神经网络:由于所有的前文信息都蕴含在一个隐向量中,随着序列长度的增加,早期的上下文信息会逐渐被遗忘。卷积神经网络:受限的上下文窗口在建模长文本时存在天然不足。需要多层卷积操作才能处理长文本。在本篇文章中,我们学习了Transformer的基本架构及其在化学反应产率预测中的应用。通过利用Transformer的Encoder部分对SMILES进行建模,我们能够更有效地捕捉序列数据的特征,从而提高模型的预测性能。

不想宅的冷同学 1096

使用数据库唯一索引加全局异常处理实现某个值的唯一限制

1、数据库添加唯一索引 2、做全局同一异常处理

LJWWD的博客 1672

Camera ITS测试

一、手机端设置: 将 CtsVerifier.apk 安装到设备上, 连接上linux主机。 二、主机端设置: 基础:CTS测试运行环境 然后,主机安装python2.7,及numpy/scipy/matplotlib/opencv 栈和 python 成像库。按照下面的命令依次安装: sudo apt­-get install python-­numpy sudo apt-­g...

wangubuntu的专栏 7787

java mysql插入信息发生唯一索引重复异常解决方法

java mysql插入信息发生唯一索引重复异常解决方法 一、介绍 在项目中需要添加一个学生信息,在后台生成学号然后插入到数据库发现该学号已经存在,抛出异常,。 二、解决方法 public String createStudentid() { // 生成学号工具类 String studentid = StudentIdGenerator.gener...

CoderYin的博客 1万+

硬件工程师必看:5种ESD保护电路设计实战解析(附电路图)

本文为硬件工程师深度解析5种实战ESD保护电路设计,涵盖TVS二极管、专用保护芯片、片上防护及高速射频场景方案。通过具体电路图,详解工作原理、选型要点及PCB布局黄金法则,重点强调ESD防护设计中的能量泄放路径管理与低阻抗实现,助力提升产品可靠性。

xk7n92h3p5m的博客 640

KEIL MDK 生成bin文件实战:C51与ARM双平台配置指南

本文详细介绍了在KEIL MDK开发环境中,为C51和ARM双平台自动生成BIN文件的实战方法。针对C51平台,通过srec_cat.exe工具编写批处理脚本并集成到KEIL;针对ARM平台,则利用fromelf.exe工具直接配置。文章还提供了通用脚本方案和路径、变量、版本兼容性等常见问题的避坑指南,帮助开发者高效完成嵌入式程序部署。

weixin_29188997的博客 346

MySQL 普通索引和唯一索引的区别

该文为《 MySQL 实战 45 讲》的学习笔记,感谢查看,如有错误,欢迎指正 一、查询和更新上的区别 这两类索引在查询能力上是没差别的,主要考虑的是对更新性能的影响。建议尽量选择普通索引。 1.1 MySQL 的查询操作 普通索引 查找到第一个满足条件的记录后,继续向后遍历,直到第一个不满足条件的记录。 唯一索引 由于索引定义了唯一性,查找到第一个满足条件的记录后,直接停止继续检索。 普通索引会多检索一次,几乎没有影响。因为 InnoDB 的数据是按照数据页为单位进行读写的,需要读取数据时,并不...

ElegantHedgehog的博客 492

25年PINN创新点大盘点!

在科研论文的激烈角逐中,想轻松产出高含金量成果?物理信息神经网络(PINN)堪称“宝藏研究方向”,是冲击高分区论文的绝佳赛道!对于渴望发表优质论文的科研伙伴,这三大研究路径值得重点关注。首先是自适应PINN,在PINN训练过程中,物理方程与实测数据间的矛盾常常导致权重调节困难,而恰好直击这一痛点,是极具价值的研究方向。其次,同样前景广阔,传统多物理场同时训练效果欠佳,如今分阶段训练方法脱颖而出,成效显著且竞争较小。最后,探索及多任务学习等技术的融合,能实现优势叠加,碰撞出创新火花。

Malaai的博客 1972

索引失效的情况汇总

索引失效的情况汇总 1.模糊查询通配符%在左边 2.数据类型错误 3.对索引字段使用内部函数 4.索引列是null 5.索引字段进行四则运算 6.复合索引不符合最左前缀匹配法则 7.全表查询预计比索引查询更快 总结:模型数空运最快 ...

weixin_42833423的博客 310

xlinx项目系列之基于zynq-7020ISP图像处理

本Demo基于zynq-7020(正点原子启明星+OV5640+4.3'800x480)实现了ISP图像处理(将ov5640的isp关闭,在7020上实现ISP功能),输出到LCD和HDMI,软件基于SDK裸机开发,2592x1944@15fp。位置: xil_ip_repo/xil_isp_lite_1.0。项目获取链接:2.基于zynq-7020实现ISP图像处理。位置: xil_ip_repo/xil_vip_1.0。

JY6669991010的博客 2637

自研半导体Fab缺陷分析系统:从Klarf解析到Defect Map可视化的实战替代方案

本文分享了自研半导体Fab缺陷分析系统的实战经验,重点解析了Klarf文件格式与坐标系转换的核心技术,并详细介绍了从数据解析到Defect Map可视化的完整实现路径。该系统旨在为成本敏感或追求技术自主的团队提供一套功能完备的Klarity Defect平替方案,有效降低对昂贵商业软件的依赖,实现缺陷数据的自主分析与可视化。

y7z8a的博客 716

学历不是问题!笑谈社招大专老哥阿里-腾讯-京东Java后端面试奇遇,轻松上岸入职京东!

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。Mybatis面试专题MySQL面试专题并发编程面试专题网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84439674的博客 841

5.13华为OD机试真题 新系统 - 社交网络相同爱好好友查询 (Java/Py/C/C++/Js/Go)

5.13华为OD机试真题 新系统 - 社交网络相同爱好好友查询 (Java/Py/C/C++/Js/Go)

算法大师! 157

Java大厂面试现场:谢飞机硬刚高并发、JVM、SpringBoot,结局亮了!

创建项目编写自动配置类(添加等条件在中注册配置类引入 starter 即可自动装配。

weixin_46755643的博客 493

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

互联网大厂Java面试实录:严肃面试官与搞笑水货程序员谢飞机的技术对决

谢飞机,先介绍一下ArrayList和LinkedList的区别吧。:ArrayList是数组,LinkedList是链表。ArrayList查询快,增删慢;LinkedList查询慢,增删快!(自信满满)(点头):不错。那HashMap的底层原理是什么?:嗯……HashMap是数组加链表,后来变成数组加红黑树,为了……为了好看?(挠头)(皱眉):再想想。:哦!是为了解决哈希冲突!:勉强算你对。那ConcurrentHashMap怎么保证线程安全?:用锁!很多锁!(胡乱比划)

weixin_45820558的博客 411

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

互联网大厂Java面试:严肃面试官与搞笑程序员谢飞机的技术对决

谢飞机,先简单介绍一下HashMap的工作原理吧。:啊,HashMap啊,就是存键值对的,用哈希表存的,速度快!(自信满满):嗯,不错。那你能说说HashMap的负载因子是什么吗?:负载因子?是不是像汽车的载重啊?(挠头):(叹气)那ArrayList和LinkedList的区别呢?ArrayList是数组,LinkedList是链表,一个查得快,一个增删快!(这次答对了):很好,看来基础还行。

baidu_35887068的博客 315

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

最全SpringBoot学习教程:从思路到不断优化

前言 “大专人大专魂,大专都是人上人” 当我看到这句话突然就在各个平台火了之后,又开始涌现出了一批又一批抨击专科的网友。 其中有一条评论我记忆犹新:大专生努力做什么都行,就是别做程序员了,别祸害IT届拉低档次了。看完这条评论时我实在耐不住心情促使我敲出这篇文章。作为一个专科毕业成为程序员的人,我发现大家对专科生当程序员这件事恶意满满,不少人说大专能当程序员?大专能进大厂?大专出身,做Java程序员真的没有春天吗? 一、网络原理 OSI 与 TCP/IP 各层的结构与功能,都有哪些协议 TCP 建立连接的过

m0_57286571的博客 103

互联网大厂Java面试实战:从Spring Boot到AI智能客服,水货程序员李四的翻车现场

李四的面试反映了很多程序员的现状:基础知识点能记住,但深入原理讲不清楚;技术名词都知道,但实际应用和架构设计缺乏深度。对于想进大厂的同学来说,不仅要知其然,更要知其所以然。

Filwaod 200

BAT面试Java岗经验汇总:面试重点规划+精选面试120题+6条面试经验!

前言 每到年后,总会有很多人跳槽。可我发现一个奇怪的现象:那些跳槽的人,总是从一个坑,跳进令一个坑中。毕竟一年过去了,会的还是原来的知识,人的身价就摆在那里,无论怎么折腾,也不会拿到更好的offer。这样的跳槽其实没有意义,也许就有人问,现在都是互联网寒冬了,要怎样才能把握好机会,拿到跟好跟适合自己的offer呢?技术才是我们程序员的立身之本,在再好的机遇面前我们也要有这个实力去抓住它。 **快到年后跳槽季,我这里整理了200道大型互联网公司面试常问的面试题和答案及面试经验总结(答案文末获取及更多架构面试专

weixin_47067712的博客 216

蚂蚁二面拜倒在“数据库”脚下,闭关修炼半个月,我还有机会吗?

=====以上是蚂蚁二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的。

2301_79987255的博客 370

传统行业老程序员,疫情期间强迫自己走出舒适区,最终斩获阿里offer

前言 之前我一直都是在传统行业里工作,项目中一直用的是写了好多年的老项目,一直在维护之前的代码,不会有大改动,加班也很少,一直呆在舒适区里,导致自己很难保持学习的状态,有的时候真的需要逼自己一把,强迫自己从舒适区中跳出来,认真踏实提升自己。 刚开始面试确实挺难,尤其今年,但是即使一直没有收到offer,但是还是需要给自己信心,静下心来,总结失败经验,补足自己的知识短板,相信自己一定可以的。 受到疫情的影响,得到了很多的学习时间,前段时间一直在跟着马老师学习,最后终于拿到了阿里的offer,有的时候不逼自己.

weixin_47067712的博客 220

《Java大厂面试现场:谢飞机栽在了这些技术细节上》

这次面试让我意识到,懂原理比会用API更重要。大厂面试官喜欢深挖底层,考察的是你的系统思维和问题排查能力。希望我的‘翻车’经历能给你带来启发,别像我一样只停留在表面,加油,打工人!💪#Java #面试 #SpringBoot #Redis #MySQL #程序员 #大厂 #后端开发。

m0_62758843的博客 473

互联网大厂Java面试实录:严肃面试官 vs 搞笑水货谢飞机的生死局

本文以趣味对话还原大厂Java面试现场,覆盖JUC、JVM、主流中间件及架构设计核心考点。谢飞机从自信到汗流浃背,文末附逐题硬核解析,助小白轻松拿捏大厂面试题。

weixin_46755643的博客 238

面试多次被拒,‘宅家苦修’61天,我收到了蚂蚁金服P7级的offer(含字节跳动/快手/百度/美团等七家大厂面经)

个人近期面试情况 今年二月以来,我的面试除了一个用友的,基本其他都被毙了,可以说是非常残酷的。其中有很多自己觉得还面的不错的岗位,比如百度、跟谁学、好未来等公司。说实话,打击比较大。 情况基本上是从三月开始好起来的,这个时间点,可能疫情快过去了,国家也开启了接近40万亿的基础建设计划,在这个时间段,面试的几个代表性的公司,包括腾讯、饿了么、宝宝树、旷世科技等等,基本都成了。 最终,就在前段时间,蚂蚁金服给我确认了p7的职位。也算自己到了另一个奋斗的阶段了。对自己的经历,做一个面试总结。 快速领取通道:点这里

weixin_47083537的博客 1149

程序员技术决策操作系统:多数据库协同与跨语言架构设计

现代软件系统已超越单一技术栈的承载能力,数据库与编程语言的选择本质是数据模型、规模边界和运行时契约的综合权衡。理解MySQL的B+树页分裂、Redis的大Key阻塞、Go的Goroutine调度开销、Rust的所有权内存模型等物理层约束,才能避免‘用锤子钉一切’的认知窄带。技术选型不是功能比拼,而是面向高并发、实时分析、边缘计算等真实场景,在磁盘IO、网络吞吐、CPU并发与运维成本之间做理性取舍。本文基于多数据库协同、跨语言架构设计两大热词,揭示从MySQL到ClickHouse、从Java到Rust的演进

diaozhiwa5526的博客 306

Delphi 11中[]字符串索引的本质:UTF-16代码单元与内存直访

字符串索引是编程语言中最基础也最易被误解的操作之一,其底层原理直接关联内存布局、编码规范与运行时性能。在Object Pascal中,[]并非语法糖,而是编译器生成的直接内存偏移访问,单位为UTF-16代码单元而非Unicode字符——这决定了Length()与索引行为的语义鸿沟。理解该机制,是规避索引越界、代理对乱码、写时复制异常等典型问题的关键,也是实现零拷贝字符串处理、高性能日志解析及RAG文档切片等工程场景的技术前提。本文聚焦delphi11与Object Pascal双语境,深入拆解[]操作符在编

weixin_30460489的博客 411
上一篇: 想要面试大厂Java工程师!关于Java继承你都搞懂了吗?
下一篇: 华为面试官:关于Java接口类,有这些问题你必须了解!
Danny_java
博客等级 码龄5年 9粉丝 64原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值