自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nuoWei_SenLin的博客

黄沙百战穿金甲,不破楼兰终不还

  • 博客(70)
  • 资源 (3)
  • 论坛 (1)

原创 Apache Dubbo系列:集群容错整体架构

本节为大家介绍Dubbo的集群容错的整体架构,让大家对整个集群容错层有一个整体的理解,并且让大家知道,集群容错层是如何工作的,每个组件的作用以及结构。导读在分布式环境中,为了避免单点故障,通常一个业务会部署在多台机器上。服务消费方调用时,如果服务提供方由于某些原因不可用,在Dubbo的集群容错的作用下,会自动根据某些容错策略选择可用的服务给消费方,以达到整个服务集群的高可用。集群容错在讲解源码前,我们先看一下集群容错的整体架构图和每个组件的作用。我们可以把Cluster看作是一个集群

2020-07-27 23:57:44 32

原创 Apache Dubbo系列:Netty与Dubbo是如何对接的

在 Dubbo 中,很多扩展点都是通过Dubbo SPI机制进行加载的,比如 Transporter、Cluster、LoadBalance 等。有时,有些扩展并不想在框架启动阶段被加载,而是希望在扩展方法被调用时,根据运行时参数进行加载(按需加载。由于Java SPI机制有性能问题,Dubbo SPI对Java SPI做了一定优化)。Dubbo 会为拓展接口生成具有代理功能的代码。然后通过 javassist 或 jdk 编译这段代码,得到 Class 类,最后再通过反射创建代理类。如果大家对Dubb

2020-07-27 23:48:02 71

原创 Apache Dubbo系列:增强SPI

Dubbo良好的扩展性与两个方面是密不可分的,一是Dubbo整体架构中,在合适的场景中巧妙的使用了设计模式,二是使用Dubbo SPI机制,使Dubbo的接口与实现完全解耦。在本次分享中,您可以了解如下知识点 JavaSPI机制 Java SPI机制的缺点 Dubbo SPI配置规范 Dubbo SPI的分类与缓存 Dubbo SPI的特点 Dubbo SPI源码分析 Dubbo对IOC的支持 JavaSPI机制SPI,全称S..

2020-07-26 23:08:13 35

原创 Apache Dubbo系列:ZooKeeper注册中心

在Dubbo微服务体系中,注册中心是核心组件之一。Dubbo通过注册中心实现分布式环境中各个服务之间的注册和发现,是各个节点间的纽带。在微服务体系中,注册中心的作用如下: 服务动态加入。一个服务提供者可以通过注册中心动态的将自己暴露给各个服务消费方。 服务动态订阅。服务消费方可以通过注册中心,实时的感知新旧服务的上线与下线。 动态调整。注册中心支持参数的动态调整,新参数将自动更新到所有相关的节点中。 统一配置。提供统一的配置服务。 在Dubb...

2020-07-26 22:46:44 34

原创 Netty入门之TimeServer

嗨,大家好!!!最近,上级给我安排了个任务,要把系统中与websocket的的模块独立出来,并用Netty重写,哈哈,从毕业到现在一直做的都是业务方面的开发,这方面的工作还没怎么做过,很高兴的接了这个任务。下面就带大家初识JAVA界大名鼎鼎的Netty,从这篇文章中,大家可以学到的内容如下: 什么是Netty JDK中的I/O的缺点 为什么选择Netty ...

2019-03-24 16:56:37 1629

原创 Dubbo如何正确捕获业务异常

    笔者所在的公司,项目正在重构,从一个SpringBoot项目往Dubbo上迁移,但在拆分后发现一个问题,服务消费者(后文用Consumer代替)无法正确捕获服务提供者(后文用provider代替)所抛出的非受检查异常。在未拆分之前,项目都是打成一个jar包运行,service层未处理的unchecked异常,在controller层捕获到后可以正常打印出异常的堆栈信息,方便开发人员快速定位...

2019-02-09 21:28:17 8862 3

原创 【算法面试】二叉搜索树

每一个内心仰望理想的人,都在低头干活 摘要顾名思义,二叉搜索树是由两个孩子节点组成的树状的数据结构,由于其特殊的性质,任意一个节点的左子树的每个节点总比这个节点小,右子树的每个节点总比这个节点大,所以二叉搜索树的查询性能比较好。本文只讲解二叉搜索树,二叉平衡树不是本文重点 正文不得不承认,递归思想在二叉树中展现的淋漓尽致,本文讲解的二叉搜索树主要操作如下:...

2019-02-03 22:30:06 2738

原创 【算法面试】TopN问题

竹石 作者:郑燮 咬定青山不放松,立根原在破岩中。千磨万击还坚劲,任尔东西南北风。 前言 又到了一年一度的南北人口大迁移的时候,没有买票的赶紧买票,今年很早就已经回家准备过年了,因为小编已经离职啦,最近正在积极复习找工作,闲话不多扯,开始今天的正题。面试题目:如何在10亿个整数中找出前1000个最大的数。 这就是有名的TopN问题,这样的问题有很...

2019-02-01 02:59:01 6571

原创 从数据存储角度分析Redis性能为何如此高

 胸藏文墨怀若谷,腹有诗书气自华前言Redis作为一种KV缓存服务器,有着极高的性能,相对于memcache,Redis支持更多中数据类型,因此在业界广泛应用。正文记得笔者刚毕业那会参加面试,面试官会问我Redis为什么快,由于当时技术水平有限,我只能回答出如下两点:数据是存储在内存中的。 Redis是单线程的。当然,将数据存储在内存中,读取的时候后不需要进行磁...

2019-01-30 13:19:04 3369

原创 堆排序(JAVA版)

堆排序原理就不解释了,大家可以自行查找,建议大家阅读《算法导论》第六章堆排序,很详细哦,在这里直接把源码贴出来。如果大家想了解另外两种牛掰的排序算法,请猛戳下面链接快速排序归并排序 平均复杂度O(nlogn)public class HeapSort { public static int arr[] = {1,7,9,5,4,3,9,8,10,19,15,0,1};...

2019-01-29 17:34:25 2679

原创 快速排序(JAVA版)

快速排序,原理就不介绍了网上一搜一大堆,这里只贴出源码如果大家想了解其他两种牛掰的排序算法,请猛搓下面链接 堆排序 归并排序public class QuickSort { public static void main(String[] args) { int arr[] = {2,4,7,8,9,4,5,1,2,3,6,8,7,8,54,4,2,58,...

2019-01-27 18:01:43 2568

原创 归并排序(JAVA版)

最近复习算法,为了年后找工作做准备,看了看网上归并排序,只懂算法原理源码没有看懂,算了,还是根据原理手撸吧!!!如果大家想了解其他两种牛掰的排序,请猛戳下面链接快速排序 堆排序归并排序复杂度O(nlogn)public class MergeSort { public static int arr[] = {2,4,7,8,9,4,5,1,2,3,6,8,7,8,54...

2019-01-27 17:16:01 2711

原创 并发编程JUC包源码分析——从AtomicInteger到Unafe

AtomticInteger类我们都知道,在多线程环境中操作一个Integer类型的数据会产生数据不一致现象,比如i++操作,这是因为i++操作并不是一个原子操作,来看下面的例子:public class Main{ public static int i = 0; public static void main(String[] args) throws Excepti...

2018-11-22 17:20:37 7213

原创 MySQL InnoDB存储引擎体系架构 —— 索引高级

        众所周知,在MySQL的InnoDB引擎,为了提高查询速度,可以在字段上添加索引,索引就像一本书的目录,通过目录来定位书中的内容在哪一页。        InnoDB支持的索引有如下几种:B+树索引 全文索引 哈希索引        笔者上一篇文章已MySQL InnoDB存储引擎体系架构 —— 内存管理 经提到过,InnoDB的哈希索引是自适应的,用户无法对其进行干...

2018-11-03 18:02:20 7251

原创 MySQL InnoDB存储引擎体系架构 —— 内存管理

        笔者最近研究MySQL的Innodb引擎底层方面的技术,打算写一系列关于MySQL优化方面的技术文章,今天给大家分享的内容是MySQL InnoDB内存和缓冲池方面的知识。        我们都知道,InnoDB引擎是基于磁盘存储的,但由于物理硬盘访问速度与内存访问速度存在着巨大的鸿沟,InnoDB常用缓冲池技术来提高数据库的性能。        与常用的缓存思想类似,在数...

2018-10-13 00:27:25 8385

原创 Nginx性能调优,解决C10K问题

        公司的技术总监最近出了一道架构方面的问题让我们同组的开发人员设计,题目是这样的:有个签到功能,需要记录每个⽤户每年每⼀天的签到情况。假设⽤户量在千万,甚⾄亿级,该如何设计。思考这个问题后,我给出的设计方案如下:第一层:通过DNS,同一个域名绑定多个IP,在DNS上进行负载均衡。第二层:中央Nginx集群,通过DNS负载均衡后,通过nginx二次负载均衡(Nginx的配置...

2018-09-10 20:06:07 9378

原创 Apache 开源的curator 基于Zookeeper实现分布式锁以及源码分析

前一段时间,我发表了一篇关于Redis实现分布式锁 分布式环境下利用Redis实现分布式锁,今天我带领大家熟悉用zookeeper实现分布式锁。在学习分布式锁之前,让我们想一想,在什么业务场景下会用到分布式锁以及设计分布式锁要注意什么?分布式锁介绍1、在什么业务场景中会使用到分布式锁当多个客户端访问服务器上同一个资源的时候,需要保证数据的一致性,比如秒杀系统,举个栗子:某件商品...

2018-08-25 20:38:50 7552

原创 RabbitMQ中的事务与confirmSelect模式

好久没写技术文章了,由于公司马上要做消息相关的业务,所以最近在Docker上搭了一台RabbitMQ并研究研究。从网易蜂巢上拉取的镜像:docker pull hub.c.163.com/library/rabbitmq:latest启动容器:docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672...

2018-08-06 19:34:58 11167 1

原创 老司机带大家领略MySQL中的乐观锁和悲观锁

为什么需要锁在并发环境下,如果多个客户端访问同一条数据,此时就会产生数据不一致的问题,如何解决,通过加锁的机制,常见的有两种锁,乐观锁和悲观锁,可以在一定程度上解决并发访问。乐观锁乐观锁,顾名思义,对加锁持有一种乐观的态度,即先进行业务操作,不到最后一步不进行加锁,"乐观"的认为加锁一定会成功的,在最后一步更新数据的时候在进行加锁,乐观锁的实现方式一般为每一条数据加一个版本号,具体流程是这样的: ...

2018-05-27 18:55:28 12756 3

转载 Java内存溢出(OOM)异常完全指南

这也许是目前最为完整的Java OOM异常的解决指南。1、java.lang.OutOfMemoryError:Java heap spaceJava应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:Heap space(堆空间)和Permgen(永久代):这两个区域的大小可以在JVM(Java虚拟机)启动时通过参数-Xmx和-XX:MaxPermSize设置,如果你没有显式设置,...

2018-05-22 22:46:30 9179

原创 HashMap部分源码剖析

HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的结构如下:我们可以看到HashMap的结构主要分为两大部分:左侧的table和右侧的链表,下面重点分析HashMap的...

2018-05-19 16:36:59 9597

转载 JVM性能调优总结

1.堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。典型设置:java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM最大可用内存为3550M。-Xms3550m:...

2018-05-11 19:17:31 10936

原创 分布式环境下利用Redis实现分布式锁

    在某些高并发的业务场景下,例如秒杀、选课等系统,为了避免出现商品超卖、选课人数超出课程规定人数的问题发生,读写数据库时需要进行加锁操作,保证某时刻已有一个用户在操作。在Java单机应用中,直接使用synchronized关键字没有任何毛病,但在分布式系统中就不行了,这时就需要引入分布式锁来解决问题。分布式锁可以用Zookeeper或Redis来实现,本文重点讲解使用Redis实现分布式锁。...

2018-04-22 21:25:38 11089

原创 KeepAlived配置与Nginx高可用

keepalived安装和nginx高可用一、安装keepalived1.1  下载keepalived官方网址 http://keepalived.org ,下载1.1.19版本: wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gztar -xf keepalived-1.1.19.tar.gz...

2018-04-11 15:40:25 10976

原创 css3动画效果和3D模型

今天了解了css3的动画渐变效果,如果我们要对页面中的某个元素的样式进行变化,就不用js或jquery苦苦的写代码了,直接用css3的这个transition这个属性就ok,方便快捷,下面请看demo。一、动画效果我要对某个div操作,例如:当鼠标移入div中,改变其width、height和background,如果不使用transition属性而直接用hover的话,会使页面非常死板、生硬,如...

2018-03-18 16:18:00 11509

原创 ionic项目之使用jquery

一、ionic项目操作(1)——引入jquery    step1:在项目中引入jquery,目录结构如下                step2:在 TypeScript 中编写声明文件                在src下新建js目录,并新建TypeScript声明文件jquery.d.ts,内容如下:        declare var $:any;    其中$的意思jquery的...

2018-03-17 12:29:56 14112 1

原创 ionic项目中之修改app的logo和启动界面

ionic项目——修改app的logo、启动界面和名字            1、修改app的名字        在工程下的config.xml中的name标签中修改即可,例如        <name>VOC检测平台</name>     2、修改app的logo和启动图片      修改config.xml文件(请看代码)不知道为什么,app的logo和启动画面,最好用...

2018-03-16 21:13:36 12075 1

原创 Angular、ionic、Cordova的关系介绍与打包

一、关系介绍Angular:是一个前端JS框架,类似于JQuery,BootStrap,Three.js等。ionic :是开源的H5移动App开发框架,是Angular的衍生物,利用Angular实现很多移动端的组件。Cordova:在项目中,Cordova负责将前端页面包装成原生页面,作为一个桥梁负责前端页面与原生应用的通信。另外,前端页 面没有调用设备的能力,这时就需要与原生应用通信来,通过...

2018-03-12 20:30:33 14323 1

原创 nginx正则规则

语法规则:location [=|~|~*|^~] /uri/ { … }模式含义location = /uri= 表示精确匹配,只有完全匹配上才能生效location ^~ /uri^~ 开头对URL路径进行前缀匹配,并且在正则之前。location ~ pattern开头表示区分大小写的正则匹配loca

2018-01-05 19:10:33 11515

原创 redis存储java对象

1、redis要存储java对象,首先要将java对象序列化public class Person implements Serializable { private int id; private String name; public Person(int id, String name) { this.id = id; this.name = name;

2018-01-02 20:22:40 10945

转载 Nngix反向代理

一、代理服务器 1、什么是代理服务器 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。 2、为什么要使用代理服务器 1)提高访问速度 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务

2017-12-20 11:30:51 11232

转载 windows编译hadoop 2.x Hadoop-eclipse-plugin插件

windows编译hadoop 2.x Hadoop-eclipse-plugin插件 原创 2014年12月23日 08:59:35 一.简介  Hadoop2.x之后没有Eclipse插件

2017-12-16 22:30:16 11177

转载 hadoop中NameNode、DataNode、Secondary、NameNode、JobTracker TaskTracker介绍

问题导读:1.job的本质是什么?2.任务的本质是什么?3.文件系统的Namespace由谁来管理,Namespace的作用是什么?4.Namespace 镜像文件(Namespace image)和操作日志文件(edit log)文件的作用是什么?5.Namenode记录着每个文件中各个

2017-12-13 19:14:01 10870

转载 双重检查锁定(double-checked locking)与单例模式

单例模式有如下实现方式:[java] view plain copy print?package com.zzj.pattern.singleton;    public class Singleton {      private static Singleton instance;        private Singleton() {      }        public static

2017-12-13 11:14:49 10963

原创 zookeeper API

String create(String path, byte[] data, List acl,CreateMode createMode)创建一个给定的目录节点 path, 并给它设置数据,CreateMode 标识有四种形式的目录节点,分别是 PERSISTENT:持久化目录节点,这个目录节点存储的数据不会丢失;PERSISTENT_SEQUENTIAL:顺序自动编号的目录节点,

2017-11-26 21:32:57 10894

原创 Timer与ScheduledExecutorService

Timer与ScheduleExecutorService,二者都代表定时任务。Timer:public static void main(String[] args) { Timer timer = new Timer(); //继承TimerTask抽象类,覆写run方法,表示一个任务 MyTimerTask timerTask = new MyTimerTask();

2017-11-25 16:17:37 10905

原创 线程池ThreadPoolExecutor与java.util.concurrent.RejectedExecutionException异常

BlockingQueue queue = new LinkedBlockingQueue(10);//无界队列 // queue = new ArrayBlockingQueue(10); //有界队列 // queue = new SynchronousQueue(); //默认 ThreadPoolExecutor tpe = new ThreadPoolExecutor(5, 20

2017-11-25 15:15:13 18628

原创 jsp页面引入本地图片问题

JSP页面引入本地图片问题首先,图片和工程不在一个盘符下。图片也不能放到工程下。 在JSP 文件中  这样是引不到图片的。因为,JSP页面在引图片的时候是在页面解析的路径是:。也就是说JSP在引图片的时候是先去你的工程目录下找的。 所以如果要在JSP中引入其他盘符的图片,有下面方法可以解决:在tomcat下的conf/server.xml中增加一个代码 在中间 

2017-05-02 17:20:36 20491 1

原创 Java、JavaScript生成二维码

这里使用QRCode方式生成二维码需要导入的jar包的网址:生成二维码:http://www.swetake.com/qrcode/index-e.html读取二维码:https://osdn.jp/projects/qrcode因为这两个jar包的名字相同,所以导入工程时要重命名代码如下生成二维码:public static void main(String[] ar

2017-04-01 10:49:41 10930

原创 Java对象转为Json串

在Ajax的应用中,我们通常需要将JavaBean,List,Map等对象转为Json串,方便页面解析需要导入的jar包有commons-beanutils-1.7.0.jarcommons.collections-3.2.jarcommons-lang-2.4.jarcommons-logging-1.1.jarezmorph-1.0.4.jarjdom.jarj

2017-03-24 10:03:05 11103

Struts2_Spring4_Mybatis整合|Struts2_Spring4_Mybatis整合jar.rar

Struts2_Spring4_Mybatis整合

2016-12-17

Struts2_Spring4.1.6_MyBatis3.4.1整合jar|Struts2_Spring4_Mybatis整合jar.rar

Struts2_Spring4.1.6_MyBatis3.4.1整合jar

2016-12-16

SpringMVC与MyBatis的整合jar包

Spring4.1.6与MyBatis3.4.1整合

2016-12-16

刘莅的留言板

发表于 2020-01-02 最后回复 2020-01-02

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