自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (1)
  • 收藏
  • 关注

原创 让你的程序跑的更快更好

1. 代码相关遇到性能问题,首先应该做的是检查否与业务代码相关——不是通过阅读代码解决问题,而是通过日志或代码,排除掉一些与业务代码相关的低级错误。性能优化的最佳位置,是应用内部。譬如,查看业务日志,检查日志内容里是否有大量的报错产生,应用层、框架层的一些性能问题,大多数都能从日志里找到端倪(日志级别设置不合理,导致线上疯狂打日志);再者,检查代码的主要逻辑,如 for 循环的不合理使用、NPE、正则表达式、数学计算等常见的一些问题,都可以通过简单地修改代码修复问题。别动辄就把...

2020-06-28 11:08:09 122

原创 redis多维度排序实现

基于redis非关系型缓存数据库的多维度阅读排行榜实现。本发明属于JAVA语言集成redis缓存数据库解决在阅读系统中多维度分析客户排行的榜单排行名问题。背景技术(字数:500以上)定义:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop...

2020-05-18 17:06:22 739

原创 如何正确设置Java线程池参数?

如何正确设置Java线程池参数? 前言:在上篇文章我已经给读者介绍了Java线程池的基本使用,以及参数的定义。你真的了解Java线程池参数的含义吗 本文我们更进一步,来聊聊在实际的工作中如何设置Java线程池参数的。当我们自定义线程池的时候 corePoolSize、maximum...

2020-04-24 16:26:17 480

原创 jedis和lettuce连接redis方案性能对比

针对redis连接池获取连接出现长时间等待问题虽然现在通过调整线程池大小和去掉调用是否联通号码逻辑暂时起到了一些作用,但是却是治标不治本的方案。因此秉着事情必须要有闭环的宗旨。今天花了一天时间做了如下的压力测测试。 知识储备: jedis客户端连接方式是基于tcp的阻塞式连接方式。 lettuce客户端连接方式是基于netty的多路复用异步非阻塞的连接方案。(目前业界解决高并发大数据的问题的思路) ...

2020-06-03 17:52:23 1599 2

原创 一文读懂 druid连接池

起因: 最近微服务项目组新增了一个工程newbusiness顾名思义新业务工程,可是项目上线以来每天都会出现关于新业务超时响应的监控告警。接口整整耗时26秒,由于微服务超时时间设置为2秒,所以响应超时。 问题分析: 通过对日志的分析发现接口的耗时全部集中在数据库连接的获取和销毁上,因此初步推断是数据库连接池的问题,项目组连接池组件用的是阿里的druid组件,配置如下: type: co...

2020-05-22 10:46:02 120

原创 系统如何达到秒杀而不被薅羊毛

秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:目录一:秒杀系统应该考虑的问题二:秒杀系统的设计和技术方案三:系统架构图四:总结一:秒杀应该考虑哪些问题1.1:超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低...

2020-05-19 10:56:36 260

原创 RabbitMQ延迟消息的极限是多少?

最近开发碰到了使用过程中发现,延迟消息没有效果,消息直接就被消费了的情况。因此就继续深入研究了一下问题原因,在此记录下来,给碰到类似问题的童鞋们参考。问题定位因为不是所有的消息都出现了没有延迟消息效果的因素,通过有问题的消息特征,大致猜测可能是延迟时间过长导致了消息延迟失败。为了验证这个原因,先拿之前文章中的例子,来测试一下延迟时间是否与问题直接相关。对之前的延迟消息使用样例(文末的Git仓库中可以获取完整代码)接口做一下微改,增加了一个请求参数delay来控制延迟时间: @GetM

2020-05-09 11:13:53 70

转载 为何你一身本领,却还是逃不过写烂代码的命运?

编写高质量可维护的代码既是程序员的基本修养,也是能决定项目成败的关键因素,本文试图总结出问题项目普遍存在的共性问题并给出相应的解决方案。1. 程序员的宿命?程序员的职业生涯中难免遇到烂项目,有些项目是你加入时已经烂了,有些是自己从头开始亲手做成了烂项目,有些是从里到外的烂,有些是表面光鲜等你深入进去发现是个“焦油坑”,有些是此时还没烂但是已经出现问题征兆走在了腐烂的路上。...

2020-05-08 16:08:03 143

原创 一个现网bug让我彻底弄懂微服务日志链路追踪

一个现网bug让我彻底弄懂微服务日志链路追踪 需求: 异步帮批量用户订购话费套餐,成功发送短信,失败记录信息。 问题描述: 根据运营人员及测试反馈最近有一批500个账户的套餐开通中,失败数+成功数=499,还有一笔订单凭空消失了...

2020-04-29 14:57:45 235

原创 Nacos构建配置中心

Nacos构建配置中心我们已经学会了,如何利用Nacos实现服务的注册与发现。同时,也介绍了在Spring Cloud中,我们可以使用的几种不同编码风格的服务消费方式。接下来,我们再来学习一下Nacos的另外一个重要能力:配置管理。简介Nacos除了实现了服务的注册发现之外,还将配置中心功能整合在了...

2020-04-24 15:52:32 426 2

转载 支付宝亿万级流量的高可用架构

自 2008 年双 11 以来,在每年双 11 超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限。2010 年双 11 的支付峰值为 2 万笔/分钟,到 2017 年双 11 时这个数字变为了 25.6 万笔/秒。2018 年双 11 的支付峰值为 48万笔/秒,2019 年双 11 支付峰值为 54.4 万笔/秒,创下新纪录,是 2009 年第一次双 11 的 1360倍。...

2020-04-24 15:52:02 208

原创 你真的了解Java线程池参数的含义吗

如何在Java中正确使用线程池1. 工作原理当一个任务提交至线程池之后,1. 线程池首先判断核心线程池里的线程是否已经满了。如果不是,则创建一个新的工作线程来执行任务。否则进入2.2. 判断工作队列是否已经满了,倘若还没有满,将线程放入工作队列。否则进入3.3. 判断线程池里的线程是否都在执行任务。如果...

2020-04-24 15:50:09 101

转载 96秒100亿!阿里到底做了什么?

双 11 刚过,1分36秒100亿,5分25秒超过300亿,12分49秒超500亿,最终当天交易额定格在2684亿元人民币,同比增长约25.7%……那么,阿里到底做了哪些技术方案,才有这样的的成绩呢?本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知。文章最后汇总...

2020-01-03 11:24:58 50

原创 高并发编程(四)高并发解决方案从前端到数据库

1. 高并发和大流量解决方案高并发架构相关概念  并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行;在互联网时代,所讲的并发,高并发通常是指并发访问,也就是在某个时间点,有多少个访问同时到来。通常一个系统的日PV在千万以上,有可能是一个高并发的系统。有的公司完全不走技术路线,全靠机...

2019-10-12 17:01:43 554

转载 LongAdder原理解析

一般都是CAS对一个变量进行操作,但Doug Lea大神觉得不满足,又写了一个LongAdder先看下传统的AtomicLong的原理.png再来看下LongAdder的LongAdder原理图.png即将一个变量进一步拆分到一个base数组中,减少资源竞争@sun.misc.Contended static final class Cell { ...

2019-10-11 17:29:57 65

原创 高并发编程(三)如何编写线程安全的代码

高并发编程(三)如何编写线程安全的代码线程安全类线程安全性定义:当多个线程访问某个类的时候,不管运行环境采用何种调度方式或者这些进程如何交替执行,并且在主调代码中不需要采用额外的同步或者是协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作。A...

2019-10-11 11:22:07 257

原创 Springboot整合Mybatis实现多数据源动态切换

Springboot整合Mybatis实现多数据源动态切换1 业务背景最近一个项目中需要在oracle数据库中读取用户信息,需要在mysql中读取业务数据。2 解决方案多数据源配置在比较大型的项目中,数据库可能会分布在多台服务器上,例如有若干个数据库服务是专门存放日志数据的,又有若干个数据库服务是专门存放业务数据、读写分离的等等.....

2019-10-09 16:37:26 186

原创 MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(实践篇)

MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(实践篇) 通过前面三篇文章的介绍自动化生成代码工具我们理论上是已经实现了,可是到底行不行好不好读者心里还是个大大的疑问?这篇文章我就来一步步带大家使用工具快速构建自己的项目。 第一步: 访问我...

2019-09-29 11:53:13 1575

原创 MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(终极篇-插件化工具)

MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(终极篇-插件化工具)插件(Plugin)是什么不用多说。常用的软件,例如Eclipse、Photoshop、VisualStudio,都支持插件扩展。插件可以动态给软件添加一些功能,也可以随时删除,这样的好处是任何人都可以给这个软件进行功能上的扩展,而不用去改软件本身的代码。适用场景...

2019-09-27 16:49:33 207

原创 MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(进阶篇-基于数据库)

MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(进阶篇-基于数据库) 在文章MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(基础篇-基于配置文件)中,已经实现的功能有基于excel配置文件自动生成基础接口代码(增删改查、分页)以及基于Swagger风格的接口文档。唯一需要使用者做的就是按章...

2019-09-27 15:17:24 377

原创 MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(基础篇-基于配置文件)

MyBatis-Plus结合Swagger实现接口代码及文档自动生成工具(基础篇-基于配置文件) 需求背景: 近日公司接到一个新项目,时间比较紧急,需求比较简单无非是简单的增删改查分页查询等等,业务复杂度不高。唯一的要求就是快速正常交付,并且需要提供文档给到客户端进行开发联调。 常规的需求分析步骤是: 1:根据需求...

2019-09-23 17:21:10 1200

原创 高并发编程(二)创建线程的12种姿势

高并发编程(二)创建线程的12种姿势 JDK1.5创建线程的6种姿势 姿势1、2: 继承Thread并重写run()方法,Thread类中的start方法会去调用系统的方法执行相应的线程。实际上Thread也是实现了Runable接口的,从该类的文档中我们能找到。 ...

2019-09-17 15:24:54 80

原创 高并发编程(一)

高并发编程(一) 概念: 并发:同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器上,因此可以同时运行。...

2019-09-11 16:24:00 406

原创 Liunx常用命令

系统信息监控/查看 ps是ProcessStatus的缩写,ps命令用来列出系统中当前运行的那些进程的快照。 -a显示同一终端下的所有程序 -A显示所有进程 -e等于“-A” -f显示程序间的关系,pid&ppid -H显示树状结构 -u指定(当前)用户的所有进程 示例 ps -ef ps -aux ...

2019-09-10 17:25:51 45

原创 设计模式之观察者模式

设计模式之观察者模式定义:  在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。大白话:  其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。模式原理模式讲解:抽象被观察者角色:也就是一个抽象主题,...

2019-09-10 11:07:17 77

原创 设计模式之代理模式

设计模式之代理模式定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只...

2019-09-09 17:58:33 73

原创 设计模式之建造者模式

设计模式之建造者模式 定义: 创建者模式又叫建造者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 适用场景:隔离复杂对象的创建...

2019-09-09 14:51:14 41

原创 适配器模式在springMVC的应用

适配器模式在springMVC的应用 通过设计模式之适配器模式一文我们了解了适配器的三种模式以及它的简单实现,本文将简化springMVC的流程来讲述适配器模式的控制器转发实现。 用过springMVC的同志都知道,它的核心代码在于DispatcherServlet类中的doDispatch方...

2019-09-09 10:38:40 352

原创 设计模式之适配器模式

设计模式之适配器模式 1.适配器模式简介适配器模式:将一个类的转接口转换成客户希望的另外一个接口,适配器模式使得原来由于接口不兼容的而不能的工作的哪些类可以工作,主要作用就是兼容应用场景: 编码解码、 一拖三充电头、HDMI 转 VGA在spring的体现:Spring AOP 模块对 Bef...

2019-09-09 10:04:31 62

原创 设计模式之策略模式(如何优雅的去除if-else逻辑代码)

设计模式之策略模式(如何优雅的去除if-else逻辑代码) 项目要求: 新增一个数据接收的接口,接收来自不同渠道的数据进行个性化的处理。目前已知的渠道有360、百度,以后还会不断扩展渠道,要求必须在同一个接口处理所有数据接收请求。 大多数的实现是这样的: /** * 点击数据匹配接口 */ ...

2019-09-06 11:18:12 3329

转载 Zookeeper+Dubbo安装与搭建

Zookeeper+Dubbo安装与搭建本文有借鉴:https://www.cnblogs.com/UncleYong/p/10737119.html(一)zookeeper是什么?(动物园)ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核...

2019-09-03 14:42:02 1322

转载 Spark从零到一 (五)Spark 调优

Spark 调优正文摘抄自:https://tech.meituan.com/spark-tuning-basic.html前言在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学...

2019-09-03 10:38:26 56

原创 Spark从零到一 (四)Spark API In Java8

Spark API In Java8一、map、flatMapmap十分容易理解,他是将源JavaRDD的一个一个元素的传入call方法,并经过算法后一个一个的返回从而生成一个新的JavaRDD。map示例代码List<Integer> list = Arrays.asList(1, 2, 3);System....

2019-09-03 10:28:54 107

原创 Spark从零到一 (三)Spark之广播、共享、缓存

Spark之广播、共享、缓存一、概述在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的是这个函数所用变量的一个独立副本。这些变量会被复制到每台机器上,并且这些变量在远程机器上的所有更新都不会传递回驱动程序。通常跨任务的读写变量是低效的,但是,Spar...

2019-09-02 17:41:36 157

原创 Spark从零到一 (二)Spark之RDD

Spark之RDD一、RDD的概述1.1 什么是RDD?RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点...

2019-09-02 15:31:22 57

原创 Spark从零到一 (一)Spark简介

Spark简介一、官网介绍1、什么是Spark官网地址:http://spark.apache.org/Apache Spark™是用于大规模数据处理的统一分析引擎。从右侧最后一条新闻看,Spark也用于AI人工智能spark是一个实现快速通用的集群计算平台。它是...

2019-09-02 14:04:54 84

转载 Spark在Windows下的环境搭建

Spark在Windows下的环境搭建本文主要是讲解Spark在Windows环境是如何搭建的一、JDK的安装1、1 下载JDK  首先需要安装JDK,并且将环境变量配置好,如果已经安装了的老司机可以忽略。JDK(全称是JavaTM Platform Standard Edition Development Kit)的安装,去Orac...

2019-09-02 11:00:03 293

转载 RabbitMQ VS Apache Kafka—— 应用场景如何选择?

RabbitMQ VS Apache Kafka—— 应用场景如何选择?架构对比RabbitMQ是一个通用的消息代理,通过包括点对点、请求/响应及发布订阅在内的多种消息通信模式。其采用的是一种智能代理/傻瓜消费的模式,侧重消息的持续投递与处理,并通过代理本身来维护消费者自身状态。RabbitMQ是一个设计成熟的消息代理中间件,...

2019-08-30 17:24:06 176

原创 SpringBoot集成Kafka简单应用

SpringBoot集成Kafka简单应用 windows下搭建kafaka开发环境请参考-Windows平台kafka环境的搭建1: pom文件引入kafka所需jar包<!--kafka支持--><dependency> <groupId>or...

2019-08-30 16:53:18 1094

转载 消息中间件之-Kafaka简介

消息中间件之-Kafaka简介两张图读懂kafka应用:Kafka 中的术语broker:中间的kafka cluster,存储消息,是由多个server组成的集群。topic:kafka给消息提供的分类方式。broker用来存储不同topic的消息数据。produ...

2019-08-30 15:40:23 717

服务端并发分布式架构演进之路.ppt

服务端从单机到分布式的点点滴滴,一步步随着问题不断演化到如今的微服务、云计算再到淘宝阿里巴巴的亿万级高可用集群架构。从前端到后台知道数据库让你充分了解分布式架构。

2020-05-29

空空如也

空空如也

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

TA关注的人 TA的粉丝

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