自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ指南(下)

在上一小节中我们改进了log系统,由于使用fanout类型的exchange只能进行全局的广播,因此我们使用direct类型的exchange做了代替, 使得我们可以选择性的接收消息。尽管使用fanout exchange改进了log系统,但它仍然有限制——不能基于多个条件做路由。Topics 在log系统中可能不只是基于不同的日志级别作订阅,也可能会基于日志的来源。你也许听过Unix下名为...

2018-09-07 20:42:13 640

原创 Redis 选择hash还是string 存储数据?

看到一个问题,Redis strings vs Redis hashes to represent JSON: efficiency?内容如下:I want to store a JSON payload into redis. There's really 2 ways I can do this:One using a simple string keys and values....

2019-06-23 14:19:08 13664 5

原创 Spring 创建Bean的6种方式

前言本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案。方式1:使用Spring XML方式配置,该方式用于在纯Spring 应用中,适用于简单的小应用,当应用变得复杂,将会导致XMl配置文件膨胀 ,不利于对象管理。<bean id="xxxx" class="xxxx.xxxx"/>...

2019-06-21 11:13:37 603

原创 原创 你不知道的Redis:RedisCluster与JedisCluster

Redis Cluster是Redis官方提供的集群解决方案。由于业务的飞速增长,单机模式总会遇到内存、性能等各种瓶颈,这个时候我们总会喊,上集群啊。就跟我家热得快炸了,你总喊开空调呀一样。的确,上集群可以解决大多数问题,但是在使用集群的过程中,不可避免会遇到这样那样的问题,这个时候怎么办呢,各种百度各种群里去问吗?NO,作为开发人员,在享受第三方提供的方便前,有必要去了解其基本的工作机制,这样才...

2019-06-19 14:42:44 2892 1

原创 你知道Object中有哪些方法及其作用吗?

一、引言Object是java所有类的基类,是整个类继承结构的顶端,也是最抽象的一个类。大家天天都在使用toString()、equals()、hashCode()、waite()、notify()、getClass()等方法,或许都没有意识到是Object的方法,也没有去看Object还有哪些方法以及思考为什么这些方法要放到Object中。本篇就每个方法具体...

2019-06-17 14:18:49 6910

原创 SpringBoot解决跨域请求拦截

前言同源策略:判断是否是同源的,主要看这三点,协议,ip,端口。同源策略就是浏览器出于网站安全性的考虑,限制不同源之间的资源相互访问的一种政策。比如在域名https://www.baidu.com下,脚本不能够访问https://www.sina.com源下的资源,否则将会被浏览器拦截。注意两点:1.必须是脚本请求,比如AJAX请求。但是如下情况不会产生跨域拦截...

2019-06-15 15:40:50 1375

原创 Spring Boot 全局异常捕捉,自定义异常并统一返回

下面代码可直接拷在项目内运行即可,MessageResult类为一个统一返回类/*** 自定义异常处理器** @author 问梦杀帝**/@RestControllerAdvicepublic class ExceptionController {private static final Logger log = LoggerFactory.getLogger(Exc...

2019-06-14 17:22:37 2028

原创 Java并发包中线程池ThreadPoolExecutor原理探究

一、线程池简介线程池的使用主要是解决两个问题:①当执行大量异步任务的时候线程池能够提供更好的性能,在不使用线程池时候,每当需要执行异步任务的时候直接new一个线程来运行的话,线程的创建和销毁都是需要开销的。而线程池中的线程是可复用的,不需要每次执行异步任务的时候重新创建和销毁线程;②线程池提供一种资源限制和管理的手段,比如可以限制线程的个数,动态的新增线程等等。在下面的分析中,我们可以看到...

2019-06-13 15:09:09 163

原创 Spring Boot 整合 Shiro ,两种方式全总结!

在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro。一般来说,Spring Security 和 Shiro 的比较如下:Spring Security 是一个重量级的安全管理框架;Shiro 则是一个轻量级的安全管理框架 Spring Security 概念复杂,配置繁琐;Shiro 概念...

2019-06-11 16:49:25 662 1

原创 Nginx 是如何实现高并发?常见的优化手段有哪些?

面试题:Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些?面试官心理分析主要是看应聘人员的对NGINX的基本原理是否熟悉,因为大多数运维人员多多少少都懂点NGINX,但是真正其明白原理的可能少之又少。明白其原理,才能做优化,否则只能照样搬样,出了问题也无从下手。懂皮毛的人,一般会做个 Web Server,搭建...

2019-06-06 20:06:12 896

原创 java程序死锁,3种方式快速找到死锁代码

java程序中出现死锁问题,如果不了解排查方法,是束手无策的,今天咱们用三种方法找到死锁问题。运行下面代码package com.jvm.visualvm;/** * <a href="http://www.itsoku.com/archives">Java干货铺子,只生产干货,公众号:javacode2018</a> */public class Dem...

2019-06-05 14:24:34 515

原创 基于Kafka的实时计算引擎如何选择?

1.前言目前实时计算的业务场景越来越多,实时计算引擎技术及生态也越来越成熟。以Flink和Spark为首的实时计算引擎,成为实时计算场景的重点考虑对象。那么,今天就来聊一聊基于Kafka的实时计算引擎如何选择?Flink or Spark?2.为何需要实时计算?根据IBM的统计报告显示,过去两年内,当今世界上90%的数据产生源于新设备、传感器以及技术的出现,数据增长率也会为此加速。而从...

2019-06-04 11:59:25 323

原创 你确定不来了解下 Redis 字符串的原理吗

前言Redis 有五种基础数据结构:string,list,set,zset,hash.其中 string是最最最简单的也是最常用的.这个数据类型虽然简单但是内部的结构设计却很是精致.基本介绍相比于 Java,在 Redis 中 string 是可以修改的,是动态字符串(Simple Dynamic String 简称 SDS)他的内部结构更像是一个 ArrayList,维护一个字节数...

2019-06-03 11:50:41 296

原创 Nginx反向代理与负载均衡

什么是反向代理与负载均衡什么是反向代理当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问集群。这个时候,我们通过第三方服务器访问服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容,此种代理方式称为反向代理。什么是负载均衡公司会建立很多的服务器,...

2019-06-01 11:52:03 175

原创 你一直在用的 Spring Boot Starters 究竟是怎么回事

Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置。不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置上的一点疏忽,导致整个项目莫名其妙的不可用,顿感生活无所依恋,简称生无可恋。这要归功于组成了 Spring Boot 的各种各样的 starters,有官方提供的,也有第三方开源出来。可以这么说,...

2019-05-30 11:24:21 762

原创 Spring Cloud Ribbon负载均衡

一、简介​ Spring Cloud Ribbon是一个基于HTTP 和 TCP的客户端负载工具,它基于Netflix Ribbon实现,我们可以使用它来进行远程服务负载均衡的调用。它不像Zuul 和 Eureka 等可以独立部署,它虽然是一个工具类框架,但是几乎所有的Spring Cloud微服务架构和基础设施都离不开它,包括后面所介绍的Feign 远程调用,也是基于Ribbon实现的...

2019-05-29 15:02:59 159

原创 如何优雅的设计RESTful API?这是我看过讲的最清晰的文章!

RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。一、URL 设计1.1 动词 + 宾语RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。比如,GET /...

2019-05-28 15:10:38 292

原创 SpringBoot自定义Starter

1.创建自己的Starter一个完整的Spring Boot Starter可能包含以下组件:autoconfigure模块:包含自动配置的代码 starter模块:提供对autoconfigure模块的依赖,以及一些其它的依赖(PS:如果你不需要区分这两个概念的话,也可以将自动配置代码模块与依赖管理模块合并成一个模块)简而言之,starter应该提供使用该库所需的一切1.1...

2019-05-27 12:33:11 227

原创 Spring+SpringMVC+JDBC实现登录

有一位程序员去相亲的时候,非常礼貌得说自己是一名程序员,并解释自己是做底层架构的,于是女方听到"底层"两个字,就一脸嫌弃:什么时候能够到中高级?用久了框架,把原生都忘记了,本章从零开始,熟悉一遍JDBC实现增删改查开发环境jdk 1.8 Maven 3.6 Spring、SpringMVC 4.3.18 dbcp2 jsp Idea创建项目创建项目时,我们选择传统的Ma...

2019-05-25 16:58:01 3164 1

原创 如何制定 Java 性能调优标准?

想让你的程序更快更稳,但是系统经常出各种 bug,无从下手?Java 性能调优全攻略来啦!我有一个朋友,有一次他跟我说,他们公司的系统从来没有经过性能调优,功能测试完成后就上线了,线上也没有出现过什么性能问题呀,那为什么很多系统都要去做性能调优呢?当时我就回答了他一句,如果你们公司做的是 12306 网站,不做系统性能优化就上线,试试看会是什么情况。如果是你,你会怎么回答呢?今天,我们...

2019-05-24 14:01:44 203

原创 面试官问我注解的使用有没有踩过坑

问题背景很久很久前,在我还是青铜的时候(现在依旧是青铜段位)去面试,面试官问我怎么获取类,方法上的注解。当时的我也算用过注解,顺口就回答了,用isAnnotationPresent判断是否加了注解,getAnnotation获取注解对象,然后获取注解中的值。大致的代码是这样子的:正在我沾沾自喜的时候,面试官又乘胜追击了,那么在读取注解的时候,有没有什么情况会导致刚刚你说的...

2019-05-23 10:58:20 232

原创 深究Spring中Bean的生命周期

前言这其实是一道面试题,是我在面试百度的时候被问到的,当时没有答出来(因为自己真的很菜),后来在网上寻找答案,看到也是一头雾水,直到看到了《Spring in action》这本书,书上有对Bean声明周期的大致解释,但是没有代码分析,所以就自己上网寻找资料,一定要把这个Bean生命周期弄明白!网上大部分都是验证的Bean 在面试问的生命周期,其实查阅JDK还有一个完整的Bean生命周期,...

2019-05-22 14:38:19 136

原创 Spring 中使用自定义的 ThreadLocal 存储导致的坑

Spring 中有时候我们需要存储一些和 Request 相关联的变量,例如用户的登陆有关信息等,它的生命周期和 Request 相同。一个容易想到的实现办法是使用 ThreadLocal:public class SecurityContextHolder { private static final ThreadLocal<SecurityContext> secur...

2019-05-21 14:40:28 3496

原创 大白话聊聊面试中常问的一致性 Hash 算法!

当我们在做数据库分库分表或者是分布式缓存时,不可避免的都会遇到一个问题:如何将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少。Hash 取模随机放置就不说了,会带来很多问题。通常最容易想到的方案就是hash 取模了。我们可以将传入的 Key 按照index = hash(key) % N这样来计算出需要存放的节点。其中 hash 函数是一个将字符串转换...

2019-05-20 11:14:41 462

原创 有赞亿级订单同步的探索与实践

1.1 同步现状当前有赞订单同步流程及业务现状如图所示,采用了 ES+HBase(tip1)架构体系去解决搜索和详情的需求,利用 canal(tip2)将数据库变更写入到 mq 中,然后利用同步系统来解决相关数据同步问题,而后续下文中将叙述有赞订单同步面临的问题及应对方案。二、同步2.1 实现同步基础 - 单表同步2.1.1 乱序问题单表同步如图所示:业务场景中,在...

2019-05-19 16:04:47 441

原创 Spring Cloud微服务如何设计异常处理机制?

导读今天和大家聊一下在采用SpringCloud进行微服务架构设计时,微服务之间调用时异常处理机制应该如何设计的问题。我们知道在进行微服务架构设计时,一个微服务一般来说不可避免地会同时面向内部和外部提供相应的功能服务接口。面向外部提供的服务接口,会通过服务网关(如使用Zuul提供的apiGateway)面向公网提供服务,如给App客户端提供的用户登陆、注册等服务接口。而面向内部的服务接口...

2019-05-17 10:45:23 588 1

原创 Java并发编程的艺术,解读并发编程的优缺点

并发编程的优缺点使用并发的原因多核的CPU的背景下,催生了并发编程的趋势,通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。 在特殊的业务场景下先天的就适合于并发编程。 比如在图像处理领域,一张1024X768像素的图片,包含达到78万6千多个像素。即时将所有的像素遍历一边都需要很长的时间, 面对如此复杂的计算量就需要充分利用多核的计算的能力。又比如当我们在网上购物时...

2019-05-16 11:38:47 270

原创 使用SpringSession管理分布式会话时遇到的反序列化问题

问题浮现我们在使用SpringSession时(其实在问题出现时,我们并没有意识到和这儿有关联),遇到了一个隐藏较深的问题。我们像往常一样,在用户登录成功之后,将用户的实体类信息实例化保存到了session中,且session最后保存到了redis里面,这个过程其实是没有什么问题的。随着时间的推移业务的迭代变化,用户实体需要为更新的需求增加额外的字段,于是我们顺其自然的在类中追加其他Str...

2019-05-15 14:52:42 489

原创 探讨一下实现幂等性的几种方式

什么是幂等性?对于同一笔业务操作,不管调用多少次,得到的结果都是一样的。幂等性设计我们以对接支付宝充值为例,来分析支付回调接口如何设计?如果我们系统中对接过支付宝充值功能的,我们需要给支付宝提供一个回调接口,支付宝回调信息中会携带(out_trade_no【商户订单号】,trade_no【支付宝交易号】),trade_no在支付宝中是唯一的,out_trade_no在商户系统中是唯...

2019-05-14 13:08:24 618

原创 如果你项目中引入了Redis,请一定一定看看这篇文章!

目录概述 Redis的数据结构和常用命令 数据持久化 内存管理与数据淘汰机制 Pipelining 事务与Scripting Redis性能调优 主从复制与集群分片 Redis Java客户端的选择本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。然后概览Redis提供的高级能力,并在部署、维护、性能调优等多...

2019-05-13 11:43:51 1589

原创 唠唠面试常问的,Java 面向对象设计的六大原则

这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则。只有掌握了这些原则,我们才能更好的理解设计模式。 我们接下来要介绍以下6个内容。单一职责原则——SRP 开闭原则——OCP 里式替换原则——LSP 依赖倒置原则——DIP 接口隔离原则——ISP 迪米特原则——LOD单一职责原则单一职责原则的定义是就一个类而言,应该仅有一个引起他变化的原因。也就是说一个类应该只负责一件事...

2019-05-11 11:21:48 111

原创 记一次自动恢复的支付故障

故障描述我在入职公司大约半年后,遇到一次非常诡异的故障。有一天早上,大概也是这个季节,阳光明媚,程序猿刚起床,洗洗涮涮,准备去迎接初恋般的工作日,却突然收到一大堆报警,线上消息队列大量积压;当然,我还是一如既往的非常勤奋地在9点之前就到公司的;但是作为一名新员工,环视四周,组内其他员工都还没到公司,运维也都在路上,故障就这样突然降临了。我赶紧开机登录堡垒机,连接线上机器,tail 错误日志。但...

2019-05-10 11:01:30 150

原创 精华:关于Spring的15点总结

1.Spring 中 AOP 的应用场景、Aop 原理、好处?答:AOP 用来封装横切关注点,具体可以在下面的场景中使用:Authentication 权限、Caching缓存、Contextpassing内容传递、Errorhandling错误处理 Lazy loading 懒加载、Debugging 调试、logging,tracing,profiling...

2019-05-09 11:04:40 146

原创 优雅地处理异常真是一门学问啊!

01、你有没有这样的印象,当你想要更新一款 APP 的时候,它的更新日志里总有这么一两句描述:修复若干 bug 杀了某程序员祭天,并成功解决掉他遗留的 bug作为一名负责任的程序员,我们当然希望程序不会出现 bug,因为 bug 出现的越多,间接地证明了我们的编程能力越差,至少领导是这么看的。事实上,领导是不会拿自己的脑袋宣言的:“我们的程序绝不存在任何一个 bug。”但当程序出现...

2019-05-08 14:49:56 221

原创 Spring Boot 注册 Servlet 的三种方法,真是太有用了!

一、Spring Boot 注册Spring Boot 提供了ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegistrationBean三个类分别用来注册 Servlet, Filter, Listener,下面是 Servlet 的示例代码。import javax.servlet.http.Ht...

2019-05-07 14:42:31 4344

原创 千万级用户的大型网站,应该如何设计其高并发架构?

目录(1)单块架构(2)初步的高可用架构(3)千万级用户量的压力预估(4)服务器压力预估(5)业务垂直拆分(6)用分布式缓存抗下读请求(7)基于数据库主从架构做读写分离(8)总结本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的。(1)单块架构一般一个网站刚开始建立的时候,用户量是...

2019-05-06 15:41:00 364 1

原创 微服务技术选型之路

本文以笔者个人经历讲述关于微服务方面的技术选型和相关知识点。微服务模式的项目从初建到上线部署应用,每一个环节都会涉及到相当多的技术细节(上线后的性能调优更需要)。本文着重介绍一套微服务搭建流程中面临的一些技术选型,战略性的技术方案及相关技术的简要介绍,不做每一项技术的深入说明。微服务简介微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单...

2019-05-05 15:56:02 2483

原创 大型网站的可伸缩性架构如何设计?

1. 网站架构的伸缩性设计1.1. 不同功能进行物理分离实现伸缩纵向分离(分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性。横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性。1.2. 单一功能通过集群规模实现伸缩将不同功能分离部署可以实现一定程度的伸缩性,但是随着网站的访问量逐步增加,即使分离到最小粒度的独立部署,单一的服务器也不能满足业务规...

2019-04-30 14:39:37 143

原创 三个常见的代码性能优化方式

编写有效率的代码是我们的一项基本技能。我们千万不要忽视代码的性能要求。越早考虑性能问题,需要支付的成本就越小,带来的价值就越大,不要等到出现性能问题时,才去临时抱佛脚。如果前期没有看重代码的性能问题,那么后期我们就要付出加倍的精力去维护和重构代码。代码的性能并不是可以多块地进行加减乘除,而是如何管理内存、磁盘、网络、内核等计算机资源,已达到性能最优化。在这篇文章里,我选了三个常见且实用的代...

2019-04-29 14:55:33 734

原创 企业应用架构演化探讨:从微服务到Service Mesh

导读当下微服务的实践方案中,Spring Cloud,Dubbo作为主流的落地方案,在企业应用架构中发挥越来越重要的作用。本文探讨企业应用架构如何从微服务架构向Service Mesh架构演化,并形成落地方案。需要特别说明:本文讨论的架构目前适用于普通的企业级应用,其他行业(例如互联网)需要进一步扩展。在讨论之前,我们需要明确一个事实:企业应用一定是围绕业务进行的。无论采用什么的架构落地,...

2019-04-28 15:10:41 198

空空如也

空空如也

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

TA关注的人

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