- 博客(18)
- 收藏
- 关注
原创 RabbitMQ重复消费如何解决
消费者处理完消息后手动发送 ACK,避免消息因异常重新入队。:设置消息 TTL,超时未处理则转入死信队列,避免无限重试。利用业务字段(如订单号)的唯一性约束,避免重复插入数据。:为每条消息分配唯一 ID,消费者记录已处理 ID。:在数据库中维护一张去重表,记录已处理的消息 ID。使用 Redis 记录已处理消息的 ID,通过。:确保同一消息多次处理的结果与一次处理相同。:处理前检查 ID 是否已存在。:发送消息时附加唯一 ID。命令实现原子性检查。
2025-03-12 18:58:45
753
原创 Redis 数据结构详解
数据结构特点典型场景String简单键值对缓存、计数器List有序、支持双向操作消息队列、最新列表Hash对象存储用户信息、商品详情Set无序、唯一标签、共同好友ZSet有序、唯一排行榜、延迟任务Bitmap位操作用户活跃统计基数估算UV统计Stream消息队列事件日志、实时数据处理。
2025-03-12 18:34:54
742
原创 MySQL 存储引擎与事务详解
InnoDB 是 MySQL 默认的存储引擎,它支持事务的 ACID(原子性、一致性、隔离性、持久性)特性,提供了行级锁和外键约束,适合处理大量的事务操作,保证数据的完整性和一致性。InnoDB使用聚簇索引来存储数据,数据和索引存储在一起,主键索引的叶子节点存储了完整的数据行,这使得基于主键的查询非常高效。聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。它决定了表中数据在磁盘上的物理存储顺序,即数据行按照聚簇索引键的值进行排序并存储。
2025-03-11 06:13:40
706
原创 MySQL 技术浅析(聚簇索引、UndoLog、RedoLog、MVCC)
InnoDB 中,聚簇索引的叶子节点直接存储,数据按主键值物理排序存储。
2025-03-11 03:36:30
692
原创 MySQL 存储引擎与事务深度解析
特性定义技术实现原子性事务操作要么全成功,要么全回滚Undo Log 记录操作逆过程一致性事务执行后数据必须满足约束(如外键、唯一性)通过原子性、隔离性和持久性共同保障隔离性并发事务相互隔离,避免脏读、不可重复读等问题MVCC(多版本并发控制)+ 锁机制持久性提交后的数据永久保存Redo Log 先写日志后刷盘优先选择 InnoDB:适用于 99% 的 OLTP 场景(事务、高并发、数据安全)MyISAM 适用场景:只读数据表、临时日志表、全表扫描密集型查询。
2025-03-11 02:59:38
834
原创 Java 数组与 List 浅析
数组是固定长度连续内存空间存储相同类型元素的数据结构。特点长度不可变:创建后无法动态扩容。内存连续:支持快速随机访问(时间复杂度O(1)类型固定:所有元素类型必须一致(支持基本类型和对象类型)。List是 Java 集合框架中的接口,代表有序、可重复的元素集合。核心功能按索引访问元素(动态增删元素(add()remove()迭代遍历(iterator()可通过继承实现自定义的 List 结构(如固定长度列表)。数组:简单、高效,适合固定长度和基本类型操作。List。
2025-03-09 01:53:48
915
原创 RESTful风格接口设计规范性建议
前言对于后端开发的程序员来说,开发接口可能是最日常且最普通不为过的事情。但是在开发的过程中其实是有很多因素需要考虑。比如:接口的业务定位、安全性、可扩展性、稳定性、跨域性、协议规则、路有规则、单一原则、接口过滤、接口组合等等多方面因素。职责原则: 在设计接口时,必须首先明确接口的职责,接口需要解决什么类型的业务问题及具体问题是什么。单一性原则: 在明确接口职责的条件下,尽量做到接...
2020-02-24 16:18:46
721
原创 springAOP之调用失效与解决方案
前言在spring 中使用 @Transactional 、 @Cacheable 或 自定义 AOP注解时,会发现个问题:在对象内部的方法中调用该对象的其他使用AOP注解的方法,被调用方法的AOP注解失效。问题描述前些天做一个第三方服务的开关,为了灵活应用,我设计了一个自定义注解,通过注解属性去匹配数据库记录查找配置是否开启。然而调用的时候出了问题。原代码如下:@Transact...
2020-02-22 19:14:45
574
原创 算法笔记no.1之杨氏矩阵查找
如题:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时间小于等于2s 所占内存小于等于64M解题思路:左下角开始与target整数比对 如果大于target 向上走 小于target向右走遍历利用从左到右递增 从上到下递增的特点。从左下角开始 ...
2020-02-22 16:04:29
197
原创 GPS轨迹压缩之Douglas-Peucker算法
前言最近在做的IOT平台涉及到画轨迹线的业务。谈到轨迹线,设备上报上来的数据量巨大,甚至活跃的设备一天上报来的数据都甚至几十万。前端没法对这个数据去处理进行画线取轨迹图像。所以就有了轨迹压缩。轨迹压缩算法轨迹压缩算法分为两大类,分别是无损压缩和有损压缩,无损压缩算法主要包括哈夫曼编码,有损压缩算法又分为批处理方式和在线数据压缩方式,其中批处理方式又包括DP(Douglas-Peucker)算...
2020-02-22 15:54:30
4671
1
原创 maven中的scope与systemPath
scope的分类包括以下 :maven中scope的默认值是compile。compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。test 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junitruntime 表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。...
2020-02-22 15:47:30
3573
原创 关于并发自增计数引发的探索与发现
前言关于并发,一直都有所了解,但并没有真正认真深入的学习过。今天开始探索一下Java并发篇,玩一下多线程。了解了一下关于计数器的多线程下的四种情况。第一种情况编写一个类Counter里面有一个成员变量count,写一段简单的i++的代码完成计数的功能,为了暴露多线程下的问题,让每次自增之前睡100mspublic class Counter { private int count...
2020-02-22 15:25:19
464
原创 基于mongo的地理位置索引
前言最近新入职的公司做的是LBS相关的项目,一般会对一些地理位置及相关数据做操作。一般存储每个地点的经纬度的坐标,组成点坐标或是多边形、矩形、圆形等区域,也可能是球面。会有一些应用场景,比如一辆车越过电子围栏区域触发报警,就比如查询一个点是否在指定区域内。或查询某个坐标点附近的地理位置场所坐标,而Mongodb专门针对这种查询建立了地理空间索引,主要分为2d和2dsphere两种分别是针对平面和...
2020-02-22 15:23:05
324
原创 面试篇之SQL优化
前言 面试的时候经常会问的一个问题就是有没有做过sql优化,每每问到这个问题我的答案都不太理想,今天就总结一下。SQL优化的一些方法写明查询具体某几列,减少*的使用,表名过长时,尽量使用表的别名少用模糊查询like,尽量少用%例如:关键词%yue%,由于yue前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%二者都能使用尽量使用where (与hav...
2020-02-22 15:15:24
192
原创 一家小而美的外企公司面试体验
前言第一篇博客,呵呵,写下最近一次的面试经历吧。3月末,像我这种年轻浮躁的程序员心里的魔鬼被放了出来。跳槽!跳槽!实际上我也有了offer,可能是offer不够吸引我吧,或者说我还有梦想。最近去了一家外企面试,公司规模不大,但是通过看简介以及跟HR沟通,觉得公司是难得遇见的优秀的公司,可能会遇到很nice很open的人。废话多了,接入正题。面试经历优秀的公司HR之前跟我沟通了下午4点...
2020-02-22 15:06:02
1456
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人