自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 skywalking过滤某些不需要被监控的接口

在agent下,将apache-skywalking-apm-bin-es7\agent\optional-plugins\apm-trace-ignore-plugin-6.6.0.jar复制到apache-skywalking-apm-bin-es7\agent\plugins下面。在apache-skywalking-apm-bin-es7\agent\config下面新建一个配置文件 apm-trace-ignore-plugin.config,文件内容为:trace.ignore_pa..

2020-07-10 15:29:06 4106 1

原创 记一次skywalking数据无法写入问题的解决

公司新的微服务项目使用skywalking作为链路追踪和应用监控,监控数据使用es存储。在上线之后发现一个很诡异的现象,白天的时候数据都写入正常,晚上12点之后,数据就一直无法写入es。查看skywalking-oap-server.log发现如下的问题:刚开始以为是es集群配置太低导致数据写入失败,可是加了配置之后上述问题依然存在,只能再次排查。首先检查es状态,发现es状态正常,如下:后面又参照百度的内容,优化es写入性能,如下,发现问题依然没有解决:PUT /_template/skywal

2020-07-08 16:11:28 3137

原创 设计模式--观察者模式

观察者模式定义了对象之间的一对多的依赖关系,当一个对象改变状态时,它的所有依赖着都会受到通知并且自动更新。观察者模式的UML图Subject:抽象主题,把所有对观察者的引用保存在一个聚集里,每一个主题可以有多个观察者。Observer:抽象观察者,为所有具体观察者定义了一个接口,在得到主题的通知时能够及时更新自己。ConcreteSubject具体主题,在具体主题发生改变时,给所...

2020-01-06 23:33:34 326

原创 设计模式--备忘录模式

备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,在以后的某个时间点可以恢复到之前保存的状态。备忘录模式的UML图Originator:原发器,负责创建一个备忘录,用来记录对象当前的状态,也可以用来恢复一个对象之前的某个状态。同时原发器还可以根据需要决定Memento存储Originator的那些内部状态。Memento备忘录,用来存储Ori...

2020-01-05 22:45:00 176

原创 设计模式--中介者模式

中介者模式可以提供双方的媒介,而代理者模式只能代理其中的一方终结者模式用一个终结对象类封装一系列的对象交互,中介者使各对象不需要显式的相互引用,达到解耦的效果,并且可以独立的改变他们之间的交互。中介者模式的UML图Mediator抽象中介者模式;ConcreteMediator具体中介者,需要知道所有具体同事类,同时需要从具体同事类那里接受信息,并且向具体同事类发送信息;C...

2020-01-05 14:56:47 313

原创 设计模式--迭代器模式

迭代器模式(Interator)提供了一种顺序访问一个聚合对象中的各种元素,而又不暴露该对象内部。迭代器模式的UML图Interator,遍历器角色,定义遍历元素需要的方法,一般会有三个方法,next(),hasNext(),remove();Concrete Interator具体迭代器,完成集合的迭代;Aggegate一般是一个接口,提供了intorator()的方法,例如C...

2020-01-04 23:49:43 163

原创 设计模式--解释器模式

解释器模式就是定义语言的文法,并且建立一个解释器来解释该语言中的句子解释器模式的UML图AbstractExpression抽象表达式。TerminalExpression,终结符表达式,解释结果的;NonterminalExpression,非终结符表达式,一般以子类的形式出现;Context,环境类,存储符号和其他信息,以便于获取解释结果之前的存储;Client客户类解...

2020-01-04 22:36:01 121

原创 设计模式--命令模式

将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作(回到之前的状态,并非命令的拦截)。命令模式的UML图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-io6GmzYH-1578129548928)(C:\Users\Kangs\AppData\Roaming\Typora\typora-user-images\im...

2020-01-04 17:19:39 89

原创 设计模式--责任链模式

责任链模式: 避免请求接受者和发送者耦合在一起,让多个对象都可以接受请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。客户端和处理者都没有对方的明确信息,处理者也不知道责任链中的结构。责任链可以简化对象的相互连接,他们只保存一个指向其后续处理者的引用。客户提交请求后,请求沿着链往下传递直到有一个请求处理者处理为止。在责任链模式中我们可以随时随地的增加或者更...

2020-01-04 15:59:24 96

原创 设计模式--代理模式

代理模式就是给一个对象提供了一个代理对象,并由代理对象控制对原对象的引用起到了一个中介的作用,它连接客户端和目标对象代理模式的UML图subject:抽象角色,声明真实对象和代理对象的共同接口。proxy:代理角色,代理对象与真实对象实现相同的接口,所以它在任何时刻都能够代理真实对象,内部包含对真实对象的引用。realsubject真实角色,代表着真实的对象。按照代理...

2019-12-31 22:01:46 73

原创 设计模式--享元模式

享元模式使用共享技术(开辟一块静态的存储区域,将相似的对象放入该静态区域),实现相同或者相似对象大量细粒度的对象复用,达到共享类或者对象的目的。减少了空间复杂度,加大了时间复杂度系统使用少量的对象,而这些都比较相似,状态变化小,可以实现对象的多次复用。享元模式中两个重要的概念内部状态:在享元对象内部不随外界环境改变而改变的共享部分。外部状态:随着环境的改变而改变,不能够...

2019-12-29 15:25:30 93

原创 设计模式--外观模式

外观模式的目的在于如何简化接口,可以将多个类的复杂的一切隐藏在背后,值显露一个干净美观的外观。所谓的外观模式就是提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高级接口,让子系统更容易使用,外观模式的UML图外观模式的代码实现创建3个子部件/** * 子系统角色:空调 */public class Air { public v...

2019-12-29 12:35:06 104

原创 设计模式--装饰者模式

给类或对象添加行为的方式使用继承,这是一个静态的方式,在编译的时候就已经决定了子类的行为,不便于空值增加子类行为的方式和时机。适用关联,将一个对象嵌入到另一个对象中,这是一种动态的方式,可以在应用程序中动态的控制。装饰者模式在不改变原类文件和继承(与适配器模式的小的区别)的情况下,动态的扩展一个对象的功能。装饰者模式通过创建一个包装对象(装饰对象)包裹真实的对象。适配...

2019-12-28 21:09:33 94

原创 设计模式--组合模式

组合模式:组合多个对象形成树形结构以表示"整体-部分"的结构层次。组合模式对单个对象(叶子对象)和组合对象(组合对象)具有一致性,它将对象组织到树结构中,可以用来描述整体与部分的关系。同时他也模糊了简单元素(叶子对象)和复杂元素(容器对象)的概念,使得客户能够像处理简单元素一样来处理复杂元素,即使客户程序与复杂元素的内部结构解耦。组合模式最关键的地方:叶子对象和组合对象实现相同的接...

2019-12-28 19:05:41 119

原创 设计模式--桥接模式

桥接模式将继承关系转化成关联关系,降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。桥接模式的UML图桥接模式的代码实现创建一个抽象类/** * 抽象类,交接模式的最终目的就是建立一个抽象类的对象,结构型模式注重的是对象的结构创建, * 这种模式不负责生产对象 */public abstract class Car { /** * ...

2019-12-28 15:54:31 148

原创 设计模式--适配器模式

问题的请提出:有一个系统需要和新的库搭配使用,但是这个库提供的接口与现有的系统不兼容,需要不改变现有系统的情况下解决这个 问题,就需要将新库的接口转化成当前系统需要的接口,这个时候就需要用到适配器模式。适配器模式:讲一个类的接口转化成另一个接口,让原本接口不兼容的类实现交互。在适配器模式中,需要定义一个包装类,包装不兼容接口的对象,这个包装类就是适配器,它所包装的对象就是适配者。...

2019-12-23 21:47:37 126

原创 设计模式--原型模式

原型模式中利用一个原型对象来指明我们需要创建对象的类型,然后通过赋值这个对象来获取一个与该对象一模一样的对象实例。原型模式就是用原型实例指定创建对象的种类,并且通过克隆这些原型来创建新的对象。在原型模式中,创建对象是通过请求原型对象类型来拷贝原型对象自己来创建对象,也就是只需要知道原型对象的类型就可以获得更多的原型实例对象。拷贝的类型浅拷贝:使用一个已知实例对新创建的实例...

2019-12-23 17:52:03 70

原创 设计模式--建造者模式

建造者模式与工厂模式的区别建造者模式关心的是对象创建过程中的细节工厂模式关心的是对象创建的整体建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式构建复杂对象就像造汽车一样,一个一个组件一个一个步骤创建出来的,允许用户通过制定对象类型和内容来创建,但是用户不需要知道这个复杂对象的构建过程,只需要明白通过某种方式就可以获得一个复杂对象的实...

2019-12-21 12:42:42 86

原创 设计模式--单例模式

在某些情况下只需要某个对象只能有一个实例,就需要用到单例模式。单例模式的特点只有一个实例必须要自行实例化必须自行向整个系统停工访问点饿汉式单例模式的代码实现/** * 懒汉式单例模式 */public class LazySongleton { private static LazySongleton lazySongletonInstance; ...

2019-12-15 11:05:23 101

原创 设计模式--抽象工厂模式

工厂方法模式中只能创建一类对象,但是不能创建多个类型的产品。产品族是在抽象工厂模式中,在抽象工厂模式中,产品组是指有同一个工厂生产位于不同产品等级结构中的一组产品。抽象工厂模式提供一个接口,用于创建相关或者依赖的对象的家族,而不需要明确指定具体类。抽象工厂允许客户端使用抽象的接口来创建一组相关的产品,而不需要关心实际产出的具体产品是什么,这样,客户就可以从具体的产品中被解耦...

2019-12-14 22:27:03 96

原创 设计模式--工厂模式

工厂模式一定要面向接口编程,将工厂类设计为接口类型,将createPizzaf()方法放在子类中,那么子类进行createPizza方法的具体实现。工厂方法模式定义了一个创建对象的接口,但有子类决定要实例化哪一个类。工厂方法模式让实例化推迟到子类。工厂模式数据建造者模式中的类创建型。工厂模式的UML图工厂模式是面向接口编程的动态工厂模式。工厂方法模式是简单工厂模...

2019-12-14 15:37:51 108

原创 设计模式--简单工厂模式

将一个对象的创建移到里一个类里面了。简单工厂模式又称为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。简单工厂模式的UML图简单工厂模式的优点:实现了堆责任的分割,提供了专门的工厂类用于创建对象。客户端无需知道所创建的具体的产品的类名,只...

2019-12-14 13:56:05 86

原创 vue组件的生命周期

在使用Vue的过程中需要频繁的创建和销毁组件比如页面部分内容的显示与隐藏,但是用的是v-if可以使用组件缓存来缓存页面上的组件,防止频繁的创建和销毁组件内置组件中被其包裹的组件,在v-if=false的时候,不会销毁,而是停用v-if=true不会创建,而是激活避免频繁创建组件对象对性能的损耗组件的激活和停用activated和deactivated组件创建组件创...

2019-12-01 22:11:26 640

原创 vue的组件化开发

组件创建的两种方式:局部声明全局声明组件类型通用组件(表单、弹窗、布局类等)业务组件(抽奖、机器分类)页面组件(单页面开发程序的每个页面都是一个组件、只完成功能、不复用)组件开发三部曲:声明、注册、使用slot插槽slot就是子组件里给dom留下的坑位<子组件>DOM</子组件>slot是动态的DOMslot使用示例...

2019-12-01 18:12:55 146

原创 vue的过滤器和监听器

vue的过滤器的作用是对数据进行处理后再展示过滤器有全局过滤器和组件内过滤器全局过滤器:Vue.filter(‘过滤器名’, 过滤方式fn);组件内过滤器filters:{‘过滤器名’, 过滤方式fn};{{ msg | 过滤器名}}最终都是在过滤方式fn里面return产出最终需要的结果过滤器的使用方式–组件内过滤器<!DOCTYPE html>&...

2019-11-24 21:11:44 256

原创 vue事件绑定

vue单向数据绑定v-bind单向数据绑定,内存数据的改变影响页面数据的改变v-bind就是对属性的简单赋值,当内存中值改变,会触发重新渲染,只能由js修改页面的值,页面的值修改后无法修改js中的值v-bind可以简写为 :v-bind使用示例<!DOCTYPE html><html><head> <title>v-bin...

2019-11-24 11:53:10 164

原创 vue的入门与指令

下载vue.js首先需要在本机安装node.js使用命令行进入到需要下载的文件夹下使用如下的命令下载vuenpm install vue然后就会在所在的路径下面找到vue的文件,如下图在node_modules\vue\dist下就可以找到vue.js的文件创建第一个vue的文件<!DOCTYPE html><html>&...

2019-11-23 16:10:30 100

原创 dubbo高级特性

启动依赖检查dubbo缺省会在启动时检查依赖的服务是否存在,不可用时会抛出异常,阻止spring初始化完成,以便上线时,能及早发现问题,默认check=true.可以通过check=false关闭检查,比如测试时有些服务不关心,或者出现了循环依赖,必须有一方先启动。如果spring容器是懒加载,或者通过API编程延迟引用服务,请关闭check,否则服务临时不可用时,会抛出异常,拿到nu...

2019-11-18 23:00:44 319

原创 dubbo注册中心

Simple注册中心:本身就是一个普通的dubbo服务,可以减少对第三方依赖,使整体通讯方式一致。在生产环境中不建议使用,只是简单实现,不支持集群,可作为自定义注册中心的参考。Multicast注册中心:本身不需要启动任何节点,只要广播地址一样,就可以互相发现。组播受网络结构限制,只适合小规模应用或者开发阶段使用。组播地址段:224.0.0.0-239.255.255.25...

2019-11-10 10:54:05 517

原创 zookeeper中分布式锁的实现方式

分布式锁:​ 在分布式服务中,如果各个服务之间需要去竞争资源,没办法使用单机多线程中JDK自带的锁,谷此时需要分布式锁来协调。分布式锁实现的手段:zookeeper、redis、memcache分布式锁的实现原理zookeeper:去创建相应的节点,创建成功,则表示获取到了相应的锁;创建失败,则表示获取锁失败,释放锁的时候,删除该节点即可。redis、memecache:...

2019-11-02 20:04:32 174

原创 zookeeper集群的搭建

zookeeper中各个默认端口的作用2181 对client端提供服务2888 集群内及其通讯使用的端口3888 集群选举leader在每个zookeeper的conf下的zoo.cfg文件中配置dataDir = dataPathclientPORT = 2181server.1=host1:2888:3888server.2=host2:2888:3888ser...

2019-11-02 17:33:06 121

原创 zookeeper的选举机制

zk集群中的三种角色:leader: 作为整个zk集群写请求的唯一处理者,并负责投票的发起和决议,更新系统的状态follower: 接受客户端请求,处理读请求,并向客户端返回结果;将写请求转发给leaderobserver: 可以理解为无选举投票权的follower,其主要是为了协助follower处理更多的读请求。如果zk集群的读请求负载很高,或者客户端非常多,多到跨机房,则可以设置...

2019-11-02 15:15:42 516 2

原创 zookeeper的session机制、watcher机制及acl机制的介绍

session机制session用于客户端和服务端之间的连接,由客户端创建,可设置超时时间,通过心跳包机制(客户端向服务端ping包请求),检查心跳结束,session过期。session过期的时候,该session创建的所有临时节点都会被抛弃。watcher机制对接点进行watcher操作get stat对某个节点进行监控get path watchers...

2019-10-27 21:06:54 279

原创 zookeeper常用命令zkCli使用

zookeeper节点类似于树的形式进行保存zookeeper节点类型永久节点:已创建就会一直保存,直到手动删除临时节点:一旦session断开,临时节点便会删除zookeeper每个数据节点之间都有一个版本号,在每次修改数据的时候对应的版本号回增加。zookeeper的节点不适合存放大量的数据zookeeper使用场景:分布式锁dubbo的注册中心...

2019-10-27 15:21:35 4168

原创 Centos中安装zookeeper

下载apache-zookeeper-3.5.6-bin.tar.gz的安装包将安装包上传到服务器 /usr/local目录下解压上传的安装包tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz进入zookeeper目录cd apache-zookeeper-3.5.6-bin创建数据存放目录mkdir data进入c...

2019-10-27 11:20:39 168

原创 分布式系统中的CAP理论

C Consistency,一致性,在分布式系统中的所有数据备份,在同一时刻是否同样的值,所有客户端总是展现同样的数据。强一致性(strong consistency):任何时刻,任何用户都能读取到最近一次成功更新的数据。单调一致性(monotonic consistency):任何时刻,任何用户一旦读取到某个数据在某次更新后的值,那么久不会读取到比这个值更旧的值。也就是说可以获取的数据必...

2019-10-27 09:57:13 136

原创 并发编程的基础类

volatile:​ 在java的内存模型中,每个线程都有自己的工作内存,同时还有一个共享的主内存,在多个线程中如果需要读取同一个变量的值的时候,它们都会去主内存里面将该变量的值加载到自己的工作内存中,然后才可以使用那个值,这样可以提高代码的执行效率,但是各个线程在修改该变量的值的时候,因为只修改自己工作内存中的数据,而别的线程不知道修改后的结果,导致程序执行的结果与预期的结果不一致,这...

2019-08-27 10:15:23 102

原创 常用SQL优化

count(*):对InnoDB而言,它需要把数据从磁盘中读取出来然后累计计数;而MyISAM引擎把一个表的总行数存在了磁盘上,所以count()会直接返回这个数,如果有where条件则和InnoDB一样。那么如何优化count(),一个思路是使用缓存,但是要注意双写一致的问题,还可以专门设置一张表用以存储count()。对于count(id)来说,InnoDB会遍历整张表,把每一行的id...

2019-08-22 19:16:57 220 1

原创 MySQL架构、日志事务以及索引介绍

MySQL分为server层和存储引擎层server层连接器:管理连接权限验证查询缓存:命中缓存,直接换回结果分析器:分析语法优化器:生成执行计划,选择索引执行器:操作索引,返回结果存储引擎:存储引擎负责数据的存储和提取,器架构是插件式的,innodb在MySQL5.5.5版本开始成为MySQL的默认存储引擎InnoDB:支持事务,支持外键,InnoDB是聚集索...

2019-08-22 11:21:54 267

原创 深入浅出JVM之类加载机制

什么是类加载:JVM讲class文件字节码加载到内存中,并讲这些静态数据转化成方法区中的运行时数据结构,在堆(HotSpot在方法区中)生成一个代表这个类的java.lang.Class对象,作为方法区类的访问入口。类加载机制分为5步加载 -> y验证 -> 准备 -> 解析 -> 初始化加载、检验、准备、初始化和卸载这个五个阶段的顺序是固...

2019-08-20 20:20:46 241

空空如也

空空如也

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

TA关注的人

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