![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构师之道
文章平均质量分 79
红烧咸鱼丶
一个没有梦想的废物咸鱼
展开
-
netty(3)--netty5实现
pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h...原创 2019-04-10 21:15:08 · 215 阅读 · 0 评论 -
微服务架构的分布式事务解决方案(3)--常规MQ队列消息的处理流流程和特点(基于可靠消息的最终一致性)
MQ队列消息模型的特点由上图可以看到,原创 2019-04-22 15:31:48 · 523 阅读 · 0 评论 -
Tomcat参数调优--简单介绍
前言介绍首先我们明白几个概念:吞吐量表示的是请求成功多少次/秒准备工作我们这里以Ecilpse为准,先建立一个maven的web工程pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema...原创 2019-04-17 22:26:46 · 2706 阅读 · 1 评论 -
ElasticSearch(3)-- 配置中文分词器
分词器什么是分词器分词器就是从一串文本中切分出一个一个的词条,并对每个词条进行标准化分词器包括三个部分:(1)character filter: 分词之前的预处理,过滤掉HTML标签,特殊服号转换等(2)tokenizer:分词(3)token filter:标准化内置分词器:(1)standard分词器:(默认的)他会将词汇单元转成小写的形式,并且去除掉停用词和标点符号。支持中...原创 2019-04-18 06:51:44 · 169 阅读 · 0 评论 -
ElasticSearch(5)--版本控制和Mapping
版本控制ES采用了乐观锁的方式来保证数据的一致性,也就是说,当用户对document进行操作的时候,并不需要对该document做加锁和解锁的操作,只需要指定要操作的版本即可。当版本号一致的时候,ES会允许该操作执行顺利,而当版本号存在冲突的时候,ES会提示冲突并且抛出异常。ES的版本号的取值范围是1到2^63-1内部版本控制ES的内部版本号使用的是_version内部版本号版本控...原创 2019-04-22 23:43:58 · 229 阅读 · 0 评论 -
微服务架构的分布式事务解决方案(5)--可靠消息最终一致性(方案)
前几节我们了解了可靠消息的基本架构:但是现成的MQ中间件产品并不支持消息发送一致性(先进存储,再被确认后才能发送的2步式流程),直接改造MQ的难度又太大,所以我们进行了自己的改进。可靠消息最终一致性解决方案1----本地消息服务将主动方应用系统中的业务操作和消息存储与发送都放到主动方应用系统中,消息存储服务不再是放到消息中间件中将主动方应用系统的业务操作和消息存储与发送都放在同一个本...原创 2019-04-23 16:57:46 · 1074 阅读 · 0 评论 -
ElasticSearch(4)--使用Kibana实现增删改查
利用Kibana实现基本的CRUD操作根据我们之前学到的内容,先启动es,再启动kibana,访问ip+5601(默认端口),我的环境是访问192.168.0.108:5601访问页面是(1)点击左侧的Dev Tools,进入操作页面(2)操作页面如下:(3)Kibana的CRUD的相关操作添加索引:PUT /lib/{"settings":{"index":{...原创 2019-04-18 22:11:11 · 984 阅读 · 0 评论 -
ElasticSearch(6)-- 查询
前几节我们了解了ES的新增,删除,修改,获取等,以及他们的批量处理,这一节我们来学习下ES查询。先进行准备工作PUT /lib3{ "settings": { "number_of_shards" : 3, "number_of_replicas" : 0 }, "mappings": { "user": {...原创 2019-04-23 23:24:39 · 181 阅读 · 0 评论 -
缓存机制讲解
JAVA的缓存机制Java中要用到的缓存的地方很多,首当其冲的就是持久层的缓存要实现Java的缓存有很多的方式,最简单的就是static hashMap,这个内存的实现是基于Java的内存缓存,这种方式虽然简单但是却不是很实用,因为static HashMap的周期我们是不能控制的,这样就会导致内存的上升,因此我们也可以使用Java提供的弱引用集合来充当Java的缓存。弱引用就是对象的声明...原创 2019-06-12 17:54:47 · 230 阅读 · 0 评论 -
Mysql优化(3)
在介绍这章之前我们先熟悉几个linux命令:(1)开启Mysqlservice mysqld start(2)关闭防火墙service iptables stop(3)登录上mysqlmysql -u root -p然后输入密码。Mysql的主从复制(1)Mysql主从复制是针对MySQL集群而言的,这里用两台服务器做演示(2)一台服务器作为主机,另一台服务器作为...原创 2019-06-08 17:19:35 · 137 阅读 · 0 评论 -
MySQL优化(1)
MySQL如何优化(1)将表的设计合理化(2)添加适当的索引普通索引主键索引唯一索引全文索引(3)sql语句进行优化(4)分表技术水平分割垂直分割(5)读写分离技术(6)存储过程,模块化的编程可以提高速度,但是不是很常用(7)对mysql的配置进行优化,配置其最大的并发数my.ini,调整缓存大小(8)nysql的服务器硬件升级(9)定时的去清除不需要的数据,...原创 2019-06-04 15:58:00 · 79 阅读 · 0 评论 -
多线程之有状态对象和无状态对象
有状态对象和无状态对象参考:https://www.cnblogs.com/xubiao/p/6567349.html一. 基本概念1. 什么是有状态对象有状态对象指的是有数据存储功能的类的对象。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的,在不同的方法调用期间不会保留任何的状态。2. 什么是无状态对象无状态对象就是一次操作的对...原创 2019-06-21 11:07:56 · 567 阅读 · 0 评论 -
nginx讲解
一,什么是nginxnginx是一款高性能的http服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。nginx可以支撑5万的并发连接,并且CPU,内存等资源消耗却非常低,运行稳定。二,反向代理服务器(1)nginx(2)lvs(3)F5(硬件)(4)haproxy三,nginx的应用场景http服务器。Nginx是一个http服务可以独立提供http服务。...原创 2019-06-17 16:39:49 · 368 阅读 · 0 评论 -
常用分布式事务
偶然看到一篇文章 ,写的还不错https://blog.csdn.net/str0708/article/details/89013591转载 2019-06-26 10:13:33 · 105 阅读 · 0 评论 -
JVM--内存调优
什么是虚拟机参数配置在虚拟机运行的过程,如果可以跟踪系统的运行状态,那么对于问题的故障排查会有一定的帮助,为此,虚拟机提供了一些跟踪系统状态的参数,使用给定的参数执行Java虚拟机,就可以在系统运行时打印相关的日志,用于分析实际的问题,我们进行虚拟机的参数的设置,其实就是围绕着堆,栈,方法区进行配置的。常见的堆的参数配置-XX:+PrintGC每次触发GC的时候打印相关的日志-XX:-...原创 2019-04-14 20:36:50 · 302 阅读 · 0 评论 -
JVM--垃圾回收机制与垃圾收集器
finalize()方法的作用是GC回收垃圾之前对其进行调用(但不是每次都会调用)System.gc()的作用是手动回收垃圾。调用该方法的时候并不是百分之百调用finalize方法。只有将不用的对象置为空才会有很大的几率调用该方法。如:Test001 test = new Test001();test = null;System.gc();此时才会有很大的几率调用finalize方法...原创 2019-04-17 12:03:45 · 165 阅读 · 0 评论 -
微服务架构的分布式事务解决方案(3)--消息发送一致性(可靠消息的前提保证)
我们之前的服务间消息传递是主动方应用直接发送给被动大应用但是这种通讯方式其实并不是很好,耦合性高,不稳定,效率差。因此我们有了消息中间件,使用消息中间件可以更好的在分布式系统中实现服务间通讯。消息中间件在分布式系统中的主要作用是:异步通讯,解耦,并发缓冲消息发送和投递的不可靠性但是这种通信方式也有可能不稳定,有着消息发送和投递的不可靠性如上图所示,可能由于网络的原因 ,消...原创 2019-04-17 00:56:58 · 278 阅读 · 0 评论 -
NIO编程
什么是NIONIO是一个非阻塞的IO,面向于缓冲区的;缓冲区一般情况下只有一个但是可以有多个,将多个封装起来,看起来也是一个IO则是阻塞式的,面向于流的;NIO的效率要高于IO的效率缓冲区是NIO提高给传输文件和通道一起配合使用,存储数据。读数据的时候,读的是缓冲区中的数据,写数据的时候也是写到缓冲区中。缓冲区的种类:(1)ByteBuffer(2)LongBuffer(3)I...原创 2019-04-07 12:40:06 · 108 阅读 · 0 评论 -
NIO同步阻塞与同步非阻塞
NIO在jdk1.7之前是同步非阻塞IO,在jdk1.7之后是异步非阻塞IO叫做AIO。今天我们就重点讲解下非阻塞的概念。通常我们在网络相关的地方才使用到非阻塞的概念。当我们建立网络套接字的时候什么时候服务器端的socket会等待?(1)当客户端没有连接过来的时候,我们的服务端会调用serversocket的accept()方法进行等待,等待客户端的连接,该步骤就是阻塞式的,该IO就是传统...原创 2019-04-07 21:57:20 · 2180 阅读 · 5 评论 -
netty(4)--netty的心跳检测
客户端package com.xiyou.netty3.heart;import org.jboss.netty.bootstrap.ClientBootstrap;import org.jboss.netty.channel.*;import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;impo...原创 2019-04-11 17:52:09 · 399 阅读 · 0 评论 -
netty(1)--HelloWord
Netty快速入门Netty是一个基于JAVA NIO类库的异步通信框架,他的架构特点是:异步非阻塞,基于事件驱动,高性能,高可靠和高可定制性。rpc远程调用框架dubbo底层就是通过netty来实现的。zookeeper,rocketmq也是用的netty进行通信的。很多游戏开发也是通过netty进行通信的。netty可以解决nio代码复杂的问题,容错机制。...原创 2019-04-08 21:41:38 · 113 阅读 · 0 评论 -
微服务架构的分布式事务解决方案(1)--初始分布式事务
分布式大家都肯定了解吧,事务大家也肯定都不陌生,那么分布式事务是什么呢?让我理解的话,我举一个例子来讲解,在我们电商项目中,我们的订单服务和支付服务是两个独立的模块,部署在不同的服务器上,按道理来说当我们订单创建成功后开始支付,如果都成功,ok,当然没有任何问题,但是这时候如果我们支付失败,按道理我们的订单也应该回滚,但是这时候我们的普通的事务(@Transactional)能否回滚两个不通服务...原创 2019-04-12 11:03:00 · 188 阅读 · 0 评论 -
ElasticSearch(1)
ElasticSearch概述ElasticSearch是一个基于Lucene的搜索服务器。他提供了一个分布式多用户能力的全文搜索引擎,甚于RESTfulweb接口。ElasticSearch是用Java开发的,并且作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计于云计算之中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。构建在全文检索开源软件Lucene之上的El...原创 2019-04-15 20:22:49 · 135 阅读 · 0 评论 -
ElasticSearch(2)-- es的准备工作
上面一章节中我们学习了ES的基本的概念,可以将es的概念结合数据库进行理解。本章我们开始装esES的准备环境介绍(1)VMvare14(2)centos7(3)jdk1.8(4)ElasticSearch6.2.4这里面我们就不啰嗦的去描述具体的安装,Vmvare和centos7的安装我转载的一篇博客挺详细的安装过程,可以参考。JDK的安装都是下载jar包,然后tar -zxvf XX...原创 2019-04-18 11:59:31 · 613 阅读 · 0 评论 -
微服务架构的分布式事务解决方案(2)--常用的分布式事务解决方案介绍
事务我们先学习事务是什么,事务的特点是什么?什么是事务?由一组操作构成的可靠,独立的工作单元什么是ACID?ACID是事务4个重要的特性,其内容分别是:(1)Atomicity:原子性指的是事务是不可分割的,要么都成功,要么都失败(2)Consistency:一致性指的是事务操作完成之后数据的总量并没有发生变化,举个简单的例子,A和B转账,A给B转账100,A的账户减少100,B...原创 2019-04-13 00:46:24 · 147 阅读 · 0 评论 -
netty(2)--netty线程模型的源码分析
在上一节中,我们已经做出了一个简单的netty的例子,了解了基本的服务端和客户端的写法,这一章我们来一起学习下netty线程模型的源码分析。我们在分析源码之前,先考虑一个问题,如何提高NIO的效率?如何提高NIO的性能?我们可以举个简单的例子描述下这个问题:IO相当于是在饭店吃饭,有多少个客人就有多少个服务人员NIO相当于是不管饭店来了多少个客人,只有一个服务员在服务,当客人点好...原创 2019-04-09 20:47:34 · 371 阅读 · 2 评论 -
Spring Security(1)——入门程序
之前我们对Shiro进行了了解,但是很多东西都是和Spring Security结合的,为了后续学习其他内容的方便, 我们在这里讲解下Spring自己的安全机制,Spring Security。什么是Spring SecuritySpring Security是专门针对基于Spring的项目的安全框架,充分的利用了依赖注入和AOP来实现安全功能。安全框架有两个重要的概念,即认证(Authen...原创 2019-04-21 00:40:16 · 252 阅读 · 0 评论 -
netty(5)--粘包解决
这一节我们用的是netty5的版本,但使用的是netty4的API去实现的代码Serverpackage com.xiyou.server;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer...原创 2019-04-13 17:33:12 · 525 阅读 · 0 评论 -
Spring Security(2)——remember me
阿萨德原创 2019-04-21 16:01:41 · 826 阅读 · 2 评论 -
Spring Security(3)——异常处理
异常处理我们在这里只是介绍下Spring Security的简单的异常的抓取。并不做源码的分析。一, 常见的异常UsernameNotFoundException用户不存在,但是我程序中抛出该异常的时候,常常抓取到的是BadCredentialsException异常这种情况,我们可以自定义异常,继承AuthenticationException 类DisabledException...原创 2019-04-21 19:34:07 · 3043 阅读 · 1 评论 -
SpringBoot原理解析--SpringApplication
我们这里详细讲解下SpringApplication的注解@SpringBootApplication,理解了该注解就能理解SpringBoot的自动配置原理。话不多说直接上代码:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguratio...原创 2019-07-25 23:38:43 · 184 阅读 · 0 评论