05 2020 档案
摘要:本篇文章讲解 Sleuth 如何使用 Elasticsearch、Logstash、Kibana 分析追踪数据。 1|0使用 ELK 分析追踪数据 点击链接观看:ELK 环境准备视频(获取更多请关注公众号「哈喽沃德先生」) ELK 是 elastic 公司提供的一套完整的日志收集以及展示的解决方案,
阅读全文
摘要:本篇文章讲解 Sleuth 基于 Zipkin 存储链路追踪数据至 MySQL,Elasticsearch 以及使用 MQ 存储链路追踪数据至 MySQL,Elasticsearch。 1|0存储追踪数据 Zipkin Server 默认存储追踪数据至内存中,这种方式并不适合生产环境,一旦 Serv
阅读全文
摘要:随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,
阅读全文
摘要:随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM
阅读全文
摘要:背景 Jwt全称是:json web token。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 优点 简洁: 可以通过URL、POST参数或者在HTTP header发送,因为数据量小,传输速度也很快; 自包含:负载中
阅读全文
摘要:一、什么是限流?为什么要限流? 不知道大家有没有做过帝都的地铁,就是进地铁站都要排队的那种,为什么要这样摆长龙转圈圈?答案就是为了限流!因为一趟地铁的运力是有限的,一下挤进去太多人会造成站台的拥挤、列车的超载,存在一定的安全隐患。同理,我们的程序也是一样,它处理请求的能力也是有限的,一旦请求多到超出
阅读全文
摘要:[个人翻译]Redis 集群教程(上) [个人翻译]Redis 集群教程(中) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢。 一个更有趣的示例程序 我们上边写的那个示
阅读全文
摘要:[个人翻译]Redis 集群教程(上) [个人翻译]Redis 集群教程(下) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢。 使用create-cluster角本创建
阅读全文
摘要:[个人翻译]Redis 集群教程(中) [个人翻译]Redis 集群教程(下) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢。 这是一篇对Redis集群的入门介绍,这里
阅读全文
摘要:上一篇基于redis的list实现了一个简单的消息队列:玩转redis-简单消息队列 源码地址 使用demo 产品经理经常说的一句话,我们不光要有X功能,还要Y功能,这样客户才能更满意。同样的,只有简单消息队列是不够的,还要有延时消息队列才能算是一个完整的消息队列。 看看redis的命令,放眼望去,
阅读全文
摘要:使用go语言基于redis写了一个简单的消息队列源码地址使用demo redis的 list 非常的灵活,可以从左边或者右边添加元素,当然也以从任意一头读取数据 添加数据和获取数据的操作也是非常简单的LPUSH 从左边插入数据RPUSH 大右边插入数据LPOP 从左边取出一个数据RPOP 从右边取出
阅读全文
摘要:本文摘自于《Spring Cloud微服务 入门 实战与进阶》一书。 1 配置发布后的实时推送设计 配置中心最重要的一个特性就是实时推送了,正因为有这个特性,我们可以依赖配置中心做很多事情。在我自己开发的Smconf这个配置中心,Smconf是依赖于Zookeeper的Watch机制来实现实时推送。
阅读全文
摘要:在整体应用架构中,非生产环境情况下,一般 1GB 或者 2GB 的 RAM 就足够了。如果我们将这个应用程序划分为 20 或 30 个独立的微服务,那么很难期望 RAM 仍将保持在 1GB 或 2GB 左右。特别是如果我们使用 Spring Cloud 的时候。 首先,准备三个服务,Eureka 服
阅读全文
摘要:前言 上篇文章我讲过复杂的限流场景可以通过扩展RedisRateLimiter来实现自己的限流策略。 假设你领导给你安排了一个任务,具体需求如下: 针对具体的接口做限流 不同接口限流的力度可以不同 可以动态调整限流配置,实时生效 如果你接到上面的任务,你会怎么去设计+实现呢? 每个人看待问题的角度不
阅读全文
摘要:系统在生产环境出现问题时,排查问题最好的方式就是查看日志了,日志的记录尽量详细,这样你才能快速定位问题。 如果需要在Zuul中进行详细的日志记录,这两种日志必不可少。 API请求信息 API响应信息 前面有介绍过如何获取请求信息,文章请查看《Spring Cloud Zuul过滤器获取请求参数问题》
阅读全文
摘要:前言 重试,我相信大家并不陌生。在我们调用Http接口的时候,总会因为某种原因调用失败,这个时候我们可以通过重试的方式,来重新请求接口。 生活中这样的事例很多,比如打电话,对方正在通话中啊,信号不好啊等等原因,你总会打不通,当你第一次没打通之后,你会打第二次,第三次...第四次就通了。 重试也要注意
阅读全文
摘要:在使用Spring Boot Admin进行监控时,如果被监控的服务没有加context-path的话是不会有任何问题的,一旦服务加了context-path的配置,监控就会失败。 下图是正常情况的显示: 我们给被监控的服务增加一个context-path: server.servlet.conte
阅读全文
摘要:Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。 网关都是给接口做代理转发的,后端对应的都是REST API,返回数据格式都是JSON。如果不做处理,当发生异常时,
阅读全文
摘要:全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP访问限制等等。 接口定义类:org.springframework.cloud.gateway.filter.GlobalFilter public interface GlobalFilter
阅读全文
摘要:概述 在本文中,我们将介绍Spring Boot Actuator。我们将首先介绍基础知识,然后详细讨论Spring Boot 1.x和2.x中的可用内容。 我们将在Spring Boot 1.x中学习如何使用,配置和扩展此监视工具。然后,我们将讨论如何利用反应式编程模型使用Boot 2.x和Web
阅读全文
摘要:问题 在若干年前的单体应用时代,我们可以相对轻松地对整个业务项目进行健康检查、指标监控、配置管理等等项目治理。如今随着微服务的发展,我们将大型单体应用按业务模型进行划分,以此形成众多小而自治的微服务,我们品尝到了微服务的甜头:异常隔离、独立部署和发布、服务伸缩、便于协作开发...我们的项目服务更加解
阅读全文
摘要:kafka消费过程难免会遇到需要重新消费的场景,例如我们消费到kafka数据之后需要进行存库操作,若某一时刻数据库down了,导致kafka消费的数据无法入库,为了弥补数据库down期间的数据损失,有一种做法我们可以指定kafka消费者的offset到之前某一时间的数值,然后重新进行消费。 首先创建
阅读全文
摘要:整理了一些Java方面的架构、面试资料(微服务、集群、分布式、中间件等),有需要的小伙伴可以关注公众号【程序员内点事】,无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 面试总被问分库分表怎么办?你可以这样怼他 3万字总结,Mysql优化之精髓 为了不复制粘贴,我被逼着
阅读全文
摘要:一、什么是限流?为什么要限流? 不知道大家有没有做过帝都的地铁,就是进地铁站都要排队的那种,为什么要这样摆长龙转圈圈?答案就是为了限流!因为一趟地铁的运力是有限的,一下挤进去太多人会造成站台的拥挤、列车的超载,存在一定的安全隐患。同理,我们的程序也是一样,它处理请求的能力也是有限的,一旦请求多到超出
阅读全文
摘要:说在前边 最近部门几位同事受了一些委屈相继离职,共事三年临别之际颇有不舍,待一切手续办妥帖,寒暄过后送他们出公司,几个老哥临别时冲我鬼魅一笑,我顿时心里一紧有种不好的预感,这事绝对没有这么简单。等我接手这几个大佬的项目后,应验了我的预感,此刻我居然有点后悔,为啥送别之时没揍他们一顿!哈哈哈~ 而这种
阅读全文
摘要:引言 昨天一位公众号粉丝和我讨论了一道面试题,个人觉得比较有意义,这里整理了一下分享给大家,愿小伙伴们面试路上少踩坑。面试题目比较简单:“让你实现一个附近的人功能,你有什么方案?”,这道题其实主要还是考察大家对于技术的广度,本文介绍几种方案,给大家一点思路,避免在面试过程中语塞而影响面试结果,如有不
阅读全文
摘要:引言 最近项目上线的频率颇高,连着几天加班熬夜,身体有点吃不消精神也有些萎靡,无奈业务方催的紧,工期就在眼前只能硬着头皮上了。脑子浑浑噩噩的时候,写的就不能叫代码,可以直接叫做Bug。我就熬夜写了一个bug被骂惨了。 由于是做商城业务,要频繁的对商品库存进行扣减,应用是集群部署,为避免并发造成库存超
阅读全文
摘要:前言 Fedora 和 RHEL库里面的RabbitQM已经不维护了,推荐选择Bintray。 正文 Binary 也可以用来安装Erlang(rabbitmq的编写语言)。服务器Centos 7.7。非集群模式。 安装Erlang erlang是rabbitmq最重要的依赖,安装参考github
阅读全文
摘要:前言 中间件 消息队列 异步处理,注册完发短信 应用解耦,订单接口调用扣库存接口,失败了怎么办? 流量削峰,大量请求到达业务接口,这不行! 日志处理,每个业务代码都调用一下写日志的方法吗?结合AOP思想,业务程序为什么要关心写日志的事情? 消息通讯等,ABC处在聊天室里面,一起聊天?foreach吗
阅读全文
摘要:并发工具——CyclicBarrier 本博客系列是学习并发编程过程中的记录总结。由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅。 并发编程系列博客传送门 CyclicBarrier简介# CyclicBarrier也是JDK并发包中提供的一个辅助并发工具类。Cyclic
阅读全文
摘要:Centos 7.4 下初探Zabbix安装 工作一波停一波起,感觉离开.net好久了。 最近工作中发现服务器监视都是用了zabbix,对于我这类不懂的狠狠弥补了一下知识。 无意发现zabbix带有api,就想开发个工具调用api来着。可是api调用在host.get就卡住了,就是不返回理想结果。
阅读全文
摘要:背景 通过前几章节,我们知道: docker build 可以创建一个自定义镜像; docker run 可以启动一个容器; 而实际项目中,特别是微服务化之后,运维需要面对的不单单是一个镜像一个容器,而是几十乃至上千。如果通过手工敲命令去创建一个个容器,不科学也太慢。如果遇到机器更新换代或者重启,又
阅读全文
摘要:镜像简介 它是一个创建Docker 容器的只读模板,通过DockerFile可以自定义镜像。它也是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 D
阅读全文
摘要:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker动手实验平台:Play with Docker。 Docker
阅读全文
摘要:测试代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5
阅读全文
摘要:上篇讲了RPC服务端的实现。原理就是解析netty通道数据拿到类、方法及入参等信息,然后通过java反射机制调用本地接口返回结果。没有用到很复杂的技术。 这篇我们将客户端的实现。说白了客户端的任务很简单:一是建立socket长连接。二是封装发送服务端需要的数据包。三是处理返回结果。 demo地址 h
阅读全文
摘要:demo地址 https://gitee.com/syher/grave-netty RPC介绍 首先了解一下RPC:远程过程调用。简单点说就是本地应用可以调用远程服务器的接口。那么通过什么方式调用远程接口呢?说白了RPC只是一种概念。他的调用可以基于HTTP实现,也可以基于TCP/IP实现。甚至私
阅读全文
摘要:demo地址 https://gitee.com/syher/grave-netty RPC介绍 首先了解一下RPC:远程过程调用。简单点说就是本地应用可以调用远程服务器的接口。那么通过什么方式调用远程接口呢?说白了RPC只是一种概念。他的调用可以基于HTTP实现,也可以基于TCP/IP实现。甚至私
阅读全文
摘要:目录1. 反射机制的概念2. 反射的基础Class类3. 反射的用法4. 反射的应用示例 作者简介:全栈学习笔记,一个正在努力的人 反射机制的概念: 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态
阅读全文
摘要:目录: 一、SMTP协议简介 二、开启SMTP服务并获取授权码 三、依赖导入与配置说明 四、邮件发送 1.简单邮件发送 2. 带附件内容和正文带图片的邮件发送 3. thymeleaf模板作为邮件发送 五、总结 一、SMTP协议简介 SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在
阅读全文
摘要:本文目录 一、SpringBoot中的日志 二、自定义日志常用配置 1. 日志输出级别 2. 日志输出到文件 3. 自定义日志输出格式 三、xml文件实现日志配置的方式 四、AOP + 自定义注解实现统一日志处理 五、总结 一、SpringBoot中的日志 在我们运行项目的时候,你会发现控制台是有日
阅读全文
摘要:目录 1. 过滤器简介 2. 过滤器配置的两种方法 3. 测试编写与结果 4. 总结 1. 过滤器简介 1. 过滤器是什么? Filter也称之为过滤器,过滤器是对数据进行过滤,预处理。开发人员可以对客户端提交的数据进行过滤处理,比如敏感词,也可以对服务端返回的数据进行处理。还有就是可以验证用户的登
阅读全文
摘要:目录 1. 拦截器介绍 2.自定义拦截器 3.拦截器注入适配器 4.controller测试 5. 测试 6. 扩展内容:拦截器链 7. 总结 1. 拦截器介绍 拦截器是在servlet执行之前执行的程序(这里就是controller代码执行之前),它主要是用于拦截用户请求并作相应的处理,比如说可以
阅读全文
摘要:SpringBoot系列(十)统一异常处理与统一结果返回 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静态资源配置详解 SpringBoot系列(
阅读全文
摘要:SpringBoot系列(九)分分钟解决文件上传 往期推荐SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静态资源配置详解 SpringBoot系列(五)Myb
阅读全文
摘要:SpringBoot系列(八) 分分钟学会SpringBoot多种跨域解决方式 往期推荐SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静态资源配置详解 Spr
阅读全文
摘要:Springboot 配置接口文档swagger 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静态资源配置详解 SpringBoot系列(五)My
阅读全文
摘要:1. thymeleaf简介 1. Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。 2. Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显示,也可以作为静态原型工作,从而可以在开发团队中加强协作。 3. Thymeleaf
阅读全文
摘要:SpringBoot系列(五)Mybatis整合 1. Mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生
阅读全文
摘要:Springboot系列(四)web静态资源配置 往期精彩 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 SpringBoot系列(三)配置文件详解完整版 引言:SpringBoot web项目开发中往往会涉及到一些静态资源的使用,比如说
阅读全文
摘要:目录 properties 文件 1.语法 2.优先级 3.自定义数据配置 4.获取自定义数据配置 1.通过prefix获取 yml文件 1.语法 2.优先级 3.自定义数据配置。 4.获取自定义数据配置 1.通过prefix 2.通过@value注解获取 引言:Springboot有一个全局配置文
阅读全文
摘要:SpringBoot系列(二)入门知识 往期推荐 SpringBoot系列(一)idea新建springboot项目 引言 本来新建springboot项目应该放在入门知识这一章的,但是由于新建springboot的第一篇文章只介绍了一种新建项目的方法,所以在这一章讲解一下springboot的基本
阅读全文
摘要:不多说废话,直接进入正题,按照下面的步骤创建一个springboot项目一般不会出错,当然不排除可能会有一些脸黑的,不过应该问题不大。 第一步,如果你是在已有的项目里面,新建一个springboot项目 如果你们是在idea打开后没有项目打开创建项目,那就比较简单了,当然你也可以这样回退到选择打开项
阅读全文
摘要:CAS底层原理 概念 CAS的全称是Compare-And-Swap,它是CPU并发原语 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮
阅读全文
摘要:@ 目录 提出一个需求 解决方案: 使用SpringSecurity进行解决 SpringSecurity和SpringBoot结合 1. 首先在pom.xml中引入依赖: 2. 配置用户角色和接口的权限关系 3. 配置用户名和密码 4.进行测试 总结: 本教程是基于SpringMVC而创建的,不适
阅读全文
摘要:一、错误处理原理分析 使用SpringBoot创建的web项目中,当我们请求的页面不存在(http状态码为404),或者器发生异常(http状态码一般为500)时,SpringBoot就会给我们返回错误信息。 也就是说,在SpringBoot的web项目中,会自动创建一个/error的错误接口,来返
阅读全文
摘要:有些人认为,写单元测试就是在浪费时间 ,写完代码,依然还是能够进行测试的。但是,还是建议写单元测试的,可以让你的条理更加清晰,而且当某个功能出现问题时,可能通过单元测试很容易的定位和解决问题。本文主要总结下在Spring及SpringBoot项目中,使用单元测试时的方法。将JUnit4和JUnit5
阅读全文
摘要:RPC远程过程调用可以说是分布式系统的基础,本文将通过Java演示一次普通的rpc调用到底发生了什么。 我曾经在网上看到有人提问,为什么RPC要叫作远程过程调用,而不叫作RMC远程方法调用。个人认为RPC的叫法才是合理的,远程调用的是某个过程,不一定是一个具体的方法,你只要看过第一个版本的代码就能懂
阅读全文
摘要:一般我们对缓存读操作的时候有这么一个固定的套路: 如果我们的数据在缓存里边有,那么就直接取缓存的。 如果缓存里没有我们想要的数据,我们会先去查询数据库,然后将数据库查出来的数据写到缓存中。 最后将数据返回给请求 代码例子: 1 @Override 2 public R selectOrderById
阅读全文
摘要:本章节使用spring-security-custom-login 1|0一、工程准备 1|11、pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xml
阅读全文
摘要:上一篇我们简单的分析了一下认证流程,通过程序的启动加载了各类的配置信息。接下来我们一起来看一下授权流程,争取完成和前面简单的web基于sessin的认证方式一致。由于在授权过程中,我们预先会给用于设置角色,关于如果加载配置的角色信息这里就不做介绍了,上一篇的加载过程中我们可以发现相关的信息。 本篇依
阅读全文
摘要:上面我们一起开始了Spring Security的初体验,并通过简单的配置甚至零配置就可以完成一个简单的认证流程。可能我们都有很大的疑惑,这中间到底发生了什么,为什么简单的配置就可以完成一个认证流程啊,可我啥都没看见,没有写页面,没有写接口。这一篇我们将深入到源码层面一起来了解一下spring se
阅读全文
摘要:本篇将开始Spring Security的学习,将从最简单的搭建工程到自定义配置改造的方式完成一系列的教程。所有的代码将集中在一个工程中,通过不同的module的方式区分每一个篇章,重点突出每个module的特点,关注一个方面的功能或者配置 1|0什么是Spring Security 上面介绍的:
阅读全文
摘要:这一篇将通过一个简单的web项目实现基于Session的认证授权方式,也是以往传统项目的做法。先来复习一下流程 用户认证通过以后,在服务端生成用户相关的数据保存在当前会话(Session)中,发给客户端的数据将通过session_id存放在cookie中。在后续的请求操作中,客户端将带上sessio
阅读全文
摘要:在互联网中我们一致都有提到或接触到关于认证和授权概念或名字,那到底什么是认证?什么是授权?他们两又有什么联系和区别呢?本系列将记录自己近一段时间学习和实践的过程,以便加深理解过程。 我们先来一起认识两个单词authentication和 authorization,有没有发现什么特点,我第一次接触到
阅读全文
摘要:前言 刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出来的结果经常不是自己想要的,然而又不知道问题出在了哪里。出现这个问题归根结底是因为对于Elasticsearch的底层索引原理以及各个查询搜索方式的不了
阅读全文
摘要:前言 相比于大多数人熟悉的MySQL数据库的索引,Elasticsearch的索引机制是完全不同于MySQL的B+Tree结构。索引会被压缩放入内存用于加速搜索过程,这一点在效率上是完爆MySQL数据库的。但是Elasticsearch会对全部text字段进行索引,必然会消耗巨大的内存,为此Elas
阅读全文
摘要:前言 Elasticsearch诞生的本意是为了解决文本搜索太慢的问题,ES会默认将所有的输入内容当作字符串来理解,对于字段类型是keyword或者text的数据比较友好。但是如果输入的类型是数字,ES还会把数字当作字符串吗?排序问题还有范围查询问题怎么解决呢?这篇文章就简单介绍了ES对于数字类型(
阅读全文
摘要:官网的说法 我们先来认真看一下官网的说法。翻译过来大意如下:CPU并不是您使用Redis的瓶颈,因为通常Redis要么受内存限制,要么受网络限制。例如,使用在一般Linux系统上运行的流水线Redis每秒可以发送一百万个请求,因此,如果您的应用程序主要使用O(N)或O(log(N))命令,则几乎不会
阅读全文
摘要:上一篇我们简单的分析了一下认证流程,通过程序的启动加载了各类的配置信息。接下来我们一起来看一下授权流程,争取完成和前面简单的web基于sessin的认证方式一致。由于在授权过程中,我们预先会给用于设置角色,关于如果加载配置的角色信息这里就不做介绍了,上一篇的加载过程中我们可以发现相关的信息。 本篇依
阅读全文
摘要:我得意地来到老板的办公室:“报告老板,高可用神器已祭出,您花巨资营销的高流量什么时候到?”老板呵呵一声:“高流量下周一来报道,你可以准备下和他做工作交接了”窗户外一阵冷风吹过,接下来是不是会发生点什么。 @ 目录 一、从阿里双11的高并发高流量开始 二、核心功能及原理说明 2.1 模块说明 2.2
阅读全文
摘要:使用springboot+dubbo搭建RPC入门案例 本文背景简述:最近在学习公司的一套RPC框架,初步接触的时候感觉挺复杂的。但是知道其原理肯定是和dubbo很相似的,毕竟都是RPC框架嘛,只是各自使用的范围和使用者群体有些不同罢了。于是就去dubbo官网熟悉了其相关文档和案例教程,然后结合网上
阅读全文
摘要:有不少朋友或同事都问过我这个问题:为什么我们要搞微服务架构,一个项目把代码从头撸到尾不是很方便吗,开发更快速,部署也容易。而且一提起微服务,涉及的技术就一大堆,好像几辈子也学不完。 怎么解答这个问题呢?我想还是通过架构的发展变迁史来说起,为什么会出现现在的各种架构。只有从整体上了解了架构的脉络,我们
阅读全文
摘要:1 简介 不知不觉Https相关的文章已经写了6篇了,本文将是这个专题的最后一篇,起码近期是最后一篇。前面6篇讲的全都是单向的Https验证,本文将重点介绍一下双向验证。有兴趣的同学可以了解一下之前的文章: (0)Https专题 (1)Springboot整合https原来这么简单 (2)HTTPS
阅读全文
摘要:1 简介 Spring WebFlux是一个新兴的技术,Spring团队把宝都压在响应式Reactive上了,于是推出了全新的Web实现。本文不讨论响应式编程,而是通过实例讲解Springboot WebFlux如何把http重定向到https。 作为餐前小吃,建议大家先吃以下https小菜,以帮助
阅读全文
摘要:1 简介 Nginx是一个非常强大和流行的高性能Web服务器。本文讲解Nginx如何整合https并将http重定向到https。 https相关文章如下: (1)Springboot整合https原来这么简单 (2)HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer
阅读全文
摘要:1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可视化客户端进行操作 (2) 实例讲解Springboot以Repository方式整合Redis 本
阅读全文
摘要:1 简介 HTTP是不安全的,我们需要给它套上SSL,让它变成HTTPS。本文章将用实例介绍Springboot整合HTTPS。 2 密码学基础 要谈https就要谈Security,自然就要谈安全;谈及安全,就必然涉及密码学的一些知识。 2.1 密码体制 要建立一个密码体制,需要由五个空间组成,分
阅读全文
摘要:1 简介 之前文章《Springboot整合https原来这么简单》讲解过一些基础的密码学知识和Springboot整合HTTPS。本文将更深入讲解密钥知识和密钥工具。 2 密钥知识-非对称加密 这部分知识非常重要,理解了关键的密钥知识,才能更好地在工作中去使用。需要注意的是,讲的主要是非对称加密的
阅读全文
摘要:1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来。 建议阅读之前的相关文章: (1) Springboot整合https原来这么简单 (2)HTTPS之密钥知识与密钥工具Keytool和Keyst
阅读全文
摘要:1 简介 之前讲解的Springboot整合https用的是tomcat作为容器,tomcat也是一个流行多年的老牌Java容器了。但针对不同的场景,还是会有不同的选择,如Jetty。Jetty是架构相对简单、基于Handler的灵活可扩展的Servlet容器。更多详情请参考官方文档。 另外建议阅读
阅读全文
摘要:目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagger2文档导出成pdf 4.1 生成pdf的格式 4.2 生成静态文档步骤 4.2.1 配置grad
阅读全文
摘要:本案例主要讲解Redis实现分布式锁的两种实现方式:Jedis实现、Redisson实现。网上关于这方面讲解太多了,Van自认为文笔没他们好,还是用示例代码说明。 一、jedis 实现 该方案只考虑Redis单机部署的场景 1.1 加锁 1.1.1 原理 jedis.set(String key,
阅读全文
摘要:现在几乎大部分的App都支持使用多个第三方账号进行登录,如:微信、QQ、微博等,我们把此称为多账号统一登陆。而这些账号的表设计,流程设计至关重要,不然后续扩展性贼差。本文不提供任何代码实操,但是梳理一下博主根据我司账号模块的设计,提供思路,仅供参考。 一、 自建的登陆体系 1.1 手机号登陆注册 该
阅读全文
摘要:一、背景 文章浏览量统计,low的做法是:用户每次浏览,前端会发送一个GET请求获取一篇文章详情时,会把这篇文章的浏览量+1,存进数据库里。 1.1 这么做,有几个问题: 在GET请求的业务逻辑里进行了数据的写操作! 并发高的话,数据库压力太大; 同时,如果文章做了缓存和搜索引擎如ElasticSe
阅读全文
摘要:说起应用分层,大部分人都会认为这个不是很简单嘛 就Controller,Service, Mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,Controller做的逻辑比Service还多,Service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也
阅读全文
摘要:一、跨域背景 1.1 何为跨域? Url的一般格式: 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 示例: https://www.dustyblog.cn:8080/say/Hello 是由 https + www + dustyblog.cn + 8080 + say/Hell
阅读全文
摘要:SpringBoot 配置 AOP 打印日志 在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码。 一、Spring AOP AOP(Aspect-Oriented Programming,面向切面编程),
阅读全文
摘要:一、介绍 1.1 Logback Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如l
阅读全文
摘要:一、定时任务实现的几种方式: Timer 这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。 ScheduledExecutorService 也jdk
阅读全文
摘要:Spring Boot: 配置文件详解 SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程。 一、准备前提 为了让Spr
阅读全文
摘要:背景 Jwt全称是:json web token。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 优点 简洁: 可以通过URL、POST参数或者在HTTP header发送,因为数据量小,传输速度也很快; 自包含:负载中
阅读全文
摘要:Apache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 注意,是 Apache Dubbo,不再是 Alibaba Dubbo。简单来说就是 Alibaba 将 Dubbo 移交给 Apa
阅读全文
摘要:上文我们介绍了IOC和DI,IOC是一种设计模式,DI是它的具体实现,有很多的框架都有这样的实现,本文主要以spring框架的实现,来看具体的注入实现逻辑。 spring是如何将对象加入容器的 spring将对象加入容器的方式有很多种,最主要的是xml和注解的形式,而当下注解的形式应用更加的广泛,所
阅读全文
摘要:上篇文章Spring IOC的核心机制:实例化与注入我们提到在有多个实现类的情况下,spring是如何选择特定的bean将其注入到代码片段中,我们讨论了按照名称注入和使用@Qualifier 注解输入的两种方式,本篇文章将结合之前提到的和spring的其他注入方式一起进行讨论。 本文主题 我们将讨论
阅读全文
摘要:java异常介绍 异常时相对于return的一种退出机制,可以由系统触发,也可由程序通过throw语句触发,异常可以通过try/catch语句进行捕获并处理,如果没有捕获,则会导致程序退出并输出异常栈信息,异常有不同的类型,所有异常类都有一个共同的父类Throwable,下面我们先从Throwabl
阅读全文
摘要:上文测试开发专题:spring-boot统一异常捕获我们讨论了java异常以及如何使用Spring-Boot捕获异常,但是没有去说捕获异常后该如何进一步处理,这篇文章我们将对这个遗留的问题进行讨论. 统一错误响应定义 我们希望在程序发生异常的时候,能够给用户返回一个比较友好且明确的信息,对于api接
阅读全文
摘要:一、常用的消息模式 我们在工作的使用中,经常会遇到多个消费者监听同一个队列的情况,模型如下图所示:当有多个消费者时,我们的消息会被哪个消费者消费呢,我们又该如何均衡消费者消费信息的多少呢;主要有两种模式:1、轮询模式的分发:一个消费者一条,按均分配;2、公平分发:根据消费者的消费能力进行公平分发,处
阅读全文
摘要:一、RabbitMQ的简介和安装 1.1 RabbitMQ的安装 到官网下载最新的安装包,和Erlang的安装包,我的安装包如下图先安装Erlang,再安装RabbitMQ,一直点击下一步就可以了。安装完成之后,我们需要启用管理功能,找到安装位置,进入到sbin文件夹,执行下列命令rabbitmq-
阅读全文
摘要:某日,胖滚猪写的代码导致了一个生产bug,奋战到凌晨三点依旧没有解决问题。胖滚熊一看,只用了一个volatile就解决了。并告知胖滚猪,这是并发编程导致的坑。这让胖滚猪坚定了要学好并发编程的决心。。于是,开始了我们并发编程的第一课。 序幕 BUG源头之一:可见性 刚刚我们说到,CPU缓存可以提高程序
阅读全文
摘要:上一节【漫画】JAVA并发编程三大Bug源头(可见性、原子性、有序性)我们聊了聊并发编程的三个bug源头,这还没开始进入并发世界,胖滚猪就遇到了难题。。 这个难题是所有初学者都会有的疑惑:没法复现那些理论知识告诉我们的bug。但是实际操练很重要,那么在本地开发环境,到底应该怎样模拟并发呢? 模拟并发
阅读全文
摘要:pre_tags 前缀标签 post_tags 后缀标签 tags_schema 设置为styled可以使用内置高亮样式 require_field_match 多字段高亮需要设置为false 使用highlight为查询结果增加高亮效果 Copy { "query": { "bool": { "m
阅读全文
摘要:💛原文地址为https://www.cnblogs.com/haixiang/p/12095578.html,转载请注明出处!🍎es与SpringBoot的整合以及常用CRUD、搜索API已被作者封装,开箱即用效果很好,欢迎star谢谢!github 查询简介# 叶子查询子句叶子查询子句在特定字
阅读全文
摘要:💛原文地址为https://www.cnblogs.com/haixiang/p/12040272.html,转载请注明出处!🍎es与SpringBoot的整合以及常用CRUD、搜索API已被作者封装,开箱即用效果很好,欢迎star谢谢!github Mapping简介# mapping 是用来
阅读全文
摘要:IK分词器的使用# 首先我们通过Postman发送GET请求查询分词效果 Copy GET http://localhost:9200/_analyze { "text":"农业银行" } 得到如下结果,可以发现es的默认分词器无法识别中文中农业、银行这样的词汇,而是简单的将每个字拆完分为一个词,这
阅读全文
摘要:目录 1. 基本概念 1.1 Node 与 Cluster 1.2 Index 1.3 Document 1.4 Type(将在ES6.0移除) 2. 数据的增删改查 2.1 添加数据 2.2 查询数据 2.3 更新数据 2.4 删除数据 本文所有命令均在 Kibana 的 dev tools 上进
阅读全文
摘要:目录 [TOC] 环境介绍 安装过程 安装Kibana # 环境介绍# 软件版本:ElasticSearch7.0.0 Kibana7.0.0 系统环境:mac 环境 安装过程# 官网下载 ElasticSearch7.0.0 版本,下载后解压即可 进入es安装目录 Copy cd elastics
阅读全文
摘要:目录 [TOC] 1. 定义 2. 与 Lucene 的关系 3. 优点 4. 缺点 5. 解决的问题 6. 应用场景 7. 倒排索引(摘自Elasticsearch权威指南) # 1. 定义# Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和
阅读全文
摘要:💛es搜索系统封装源码,走过路过,请帮我点个star哦!💛原文地址为https://www.cnblogs.com/haixiang/p/12451703.html,转载请注明出处! 什么是elasticsearch# Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有
阅读全文
摘要:随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM
阅读全文
摘要:Ribbon 是一个基于 HTTP 和 TCP 的 客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。 它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署,但是它几乎存在于每个 Spring Cloud 微服务中。包括 Feign 提供的声明式服务调
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Feign 声明式服务调用(一) 本篇文章讲解 Feign 性能优化的问题,Gzip压缩、HTTP连接池、请求超时等。 1|0Feign 性能优化 1|1Gzip 压缩 gzip 介绍:gzip 是一种数据格式,采用
阅读全文
摘要:Feign 是 Spring Cloud Netflix 组件中的一个轻量级 RESTful 的 HTTP 服务客户端,实现了负载均衡和 Rest 调用的开源框架,封装了 Ribbon 和 RestTemplate,实现了 WebService 的面向接口编程,进一步降低了项目的耦合度。 Feign
阅读全文
摘要:服务注册中心是服务实现服务化管理的核心组件,类似于目录服务的作用,主要用来存储服务信息,譬如提供者 url 串、路由信息等。服务注册中心是微服务架构中最基础的设施之一。 在微服务架构流行之前,注册中心就已经开始出现在分布式架构的系统中。比如 Dubbo 是一个在国内比较流行的分布式框架,被大量的中小
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Netflix Eureka 注册中心(一) 本篇文章讲解 Eureka 集群、架构原理、自我保护、优雅停服、安全认证等功能实现。 1|0高可用 Eureka 注册中心 点击链接观看:高可用 Eureka 注册中心视频
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Consul 注册中心(一) 本篇文章讲解 Consul 集群环境的搭建。 1|0Consul 集群 点击链接观看:Consul 集群视频(获取更多请关注公众号「哈喽沃德先生」) 上图是一个简单的 Consul Clu
阅读全文
摘要:Netflix Eureka 2.X https://github.com/Netflix/eureka/wiki 官方宣告停止开发,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,并且官方也在积极维护 1.X https://github.com/Netflix/e
阅读全文
摘要:1|0什么是 Zuul Zuul 是从设备和网站到应用程序后端的所有请求的前门。作为边缘服务应用程序,Zuul 旨在实现动态路由,监视,弹性和安全性。Zuul 包含了对请求的路由和过滤两个最主要的功能。 Zuul 是 Netflix 开源的微服务网关,它可以和 Eureka、Ribbon、Hystr
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Netflix Zuul 服务网关(一) 本篇文章讲解 Zuul 网关过滤器实现统一鉴权以及网关过滤器异常统一处理。 1|0网关过滤器 点击链接观看:网关过滤器视频(获取更多请关注公众号「哈喽沃德先生」) Zuul 包
阅读全文
摘要:本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Netflix Zuul 服务网关(一) Spring Cloud 系列之 Netflix Zuul 服务网关(二) 本篇文章讲解 Zuul 和 Hystrix 的无缝结合,实现网关监控、网关熔断、网关限流、网关调优
阅读全文
摘要:本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Netflix Zuul 服务网关(一) Spring Cloud 系列之 Netflix Zuul 服务网关(二) Spring Cloud 系列之 Netflix Zuul 服务网关(三) 本篇文章讲解 Zuul
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里: Spring Cloud 系列之 Gateway 服务网关(一) Spring Cloud 系列之 Gateway 服务网关(二) Spring Cloud 系列之 Gateway 服务网关(三) 本篇文章讲解 Gateway 网关如何实现限流、整合
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里: Spring Cloud 系列之 Gateway 服务网关(一) Spring Cloud 系列之 Gateway 服务网关(二) 本篇文章讲解 Gateway 网关过滤器和全局过滤器以及自定义过滤器。 1|0过滤器 Spring Cloud Gat
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Gateway 服务网关(一) 本篇文章讲解 Gateway 网关的多种路由规则、动态路由规则(配合服务发现的路由规则)。 1|0路由规则 点击链接观看:路由规则视频(获取更多请关注公众号「哈喽沃德先生」) Sprin
阅读全文
摘要:Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且还基于 Filter 链的方式提供了网关基本的功能。目前最新版 Spring Cloud 中引用的还是 Zuul 1.x 版本,而这个版本是
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Stream 消息驱动(一) 本篇文章讲解 Stream 如何实现消息分组和消息分区。 1|0消息分组 点击链接观看:Stream 消息分组视频(获取更多请关注公众号「哈喽沃德先生」) 如果有多个消息消费者,那么消息生
阅读全文
摘要:在实际开发过程中,服务与服务之间通信经常会使用到消息中间件,消息中间件解决了应用解耦、异步处理、流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。 不同中间件内部实现方式是不一样的,这些中间件的差异性导致我们实际项目开发给我们造成了一定的困扰,比如项目中间件为 Kafka,如果我们要替换为
阅读全文
摘要:Hystrix 除了可以实现服务容错之外,还提供了近乎实时的监控功能,将服务执行结果和运行指标,请求数量成功数量等等这些状态通过 Actuator 进行收集,然后访问 /actuator/hystrix.stream 即可看到实时的监控数据。 1|1添加依赖 在需要开启数据监控的项目中添加 actu
阅读全文
摘要:本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Netflix Hystrix 服务容错(一) Spring Cloud 系列之 Netflix Hystrix 服务容错(二) 本篇文章讲解 Hystrix 的服务熔断和服务降级以及基于 Feign 的服务熔断处理
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Netflix Hystrix 服务容错(一) 本篇文章讲解 Hystrix 服务隔离中的线程池隔离与信号量隔离。 1|0服务隔离 点击链接观看:服务隔离视频(获取更多请关注公众号「哈喽沃德先生」) 1|1线程池隔离
阅读全文
摘要:Hystrix 源自 Netflix 团队于 2011 年开始研发。2012年 Hystrix 不断发展和成熟,Netflix 内部的许多团队都采用了它。如今,每天在 Netflix 上通过 Hystrix 执行数百亿个线程隔离和数千亿个信号量隔离的调用。极大地提高了系统的稳定性。 在分布式环境中,
阅读全文
摘要:本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Sleuth 链路追踪(一) Spring Cloud 系列之 Sleuth 链路追踪(二) 本篇文章讲解 Sleuth 如何使用 Elasticsearch、Logstash、Kibana 分析追踪数据。 1|0使
阅读全文
摘要:本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Sleuth 链路追踪(一) 本篇文章讲解 Sleuth 基于 Zipkin 存储链路追踪数据至 MySQL,Elasticsearch 以及使用 MQ 存储链路追踪数据至 MySQL,Elasticsearch。 1
阅读全文
摘要:随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,
阅读全文
摘要:一:背景 1. 讲故事 我们有一家top级的淘品牌店铺,为了后续的加速计算,在程序启动的时候灌入她家的核心数据到内存中,灌入完成后内存高达100G,虽然云上的机器内存有256G,然被这么划掉一半看着还是有一点心疼的,可怜那些被挤压的小啰啰程序😄😄😄,本以为是那些List,HashSet,Dic
阅读全文
摘要:前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天简单介绍下如何监控Nginx的状态。 其实要监控Nginx的状态非常简单,它内建了一个状态页,只需修改
阅读全文
摘要:前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要说的是如何配置Nginx的日志。 日志格式 我们观察Nginx配置文件的server段,可以看到如下
阅读全文
摘要:前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要说的是如何配置nginx和tomcat实现反向代理。 需要说明的是:由于本文章是nginx系列文章中
阅读全文
摘要:前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要说的是如何配置nginx和tomcat实现反向代理。 需要说明的是:由于本文章是nginx系列文章中
阅读全文
摘要:前面讲了如何安装配置Nginx,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要说的是Nginx如何基于域名配置虚拟主机。 需要说明的是:由于本文章是nginx系列文章中的一篇,文章里
阅读全文
摘要:前面讲了如何配置基于IP的虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天就来讲讲Nginx如何基于端口的虚拟主机。 需要说明的是:由于本文章是nginx系列文章中的一篇,文章
阅读全文
摘要:前面讲了如何安装配置Nginx,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要说的是Nginx如何配置虚拟主机。 需要说明的是:由于本文章是nginx系列文章中的一篇,文章里面很多其
阅读全文
摘要:以前写过一些Nginx的文章,但都是用到什么说什么,没有一个完整系统的总结。趁最近有时间,打算将Nginx相关的内容重新整理一下。nginx系列文章地址如下:https://www.cnblogs.com/zhangweizhong/category/1529997.html 简介 1. 什么是Ng
阅读全文
摘要:前段时间,搞Nginx+IIS的负载均衡,想了解的朋友,可以看这篇文章:《nginx 和 IIS 实现负载均衡》,然后也就顺便研究了Nginx + IIS 实现动静分离。所以,一起总结出来,与大家共同探讨。 动静分离,说白了,就是将网站静态资源(HTML,JavaScript,CSS,img等文件)
阅读全文
摘要:Nginx的作用和优点,这里不必多说,今天主要是nginx负载均衡实验,把做的步骤记录下来,作为一个学习笔记吧,也可以给大家做下参考。 1.Nginx安装 1.下载地址:http://nginx.org/en/download.html 2.解压到后在window的cmd窗口,输入如下图所示的命令,
阅读全文
摘要:以前总结Redis 的一些基本的安装和使用,由于是测试方便,直接用的window 版的reids,并没有讲redis在linux下的安装。今天就补一下Linux环境如何安装redis。 大家可以这这里查看Redis 系列文章:https://www.cnblogs.com/zhangweizhong
阅读全文
摘要:以前总结Redis 的一些基本的安装和使用,大家可以这这里查看Redis 系列文章:https://www.cnblogs.com/zhangweizhong/category/771056.html。 今天补一下redis集群功能吧。需要注意,Redis 3.0 以后才有集群的功能,下载Redis
阅读全文
摘要:redis 服务器端命令 redis 127.0.0.1:6380> time ,显示服务器时间 , 时间戳(秒), 微秒数 1) "1375270361" 2) "504511" redis 127.0.0.1:6380> dbsize // 当前数据库的key的数量 (integer) 2 re
阅读全文
摘要:前面已经写了一些关于redis 的介绍,redis 的基本功能和用法,基本上都说了,有问题的可以去看看 http://www.cnblogs.com/zhangweizhong/category/771056.html。今天把redis 配置文件里面,用到的一些常用的配置项总结总结。 ==基本配置
阅读全文
摘要:前面讲过一些redis 缓存的使用和数据持久化。感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhong/category/771056.html 。今天总结总结缓存使用过程中遇到的一些常见的问题。比如缓存雪崩,缓存穿透,缓存预热等等。 缓存雪崩 缓存
阅读全文
摘要:前面已经总结了Redis 的安装和使用,大家可以这这里查看Redis 系列文章:https://www.cnblogs.com/zhangweizhong/category/771056.html 今天讲下Redis 的持久化。 redis跟memcached类似,都是内存数据库,不过redis支持
阅读全文
摘要:接着上一篇,前面两篇我总结了《Redis总结(一)Redis安装》和《Redis总结(二)C#中如何使用redis》 所以这一篇,会讲讲Redis 的主从复制以及C#中如何调用。 Redis跟MySQL一样,拥有非常强大的主从复制功能,而且还支持一个master可以拥有多个slave,而一个slav
阅读全文
摘要:上一篇讲述了安装redis《Redis总结(一)Redis安装》,同时也大致介绍了redis的优势和应用场景。本篇着重讲解.NET中如何使用redis和C#。 Redis官网提供了很多开源的C#客户端。例如,Nhiredis ,ServiceStack.Redis ,StackExchange.Re
阅读全文
摘要:最近项目中需要使用Redis,刚好这两天有时间,便总结记录一下Redis的安装,以及如何在.NET中使用Redis。 Redis是一个用的比较广泛的Key/Value的内存数据库。目前新浪微博、Github、StackOverflow 等大型应用中都用其作为缓存,和Memcached类似,但是支持数
阅读全文
摘要:前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用。不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/category/855479.html 本来一直想写一个介绍RabbitMQ高可用的集群的文章。不过,
阅读全文
摘要:前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用。不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/category/855479.html 不过,最近有朋友问我,RabbitMQ RPC 是干嘛的,有什
阅读全文
摘要:上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ。今天说些理论的东西,Exchange 的几种模式。 AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列
阅读全文
摘要:上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实际开发的过程中,怎么调用 用RabbitMQ。 一、客户端 RabbitMQ.Client 是rab
阅读全文
摘要:上一篇,简单介绍了RabbitMQ的情况还有一些相关的概念,这一篇,会讲讲 RabbitMQ安装与配置。 1.安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitMQ之前要先安装Erlang。 erlang:http://www.erlang.org/downlo
阅读全文
摘要:1. 介绍 RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间件之一。 RabbitMQ的官网:http://www.rabbit
阅读全文
摘要:前面介绍了Spring Boot 中的整合Mybatis并实现增删改查。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 Spring Boot 整合完Mybatis,有个特别重要的功能之前忘记讲
阅读全文
摘要:前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务和定时任务。不清楚的朋友可以看看之前的文章:《Spring Boot 入门系列文章》 接下来主要讲解如何在SpringBoot应用中使用统一异常处理。如何实现对异常数据与正常的业务数据统一以json形式返回
阅读全文
摘要:前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 接下来开始讲 Spring Boot的重要功能:整
阅读全文
摘要:前面介绍了Spring Boot 如何整合定时任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天主要讲解Spring Boot中的另外一个任务:异步任务。所谓异步任务,其实就是异步执行程
阅读全文
摘要:前面介绍了Spring Boot 中的整合Redis缓存已经如何实现数据缓存功能。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天主要讲解Springboot整合定时任务。在SpringMv
阅读全文
摘要:前面介绍了Spring Boot 中的整合Mybatis并实现增删改查,。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天主要讲解Springboot整合Redis。Redis是目前使用最多
阅读全文
摘要:前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天主要讲解Springbo
阅读全文
摘要:前面介绍了Spring Boot 中的整合Thymeleaf 。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天我们主要来看看 Thymeleaf 的常用标签和用法!其他详细的内容,大家可以
阅读全文
摘要:前面介绍了Spring Boot的优点,然后介绍了如何快速创建Spring Boot 项目。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天我们主要来看看 Thymeleaf 在 Sprin
阅读全文
摘要:前面介绍了Spring的@Controller和@RestController控制器, 他们是如何响应客户端请求,如何返回json数据。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天来说一
阅读全文
摘要:前面介绍了Spring Boot的优点,然后介绍了如何快速创建Spring Boot 项目。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天来说一说Spring的@Controller和@R
阅读全文
摘要:这段时间也没什么事情,所以就重新学习整理了Spring Boot的相关内容。今天开始整理更新Spring Boot学习笔记,感兴趣的朋友可以关注我的博客:https://www.cnblogs.com/zhangweizhong/category/1657780.html,希望能对你有所帮助。 注意
阅读全文
摘要:最近在调试 前后端分离的请求测试,遇到了一个405错误, 无法接受,于是开始了人肉搜索405。 最后 还是HTTP头部信息里的Accept:application/json 这个Accept 导致的, 后端设置了只允许application/json 这种形式,so前端模拟请求的时候,你也要和后端沟
阅读全文
摘要:原文地址:https://zhuanlan.zhihu.com/p/34426768 一、概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随
阅读全文
摘要:一、JVM内存结构 1.1、栈(JVM Stacks) 存放局部变量(定义在方法中的变量和定义在方法参数列表上的变量)、对象引用(reference类型,它不等同于对象本身,根据不同的虚拟机实现,它可能是一个指向对象起始地址的引用指针,也可能指向一个代表对象的句柄或者其他与此对象相关的位置)、方法的
阅读全文
摘要:原文链接:https://zhuanlan.zhihu.com/p/34426768 一、类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。 类的加载的最终
阅读全文
摘要:五一假期大雄看了一本《java并发编程艺术》,了解了线程池的基本工作流程,竟然发现线程池工作原理和互联网公司运作模式十分相似。 线程池处理流程 原理解析 互联网公司与线程池的关系 这里用一个比喻来描述一下线程池,中间有一些名词你可能不是太清楚,后边源码解析的部分会讲到。 你可以把线程池看作是一个研发
阅读全文
摘要:单例模式是什么? 对象在全局只能有一个实例 为什么要使用单例模式? 静态方法和非静态方法的区别? 静态的方法: 能够在它的类的任何对象创建之前被访问,而不必引用任何对象, 并且static修饰的属性和方法在整个类中只有一份,可共享,放在方法区中。 非静态的方法: 在创建实例对象时,因为属性的值对于每
阅读全文
摘要:实现创建者与调用者的分离 以化妆品为例: 生产者: 一个接口,提供了生产化妆品的方法 public interface Cosmetics { void productCosmetics();} 生产的对象: 口红 public class Lipstick implements Cosmetics
阅读全文
摘要:说起来,可能有些小伙伴会不相信,我是第一次用 Redis,真的。因为公司小,业务量小,Redis 根本派不上用场。不过,最近打算把系统升级一下,顺带把当下时髦的技术入个门,“与时俱进”嘛,虽然进的有“一点点”晚(注意双引号)。 作为一名富有责任心的技术博主,我觉得有必要把我入门 Redis 的过程分
阅读全文
摘要:how me the code and talk to me,做的出来更要说的明白本文源码,请点击learnSpringboot我是布尔bl,你的支持是我分享的动力! 一、 引入# 有开发经验的都知道,几乎每种技术都有一个吉祥物代表。那么Docker的吉祥物是怎么样的呢? 下图我们可以看到Docke
阅读全文
摘要:引言 好久没写分布式系列的文章了,最近刚好有个朋友给我留言,想看这方面的知识。其实这方面的知识,网上各种技术峰会的资料一抓一大把。博主也是凑合着写写。感觉自己也写不出什么新意,大家也凑合看看。 日志系统的必要性? 我15年实习的时候那会,给某国企做开发。不怕大家笑话,生产上就两台机器。那会定位生产问
阅读全文
摘要:引言 本文翻译自博客http://ksat.me/a-plain-english-introduction-to-cap-theorem/博主觉得这个故事讲的生动活泼,因此翻译来给大家分享,顺便加上了点自己矫揉造作的见解,希望大家有所收获!CAP理论大概说一下就是,一致性(Consistency)、
阅读全文
摘要:引言 大家在面试中一定碰到过 说说事务的隔离级别吧? 老实说,事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!因为他们对可重复读(Repeatable Read)和串行化(serializable)的解析实在是看的我一头雾水!再
阅读全文
摘要:引言 回想四年前,我在学习mysql的索引这块的时候,老师在讲索引的时候,是像下面这么说的 索引就像一本书的目录。而当用户通过索引查找数据时,就好比用户通过目录查询某章节的某个知识点。这样就帮助用户有效地提高了查找速度。所以,使用索引可以有效地提高数据库系统的整体性能。 嗯,这么说其实也对。但是呢,
阅读全文
摘要:引言 其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条 **【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 ** 但是呢,询问他们原因,大多是这么回答的 每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试
阅读全文
摘要:引言 大家在开发中,还有很多童鞋在写查询语句的时候,习惯写下面这种不规范sql select * from table 而不写成下面的这种规范方式 select col1,col2,...,coln from table 我也知道,这些童鞋是图方便,毕竟再敲一堆的列名,嫌麻烦!你们上班可以问问自己的
阅读全文
摘要:引言 大家在面试中有没遇到面试官问你下面六句Sql的区别呢 select * from table where id = ? select * from table where id < ? select * from table where id = ? lock in share mode se
阅读全文
摘要:引言 我们先来讲一个段子 面试官:“有并发的经验没?”应聘者:“有一点。”面试官:“那你们为了处理并发,做了哪些优化?”应聘者:“前后端分离啊,限流啊,分库分表啊。。”面试官:"谈谈分库分表吧?"应聘者:“bala。bala。bala。。”面试官心理活动:这个仁兄讲的怎么这么像网上的博客抄的,容我再
阅读全文
摘要:前言 这个话题已经是老生常谈了,之所以又被我拎出来,是因为博主隔壁的一个童鞋最近写了一篇叫做《ThreadLocal内存泄露》的文章,我就不上链接了,因为写的实在是。。(省略一万字)重点是写完后,还被我问懵了。出于人道主义关怀,博主很不要脸的再写一篇。 正文 定义 首先,我们要先谈一下定义,因为一堆
阅读全文
摘要:小漫画 来,先来看小漫画陶冶一下情操OK,这里就说了。假设,你有一个表erp,如果你直接进行下面的命令 drop table erp 这个时候所有的mysql的相关进程都会停止,直到drop结束,mysql才会恢复执行。出现这个情况的原因就是因为,在drop table的时候,innodb维护了一个
阅读全文
摘要:最近忙着搬家,所以停更了一段时间,今天给大家补上。 引言 我们先来讲一个段子 面试官:“有并发的经验没?”应聘者:“有一点。”面试官:“那你们为了处理并发,做了哪些优化?”应聘者:“前后端分离啊,限流啊,分库分表啊。。”面试官:"谈谈分库分表吧?"应聘者:“bala。bala。bala。。”面试官心
阅读全文
摘要:引言 大家在面试的时候,是否遭遇过,面试官询问 你们是如何进行数据库优化的? 那这个问题应该怎么答呢?其实写这个题材的原因是我这几天看到各公众号转的一篇数据库调优的知识(不上链接了),我就稍微翻了几下,上面动不动就来说要对数据库进行水平拆分,我就想反问各位读者,你们几个人经历过水平拆分?现在很多文章
阅读全文
摘要:引言 什么是网关?为什么需要使用网关? 如图所示,在不使用网关的情况下,我们的服务是直接暴露给服务调用方。当调用方增多,势必需要添加定制化访问权限、校验等逻辑。当添加API网关后,再第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制。本文所实现的网关源码抄袭了 Oh,不对
阅读全文
摘要:引言 该文是对《分布式之数据库和缓存双写一致性方案解析》,一文的补充。博主在该文中,提到了这么一句话 应该没人问我,为什么没有先更新缓存,再更新数据库这种策略。 博主当时觉得,这种更新策略比较简单,没必要多做说明,结果太多人留言给博主,问我为什么不说这套方案?好吧,博主先跟大家道个歉,是我的问题。所
阅读全文
摘要:正文 博主本来觉得,《分布式之数据库和缓存双写一致性方案解析》,一文已经十分清晰。然而这一两天,有人在微信上私聊我,觉得应该要采用 先删缓存,再更新数据库,再删缓存 这一方案作为缓存更新策略,而不是先更新数据库,再删缓存。并且搬出了两篇大佬的文章,《Cache Aside Pattern》,《缓存与
阅读全文
摘要:引言 redis大家在项目中经常会使用到。官网也提供了多语言的客户端供大家操作redis,如下图所示但是,大家有思考过,这些语言操作redis背后的原理么?其实,某些大神会说 只要按照redis的协议,发送指定数据给redis,监听返回值即可。 确实,本质原理就是如上面那句话所说。博主也是以这种思路
阅读全文
摘要:引言 为什么写这篇文章? 博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚印,不要投机取巧。考虑到绝大部分写业务的程序员,在实际开发中使用redis的时候,只会s
阅读全文
摘要:看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还
阅读全文
摘要:引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,
阅读全文