随笔分类 - 技术解决方案
摘要:出处: https://www.cnblogs.com/dennyzhangdd/p/11585971.html 一、引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高。 二、问题复现
阅读全文
摘要:出处: 秒杀架构模型设计 前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀,那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题: 一:秒杀系统应该考虑的问题 二:秒杀系统的设计和技术方
阅读全文
摘要:出处:分享大厂分布式唯一ID设计方案 一、前言 二、分布式ID的几种生成方案 2.1、UUID 2.2、MySQL主键自增 2.3、MySQL多实例主键自增 2.4、雪花snowflake算法 2.5、Redis生成方案 2.6、小结 三、一线大厂是如何设计的呢? 3.1、改造数据库主键自增 3.2
阅读全文
摘要:出处: redis主从复制常见的一些坑 读写分离的问题 1.数据复制的延迟 读写分离时,master会异步的将数据复制到slave,如果这是slave发生阻塞,则会延迟master数据的写命令,造成数据不一致的情况 解决方法:可以对slave的偏移量值进行监控,如果发现某台slave的偏移量有问题,
阅读全文
摘要:在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别 定时任务有明确的触发时间,延时任务没
阅读全文
摘要:出处: Java 线程池实现原理及其在美团业务中的实践 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线
阅读全文
摘要:出处: 高性能短链设计 今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。 本文将会
阅读全文
摘要:出处: 同样是卖票,为啥阿里卖电影票就不卡?技术上做了啥??? 一、背景介绍 先简单分析一下电影节的抢票业务,典型特征是在大流量抢购、高并发的场景下,让用户极快的锁定座位然后出票,特别是热门的影片,会异常的火爆。第一道压力是查询已售座位列表和锁座,需要能快速的支撑用户的锁座请求,且实时查询到已售卖的
阅读全文
摘要:相关文章: 字节码插桩--你也可以轻松掌握
阅读全文
摘要:在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。 服务限流: 流量控制本质上是减小访问量,而服务处理能力不变;而服务降级本质上是降低了部分服务的处理能力,增强另一部分服务处理能力,而访问量不变。 限流算法的应用场景非常广泛,比如通过限流来确保下游配置较差的应用不会被上游应用的大量请求击
阅读全文
摘要:出处: 作者:wangzaiplus www.jianshu.com/p/6189275403ed 一、概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多
阅读全文
摘要:作者:LittleMagic 出处: 注意System.currentTimeMillis()潜在的性能问题来源:简书 System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。但实际上在并发调用或者特
阅读全文
摘要:个人觉得安全措施大体来看主要在两个方面,一方面就是如何保证数据在传输过程中的安全性,另一个方面是数据已经到达服务器端,服务器端如何识别数据,如何不被攻击;下面具体看看都有哪些安全措施。 1.数据加密 我们知道数据在传输过程中是很容易被抓包的,如果直接传输比如通过 http 协议,那么用户传输的数据可
阅读全文
摘要:1. 常见概念在合理应用缓存前,需要了解缓存领域里相关的几个常用术语: 1)缓存命中:表示数据能够从缓存中获取,不需要回源; 2)Cache miss:表示没有命中缓存,如果缓存内存中还有内存空间的话,会将数据加入到缓存中; 3)存储成本:当没有命中缓存时,回源获取后会将数据放置到存储中,整个将数据
阅读全文
摘要:出处: 你还在从零搭建项目 ? 前言 在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为“第0个迭代”要做的事情。但是,当项目运行了一段时间之后再来反观,我总会发现一些不足的地方,要么测试分类没有分好,要么基本的编码架子没有考虑周全
阅读全文
摘要:出处: 重要的接口需要做哪些检查 在软件开发中有一些接口需要做特殊的检查,以防黑客使用这些接口的漏洞来攻击我们的系统,给公司造成损失。 0x01:用户注册接口 一、每一个完整的软件系统都有一套完善用户体系,注册接口至少存在以下风险点: 存在被机器人进行批量注册、产生大量僵尸用户 恶意注册 存在被机器
阅读全文
摘要:出处:数据库分库分表思路 一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查
阅读全文
摘要:出处: java如何防止反编译 一些防止java代码被反编译的方法 综述(写在前面的废话) Java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于有今天之风光!但随着java的应用领域越来越广,特别是一些功能要发布到终端用户手中(如Android
阅读全文
摘要:出处:运用加密技术保护Java源代码 为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以。遗憾的是,Java程序的源代码很容易被别人偷看。只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通
阅读全文
摘要:其实,高并发并不神秘,说白了就是想办法搞定两个指标:提升QPS(Query Per Second,每秒查询率 ,每秒的响应请求数,也即是最大吞吐能力)、降低RT(响应时间,系统对请求作出响应的时间(一次请求耗时))。并且同时保证数据的正确性、系统的可用性就OK了。 1、网站并发量上来了?啥都不要管,
阅读全文