自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 探秘Java中的String、StringBuilder以及StringBuffer

探秘Java中String、StringBuilder以及StringBuffer  相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲:  一.你了解String类吗?  二.深入...

2018-08-28 10:20:30 160

原创 Hessian原理分析

Hessian 原理分析  一.      远程通讯协议的基本原理网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http 、 tcp 、 udp 等等, http 、 tcp 、 udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协议,网络 IO ,主要有 bio 、 nio 、 aio 三种...

2018-08-27 15:31:39 194

原创 Redis集群中的节点如何保证数据一致

主从复制:1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主...

2018-06-27 14:11:33 17113 2

转载 类加载器:ServiceLoader简述

e();  }  (2)具体服务实现1:HDFSService[java] view plain copypackage com.impl;    import com.service.IService;    public class HDFSService implements IService {        @Override        public String sayHello(...

2018-04-17 13:32:50 200

原创 Filter及FilterChain的使用详解

一、Filter的介绍及使用什么是过滤器?与Servlet相似,过滤器是一些web应用程序组件,可以绑定到一个web应用程序中。但是与其他web应用程序组件不同的是,过滤器是"链"在容器的处理过程中的。这就意味着它们会在servlet处理器之前访问一个进入的请求,并且在外发响应信息返回到客户前访问这些响应信息。这种访问使得过滤器可以检查并修改请求和响应的内容。过滤器适用于那些地方?l  为一个we...

2018-04-17 13:27:11 8913 1

原创 Spring的Controller中某个方法参数加了@RequestBody之后请求无法进入方法

遇到上述问题,先检查JS的Ajax相关代码有没有写对,模版如下:[javascript] view plain copy                     $.ajax({      type : 'POST',      dataType : 'json',      url : getRootPath() + '/require/publish',      data : JSON.st...

2018-03-29 16:48:16 8042

转载 JAVA使用POI如何导出百万级别数据

用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会常报OOM错误,这时候调整JVM的配置参数也不是一个好对策(注:jdk在32位系统中支持的内存不能超过2个G,而在64位中没有限制,但是在64位的系统中,性能并不是太好),好在POI3.8版本新出来了一个SXSSFWorkbook对象,它就是用来解决大数据量以及超大数据量的导入导出操作的,但是SXSSFWorkbo...

2018-03-21 10:00:48 168

转载 SOA和微服务架构的区别?

https://www.zhihu.com/question/37808426

2018-03-20 17:06:03 142

原创 redis持久化得方式

一、概述      Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存储在内存中的数据将会丢失,在很多情况下是无法容忍这样的事情的。所以,我们需要将内存中的数据持久化!典型的需要持久化数据的场景如下:将Redis作为数据库使用;将Redis作为缓存服务器使用,但是缓存miss后会对性能造成很大影响,所有缓存同时失效时会造成服务雪崩,无法响应。本文介绍R...

2018-03-19 10:51:21 121

原创 redis 的两种持久化方式及原理

 Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。    Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也...

2018-03-19 10:25:48 133

转载 微服务架构中 API 的开发与治理

前面的文章中有说到微服务的通信方式,Martin Folwer 先生在他对微服务的定义中也提到“每个服务运行在其独立的进程中,服务与服务间采用 轻量级的通信机制 互相协作(通常是基于 HTTP 协议的 RESTful API)”。那么,在各个微服务之间具体怎么进行轻量级的通信呢?这篇文章就来聊聊微服务 API 开发及治理的几个方面。首先需要解释一下,标题中的“内网环境中 的 API”指的是提供给内...

2018-03-16 16:50:11 467

转载 如何保障微服务架构下的数据一致性

虽然已经红了很久,但是“微服务架构”正变得越来越重要,也将继续火下去。各个公司与技术人员都在分享微服务架构的相关知识与实践经验,但我们发现,目前网上的这些相关文章中,要么上来就是很有借鉴意义的干货,要么就是以高端的专业术语来讲述何为微服务架构。就是没有一个做到成熟地将技术传播出来,同时完美地照顾“初入微服务领域人员”,从 0 开始,采用通俗易懂的语言去讲解微服务架构的系列。所以,我们邀请青柳云的苏...

2018-03-16 16:48:23 187

转载 SpringCloud学习:Eureka、Feign(含示例代码)

一、Spring Cloud Netflix简介SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中的配置故那里、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了简单的开发方式。SpringCloud下包含了多个工程,其中的Spring Cloud Netflix提供了一系列搭建微服务基础架构的功...

2018-03-16 16:34:32 358

原创 spring cloud组件

这篇文章对springcloud 各个组件大概介绍了一下。转载本文。其实我主要是对ribbon ,resttemplate ,feignclient三者之间的关系一直模糊不清。这篇文章里提到了这三者。感觉介绍的还不错。使用feignclient时,它会通过ribbon机制获取对应服务的ip列表。比方说A服务,有两个实例。每个实例的实际ip是:127.0.0.1:9871,127.0.0.1:987...

2018-03-16 09:36:21 207

原创 单系统登录机制

一、单系统登录机制1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系  但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求...

2018-03-15 17:43:29 141

原创 Java内存溢出与栈溢出

一、背景知识1、JVM体系结构2、JVM运行时数据区3、JVM内存模型JVM运行时内存 = 共享内存区 + 线程内存区3-1、共享内存区共享内存区 = 持久带 + 堆持久带 = 方法区 + 其他堆 = Old Space + Young SpaceYoung Space = Eden + S0 + S13-1-1、持久代JVM用持久带(Permanent Space)实现方法区,主要存放所有已加载...

2018-03-13 16:46:51 148

原创 Object类的常用方法汇总

Java语言不同于C++语言,是一种单根继承结构语言,也就是说,Java中所有的类都有一个共同的祖先。这个祖先就是Object类。object类的结构 如图可知,Object类有12个成员方法,按照用途可以分为以下几种 1,构造函数 2,hashCode和equale函数用来判断对象是否相同, 3,wait(),wait(long),wait(long,int),notify(),notifyAl...

2018-03-13 15:32:50 233

原创 Java基础之—反射(非常重要)

反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解...

2018-03-13 14:48:42 125

原创 jdk1.7和jdk1.8中hashmap区别

put操作:jdk1.7中的扩容插入红黑树简介:

2018-03-13 09:20:36 931

原创 redis是单线程的,为什么存取很快

2018-02-09 10:10:07 790

转载 JVM原理讲解和调优

一、什么是JVM    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而

2018-02-07 10:55:19 84

转载 JVM详解-从入门到深入了解

Java Virtual MechineAbout JVM内存划分堆内存分配VM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指 定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此服务器一般设置-Xms、-

2018-02-06 18:22:11 112

原创 java notify和notifyAll的区别

首先从名字可以了解,notify是通知一个线程获取锁,notifyAll是通知所有相关的线程去竞争锁。notify不能保证获得锁的线程,真正需要锁,并且可能产生死锁。举例1:所有人(消费者线程)准备吃饭,食堂没有开放(没有释放锁)打饭窗口(锁),所有人等待(WAITING)。食堂开饭打饭窗口(释放锁),并广播消息“开饭了”(notifyAll),所有人竞争排队,并等

2018-02-06 18:17:06 102

转载 java 保证线程顺序的几种方式

方法一:通过共享对象锁加上可见变量来实现。[java] view plain copypublic class MyService {        private volatile int orderNum = 1;        public synchronized void methodA() {         

2018-02-06 15:44:32 153

转载 JAVA集合类汇总

一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、层次关系如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口Collection接口是集合类的根接口,Java中没有提供这个接口的直

2018-02-06 14:14:56 79

原创 详解三种java实现多线程的方式

java中实现多线程的方法有两种:继承Thread类和实现runnable接口。1.继承Thread类,重写父类run()方法?123456789101112131415publicclass threa

2018-02-02 12:18:32 83

原创 Spring中Bean及@Bean的理解

Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法: 一、Bean是啥1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化); 2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性; 3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到S

2018-02-01 14:29:56 142

转载 Spring之自动装配解析

set注入和构造注入有时在做配置时比较麻烦。所以框架为了提高开发效率,提供自动装配功能,简化配置。Spring框架式默认不支持自动装配的,要想使用自动装配需要修改spring配置文件中标签的autowire属性。自动装配属性有5个值可选,分别代表不同的含义。 1、byName 从Spring环境中获取目标对象时,目标对象中的属性会根据名称在整个Spring环境中查找标签的id属性值

2018-02-01 14:13:48 158

转载 分布式事务及分布式系统一致性解决方案

在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣? 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、

2018-01-31 11:43:47 127

原创 MySQL中的搜索引擎汇总

数据库中的存储引擎其实是对使用了该引擎的表进行某种设置,数据库中的表设定了什么存储引擎,那么该表在数据存储方式、数据更新方式、数据查询性能以及是否支持索引等方面就会有不同的“效果”。在MySQL数据库中存在着多种引擎(不同版本的MySQL数据库支持的引擎不同),熟悉各种引擎才能在软件开发中应用引擎,从而开发出高性能的软件,MySQL数据库中的引擎有哪些呢?一般来说,MySQL有以下几种引擎:ISA

2018-01-31 11:14:08 364 1

转载 深入理解分布式事务,高并发下分布式事务的解决方案

1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产

2018-01-30 17:26:10 204

转载 微服务架构的服务与发现-Spring Cloud

写文章注册登录首页下载App×微服务架构的服务与发现-Spring Cloud1 为什么需要服务发现简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB、KV,去掉重量级ESB),并且强调DevOps和快速演化。这就要求我们必须采用与一站式时代、泛SOA时代不同的技术栈,而Spring Cloud就是其中的佼佼者。DevO

2018-01-29 13:00:36 1293

原创 spring cloud 与spring boot

Spring Cloud 架构我们从整体来看一下Spring Cloud主要的组件,以及它的访问流程1、外部或者内部的非Spring Cloud项目都统一通过API网关(Zuul)来访问内部服务.2、网关接收到请求后,从注册中心(Eureka)获取可用服务3、由Ribbon进行均衡负载后,分发到后端的具体实例4、微服务之间通过Feign进

2018-01-29 12:25:28 466

转载 RocketMQ API使用简介、拉取机制

顺序消费:粗略的理解为发送完第一条消费完后才能发送第二条消息。。。  顺序消费例子这里有多个Consumer进行消费(两个Consumer启动)   MQ避免分布式事务案例      例子Producer端       Consumer端没有变化

2018-01-25 12:11:01 5779 2

原创 Eureka 的 Application Client 客户端的运行示例

上篇以一个 demo 示例介绍了 Eureka 的 Application Service 客户端角色。今天我们继续了解 Eureka 的 Application Client 客户端,以一个简单的交互示例,介绍 Application Client 是如何使用 Eureka 获取 Application Service 实例并发送请求的。        上篇《Eureka 的 App

2018-01-22 16:26:54 649

原创 防止表单重复提交的八种简单有效的策略

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:点击提交按钮两次。点击刷新按钮。使用浏览器后退按钮重复之前的操作,导致重复提交表单。使用浏览器历史记录重复提交表单。浏览器重复的HTTP请求。用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们

2018-01-22 16:09:48 1697

转载 Ribbon 和 Eureka 的集成

Ribbon 是 Netflix 发布的云中间层服务开源项目,其主要功能是提供客户侧软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Eureka 是一个 RESTful 服务,用来定位运行在 AWS 域(Region)中的中间层服务。本文介绍 Eureka 和 Ribbon 的集成,附带 Ribbon 自定义负载均衡算法示例。        Ribbon 和 Eureka 的

2018-01-22 16:07:04 308

转载 云中间层服务 - 区域感知负载均衡器 Ribbon

Ribbon 简介        Ribbon 是 Netflix 发布的云中间层服务开源项目,其主要功能是提供客户侧软件负载均衡算法,将 Netflix 的中间层服务连接在一起。        Why Ribbon?        Ribbon 的区域感知负载均衡器的功能久经考验。区域感知负载均衡器内置电路跳闸逻辑,可被配置基于区域同源关系(Zone Affinity,也就是更倾

2018-01-22 16:05:27 288

原创 使用Swagger2Markup实现API文档的静态部署(一)

在阅读本文之前,您先需要了解Swagger的使用,如果您还不知道它是用来干嘛的,请先阅读《Spring Boot中使用Swagger2构建强大的RESTful API文档》一文。前言在学会了如何使用Swagger之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。但是,如前文方式构建的文档必须通过在项目中整合swagger-ui、或使用单独部署

2018-01-22 15:14:39 5822 6

转载 缓存穿透、缓存并发、热点缓存之最佳招式

一、前言我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题:缓存穿透缓存并发缓存失效缓存穿透imgimgimg注:上面三个图会有什么问题呢?我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果

2018-01-15 16:48:59 126

空空如也

空空如也

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

TA关注的人

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