- 博客(35)
- 资源 (5)
- 收藏
- 关注
原创 Spring-Cloud之Hystrix
原文: https://blog.vchar.top/java/1624363200.html系统负载过高,突发流量或网络等各种异常情况,常用解决方案如下:限流:对访问量进行限制,防止流量太大直接使整个服务发生故障;熔断:为了防止整个系统故障,停止出现问题的服务的访问;降级:抛弃一些非核心的接口和数据;熔断和降级互相交集:相同点:从可用性和可靠信息出发,为防止系统崩溃;最终让用户体验到的是某些功能暂时不可用不同点:服务熔断一般是下游服务故障导致,而服务降级一般是从整个系统负荷考虑,由调.
2021-07-05 09:37:18
321
1
原创 基于雪花算法生成分布式ID(Golang版)
SnowFlake算法原理介绍在分布式系统中会将一个业务的系统部署到多台服务器上,用户随机访问其中一台,而之所以引入分布式系统就是为了让整个系统能够承载更大的访问量。诸如订单号这些我们需要它是全局唯一的,同时我们基本上都会将它作为查询条件;出于系统安全考虑不应当让其它人轻易的就猜出我们的订单号,同时也要防止公司的竞争对手直接通过订单号猜测出公司业务体量;为了保证系统的快速响应那么生成算法不能太耗时。而雪花算法正好解决了这些问题。SnowFlake 算法(雪花算法), 是Twitter开源的分布式id生成
2021-06-11 09:31:47
838
转载 从原码,反码,补码的设计理念来深入理解其原理
原文:https://blog.vchar.top/base/1611834985.html原码,反码,补码大家都知道,下面通过解析为什么当初要这样设计,让你更透彻的理解它们的原理。文章参考:https://blog.youkuaiyun.com/afsvsv/article/details/94553228https://blog.youkuaiyun.com/wu_nan_nan/article/details/54633506https://www.zhihu.com/question/28685048计.
2021-06-11 08:46:28
382
原创 基于雪花算法生成分布式ID(Java版)
原文:https://blog.vchar.top/java/1622548800.htmlSnowFlake算法原理介绍在分布式系统中会将一个业务的系统部署到多台服务器上,用户随机访问其中一台,而之所以引入分布式系统就是为了让整个系统能够承载更大的访问量。诸如订单号这些我们需要它是全局唯一的,同时我们基本上都会将它作为查询条件;出于系统安全考虑不应当让其它人轻易的就猜出我们的订单号,同时也要防止公司的竞争对手直接通过订单号猜测出公司业务体量;为了保证系统的快速响应那么生成算法不能太耗时。而雪花算法.
2021-06-07 10:22:11
448
1
原创 Spring-Cloud之Feign
原文:https://blog.vchar.top/java/1621167133.htmlFeign的引入可以让我们通过接口注解的形式实现服务间的调用,让调用者无需再关心接口地址这些配置,同时对于接口需要的参数能够更清晰地了解,简化了调用的流程。下面我们通过一些Feign的示例带你快速了解如何使用它。示例使用的Spring-Cloud的版本是Hoxton.SR8,Spring-Boot的版本是2.3.4.RELEASE。示例项目的源代码添加相关的依赖feign中已经对ribbon进行集成支持,在.
2021-05-31 09:12:27
339
原创 Spring-Cloud之Ribbon
原文:https://blog.vchar.top/java/1620820800.htmlRibbon的引入将为我们解决服务集群部署时需要实现相关的负载均衡的算法,简化服务调用的过程;引入Ribbon后在进行服务调用时只需要指定服务名称即可,无需去关心服务的部署地址以及负载均衡实现。下面我们通过一些Ribbon的示例带你快速了解如何使用它。下面示例使用的Spring-Cloud的版本是Hoxton.SR8,Spring-Boot的版本是2.3.4.RELEASE。示例项目的源代码添加相关的依赖由.
2021-05-17 09:27:05
352
原创 Spring-Cloud之Eureka
原文:https://blog.vchar.top/java/1618488000.htmlEureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。 Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Server 负责统一管理.
2021-05-13 09:06:23
201
原创 Spring-Cloud-Alibaba之Sentinel
原文:https://blog.vchar.top/java/1615900200.html微服务中为了防止某个服务出现问题,导致影响整个服务集群无法提供服务的情况,我们在系统访问量和业务量高起来了后非常有必要对服务进行熔断限流处理。 其中熔断即服务发生异常时能够更好的处理;限流是限制每个服务的资源(比如说访问量)。spring-cloud中很多使用的是Hystrix组件来进行限流的,现在我们这里使用阿里的sentinel来实现熔断限流功能。sentinel简介这个在阿里云有企业级的商用版本 应.
2021-05-13 09:03:05
756
原创 Spring-Cloud-Alibaba之Seata
微服务中不可避免的会发生服务间的调用,这就一定会涉及到事务相关的问题,在单体项目中我们可以直接很方便的实现事务回滚,但是在分布式系统中就不能像以前那么做了,因为各个服务是独立的一套系统; 而要实现跨服务的事务管理系统的复杂度必然会大大增加,因此我们应当尽可能的避免使用分布式事务;对于那种要求不是很严格的可以考虑忽略掉事务的问题,只对重要的数据才做分布式事务。下面我们使用spring-cloud-alibaba套件Seata来实现分布式事务的功能。Seata简介Seata 是一款开源的分布式事务解决方案,
2021-05-10 08:48:19
784
原创 Eureka原理剖析
原文:https://blog.vchar.top/java/1620176400.htmlEureka作为微服务中的注册中心,为微服务集群间各个服务进行调用提供寻址的功能,有了它集群间的服务只需要指定服务名称就可以了,无需再去关心服务具体部署的服务器IP,即可正常调用。下面来对其中我们开发中会接触的主要机制的实现原理进行剖析。一些具体细节这里不做详细的分析,只关注如下2个大方向的东西:1.注册相关的机制、2.客户端和服务端的启动流程。Eureka服务端启动流程首先需要说明的是eureka ser.
2021-05-06 16:33:17
358
原创 Docker安装Nacos
原文:https://blog.vchar.top/dcs/1614258001.html官方提供有打包好的镜像直接拉取即可;同时也可以自己制作镜像官方说明文档 ;这里我们直接使用镜像仓库中制作好的镜像。# 拉取镜像docker pull nacos/nacos-server单机版部署单机版部署很多简单,直接一条命令即可完成,通过 MODE 来设置使用单机模式;注意如果是多网卡的话需要配置NACOS_SERVER_IP参数来指定IP,否则可能会导致外网无法访问;docker run -d .
2021-05-06 08:51:44
158
原创 KMP算法详解
原文:https://blog.vchar.top/acm/1618835400.htmlKMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。算法分析说明问题:查找一个短的字符串在.
2021-04-30 11:08:37
465
原创 Spring-Cloud-Alibaba之Dubbo
在微服务构架中,不可避免的要遇到服务间的调用,目前的方式是通过RPC或者是rest的http接口调用; spring-cloud中很多都使用的feign来做服务调用,在spring-cloud-alibaba的套装中我们使用dubbo来替换掉feign这个组件(使用feign也可以)。下面是集成步骤:相关文档Dubbo官方文档Dubbo的GitHubDubbo官方示例Nacos文档本文示例代码使用示例引入maven相关依赖:<properties> <java
2021-04-29 09:03:52
3917
原创 插入排序
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。插入排序的核心思想就是:在一个有序数组中找到一个新加入的值在有序数组中的位置。Java版实现方式一(时间复杂度O(n^2) )内层循环从有序数组的头部开始遍历,找到当前新加入值在这个有
2021-04-25 14:11:38
130
原创 布隆过滤器
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。简单来说就是:当我们通过布隆过滤器判断一个元素在不在集合中时;如果布隆过滤器返回的是在集合中,那么集合中可能没有这个元素;如果布隆过滤器返回的不存在于集合中,那么集合中是一定不存在这个元素的。参考文档https://blog.vchar.top/java
2021-04-22 17:31:23
2112
1
原创 Spring-Cloud-Alibaba之Nacos
在微服务构架中,集群服务间的需要调用时就需要知道各个服务的IP和提供服务的端口等信息,如果每个部署一个服务就配置一次,那么必然时非常麻烦的,因此我们需要一个能够统一管理的东西来解决这个问题,由此诞生了注册中心。每个服务启动后都向注册中心发送自己的服务信息,在需要调用其他服务的时候直接从注册中心里面去获取集群的服务信息。spring-cloud中很多使用的是Eureka来作为注册中心,不过在2018年7月的时候Netflix就宣布停止维护Eureka了。在spring-cloud-alibaba的套装中我
2021-04-22 17:03:01
272
原创 快速排序
https://blog.vchar.top/acm/1617111985.html快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。平均时间复杂度:O(nlogn)。其核心思想是让每个数的左边放比它小的数,右边放比它大的数;左右2边分而治之。C版本void quicksoft.
2021-04-21 14:21:12
122
原创 Centos7上安装Docker
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。这里使用社区版。Docker官网地址:https://www.docker.comDocker软件镜像查询地址:https://hub.docker.com/本文参考:1.阿里云社区docker安装: https://yq.aliyun.com/articles/1108062.Run
2021-04-16 10:03:08
142
原创 使用EDAS时,在启动消费者Ali-tomcat时启动失败,Pandora container stopped. HSF服务启动失败
我开发使用的IntelliJIdea, 找到当前问题所在是在其tomcat日志文件中发现的,因此若你还没去查看过该日志文件建议去查看。该日志文件路径在: C:\Users\tom\.IntelliJIdea2017.3\system\tomcat\项目名\logs在使用阿里的EDAS时,开发中启动消费者的web项目无法启动,控制台打印如下信息:INFO: spas-client-initializer startJM.Log:INFO Init JM logger with Log4jLoggerF
2021-04-14 08:58:38
1384
原创 Elasticsearch7学习笔记(下)
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。本文是在学习 中华石杉老师的 Elasticsearch顶尖高手系列 的视频教程的过程中做的笔记,实际操作使用的Elasticsearch7而非视频教程中使用的版本;现在这套视频教程是免费公开的(网上直接搜索就有),强烈推荐大家去观看学习。Elasticsearch7学习笔记(上)E
2021-04-13 17:20:04
1662
原创 Elasticsearch7学习笔记(中)
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。本文是在学习 中华石杉老师的 Elasticsearch顶尖高手系列 的视频教程的过程中做的笔记,实际操作使用的Elasticsearch7而非视频教程中使用的版本;现在这套视频教程是免费公开的(网上直接搜索就有),强烈推荐大家去观看学习。Elasticsearch7学习笔记(上)E
2021-04-13 16:51:03
865
原创 Elasticsearch7学习笔记(上)
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。本文是在学习 中华石杉老师的 Elasticsearch顶尖高手系列 的视频教程的过程中做的笔记,实际操作使用的Elasticsearch7而非视频教程中使用的版本;现在这套视频教程是免费公开的(网上直接搜索就有),强烈推荐大家去观看学习。Elasticsearch7学习笔记(上)E
2021-04-13 15:58:29
1798
原创 Golang快速入门
Golang基础学习笔记整理,快速了解Golang的基础语法。学习资料超全golang面试题合集+golang学习指南+golang知识图谱+入门成长路线 ;一份涵盖大部分golang程序员所需要掌握的核心知识.韩顺平的golang视频教程 ,视频在B站上,最好倍速播放。go语言环境配置Go 包网站 golang.com.cn是中文版本的 Go 包网站。 golang.org 是Go开源项目的主站, 而 golang.com.cn 集中为Go用户提供了丰富的资源和文档,是Go生态重要的一环。
2021-04-12 08:50:56
1159
原创 Elasticsearch7学习笔记(实战)
在SpringBoot中集成Elasticsearch的使用示例,带你快速上手使用Elasticsearch。添加如下maven依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>注意在这里引入e
2021-04-12 08:40:55
600
原创 Go 语言环境安装和配置
Golang安装非常简单,我们直接到官网:https://golang.google.cn/dl 上下载对应系统的安装包即可;其中windows(下载msi版本)和mac(下载pkg版本,安装目录在/usr/local/go/ 下)的和普通软件安装没有多大的差别,几乎都是傻瓜式安装即可。然后就是将其安装路径配置到环境变量中去后就可以在控制台使用golang的相关命令了。linux上安装golanglinux系统的下载*linux-amd64.tar.gz版本的安装包软执行如下安装命令;将安装包解压并放
2021-04-10 19:39:08
258
原创 干掉Redis,腾讯Tendis开源
一、腾讯Tendis简介Tendis存储版是腾讯互娱CROS DBA团队 & 腾讯云数据库团队 自主设计和研发的开源分布式高性能KV存储。Tendis存储版完全兼容redis协议,并使用rocksdb作为存储引擎。用户可以通过redis client访问Tendis存储版,几乎不用修改代码。同时,Tendis存储版支持远超内存的磁盘容量,可以大大降低用户的存储成本。类似于Redis Cluster, Tendis存储版使用去中心化的集群管理架构。数据节点之间通过gossip协议通讯,用户访问集群
2021-04-10 19:32:24
1196
原创 Docker搭建ELK日志系统
基于Docker搭建ELK日志系统,并在Spring Boot中集成Logstash实现微服务的日志收集。ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件实现日志采集、分析、展示,但并非全部。Elasticsearch官网地址 。Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。Logstash是
2021-04-10 19:29:20
554
原创 支付宝微信合单支付对接说明
微信电商收付通和支付宝互联网平台直付中进件流程、合单支付流程、账单资金冻结、结算、平台抽成对接说明。什么场景下会用到合单支付呢?下面举个例子:最常见的就是商城系统了,比如用户在一笔订单里面选择了多个不同商户的商品, 为了用户体验,在支付的时候肯定是只需要支付一次即可的;如果我们使用传统的方式即实际后台就是一笔订单,直接支付下单即可,这里确实简单了,但是我们在给商户做结算的时候就麻烦了,需要后台去统计相关的财务信息然后再打款给商户; 但是如果不想去做这样复杂的结算步骤,或者是可能刚开始我们的平台名气小,商
2021-04-09 10:33:59
1603
1
原创 APP内嵌网页使用微信或支付宝的H5支付
如何绕过微信或支付宝的H5支付的拦截验证?下面我们从本质上来说明该如何解决这个问题。微信和支付宝的H5支付下单成功后都会返回一个跳转支付的url连接,通过这个连接可以拉起微信或支付宝进行支付操作。如果直接访问,支付宝会有一个中间的页面,而微信有个麻烦的refresh验证问题;那么是否可以跳过这个步骤直接将微信支付宝拉起进行支付呢?网上大部分的教程都是让做安卓和IOS的自己去拦截微信和支付宝的地址进行处理。但是对这种内嵌网页,特别是那种直接通过前端HTML代码生成多端的情况,前端的同学就非常不好操作了;
2021-04-09 09:55:26
4715
1
转载 Spring Boot集成Redis
Redis一个基于内存实现的NoSql数据库,通常将其用于数据缓存以此来减少系统的压力,下面我将在SpringBoot中集成Redis,分别实现Redis单机模式、Redis主从复制、Redis哨兵模式、Redis-Cluster模式在SpringBoot中的集成实现。一、SpringBoot中集成RedisRedis的相关安装教程这里不再赘述,请参考Docker上安装Redis。示例项目源代码https://github.com/vcharfred/spring-demo的Hoxton分支的redis
2021-04-09 09:24:52
259
原创 Docker上安装Redis
Docker上安装RedisDocker可以很方便的进行服务部署和管理,下面我们通过docker来搭建Redis的单机模式、Redis主从复制、Redis哨兵模式、Redis-Cluster模式一、在Docker上安装单机版Redis首先需要先在服务器上安装docker Docker安装教程 、Docker命令快速入门;拉取镜像docker pull redis启动Redisdocker run -d -v $PWD/data:/data --name redis -p 6379:6379
2021-04-09 09:15:37
173
转载 ssm java编程遇到从数据库中查询的时间与存储时间不一致
ssm java编程遇到从数据库中查询的时间与存储时间不一致推荐先去看这篇文章: java编程中遇到的时区与时间问题总结http://blog.youkuaiyun.com/yeahwell/article/details/8559996这几天开发中遇到一个问题:ssm中使用mapper从数据库中查询datetime类型字段,查询结果与存储结果不一致,大约比存储时间多了8个小时左右。网上查了很久都没看见有类
2017-03-31 10:29:20
7348
1
原创 JAVA 实现简单的网络爬虫,获取网站图片
JAVA 实现简单的网络爬虫,获取网站图片要抓取网站的图片或是其他的,需要先分析其中的地址格式,然后在确定使用哪种方法去处理。 这个例子抓取的花瓣网上的图片 需要引入jsoup的jar包用于解析网页中元素 [jsoup官方下载地址]:https://jsoup.org/downloadimport java.io.BufferedReader;import java.io.F
2016-12-22 21:23:21
1468
原创 在struts2+jquery使用AJAX异步提交数据,处理返回的json数据
这几天刚好用到了ajax,在此记录一哈,以免以后忘了jquery的$.post()和$.get()是简单的AJAX ,因此它们只能处理回话成功的请求,而出现异常是抛出;所以当需要对异常处理的时候,最好使用$.ajax();实例如下:记住引入jquery的包以及相关的文件html部分代码代码:$('#btn').click(function(){$
2016-11-04 11:15:59
567
转载 javaweb中表单post和get提交方式出现乱码原因
最近在学javaweb遇到了乱码问题,一直不太明白其中的具体原因,看了这篇文章明白了不少。感觉很有用所以把它转载过来,方便以后查看。文章来自:http://blog.youkuaiyun.com/yzhz 杨争 原文地址 :http://www.cnblogs.com/yencain/articles/1321386.html一、问题:
2016-10-11 23:00:36
2370
HTML离线帮助文档
2016-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人