前言前几天,知识星球中有位小伙伴,问了我一个问题:加密的手机号如何模糊查询?我们都知道,在做系统设计时,考虑到系统的安全性,需要对用户的一些个人隐私信息,比如:登录密码、身份证号、银行卡号、手机号等,做加密处理,防止用户的个人信息被泄露。很早之前,CSDN遭遇了SQL注入,导致了600多万条明文保存的用户信息被泄。因此,我们在做系统设计的时候,要考虑要把用户的隐私信息加密保存。常见的对称加密算法有AES、SM...
2023-11-21 15:15:06 4184浏览 0点赞 0回复 0收藏
9索引在高并发的系统当中,用户经常需要查询数据,对数据库增加索引,是必不可少的一个环节。尤其是表中数据非常多时,加了索引,跟没加索引,执行同一条sql语句,查询相同的数据,耗时可能会相差N个数量级。虽说索引能够提升SQL语句的查询速度,但索引也不是越多越好。在insert数据时,需要给索引分配额外的资源,对insert的性能有一定的损耗。我们要根据实际业务场景来决定创建哪些索引,索引少了,影响查询速度,索...
2023-11-21 15:14:20 2003浏览 0点赞 0回复 0收藏
大家好,我是苏三,又跟大家见面了。前言最近有位粉丝问了我一个问题:如何设计一个高并发系统?这是一个非常高频的面试题,面试官可以从多个角度,考查技术的广度和深度。今天这篇文章跟大家一起聊聊高并发系统设计一些关键点,希望对你会有所帮助。1页面静态化对于高并发系统的页面功能,我们必须要做静态化设计。如果并发访问系统的用户非常多,每次用户访问页面的时候,都通过服务器动态渲染,会导致服务端承受过大...
2023-11-16 14:51:21 3535浏览 0点赞 0回复 0收藏
前言最近知识星球中有位小伙伴问了我一个问题:如何快速同步第三方平台数据?他们有个业务需求是:需要同步全国34个省市,多个系统的8种业务数据,到他们公司的系统当中。他们需求同步全量的数据和增量的数据。全量的数据主要是针对多个系统的历史数据,大概有几千万数据,只需要初始化一次即可。而增量的数据,是系统后续变更的数据。这个需求其实不简单,至少有以下难点:不能直接访问第三方数据库。不能将...
2023-11-16 14:50:59 1998浏览 0点赞 0回复 0收藏
前言最近知乎上,有一位大佬邀请我回答下面这个问题,看到这个问题我百感交集,感触颇多。在我是新人时,如果有前辈能够指导方向一下,分享一些踩坑经历,或许会让我少走很多弯路,节省更多的学习的成本。这篇文章根据我多年的工作经验,给新人总结了25条建议,希望对你会有所帮助。1.写好注释很多小伙伴不愿意给代码写注释,主要有以下两个原因:开发时间太短了,没时间写注释。《重构》那本书说代码即注释。我在开发的前面几...
2023-11-16 14:50:01 1628浏览 0点赞 0回复 0收藏
大家好,我是冰河今天给大家介绍《Java极简设计模式》的第03章,工厂方法模式(FactoryMethod),多一句没有,少一句不行,用最简短的篇幅讲述设计模式最核心的知识,好了,开始今天的内容。一、概述定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。二、适用性1.当一个类不知道它所必须创建的对象的类的时候。2.当一个类希望由它的子类来指定它所创建的对象的时候。3.当类将...
2023-09-22 11:58:40 1642浏览 0点赞 0回复 0收藏
大家好,我是冰河都说面试造火箭,工作拧螺丝,不过这次面试造的着实有点离谱!事情是这样的,昨天在冰河的知识星球微信群里,一名小伙伴发了一张面试常州一家公司的面试题的图片,瞬间吸引了我的注意。开始我还以为这家企业确实存在图上的问题,直接通过自身存在的问题来面试候选人,更有针对性,面试题如下所示。尽管面试造火箭,看这架势,这家公司是要招架构师?高工?正当我看这些面试题的时候,群里后续的聊天记录瞬间超...
2023-09-22 11:57:30 1590浏览 0点赞 0回复 0收藏
寻址方式总体来说,寻址方式可以分为:立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻立即寻址:操作数直接在指令中,速度快,灵活性差。直接寻址:指令中存放的是操作数的地址。间接寻址:指令中存放了一个地址,这个地址对应的内容是操作数的地址。寄存器寻址:寄存器存放操作数。寄存器内存放的是操作数的地址。CISC与RISCCISC和RISC分别表示复杂指令集系统和精简指令集系统,具体信息如下表所示。指令系统类型指...
2023-09-22 11:55:20 2033浏览 0点赞 0回复 0收藏
大家好,我是冰河最近发现很多小伙伴工作很久了,大部分工作都是在重复的进行CRUD,对于一些基础性的知识,比如:计算机基础知识,操作系统,数据结构和算法等,却了解的少之又少。其实,很多时候,这些基础性的知识往往是造成程序员职业生涯瓶颈的一个重要的因素。所以,冰河强烈建议这些基础知识越早知道越好,越早掌握越好!最好是在大学时期就充分掌握这些计算机基础知识。好了,接下来,冰河为大家总结了一篇万字长文系统...
2023-09-22 11:54:25 2042浏览 0点赞 0回复 0收藏
大家好,我是冰河最近有百度的小伙伴问我:冰河,并发编程要学哪些内容呀?我看你公众号的《精通高并发系列》更新了很多高并发编程的技术文章,你是怎么学习的呢?后面你还会更新吗?啥时候更新完呀?我:后面还会一直持续更新的,并发编程的知识很多,也很复杂,不是几十篇文章就能够讲清楚的,所以,我后面还会一直持续更新并发编程相关的文章,加入一些项目实战类的文章和视频,后面我先梳理下,整理个简单的学习路...
2023-09-22 11:53:37 1900浏览 0点赞 0回复 0收藏
大家好,我是冰河今天给大家介绍《Java极简设计模式》的第02章,抽象工厂模式(AbstractFactoty),多一句没有,少一句不行,用最简短的篇幅讲述设计模式最核心的知识,好了,开始今天的内容。一、概述提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。二、为何使用工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。为什么工厂模式是如此常用?...
2023-09-22 11:53:08 1543浏览 0点赞 0回复 0收藏
大家好,我是冰河今天给大家介绍《Java极简设计模式》的第01章,单例设计模式(Singleton),多一句没有,少一句不行,用最简短的篇幅讲述设计模式最核心的知识,好了,开始今天的内容。单例设计模式看几个单例对象的示例代码,其中有些代码是线程安全的,有些则不是线程安全的,需要大家细细品味,这些代码也是冰河本人在高并发环境下测试验证过的。代码一:SingletonExample1这个类是懒汉模式,并且是线程不安全的packageio.b...
2023-09-22 11:52:09 1812浏览 0点赞 0回复 0收藏
大家好,我是冰河记得在《【高并发】Redis如何助力高并发秒杀系统?看完这篇我彻底懂了!!》一文中,我们以高并发秒杀系统中扣减库存的场景为例,说明了Redis是如何助力秒杀系统的。那么,说到Redis,往往更多的场景是被用作系统的缓存,说到缓存,尤其是分布式缓存系统,在实际高并发场景下,稍有不慎,就会造成缓存穿透、缓存击穿和缓存雪崩的问题。那什么是缓存穿透?什么是缓存击穿,又什么是缓存雪崩呢?它们是如...
2023-09-22 11:51:46 1689浏览 0点赞 0回复 0收藏
大家好,我是冰河最近,很多小伙伴纷纷留言说今年的面试题难度又提高了,尤其是对并发编程的知识。我细想了下,也许有那么点大环境的原因吧,但无论面试的套路怎么变,只要掌握了核心知识和底层原理,找一份比较好的工作应该不难吧。玩笑归玩笑,学习知识并不只是为了应付面试,更应该将这些知识运用到实际的工作中。朋友面试挂了一个工作了几年的朋友今天打电话和我聊天,说前段时间出去面试,面试官问他做过的项目,他讲起业...
2023-09-22 11:51:25 1985浏览 0点赞 0回复 0收藏
大家好,我是冰河最近收到很多小伙伴的微信私聊消息,大部分都是在询问如何快速掌握一个框架的原理和源码,比如:Spring、Dubbo、MyBatis等。针对这个问题,周末我简单总结了下,今天,就为小伙伴们分享下我是如何利用不到一个月的业余时间(每天不到2小时)快速掌握Dubbo的原理和源码的。阅读源码的前提阅读某一项技术框架,或者说开源项目的源码前,你必须了解这个框架是干啥用的,说白了,就是你至少了解这个框架该怎么用,...
2023-09-22 11:48:06 1410浏览 0点赞 0回复 0收藏
五、源码解析5.2为Value修饰的属性赋值本节主要对为Value修饰的属性赋值的源码流程进行简单的分析,结合源码执行的时序图,会理解的更加深刻,本节的源码执行流程可以结合图113114进行理解。具体分析步骤如下所示。注意:为Value修饰的属性赋值的源码流程的前半部分与本章5.1节分析源码的流程相同,这里,同样从AbstractAutowireCapableBeanFactory类的doCreateBean()方法开始分析。(1)解析AbstractAutowireCapableBeanFactor...
2023-09-21 11:54:41 2020浏览 0点赞 0回复 0收藏
本节目录如下所示:学习指引注解说明注解源码使用场景注解用法使用案例源码时序图解析并获取Value修饰的属性为Value修饰的属性赋值使用Value获取属性的值源码解析解析并获取Value修饰的属性为Value修饰的属性赋值使用Value获取属性的值总结思考VIP服务一、学习指引Spring中的Value注解,你真的彻底了解过吗?在实际开发过程中,通常会有这样一种场景:将一些配置项写到配置文件中,在业务逻辑中会读取配置文件中的配置...
2023-09-21 11:54:00 2130浏览 0点赞 0回复 0收藏
背景随着物理硬件的不断发展,存储软件所使用的硬件的情况也一直在不断变化。一方面,内存和IO技术一直在快速发展,硬件的性能在极速增加。在最初设计Ceph的时候,通常情况下,Ceph都是被部署到机械硬盘上,能够提供数百IOPS的读写和数十G的磁盘容量。但是,目前最新的NVMe设备可以提供数百万的IOPS读写,并支持TB级的磁盘容量。DRAM的容量在大约20年的时间内增加了128倍。对于网络IO来说,网卡设备现在能够提供超过400Gbps的速...
2023-07-18 11:31:59 2677浏览 0点赞 0回复 0收藏
测试是验证系统正确性的最佳方案。但是,它不能预测生产中可能发生的故障情况。经验丰富的工程团队会告诉我们,生产环境并不统一,并且充满了令人激动的偏差。有趣的事实是,在生产环境中进行测试可帮助测试实时用户流量上的代码更改,及早发现错误,并提供可提高客户满意度的强大解决方案。但是,它不能帮助检测故障的根本原因(RootCause)。这就是为什么在测试中采用可观测性至关重要的原因。它提供基础架构和生产内部的全栈...
2023-07-18 11:30:56 1987浏览 0点赞 0回复 0收藏
并非所有网络安全风险都是平等的,而且由于威胁在不断发展,因此定期执行和更新风险评估至关重要。对于关键基础设施尤其如此,网络攻击可能会造成危及生命的后果。关键基础设施网络风险评估与传统的IT网络风险评估有何不同?本文给出解答。首先确定风险之间的差异非常重要:传统的IT网络风险。威胁参与者控制组织敏感信息的可能性以及潜在的财务后果。关键基础设施网络风险。威胁行为者控制社会最重要的系统和资产的可能性以及...
2023-07-18 11:29:31 2600浏览 0点赞 0回复 0收藏