Dubbo服务化框架使用整理
一、垂直应用架构拆分
在应用架构的演进过程中,垂直应用架构因为开发便捷,学习成本低,对于实现业务功能的增删改查提供了高效的开发支持,有利于前期业务高速发展的的快速实现。但是随着系统业务功能的不断扩展和系统代码的的不断攀
升业务模块与模块之间的高耦合度、核心业务的稳定性、根据市场的需求应用前端需要针对不同的业务场景实现不同的有针对性的修改这时候传统的垂直应用架构就满足不了需求,因而需要引入分布式服务框架(RPC框架)
来实现将系统进行水平和垂直拆分,拆分成各个相对独立的服务功能,实现服务的提供者和服务的消费者之间的解耦。另一方面方便将重点业务模块集群化实现重点业务的高可用和高稳定性。
(1)拆分前应用架构的组织形式
控制器层直接调用业务逻辑层,业务逻辑服务类之间也是直接调用。即服务的提供者和服务的消费者之间高度的耦合。
(2)如何拆分
1)垂直拆分:
将三层架构中的控制器层、业务逻辑层、数据访问层进行垂直拆分。可以拆分成不同的三个工程项目 控制器层单独一个项目,业务逻辑层接口层一个工程项目,业务逻辑实现(包含数据访问层)单独一个工程项目。
2)水平拆分:
将业务逻辑成中各个相对独立的业务模块或者公共业务模块等进行拆分成单独的工程项目。公共的工具类、公共的项目配置、公共的业务实体都可以拆分层相对独立的工程项目。
(3)拆分后的应用架构的组织形式
服务消费者通过服务注册中心发现服务提供者,实现服务消费者和提供者之间的解耦。一个服务可以同时是服务的提供者也可以是服务的消费者。
部分参考 李林峰 《分布式服务框架原理与实践》
二、引入Dubbo RPC框架支持
1、工程项目添加Dubbo框架支持
工程项目添加dubbo的jar包和其所依赖的所有jar包
2、服务的注册和引用
1)配置说明
无论服务提供者还是服务消费者的配置当中都需要对XML配置文件添加dubbo名称空间的支持
2)服务注册(服务提供者的配置) remote-provider.xml :
<dubbo:application name=”XXXX”> :配置当前所在工程项目的应用名称,用于注册中心计算应用间的依赖关系。 服务提供者的应用名称不能和服务消费者的应用名称一样。
其他部分可选参数:version表示当前应用的版本号;
owner表示当前应用的负责人;
organization:组织名称(BU或部门),用于注册中心区分服务来源,此配置项建议不要使用autoconfig,直接写死在配置中,比如china,intl,itu,crm,asc,dw,aliexpress等;
architecture:用于服务分层对应的架构。如,intl、china。不同的架构使用不同的分层。
environment:设置当前服务的应用环境,如:develop/test/product,不同环境使用不同的缺省值,以及作为只用于开发测试功能的限制条件
<dubbo:registry protocol=” ” address=” ”/>:配置注册中心。配置当前服务提供者所要注册到的注册中心的地址和注册中心地址协议等(其中address为必填项)
address:<host:port>注册中心服务器地址,如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:port,不同集群的注册中心,请配置多个<dubbo:registry>标签
如果有多个不同的注册中心,可以声明多个<dubbo:registry>标签,并在<dubbo:service>或<dubbo:reference>的registry属性指定使用的注册中心.即服务提供者可以将服务注册到不同地址的注册中心,注册中心也可以使用不同的地址协议。
示例:
<dubbo:registry id=”zookeeper105” address=”192.168.1.1.105:8090” protocol=”dubbo”/>
<dubbo:registry id=”zookeeper106_107” address=”192.168.1.1.106:8090,192.168.1.1.107:8090” protocol=”http”/>
<dubbo:registry id=”zookeeper104” address=”192.168.1.1.104” protocol=”local”/>
其他可选参数:
id :注册中心引用BeanId,可以在<dubbo:service registry="">或<dubbo:reference registry="">中引用此ID;
protocol:注册中心地址协议,支持dubbo, http, local三种协议,分别表示,dubbo地址,http地址,本地注册中心;
port:注册中心缺省端口,当address没有带端口时使用此端口做为缺省值
username:登录注册中心用户名,如果注册中心不需要验证可不填
password:登录注册中心密码,如果注册中心不需要验证可不填
transporter:网络传输方式,可选mina,netty
timeout:注册中心请求超时时间(毫秒)
session:注册中心会话超时时间(毫秒),用于检测提供者非正常断线后的脏数据,比如用心跳检测的实现,此时间就是心跳间隔,不同注册中心实现不一样。
file:使用文件缓存注册中心地址列表及服务提供者列表,应用重启时将基于此文件恢复,注意:两个注册中心不能使用同一文件存储
wait:停止时等待通知完成时间(毫秒)
check:注册中心不存在时,是否报错
register:是否向此注册中心注册服务,如果设为false,将只订阅,不注册(开发测试环境下使用)
subscribe:是否向此注册中心订阅服务,如果设为false,将只注册,不订阅(开发测试环境下使用)
dynamic:服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。
<dubbo:protocol name=” ” port=””/>:服务提供者协议的配置。
name:协议名称,必填项,默认值为dubbo;
port: 服务端口,可选 dubbo协议缺省端口为20880,rmi协议缺省端口为1099,http和hessian协议缺省端口为80。如果配置为-1 或者 没有配置port,则会分配一个没有被占用的端口。Dubbo 2.4.0+,分配的端口在协议缺省端口的基础上增长,确保端口段可控。
threadpool:线程池类型,线程池类型,可选:fixed/cached 默认fixed
threads:服务线程池大小(固定大小), 可选,默认100
iothreads:io线程池大小(固定大小) 默认值:cpu个数+1
accepts 服务提供方最大可接受连接数 默认值:0
payload 请求及响应数据包大小限制,单位:字节 默认值:88388608(=8M)
codec 协议编码方式 默认值:dubbo
serialization 协议序列化方式,当协议支持多种序列化方式时使用,比如:dubbo协议的dubbo,hessian2,java,compactedjava,以及http协议的json等 默认值:dubbo协议缺省为hessian2,rmi协议缺省为java,http协议缺省为json
path 提供者上下文路径,为服务path的前缀
transporter 协议的服务端和客户端实现类型,比如:dubbo协议的mina,netty等,可以分拆为server和client配置 默认值: dubbo协议缺省为netty
server 协议的服务器端实现类型,比如:dubbo协议的mina,netty等,http协议的jetty,servlet等 2.0.5以上版本 默认值:dubbo协议缺省为netty,http协议缺省为servlet
client 协议的客户端实现类型,比如:dubbo协议的mina,netty等 dubbo协议缺省为netty
dispatcher 协议的消息派发方式,用于指定线程模型,比如:dubbo协议的all, direct, message, execution, connection等 2.1.0以上版本 默认值:dubbo协议缺省为all
queues 线程池队列大小,当线程池满时,排队等待执行的队列大小,建议不要设置,当线程程池时应立即失败,重试其它服务提供机器,而不是排队,除非有特殊需求。 2.0.5以上版本 默认值: 0
charset 序列化编码 2.0.5以上版本 默认值:UTF-8
buffer 网络读写缓冲区大小 2.0.5以上版本 默认值:8192
heartbeat 心跳间隔,对于长连接,当物理层断开时,比如拔网线,TCP的FIN消息来不及发送,对方收不到断开事件,此时需要心跳来帮助检查连接是否已断开 2.0.10以上版本 0
telnet 所支持的telnet命令,多个命令用逗号分隔 2.0.5以上版本
register 该协议的服务是否注册到注册中心 默认值:true 服务治理
<dubbo:service interface=” ” ref=””/>:服务提供者暴露服务配置
interface:服务接口名 ,必填
ref:服务对象实现引用,必填
version:服务版本,建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级,默认:0.0.0
group:服务分组,当一个接口有多个实现,可以用分组区分
delay:延迟注册服务时间(毫秒) ,设为-1时,表示延迟到Spring容器初始化完成时暴露服务,默认:0
timeout:远程服务调用超时时间(毫秒),默认:1000
retries:远程服务调用重试次数,不包括第一次调用,不需要重试请设为0 ,默认:2
connections:对每个提供者的最大连接数,rmi、http、hessian等短连接协议表示限制连接数,dubbo等长连接协表示建立的长连接个数。默认:100
loadbalance:负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用 ,,默认:random
stub:设为true,表示使用缺省代理类名,即:接口名 + Local后缀,服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)默认值false
mock:为true,表示使用缺省Mock类名,即:接口名 + Mock后缀,服务接口调用失败Mock实现类,该Mock类必须有一个无参构造函数,与Local的区别在于,Local总是被执行,而Mock只在出现非业务异常(比如超时,网络异常等)时执行,Local在远程调用之前执行,Mock在远程调用后执行。默认false
token: 令牌验证,为空表示不开启,如果为true,表示随机生成动态令牌,否则使用静态令牌,令牌的作用是防止消费者绕过注册中心直接访问,保证注册中心的授权功能有效,如果使用点对点调用,需关闭令牌功能
默认:false
registry:向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A 缺省向所有registry注册
provider:指定provider,值为<dubbo:provider>的id属性 缺使用第一个provider配置
deprecated:服务是否过时,如果设为true,消费方引用时将打印服务过时警告error日志 默认false
dynamic:服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。 默认:true
accesslog 设为true,将向logger中输出访问日志,也可填写访问日志文件路径,直接把访问日志输出到指定文件 2.0.5以上版本false
owner 服务负责人,用于 ,请填写负责人公司邮箱前缀 2.0.5以上版本
document 服务文档URL 2.0.5以上版本
weight 服务权重 2.0.5以上版本
executes 服务提供者每服务每方法最大可并行执行请求数 2.0.5以上版本 默认值:0
actives 每服务消费者每服务每方法最大并发调用数 2.0.5以上版本 默认值:0
proxy 生成动态代理方式,可选:jdk/javassist 2.0.5以上版本 默认值:javassist
cluster 集群方式,可选:failover/failfast/failsafe/failback/forking 2.0.5以上版本, 默认值failover
filter 服务提供方远程调用过程拦截器名称,多个名称用逗号分隔 2.0.5以上版本 默认值default
listener 服务提供方导出服务监听器名称,多个名称用逗号分隔 默认值: default
protocol 使用指定的协议暴露服务,在多协议时使用,值为<dubbo:protocol>的id属性,多个协议ID用逗号分隔 2.0.5以上版本
layer 服务提供者所在的分层。如:biz、dao、intl:web、china:acton。 2.0.7以上版本
register 该协议的服务是否注册到注册中心 默认值true
<dubbo:provider /> 服务提供者缺省值配置
id:协议BeanId,可以在<dubbo:service proivder="">中引用此ID
iothreads:io线程池大小(固定大小) 默认值:cpu个数+1
accepts 服务提供方最大可接受连接数 默认值:0
payload 请求及响应数据包大小限制,单位:字节 默认值:88388608(=8M)
codec 协议编码方式 默认值:dubbo
serialization 协议序列化方式,当协议支持多种序列化方式时使用,比如:dubbo协议的dubbo,hessian2,java,compactedjava,以及http协议的json等 默认值:dubbo协议缺省为hessian2,rmi协议缺省为java,http协议缺省为json
path 提供者上下文路径,为服务path的前缀
transporter 协议的服务端和客户端实现类型,比如:dubbo协议的mina,netty等,可以分拆为server和client配置 默认值: dubbo协议缺省为netty
server 协议的服务器端实现类型,比如:dubbo协议的mina,netty等,http协议的jetty,servlet等 2.0.5以上版本 默认值:dubbo协议缺省为netty,http协议缺省为servlet
client 协议的客户端实现类型,比如:dubbo协议的mina,netty等 dubbo协议缺省为netty
dispatcher 协议的消息派发方式,用于指定线程模型,比如:dubbo协议的all, direct, message, execution, connection等 2.1.0以上版本 默认值:dubbo协议缺省为all
queues 线程池队列大小,当线程池满时,排队等待执行的队列大小,建议不要设置,当线程程池时应立即失败,重试其它服务提供机器,而不是排队,除非有特殊需求。 2.0.5以上版本 默认值: 0
charset 序列化编码 2.0.5以上版本 默认值:UTF-8
version:服务版本,建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级,默认:0.0.0
group:服务分组,当一个接口有多个实现,可以用分组区分
delay:延迟注册服务时间(毫秒) ,设为-1时,表示延迟到Spring容器初始化完成时暴露服务,默认:0
timeout:远程服务调用超时时间(毫秒),默认:1000
retries:远程服务调用重试次数,不包括第一次调用,不需要重试请设为0 ,默认:2
connections:对每个提供者的最大连接数,rmi、http、hessian等短连接协议表示限制连接数,dubbo等长连接协表示建立的长连接个数。默认:100
loadbalance:负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用 ,,默认:random
stub:设为true,表示使用缺省代理类名,即:接口名 + Local后缀,服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)默认值false
mock:为true,表示使用缺省Mock类名,即:接口名 + Mock后缀,服务接口调用失败Mock实现类,该Mock类必须有一个无参构造函数,与Local的区别在于,Local总是被执行,而Mock只在出现非业务异常(比如超时,网络异常等)时执行,Local在远程调用之前执行,Mock在远程调用后执行。默认false
token: 令牌验证,为空表示不开启,如果为true,表示随机生成动态令牌,否则使用静态令牌,令牌的作用是防止消费者绕过注册中心直接访问,保证注册中心的授权功能有效,如果使用点对点调用,需关闭令牌功能
默认:false
registry:向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A 缺省向所有registry注册
provider:指定provider,值为<dubbo:provider>的id属性 缺使用第一个provider配置
deprecated:服务是否过时,如果设为true,消费方引用时将打印服务过时警告error日志 默认false
dynamic:服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。 默认:true
accesslog 设为true,将向logger中输出访问日志,也可填写访问日志文件路径,直接把访问日志输出到指定文件 2.0.5以上版本false
owner 服务负责人,用于 ,请填写负责人公司邮箱前缀 2.0.5以上版本
document 服务文档URL 2.0.5以上版本
weight 服务权重 2.0.5以上版本
executes 服务提供者每服务每方法最大可并行执行请求数 2.0.5以上版本 默认值:0
actives 每服务消费者每服务每方法最大并发调用数 2.0.5以上版本 默认值:0
proxy 生成动态代理方式,可选:jdk/javassist 2.0.5以上版本 默认值:javassist
cluster 集群方式,可选:failover/failfast/failsafe/failback/forking 2.0.5以上版本, 默认值failover
filter 服务提供方远程调用过程拦截器名称,多个名称用逗号分隔 2.0.5以上版本 默认值default
listener 服务提供方导出服务监听器名称,多个名称用逗号分隔 默认值: default
protocol 使用指定的协议暴露服务,在多协议时使用,值为<dubbo:protocol>的id属性,多个协议ID用逗号分隔 2.0.5以上版本
layer 服务提供者所在的分层。如:biz、dao、intl:web、china:acton。 2.0.7以上版本
register 该协议的服务是否注册到注册中心 默认值true
3)服务引用(服务消费者的配置) remote-consumer.xml
<dubbo:reference interface=”” id=””/> :服务消费者引用服务配置
interface:服务接口名 ,必填
id:服务对象实现引用,必填
url:点对点直连服务提供者地址,将绕过注册中心 接口开发时直连测试
version:服务版本,建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级,默认:0.0.0
group:服务分组,当一个接口有多个实现,可以用分组区分
delay:延迟注册服务时间(毫秒) ,设为-1时,表示延迟到Spring容器初始化完成时暴露服务,默认:0
timeout:远程服务调用超时时间(毫秒),默认:1000
retries:远程服务调用重试次数,不包括第一次调用,不需要重试请设为0 ,默认:2
connections:对每个提供者的最大连接数,rmi、http、hessian等短连接协议表示限制连接数,dubbo等长连接协表示建立的长连接个数。默认:100
loadbalance:负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用 ,,默认:random
stub:设为true,表示使用缺省代理类名,即:接口名 + Local后缀,服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)默认值false
mock:为true,表示使用缺省Mock类名,即:接口名 + Mock后缀,服务接口调用失败Mock实现类,该Mock类必须有一个无参构造函数,与Local的区别在于,Local总是被执行,而Mock只在出现非业务异常(比如超时,网络异常等)时执行,Local在远程调用之前执行,Mock在远程调用后执行。默认false
token: 令牌验证,为空表示不开启,如果为true,表示随机生成动态令牌,否则使用静态令牌,令牌的作用是防止消费者绕过注册中心直接访问,保证注册中心的授权功能有效,如果使用点对点调用,需关闭令牌功能
默认:false
registry:向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A 缺省向所有registry注册
provider:指定provider,值为<dubbo:provider>的id属性 缺使用第一个provider配置
deprecated:服务是否过时,如果设为true,消费方引用时将打印服务过时警告error日志 默认false
dynamic:服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。 默认:true
accesslog 设为true,将向logger中输出访问日志,也可填写访问日志文件路径,直接把访问日志输出到指定文件 2.0.5以上版本false
owner 服务负责人,用于 ,请填写负责人公司邮箱前缀 2.0.5以上版本
document 服务文档URL 2.0.5以上版本
weight 服务权重 2.0.5以上版本
executes 服务提供者每服务每方法最大可并行执行请求数 2.0.5以上版本 默认值:0
actives 每服务消费者每服务每方法最大并发调用数 2.0.5以上版本 默认值:0
proxy 生成动态代理方式,可选:jdk/javassist 2.0.5以上版本 默认值:javassist
cluster 集群方式,可选:failover/failfast/failsafe/failback/forking 2.0.5以上版本, 默认值failover
filter 服务提供方远程调用过程拦截器名称,多个名称用逗号分隔 2.0.5以上版本 默认值default
listener 服务提供方导出服务监听器名称,多个名称用逗号分隔 默认值: default
protocol 使用指定的协议暴露服务,在多协议时使用,值为<dubbo:protocol>的id属性,多个协议ID用逗号分隔 2.0.5以上版本
layer 服务提供者所在的分层。如:biz、dao、intl:web、china:acton。 2.0.7以上版本
register 该协议的服务是否注册到注册中心 默认值true
<dubbo:consumer>:服务消费者缺省值配置:
4)服务启动
三、Zookeeper注册中心安装、配置和使用
四、Dubbo服务管理控制台安装、配置和使用
五、Dubbo监控中心的安装、配置和使用
六、服务化后项目部署
七、开发测试环境下Dubbo的使用和配置
八、Dubbo性能调优
Dubbo服务化框架使用整理的更多相关文章
- 基于GRPC+consul通信的服务化框架(转)
原文:http://blog.csdn.net/yeyincai/article/details/51470475 -.背景 谈论服务化框架的时候,我们首先先了解这些概念:SOA.ESB.OSGi.s ...
- 当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用
当当网近日开源了Dubbox项目,可为Dubbo服务框架提供多项扩展功能,包括REST风格远程调用.Kryo/FST序列化等等. 当当网架构部和技术委员会架构师沈理向InfoQ中文站介绍了Dubbox ...
- 【转】服务化框架技术选型与京东JSF解密
[京东技术]声明:本文转载自微信公众号“开涛的博客”,转载务必声明. 作者:章耿,原京东资深架构师,曾负责京东服务框架,配置中心等基础平台.近十年工作经验,专注于基础中间件等底层技术架构,对分布式系统 ...
- .Net开源SqlServer ORM框架SqlSugar整理
一.链接整理 官方Git源代码地址: https://github.com/sunkaixuan/SqlSugar 最新发布版更新地址:当前版本Release 3.5.2.1 https://gith ...
- Selenium自动化测试框架入门整理
关注嘉为科技,获取运维新知 本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明.作为开发人员.测试人员入门参考. 本文参考:Se ...
- SpringCloud Alibaba (四):Dubbo RPC框架
Dubbo简介 Apache Dubbo |ˈdʌbəʊ| 是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现.致 ...
- 【微服务】使用spring cloud搭建微服务框架,整理学习资料
写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...
- 一个最简单的Dubbo入门框架
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 1.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本 ...
- dubbo 服务化
当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等. 当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器的单点压力 ...
随机推荐
- app嵌入的H5页面的数据埋点总结
好久没写博客了,大半年时间花费在了许多杂事上. 最近1个月专门为H5页面的app开发了一些埋点功能,主要是考虑到以后的可复制性和通用型,由于不是前端开发出身,相对来说还是比较简陋的. 正题开始:H5页 ...
- Halcon算子学习
* dev前缀的算子表示开发编译器相关的函数 dev_update_window ('off')//halcon编辑器图形输出界面参数是否都更新,off表示手动,on表示全部更新 dev_close_ ...
- 基于Java实现批量下载网络图片
昨天朋友做项目遇到一个需求,需要把上千个的微博表情图片下载到本地磁盘,并做好规范命名,塞给我一堆Json数据,让我帮忙处理下,反正闲着也没事干,就帮忙写了.(很简单的一个功能,随手记录下,刚好填补下最 ...
- 设计模式-结构型模式,python组合模式
设计模式上大的方向上分继承和组合,就是类模式和对象模式.此篇的组合模式非继承和组合概念中的组合.桥接 策略 代理 装饰者都用了组合,此组合非彼组合. 组合模式 组合模式(Composite Patte ...
- [Math] Unconstrained & Constrained Optimization
粘贴两个典型的例子,只是基础内容,帮助理解. (1) Solution: (2) Solution:
- [React] 13 - Redux: react-redux
Ref: Redux 入门教程(三):React-Redux 的用法 组件拆分规范 使用 React-Redux,需要掌握额外的 API,并且要遵守它的组件拆分规范. React-Redux 将所有组 ...
- springboot logback 集成
在 application.yml 中敲 logging.pattern.consle ,IDEA 会联想到对应的值.单击属性就可以跳到 LoggingApplicationListener.java ...
- 【代码审计】五指CMS_v4.1.0 copyfrom.php 页面存在SQL注入漏洞分析
0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...
- 关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
环境介绍>>>>>>>>>>>>>>>>>> 操作系统:Centos 7.1 mysql数据 ...
- subordinate clause/从句
What Is a Subordinate Clause? (with Examples)A subordinate clause (or dependent clause) is a clause ...