自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1389)
  • 资源 (7)
  • 收藏
  • 关注

原创 Hive 到底有什么用?

开发无需经常编写MapReduce程序,因为网站最主要的大数据处理就是SQL分析,因此Hive很重要。随Hive普及,我们对在Hadoop执行SQL的需求越强,对大数据SQL的应用场景也多样化起来,于是又开发各种大数据SQL引擎。Cloudera开发Impala,运行在HDFS上的MPP架构的SQL引擎。

2022-11-27 16:36:21 40

原创 电商库存系统设计案例详解(下)

????推荐大家关注一个公众号????点击上方 "JavaEdge"关注,星标或置顶一起成长后台回复“面试”有惊喜礼包! 这是一个纷杂而无规则的世界,越想忘掉的事情,越难忘记。...

2022-11-22 02:34:45 50 1

原创 电商库存系统设计案例详解(上)

????推荐大家关注一个公众号????点击上方 "JavaEdge"关注,星标或置顶一起成长后台回复“面试”有惊喜礼包! 这是一个纷杂而无规则的世界,越想忘掉的事情,越难忘记。...

2022-11-20 23:47:09 75

原创 互联网电商大厂库存系统设计案例讲解

但真实情况, 库存只是一个数值,无论是存在mysql数据库还是redis缓存,减值时都要控制顺序,只能串行来扣减,当然为保证安全性,会设计一些锁控制。最上面会查询当前的剩余库存(可能不准确,但没关系,这里只是第一步粗略校验),前置校验,如果已经没有库存,前置拦截生效,减少数据库写。所以,数据库扣减方案第一次升级主要针对 库存前置校验 模块的优化,作为前置拦截器,承载流量很大,若将流量全部压到主库,很容易把数据压垮。库存校验时读取从数据库。主要依赖数据库特性,保证扣减的一致性,逻辑简单,开发部署成本低。

2022-11-20 23:11:15 260 2

原创 BFF架构到底是什么?

????推荐大家关注一个公众号????点击上方 "JavaEdge"关注,星标或置顶一起成长后台回复“面试”有惊喜礼包! 这是一个纷杂而无规则的世界,越想忘掉的事情,越难忘记。...

2022-11-19 22:45:25 61

原创 为什么kafka延迟比rocketmq延迟高

数据存储结构是主要原因,还有就是kafka只支持pull模式。而rocketmq有pull、push两种模式 (虽然这个push模式是假push),push模式延迟肯定是比pull模式延迟低。说kafka延迟比rocketmq延迟高 是有一个前提的 就是topic较多的时候 这个和这2个MQ的数据存储结构有关系的 在topic少的时候延迟基本一致。所以在topic比较多时,分区文件数量会非常庞大 磁盘顺序读效率还不如随机读效率,则会在topic比较多时 磁盘顺序读就蜕变为随机读,延迟也就高了。

2022-11-19 21:35:02 90 1

原创 图解操作系统-cpu cache

缓存是整个存储体系结构的灵魂,它让内存访问的速度接近于寄存器的访问速度。缓存对程序员是透明的,程序员不必使用特定的API接口来操作缓存工作,它是自动工作的。但如果我们的代码写得不好的话,我们就会感受到缓存不能起作用时的性能下降了。缓存的映射方式包括了直接相连、全相连、组组相连三种。直接相连映射会导致缓存块被频繁替换;而全相连映射可以很大程度上避免冲突,但查询效率低;组组相连映射,与直接相连映射相比,产生冲突的可能性更小,与全相连映射相比,查询效率更高,实现也更简单。

2022-10-25 22:43:53 7939 17

原创 常见面试套路

面试套路

2022-10-20 00:05:22 353

原创 RocketMQ基于Netty长连接

NIO概念同步非阻塞,每个请求对应一个socketchannel通道数据通过bytebuffer来传输,所有的socketchannel注册到selector选择器上reactor线程池从轮询来处理请求调用select poll epoll函数来获取数据,获取后的数据交给worker线程池来进行参数验证和信息封装,业务线程再去读取数据进行写入,每个线程池负责不同的内容相互不影响来提升并发。

2022-10-19 23:53:53 187

原创 macOS更新系统后 brew 安装报错不支持pre-release version

【代码】macOS更新系统后 brew 安装报错不支持pre-release version。

2022-10-14 17:47:37 404

原创 MySQL的索引条件下推(index condition pushdown,ICP)

索引下推:不符合索引最左前缀原则,却还能利用复合索引的其他字段,减少回表次数。最左前缀可用于在索引中定位记录。那不符合最左前缀的部分,会怎样?在搜索索引树时,只能用 “张”,找到第一个满足条件记录ID3。总比全表扫好。然后判断其他条件。

2022-10-13 21:53:20 388

原创 你需要的导航网站,这里都有

6、舆情/新媒体导航(新闻传播自媒体资源导航)http://hao.gsdata.cn/2、Seeseed(设计素材资源导航)https://www.seeseed.com/10、知筑导航(建筑土木设计资源导航)http://www.archi123.com/3、电子发烧友(电子专业/行业门户)http://www.elecfans.com/4、HiPPTer(PPT资源导航)http://www.hippter.com/2、学吧导航(自学资源导航)https://www.xue8nav.com/

2022-10-12 20:52:57 6264 4

原创 Kubernetes中Pod的实现原理

仍很多人把容器跟虚拟机相比,把容器当做性能更好的VM,讨论如何把应用从VM无缝迁移到容器。但无论是从实现原理还是使用方法、特性、功能等方面,容器与VM几乎无任何相似。也不存在一种普遍的方法,能够把虚拟机里的应用无缝迁移到容器中。因为,容器的性能优势,必伴随缺陷,即它不能像VM,完全模拟本地物理机环境中的部署方法。所以,“上云”最终还是要深入理解容器本质,即进程。一个运行在VM里的应用,都被管理在systemd或supervisord下的一组进程,而非一个进程。这跟本地物理机上应用的运行方式一样。

2022-10-06 17:43:27 696 4

原创 ubuntu如何下载64位Intel

由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD对这种CPU架构的原始称呼——“x86-64”被不时地使用,还有变体“x86_64”。其他公司如微软和太阳计算机系统公司在营销资料中使用“x64”作为对“x86-64”的缩写。许多操作系统及产品,尤其那些是在Intel进入这块市场之前就引入“x86-64”支持的,使用“AMD64”或“amd64”同时指代AMD64和Intel64。

2022-10-06 13:42:25 226

原创 消息代理对比DB

这是关于消息代理的传统观点,它被封装在诸如 JMS 【14】和 AMQP 【15】的标准中,并且被诸如 RabbitMQ、ActiveMQ、HornetQ、Qpid、TIBCO 企业消息服务、IBM MQ、Azure Service Bus 和 Google Cloud Pub/Sub 所实现。有些消息代理甚至可使用 XA 或 JTA 参与两阶段提交协议。

2022-09-30 23:48:29 207

原创 消息传递系统场景

一些消息代理只将消息保存在内存,而另一些消息代理(取决配置)将其写盘,以便在代理崩溃也不丢。一种广泛使用的替代方法:通过消息代理(message broker,也称为消息队列message queue)发送消息,消息代理实质上是一种针对处理消息流而优化的DB。排队结果是,消费者通常异步:当Pro发送消息时,通常只会等待代理确认消息已被缓存,而不等待消息被Con处理。一些协议允许生产者重试失败的消息传递,但当生产者崩溃时,它可能会丢失消息缓冲区及其本应发送的消息,这种方法可能就没用。

2022-09-30 23:47:18 263

原创 消息传递系统-导论

Unix管道和TCP将恰好一个发送者与恰好一个接收者连接,而一个消息传递系统允许多个Pro节点将消息发到同一主题,并允许多个Con节点接收主题的消息。若生产者发送消息的速度>消费者能够处理的速度,一般有三种选择:系统丢掉消息,将消息放入缓冲队列,或使用背压(backpressure,也称流量控制flow control:阻塞生产者,以免其发送更多的消息)。如对周期传输的传感器读数和指标,偶尔丢失的数据点可能并不重要,因为更新的值会在短时间内发出。:Pro发送包含事件的消息,然后将消息推给Con。

2022-09-30 23:45:57 276

原创 传递事件流

在流处理的上下文中,记录通常被叫做事件(event) ,本质是一样的:一个小的、自包含的、不可变的对象,包含某时间点发生的某事的细节。一个事件通常包含一个来自日历时钟的时间戳,以指明事件发生的时间。数据库在传统上对这种通知机制支持的并不好,关系型数据库有触发器(trigger),可对变化(如插入表中的一行)反应,但功能有限,且在数据库设计中有些后顾之忧。文件或数据库就足以连接Pro和Con:Pro将其生成的每个事件写入数据存储,且每个Con定期轮询数据存储,检查自上次运行以来新出现的事件。

2022-09-30 23:44:30 706

原创 为什么会有流处理?

因此,批处理程序必须将数据人为分成固定时间段的数据块,如每天结束时处理一天的数据或每h结束时处理一小时的数据。但这有很大的假设:输入有界,即已知和有限的大小,所以批处理知道它何时能完成输入的读取。批处理的问题是,输入的变更只会在一天之后的输出中反映,对急躁的用户来说太慢。为减少延迟,可更频繁运行处理,如每s的末尾或更连续一些,完全抛开固定时间切片,当事件发生时就立即处理,这就是流处理(stream processing)的想法。” ,研究连续处理这些流的方法和工具,以及它们用于应用构建的方式。

2022-09-30 23:41:27 405

原创 IDEA自动生成serialVersionUID

设置自动生成 serialVersionUID 的方式如下图所示。

2022-09-26 17:20:26 329

原创 算法步步为营(02)-两数之和

两个非空链表,表示两个非负整数。它们每位数字都是逆序存储,且每个节点只能存储一位数字。将两个数相加,并以相同形式返回一个表示和的链表。除了数字 0 之外,这两个数都不会以 0 开头。

2022-09-26 00:51:52 420

原创 算法步步为营(1)-两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。可以按任意顺序返回答案。

2022-09-21 00:12:42 257 1

原创 千万级用户ms级抽奖N名设计方案

你有什么更好的方案吗?

2022-09-19 23:53:40 449

原创 异步编程规避Redis的阻塞(下)

为保证数据可靠性,Redis实例需保证AOF日志中的操作记录已落盘,这个操作虽需实例等待,但并不会返回具体数据结果给实例。因为若Redis内存超过maxmemory,再写入数据时,Redis返回的结果是OOM error,这种情况下,客户端需要感知有错误发生才行。若客户端不关心返回值,只关心数据是否写成功,则SET/HSET/SADD都不算关键路径,多次执行这些命令都是幂等的,这时可放到异步线程。Redis读肯定都是关键路径操作,因为客户端发起读请求后,就会等待返回读取数据,再处理后续。

2022-09-16 20:00:39 429 1

原创 异步编程规避Redis的阻塞(中)

为避免阻塞式操作,Redis提供异步线程机制:Redis会启动一些子线程,把一些任务移交子线程,让它们在后台处理。但若使用Redis Cluster,且同时正好迁移大key,就会阻塞主线程,因Redis Cluster使用的同步迁移。一个同步写盘操作耗时大约1~2ms,若大量写操作需记录在AOF日志,并同步写回,就会阻塞主线程。但对从库,它在接收了RDB文件后,需使用FLUSHDB命令清空当前数据库,恰好撞车三大阻塞点。从库在清空当前数据库后,还要把RDB文件载入内存,RDB文件越大,加载越慢。

2022-09-16 20:00:06 353 1

原创 异步编程规避Redis的阻塞(上)

要尽可能避免性能异常场景,还要做好异常应对方案。本文研究Redis内部的阻塞式操作及应对方案。Redis的网络I/O和KV对读写都由主线程完成。若在主线程执行操作耗时太长,就会引起主线程阻塞。但Redis既有服务客户端请求的键值对增删改查操作,也有保证可靠性的持久化操作,还有主从复制时的数据同步操作。哪些会引起阻塞?

2022-09-16 19:58:56 431

原创 设计新鲜事(News Feed)系统

问清需求再设计不做关键词大师不试图设计一个最牛的系统,要设计一个够用的系统先设计MVP,再逐步优化系统设计无标准答案,和面试官一起探讨分析的过程比结果更重要。

2022-09-14 21:53:49 415

原创 短链系统设计-用户自定义短链

实现一个顾客短网址,使得顾客能创立他们自己的短网址。即你需要在前文基础上再实现一个。把一个长网址转换成一个以开头的短网址把一个短网址转换成一个长网址设定一个长网址的短网址为+keylong2Short生成的短网址的key的长度应该等于6 (不算域名和反斜杠)。可以使用的字符只有。如:abcD9E任意两个长的url不会对应成同一个短url,反之亦然如果不能完成用户期望的设定, 那么应该返回"error", 反之如果成功将长网址与短网址对应,应该返回这个短网址。

2022-09-13 15:19:56 186

原创 短链系统设计性能优化-分片策略优化

中心化的服务器集群和跨地域的 web server 之间通信较慢:如中国的 Server 需访问美国的 DB。若原来的 short key 是 AB1234,则现在的 short key 是。并将 hash(long_url)%62直接放到 short url。若数据重复写到中国 DB,如何解决一致性问题?这样,就能同时通过 short、long 得到分片键。为何不让中国的 Server 访问中国的 DB 呢?还可以维护一份域名白名单,访问对应地域的 DB。缺点:DB 的机器数目不能超过 62。

2022-09-13 15:17:01 319

原创 短链系统设计性能优化-分片键选型及全局自增 ID 策略

但使用全局自增 id 不是解决 tiny url最佳方案。该 DB不存储真实数据,也不负责其他查询。为避免单点故障,可能需要多台 DB。

2022-09-13 15:16:03 184

原创 短链系统设计-服务设计

该系统其实很简单,只需要有一个 service即可:URL Service。POST /data/shorten(不太推荐,不符合 REST 设计风格,但也有人在用)UrlService.encode(long_url):编码方法。UrlService.decode(long_url):解码方法。GET / REST 风格。那么,你们公司的短链系统是选择哪种服务设计呢?

2022-09-13 15:13:23 128

原创 短链系统设计-存储设计

为避免重复, 我们可以按照字典序依次使用, 或者在随机生成的基础上用一个集合来记录是否使用过。long ur 转成一个 6 位的 short url。短网址是固定的格式: “http://tiny.url/” + 6个字符, 字符可任意。随机取一个 6 位的 shortURL,若没使用过,就绑定到改 long url。关系型数据库表:只需Short key和 long url两列,并分别建立索引。tiny url需要写的代码不复杂,nosql+1。缺点:生成短链接的速度,随着短链接越多而越慢。

2022-09-13 15:08:24 250

原创 短链系统设计性能优化-缓存提速及CDN

实现一个顾客短网址,使得顾客能创立他们自己的短网址。即你需要在前文基础上再实现一个。把一个长网址转换成一个以开头的短网址把一个短网址转换成一个长网址设定一个长网址的短网址为+keylong2Short生成的短网址的key的长度应该等于6 (不算域名和反斜杠)。可以使用的字符只有。如:abcD9E任意两个长的url不会对应成同一个短url,反之亦然如果不能完成用户期望的设定, 那么应该返回"error", 反之如果成功将长网址与短网址对应,应该返回这个短网址。

2022-09-13 15:05:37 227

原创 短链系统设计-场景需求及性能要求分析

如脉脉,不会纵容你发太长的网址,会给你转成短链。

2022-09-13 15:05:03 158

原创 OOM和频繁GC预防方案

这段代码明明很简单,日常跑的都没问题,怎么一大促就卡死甚至进程挂掉?大多是因为设计时,就没针对高并发、高吞吐量case考虑过内存管理。

2022-09-10 15:08:49 134

原创 Java反转List,逆序打印

【代码】Java反转List,逆序打印。

2022-09-03 15:25:37 180

原创 大厂都是如何处理重复消息的?

消息传递过程出现传递失败,发送方会执行重试,重试过程可能会产生重复消息。对使用消息队列的系统,如果没对重复消息处理,可能会导致系统数据错误。比如一个消费订单消息,统计下单金额的微服务。如果没正确处理重复消息,那就会出现重复统计,导致统计结果错误。如果消息队列本身能保证消息不重复,那应用程序实现不就简单了?那有没有消息队列能保证消息不重复呢?消息重复的情况必然存在。在MQTT协议,给出三种传递消息时能够提供的服务质量标准,服务质量从低到高:At most once: 至多一次。消息在传递时,

2022-09-03 15:00:15 1829

原创 数据分区设计(0)-前言

每条数据(或每条记录,每行或每个文档)属于且仅属于某特定分区。每个分区都能视为一个完整小型数据库,虽然数据库可能存在跨分区操作。

2022-08-28 20:42:15 184

原创 无主复制系统(2)-读修复和反熵

复制模型应确保所有数据最终复制到所有副本。在一个失效节点重新上线后,它如何赶上错过的写入呢?

2022-08-28 19:54:45 142

原创 分布式复制系统设计-总结

若某领导者失败,且你提升了一个异步更新的追随者成为新的领导者,则最近提交的数据可能丢失。出现故障节点,网络中断和延迟峰值时,多领导者、无领导者复制更稳健,但以更难推理并仅提供非常弱的一致性保证为代价。最后讨论多领导者、无领导者复制固有并发问题:因为他们允许多个写并发,这可能冲突。所有客户端将写都发到单主节点,该节点将数据更改事件发送到其他副本(从节点)。客户端发送每个写到几个节点,并从多个节点并行读取,以检测和纠正具有陈旧数据的节点。这里甚至不考虑更隐蔽的失效场景,如由于bug导致的无提示的数据损坏。

2022-08-21 13:26:39 538 2

Spring基础讲义-java 入门必备

Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-j

2022-11-05

spring-boot-actuator-web-api.pdf

Spring Boot Actuator Api

2021-10-02

EvgenyMandrikov_Marc_Hoffmann_Java_Coverage_mechanics.pdf

jacoco 官方原理解析文档,由领导者亲自执笔编写!

2020-04-03

人工智能蔡自兴课件 PPT

人工智能及其应用第四版,最新版本课程使用课件,适合期末复习

2019-01-06

Spartk 电影PPT资料

Spartk 电影的PPT资料,这是一个很好的视频教程哦,由于原文件太大,想要可以联系我哦

2019-01-06

南邮微机原理课件

南邮微机原理课件.....................................................................

2018-01-08

南邮Windows编程课件

南京邮电大学Windows编程课件1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

2017-11-26

微机原理课件-南邮

南邮的微机原理课件

2017-11-15

空空如也

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

TA关注的人

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