自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 你还不了解线程池原理?赶紧来补一下

一、为什么要用线程池降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统...

2019-07-08 18:01:00 126

转载 高并发下如何缩短响应时间

定义网站响应时间是指系统对请求作出响应的时间。通俗来讲就是我们把网址输入进浏览器然后敲回车键开始一直到浏览器把网站的内容呈现给用户的这段时间。网站响应时间是越短越好,因为网站页面打开速度越快,就意味着我们的用户可以更快的访问站点或者我们的服务器。一般我们网站的响应时间保持在100~1000m...

2019-07-07 16:09:00 349

转载 Java多线程synchronized关键字引出的多种锁

前言Java 中的synchronized关键字可以在多线程环境下用来作为线程安全的同步锁。本文不讨论synchronized的具体使用,而是研究下synchronized底层的锁机制,以及这些锁分别的优缺点。一、synchronized机制synchronized关键字是JAVA...

2019-07-06 15:26:00 116

转载 JVM史上最全实践优化没有之一

1.jvm的运行参数在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。1.1 三种参数类型jvm的参数类型分为三类,分别是 : 标准参数 : -help -version -X参数(非标准参数) -Xint ...

2019-07-05 13:42:00 116

转载 优雅快速的统计千万级别uv

定义PV是page view的缩写,即页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为PVUV是unique visitor的简写,是指通过互联网访问、浏览这个网页的自然人。通过以上的概念,可以清晰的看出pv...

2019-07-04 10:02:00 142

转载 SpringBoot:详解RabbitMQ 延迟队列

SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程初探RabbitMQ消息队列中介绍了RabbitMQ...

2019-07-03 19:02:00 257

转载 SpringBoot:初探 RabbitMQ 消息队列

SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程MQ全称(Message Queue)又名消息队列,...

2019-07-02 11:33:00 154

转载 RabbitMQ指南之五:主题交换器(Topic Exchange)

在上一章中,我们完善了我们的日志系统,用direct交换器替换了fanout交换器,使得我们可以有选择性地接收消息。尽管如此,仍然还有限制:不能基于多个标准进行路由。在我们的日志系统中,我们可能不仅希望根据日志等级订阅日志,还希望根据日志来源订阅日志。这个概念来自于unix工具syslog,它...

2019-07-01 18:21:00 171

转载 RabbitMQ指南之四:路由(Routing)和直连交换机(Direct Exchange)

 在上一章中,我们构建了一个简单的日志系统,我们可以把消息广播给很多的消费者。在本章中我们将增加一个特性:我们可以订阅这些信息中的一些信息。例如,我们希望只将error级别的错误存储到硬盘中,同时可以将所有级别(error、info、warning等)的日志都打印在控制台上。1、绑定(Bin...

2019-07-01 10:24:00 168

转载 RabbitMQ指南之三:发布/订阅模式(Publish/Subscribe)

在上一章中,我们创建了一个工作队列,工作队列模式的设想是每一条消息只会被转发给一个消费者。本章将会讲解完全不一样的场景:我们会把一个消息转发给多个消费者,这种模式称之为发布-订阅模式。  为了阐述这个模式,我们将会搭建一个简单的日志系统,它包含两种程序:一种发送日志消息,另一种接收并打印日...

2019-06-30 13:58:00 208

转载 RabbitMQ指南之二:工作队列(Work Queues)

在上一章的指南中,我们写了一个命名队列:生产者往该命名队列发送消息、消费从从该命名队列中消费消息。在本章中,我们将创建一个工作队列,用于在多个工作者之间分配耗时的任务。工作队列(即任务队列)的主要思想是避免立即执行那些需要等他们执行完成的资源密集型任务。相反,我们将任务安排在稍后完成。我们将任...

2019-06-29 17:37:00 132

转载 RabbitMQ指南之一:"Hello World!"

  为什么要使用MQ消息中间件?它解决了什么问题?关于为什么要使用消息中间件?消息中间件是如何做到同步变异步、流量削锋、应用解耦的?网上已经有很多说明,我这里就不再说明。我在接下来的RabbitMq系列博客里会将官方的讲解翻译过来,同时加以自己的理解整理成博客,希望能和大家共同交流,一起进步。...

2019-06-29 14:24:00 91

转载 Spring Boot之RabbitMQ

RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache,当然了今天的主角还是讲 RabbitMQ。消息中间件最主要的作用是解耦,中间件最...

2019-06-28 18:22:00 88

转载 RabbitMQ如何保证队列里的消息99.99%被消费?

1. 本篇概要其实,还有1种场景需要考虑:当消费者接收到消息后,还没处理完业务逻辑,消费者挂掉了,那消息也算丢失了?,比如用户下单,订单中心发送了1个消息到RabbitMQ里的队列,积分中心收到这个消息,准备给这个下单的用户增加20积分,但积分还没增加成功呢,积分中心自己挂掉了,导致数据出现...

2019-06-28 10:41:00 212

转载 RabbitMQ如何通过持久化保证消息99.99%不丢失?

1. 本篇概要要解决该问题,就要用到RabbitMQ中持久化的概念,所谓持久化,就是RabbitMQ会将内存中的数据(Exchange 交换器,Queue 队列,Message 消息)固化到磁盘,以防异常情况发生时,数据丢失。其中,RabblitMQ的持久化分为三个部分:交换器(Exc...

2019-06-27 17:17:00 155

转载 RabbitMQ如何保证消息99.99%被发送成功?

1. 本篇概要RabbitMQ针对这个问题,提供了以下几个机制来解决:生产者确认持久化手动Ack本篇博客我们先讲解下生产者确认机制,剩余的机制后续单独写博客进行讲解。2. 生产者确认要想保证消息不丢失,首先我们得保证生产者能成功的将消息发送到RabbitMQ服务器。但在之前...

2019-06-27 11:20:00 119

转载 RabbitMQ消息可靠性分析

Introduction有很多人问过我这么一类问题:**RabbitMQ如何确保消息可靠?**很多时候,笔者的回答都是:说来话长的事情何来长话短说。的确,要确保消息可靠不只是单单几句就能够叙述明白的,包括Kafka也是如此。可靠并不是一个绝对的概念,曾经有人也留言说过类似全部磁盘损毁也会导致...

2019-06-26 17:38:00 133

转载 【面试】如果把线程当作一个人来对待,所有问题都瞬间明白了

多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白。强烈建议去运行下文章中的示例代码,自己体会下。多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白。强烈建议去运行下文章中的示例代码,自己体会下。问题究竟出在哪里?一个线程执行,固...

2019-06-26 10:07:00 125

转载 关于MQ,你必须知道的

OK那么消息队列MQ有什么套路呢?使用消息队列场景和好处使用消息队列会带来什么问题,有什么解决方案如何使用MQ(以ActiveMQ为例的简单例子)1.消息队列的应用场景和好处:异步-流量削峰  我们先来看下传统的服务器接收处理请求的流程  如上图,在不使用消息队列服...

2019-06-25 17:09:00 227

转载 SpringBoot2.0 整合 RocketMQ ,实现请求异步处理

一、RocketMQ1、架构图片2、角色分类(1)、BrokerRocketMQ 的核心,接收 Producer 发过来的消息、处理 Consumer 的消费消息请求、消息的持 久化存储、服务端过滤功能等 。(2)、NameServer消息队列中的状态服务器,集群的各个组件通过它...

2019-06-25 11:11:00 108

转载 Spring Boot 整合 Mybatis 的完整 Web 案例

一、运行 springboot-mybatis 工程git clone 下载工程 springboot-learning-example ,项目地址见 GitHub。下面开始运行工程步骤(Quick Start):1. 数据库准备a.创建数据库 springbootdb:CREATE ...

2019-06-24 17:02:00 75

转载 Spring Boot 整合 MyBatis

最近项目原因可能会继续开始使用MyBatis,已经习惯于spring-data的风格,再回头看xml的映射配置总觉得不是特别舒服,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便。Spring中整合MyBatis就不多说了,最近大量使用Spring Boot,因此整理一下Sprin...

2019-06-24 11:02:00 45

转载 Spring Boot 集成 Memcached

Memcached 介绍Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是...

2019-06-21 17:46:00 56

转载 Spring Boot 如何解决项目启动时资源初始化

在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。这个神器就是 CommandLineRunner,CommandLineRunner...

2019-06-21 15:32:00 128

转载 springboot 集成 Freemarker

前面我们已经实现了thymeleaf模板,其实Freemarker和thymeleaf差不多,都可以取代JSP页面,实现步骤也差不多,我们来简单实现一下引入pom.xml依赖如下<dependency> <groupId>org.springframewor...

2019-06-21 11:25:00 81

转载 Springboot 集成 Thymeleaf 及常见错误

  Thymeleaf模板引擎是springboot中默认配置,与freemarker相似,可以完全取代jsp,在springboot中,它的默认路径是src/main/resources/templates 静态文件css, js 等文件默认路径是src/main/resources/...

2019-06-20 17:24:00 191

转载 一文搞定HashMap的实现原理和面试

前言HashMap在日常开发中基本是天天见的,而且都知道什么时候需要用HashMap,根据Key存取Value,但是存和取的时候那些操作却是很少去研究。同时在面试中也是面试官们必问的。以下是基于JDK1.8正文先看看HashMap的结构图:1. 先来认识一下HashMap中定义的一些...

2019-06-20 14:08:00 71

转载 Redis分布式锁服务

概述在多线程环境下,通常会使用锁来保证有且只有一个线程来操作共享资源。比如:object obj = new object();lock (obj) { //操作共享资源 }利用操作系统提供的锁机制,可以确保多线程或多进程下的并发唯一操作。但如果在多机环境下就不能满足了,当A...

2019-06-20 09:38:00 137

转载 Redis高可用分布式

高可用高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。 停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。解决单点问题主要有2种方式:主备方式这种通常是一台主机、一台...

2019-06-19 16:05:00 67

转载 Redis 管道技术

Redis 管道技术Redis是一种基于客户端-服务端模型(C/S模型)以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。...

2019-06-19 10:48:00 83

转载 浅谈Redis五种数据结构的底层原理

概念Redis作为一个开源的用C编写的非关系型数据库,基于优秀的CRUD效率,常用于软件系统的缓存,其本身提供了以下五种数据格式:string:字符串list:列表hash:散列表set:无序集合zset:有序集合接下来我们就要针对这五种数据结构,来分析其...

2019-06-18 16:00:00 120

转载 Java解决高并发秒杀

一:问题首先我们要考虑的是为什么要解决高并发,高并发瓶颈出现在哪里,有了解过的朋友肯定知道是在数据库,因为在大量请求去操作数据库时会出现数据的错乱,超卖,系统崩溃,mysql死锁等现象。二:思路1. 页面静态化:就是将整个页面存储到redis中,下次访问时去读取redis中的页面值...

2019-06-18 11:51:00 135

转载 分布式场景下如何保证消息队列实现最终一致性

考虑一个分布式场景中一个常见的场景:服务A执行某个数据库操作成功后,会发送一条消息到消息队列,现在希望只有数据库操作执行成功才发送这条消息。下面是一些常见的作法:1. 先执行数据库操作,再发送消息public void purchaseOrder() { orderDao.save...

2019-06-17 17:05:00 133

转载 【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看

不是线程的安全面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。切记望文生义。同理,“线程安全”也不是指线程的安全,而是指内存的安全。为什么如此说呢?这和操作系统有关。目前主...

2019-06-17 10:25:00 61

转载 【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的最清楚的好文章(快快珍藏)...

网上有很多讲同步/异步/阻塞/非阻塞/BIO/NIO/AIO的文章,但是都没有达到我的心里预期,于是自己写一篇出来。常规的误区假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据。如果网速很慢,代码发起一个HTTP请求后,就卡住不动...

2019-06-15 14:02:00 130

转载 史上最详细Java内存区域讲解

常见面试题基本问题介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String类和常量池8种基本类型的包装类和常量池一、概述对于 Java...

2019-06-14 16:59:00 162

转载 深入理解CAS算法原理

1、什么是CAS?CAS:Compare and Swap,即比较再交换。jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的...

2019-06-14 10:51:00 88

转载 看复旦大学工程硕士手把手教你手写MyBatis,纯手工打造开源框架(附详细视频教程)...

MyBatis框架的优缺点及其适用的场合MyBatis的优点(1)与JDBC相比,减少了50%以上的代码量。(2)MyBatis是嘴加单的持久层框架,小巧并且简单易学。(3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML文件里,从程...

2019-06-13 11:36:00 149

转载 MyBatis框架介绍及实战操作

一、基本概念和介绍  数据持久化的概念  数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如,文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型、XML、二进制流等。  当我们编写应用程序操作数据库,对表数据进行增...

2019-06-12 14:41:00 281

转载 分布式架构原理解析

1. 分布式术语1.1. 异常服务器宕机内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上。网络异常有一种特殊的网络异常称为——网络分区,即集群的所有节点被划分为多个区域,每个区域...

2019-06-12 10:55:00 570

空空如也

空空如也

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

TA关注的人

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