自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 数据库自增ID用完了出现的场景分析

我想起当初玩魔兽世界的时候,25H难度的脑残吼的血量已经超过了21亿,所以那时候副本的BOSS都设计成了转阶段、回血的模式,因为魔兽的血量是int型,不能超过2^32大小。估计暴雪的设计师都没想到几个资料片下来血量都超过int上限了,以至于大家猜想才会有后来的属性压缩。这些都是题外话,只是告诉你数据量大了是有可能达到上限的而已,回到Mysql自增ID上限的问题,可以分为两个方面来说。1.有主键如果设置了主键,并且一般会把主键设置成自增。我们知道,Mysql里int类型是4个字节,如果有符

2022-01-21 10:52:47 227

原创 spring 面试宝典

1.说说Spring 里用到了哪些设计模式?单例模式:Spring 中的 Bean 默认情况下都是单例的。无需多说。工厂模式:工厂模式主要是通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象。代理模式:最常见的 AOP 的实现方式就是通过代理来实现,Spring主要是使用 JDK 动态代理和 CGLIB 代理。模板方法模式:主要是一些对数据库操作的类用到,比如 JdbcTemplate、JpaTemplate,因为查询数据库的建立连接、执行查询、关

2022-01-20 15:54:55 159

原创 mq面试宝典

你们为什么使用mq?具体的使用场景是什么?mq的作用很简单,削峰填谷。以电商交易下单的场景来说,正向交易的过程可能涉及到创建订单、扣减库存、扣减活动预算、扣减积分等等。每个接口的耗时如果是100ms,那么理论上整个下单的链路就需要耗费400ms,这个时间显然是太长了。如果这些操作全部同步处理的话,首先调用链路太长影响接口性能,其次分布式事务的问题很难处理,这时候像扣减预算和积分这种对实时一致性要求没有那么高的请求,完全就可以通过mq异步的方式去处理了。同时,考虑到异步带来的不一致的问题,我们可.

2022-01-20 15:51:39 165

原创 Redis 面试宝典

说说Redis基本数据类型有哪些吧字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。 链表linkedlist:redis链表是一个双向无环链表结构,很多发布订阅、慢查询、监视器功能都是使用到了链表来实现,每个链表的节点由一个listNode结构来表示,每个节点都有指向

2022-01-19 18:40:59 141

原创 mysql技术面试宝典

1. 能说下myisam 和 innodb的区别吗?myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。2. 说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?索引按照数据结构来说主要包含B+树和Hash索引。假设我

2022-01-18 19:11:00 110

原创 ElasticSearch相关知识点

简介基于ApacheLucene(TM)的开源搜索引擎,由于Lucene使用的复杂性,ElasticSearch的目的就是通过RESTfulAPI让全文搜索变得简单。基础概念1、接近实时NRT全文搜索一般做不到真实时,一般会有一个延迟,不同的搜索引擎都有一个核心的搜索的延迟时间,ES一般的延迟时间在1s。2、分布式集群 通过管理多节点来提高扩容性,多个节点使用一个名称,就是ES管理的一个集群。 一个运行中的ES实例被称为一个节点,集群是由有相同名字(即cluster...

2022-01-17 13:48:19 1806

原创 大话领域驱动设计中的贫血模型和充血模型

一、前言领域驱动设计(DDD)作为一种软件设计思想,在近几年日益复杂的系统架构演变中重新被人拿出来讨论,特别是在当下非常流行的微服务架构中,DDD的价值更加突显出来。大部分人对DDD的认识,都是来自于Eric Evans在2004年出版的《领域驱动设计——软件核心复杂性应对之道》,可以说这本书为DDD在整个业界奠定了基础,十几年后的今天大家依然在这个基础上沿用了很多概念,只是在一些细节上不断进行改进,可见Eric Evans大师的远见。DDD虽然给人们提供了一种以领域为中心来设计的原则性指导,但具体

2021-12-31 10:55:47 532

原创 浅谈-CAS的优化

一、前景回顾上篇文章给大家聊了一下volatile的原理,https://ata.alibaba-inc.com/articles/213604,今天分享下java并发包下的CAS相关的原子操作,以及Java8如何改进和优化CAS操作的性能。Atomic系列的原子类,高频出现在并发编程、JDK源码、各种开源项目中。二、场景引入假设多个线程需要对一个变量不停的累加1,比如说下面这段代码:packagecom.alipay.rcopcenter.web;/***@author...

2021-12-21 17:25:26 637

原创 一次CPU负载过高的问题排查

一次CPU负载过高的问题排查

2021-12-21 16:53:27 2746

原创 大话商品模型

商品模型术语 名词解释 达尔文体系 是天猫发起的一套全新的商品管理体系,它不同于淘宝原来的分类法(基于类目属性体系)的管理思路,而是以最细粒度的产品节点(CSPU)为核心,使用系统和运营机制的方式维护一套丰富、准确的产品库,通过产品实现聚合、管控商品,以确保商品信息的确定性。 SPU Standard Product Unit,标准化产品单元,是对某一类标准产品的共同特征属性的描述,是商品信息共有属性的一种抽取。 SPU = 类目 + 关键属性 CSPU Child

2021-12-20 18:46:51 952

原创 关于Java线程池的灵魂8问

一、线程池基础总结1.1 ThreadPoolExecutor线程池状态分类RUNNABLE:运行状态,接受新任务,持续处理任务队列里的任务SHUTDOWN:不再接受新任务,但要处理任务队列里的任务STOP:不再接受新任务,不再处理任务队列里的任务,中断正在进行中的任务TIDYING:表示线程池正在停止运作,中止所有任务,销毁所有工作线程TERMINATED:表示线程池已停止运作,所有工作线程已被销毁,所有任务已被清空或执行完毕1.2 ThreadPoolExecutor线程池状态转移图

2021-12-20 18:39:48 660

原创 sql优化最全面的最实用的

基本规范 必须使用InnoDB引擎 P0 支持事务、行级锁、并发性能更好,可利用缓存提高内存利用率,避免磁盘IO开销。基本规范 禁止在数据库中做运算,禁止使用存储过程、函数、触发器、视图、event。P0 如order by rand(),md5();在数据库中做复杂运算count(),sum()等。海量、高并发场景,数据库资源宝贵,不易扩展,高cpu的业务逻辑可以上移到服务层。因为应用服务层更容易扩展,数据库做擅长的存储和索引。基本规范 拒绝3B,...

2020-06-11 23:17:05 216

原创 带你玩转一次多线程!

我认为Java语言在处理多线程上是非常优秀的,我们可以使用简明的代码实现线程的创建、启动、管理等。话不多说,下面我们就来详细的看一下吧!!!转存失败重新上传取消线程和进程这是个老生常谈的问题了,作为后端程序员一定要分清楚线程和进程的区别,几乎所有的操作系统都有“进程”这一概念!一任务,一程序,每一个运行中的程序就是一个进程!当程序运行时,其内部包含了多个顺序执行流,每一个顺...

2020-03-24 14:20:57 296

原创 轻松理解Spring框架的基本思想

说起Spring框架,就不得不说J2EE的EJB。年龄稍大一些的Java程序员对J2EE的EJB还是记忆犹新的,当时使用EJB开发大型应用系统非常时髦,Java程序员无不以掌握EJB开发技术为自豪,程序员引以为豪的原因是EJB的技术太复杂了,以至于一般的Java程序员很难掌握这么复杂的技术。EJB的学习成本很高,开发效率却不高,需要编写很多重复的代码,这些问题阻止了EJB的继续发展。就在EJB...

2020-03-24 14:11:30 218

原创 ConcurrentHashMap底层原理剖析

并发的ConcurrentHashMap是我们日常中使用频次非常高的一个并发map,在最近的面试中几乎每次都会被问到内部的原理,看了下源码记录下,如果有错误的地方,麻烦指正下。PS:想写好一篇博文真的好累啊,最代码有没有保存草稿功能啊jdk7以前和jdk8之后发生了很大的变化,分别看下:JDK1.7以及以前jdk1.7以及以前的版本,ConcurrentHashMap内部是由Seg...

2020-03-19 16:27:09 190

原创 五种并发包总结

1、常用的五种并发包ConcurrentHashMap CopyOnWriteArrayList CopyOnWriteArraySet ArrayBlockingQueue LinkedBlockingQueue2、ConcurrentHashMap线程安全的HashMap的实现 数据结构:一个指定个数的Segment数组,数组中的每一个元素Segment相当于一个HashT...

2020-03-19 15:16:58 553

原创 SQL技术提升高效编程

1、如何快速掌握MySQL?培养兴趣兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然学习MySQL 5.6也不例外。夯实基础计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,随着技术应用的深 入,只有有着扎实的基础功底,才能在技术的道路上走得更快、更远。对于MySQL的学习来说, SQL语句是其中最为基础的部分,...

2020-03-19 14:24:01 242

原创 分布式任务调度平台的研究

一 分布式任务调度的背景无论是互联网应用或者企业级应用,都充斥着大量的批处理任务。我们常常需要一些任务调度系统帮助我们解决问题。随着微服务化架构的逐步演进,单体架构逐渐演变为分布式、微服务架构。在此的背景下,很多原先的任务调度平台已经不能满足业务系统的需求。于是出现了一些基于分布式的任务调度平台。1.1 分布式任务调度的演进在实际业务开发过程中,很多时候我们无可避免的需要使用一些定时任...

2020-03-19 14:16:08 698

原创 nexus私服仓库搭建

配置环境变量vim/etc/profileNEXUS_HOME=/usr/local/nexus/nexus-3.13.0-01//这边对应nexus解压出来的文件路径exportNEXUS_HOMEsource/etc/profile1. 如何启动nexus/使用servicenexusstart/stop命令来尝试启动关闭nexus,使用serv...

2020-03-19 13:54:25 433

原创 Git常用命令基本操作指南总结

Git常用命令总结将本地新建的项目提交到远程仓库的步骤初始化本地仓库git init将本地内容添加至git本地暂存区中git add .将暂存区添加至本地仓库中git commit -m "first commit"添加远程仓库路径git remote add origin https://github.com/xxx/test.git将本地内容push至远程仓库中g...

2020-03-19 13:48:22 283

原创 Gi常用命令大全整理

1、Git常用命令 命令 简要说明 git add 将文件内容添加到索引 git apply 应用补丁 git am 应用邮件格式补丁 git annotate 同义词,等同于 git blame git archive 文件归档打包 git bisect 二分查找 git blame 文件逐行追溯 git ...

2020-03-19 13:44:36 1284

空空如也

空空如也

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

TA关注的人

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