自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 dubbo的使用和基本的功能用法

1. dubbo 有什么用在分布式系统中,服务与服务之间怎么通信是一个问题,目前主流的方式就是通过RPC或HTTP协议进行通信。像Spring Cloud就是通过http协议进行服务之间的通信,而dubbo是一个RPC框架,它实现了RPC调用。这两种方式对比起来的话,HTTP协议稍微简单点,但是由于它需要3次握手和4次挥手,性能较差,而dubbo实现的RPC,底层是用netty这种非阻塞I/O,速度会快很多。性能:http: 由于它是无状态的,每次调用它都需要3次握手和4次挥手,性能较差。 d

2020-05-28 16:14:09 2828

原创 spring boot 单元测试的使用和一些坑

1. 背景在每次使用https://start.spring.io/创建spring boot后,都会发现它的单元测试好像有点不太一样,好像是用的junit5,但是我看的pom文件那个测试依赖太长了,看着不爽,如下图所示。所以我决定还是用之前版本的单元测试<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-t.

2020-05-27 23:28:15 377

原创 Hyper-v 实现与虚拟机共享文件夹

1. 介绍要想实现Hyper-v 与虚拟机共享文件夹,方式有很多,其他的方式我看过,但是都没有实现出来,所以我使用了vsftp来操作。物理机系统windwos 10 ,虚拟机为linux cenos72. vsftp2.1 安装yum install vsftpd#检查安装是否成功vsftpd -v2.2 启动服务#启动ftp命令service vsftpd start#停止ftp命令#service vsftpd stop#重启ftp命令service vsf

2020-05-27 20:49:34 11277

转载 CAP原理这样理解最简单

前言众所周知,CAP理论是架构师在设计分布式系统过程中,处理数据一致性问题时必须考虑的基石级理论(圣经级的,^V^)。大意是说,在分布式网络分区环境中,数据的一致性、可用性和分区容忍性三者之间,至多只能保证两者,无法三者同时保证。对于CAP理论,个人刚接触时感觉很容易理解,不就是讲的一个在分布式环境下鱼和熊掌不能兼得的问题吗?诚然,如果从直观上泛泛而谈,的确不难,即在多节点的网络环境中,当要求数据强一致性时,一定会牺牲掉可用性,反之亦然。然而,在最近的一次公司内部技术分享会上,一个同事问我,能不能顺便通

2020-05-27 09:42:42 239

原创 zookeeper实现服务器动态上下线,分布式锁

通过前面的Zookeeper学习,我做了几个例子来巩固以下:1.服务器动态上下线需求:app client可以感知到app server的上下线(app client和app server是指我们的应用服务器)大致思路:app server启动后,在zk server上的servers节点下创建一个临时节点。app client启动后,监听servers节点。由于app server创建的是临时节点,那么当app server服务停止后,节点就会被自动删除,此时zk server通知

2020-05-26 13:39:13 298

原创 Zookeeper基本知识点及使用java操作zk 且实现循环监听节点

1. 概述Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。所以可以大概理解成:Zookeeper=文件系统+通知机制。官网下载:https://zookeeper.apache.org/2. 特..

2020-05-26 00:40:44 1598

原创 JVM 类加载机制和字节码技术

1. 简述典型的Java程序执行流程如下:我们在本地编写完Java源程序; IDE自动帮我们编译成.class文件(也可以手动通过javac命令编译),然后打包成jar包或者war包; 接着,执行java -jar命令或直接部署到web容器中来运行程序; 运行时,OS会启动一个JVM进程,JVM会采用类加载器将各种.class文件中包含的Java类加载到内存中; 最后,JVM基于自己的字节码执行引擎,来执行加载到内存中的那些类。2.类加载机制2.1类加载器类加载器可以大致划分为..

2020-05-25 12:51:23 268

原创 jvm 内存结构,GC相关内容和调优

参考博客:https://www.tpvlog.com/article/861. jvm内存结构大致的结构如上图所示。注意:新生代的地方,HotSpot VM(虚拟机的一种实例)对新生代采用了复制回收算法来实现gc的垃圾回收。而传统的复制算法比较浪费空间,所以它将新生代又分为了3个区域,1个Eden,和2个Survivor区。 方法区只存在于JDK1.8以前的版本,从JDK1.8开始,这块区域的名字改成了元数据区(Metaspace),元数据区直接使用本地内存,本地内存指的是直接使用.

2020-05-25 00:56:03 336

原创 java多线程并发包中的executors框架(线程池)和Fork/Join框架

1. 概述1.1 Executor是JDK1.5时引入的,引入该接口的主要目的是解耦任务本身和任务的执行。我们之前通过线程执行一个任务时,往往需要先创建一个线程,然后调用线程的start方法来执行任务。而Executor接口解耦了任务和任务的执行,该接口只有一个方法,入参为待执行的任务public interface Executor { /** * 执行给定的Runnable任务. * 根据Executor的实现不同, 具体执行方式也不相同. void e

2020-05-23 00:06:28 1737

原创 java多线程并发包中的locks,atomic,sync ,collections

1. 并发包概述在多线程编程时,java.util.concurrent包是非常重要的按照功能划分:locks 锁框架 atomic 原子类框架 sync 同步器框架 collections 集合框架 executors 执行器框架早期的JDK版本中,仅仅提供了synchronizd、wait、notify等等比较底层的多线程同步工具,开发人员如果需要开发复杂的多线程应用,通常需要基于JDK提供的这些基础工具进行封装,开发自己的工具类。JDK1.5+后,Doug Lea根据一系列常见的

2020-05-22 21:23:54 439

原创 多线程基础

多线程线程的创建方式线程的创建方式有两种(官方api文档)继承Tread类,并重写其中的run方法实现Runnable接口,并重写run方法还有两种是通过线程池创建线程实现Callable接口重写call方法线程的启动通过调用线程的start方法启动线程继承Thread类 class PrimeThread extends Thread { @Override public void run() { // comp

2020-05-20 16:51:22 143 2

原创 多线程安全问题的基础内容和理解

线程安全问题当多个线程同时共享,同一个全局变量或静态变量(即局部变量不会),做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。案例:抢票public class ThreadSafeProblem { public static void main(String[] args) { Consumer abc = new Consumer(); // 注意要使用同一个abc变量作为thread的参数,

2020-05-20 14:21:30 374

原创 spring cloud sleuth的使用,与ziplin整合及解决由于springboot版本(1.x和2.x)问题引入的zipkin版本bug

1.介绍由于微服务很复杂,当服务多了之后,就需要有一个东西去记录服务之间的调用,这样可以快速定位问题,且最好能同时记录服务之间的调用时长等信息,方便优化系统。spring cloud sleuth就有这样的作用。我们称这种技术叫做服务链路追踪2. sleuthsleuth记录服务链路主要是依靠日志2020-05-08 14:39:31.429 INFO [sleuth-track2,8f38aeed036ff375,21f05063bd635c35,false] 9236 --- [ni

2020-05-08 19:52:03 1699

原创 spring cloud bus的使用及使用bus发布自定义事件

1. spring cloud bus介绍Spring cloud bus使用轻量级消息代理将分布式系统的节点连接起来,可以使用此代理,广播状态更改(例如配置更改)或其他管理指令。它可以用作应用程序之间的通信通道。该项目提供了两种消息传输处理:AMQP broker和Kafka 2. 如果你想使用activemq或其他的消息中间件作为消息传输,那么需要实现spring cloud strea...

2020-05-07 21:56:05 3411 3

原创 spring 事件的使用

1. 介绍事件Event驱动模型实际也被称之或者发布/订阅模型。Spring中,也为我们提供了这样的框架,采用Event/Listener这样的好处自然不用多说,就是解耦,利于扩展,并且利于一对多这种形式,我们下面就来介绍下Spring的Event模式2. 核心主要就3个:ApplicationEvent:事件本身ApplicationEventPublisher:事件发布者...

2020-05-07 16:24:24 398

原创 spring cloud bus 实现config配置的动态更新

1 消息总线bus简单理解就是一个消息中心,众多微服务实例可以连接到总线上,实例可以往消息中心发送或接收信息(通过监听)。比如:实例A发送一条消息到总线上,总线上的实例B可以接收到信息(实例B订阅了实例A),这样的话,消息总线就充当一个中间者的角色,使得实例A和实例B解偶了2 Config遗留的问题当config server中的配置修改后,config client不能及时的进行为当...

2020-05-06 23:44:00 527

原创 springboot 整合 rabbitmq及其安装和新建用户后的小bug的解决

1.安装rabbitmq在windows系统上安装rabbitmq参考博客:https://www.cnblogs.com/saryli/p/9729591.html2. 创建项目2.1 引入依赖<!--支持rabbitmq--><dependency> <groupId>org.springframework.boot</...

2020-05-06 21:23:27 591

原创 spring cloud Zuul 过滤器

介绍Zuul的路由功能在上一篇博客中已经写过了,这篇主要是写下zuul 的过滤器怎么用zuul的过滤器功能负责对请求的处理结果进行干预,可实现请求校验等功能,每一个进入Zuul的Http请求都会经过一系列的过滤器处理链得到请求响应并返回给客户端。Zuul实现的过滤器主要包含4个基本特征,过滤类型,执行顺序,执行条件,具体操作。这些其实就是在ZuulFilter接口中定义的4个抽象方法...

2020-05-06 16:08:46 187

原创 spring cloud zuul之路由功能和路由服务降级

1.介绍Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。也减少了客户端与服务端的耦合,服务可以独立发展,通过网关层来做映射Zuul主要有两大功能:路由转发和过滤。路由转发能够为全部服务提供一个唯一的入口,起到外部和内部隔离的作用,保障了后台服务的安全性。过滤可以用来鉴权校验,识别每个请求...

2020-05-06 00:21:31 509

原创 spring cloud feign的学习与使用

说明官方说明:Feign是一个声明性web服务客户端。它使编写web服务客户机更容易。使用Feign创建一个接口并注释它。它具有可插入的注释支持,包括Feign注释和JAX-RS注释。Feign也支持可插拔编码器和解码器。个人理解:Feign是简化了ribbon访问服务时的代码编写,使得我们能够更清楚,更方便的知道服务提供者与服务消费者之间的请求。由于Feign已经集成了Ribbon和...

2020-05-05 00:32:14 941

原创 Spring cloud Hystrix

熔断器Hystrix熔断器的原理很简单,如同电力过载保护器。它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正,如果已经修正,应用程序会再次尝试调用操作。熔...

2020-05-02 01:08:23 127

海康sdk初始化的自动加载组件库

1. 将海康组件放到项目中,并且jar包可以放到linux上直接运行,不需要再在linux上放一套海康的组件库文件 2. 可以将resources下的文件复制到与项目平级的目录下,方便资源加载

2024-07-05

构建ffmpeg镜像的脚本

使用jdk8的基础镜像,安装ffmpeg,并构建自己的镜像。 可以将构建出的镜像作为项目上的基础镜像,从而避免每次启动容器都需要在容器中安装ffmpeg

2024-06-11

空空如也

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

TA关注的人

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