- 博客(47)
- 收藏
- 关注
原创 docker相关
启动dockersystemctl start docker关闭dockersystemctl stop docker查看docker的运行状态systemctl status docker查看docker镜像docker images启动jenkinssystemctl start jenkins查看jenkins状态systemctl status jenkins查看所有的容器docker container ls -a确认是否重启成功$ sudo ps -ef | gre
2020-07-10 14:16:56 115
原创 扩展Ribbon支持Nacos集群配置
由于在Nacos上,支持集群配置。集群是对指定微服务的一种虚拟分类。集群还是比较有用的,例如:为了容灾,把指定微服务同时部署在两个机房(例如同城多活【其中1个机房崩溃另一个机房还能顶】、异地多活【防止自然灾害,例如地震什么的】),比如南京机房和北京机房。调用时,可优先调用同机房的实例,如果同机房没有实例,再跨机房调用。当然cluster还有很多其他作用,请各位看客自行脑补,本文将围绕上面描述的场景展开。虽然Spring Cloud Alibaba支持集群配置,例如:spring: cloud:
2021-03-31 22:56:28 370
原创 ConfigurationProperties,@ConditionalOnClass,@EnableConfigurationProperties,@PropertiesSource
我们还可以通过@ConfigurationProperties 读取application属性配置文件中的属性。@ConfigurationProperties (prefix = "spring.data.mongodb" )publicclass MongoProperties { private String host; privateint port = DBPort.PORT; private String uri = "mongodb://loca
2021-02-07 23:02:54 438
原创 Sentinel使用令牌桶实现预热和原理
Sentinel的QPS流控效果有快速失败、预热模式、排队等待、预热+排队等待模式,本文主要分析预热模式中是如何使用令牌桶算法限流的。一、流控效果源码结构1.流控效果封装入口2.分发不同的控制类3.流控控制类图二、快速失败快速失败即发送流控时抛出FlowException。1.快速失败流程备注@1 获取当前已经使用的线程数或者QPS@2 与阈值进行判断,是否允许本次通行@3 QPS流控并且prioritized设置为true表示预占用令牌@4 大于阈值触发流控@5 小于阈值
2020-12-24 09:20:59 750
原创 redis布隆过滤器RedisBloomFilter
package org.olylakers.bloomfilter;import java.util.ArrayList;import java.util.List;import org.apache.commons.lang.StringUtils;import org.apache.commons.lang.math.NumberUtils;import org.apache.commons.pool.impl.GenericObjectPool.Config;import redis
2020-12-22 11:29:03 134
原创 Nginx限流、缓存、黑白名单等
Nginx应该是现在最火的web和反向代理服务器,没有之一。她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现。那除了负载均衡,她还有什么其他的用途呢,下面我们来看下。一、静态代理Nginx擅长处理静态文件,是非常好的图片、文件服务器。把所有的静态资源的放到nginx上,可以使应用动静分离,性能更好。二、负载均衡Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照一定的策略转发到不同的服务器上,达到负载的效果。常用的负载均衡策略有
2020-12-21 14:44:35 127
原创 dubbo泛化调用导致zk中同一个消费者节点数递增
dubbo2.6.8 泛化调用导致zk中同一个消费者节点数递增泛化调用时,如果检查服务是否存在,服务不存在就会抛出异常,但是在此之前consumer节点已经创建,这样只要大量泛化调用这个不存在的服务,就会导致ZK上的consumer节点越来越多,给ZK造成性能!](https://img-blog.csdnimg.cn/20201215171700281.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH
2020-12-15 17:18:08 211
原创 为什么Java里的Arrays.asList()返回的List不能使用add、remove方法?
我们从下面这段简单代码讲起,public class MainFacade {public static void main(String[] args) {List list = Arrays.asList(1,2,3);list.add(5);System.out.print(list.toString());}}运行时将会发现提示:UnsupportedOperationException的异常。原因:通过源码我们发现,Arrays.asList()方法返回的ArrayList继承自
2020-12-15 11:09:22 396
原创 MYBATIS-PLUS性能分析插件—PERFORMANCEINTERCEPTOR
1,性能分析拦截器,用于显示每条 SQL 语句及其执行时间@SpringBootApplication@MapperScan("com.aiyi.springbootplus.dao")public class SpringbootPlusApplication {/** * SQL执行效率插件 */@Beanpublic PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performa
2020-12-14 21:46:53 1345
原创 rocketmq如何保证顺序消费
1、方案一很简单,问题产生的关键在于多个队列都有消息,我消费的时候又不知道哪个队列的消息是最新的。那么思路就有了,发消息的时候你要想保证有序性的话,就都给我发到一个queue上,然后消费的时候因为只有那一个queue上有消息且queue是FIFO,先进先出,所以正常消费就完了。很完美。而且RocketMQ也给我们提供了这种发消息的时候选择queue的api(MessageQueueSelector)。直接上代码import java.util.List;import org.apache.rock
2020-12-11 15:55:29 1118
原创 zxing介绍生成二维码
生成二维码实现1)引入依赖 创建maven工程,在pom.xml中引入如下 依赖<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version> </dependency>
2020-12-11 11:31:15 196
原创 zuul网关Filter处理流程及异常处理
首先看到Filter的四个方法,FilterType,filterOrder,shouldFilter,run。filterType代表过滤类型PRE: 该类型的filters在Request routing到源web-service之前执行。用来实现Authentication、选择源服务地址等ROUTING:该类型的filters用于把Request routing到源web-service,源web-service是实现业务逻辑的服务。这里使用HttpClient请求web-service。P
2020-12-08 09:27:47 313
原创 canal同步原理,MySQL主从同步原理
1),主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。基于日志增量订阅和消费的业务包括1,数据库镜像2,数据库实时备份3,索引构建和实时维护(拆分异构索引、倒排索引等)4,业务 cache 刷新5,带业务逻辑的增量数据处理2),MySQL主备复制原理MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)MySQL sla
2020-11-19 14:18:48 711 1
原创 SpringBoot设置接口超时时间
SpringBoot设置接口访问超时时间有两种方式一、在配置文件application.properties中加了spring.mvc.async.request-timeout=20000,意思是设置超时时间为20000ms即20s,二、还有一种就是在config配置类中加入:public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void configureAsyncSupport(f
2020-09-28 11:37:46 4065
原创 H5支付例子
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200912113603136.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lvbmh1MTIzamF2YQ==,size_16,color_FFFFFF,t_70#pic_center)1、用户在商户侧完成下单,使用微信支付进行支付2、由商户后台向微信
2020-09-12 11:43:44 983
原创 安装docker
1.安装docker:yum install docker-ce2.修改文件:vi /lib/systemd/system/docker.service,将第五行改为:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock3.重启docker:systemctl daemon-reloadservice docker restartsystemctl restart docker4.idea链接
2020-09-11 17:38:09 93
原创 JSON性能的比较(Jackson,Gson,Fastjson)
一 、各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如一个类里面会出现另一个类的
2020-09-09 17:59:45 871
原创 开放 API 接口签名验证
1. 接口安全问题请求身份是否合法?请求参数是否被篡改?请求是否唯一AccessKey&SecretKey (开放平台)请求身份 为开发者分配AccessKey(开发者标识,确保唯一)和SecretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)。防止篡改参数签名重放攻击虽然解决了请求参数被篡改的隐患,但是还存在着重复使用请求参数伪造二次请求的隐患。timestamp+nonce方案nonce指唯一的随机字符串,用来标识每个被签名的请求。通过为每个请求提供一
2020-09-09 10:32:46 1799
原创 加密算法
加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密。一、不可逆加密常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。其中SHA后面的数字表示的是加密后的字符串长度,SHA1默认会产生一个160位的信息摘要。不可逆加密算法最大的特
2020-09-09 10:22:59 165
原创 为什么MySQL不推荐使用uuid或者雪花id作为主键?
前言在MySQL中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。一、MySQL和程序实例要说明这个问题,我们首先来建立三张表,分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机key作为主键,.
2020-09-07 14:34:13 152
原创 行列转换
行转列方法一:通过CASE WHEN语句SELECT username, max(CASE WHEN subject = '语文' THEN score END) AS `语文`, max(CASE WHEN subject = '数学' THEN score END) AS `数学`, max(CASE WHEN subject = '英语' THEN score END) AS `英语`FROM pivotGROUP BY usernameORDER BY use.
2020-09-07 10:21:38 367
原创 数据湖分析---使用场景
分析OSS文件中的数据用户原始数据(CSV、日志、JSON等),直接放到OSS上;通过数据湖分析(Data Lake Analytics,DLA)对OSS上的文件/文件夹进行建表、查询,可对接QuickBI展示。分析Tablestore中的数据用户的时序数据、流水数据、日志数据、ETL清洗后的数据,流入Tablestore, DLA可以直接无缝对接Tablestore的表,轻松地针对单个Tablestore表进行分析,或者将多个Tablestore的表进行关联分析。异构数据源联合分析..
2020-09-07 10:11:05 881
原创 Dozer 轻松高效玩转DTO(Data Transfer Object,属性名不同或相同都可以转换)
1.现状对于分布式系统,需要在不同系统之间传递与转换域对象。因为我们不希望外部公开内部域对象,也不允许外部域对象渗入系统。传统上,数据对象之间的映射通过手工编码(getter/setter)的方式实现,或对象组装器(或转换器)来解决。我们可能会开发某种自定义映射框架来满足我们的映射转换需求,但这一切都显得不够灵巧。DozerDozer 是 Java Bean 到 Java Bean 映射器,它以递归方式将数据从一个对象复制到另一个对象。通常,这些 Java Bean 将具有不同的复杂类型。Doze
2020-09-04 14:26:51 883
原创 jwt例子
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
2020-08-31 16:50:21 135
原创 API设计的几条原则
API 本身的含义指应用程序接口,包括所依赖的库、平台、操作系统提供的能力都可以叫做 API。我们在讨论微服务场景下的 API 设计都是指 WEB API,一般的实现有 RESTful、RPC等。API 代表了一个微服务实例对外提供的能力,因此 API 的传输格式(XML、JSON)对我们在设计 API 时的影响并不大。API 设计是微服务设计中非常重要的环节,代表服务之间交互的方式,会影响服务之间的集成。 通常来说,一个好的 API 设计需要满足两个主要的目的:平台独立性。 任何客户端都能消费 API
2020-08-31 16:22:09 769
原创 Spring Boot + Echarts 实现用户访问地图可视化(附源码)
首先需要获取用户请求的ip地址,我们对该方法进行简单封装:public class IPUtil { public static String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)).
2020-08-31 16:08:13 182
原创 Seata分布式框架结合Spring Boot 解决分布式事务问题
概述Seata 是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。2. 四种事务模式Seata 目标打造一站式的分布事务的解决方案,最终会提供四种事务模式:AT 模式:参见《Seata AT 模式》文档TCC 模式:参见《Seata TCC 模式》文档Saga 模式:参见《SEATA Saga 模式》文档目前使用的流行度情况是:AT > TCC > Saga。因此,我们在学习 Seata 的时候,可以花更多精力在 AT 模式上,最好搞懂背后的
2020-08-31 15:58:51 437
原创 使用Java 将PPT转换为PDF、XPS等格式
XPS(XML Paper Specification)是一个基于XML格式,以页为单位的电子文档格式。与PDF格式类似,其内容无法轻易变更,便于使用者进行保存、浏览及打印。本文将介绍如何用Java程序来将PPT文档转换为PDF及XPS格式,同时也将演示PPT与PPTX格式之间互转的方式。本文代码的测试环境:Intellij Idea2019.1JDK 1.8.0Spire.Presentation.jarJar包导入方式:方式 1:通过官网下载Free Spire.Presentation
2020-08-31 15:13:20 856 1
原创 Oauth2原理和讲解
1,OAuth 2.0 的四种方式概念:OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)核心: OAuth 的核心就是向第三方应用颁发令牌1.1) 授权码(authorization-code)1.2)隐藏式(implicit)1.3)密码式(password):1.4)客户端凭证(client credentials)注意,不管哪一种授权方式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端 ID(client ID)和客户端密钥
2020-08-28 11:56:59 2170
原创 日志系统新贵 Loki
最近,在对公司容器云的日志方案进行设计的时候,发现主流的ELK或者EFK比较重,再加上现阶段对于ES复杂的搜索功能很多都用不上最终选择了Grafana开源的Loki日志系统,下面介绍下Loki的背景。背景和动机当我们的容器云运行的应用或者某个节点出现问题了,解决思路应该如下:我们的监控使用的是基于prometheus体系进行改造的,prometheus中比较重要的是metric和alert,metric是来说明当前或者历史达到了某个值,alert设置metric达到某个特定的基数触发了告警,但是这些信
2020-08-28 11:08:54 118
原创 Spring Boot 注解大全
一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。@EnableAutoConfiguration 自动配置。@ComponentS
2020-08-28 11:01:23 95
原创 Eureka原理
1,Eureka Server启动成功,等待服务端注册。启动过程中如果配置了集群,集群之间定时通过Replicate同步注册,每个Eureka Server都存在独立完整的服务注册表信息。2,Eureka Client启动时根据配置的Eureka Server地址去注册中心注册服务。3,Eureka Client会每30S向Eureka server发送一次心跳请求,证明客户端服务正常。4,当Eureka server 90s内没有收到Eureka client的心跳,注册中心,则认为该节点失效会注销
2020-08-28 10:07:16 162
原创 Eureka和zookeeper
1.Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别1.ZooKeeper保证的是CP,Eureka保证的是APZooKeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的Eureka各个节点是平等关系,只要有一台Eureka就可以保证服务可用,而查询到的数据并不是最新的自我保护机制会导致Eureka不再从注册列表移除因长时间没收到心跳而应该过期的服务Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点(高可用)当
2020-08-27 16:45:18 210
原创 dubbo rpc和springcloud rest api区别
.Rest和RPC对比其实如果仔细阅读过微服务提出者马丁福勒的论文的话可以发现其定义的服务间通信机制就是Http RestRPC最主要的缺陷就是服务提供方和调用方式之间依赖太强,我们需要为每一个微服务进行接口的定义,并通过持续继承发布,需要严格的版本控制才不会出现服务提供和调用之间因为版本不同而产生的冲突而REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只是通过一个约定进行规范,但也有可能出现文档和接口不一致而导致的服务集成问题,但可以通过swagger工具整合,是代码和文档一体化解决,
2020-08-27 16:41:21 603
原创 nginx负载均衡的方式
一、分配方式 Nginx的upstream支持5种分配方式,下面将会详细介绍,其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式:1、轮询 轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。 upstream backend { server 19.168.1.100:8888; serve
2020-08-27 16:26:55 127
原创 nginx配置
#user nobody;worker_processes 8;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type app
2020-08-27 16:20:59 826
原创 jenkins里sonar配置相关的基本说明
sonar.projectKey=gpcore #sonar平台中相对应项目的keysonar.projectName=gpcore #sonar平台中相对应项目的名字sonar.sources=. #sonar检测的源文件目录,‘.’表示当前根目录下的所有文件目录;包含主要源文件的目录的逗号分隔路径sonar.exclusions=**/*_test.go,**/vendor/** #检测中排除的源文件(排除的源文件不参与检测,一般排除单元
2020-07-23 17:55:51 311
原创 springboot+shardingjdbc+yml单库分表(按月分表)
1,引入相应jar<dependency> <groupId>com.dangdang</groupId> <artifactId>sharding-jdbc-config-spring</artifactId> <version>1.5.4.1</version> </dependency> <dependency>
2020-07-14 17:44:09 2260 1
原创 sharding-jdbc分表分库用到的分布式事务
一、引入分布式事务 io.shardingsphere sharding-transaction-2pc-xa ${sharding.version} io.shardingsphere sharding-transaction-spring ${sharding.version}二、数据分片 6.1 分片支持Sharding-JDBC提供了5种分片策略。由于分片算法和业务实现紧密相关,因此Sharding-JDBC并未提供内置分片算法,而是通
2020-07-13 14:58:22 987 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人