- 博客(82)
- 收藏
- 关注
原创 【路由交换技术】Cisco Packet Tracer基础入门教程(五)
端口聚合:不知道大家有没有注意到,我们之前的实验在交换机与交换机之间只用一条线连接,像这样通过今天的学习,我们要用两条线来连接交换机,就像这样(为了能看清端口号以及端口状态,我改变了一下角度)但是这里有一个问题,无论我们怎么等,总有一个端口(Switch4的Fa0/2)没有打开,这是为什么呢?这是因为两个交换机之间有多条冗余链路的时候,STP会将其中的几条链路关闭,只保留一条,这样可以避免二层的环路产生。STP就是生成树协议,它可以避免环路产生(具体内容及原理我们之后会讲到)。
2024-07-04 17:02:28
5702
1
原创 线程池中workQueue类型
基于数组的有界阻塞队列,特点FIFO(先进先出)。当线程池中已经存在最大数量的线程时候,再请求新的任务,这时就会将任务加入工作队列的队尾,一旦有空闲线程,就会取出队头执行任务。因为是基于数组的有界阻塞队列,所以可以避免系统资源的耗尽。那么如果出现有界队列已满,最大数量的所有线程都处于执行状态,这时又有新的任务请求,怎么办呢?这时候会采用Handler拒绝策略,对请求的任务进行处理。
2024-06-24 15:42:51
362
原创 【路由交换技术】Cisco Packet Tracer基础入门教程(四)
动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。百度百科。
2024-06-24 15:31:17
4227
1
原创 存储过程基础概念
二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。临时存储过程分为两种存储过程:一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;本地存储过程用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。
2024-05-24 13:52:55
362
原创 我的文章分类合集目录
Java开发规范、项目开发流程SpringBoot整合MyBatis实现增删改查(简单,详细)SpringBoot整合MybatisPlus(详细)为SpringBoot项目添加日志:slf4jJava自定义异常及统一处理,信息返回详细图解二叉树四种遍历(前序中序后序层次遍历)Spring Boot注解后端开发框架搭建-返回自定义异常,异常拦截处理,数据统一校验ER图介绍及实例习题IDEA自动添加注释作者版本时间等信息IDEA创建Mybatis格式XML文件一行代码实现复杂查询:Bean
2024-05-24 13:49:53
1150
原创 MySQL与ES数据同步的四种方案及实践演示
针对多数据源写入的场景,可以借助MQ实现异步的多源写入,这种情况下各个源的写入逻辑互不干扰,不会由于单个数据源写入异常或缓慢影响其他数据源的写入,虽然整体写入的吞吐量增大了,但是由于MQ消费是异步消费,所以不适合实时业务场景。不易出现数据丢失问题,主要基于MQ消息的消费保障机制,比如ES宕机或者写入失败,还能重新消费MQ消息。针对这种情况,有数据强一致性要求的,就必须双写放到事务中来处理,而一旦用上事物,则性能下降更加明显。可能出现延时问题:MQ是异步消费模型,用户写入的数据不一定可以马上看到,造成延时。
2023-09-12 17:44:09
4949
2
原创 MySQL与ES数据同步之异步调用
此处Controller充当生产者,接到请求,先执行mysql操作,然后将消息按情况通过交换机转发到不同的队列,相应的消费者收到消息后对ES进行处理。上一篇是同步调用,我们在中间加上MQ就可以实现异步调用,这种方式性能高,不易出现数据丢失问题,多源写入之间相互隔离,便于扩展更多的数据源写入。下面通过SpringBoot项目演示一下,首先本地要有MQ,我这里使用RabbitMQ。同时也会带来一些问题,首先还是代码侵入强,其次系统复杂度会增加,因为引入了消息中间件。这种方案也不是很推荐,简单了解学习一下就好。
2023-09-12 17:28:11
961
原创 MySQL与ES数据同步之同步调用
这是第一种方法,也是最简单的方法,在对mysql进行增删改查时,操作后直接调用ES方法实现增删改查。可以看出这种方式业务逻辑简单,实时性高,但是会有业务强耦合,存在双写失败丢数据风险,性能也比较差,代码侵入强,不推荐,但是可以作为一种普通方案简单来看一下。接下来,我们通过SpringBoot项目实际操作一下。
2023-09-12 17:06:35
983
原创 SpringBoot整合Easy-ES实现对ES操作
继承BaseMapper,整体操作都与MybatisPlus类似。这里是用的springboot版本是2.6.0。注意修改address信息,该为自己的ES地址。添加扫描ESMapper的注解,指定路径。包括对索引操作和对数据进行操作的接口。listener部分我们先不用管。使用PostMan测试。Service实现类。
2023-09-12 16:00:12
2685
2
原创 SpringBoot整合Canal实现MySQL与ES数据同步
开始之前请确认docker中已运行mysql与canal容器,并完成了监听binlog配置。
2023-09-12 15:29:54
2417
3
原创 Docker部署Canal监听MySQL binlog
canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地。第一页长这样,这里我们就修改一下框中的部分,第一个是我们在mysql配置文件中设置的slaveId,下面的是数据库地址,IP:端口号。下面的是需要监听的库表,图中就是默认状态,监听全部,可根据实际需求改。
2023-09-12 15:10:35
1139
原创 Docker安装部署ElasticSearch(ES)
创建/opt/es/plugins目录。用于在宿主机挂载日志,数据等内容。创建/opt/es/data目录。创建/opt/es/logs目录。创建/opt/es/conf目录。
2023-09-04 09:45:11
2649
原创 Sharding-JDBC分片策略
包含分片键和分片算法,由于分片算法的独立性,将其独立抽离。真正可用于分片操作的是分片键 + 分片算法,也就是分片策略。目前提供5种分片策略。一个好的分片策略=好的分片键+好的的分片算法。
2023-09-01 15:08:37
464
原创 Sharding-JDBC分库分表四种分片算法
精确分片算法(PreciseShardingAlgorithm)精确分片算法(=与IN语句),用于处理使用单一键作为分片键的=与IN进行分片的场景。需要配合StandardShardingStrategy使用。
2023-09-01 15:07:14
865
原创 Sharding-JDBC实现读写分离
配置读写分离数据源的元数据,可通过调用ConfigMapContext.getInstance()获取ConfigMap中的masterSlaveConfig数据。将主库的数据异步的同步到从库的操作。由于主从同步的异步性,从库与主库的数据会短时间内不一致。同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。查询数据操作所使用的数据库,可支持多从库。主库和从库的数据同步延迟导致的数据不一致。
2023-09-01 15:05:15
525
原创 Java中支持分库分表的框架/组件/中间件简介
列举一些比较常见的,简单介绍一下:sharding-jdbc(当当)TSharding(蘑菇街)Atlas(奇虎360)Cobar(阿里巴巴)MyCAT(基于Cobar)TDDL(淘宝)Vitess(谷歌)
2023-09-01 14:59:17
1935
原创 Sharding-JDBC介绍及分库分表实践
实现Sharding提供的精准分片接口,重写一下doSharding方法,接下来的几个分片算法,也都是差不多的操作。@Override//实现course$->{cid%2}return key;@Override@Override/*** Hint限制:* 不支持union查询* 不支持多层子查询* 不支持函数计算*/@Override。
2023-09-01 14:57:53
1607
原创 分库分表知识大全及Sharding-JDBC实践
一个数据库分成多个数据库,部署到不同机器一个数据库表分成多个表最早是当当网内部使用的一款分库分表框架,名字叫Sharding-JDBC,定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,Sharding-JDBC直接封装JDBC API,可以理解为增强版的JDBC驱动,旧代码迁移成本几乎为零,适用于任何基于 JDBC 的 ORM 框架,支持任何第三方的数据库连接池,支持任意实现 JDBC 规范的数据库。
2023-09-01 14:49:44
457
原创 EasyExcel实现多sheet文件导出
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。多sheet上传时已上传了部分数据,所以表中目前有数据。使用postman测试,测试方法如下。下载完成后,打开Excel表查看内容。
2023-08-24 08:58:27
4825
2
原创 EasyExcel实现多sheet文件分批导入
本次导入未设置导入逻辑,如需设置逻辑,在监听类saveDate方法内调用按逻辑增加的service方法。EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。创建三个sheet测试文件,sheetming及各自内部列名均按照要求设置。本次设置为1000条数据为一批导入,可根据实际情况调整为3000以内。引入dozermapper依赖用于后续对象间类型转换。选择需要上传的测试文件。
2023-08-24 08:58:19
1973
原创 EasyExcel实现Excel导出
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。之前在上传的文章中已经导入过一些数据,所以现在表中有数据,可直接导出。
2023-08-24 08:58:09
496
原创 EasyExcel实现文件分批次导入
本次导入未设置导入逻辑,如需设置逻辑,在监听类saveDate方法内调用按逻辑增加的service方法。EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。@ExcelProperty(value =“该字段在Excel中的表头名称”)本次设置为1000条数据为一批导入,可根据实际情况调整为3000以内。引入dozermapper依赖用于后续对象间类型转换。选择需要上传的测试文件。
2023-08-24 08:58:00
1516
原创 Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知
进入Prometheus的Alerts页面,可以看到有告警信息,提示所监控机器不可用,状态已经为Firing,这表示已经将告警发送至Alertmanager。开启后获得授权码,填到alertmanager配置文件相应位置中,并补全其他必要信息,重启alertmanager服务。Prometheus配置文件中已添加该项目地址,运行后到Prometheus页面中查看连接情况。注意:此处IP地址为Prometheus在Docker容器内部的IP地址。选择之前设置的Prometheus作为数据源即可。
2023-08-23 11:17:42
1426
原创 Prometheus+Grafana+AlertManager监控Linux主机状态
点击Add your first data source选择PrometheusPrometheus server URL中输入IP地址及端口号注意:此处IP地址为Prometheus在Docker容器内部的IP地址退出:Ctrl+D点击底部Save&Test。
2023-08-23 11:07:31
1406
原创 Docker安装并配置Pushgateway
Pushgateway是Prometheus的一个组件,prometheus server默认是通过Exporter主动获取数据(默认采取pull拉取数据),Pushgateway则是通过exporter主动方式推送数据到Pushgateway,再由Prometheus主动去拉取 Pushgateway数据,用户可以写一些自定义的监控脚本把需要监控的数据发送给Pushgateway。
2023-08-23 10:33:09
1350
原创 Docker安装并运行Alertmanager
Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具。
2023-08-23 10:28:51
1369
1
原创 Docker安装并配置cAdvisor
cAdvisor 是 Google 开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行 CAdvisor 用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。cAdvisor 可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括 CPU 使用情况、内存使用情况、网络吞吐量及文件系统使用情况。
2023-08-23 10:14:34
796
原创 Docker安装并配置Node-Exporter
Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取。
2023-08-23 10:11:21
1398
原创 Docker拉取并配置Grafana
opt/grafana/config目录,准备用来挂载放置grafana的配置文件。环境变量GF_SECURITY_ADMIN_PASSWORD:指定admin的密码。grafana-simple-json-datasource代表json数据源插件。/opt/grafana/plugins目录,准备用来放置grafana的插件。/opt/grafana/data目录,准备用来挂载放置grafana的数据。环境变量GF_INSTALL_PLUGINS:指定启动时需要安装得插件。
2023-08-23 10:03:58
2164
原创 Docker搭建并配置Prometheus
rule_files:告警规则。按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现。/opt/prometheus/rules目录,准备用来挂载放置prometheus的规则文件。/opt/prometheus/config目录,准备用来放置prometheus的配置文件。/opt/prometheus/data目录,准备用来挂载放置prometheus的数据。看到Prometheus的状态为UP,证明正在运行,端口9090,接下来可以到浏览器访问。
2023-08-23 09:54:48
1635
1
原创 Linux安装Docker
看到这些信息,代表测试镜像拉取运行成功,Docker完成。Linux内核版本高于3.1。能看到版本号代表安装成功。
2023-08-23 09:39:18
1380
1
原创 IDEA创建Spring,Maven项目没有resources文件夹
在Modules模块找到对应路径,在main下创建resources,右键main,选择新文件夹。找到刚才创建的文件夹,右键,选择设置为Resources。输入文件名resources,点击OK。点击Apply,OK退出。
2023-08-23 09:20:49
8273
4
原创 IDEA创建Mybatis格式XML文件
设置位置:File | Settings | Editor | File and Code Templates。内容处输入Mybatis的xml文件模板内容,勾选Enable Live Template,点击应用。Name中输入xml模板名(名称自行决定),后缀名extension输入xml(固定)完成后,在需要xml文件处新建,选择设置好的xml名称,按需补充内容即可。选择Files,点击+号。
2023-08-21 10:16:50
2177
原创 Java项目查询统计表中各状态数量
where中按需求加条件,resultType中使用HashMap时,可能展示时的顺序与查询结果顺序不同,因此使用LinkedHashMap。表中设计2个状态字段,每个字段有3种状态,统计这6个状态各自的数量。框架:SpringBoot,Mybatis;以下仅设计为最简单的使用方式,有具体需求按需求增加逻辑。效果达到了,接下来就是在项目中实际使用。在自定义sql的xml中代码如下。sql查询语句及结果如图。
2023-07-19 21:53:00
1666
原创 Java LocalDate转换成Date类型
Java中LocalDate类型转换成Date类型的方法。方法一,使用LocalDate的atTime方法;方法二:使用 Timestamp.valueOf方法。生成当前时间和一周后的时间转换成Date类型。
2023-07-18 15:33:24
13135
原创 IDEA自动添加注释作者版本时间等信息
IDEA如何自动添加注释信息。点击Edit variables,如图添加date和time的Expression项并勾选。填写名称(设置完成后再代码中输入该名称即可插入该注释内容),描述,及内容。代码中输入设置好的名称即可添加对应注释信息。点击底部提示信息,勾选Java项。再次点击加号,选择第一项。点击加号,选择第二项。点击Apply,OK。
2023-07-12 17:49:10
1370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人