自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(859)
  • 资源 (12)
  • 收藏
  • 关注

原创 ############---------写博客的意义---------############

简介 每个人对于博客的用户可能不一样,我这个博客呢主要记录一些我在工作中遇到的一些技术问题,或者是网上查找的一些资料整理。有原创文章,也有转载的,都是记录自己觉得有意义的东西。起因 2014年的一天,开始进行部分EveryNote资料迁移 2011年毕业工作我就在记录自己接触到的知识了,之前我都是将自己的资料和整理的信息记录到EveryNote上,但是...

2014-02-24 10:01:34 2331 1

原创 Java: HashMap 和 ConcurrentHashMap的区别

分段锁(Segmented Locking)是一种用于提高多线程程序性能的锁机制,通过将锁细分来减少竞争,从而在高并发环境中提高性能。分段锁在Java的中有广泛应用。安全性:ConcurrentHashMap 在多线程环境下是安全的,而HashMap 不是。使用场景:如果是单线程环境,使用HashMap 更优;如果是多线程环境,且需要高性能的线程安全Map,则应选择ConcurrentHashMap。。

2025-12-03 21:03:32 724

原创 RocketMQ、Kafka 和 RabbitMQ 等中间件对比

RocketMQ 的 NameServer 高可用单节点 NameServer 存在单点风险,生产环境需部署 3 + 节点,Producer/Consumer 配置多个 NameServer 地址(用分号分隔)Kafka 的分区数量陷阱分区数并非越多越好,每个分区都会占用内存和文件句柄,建议单个 Broker 的分区总数不超过 2000RabbitMQ 的内存控制默认配置下,内存使用达到 40% 会阻塞生产者,需通过vm_memory_high_watermark参数调整阈值RocketMQ 凭借。

2025-12-03 20:47:39 1198

原创 延迟双删介绍

具体来说,在某些场景下,我们需要先更新或删除数据库中的数据,然后再更新或删除缓存中的数据,以保证数据的一致性。但在某些情况下,由于网络延迟、服务器故障或其他原因,可能导致缓存中的数据更新或删除失败,从而导致数据库和缓存中的数据不一致。这种策略通常用于解决数据在缓存和数据库中不一致的问题。值得注意的是,不管哪种方案,都避免不了Redis存在脏数据的问题,只能减轻这个问题,要想彻底解决,得要用到同步锁和对应的业务逻辑层面解决。如果缓存和数据库负载很高,主从同步很慢,很有可能不能在延时的时间内实现同步。

2025-10-28 21:13:20 420

原创 防止重复提交订单

在电商平台中,用户提交订单是一个非常敏感的动作。库存扣减优惠券核销支付下单消息发送点两次“提交订单”按钮网络卡顿时刷新页面使用浏览器回退再次提交重复提交订单,造成资源浪费,甚至业务损失!请求唯一性接口幂等性服务端锁机制。

2025-10-28 21:06:45 725

原创 注册中心 eureka、nacos、consul、zookeeper、redis对比

服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。

2025-10-28 20:56:58 747

原创 分库分表详解,以及ShardingJDBC介绍

传统应用项目设计通常都是采用单一数据库作为存储方案,但是随着互联网的迅猛发展以及应用数据量的增长,数据库会随着数据量的增长而渐渐成为整个应用框架的性能瓶颈。首先是由于关系学数据库大多是采用B+Tree类型的索引,当数据量超过一定的阈值之后,会导致索引的深度增长,而索引的深度又直接影响了磁盘IO操作的次数,直接影响了数据库查询性能的优劣。

2025-10-28 20:46:43 739

转载 分库分表实践

原大众点评的订单单表早就已经突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想的情况。去年大量抢购活动的开展,使数据库达到瓶颈,应用只能通过限速、异步队列等对其进行保护;业务需求层出不穷,原有的订单模型很难满足业务需求,但是基于原订单表的DDL又非常吃力,无法达到业务要求。随着这些问题越来越突出,订单数据库的切分就愈发急迫了。这次切分,我们的目标是未来十年内不需要担心订单容量的问题。先对订单库进行垂直切分,将原有的订单库分为基础订单库、订单流程库等,本文就不展开讲了。

2025-10-28 20:28:33 34

原创 JDK各个版本详解

来,直接传送门:

2025-10-20 21:08:16 168

转载 Springboot6种解决循环依赖方案

本文梳理了解决循环依赖的几种方法。大体分三类:配置解决,延后注入使用和解耦调用关系。如果出现了循环依赖,大体是设计有点问题,是软件开发中的坏味道,如果暂时无法从架构层面解决,那可以根据场景选择适合的方案。

2025-10-20 21:06:54 126

转载 主流的大数据技术栈

↓(业务转换,数据合并,数据清洗(统一枚举值,填充null值,清晰非法值等)保证数据质量)数据集市DM 【维度建模】(基于多张宽表形成某主题的报表数据) → BI/APP/API。存储层(HDFS / HBase / Iceberg / Hive)查询层(StarRocks / Doris / Presto)分析层(Superset / Tableau / 自研看板)采集层(Kafka / Flume / DataX)计算层(Flink / Spark / Trino)↓(格式/接口定制)

2025-10-20 20:57:49 384

原创 ShardingJDBC分库分表

最近看到这方面的文章,觉得很不错,这里分享一下。

2025-10-20 20:47:53 93

转载 常见的索引原则

索引字段顺序 = 查询条件顺序,从过滤强到弱;性别 / 状态这种字段别建索引,浪费空间;别对索引字段做函数 / 运算,like 别用 % 开头;查什么就索引什么,省掉回表时间;索引不是越多越好,定期清理没用的;自增 ID 最省心,UUID 慎用作主键。其实索引原则就像 “交通规则”—— 不懂规则乱建索引,就像开车闯红灯,早晚出事故;懂规则并灵活运用,才能让数据库 “跑” 得又快又稳。最后送大家一个习惯:写复杂查询前先用explain看看执行计划,重点看typerefrange是好的,ALL。

2025-09-11 21:28:04 156

原创 后端技术深度

后端的领域深度是看不见的,后端背后往往涉及:所以任重而道远。

2025-09-11 21:15:22 212

原创 如何快速判断几十亿个数中是否存在某个数?

这篇文章不错,分享给大家。

2025-09-10 21:29:57 357

原创 双token

顾名思义,本机制下所使用的令牌分为长短两种:长令牌即过期时间较长的,专门用于token的续签,同时刷新两种token;短令牌即过期时间较短的access_token,进行常规业务请求时使用。登陆用户登录成功后,同时获得长短两种令牌,之后长令牌存在客户端暂不使用,仅使用短令牌用于常规业务请求。服务端在接收到每个携带短令牌的业务请求时,按照JWT的规则进行用户的身份验证,并从payload中获取用户身份信息,此即“三验证”中的第一种验证。

2025-09-10 21:28:24 678

原创 分布式存储:RustFS与MinIO全面对比

当全球开发者因MinIO社区版突然移除Web管理界面而措手不及,当AGPL许可证的“传染性”风险让企业用户如履薄冰,一个来自中国的开源力量正以颠覆性姿态破局——RustFS。这款基于Rust语言的高性能分布式存储系统,仅用一年时间便在GitHub狂揽1.5k星,成为炙手可热的MinIO替代方案。本文将深度解析其技术架构、性能表现与落地实践,揭示它如何重构存储范式。RustFS与MinIO代表了分布式对象存储的两种技术路线:前者以Rust语言为基石,聚焦高性能、轻量级和国产化;后者以成熟生态和企业级功能见长。

2025-09-10 20:48:20 1413

原创 接口幂等设计

来,这篇文章不错,推荐给大家。

2025-09-02 21:31:15 177

原创 Valkey vs Redis详解

Redis 作为最受欢迎的内存型 NoSQL 键值存储系统之一,一直都很受广大用户的推崇。然而,由于Redis 调整了许可政策,这一举措在开源社区引起了广泛争议。2024 年 3 月 20 日,Redis Labs 宣布从 Redis 7.4 开始,将源码使用协议修改为RSAv2和SSPLv1协议。该变化意味着 Redis 在 OSI(开放源代码促进会)定义下不再是严格的开源产品。包括亚马逊云科技在内的40多家公司持续投入在Valkey项目上。

2025-09-02 21:26:57 1492

原创 Spring Boot 与 Spring AI 深度实战(基于DeepSeek)

文章指出,随着业务复杂度提升,传统单体架构在扩展性和维护性上的不足日益凸显。作者通过实践案例,分享了如何从单体架构平滑迁移至微服务架构的经验,重点介绍了服务拆分、数据一致性保障和渐进式迁移策略等关键环节。迁移过程中需注意服务治理、监控体系建设和团队协作方式的调整,最终实现系统的高可用和快速迭代能力。该案例为企业级架构演进提供了可参考的实施路径。

2025-09-02 21:15:45 189

原创 Github Copilot 快捷键,以及快捷键修改

虽然github copilot足够智能,绝大部分时候都能补全想输入的内容(尤其注释或者文档,有奇效),但依然有很多时候是会选择IDEA自带的补全。,在IDEA的设置中修改keymap,删除原有的TAB快捷键,我是选择增加了```这个按键作为github copilot的补全键。但每次习惯性按下TAB键的时候,IDEA默认都会自动采用github copilot的补全代码。开始支持IDEA后,就开始使用,但这个插件和IDEA默认的自动补全快捷键都是用的TAB键。接受内联建议:使用 Tab 键。

2025-09-02 21:14:38 696

原创 MySQL 回表详解

在MySQL数据库中,回表(Look Up)指的是在进行索引查询时,首先通过索引定位到对应页,然后再根据行的物理地址找到所需的数据行。换句话说,回表是指根据索引查询到的主键值再去访问主键索引,从而获取完整的数据记录。在实际应用中,我们可以根据具体的场景来决定是否使用回表操作。需要返回更全面的数据:有些查询场景下,返回的字段可能不仅仅是索引所包含的列,此时回表可以提供更全面的数据信息。使用非聚簇索引:当表中没有定义主键或者查询条件没有使用主键时,非聚簇索引成为主要的索引选择,但回表操作则难以避免。

2025-09-02 21:11:54 712

转载 Netty 底层零拷贝

Netty 的零拷贝技术是通过优化数据传输过程中的数据复制操作,以降低系统的开销和提高性能。通过以上方式,Netty 实现了数据传输过程中的零拷贝,大大提高了系统的性能和吞吐量,特别是在高并发、大数据量的网络应用场景下,可以显著地降低系统的资源消耗和延迟。

2025-08-28 21:43:58 103

原创 Spring Boot对访问密钥加解密——HMAC-SHA256

HMAC-SHA256 是一种基于 哈希函数 的消息认证码(Message Authentication Code, MAC),它结合了哈希算法(如 SHA-256)和一个密钥,用于验证消息的完整性和真实性。HMAC 是 “Hash-based Message Authentication Code” 的缩写,它广泛应用于网络通信中,用于保证消息在传输过程中未被篡改,同时也可以校验消息是否来自可信方。

2025-08-28 21:39:13 1572

原创 主流配置中心对比

在单体应用中,配置管理可能不是什么大的事情,通常会以配置文件的方式。常见的方法比如将配置通过打包脚本打入应用包中,或者直接放到运行应用的服务器的特定目录下,或者存储到数据库中。配置变化频繁时,需要频繁的打包部署应用。不同环境的配置需要分开管理(比如测试环境与生产环境)。而在分布式微服务架构中,服务数量剧增,如果还是手动去实现配置信息的修改或数据的迁移等,效率是很低的,而且手动操作配置也极有可能出现错误的情况。

2025-08-27 21:51:28 1054

转载 Sprintboot 添加banner

在日常开发中,我们经常会看到各种各样的启动画面。例如以下几种①spring项目启动画面②启动画面③若依项目启动画面还有很多各式各样好看的启动画面,那么怎么定制这些启动画面呢?

2025-08-13 14:06:56 158

原创 restTemplate禁用url编码

在将queryUrl传入RestTemplate之前,将其封装为一个URL对象,避免了queryUrl被RestTemplate进行2次UrlDecode。param={"name":"张三","age":22}我们想要的结果并不想restTemplate调用的时候二次编码,而是使用我们的url。param={"name":"张三","age":22}在restTemplate调用方法的时候默认对url做了编码处理。这时使用restTemplate调用接口,会对url再次编码成。接口放接收到路径解码后。

2025-08-07 13:39:19 462

原创 SpringBoot设置跨域的几种方式

来源是URL的结构是这样的,在这个URL的组成部分中,Origin是指协议、主机和端口号的组合,例如:80、443。CORS 的出现是因为来源不同。也就是说,必须遵守 SOP。-> 这意味着该政策只允许相同的来源。过去,出于安全考虑,严格只允许来自同一来源的通信,但最近,从不同来源获取和使用资源变得非常普遍,因此创建了作为 SOP 例外的 CORS 策略。当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域首先编写一个过滤器,可以起名字为MyCorsFilter.java。

2025-08-06 15:12:20 844

原创 Spring Boot 3.5.x 使用 SpringDoc 2 / Swagger3

Springfox 是一套可以帮助 Java 开发者自动生成 API 文档的工具,它是基于 Swagger 2.x 基础上开发的。除了集成 Swagger 2.x,Springfox 还提供了一些额外功能,例如自定义 Swagger 文档、API 版本控制、请求验证等等。但是随着时间的推移,Swagger2.x 终究成为历史,所以我们可以看出 springfox-boot-starter 的坐标从 3.0.0 版本(2020 年 7 月 14 日)开始就一直没有更新;

2025-07-29 16:36:46 2212 1

原创 Springboot集成knife4j

针对以上两种情况,Knife4j基于Servlet体系提供了过滤Filter功能,如果开发者使用Spring Boot开发框架进行开发的话,只需在。配置文件中配置相关属性即可方便的解决上面的问题,不用删除Springfox-swagger的jar包或者删除相关代码等复杂的操作,提升开发体验.功能时,同很多开发者经常讨论的问题就是在生产环境时,屏蔽或者去除Swagger的文档很麻烦。注解来使用增强功能,自2.0.6版本后,只需要在配置文件中配置。在以前的版本中,开发者需要在配置类中手动使用。

2025-07-18 13:55:46 1728

转载 Navicat切换到DBeaver,如何同步连接信息

公司不让用Navicat了怎么办?可以选择DBeaver来替换,怎么才能将Navicat中的DB连接信息导入到DBeaver呢?此时导入的连接不能用,因为密码是经过Navicat加密的,在DBeaver中不能使用,需要重新更新密码。但是该密码为密文,怎么获取到它对应的明文呢?用文本编辑器打开文件connections.ncx,查看密码。最终会得到一个connections.ncx文件。在Navicat中导出DB连接信息。在DBeaver中导入连接。连接成功,正常使用即可。

2025-07-18 08:33:27 712

原创 ngx_slab_alloc() failed: no memory in upstream zone

最近使用upstream的 resolve和zone配置,遇到这个问题,网上查了查,这里记录一下。

2025-06-03 15:10:12 288

转载 mysql 使用order by String 的巨坑 注意事项

mysql 使用order by String 的巨坑 注意事项。

2025-05-21 18:09:35 209

原创 【容易坑】mybatis中使用if标签比较两个字符串是否相等

继续往下面想,这个if语句的执行顺序,应该是在执行SQL查询之前,那可以推断的是,Mybatis在执行SQL时,首先是先将所有的标签转化组装为SQL,然后在执行SQL语句。activityType就是在这个if判断语句中,被赋值为2的,即使在Mybatis的初始绑定值为3,那这么说的话,activityType不为null时,它的值会一直为2。这是一个简单的条件判断,并决定排序字段的语句,但是中间却使用了等号作为判断条件,显然这儿是不成立的,大抵已经找到原因了。注意:使用如下方式是错的。

2025-05-21 17:50:42 1902

原创 MyBatis if choose 动态 SQL

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。

2025-03-27 17:00:48 1163

原创 nginx之gzip_static详解

Nginx支持静态和动态两种包体gzip压缩方式,分别对应模块ngx_http_gzip_static,ngx_http_gzip。我们知道gzip是CPU密集型的应用,实时动态压缩比较消耗CPU资源。另外,如果使用gzip,则sendfile零拷贝技术无法使用。为进一步提高Nginx的性能,我们可以使用静态gzip压缩,提前将需要压缩的文件压缩好,当客服请求到达时,直接发送压缩好的.gz文件,如此就减轻了服务器CPU的压力,提高了性能。

2025-03-21 14:41:42 659

转载 IT在35岁做到财务独立

十二年以后的2021年,他已经是亚马逊的高级工程师,年薪62.5万美元(含股票),年支出7.8万美元,净资产达到了240万美元(含股票)。最早的时候,他的履历没有特别的亮点,他就去一个名校,读了一年制硕士(欧美硕士一般都是一年)。有了积蓄以后,不要让钱在银行闲置,要学会投资。不过,IT 行业跟律师和金融业不一样,就算没有名校经历,只要自身水平过硬,也能求职成功,只是开始时的机会可能会少一些。不过,换公司是双刃剑,为了获得更高的薪酬,就需要在面试和工作中给别人留下深刻印象,后面的公司对你的要求也会越来越高。

2025-03-21 10:10:08 206

原创 搭建自己的OCR服务

网上看到这篇文章,这里转载记录一下,仅供学习。

2025-03-17 16:00:27 1275

原创 Nexus

Nexus 的全称是 Nexus Repository Manager(Nexus 仓库管理器),是 Sonatype 公司的一个产品。Nexus 是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。Nexus 分为开源版和专业版,其中开源版足以满足大部分 Maven 用户的需求。

2025-03-10 14:25:36 810

原创 Ollama 简介

用户不仅可以使用 Ollama 提供的预训练模型,还可以在此基础上进行模型微调。根据自己的特定需求,开发者可以使用自己收集的数据对模型进行再训练,从而优化模型的性能和准确度。

2025-03-06 16:56:01 1542

中文编码规范详细介绍

该文档详细介绍了GB2312、Unicode、UTF-8、UTF-16等编码,对初步想编码的程序呀很有帮助。

2010-04-25

Linux 用 C实现的邮件发送程序

改程序用c语言在linux环境下编写,成功发送邮件。

2010-04-25

Linux服务器架设指南——第1章

主要讲解网络硬件知识,是《Linux服务器架设指南》书的第一章

2010-05-24

中文分词算法介绍、分类详解

该文档详细介绍了中文分词的原理及相应的技术。文档讲解了最大匹配法(Forward Maximum Matching method, FMM法)、正向最大匹配法(由左到右的方向)、逆向最大匹配法(由右到左的方向)、最少切分(使每一句中切出的词数最小)。

2010-04-25

spider网络爬虫源代码

这是一个spider网络爬虫源代码,用c++完成的,主要是为搜索引擎研究者提供很好的材料,为初学者提供代码。大家可以互相学习学习。

2009-01-15

C 语言编写一个网络蜘蛛(网络爬虫)

该文档详细介绍了网络蜘蛛(网络爬虫),并附带c语言开发的爬虫代码,对爬虫初学者很有用。

2010-04-25

linux 定时发送邮件 应用sendmail技术

由于自己记性太差,很难记住朋友的生日,所以突发奇想,写了个简单的shell程序,主要目的就是为了能在固定的节日(如:圣诞、元旦等,可以指定)和朋友生日的时候自动给朋友发送祝福信件,同时密送给自己,程序虽然简单,达到了自己需要的效果。 特地共享出来和大家一起分享,修改mail_check.sh程序的变量,最好每天8点执行,显得比较真实,其它的配置文件在conf目录下。

2010-04-25

Linux 下sendmail邮件系统的详细配置

该文件说明了Linux下sendmail邮件系统的详细配置,为Linux初学者来说,提供了简洁的sendmail配置教程

2010-04-25

Cluence搜索引擎源码

这个是c版的luence。了解搜索引擎的人都知道luence是一个很好开源搜索引擎,他开始主要是java版的,但现在为大家提供一个c版的luence ,希望对大家有用,大家互相学习学习。

2009-01-15

中文编码基础知识介绍

该书详细介绍了GB2312、GBK、BIG5、GB18030、UTF_8字符集等编码,为编码初学者提供了详细信息。

2010-04-25

c+c++程序员面试宝典.CHM

该书详细介绍了程序员面试时所需注意的事项,供大家参考学习。

2010-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除