51CTO首页
AI.x社区
博客
学堂
精品班
软考社区
免费课
企业培训
鸿蒙开发者社区
信创认证
公众号矩阵
移动端
视频课
免费课
排行榜
短视频
直播课
软考学堂
全部课程
软考
信创认证
华为认证
厂商认证
IT技术
PMP项目管理
免费题库
在线学习
文章
资源
问答
课堂
专栏
直播
51CTO
鸿蒙开发者社区
51CTO技术栈
51CTO官微
51CTO学堂
51CTO博客
CTO训练营
鸿蒙开发者社区订阅号
51CTO软考
51CTO学堂APP
51CTO学堂企业版APP
鸿蒙开发者社区视频号
51CTO软考题库
鸿蒙开发者社区
首页
帖子
问答
资源
课堂
直播
发现
登录/注册
51CTO
中国优质的IT技术网站
51CTO博客
专业IT技术创作平台
51CTO学堂
IT职业在线教育平台
活动
短视频
专栏
极客Show
鸿蒙技术特刊
我的关注
全部帖子
操作系统
OpenHarmony
HarmonyOS
其他
应用开发
卡片开发
三方库
IDE
其他
设备开发
海思开发板
树莓派
其他
框架语言
C/C++
Java
JavaScript
ArkUI / eTS
其他
其他
物联网
云原生
数据库
操作系统
大数据
人工智能
开发语言
其他
社区版务
社区公告
社区生活
社区规则
意见反馈
社区活动
默认
发布时间
热度
原创
精华
热门标签
HarmonyOS
鸿蒙
开源
10分钟教你写一个数据库
今天教大家借助一款框架快速实现一个数据库,这个框架就是Calcite,下面会带大家通过两个例子快速教会大家怎么实现,一个是可以通过SQL语句的方式可以直接查询文件内容,第二个是模拟Mysql查询功能,以及最后告诉大家怎么实现SQL查询Kafka数据。CalciteCalcite是一个用于优化异构数据源的查询处理的可插拔基础框架(他是一个框架),可以将任意数据(Anydata,Anywhere)DML转换成基于SQL的DML引擎,并且我们可...
荔枝岛岛主
0回复
4317浏览
java
mysql
给ShardingSphere提了个PR,不知道是不是嫌弃我?
说来惭愧,干了10来年程序员,还没有给开源做过任何贡献,以前只知道嘎嘎写,出了问题嘎嘎改,从来没想过提个PR去修复他,最近碰到个问题,发现挺简单的,就随手提了个PR过去。问题问题挺简单的,就是在使用mybatis和ShardingSphere的时候,有人在model类使用了OffsetDateTime这个时间类型,发现会报错。Causedby:java.lang.ClassCastException:classjava.sql.Timestampcannotbecasttoclassjava.time.OffsetDateTime(ja...
荔枝岛岛主
0回复
3257浏览
java
ShardingSphere
SpringBoot3正式版将于11月24日发布:都有哪些新特性?
从2018年2月28号发布SpringBoot2.0版本开始,整个2.X版本已经经过了4年多的时间,累计发布了95个不同的版本,而就在前不久,2.X系列的也已经迎来了他的最终版本:2.7。前几天我还写了一篇关于SpringBoot从2.1版本升级到2.7的文章,而现在,SpringBoot3.0也要来了!时间就定在本月的24号,SpringBoot将要发布3.0的最终RELEASE版本。截止到现在为止,SpringBoot3已经发布了6个版本,累计5个里程碑版本,2个RC候选版,现在就跟着我...
荔枝岛岛主
0回复
3132浏览
SpringBoot3
撸完Dubbo3源码,我总结了这些阅读源码的技巧
大家好,我是冰河最近收到很多小伙伴的微信私聊消息,大部分都是在询问如何快速掌握一个框架的原理和源码,比如:Spring、Dubbo、MyBatis等。针对这个问题,周末我简单总结了下,今天,就为小伙伴们分享下我是如何利用不到一个月的业余时间(每天不到2小时)快速掌握Dubbo的原理和源码的。阅读源码的前提阅读某一项技术框架,或者说开源项目的源码前,你必须了解这个框架是干啥用的,说白了,就是你至少了解这个框架该怎么用,...
pivoteic
0回复
3248浏览
开发语言
微服务16:微服务治理之熔断、限流
1介绍在互联网电商场景中,我们经常会遇到有计划的流量洪峰,比如双11、618购物节,积分竞拍和定时抢购的疯狂场景。这种是在预期内的,知道会发生并有一定的准备。而那些预期之外的突发流量异常,才是真正给我们带来挑战的部分,比如:硬件故障:如服务器宕机,机房断电,光纤被挖断等。缓存击穿:一般发生在应用重启导致的缓存失效,以及短时间内大量缓存过期失效时。大量的无法命中,使请求直击后端服务,造成服务提供者超负...
Bald_eagle
0回复
4056浏览
熔断、限流
MQ系列14:MQ如何做到消息延时处理
1背景在互联网业务的实际应用场景中,消息的延时处理是非常必要的。例如,在金融交易系统中,某些交易的确认可能需要一段时间才能完成。又如,在物流跟踪系统中,货物的运输状态需要一段时间才能更新。而MQ作为中间件的角色专门来处理消息媒介,实际也具备了使用消息的延时处理来保证信息的及时性的能力。这边举两个具体的例子:火车票订购,提交了订单就把车票给占位了,这时候可以发送一个延时确认的消息,15m未付款,就要把...
Bald_eagle
0回复
4456浏览
MQ
Redis系列20:LFU内存淘汰算法分析
1介绍上一期我们介绍了Redis系列19:LRU淘汰内存淘汰算法分析,大致了解了LRU(LeastRencentlyUsed)的算法原理,即将最近最久未使用的算法进行数据淘汰。但是这样的算法也有一些比较明显缺陷:稳定性和性能问题:LRU算法认为最近最少使用的数据是最该被淘汰的,但是这可能导致某些数据被频繁地淘汰和加载,因为它们可能只在某个时间段内被使用一次,而在其他时间段内则不会被使用。这会使得缓存的效率降低,增加了CPU...
Bald_eagle
0回复
3491浏览
LFU内存
Redis系列22:Redis 的Pub/Sub能力
1关于Redis的PubSubRedis的发布订阅(PubSub)模式是一种消息传递机制,它允许在发送者和接收者之间建立松耦合的通信关系。在这种模式中,发送者(发布者)将消息发布到一个指定的频道或模式,而接收者(订阅者)可以订阅一个或多个频道,以便接收发布的消息。以下是Redis发布订阅模式的主要组件:发布者(Publisher):发布者是产生并发布消息的实体。它可以将消息发送到指定的频道或模式。订阅者(Subscriber):订阅者是接收...
Bald_eagle
0回复
3663浏览
Pub/Sub
Redis系列21:缓存与数据库的数据一致性讨论
1介绍1.1数据一致性的概念缓存与数据库的数据一致性指的是,缓存中存储的数据与数据库中存储的数据需保持一致。即缓存中存有数据,缓存的数据值数据库中的值;缓存中没有该数据,数据库中的值最新值。数据一致性主要包含以下两种情况:缓存中有数据,那么缓存中的值需要和数据库中值相同。缓存中本身没有数据,那么,数据库中的值必须是最新值。如果存在以下情况,则说明存在不一致性情况:缓存中有数据,但是缓存中的数据与数...
Bald_eagle
0回复
4023浏览
缓存与数据库
微服务15:微服务治理之超时
1介绍在复杂的互联网场景中,不可避免的会因为一些内在或者外在的因素,导致出现请求超时的情况。而典型的业务超时场景主要有如下:网络延迟或者抖动或者丢包,从而导致响应时间变长。容器甚至云主机资源瓶颈情况:如CPU使用率过高、内存使用是否正常、磁盘IO压力情况、网络时延情况等资源使用情况异常,也可能导致响应时间变长。负载均衡性问题:多实例下分配的流量不均衡,目前看云基础场景,这个情况不多见。突发洪峰请求:...
Bald_eagle
0回复
4715浏览
微服务治理
Redis系列18:过期数据的删除策略
1介绍通过前面的章节,我们知道,Redis是一个kv型数据库,我们所有的数据都是存放在内存中的,但是内存是有大小限制的,不可能无限制的增量。想要把不需要的数据清理掉,一种办法是直接删除,这个咱们前面章节有详细说过;另外一种就是设置过期时间,缓存过期后,由Redis系统自行删除。这边需要注意的是,缓存过期之后,并不是马上删除的,那Redis是怎么删除过期数据的呢?主要通过两个方式惰性删除通过定时任务,定期选取部分...
Bald_eagle
0回复
2484浏览
过期数据
微服务14:微服务治理之重试
1背景在复杂的互联网场景中,不可避免的会出现请求失败的情况。从程序的的响应结果来看,一般是Response返回5xx状态的错误;从用户的角度去看,一般是请求结果不符合预期,即操作失败(如转账失败、下单失败、信息获取不到等)。偶发的不可避免的5xx请求错误,产生的原因有很多种,比如:网络延迟或者抖动服务器资源不足(CPU、内存走高、连接池满)服务器故障符合某些特定条件下的服务程序bug(大都非必现)2系统稳定性等级划...
Bald_eagle
0回复
3821浏览
微服务
Redis系列19:LRU内存淘汰算法分析
1介绍上一期我们介绍了Redis系列18:过期数据的删除策略,但是无论是惰性删除还是定期删除,都可能存在删除不尽的情况,无法删除完全,比如每次删除完过期的key还是超过25%,且这些key再也不会被客户端访问。这样的话,定期删除和堕性删除可能都彻底的清理掉。如果这种情况长时间持续下去,可能会导致内存耗尽,所以Redis必须有一个完善的内存淘汰机制来保障。这就是我们这一篇的重点,Redis内存自动淘汰机制。2Redis...
Bald_eagle
0回复
3837浏览
LRU
微服务13:云基础场景下流量策略实现原理
1微服务的基本流量策略微服务提供了一些技术来实现对微服务的流量的管理,其中最典型的就是对流量进行拆分和转发。具体体现在金丝雀发布(灰度发布)、ABTesting以及流量染色等策略方案上。2流量策略实现流控的本质云原生基础场景下,如果想要实现流控和调度,需要具备以下几个条件:请求的流量中,需要附带某些特征,如流量的请求的Header、Cookies、queryParams等中带有某些信息。部署在kubernetes上的服务(svc)的实例(pod...
Bald_eagle
0回复
3778浏览
云基础
MQ系列12:如何保证消息顺序性
1介绍消息的有序性在很多业务场景中占有很重要的位置。比如购物场景,需要按照创建订单>订单付款>完成订单顺序执行。又比如出行场景,接单>接送到达目的地>付款>完成订单。这种是严格按照顺序执行的,这样的顺序消费才不会出问题,而且各个订单之间是互相独立和并行执行的。所以,在MQ中,如何稳定地保证顺序性消息处理,是一个不可避免的话题。2消息的有序性说明消息的有序执行,一般不是单个组件的能力。而是整个消息从生产,...
Bald_eagle
0回复
4031浏览
顺序性
Redis系列15:使用Stream实现消息队列(精讲版)
1介绍我们上一篇介绍了如何使用List实现消息队列么,但是我们也看到很多局限性,如下:不支持消息确认机制,没有很好的ACK应答不支持消息回溯,无法排查问题和做消息分析List遵循FIFO机制,所以存在消息堆积的风险。查询效率低,作为线性结构,List中定位一个数据需要进行遍历,O(N)的时间复杂度。不存在消费组(ConsumerGroup)的概念,无法进行分组消费和批量消费Redis中有三种消息队列模式:名称简要说明List不支持消息确认...
Bald_eagle
0回复
4913浏览
Redis系列
Redis系列14:使用List实现消息队列
1介绍在分布式系统中,很重要的一个能力就是消息中间件。我们通过消息队列实现功能解耦、消息有序性、消息路由、异步处理、流量削峰等能力。目前主流的Mq主要有RabbitMQ、RocketMQ、kafka,可以参考这篇《MQ系列2:消息中间件技术选型》。那除了这些主流MQ之外,咱们的这一节要说的Redis也具备实现消息队列的能力。我们来看看消息队列主要要实现哪些能力,原理是什么,以及如何在Redission中应用。2关于消息队列2.1...
Bald_eagle
0回复
3426浏览
Redis
Redis系列17:聊聊布隆过滤器(实践篇)
1介绍布隆过滤器(BloomFilter)是Redis4.0版本提供的新功能,我们一般将它当做插件加载到Redis服务器中,给Redis提供强大的去重功能。它是一种概率性数据结构,可用于判断一个元素是否存在于一个集合中。相比较之Set集合的去重功能,布隆过滤器空间上能节省90%+,不足之处是去重率大约在99%左右,那就是有1%左右的误判率,这种误差是由布隆过滤器的自身结构决定的。优点:空间效率和查询时间都比一般的算法要好的多缺点:有一...
Bald_eagle
0回复
4094浏览
过滤器
Redis系列16:聊聊布隆过滤器(原理篇)
1BloomFilter介绍布隆过滤器(BloomFilter)是Redis4.0版本提供的新功能,我们一般将它当做插件加载到Redis服务器中,给Redis提供强大的去重功能。它是一种概率性数据结构,可用于判断一个元素是否存在于一个集合中。相比较之Set集合的去重功能,布隆过滤器空间上能节省90%+,不足之处是去重率大约在99%左右,那就是有1%左右的误判率,这种误差是由布隆过滤器的自身结构决定的。优点:空间效率和查询时间都比一般的算法要好的多...
Bald_eagle
0回复
3534浏览
Redis
我也是醉了,Eureka 延迟注册还有这个坑!
Eureka有个延迟注册的功能,也就是在服务启动成功之后不立刻注册到EurekaServer,而是延迟一段时间再去注册,这样做的主要目的是因为虽然服务启动成功了,可能还有一些框架或者业务的代码没有初始化完成,可能会导致调用的报错,所以需要延迟注册。但是发现,然并卵啊,好像这个延迟注册并没有生效,也是开始了排查之路。延迟注册首先,延迟注册的功能主要依赖这两个参数,eureka.client.initialinstanceinforeplicationint...
荔枝岛岛主
0回复
3644浏览
Eureka
暂无内容
1
30
31
32
33
34
35
36
37
38
156
精选
客服
订阅鸿蒙技术特刊,精选内容抢先看
微信扫码关注,即刻订阅