架构
文章平均质量分 56
「已注销」
这个作者很懒,什么都没留下…
展开
-
OutOfMemoryException JVM
java.lang.OutOfMemoryError: PermGen space这个异常比较常见,是说JVM里的Perm内 存区的异常溢出,由于JVM在默认的情况下,Perm默认为64M,而很多程序需要大量的Perm区内 存,尤其使用到像Spring等框架的时候,由于需要使用到动态生成类,而这些类不能被GC自动释放,所以导致OutOfMemoryError: PermGen space异常。...翻译 2019-02-18 21:45:10 · 1136 阅读 · 0 评论 -
CountDownLatch、Semaphore等4大并发类详解
通常我们所说的并发包也就是java.util.concurrent,Java并发编程集中在这个并发包种,主要包含:Java并发工具类和并发容器等。并发工具包1.并发工具类提供了比synchronized更加高级的各种同步结构:包括CountDownLatch、CyclicBarrier、Semaphore等,可以实现更加丰富的多线程操作。2.并发容器提供各种线程安全的容器:最常...转载 2019-02-12 14:27:16 · 596 阅读 · 0 评论 -
HDFSUtils
前言: Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。偶然看到之前项目中有使用,分享出来:public class HDFSUtils { private static final Logger LOG = Logger.getLogger(HDFSUtils.class); private s...原创 2019-01-29 15:16:04 · 710 阅读 · 0 评论 -
Spark框架简述
Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势:Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)...转载 2019-01-23 14:33:02 · 702 阅读 · 1 评论 -
分布式事务 解决方案、原理
事务1.1 什么是事务数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务拥有以下四个特性,习惯上被称为ACID特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一...转载 2019-01-28 14:18:53 · 1022 阅读 · 0 评论 -
Netty 原理、使用场景介绍等
1.介绍Netty是由JBOSS提供的一个java开源框架。Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建(文章尾有详细介绍)。2.Netty的特点 高并发Netty是一...转载 2019-02-02 11:56:21 · 8754 阅读 · 2 评论 -
Nginx之负载均衡
前言: 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。画个简图: 负载均衡策略Nginx...原创 2019-01-31 15:01:28 · 1039 阅读 · 0 评论 -
Dubbo 核心功能+服务治理+架构设计等
1.Dubbo是什么?Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。RPC 指的是远程调用协议,也就是说两个服务器交互数据。 2.Dubbo的由来?互联网的快速发展,Web应用程序的规模不断扩大,一般会经历如下四个发展阶段。当网站流量很小时,只需一个应用,将所有功能都部署在一...转载 2019-01-24 21:59:49 · 2168 阅读 · 3 评论 -
SpringBoot 之assembly自定义打包
SpringBoot项目使用assembly.xml进行打包部署前言: 对通常的springboot项目,一般我们都是采用的jar的方式进行启动配置相应的参数。但是对于一些web以及配置型项目操作不方便。 这里我们适用assembly以及自定义脚本进行项目部署: assembly.xml:<assembly xmlns="http://maven.apa...原创 2019-01-09 10:22:31 · 6269 阅读 · 0 评论 -
分布式系统的 ACID、CAP
事务机制ACID和CAP理论是数据管理和分布式系统中两个重要的概念,很不巧,这两个概念中都有相同的“C”代表 "Consistency" 一致性,但是实际上是完全不同的意义,下面是比较两个概念的不同之处。什么是ACID? 事务的定义和实现一直随着数据管理的发展在演进,当计算机越来越强大,它们就能够被用来管理越来越多数据,最终,多个用户可以在一台计算机上共享数据,这就导致了一个问题,当一个...原创 2019-02-28 14:22:35 · 565 阅读 · 0 评论 -
ReenTrantLock 、synchronized 高并发性能测试
前言: Synchronized是依赖于JVM实现的,表现为原生语法层面的互斥锁。开发者是无法直接看到相关源码,但是我们可以通过利用javap工具查看生成的class文件信息来分析Synchronize的实现。同步代码块是使用monitorenter和monitorexit指令实现的,同步方法依靠的是方法修饰符上的ACC_SYNCHRONIZED实现。 ReenTr...原创 2019-02-28 14:54:15 · 6332 阅读 · 2 评论 -
Nginx如何搭建文件防盗链服务
前言大家都知道现在很多站点下载资料都是要收费的,无论是积分还是金币,如何做到资源防盗链的呢?Nginx本身提供了secure_link来完成防盗链功能,可以给服务器文件链接添加时间戳和校验码,从而保护服务器文件不被任意下载盗用。时序图Nginx配置如何安装Nginx这里不再赘述,安装的时候记得开启ngx_http_secure_link_module即可。./conf...原创 2019-02-19 11:42:26 · 887 阅读 · 0 评论 -
Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”
在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类:公平锁/非公平锁可重入锁独享锁/共享锁乐观锁/悲观锁分段锁自旋锁线程锁乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。1.乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认...转载 2019-03-28 10:57:58 · 2868 阅读 · 0 评论 -
Redisson之几种分布式队列
前言: 消息队列很好理解,顾明思议就是排队执行。Redisson 队列类似实现Java接口,例如Queue和BlockingQueue基于Redisson Api 来处理一些复杂的业务逻辑。1.Queue Redisson中的RQueue对象实现了java.util.Queue接口。队列用于首先从最旧的元素开始处理元素的情况(也称为“先进先出”或FIFO)。与普通Java一样,...原创 2019-03-28 10:28:12 · 12272 阅读 · 2 评论 -
Spring Boot 2.x 集成 HBase
前言:1、HBase HBase 是在 Hadoop 分布式文件系统(简称:HDFS)之上的分布式面向列的数据库。而且是 2007 最初原型,历史悠久。 那追根究底,Hadoop 是什么?Hadoop是一个分布式环境存储并处理大数据。Hadoop 使用 MapReduce 算法统计分析大数据。 场景:监控数据的日志详情 交易订单的详情数据(淘宝、有赞)...原创 2019-03-26 21:34:41 · 8152 阅读 · 0 评论 -
Spring Retry 重试机制
前言: 在微服务领域, 一种通信方法是synchronous(同步)。事实是我们无法避免网络故障,临时服务停机(由于重启或崩溃)。当客户端需要实时数据且下游服务暂时没有响应时,它可能会影响用户体验,因此应该创建重试机制,Java中提供了许多解决方案选项。 重试可能会导致资源堵塞从而阻止应用程序恢复;因此,重试次数必须有限如3,不超过5次左右。 不应对每个例外进行重试。它...原创 2019-03-29 15:33:34 · 2705 阅读 · 0 评论 -
Spring 使用 @Async 捕获异常
前言: 在使用Spring项目使用@Async注释时捕获异常。当多个线程进行任务异步调用出现异常时,解决方案非常简单,需要注入自己的Exception处理程序,以便在执行@Async方法时捕获到异常。1.AsyncConfigurer:AsyncConfigurer是Spring提供的接口,它提供了两种方法,一种是覆盖TaskExecutor(Threadpool),另一种是...原创 2019-03-25 11:19:25 · 7563 阅读 · 2 评论 -
Spring @Async 使用
前言: 任何与业务逻辑没有直接关联的逻辑(横切关注点)或在调用者上下文中不需要响应以确定下一个流或任何业务的逻辑是Asyncronization的理想候选者。在Spring中使用@Async注释使用异步,如果你在方法上使用随机的@Async注释并且认为你的方法将在一个单独的线程中以异步方式调用这是错的。要知道@Async如何工作的和它的特性,不然你就无法理解异步行为。@Asy...原创 2019-03-15 11:02:09 · 9327 阅读 · 0 评论 -
Java 使用Redis 管理事务
前言: Redis中的事务允许在一个步骤中执行一组命令。对某些用户来说,在Java上管理Redis事务可能会非常棘手,但如果您拥有合适的工具,则会更容易。 此篇会介绍在Java上执行Redis事务的所有知识,以及对Spring事务管理器和Redis的XA事务的简要介绍。Java上的Redis事务 Redis事务是原子的,这意味着要么处理事务中的所有命令,要么都...原创 2019-03-05 18:58:24 · 9526 阅读 · 3 评论 -
Java 模板方法设计模式
前言: 模板方法的概念:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。 ...原创 2019-02-25 14:35:08 · 321 阅读 · 0 评论 -
maven本地私服仓库nexus
私服架构私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。软件环境Nexus3.3.1、maven3.5.0、JDK1.8Maven和JDK的环境配置略,自行百度。Nexus3安装...转载 2019-02-28 18:43:45 · 451 阅读 · 0 评论 -
Elasticsearch 基于项目的使用
前言: Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服...原创 2019-01-24 19:52:49 · 669 阅读 · 0 评论 -
ExcelPoi 写入HDFS
场景: 从本地Excel文件导入HDFS进行计算/** * @author DHing */public class ExportPoiToHDFS { public static void exportPoiToHDFS(String server, String dbname, String username, String passwd,String build) { C...原创 2019-01-08 19:05:51 · 1362 阅读 · 0 评论 -
Docker之Gitlab部署
Git 是目前最流行的版本控制系统,在它的基础之上, GitHub 和 GitLab 成为当前最流行的代码托管平台,它们均提供的代码评审、项目管理、持续集成等功能,越来越多的互联网企业都迁移到 Git。部署为了安装方便,这里我们使用 Docker 安装 GitLab 中文版,通常会将 GitLab 的配置 (config) 、 日志 (logs) 、数据 (data) 放到容器之外, 便于...转载 2019-01-08 18:47:00 · 206 阅读 · 0 评论 -
RabbitMQ 安装步骤说明
之前的csdn找不回来了,决定重新注册一个。望支持~~~类似这些开源性的产品没多少是建议用户部署在windows上的,不过rabbitmq除外,为了更加贴近实际的应用场景,我们这里还是部署在Liunx上。一、环境安装安装依赖文件:yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto 安装erl...原创 2018-12-28 14:24:38 · 439 阅读 · 0 评论 -
FastDFS安装步骤
之前的csdn找不回来了,决定重新注册一个。望支持~~~具体步骤~: 1.解压libfastcommon-masterunzip libfastcommon-master.zip2.安装libfastcommon-mastercd libfastcommon-master./make.sh./make.sh install看到类似如下提示信息就说明libfast...原创 2018-12-28 14:18:37 · 1068 阅读 · 0 评论 -
Redis为什么是单线程、及高并发快的大原因详解
Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单线程的,省去了很多上下文切换线程的时间;3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。 下...转载 2018-12-28 10:44:50 · 20740 阅读 · 4 评论 -
Redis缓存跟mysql保持一致性问题
需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MyS...转载 2018-12-28 10:45:08 · 438 阅读 · 0 评论 -
logback日志Email报警,日志分级
之前的csdn找不回来了,决定重新注册一个。望支持~~~使用场景:预警的一种,能详细定位到代码的异常。发送邮件给指定开发人员,多开发人员,分隔邮件地址~~<?xml version="1.0" encoding="UTF-8"?><configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的...原创 2018-12-28 10:45:21 · 4151 阅读 · 0 评论 -
MongoDB实现分页查询 java
之前的csdn找不回来了,决定重新注册一个。望支持~~~之前有个新同学问我mongo分页的问题,分享一下。一如既往,不多BB。直接搂代码: @Override public List<T> find(Query query, Class<T> clazz) { return mongoTemplate.find(query, claz...原创 2018-12-27 19:18:54 · 4314 阅读 · 1 评论 -
MongoDB 保存数据出现_class 如何去掉
调用mongo客户端保存数据,列表多出一个_class .... 很膈应~~处理办法,直接搂代码(使用的springBoot ,springMvc 其实也一样):@Configurationpublic class MongoConfig { @Bean public MappingMongoConverter mappingMongoConverter(MongoD...原创 2018-12-27 19:14:06 · 5981 阅读 · 0 评论 -
kafka 分区多节点消费
之前的csdn找不回来了,决定重新注册一个。望支持~~~为了解决多台服务,共同消费kafka消息,目前采用的是随机partition。画了个简图:/** * @ClassName: RiskPartitioner * @author DHing * */ public class RiskPartitioner impleme...原创 2018-12-27 19:10:02 · 9192 阅读 · 0 评论 -
基于Redisson的分布式锁
redission 锁帮助类:/** * @ClassName: RedisLockUtil * @author DHing * */ @Componentpublic class RedisLockUtil { @Resource public Redisson redisson; pu...原创 2018-12-27 18:34:38 · 2549 阅读 · 0 评论 -
Kafka 安装、消息发送
之前的csdn找不回来了,决定重新注册一个。望支持~~~kafka简介 kafka是由LinkedIn开发,主要是用来处理Linkedin的大面积活跃数据流处理(activity stream). 此类的数据经常用来反映网站的一些有用的信息,比如PV,页面展示给哪些用户访问,用户搜索什么关键字最多,这类信息经常被log到文件里,然后线下且周期性的去分析这些数据。现在这种用户活跃数据已经成...原创 2018-12-28 14:35:19 · 361 阅读 · 0 评论 -
Nginx Lua读取redis 进行权限认证等操作
之前的csdn找不回来了,决定重新注册一个。望支持~~~场景:nginx读取redis存储的标识进行重定向或ip拦截废话不多说,直接lou代码:location /{ set $tomcat_ip ''; rewrite_by_lua ' local redis = require "resty.redis" local red = redis::new() r...原创 2018-12-28 17:28:53 · 1416 阅读 · 0 评论 -
MongoDB(实体Bean转换成monoMap)
之前的csdn找不回来了,决定重新注册一个。望支持~~~业务场景:之前的业务数据想要迁移到mogodb,但是苦于修改实体的时候过于浪费时间;于是将实体Bean 转换成Mongo Mapping的字段,主要是做mongo的插入操作~~~废话不多说,直接lou代码:public static Map<String,Object> Bean2Map(Object bean...原创 2018-12-28 19:13:57 · 852 阅读 · 0 评论 -
spark Standalone集群模式配置
前言:之前总结的>>>>>sprak集群 standalone模式安装配置>>>>>配置三个节点的spark集群,集群模式为standalone模式,其中sp1节点作为主节点,sp2节点和sp3节点为从节点。***注意所有操作均为root用户1. 创建3个CentOS虚拟机,如下: sp1 192.168.1.2...原创 2019-01-14 11:42:05 · 6415 阅读 · 0 评论 -
常见的 NoSQL 技术方案和选型
前言在互联网和大数据的背景下,越来越多的网站、应用系统需要支撑 海量数据存储、高并发请求、高可用、高可扩展性 等特性要求。传统的 关系型数据库 已经难以应对类似的需求,各种各样的 NoSQL(Not Only SQL)数据库因此而产生。本文将分析 传统数据库 的存在的问题,以及几类 NoSQL 如何解决这些问题。在不同的 业务场景 下,作出正确的 数据存储 技术选型。 正文1....转载 2019-01-03 14:46:08 · 1391 阅读 · 0 评论 -
Ant自动打包备份脚本
分享一个两年前自己写的ant打包、备份脚本~~~~(虽然现在都是docker image ^_^)主要跟tomcat进行结合实现自动服务重启、备份<?xml version="1.0" encoding="UTF-8"?><project name="operation" basedir="." default="redeploy"> &原创 2019-01-02 17:37:17 · 236 阅读 · 0 评论 -
Zookeeper集群安装
很多年前总结的zk集群安装,今天偶然翻看笔记发现分享一下~~~安装ZooKeeper tar -zxvf zookeeper-3.4.5.tar.gz mv zookeeper-3.4.5 zk 修改zookeeper配置文件 cd /home/dev/clouds/zk/conf mv zoo_sample.cfg zoo.cfg ...原创 2019-01-02 17:22:49 · 174 阅读 · 0 评论