方案
文章平均质量分 60
湯神码
这个作者很懒,什么都没留下…
展开
-
Java-自定义占位符替换工具类
Java-自定义占位符替换工具类原创 2022-12-09 18:15:52 · 2565 阅读 · 2 评论 -
分布式全链路跟踪系统-skywalking
什么是链路追踪本节视频【视频】Spring Cloud Alibaba-SkyWalking-分布式链路追踪微服务架构是通过业务来划分服务的,使用 REST 调用。对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。随着服务的越来越多,对调用链的分析会越来越复杂。它们之间的调用关系也许如下:面对以上情况,我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,转载 2020-06-09 10:51:34 · 1067 阅读 · 1 评论 -
Java-多Excel压缩zip文件导出
一、需求目标通过poi生成多个Excel文件需要把已生成的Excel文件压缩成ZIP文件支持客户客户端下载二、解决方案单线程生成Excel,单线程压缩文件多线程生成Excel,单线程压缩文件三、代码实例1、Excel工具类import java.awt.Color;import org.apache.poi.hssf.usermodel.HSSFCellStyle;...原创 2020-04-21 17:11:38 · 2179 阅读 · 1 评论 -
5分钟完成 Nginx 直播服务部署(直播 + 分流 + 画面水印)
前言最近帮朋友的公司部署了一套分流+水印的直播系统顺手打包成docker镜像,方便大家需要用到的时候开箱即用,不需要百度一些零碎的文章 也可做简单的直播服务,只需调整配置文件便可达到你的需求.需求:将直播流分流到两个云厂商的直播云,一个有水印,一个无水印。使用hls播放朋友需求的拓扑示意图:当前拓扑示意图(阿某云和腾讯云不方便放出推流和拉流地址,有兴趣的同学可以去申请玩一下)do...转载 2020-05-06 14:13:34 · 532 阅读 · 0 评论 -
Nginx+keepalived 实现高可用,防盗链及动静分离配置详解
一、Nginx Rewrite 规则1. Nginx rewrite规则Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好,提高收录量及排名等。语法:rewrite [flag]关键字 || 正则 || 替代内容 || flag标记Rewrite规则的flag标记主要有以下几种:last :相当于Apache里...转载 2020-05-06 13:58:27 · 287 阅读 · 0 评论 -
设计一个百万级的消息推送系统
一、前言先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互。最主要的工作就是要有一个系统来支持设备的接入、向设备推送消息;同时还得满足大量设备接入的需求。所以本次分享的内容不但可以满足物联网领域同时还支持以下场景:基于 WEB 的聊天系统(点对点、群聊)。WEB 应用中需求服务端推送的场景。基于 SDK 的消息推送平台。二、技术选型要满足大...转载 2020-05-06 10:32:45 · 357 阅读 · 0 评论 -
SpringBoot项目基础:统一校验,统一异常,统一响应,统一日志
一、前言一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范! 本文就一步一步演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了...转载 2020-04-27 16:14:56 · 1158 阅读 · 0 评论 -
SpringBoot项目基础:统一结果,统一校验,统一异常,统一日志
一、统一结果返回目前的前后端开发大部分数据的传输格式都是json,因此定义一个统一规范的数据格式有利于前后端的交互与UI的展示。1、统一结果的一般形式是否响应成功;响应状态码;状态码描述;响应数据其他标识符2、结果类枚举前三者可定义结果枚举,如:success,code,message@Getterpublic enum ResultCodeEnum { ...转载 2020-04-27 16:12:07 · 815 阅读 · 0 评论 -
一口气说出9种分布式ID生成方式,面试官有点懵了
一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条...转载 2020-04-27 11:09:19 · 313 阅读 · 0 评论 -
史上最便捷搭建RocketMQ服务器的方法
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。至于有多简单呢,在本机已有Docker环境的情况下只需要三步即可。从github上面拉取项目(https://github.com/modouxiansheng/about-docker)修改broker.conf中的brokerIP1参数,修改为本机IP进...转载 2020-04-26 14:00:40 · 478 阅读 · 0 评论 -
Spring Boot 中,如何干掉 if else
一、需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。订单实体:service接口:1、传统实现根据订单类型写一堆的if else:2、策略模式实现利用策略模式,只需要两行即可实现业务逻辑:可以看到上面的方法中注入了HandlerContext,这是一个处理器上下文,用来保存不同的业务处理器,具体在下文会讲解。我...转载 2020-04-23 17:13:04 · 124 阅读 · 0 评论 -
秒杀系统的设计思考
一、前言秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是本文讨论的话题。二、整体思考1 秒杀存在的问题对于一个日常平稳的业务系统,如果直接开...转载 2020-04-23 11:07:59 · 470 阅读 · 0 评论 -
如何画出优秀的架构图?
**导读:**技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工作效率提升、产品性能优化和用户体验改善等经验方面的分享,以提高我们的专业能力。本文作者阿里巴巴技术专家三画,分享了自己和团队在画好架构图方面的理念和经验,首发于阿里内部技术分享平台,梓敬、鹏升和余乐对此文亦有贡献。作 者:三画来 源:阿里巴巴云原生原文链接:...转载 2020-04-23 09:39:41 · 380 阅读 · 0 评论 -
软件架构C4模型简介
一、为什么说我们需要软件架构图?关键要点通过创建和维护架构图来提供准确且有价值的内容并非易事。大多数情况下,我们要么创建了太多的文档,要么太少,或者不相关,因为我们没能准确地定位文档的受益人及其实际的需求。我们常犯的最大的一个错误是为系统中具有高波动性的部分创建详细的架构图。除非是自动生成的,否则手动维护它们对我们来说就是一种负担。在实践中,大多数利益相关者对详细架构图不感兴趣,但会对一...转载 2020-04-23 09:40:31 · 3024 阅读 · 0 评论 -
解决事务处理不当内存泄漏全过程
一、情景项目上线了一个接口,先灰度一台机器观察调用情况;接口不断的调用,过了一段时间,发现机器上的接口调用开始报 OOM异常 !当天就是上线deadline了,刺激。。二、发现问题第一步,使用 jps命令获取出问题jvm进程的进程ID使用 jps-l-m获取到当前jvm进程的pid,通过上述命令获取到了服务的进程号:427726 (此处假设为这个)jps命令jps(JVM Proc...转载 2020-04-21 15:40:18 · 786 阅读 · 0 评论 -
多线程调优 - 之ZIP文件解析处理
一、需求背景接到需求是要对商家提供的数据文件解析为对应我们业务需要的对象,由于商家给的文件是zip文件,大小在10-100M直接,如果用单个线程处理解析势必会影响处理速度,以下是我们解析时候写的代码。大概思路是这个样子:1、技术方案一解析zip文件:由于zip文件中有对应自己要解析的流文件,解读流中指定的文件,获得对应的文件流。单个线程测试读取流数据感觉还可以接受,处理时间大...转载 2020-04-21 11:36:15 · 631 阅读 · 0 评论 -
Java缓存知识汇总
一、什么是缓存【1】缓存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存汇总查询数据,有则直接执行,不存在时从内存中获取。由于缓存的数据比内存快的多,所以缓存的作用就是帮助硬件更快的运行。【2】缓存往往使用的是RAM(断电既掉的非永久存储),所以在用完后还是会把文件送到硬盘等存储器中永久存储。电脑中最大缓存就是内存条,硬盘上也有16M或者32M的缓存。【3】高速...转载 2020-04-17 23:31:09 · 927 阅读 · 0 评论 -
MDC实现日志打印请求唯一标识
在每次请求中打出的每条日志中添加统一的请求唯一标识。通过搜索日志唯一标识,这样就可以非常高效精准排查问题。例如:2018-12-21 10:21:26.329 [http-nio-8080-exec-2] [my-server-logtag] [] INFO org.springframework.web.servlet.DispatcherServlet - FrameworkServ...原创 2020-04-15 09:24:56 · 2418 阅读 · 1 评论 -
SpringBoot+Redis解决海量重复提交问题
作者|慕容千语https://www.jianshu.com/p/c806003a8530一、前言在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:1、数据库建立唯一性索引,可以保证最终插入数据库...转载 2020-04-14 17:39:08 · 715 阅读 · 0 评论