
架构之路
文章平均质量分 79
Java进阶架构师必备知识技能图谱、Java开发者进阶必备知识技能、开发所用三方组件、开源框架使用示例、开发、运维、测试详细技能学习。
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
霸道流氓气质
每一个优秀的人,都有一段沉默的时光,(项目合作请留言)是那段时光,不抱怨不诉苦,最后渡过了这段感动自己的日子。
展开
-
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
参考以上瓦片png图片使用nginx代理的过程,设想如下场景代码中请求的静态资源图片url的ip是固定写死的。那么我们的Vue项目在上线部署后,如果当前客户端与图片所在服务器网络不通则无法请求到该照片。但是如果我们的业务服务器与静态资源服务器是网络互通,那么在业务服务器上使用ngin代理静态资源,则与业务服务器网络通的电脑均可访问。又或者有网络环境隔离,业务服务器有映射的两个环境下的ip,如下图所示。原创 2024-08-21 15:05:23 · 694 阅读 · 0 评论 -
DockerCompose编排Nginx实现配置UDP协议负载均衡带Java代码测试示例
上面实现基于http协议和TCP协议的负载均衡的配置和测试用例。如果是UDP协议的负载均衡,nginx可这样配置。原创 2024-08-14 08:57:19 · 176 阅读 · 0 评论 -
DockerCompose编排Nginx+Mysql并实现Nginx配置Mysql(TCP协议)负载均衡
以上实现Nginx的http协议的负载均衡,如果使用Nginx实现TCP协议的负载均衡比如配置Mysql的连接,可使用如下方式。首先搭建两台mysql和一台nginx的测试环境。这里使用Docker Compose搭建。原创 2024-08-13 09:07:14 · 929 阅读 · 0 评论 -
Apache压测工具ab(Apache Bench)工具的下载安装和使用示例
上面讲压测工具Jmeter的使用,下面介绍另外一个ab(Apache Bench)压测工具的使用。原创 2024-07-22 15:14:55 · 1526 阅读 · 0 评论 -
Windows上实现jdk、Mysql(含数据)整体环境和配置以及数据迁移复用(Bat中实现jdk、mysql环境变量配置、修改my.ini文件路径以及安装mysql服务)
前后端分离的系统,需要部署在windows服务器上,若后期需要部署的机器较多,则每台机器都需要安装jdk、配置jdk环境变量、安装mysql、配置mysql环境变量、导入mysql的表数据,如果使用nginx代理前端dist包,还需要根据每台服务器的实际存放路径修改配置文件中的绝对路径地址。如何能实现在一台windows电脑上部署成功后,其它机器可以快速复用。比如jdk不需要人为点击exe程序包进行安装,可以直接迁移并可通过运行bat的方式将jdk的环境变量配置好。原创 2024-07-04 10:19:43 · 969 阅读 · 0 评论 -
Bat中实现git和Node环境变量检测,拉取git代码并打包vue项目,读取子目录差异性js文件并修改文件内容并根据选择项调用7zip打包成tar.gz包(获取时间戳截取命名)
上面实现打包Vue项目并选择不同的差异性js文件并修改配置js文件中的version时间戳内容,并将其打包成tar.gz包的过程。如果使用场景中不需要jenkins,只需要在本机windows电脑上实现git拉取代码-npm打包dist包-扫描diff目录下不同config.js配置文件选项并根据交互输入的选项实现复制对应的js文件并修改config.js文件中时间戳内容-打包成tar.gz包的过程。关于使用bat打包后台maven包的过程实现可参考如下。原创 2024-06-25 11:18:02 · 915 阅读 · 0 评论 -
Bat中实现git和Maven环境变量检测,拉取git代码并打包maven项目,读取子目录差异性yml文件配置并根据选择项调用7zip打包成tar.gz包(获取时间戳截取命名)
上面实现打包后台jar包并选择不同的差异性yml文件打包成tar.gz包的过程。如果使用场景中不需要jenkins,只需要在本机windows电脑上实现git拉取代码-mvn打包jar包-扫描diff目录下不同yml配置文件选项并根据交互输入的选项实现复制对应的yml文件-打包成tar.gz包的过程。原创 2024-06-20 09:40:48 · 871 阅读 · 0 评论 -
DockerDesktop中启动jenkins容器时提示:Can not write to /var/jenkins_home/copy_reference_file.log问题解决
Windows10(家庭版)中DockerDesktop(docker)的配置、安装、修改镜像源、使用:Windows10(家庭版)中DockerDesktop(docker)的配置、安装、修改镜像源、使用-优快云博客按照以上教程搭建之后想要运行jenkins容器,所以执行如下指令然后发现容器起不来,通过查看日志可知Can not write to /var/jenkins_home/copy_reference_filc.log. Wrong volume permissions?注:博客:霸道原创 2024-05-29 20:00:00 · 851 阅读 · 0 评论 -
开源流媒体服务器ZLMediaKit在Windows上编译过程详解(附编译后版本下载)
以上讲了ZLMediaKit的具体使用场景,文章中使用的windows的版本不是最新版,比如在flv播放时,旧版的与新版有说明。当然这里不建议在Windows上进行编译使用,如果必须在Windows上使用的话,可以参考官方说明按如下进行快速编译。原创 2024-05-16 14:43:40 · 2345 阅读 · 0 评论 -
设计模式-状态模式在Java中的使用示例-信用卡业务系统
在软件系统中,有些对象也像水一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同的状态下也将具有不同的行为。为了更好地对这些具有多种状态的对象进行设计,我们可以使用一种被称之为状态模式的设计模式。状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化,原创 2024-04-24 21:30:00 · 1413 阅读 · 0 评论 -
设计模式-访问者模式在Java中使用示例-对OA系统中员工实现不同部门访问
访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。我们可以将处方单看成一个药品信息的集合,里面包含了一种或多种不同类型的药品信息,不同类型的工作人员(如划价人员和药房工作人员)在操作同一个药品信息集合时将提供不同的处理方式,而且可能还会增加新类型的工作人员来操作处方单。原创 2024-04-01 22:50:13 · 1190 阅读 · 0 评论 -
设计模式-装饰者模式在Java中使用实例-打印发票装饰抬头和脚注
上面装饰器的调用示例如下下面记录一个它的变形,以软件设计师2016年下半年试题六为例某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。原创 2024-03-26 21:00:00 · 1312 阅读 · 0 评论 -
SpringBoot+MybatisPlus+Mysql实现批量插入万级数据多种方式与耗时对比
基于以上基础,测试批量将万级以上数据插入到mysql数据中的多种方式。原创 2024-02-21 21:00:00 · 2478 阅读 · 0 评论 -
若依前后端分离版如何集成的mybatis以及修改集成mybatisplus实现Mybatis增强
在上面搭建若依前后端分离版之后,全局搜索集成Mybatis的依赖时,并没有搜索到类似这样的依赖,但是查找mybatis相关依赖时在pagehelper-spring-boot-starter中发现有引入的相关依赖而pagehelper-spring-boot-starter是在ruoyi-common中引入的pagehelper分页插件,关于pagehelper的分页插件的使用参考上面文章。而在若依分页方法startPage()中也可验证。原创 2024-02-21 20:00:00 · 1998 阅读 · 0 评论 -
FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错
上面拉取rtsp视频里地址一直是海康协议,如果是大华摄像头。大华摄像头RTSP视频流地址格式:username: 用户名。例如admin。password: 密码。例如admin123。ip: 为设备IP。例如 192.168.1.101。port: 端口号默认为554,若为默认可不填写。channel: 通道号,起始为1。例如通道2,则为channel=2。subtype:码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。原创 2024-01-31 21:00:00 · 1906 阅读 · 0 评论 -
若依前后端分离版关联字典值查询数据工具类使用
上面通过关联表的方式实现查询字典值,若依本身提供了查询redis中缓存的字典值的相关方法。可不修改sql的方式去调用工具类方法实现。原创 2024-01-05 20:00:00 · 1271 阅读 · 0 评论 -
SpringBoot+线程池实现高频调用http接口并多线程解析json数据
在上面的基础上,需要使用定时任务高频调用典第三方http接口并解析返回的json数据为java的list,需要对list的每个数据进行处理,这里需要用到自定义线程池对每个java对象分别进行处理。原创 2023-12-08 11:37:11 · 1288 阅读 · 0 评论 -
FFmpeg在Centos服务器上离线安装(包含所需依赖)并实现拉取rtsp流与推送至rtmp服务器
上面讲了在windows上ffmpeg的应用示例,如果是在centos服务器上,且服务器无法访问外网,需要离线安装FFmpeg以及所需的依赖,可以参考如下流程。原创 2023-12-04 17:00:48 · 2550 阅读 · 0 评论 -
Maven本地配置获取nexus私服的依赖
在上面讲的是在需要拉取私服依赖的项目中的pom中配置repository的方式去获取依赖。如果需要在本地maven中作全局配置,可以通过添加mirror的方式实现。原创 2023-10-31 15:54:41 · 1586 阅读 · 0 评论 -
设计模式-观察者模式在Java中的使用示例-环境监测系统
上面讲的观察者模式的一个示例,下面记录摘自软件设计师案例分析的一个示例-环境监测系统。观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新Observer模式适用于1、当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这两者封装在独立对象中以使它们可以各自单独地改变和复用2、当对一个对象的改变需要同时改变其他对象,而不知道具体由多少对象有待改变时。原创 2023-10-11 16:15:14 · 874 阅读 · 0 评论 -
ZLMediaKit拉取海康威视摄像头RTSP视频流时拉流失败
按照以上教程拉取海康威视rtsp流时发现拉流失败。然后使用VLC和ffmpeg测试时同样无法拉流。原创 2023-09-15 16:44:08 · 4135 阅读 · 0 评论 -
ZLMediaKit在Windows上启动时:计算机中丢失MSVCR110.dll,以及rtmp推流后无法转换为flv视频流解决
按照以上教程启动MediaServer.exe时提示:无法启动此程序,因为计算机中缺失MSVCR110.dll,尝试重新安装程序以解决此问题。上面在WinServer系统中,所以可能会缺失某些dll文件。去网上搜搜该dll文件下载,并将其放在C:\Windows\System32目录下。原创 2023-09-04 14:23:35 · 1633 阅读 · 0 评论 -
Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放
上面讲了ZLMediaKit的使用流程。下面介绍另一种开源流媒体服务器。原创 2023-08-28 13:19:08 · 2538 阅读 · 1 评论 -
ZLMediaKit+SpringBoot+Vue+Geoserver实现拉取摄像头rtsp流并在web端播放
结合以上流程,需要实现对摄像头名称、在地图上位置的增删改查以及摄像头的预览功能。注意这里的摄像头只支持H264编码格式的拉流和播放。原创 2023-08-24 14:03:59 · 2745 阅读 · 1 评论 -
ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12
开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_srs按需拉流_霸道流氓气质的博客-优快云博客按照上面流程进行拉取摄像头的rtsp流并转流使用flv.js播放时提示:DemuxException: type - CodeUnsupported,info - Flv: Unsupported c原创 2023-08-23 16:45:58 · 5788 阅读 · 2 评论 -
Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流
上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。如果在其它业务场景下需要本地的视频文件模拟海康的rtsp流协议格式进行推流。原创 2023-08-16 13:28:04 · 3623 阅读 · 1 评论 -
设计模式-迭代器模式在Java中使用示例
为开发一套销售管理系统,在对该系统进行分析和设计时,发现经常需要对系统中的商品数据、客户数据等进行遍历,为了复用这些遍历代码,开发人员设计了一个抽象的数据集合类AbstractObjectList,而将存储商品和客户等数据的类作为其子类AbstractObjectList类的子类ProductList和CustomerList分别用于存储商品数据和客户数据。在软件开发中,我们经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责:一是存储数据;二是遍历数据。原创 2023-08-04 14:55:30 · 1484 阅读 · 0 评论 -
设计模式-备忘录模式在Java中使用示例-象棋悔棋
备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销(Undo)操作,其中就使用了备忘录模式。原创 2023-07-29 10:23:38 · 1331 阅读 · 1 评论 -
设计模式-中介者模式在Java中使用示例-客户信息管理
如果在一个系统中对象之间的联系呈现为网状结构。对象之间存在大量的多对多联系,将导致系统非常复杂,这些对象既会影响别的对象,也会被别的对象所影响,这些对象称为同事对象,它们之间通过彼此的相互作用实现系统的行为。在网状结构中,几乎每个对象都需要与其他对象发生相互作用,而这种相互作用表现为一个对象与另外一个对象的直接耦合,这将导致一个过度耦合的系统。中介者模式可以使对象之间的关系数量急剧减少,通过引入中介者对象,可以将系统的网状结构变成以中介者为中心的星形结构。原创 2023-07-29 10:13:02 · 744 阅读 · 0 评论 -
设计模式-命令模式在Java中的使用示例-桌面程序自定义功能键
在软件开发中,我们经常需要向某些对象发送请求(调用其中的某个或某些方法),但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,此时,我们特别希望能够以一种松耦合的方式来设计软件,使得请求发送者与请求接收者能够消除彼此之间的耦合,让对象之间的调用关系更加灵活,可以灵活地指定请求接收者以及被请求的操作。命令模式为此类问题提供了一个较为完美的解决方案。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。原创 2023-07-28 09:43:11 · 1384 阅读 · 0 评论 -
SpringBoot+Prometheus+Grafana实现系统可视化监控
基于以上Actuator实现系统监控,还可采用如下方案。原创 2023-07-26 09:30:58 · 1535 阅读 · 0 评论 -
设计模式-职责链模式在Java中使用示例-采购审批系统
采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会讨论决定。如果不采购职责链模式可能会这样实现存在问题(1)PurchaseRequestHandler类较为庞大,各个级别的审批方法都集中在一个类中,违反了“单一职责原则”,测试和维护难度大。原创 2023-07-25 14:34:56 · 1157 阅读 · 0 评论 -
SpringBoot+ShardingSphere+Mybatis实现Mysql8读写分离
在上面搭建起来Mysql之间的主从复制的基础上,在SpringBoot项目中实现Mysql数据的读写分离,即写入操作一个库,读取操作一个库。原创 2023-07-20 16:13:04 · 942 阅读 · 0 评论 -
设计模式-享元模式在Java中的使用示例-围棋软件
当一个软件系统在运行时产生的对象数量太多,将导致运行代价过高,带来系统性能下降等问题。例如在一个文本字符串中存在很多重复的字符,如果每一个字符都用一个单独的对象来表示,将会占用较多的内存空间,那么我们如何去避免系统中出现大量相同或相似的对象,同时又不影响客户端程序。通过面向对象的方式对这些对象进行操作?享元模式正为解决这一类问题而诞生。享元模式通过共享技术实现相同或相似对象的重用,在逻辑上每一个出现的字符都有一个对象与之对应,然而在物理上它们却共享同一个享元对象,原创 2023-07-19 14:29:33 · 535 阅读 · 0 评论 -
设计模式-外观模式在Java中的使用示例
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。原创 2023-07-18 17:19:01 · 806 阅读 · 0 评论 -
设计模式-组合模式在Java中的使用示例-杀毒软件针对文件和文件夹进行杀毒
组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。在组合模式中引入了抽象构件类Component,它是所有容器类和叶子类的公共父类,客户端针对Component进行编程。原创 2023-07-18 11:06:19 · 941 阅读 · 0 评论 -
Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化
JMH,全称Java Microbenchmark Harness (微基准测试框架),是专门用于Java代码微基准测试的一套测试工具API,进行 fork 的次数,可用于类或者方法上。因为 JVM 的 JIT 机制的存在,如果某个函数被调用多次之后,JVM 会尝试将其编译为机器码,从而提高执行速度,方法注解,与@Setup 相对的,会在所有 benchmark 执行结束以后执行,主要用于资源的回收等。指定某项参数的多种情况,特别适合用来测试一个函数在不同的参数输入的情况下的性能,只能作用在字段上,原创 2023-07-14 14:58:29 · 501 阅读 · 0 评论 -
设计模式-桥接模式在Java中的使用示例
假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12 = 36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的对象个数仅为 3 + 12= 15,远小于36,却能实现与36支蜡笔同样的功能。如果增加一种新型号的画笔,并且也需要具有12种颜色,对应的蜡笔需增加12支,而毛笔只需增加一支。为什么会这样呢?通过分析我们可以得知:在蜡笔中,颜色和型号两个不同的变化维度(即两个不同的变化原因)融合在一起,无论是对颜色进行扩展还是对型号进行。原创 2023-07-14 09:44:15 · 803 阅读 · 0 评论 -
设计模式-建造者模式在Java中使用示例
没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,原创 2023-07-13 17:59:56 · 2436 阅读 · 0 评论 -
SpringBoot中使用Netty开发WebSocket服务-netty-websocket-spring-boot-starter开源项目使用与改造多线程群发消息
在上面的基础上,使用websocket仍有不足,比如可能出现如下问题另外如果业务场景中需要高频定时任务通过websocket给多个客户端发动消息,则短时间内需要使用多线程/自定义线程池实现群发消息功能。原创 2023-07-12 14:44:11 · 3995 阅读 · 1 评论