- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 20241124
最近发现部分业务代码时不时报出NPE(NULL Pointer Exception)告警,排查发现都是存入新数据后立马进行查询操作,尽管数据存储成功,但查询结果却为null,导致针对查询结果的后续操作出现npe。以上方案二是一种比较推荐的方式,但它也可能出现每次请求都走主库。因此需要对具体场景进行具体分析,尤其是高并发场景,进而选择正确的方案。这样虽然避免了主从延迟,但相当于废弃了从库的使用,在高并发场景下是不推荐这种做法的。可以先查从库,如果没有查询到结果,则再去查主库。
2024-11-24 20:24:55
206
原创 用单调栈接雨水
如果 height[i]>height[top],则得到一个可以接雨水的区域,该区域的宽度是 i−left−1,高度是 min(height[left],height[i])−height[top],根据宽度和高度即可计算得到该区域能接的雨水量。单调栈告诉你:栈顶元素x出栈后,此时的栈顶元素y是x元素左边第一个比它大的元素,此时要进栈的元素z是x元素右边第一个比它大的元素。遍历结束之后即可得到能接的雨水总量。:如果栈非空,且当前数组元素大于等于栈顶元素,则将栈顶元素出栈,直到当前数组元素满足入栈条件为止。
2024-11-05 00:15:27
274
原创 MySQL进阶:MySQL管理
mysqladmin是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。mysqldump用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表及插入表的SQL语句。客户端查找工具,很快查找存在哪些数据库、数据库中的表、表中的列或者索引。数据导入工具,用来导入mysqldump加-T参数后导出的文本文件。-e 登陆后执行的SQL语句,执行完退出。-h 指定服务器ip地址或域名。二进制日志管理工具。
2023-06-19 14:52:45
104
原创 MySQL进阶:InnoDB引擎
对应ibd文件,用于存储记录、索引等数据。分为数据段(leaf node segment)、索引段(non-leaf node segment)、回滚段(rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点,索引段即为B+树的非叶子节点。段用来管理多个区(Extent)。表空间的单元结构,每个区大小为1M。默认情况下,InnoDB引擎页大小为16K,即一个区中共有64个连续的页。是InnoDB引擎磁盘管理的最小单元,每个页的大小默认为16KB。
2023-06-19 14:52:12
132
原创 MySQL进阶:锁
全局锁是对整个数据库实例上锁,被上锁的数据库实例中所有表都成为只读状态。全局锁常用在数据库备份场景下,让所有表处于只读状态进行备份,从而维护数据一致性。存在问题:是一个比较重的操作读写分离?InnoDB引擎中,我们可以在备份时加上参数–single-transaction参数来完成不加锁的一致性数据备份。
2023-06-18 00:30:12
93
原创 MySQL进阶:SQL优化
插入多条数据,可以采用批量操作(不建议超过1000条, 500到1000是比较合适的)。超过的话,分成多条批量插入语句。手动提交事物, MySQL默认自动提交事物,会频繁开启事物并提交。主键顺序插入。顺序插入的性能高于乱序插入。(主键优化)大批量插入数据,不建议使用insert了,可以采用MySQL提供的load指令。load: 本地文件---->数据库load指令插入100万条数据16s,而用insert十多分钟。
2023-06-17 17:21:01
111
原创 MySQL进阶:索引
帮助数据库快速查询数据的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JPgKp1Wt-1686921684599)(image-1.png)]
2023-06-16 21:22:01
59
原创 MySQL进阶:存储引擎
存储引擎决定存储数据、建立索引、查询/更新数据的机制,它是基于表的,而不是基于库,因此又称为表类型。create table([ . . . ]) ENGINE = INNODB [ 默认采用 INNODB ] show engines;查询当前数据库支持哪些存储引擎EngineSupportCommentXASavepointsYESNONONOCSVYESNONONOMRG_MYISAMYESNONONOBLACKHOLEYESNONONOMyISAM。
2023-06-16 21:20:43
74
原创 C++学习:线程安全的对象
竞态条件:C++的对象生命周期由程序员管理,当一个对象被多个线程同时看到时,对象被谁销毁,何时销毁不清楚。解决方法:shared_ptr.线程安全的类:1.多个线程同时访问时,其表现出正确的行为2.无论操作系统如何调度这些线程,无论这些线程执行顺序如何交织。3.调用端代码无须额外的同步和其他协调动作。C++标准库里的大多数类都不是线程安全的,包括string、vector、map等,多线程使用时要加锁。mutable修饰的成员变量,可以被常成员函数修改。
2023-06-15 15:05:36
325
原创 C++学习: 绑定器
find_if() 需要一元函数对象,而greater/less都是二元函数对象,因此需要将二元函数对象中的一个参数通过绑定器bind1st/bind2nd绑定到一个固定值。:C++11从boost引进的机制。:二元函数对象 ====》一元函数对象:绑定器底层是通过函数对象实现的。
2023-06-15 13:49:49
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人