自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 论坛 (1)

原创 Mycat-Web——监控平台

Mycat-web简介Mycat-web是Mycat可视化韵味管理和监控平台,弥补了Mycat监控上的空表,帮Mycat分担统计任务和配置管理任务。Mycat-web引入了Zookeeper作为配置中心,可以管理多个节点。Mycat-web主要管理和监控Mycat的流量、连接、活动线程和内存等,具备IP白名单、邮件告警模块,还可以统计SQL并分析慢SQL和高频SQL导尿管。为优化SQL提供依据。配置使用1. 安装zookeeper并启动:2. Mycat-web安装:地址:http://dl.

2020-07-22 23:19:45 79

原创 Mycat——安全设置

权限配置1. user标签权限控制:目前Mycat对于中间件的连接控制并没有做太负责的控制,目前只做了中间件逻辑库级别的读写权限,是通过server.xml的user标签进行配置。<user name="mycat"> <property name="password">123456</property> <property name="schemas">TESTDB</property></user><user

2020-07-22 22:34:48 77

原创 Mycat——全局序列

全局序列在实现分库分表的情况下,数据库自增主键已无法保证主键的全局唯一。所以,Mact提供了全区sequence,并且提供了包含本地配置和数据库配置等多种实现方式。1. 本地文件原理:此方式MyCAT将sequence配置到文件中,当使用到sequence中的配置后,MyCAT会更下classpath中的 sequence_conf.properties文件中sequence当前的值。配置方式:#在sequence_conf.properties文件中做如下配置: GLOBAL_SEQ.HISID

2020-07-22 20:34:45 54

原创 Mycat——常用的分片规则

分片枚举通过在配置文件中配置可能的枚举id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存, 而全国省份区县固定的,这类业务使用本条规则,配置如下:<tableRule name="sharding-by-intfile"> <rule> <columns>user_id</columns> <algorithm>hash-int</algorithm> </rule></tab

2020-07-22 02:17:30 54

原创 Mycat——垂直拆分、水平拆分

垂直拆分(分库)一个书库由很多表构成,每个表对应不同的业务,垂直切分是指按照业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分摊到不同的库上面,如下图:如何划分表:分库的原则:有紧密关联的表应该在一个库里,互相没有关联关系的表可以分到不同的库里。实现分库:客户表customer一个库;订单表orders、订单详细表orders_detail、订单转态表dict_order_type3个表一个库;schema配置文件:<!-- 3张表在dn1 --> <

2020-07-21 22:23:07 66

原创 Mycat——schemal、server、rule配置详解

schema.xmlSchema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。schema标签:schema 标签用于定义MyCat实例中的逻辑库,MyCat可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用 schema标签来划分这些不同的逻辑库。如果不配置 schema 标签,所有的表配置,会属于同一个默认的逻辑库。<schema name="TESTDB" checkSQLschema="false"

2020-07-21 19:19:57 81

原创 Mycat——读写分离

MySQL主从复制已经通过docker配置了Mysql的主从复制:master: 3339端口slave:3340端口准备了一个test数据库,和一个stu表:master中数据:slave中数据:配置Mycatschema.xml<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"&

2020-07-20 21:27:44 36

原创 Docker配置MySQL主从复制

拉取镜像使用mysql5.7版本docker pull mysql:5.7分别启动两个容器:Master:docker run -p 3339:3306 --name mymaster -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7Slave:docker run -p 3340:3306 --name myslave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7Master对外映射的端口是3339,Slave对外

2020-07-20 00:59:32 46

原创 Mycat——Mac环境搭建

下载解压前提:java环境、MySQL5.5以上;选择Mac版 地址修改配置wrapper.conf 修改用户信息wrapper.java.command=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/javawrapper.working.dir=..server.xml <user name="mycat"> <property name="password">12

2020-07-19 22:24:38 74

原创 MyCat——概述

MyCat是什么MyCat是数据库中间件。1. 数据库中间件:中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部分之间的沟通。例子:Tomcat、Web中间件。数据库中间件:连接java应用程序和数据库。2. 为什么要用MyCat:Java与数据库紧耦合高访问并发对数据库的压力读写请求数据不一致3. 数据库中间件对比:Cobar:Cobar属于阿里B2B事业群,始于2008年,在阿里服役3年多,接管3000+个MySQL数据库的schema,集群日处理在线SQL请求50

2020-07-19 17:52:11 66

原创 面试题——Redis分布式锁

模拟并发抢票先在redis中存入一个ticket,值为50,作为被抢的票。抢票接口:@RestControllerpublic class TestController { @Autowired StringRedisTemplate template; @GetMapping("/test") public String test() throws InterruptedException{ int ticket = Integer.parse

2020-07-16 23:36:55 118

原创 面试题——垃圾回收器、Linux性能、Git命令

垃圾回收器目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集。4中主要垃圾收集器:查看默认垃圾收集器:java -XX:+PrintCommandLineFlags -version== Java的提供的垃圾回收器:==UseSerilGCUseParallelGCUseConcMarkSweepGCUseParNewGCUseParallelOldGCUseG1GCGC约定参数:DefNew (Default New

2020-07-15 21:49:17 43

原创 面试题——JVM参数、引用、OOM

JVM的参数类型1. 标配参数:在JDK各个版本之间稳定,很少有大的变化-version-helpjava -showversion2. X参数:-Xint 解释执行-Xcomp 第一次使用就编译成本地代码-Xmixed 混合模式(默认)3. XX参数:(重点)Boolean类型:公式:-XX:+或者- 某个属性值+表示开启,-表示关闭示例:是否打印GC收集细节开启: -XX:+PrintGCDetails关闭: -XX:-PrintGC

2020-07-14 21:34:38 49

原创 尚硅谷面试题——第一季(二)

MyBatis中实体属性与表中字段不对应书写SQL使用别名驼峰命名情况下,使用<setting name="mapUnderscreToCamelCase" value="true" />开启转换使用ResultMap手动转换Linux系统常用服务类命令centos6:service - 注册在系统中的标准化程序 - 有方便统一的管理方式 - service 服务名 start - service 服务名 stop - service 服务名 restart

2020-07-07 19:50:08 71

原创 尚硅谷面试题——第一季(一)

自增public class Increment { public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i);//4 System.out.println("j=" + j);//1 Syste

2020-07-06 23:16:49 130

原创 面试题——单例模式与反射、序列化

饿汉式立即加载,线程安全。public class Singleton { private static Singleton INSTANCE = new Singleton();//立即加载 private Singleton(){}; public static Singleton getInstance() { return INSTANCE; }}懒汉式延迟加载,线程不安全。public class Singleton { pri

2020-07-06 15:00:32 83

原创 Dubbo——消费者过滤器的实现原理

ActiveLimitFilter的实现原理和服务提供者端的ExecuteLimitFilter相似,ActiveLimitFilter是消费者端的过滤器,显示的是客户端的并发数。<!-- 限制com.foo.BarService的每个方法在每个客户端的并发执行数(或占用连接的请求数)不能超过10个 --><dubbo:service interface="com.foo.BarService" actives="10" />或<dubbo:reference inte

2020-07-04 01:16:20 121

原创 Dubbo——服务提供者过滤器实现的原理

服务提供者过滤器实现的原理@Activate注解上可以设置group属性,从而设定某些过滤器只有在服务提供者端才生效。AccessLogFilter的实现原理1. AccessLogFilter的使用:AccessLogFilter是一个日志过滤器,如果想记录服务每一次的请求日志,则可以开启这个过滤器。虽然AccessLogFilter有@Activate注解,默认会被激活,但还是需要手动配置来开启日志的打印。有两种方式来配置开启AccessLogFilter:<!-- ①将日志输出到应用本

2020-07-04 00:25:57 118

原创 Dubbo——过滤器概述

Dubbo过滤器概述Dubbo中的过滤器和Web应用中的过滤器的概念是一样的,提供了在服务调用前后插入自定义逻辑的途径。过滤器是整个Dubbo框架中非常重要的组成部分,Dubbo中很多功能都是基于过滤器扩展而来的。过滤器提供了服务提供者和消费者调用过程的拦截,即每次都执行RPC调用的时候,对应的过滤器都会生效。虽然过滤器的功能强大,但由于每次调用时都会执行,因此在使用的时候需要注意它对性能的影响。过滤器的使用一种方式是使用@Active注解默认启用;一种方式是在配置文件中配置;<!--

2020-07-03 23:06:22 95

原创 Dubbo——扩展点详解

扩展点整体架构1. RPC层扩展点按照完整的Dubbo结构分层,RPC层可以分为四层:Config、Proxy、Registry、Cluster。由于Config属于API范畴,因此只关注Proxy、Registry、Cluster三层的扩展点。1.1 Proxy层扩展点Proxy层主要的扩展接口是ProxyFactory。Dubbo中的ProxyFactory有两种默认实现:Javassist和JDK,用户可以自行扩展自己的实现,如CGLIB。Dubbo默认选择Javassist作为默认字节码生

2020-07-03 01:24:36 83

原创 Dubbo——Mock

Mock在Cluster中,还有最后一个MockClusterWrapper,由它实现了Dubbo的本地伪装。这个功能的使用场景较多,通常会应用在以下场景中:服务降级;部分非关键服务全部不可用,希望主流程继续进行;在下游某些节点调用异常时,可以以Mock的结果返回。Mock常见的使用方法Mock只有在拦截到RpcException的时候会启用,数异常容错方式的一种。业务层面其实也可以用try-catch来实现这种功能,如果使用下沉到框架中的Mock机制,则可以让业务的实现更优雅常见配置如下://配

2020-07-02 17:13:09 75

原创 Dubbo——Merger的实现

Merger的实现当一个接口有多种实现,消费者又需要同时引用不同的实现时,可以用group 来区分不同的实现,如下所示。<dubbo:service group=" group1" interface=" com.xxx.testService" /><dubbo:service group="group2" interface=" com.xxx.testService" />如果我们需要并行调用不同group 的服务,并且要把结果集合并起来,则需要用到Merger特性。

2020-07-02 14:50:19 95

原创 Dubbo——负载均衡的实现

负载均衡的实现在整个集群容错流程中,首先经过Directory获取所有Invoker列表,然后经过Router根据路由规则过滤Invoker,最后幸存下来的Invoker还需要经过负载均衡这一关,选出最终要调用的Invoker。包装后的负载均衡所有的容错策略中的负载均衡都使用了抽象父类AbstractClusterInvoker中定义的Invoker <T> select方法,而并不是直接使用LoadBalance方法。因为抽象父类在LoadBalance的基础上有封装了一些新的特性:

2020-07-02 14:01:23 64

原创 Dubbo——路由的实现

路由的实现路由接口会根据用户配置的不同路由策略对Invoker列表进行过滤,只返回符合规则的Invoekr。例如:如果用户配置了接口A的所有调用,都是用IP为192.168.1.22的节点,则路由会过滤其他的Invoekr,只返回IP为192.168.1.22的Invoker。路由的总体结构路由分为条件路由、文件路由、脚本路由,对应dubbo-admin中三种不同的规则匹配方法。条件路由是用户使用Dubbo定义的语法规则去写路由规则;文件路由则需要用户提交一个文件,里面写着对应的路由规则,框架基

2020-07-02 01:02:58 84

原创 Dubbo——Directory的实现原理

Directory的实现整个容错过程中首先会使用Directory#list来获取所有的Invoker列表。Directory也有多种实现子类,既可以提供静态的Invoker列表,也可以提供动态的Invoker列表。静态的列表是用户自己设置的Invoker列表;动态列表根据注册中心的数据动态变化,动态更新Invoker列表的数据,整个过程对上层透明。总体实现Directory是顶层接口。AbstractDirectory封装了通用的实现逻辑。抽象类包含RegistryDirectory和Static

2020-07-01 22:46:57 81

原创 Dubbo——容错策略

Cluster接口关系在微服务环境中,可能多个节点同时都提供同一个服务。当上层调用Invoker时,无论实际存在多少个Invoker,只需要通过Cluster层,即可完成整个调用容错逻辑,包括获取服务列表、路由、负载均衡等,整个过程对上层都是透明的。当然,Cluster接口只是串联起整个逻辑,其中ClusterInvoker只实现了容错逻辑部分,其他逻辑则是调用了Directory、Router、LoadBalance等接口实现。容错的接口主要分为两大类,第一类是Cluster类,第二类是Cluster

2020-07-01 18:27:00 64

原创 Dubbo——集群容错

Cluster层概述在微服务环境中,为了保证服务的高可用,很少会有单点服务出现,服务通常都是以集群的形式出现的。然而,被调用的远程服务并不是每时每刻都保持良好状况,当某个服务调用出现异常时,如网路抖动、服务短暂不可用需要自动容错,或者只想本地测试、服务降级、需要Mock返回结果,就需要使用集群容错机制。我们可以把Cluster看作一个集群容错层,该层中包含Cluster、Directory、Router、Loadbalance几大核心接口。注意这里要区分Cluster层和Cluster接口,Cluste

2020-07-01 15:23:09 46

原创 Dubbo——底层handler

核心Handler和线程模型Dubbo中Handler(ChannelHandler)的5种状态:状态描述connectedChannel已经被创建disconnectedChannel已被断开sent消息被发送received消息被接收caught捕获到异常Dubbo针对每个特性都会实现对应的ChannelHandler:Handler作用ExchangeHandlerAdapter用于查找服务方法并调用Head

2020-07-01 10:59:55 83

vuedevtools安装.zip

用于Chrome本地安装vue-devtools,无脑安装!!!! 安装过程: 1.Chrome=》设置=》更多工具=》扩展程序 2.打开开发者模式 3.加载已解压的扩展程序=》选择解压后的文件夹 4.重启浏览器 5.如果失败,在加载后的vuedevtools设置页面开启“允许访问文件网址”

2019-10-27

软考历年真题.zip

2009年开始一直到2018年,历年的软考中级-软件设计师真题。历年的上午+下午真题,全部为PDF格式。题目清晰,完整。

2019-09-09

吴声子夜歌的留言板

发表于 2020-01-02 最后回复 2020-01-02

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