自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于网关路由信息放入Redis的一些思考

关于微服务将网关路由信息放到redis中的一些思考一直有一个疑问,我们的springcloud gateway 路由信息应该是放在网关内存中,然后请求打过来经过网关,从内存中找到路由信息,进行路由转发,那么为什么有把路由信息放到redis中这么一说呢?网关加载路由信息可以加载静态yml文件,或直接写死在代码中,也可从数据库中进行加载,最终都要变成RouteDefinition对象,放在内存中供请求过来查找转发使用,也就是说这种情况是,路由信息确定不会变的情况下,我们可以把路由信息存入数据库,每次启动从数

2020-09-24 17:23:38 689

原创 RocketMq集群搭建

集群架构图:准备工作:四台机器节点 (虚拟机四台机器,都安装好了rocketmq)数据目录配置文件一共四台节点:NODE1 192.168.3.50 ROLE : namesrv 1NODE2 192.168.3.51 ROLE : namesrv 2NODE3 192.168.3.52 ROLE : broker A master , broker B masterNODE4 192.168.3.53 ROLE : broker A slave , broker B sl

2020-08-21 16:03:15 297

原创 高并发线程池(三、创建线程池)

不要通过Executors类来创建线程池,一定要通过new ThreadPoolExecutor(…)来创建线程池。(参照阿里JAVA开发规范1.5泰山版)先来介绍创建线程池涉及到的7个参数。 public ThreadPoolExecutor(int corePoolSize, //核心线程数 int maximumPoolSize, //最大线程数 long keepAliv

2020-06-21 18:39:07 413

原创 高并发线程池(二、什么是线程池)

JAVA线程池JAVA线程池分两种:1.ThreadPoolExecutor2.ForiJoinPool(也有人说分为什么single,cache,workstealing等,他们底层其实都是new的这两种线程池)ThreadPoolExecutorThreadPoolExecutor线程池内部维护了一个线程池集合(HashSet),和一个任务队列(queue)。多个线程不断的从queue中拿任务来执行。ForkJoinPool * * @since 1.7 * @author Do

2020-06-21 17:59:32 243

原创 高并发线程池(一、线程池相关接口)

如果我们要新创建一个线程来执行任务,那么一般我们的代码会是这样:new Thread( new Runnable ).start();一般是实现Runnable接口或者继承Thread。什么是Callable接口从Jdk从1.5开始为我们提供了一个callable接口 * @see Executor * @since 1.5 * @author Doug Lea * @param <V> the result type of method {@code call} */@F

2020-06-21 14:42:59 304

原创 Thread.Sleep是否会对影响内存可见性

昨天群友提了一个问题代码如下:public class mytest { Integer a = 0; public static void main(String[] args) throws InterruptedException { mytest test = new mytest(); test.testVisibility(); ...

2020-04-16 17:56:39 1652 4

原创 Redis事务

Redis中为我们提供了MULTI 、 EXEC 、 DISCARD 和 WATCH 四个支持事物的命令。先简单介绍一下这四个命令。MULTI:用于开启一个事务。EXEC:用于结束一个事务(告诉redis我这一串命令可以执行了,如果客户端只是开启了事务而没有执行exec那么整个事务将不会执行)。DISCARD:放弃事务(清空事务队列)WATCH:一个类似乐观锁(CAS)的操作。知道了这四...

2020-04-09 14:17:17 146

原创 JVM系列《一、JAVA体系结构》

JAVA体系结构分为四个独立但相关的技术java程序设计语言java class文件格式java apijvm从程序的基础helloworld,我们就体验了这四种技术.首先我们用java语言编写程序,然后javac将.java源程序编译成.class的字节码文件,然后我们调用java api在jvm上解释执行我们的程序。其中java api 和 jvm组合成了一个平台。任何规范的...

2020-03-04 13:16:54 111

原创 JAVA IO总结

JAVA中IO流有两种分类方式:1.按流向分为输入流和输出流。2.按操作单元划分分为字符流和字节流。3.按照流的角色划分为节点流和处理流。Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java IO流的40多个类都是从如下4个抽象类基类中派生出来的。InputStream/Reader: 所有的输入流的基类,前者是字节输入流,...

2019-11-28 10:31:54 121

转载 Linux系统下查看JVM进程信息

最近在调试公司的CS改造程序,发现当客户端运行一段时间后会造成CPU占用率过高卡死的现象。因为某些原因我发到现场亲自调试。就顺便学习一下Linux下怎么抓取JVM中某一线程的运行情况。查看java进程的pid。(定位目标)使用jmap查看JVM heap dump信息。(初步判断JVM资源使用情况)通过top命令查看进程CPU使用情况 。通过top名称查看进程的线程id通过jstack...

2019-11-27 18:44:43 3827

原创 JAVA中的成员变量、局部变量

JAVA中变量可分为两类:成员变量、局部变量类中的变量都是成员变量。方法中的变量都是局部变量,并且方法中的块中的变量也是数据局部变量。特别的:成员变量中用static修饰的变量则变成了静态变量或类变量(归类所有,优于实例存在),如果没有被修饰那么就是非静态变量或实例变量。方法中,或参数,或方法中的块中的变量都是局部变量。下面引用网上的一张图三者的存储位置不同导致了三者在不同...

2019-11-21 11:00:57 304

原创 JAVA重写equal方法后为什么必须要重写Hashcode方法

什么是hash表?hash表是一种数据结构,提供了快速插入和快速查询的功能。插入和删除时间复杂度接近O(1),hash表底层实现时基于数组的,而键值对<K,VALUE>中的k就是我们作为数组下标的重要依据,但实际上并不是以用户的key来存放的,而是获取到K的hashcode,来作为数组的下标。相当于经过hash函数做了一层映射值。hash函数算法怎么实现本章不予讨论。hash函数是根...

2019-08-07 15:20:02 584

原创 初识.class文件是如何加载到JVM中的

编程入门的第一个例子是HelloWorld,第一次老师还是用javac执行给我们看的,当时就觉得Dos输出HelloWorld挺神奇,对于javac编译后执行的的.class文件并没有去弄明白是什么。近期也一直在疯狂补课,本章就专门来说说这个.class是怎么被弄到JVM中并实例化的。先来理解几个概念.class是什么JVM是什么.class 即字节码文件,由java编写的源文件编译成...

2019-08-06 14:09:49 2185

原创 JAVA多线程编程Condition

正常的生产者消费者模式,按多线程的处理思路来,当条件满足的时候生产者通知消费者消费,条件不满足的时候,消费者通知生产者来生产,然后继续消费。这就涉及到线程间通信,前面我说volatile的时候讲过线程间通信有两种方式:一、通过公共变量。二、通过消息传递。volatile就是前者,后者前面也说了,wait(),notify()。就是典型的后者实现。但是wait() 和 notify()使用起来很笨重...

2019-08-04 13:53:51 103

原创 JAVA多线程编程之ReentrantLock

ReentrantLock主要是用来替代synchronized的。先来看一个例子:import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.ReentrantLock;public class o1reentrantlock { public static void main(String []...

2019-08-03 11:17:45 149

原创 JAVA多线程编程wait,notify,CountDownLatch

wait notify 是Object对象中的方法,也就意味着任何类都具有这两个方法。使用wait和notify的前提是要先获取锁,因为wait和notify是针对某一把锁来操作的。来看一个例子:import java.util.concurrent.TimeUnit;public class o1waitnotify { public static void main(String...

2019-08-02 13:19:55 218

原创 JAVA多线程编程之AtomicXX(原子类)

上一篇讲了volatile关键字 volatile关键字只能保证可见性,并不具有原子性,它不是原子操作。什么是原子性?你可以理解为,在运行过程中,不可能因为cpu调度机制被中间突然打断,我一定是直接串行完成的。原子操作可能是一个步骤,也可能是一些列步骤的集合。该操作顺序不会改变,也不能被切割成某一步骤单独执行。要么一起按顺序执行,要么都不执行,这根事物极其类似,事物概念中的ACID特性中的A指的...

2019-08-02 11:06:00 316

原创 JAVA多线程编程之volatile关键字

volatile这个涉及到JVM内存模型,因为没有读过JVM所以只是理解了很少一点。先来看个例子:import java.util.concurrent.TimeUnit;public class o1volatile { public static void main(String [] args){ m2 a = new m2(); new Thread(a:...

2019-08-02 09:32:23 137

原创 JAVA多线程编程之synchronized关键字

在自己学习的过程中,把自己的理解和体会记录下来。希望能帮助到当时和我一样懵逼的人。synchronized 用过的人都知道是锁,那么锁的概念是什么呢?换老马的话就是 锁就是厕所里的一个坑,外面很多人排队(一大堆阻塞线程)等着,如果你要用这个坑,你就得先拿到这个坑门的钥匙,然后打开这个门,然后才能办你的事。这是我的理解。synchronized 用到的地方很多。//方法上/this关键字 ...

2019-08-01 16:43:12 145

原创 Nginx部署Vue应用

本章只说怎么Nginx的安装以及Vue项目打包部署到Nginx服务器上。在Linux上安装Nginx并配置环境依赖安装 (编译解压Nginx源码的各种依赖)yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel下载并解压安装包//创建一个文件夹cd /usr/localmkdir nginxc...

2019-07-31 10:56:13 492

原创 rpc框架(java动态代理+socket编程)

最近公司让跑一个基于Dubbo的 C/S 架构的项目,之前对于rpc的印象是基于rmi协议的,rmi帮我们屏蔽了底层通信的细节,让我们使用远程对象像使用本地对象一样(基于两个虚拟机之间的通信)。rmi和dubbo之后会会不断更新。这章主要说说rpc。RPCRPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范,它允许程序调用另...

2019-07-29 11:39:01 296

原创 H2数据库相关介绍

什么是H2数据库H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。H2是纯java编写的,源码大小只有1M左右。优点:速度非常快,开源,JDBC API嵌入式和服务器模式; 内存数据库基于浏览器的Console应用...

2019-07-17 17:58:42 1096

原创 虚拟机四种网络模式

这两天用到Docker部署,而docker部署的时候也分好几种模式。搞得一塌糊涂,索性就把虚拟机网络模式重新理一遍,下一篇会讲解docker部署的时候的模式。虚拟机网络模式一般有四种桥接模式主机模式NAT模式LAN模式桥接模式桥接模式就是把宿主机的网卡与虚拟机的虚拟网卡通过虚拟网桥连接起来,将宿主机比作一个交换机,那么虚拟机还有宿主机全部连接在这一个交换机上,且他们属于同一网段,...

2019-06-19 17:59:25 804

原创 jasypt 配置文件加密

jasypt是springboot项目中对properties进行加密的,该加密是双向的且可以配置秘钥。可以加密的数据为system propertyenvironment propertycommand line argumentapplication.propertiesyaml propertiesother custom property sources我们配置文件中经常出...

2019-06-19 11:55:02 2133 1

原创 SpringCloud入门学习之Gateway(三)

SpringCloud GatewaySpringCloud Gateway 是Spring提供的一种网关。工作原理图:客户端访问SpringCloud Gateway,如果请求与网关路由匹配,则由SpringCloud Gateway发送到网关的web程序处理。...

2019-05-27 17:38:12 2485

原创 Docker自定义镜像

今天有涉及到为服务关于Docker部署的问题,因为之前做项目用过docker,一些基本概念也有了解,但是只局限与使用官方的镜像,比如mysql,tomcat等镜像。今天使用inteliji将微服务部署到docker上,在这里做一个总结。Docker基本概念这里就不赘述了,有需要的道友可以查一下,网上很多资料。通常我们通过docker pull XX 或 docker run XX命令来从仓库中...

2019-05-22 10:23:16 1090

原创 SpringCloud Stream基于消息驱动

不知道你们在学习的过程中有没有这个疑问,消息主线和消息驱动的区别(springcloud bus 和 springcloud stream的区别)。我就去查了相关的资料总结了一下。SpringCloud busSpring Cloud Bus将分布式系统的 **~~节点~~ ** 与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,Bus就像...

2019-04-28 09:30:32 202

原创 SpringCloud Bus消息总线

我们先来了解一个场景,前面我们学习SpringConfig的时候会遇到这个问题,就是每个微服务实例对配置中心的配置文件只是启动的时候加载一次,如果我们后续在服务没有停止的时候修改了配置文件,我们首先可以对服务进行重启操作,但是这种方案在实际运行中并不可取,第二种是我们使用Actuator开放的/Refresh端点对单个服务进行配置更新,这种解决方案对于服务实例很少的情况下乍一看可以,但是如果服务实...

2019-04-25 16:43:25 191

原创 RabbitMQ理论及架构

什么是RabbitMQ先来了解什么是AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。RabbitMQ是基于AMQP协议的一种实现,RabbitMQ服务端由Erlang语言编写,用于在分布式系统中提供消息储存和转发。本章将具体介绍一下RabbitMQ的概念已经相关原理架构。RabbitMQ架构图...

2019-04-24 20:42:43 325

原创 RabbitMQ服务启动就自动停止解决方案

Windows下安装RabbitMQ后,按正常RabbitMQ会自动注册服务并自动启动,但是如果有的道友不注意中英文目录就会出现服务启动后几秒钟自动停止,而且反反复复。出现这种情况一般都是由我们的用户名是中文,而导致默认的DB和log访问出现问。所以我建议以后大家在使用windows操作系统的时候尽量用英文来命名文件或目录,这样会极大的减小以后安装软件出现莫名其妙的问题的bug。接下来我们先...

2019-04-24 11:22:19 18555 22

原创 什么是Redis

什么是Redis? 我觉得没有什么比官网解释的更牛逼了。Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分...

2019-04-23 17:34:24 156

原创 RocketMQ原理

SpringCloud 学习目前已经进入到了消息总线这块了,很抱歉,因为之前没有对消息队列这块有很深的了解。看起来比较吃力,就合上书,来把消息队列相关的东西在看一遍。什么是消息队列(Message Queue)?队列我们知道是一种先进先出的数据结构,而消息队列我们可以把它看成是一个存放消息的容器,而这种容器也是先进先出的。更重要的是,这个容器针对消息生产者和消息消费者是异步进行的(作用是减少响...

2019-04-20 14:58:23 301

原创 JAVA中什么是事物

说起来事物,就跟数据库操作有关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。事务的原子性:表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。事务的一致性:表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。事务...

2019-04-20 11:39:12 5158

原创 Spring Security小讲

近期在搞微服务,看到OAuth2认证登录的时候,突然就搞不明白了,自己对于spring security 压根就没搞清楚,于是花了几天时间专门看了看ss,把这几天自己学到的记录一下。老规矩,先说明概念。1.什么是spring securityss为我们的应用程序提供了认证、和授权两大功能,这对于我们应用程序的安全至关重要,它决定着什么用户或角色可以访问我们的程序的任何一角。ss整个架构的核心...

2019-04-15 10:21:20 220

原创 SpringCloud + OAuth 搭建授权服务Demo

前面讲了什么是OAuth协议,今天我们来结合Spring Security来搭建一个授权的demo.我们会用postman模拟登陆OAuthServerpom依赖 <!--引入security--> <dependency> <groupId>org.springframework.cloud<...

2019-04-11 15:23:04 306

原创 JAVA内存分配

每次看相关技术文档,一遇到堆栈什么的总是一脸懵逼,这次决定搞清楚这两个东西,然后愉快的去装逼(手动滑稽)先附上虚拟机在运行的时候内存分布1.寄存器:程序无法操控。2.栈:存放基本类型的数据和对象引用。对象本身在堆中,这里只是存放对象的引用。3.堆:存放对象(new出来的全部放在这里面)4.静态域:存放类中定义的static静态成员信息JAVA内存分配中的栈:在函数中定义的一些基本类型...

2019-04-10 21:49:43 166

原创 JAVA多线程详解

昨天同事分享了一个关于java多线程的文章,好奇(多线程自己掌握的很不好)点进去看了看,看了一章就被吸引了,大佬讲的就是好。正要继续看的时候,你懂得,要收费了。。。没办法,就决定今天下班花点时间来把这一块东西看一下,然后总结一下。(本文只是一个入门,用好多线程是一门学问,我估计最少也得写一本书)在继续之前,我们要先弄清楚什么是进程,什么是线程,什么是并行,什么是并发。并发现在我们用到的操作系...

2019-04-09 10:15:01 159

原创 什么是OAuth2.0

这两天在看zuul,有讲到OAuth2.0,以前没有用过,这次专门学习一下,并记录下来。什么是OAuth2.0?OAuth是一个关于授权的网络标准,大家也可以认为是一种规范性的模式,目前版本是2.0。基于OAuth2.0的客户端授权模式有四种他们分别是:一、授权码模式(authorization code)二、简化模式(implicit)三、密码模式(resource owner pa...

2019-04-03 10:44:24 660

原创 SpringCloud+zuul服务网关

Zuul网关什么是网关?网关是介于我们客户端和各个服务中间的一个流量入口,因为高度集中所以他还充当服务调用的中央策略执行点,因为他的入口性,和集中性,那么我们横切服务的关注点就很容易在一个地方实现,而不需要在各个开发团队来实现这些关注点。可以在服务网关中实现的横切关注点主要有一下几个:一、静态路由二、动态路由三、验证和授权四、日志记录和流量控制(我们有没有注意到这样一个问题 ,网关...

2019-03-29 21:16:23 3494

原创 SpringCloud使用Hystrix实现后备和仓壁模式

前几章我们讲解了客户端负载均衡模式、断路器模式,这一张我们讲解一下后备模式和舱壁模式。后备模式顾名思义,后备模式指的是当Hystrix检测到我们的请求没有任何反应的时候采用另外的方案。上代码我们看到我在@HystrixCommand注解中传入一个参数 fallbackMethod 并赋值为我们当前类的一个方法名(一定要是当前类的方法名)当Hystrix检测请求长时间没有响应的时候就会执...

2019-03-29 14:41:34 1270 1

空空如也

空空如也

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

TA关注的人

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