自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿肯那顿的博客

学以致用

  • 博客(55)
  • 问答 (2)
  • 收藏
  • 关注

原创 HTTPS认证解决什么问题,以及实现原理

什么是HTTPS简单的讲HTTPS是在HTTP协议的基础上,增加了保密措施的一种协议。所以其主要作用是保证通信的安全,其主要解决了如下几个问题:防止第三方冒充服务器。防止第三方拦截通信报文,窃取通信中请求报文、响应报文的内容。防止第三方拦截通信报文,篡改报文内容。实现原理加密方式为了达到以上的目的,最容易想到的就是加密了。而加密的方式一般情况下可以分为3中形式。...

2019-12-04 09:25:45 14408

原创 nginx代理websocket

配置如下:server { listen 8888; server_name localhost; ssl on; ssl_certificate /opt/nginx/certs/certificate.pem; ssl_certificate_key /opt/nginx/certs/privatekey.pe...

2019-07-31 13:33:54 510

原创 docker logstash

下载docker镜像docker pull docker.elastic.co/logstash/logstash:6.6.2创建文件夹 (用于容器文件的挂载)mkdir /opt/sns/logstash/config创建相关配置文件将以下文件放到/opt/sns/logstash/config下logstash.yml (空文件就行)log4j2.propertieslog...

2019-07-31 10:15:37 650

转载 nginx负载均衡配置,宕机自动切换

严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。下面列出这两个模块中相关的指令:语法: proxy_connect_timeout time;默认值: proxy_connect_t...

2019-03-14 14:09:22 18449

原创 Docker部署ElaticSearch集群

ElaticSearch官方网址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html拉取镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.1启动容器内核参数优化Linux下/etc/sysctrl.conf增加...

2019-03-06 15:32:18 447 1

转载 在ubuntu上开启docker的http远程访问

在ubuntu上开启docker的http远程访问对于Ubuntu 15.04及更高版本对于Ubuntu 15.04及更高版本创建/etc/systemd/system/docker.service.d目录。$ sudo mkdir /etc/systemd/system/docker.service.d创建一个/etc/systemd/system/docker.service....

2019-02-15 15:47:55 2340

原创 ActiveMQ性能优化笔记

ActiveMQ性能优化笔记队列的类型环境搭建踩到的坑消息入队的性能消息持久化同步/异步发送消息acitveMQ服务器通信方式消费者消费optimizeACK以前都是看看消息队列的文章,程序里简单的调用一下接口,一直没有详细的搭建,并不了解其中的细节。导致最近项目上使用ActiveMQ,踩到了性能的坑,在网上找各种资料,这里简单记录一下。队列的类型由于我使用的是P2P的队列方式,TOPIC类...

2018-12-14 11:07:24 903 1

转载 HTTP Keep-Alive是什么?如何工作?

HTTP Keep-Alive在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少...

2018-06-01 11:13:20 1730

原创 SpringCloud Eureka Server 源码

Server端,又可以称之为注册中心,其作用简单的说,就是以下几点:接收客户端的注册信息,把这些信息存起来供其它客户端查询注册信息能够剔除失效不可达到的实例自我保护https://blog.csdn.net/thomescai/article/details/79032148...

2018-04-13 15:44:18 343 1

原创 SpringCloud Eureka Client 源码

这里主要学习一下EurekaClient,通过上一篇学习了解到,Client的功能主要有这么几个:服务注册服务续约服务发现服务下线而这些功能主要由netflix eureka实现,其客户端实现类为DiscoveryClient.java,它实现了EurekaClient接口,而EurekaClient又继承了LookupService接口。数据结构我们首先来看看这个最...

2018-04-13 15:05:51 985

转载 服务的注册与发现(Eureka)

服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。 微服务中用来做注册中心的组件常有zookeeper、eureka、Consul等,这里主要学习Eureka。Eureka的工作原理Eureka的组件主要由服务端和客户端组成:服务端:即为注册中心,支持高可用配置,与zookeeper不一样,在CAP理论中,zookeeper保证CP,而...

2018-04-03 15:27:12 1087

原创 SpringCloud学习

微服务概述服务的注册与发现(Eureka) Spring Cloud Eureka Client

2018-04-03 15:24:30 203

原创 微服务概述

微服务越来越火,我也不自觉得加入到微服务的队伍里来了,可是对于微服务的具体概念好像还没有一个统一的定义,这里基于自己的理解,说说到底什么是微服务。什么是微服务首先微服务是相对于传统的单体系统而言,所谓的微,即为细小,粒度细小,需要参与的人员细小;服务,即为独立的功能单元,是用户感知的最小的功能集。 所谓的微服务架构也就是说把以前的独立、单一、巨大的系统拆分成粒度更小的多个或者多组服务,每...

2018-04-03 15:17:52 246

转载 Redis集群模式

此文由多处转载,自行组织,水平有限,有错误,望大家指正。现在越来越多的项目都会利用到redis,多实例redis服务比单实例要复杂的多,这里面涉及到定位、容错、扩容等技术问题。我们常用sharding技术来对此进行管理,其集群模式主要有以下几种方式:主从复制哨兵模式Redis官方 Cluster集群模式(服务端sharding)Jedis sharding集群(客户端shardin...

2018-03-19 15:13:07 9928 2

转载 Java原子类实现原理分析

原子类来自于java.util.concurrent包,而java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。什么是CASCompare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。CAS有3个操作数,内存值V,旧的预期值...

2018-03-16 13:43:34 4031

原创 Spring读取资源文件

Spring配置文件<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> ..

2018-03-16 12:57:01 535

原创 Spring事务传播机制

Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁)概述当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Spring管理的事务 环...

2018-03-16 11:26:50 207

原创 Maven依赖中的Scope、传递与隔断

Scope的分类compile 默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布。即依赖的项目会参与到当前项目的编译、运行、测试以及打包发布,是一个比较强的依赖范围。test 表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不...

2018-03-14 16:30:11 3425 1

原创 SLF4J处理日志

SLF4J是什么The Simple Logging Facade for Java,笼统的讲就是slf4j是一系列的日志接口。 The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java....

2018-03-13 11:03:55 3232

原创 日志输出

我们在开发过程中常用的日志输出方式如下:system.out.println();e.printStatckTrace();利用某个日志框架来输出日志今天讨论的就是这几种方式的不同。标准输出成员:方式1、2。第二种其实也是调用第一种方式实现目的地:java控制台。在生产环境中,根据操作系统、Web容器的不同,不一定会将控制台的log是否能被收录到日志文件里。所以是否可以...

2018-03-13 10:08:18 835

转载 Java 异常处理的误区和经验总结

本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳。只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验,提高产品的价值。误区一、异常的选择 上图描述了异常的结构,其实我们都知道异常分检测异常和非检测异常,但是在实际中又混淆了这两种异常的应用。由于非检测异常使用方便,很多开发人员就认为检测异...

2018-03-13 10:01:40 208

原创 为什么要设计JAVA异常

从业这么多年,每当谈起异常,都是懵懵懂懂,只是依稀记得它是处理错误的,当程序出错,日志里会有异常日志,可以查看异常定位错误。但是最近突然发现一个问题,那就是处理错误不一定非的要用异常啊,比如说参数合法性检查等等,判断是否为空后直接返回校验信息等,通过程序的各种手段都可以处理,那么为什么要用异常呢?它到底能解决什么问题呢?我们平时写程序时,很多人都忽略了一个问题,那就是“程序是否正确的执行完了”...

2018-03-13 09:43:28 1349

转载 杂谈 GC

在Hotspot VM实现中,主要有两大类GCPartial GC:并不会堆整个GC堆进行收集 young gc:只收集 young gen 的GCold gc:只收集 old gen 的GC,只有CMS的 concurrent collectionmixed GC:收集整个 young gen 以及部分 old gen 的GC,只有G1Full GC:收集整个堆,包括young g...

2018-03-09 14:22:59 201

转载 阿里RocketMQ如何解决消息的顺序和重复两大硬伤

分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问题消息的重复问题RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ有哪些关键特性?其实现原理是怎样的?顺序消息消息有序指的是可以按照消息的发送顺序来消费。例如:一笔订单产生了...

2018-03-09 14:07:48 3029

转载 使用消息队列的 10 个理由

解耦在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。冗余有时在处理数据的时候处理过程会失败。除非数据被持久化,否则将永远丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。在被许...

2018-03-09 13:30:14 175

转载 Redis 应用场景及应用实例

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。MySQL+Memcached架构的问题实际mysql是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数...

2018-03-09 13:00:11 514

转载 Oracle与MySQl对比

并发性并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。mysql:以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。 虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。oracle:使用行级锁,对资源锁...

2018-03-04 12:34:50 940

转载 MySql之INSERT INTO…ON DUPLICATE KEY UPDATE详解

在我们的日常开发中,经常会遇到过这样的情景:查看某条记录是否存在,不存在的话创建一条新记录,存在的话更新某些字段。 你会采用怎么样的处理方式呢?$result = mysql_query('select * from xxx where id = 1');$row = mysql_fetch_assoc($result);if($row){ mysql_query('upda...

2018-03-04 12:13:35 957

转载 Mysql并发时经典常见的死锁原因及解决方法

mysql都有什么锁MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般算法: next KeyLocks锁,同时锁住记录(...

2018-03-04 12:10:50 980

转载 Lambda 表达式有何用处?

作者:Sevenvidia 来源:https://www.zhihu.com/question/20125256/answer/324121308什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量: ...

2018-03-02 10:12:37 614

转载 轻松理解MYSQL MVCC 实现机制

MVCC简介什么是MVCCMVCC是一种多版本并发控制机制。MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用。大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销....

2018-02-28 13:39:56 207

原创 Mysql的日期存储字段类型的选择

在实际开发项目中发现数据库中得日期项目,有的用datetime,有的用timestamp,有的甚至用int,这之间都有什么区别呢?什么场合适用什么样的设置呢?首先看一下各自的特点:int4个字节存储,INT的长度是4个字节,存储空间上比datatime少,int索引存储空间也相对较小,排序和查询效率相对较高一点点可读性极差,无法直观的看到数据,可能让你很恼火datetime8...

2018-02-28 13:22:42 5848

转载 MySQL索引背后的数据结构及算法原理

前两天经历了武汉一行腾讯面试,数据库索引是一个面试热点,在此搜集相关资料,以备学习之用。 下面是一位牛人写得关于数据库索引的精品之作,因为很好,不敢修饰,转载至此与博友共享。 原文链接:MySQL索引背后的数据结构及算法原理本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MyS...

2018-02-28 10:17:55 158

转载 NIO的几种模型

Reactor单线程模型:单个线程完成所有事情包括接收客户端的TCP连接请求,读取和写入套接字数据等。 对于一些小容量应用场景,可以使用单线程模型。但是对于高负载、大并发的应用却不合适,主要原因如下:一个NIO线程同时处理成百上千的链路,性能上无法支撑,即便NIO线程的CPU负荷达到100%,也无法满足海量消息的编码、解码、读取和发送;当NIO线程负载过重之后,处理速度将变慢,这会导...

2018-02-26 23:12:35 1797

转载 BIO与NIO、AIO的区别

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。BIO在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的...

2018-02-26 23:09:37 186

原创 为什么NIO比BIO效率高

NIO比BIO效率高,主要原因是什么呢? 网上大多给出了两者的区别,可是具体效率高在哪里呢。首先我们看一下各自的特点 BIO:socketServer的accept方法是阻塞的。当有连接请求时,socketServer通过accept方法获取一个socket取得socket后,将这个socket分给一个线程去处理。此时socket需要等待有效的请求数据到来后,才可以真正开始处理请...

2018-02-26 22:53:50 10969 10

转载 HTTP1.0 HTTP 1.1 HTTP 2.0主要区别

HTTP1.0 HTTP 1.1主要区别长连接HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用个长连接来发多个请求。节约带宽HTTP 1.1支持只发...

2018-02-26 12:39:24 222

转载 Tcp建立连接为什么需要三次握手

前言众所周知tcp传输层协议在建立连接的时候需要三次才能建立起一个真正的可靠连接,可是为什么是三次呢,不可以是两次,四次等等呢,可以自己思考一番,带着疑问可以看下文。三次握手在《计算机网络》一书中其中有提到,三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”,这种情况是:一端(client)A发出去的第一个连接请求报文并没有丢失,而是因为某些未知的原因...

2018-02-25 22:08:30 7219

转载 Api GateWay

当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点。在微服务 架构中,每一个微服务暴露一组细粒度的服务提供点。在本篇文章中,我们来看它如何影响客户端到服务端通信,同时提出一种API Gateway的方法。介绍假定你正在为在线购物应用开发一个原生手机客户端。你需要实现一个产品最终页来展示商品信息。 例如,下面的图展...

2018-02-25 21:25:19 795

转载 Nginx部署指南

安装从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本(目前是1.5.13版本)安装包;解压后复制到部署目录。启动和停止NginxNginx目前只支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署目录。 1. 启动Nginx:start nginx 2. 停止Nginx:nginx -s sto...

2018-02-25 21:14:03 242

空空如也

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

TA关注的人

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