2022 08-15

【RocketMQ】事务的实现原理

事务的使用 RocketMQ事务的使用场景 单体架构下的事务 在单体系统的开发过程中,假如某个场景下需要对数据库的多张表进行操作,为了保证数据的一致性,一般会使用事务,将所有的操作全部提交或者在出错的时候全部回滚。以创建订单为例,假设下单后需要做两个操作: 在订单表生成订单 在积分表增加本次订单增加的积分记录 在单体架构下只需使用@Transactional开启事务,就可以保证数据的一致性: @Transactional publicvoidorder(){ StringorderId=UU

2022 08-15

Java SE 9 多版本兼容 JAR 包示例

JavaSE9多版本兼容JAR包示例 作者:Grey 原文地址:JavaSE9多版本兼容JAR包示例 说明 Java9版本中增强了Jar包多版本字节码文件格式支持,也就是说在同一个Jar包中我们可以包含多个Java版本的class文件,这样就能做到Jar包升级到新的Java版本时不用强迫使用方为了使用新Jar包而升级自己的业务模块Java版本,也不用针对不同最低支持Java版本提供不同的Jar,真正的做到了一个Jar包兼容所有的目的。 本文通过以下示例来说明多版本Jar包的使用。 环境准备

2022 08-15

Java开发学习(二十五)----使用PostMan完成不同类型参数传递

一、请求参数 请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数? 关于请求参数的传递与接收是和请求方式有关系的,目前比较常见的两种请求方式为: GET POST 针对于不同的请求前端如何发送,后端如何接收? 1.1环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制中环境准备 pom.xml添加Sp

2022 08-15

长篇图解java反射机制及其应用场景

一、什么是java反射? 在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后new类名()方式来获取该类的对象。也就是说我们需要在写代码的时候(编译期或者编译期之前)就知道我们要实例化哪一个类,运行哪一个方法,这种通常被称为静态的类加载。 但是在有些场景下,我们事先是不知道我们的代码的具体行为的。比如,我们定义一个服务任务工作流,每一个服务任务都是对应的一个类的一个方法。 服务任务B执行哪一个类的哪一个方法,是由服务任务A的执行结果决定的 服务任务C执行哪一个类的哪一个

2022 08-14

搞定面试官 - 可以介绍一下在 MySQL 中你平时是怎么使用 COUNT() 的嘛?

大家好,我是程序员啊粥。 相信在大家的工作中,有很多的功能都需要用到count(*)来统计表中的数据行数。同时,对于一些大数据的表,用count都是瑟瑟发抖,往往会结合缓存等进行处理。 那么,我们今天就来分析一下,在InnoDB中,关于count的一些处理措施和优化。 常见的count使用方式有三种 count(*) count(主键Id)/count(某个字段) count(1) 首先count(*)、count(主键Id)/count(某个字段)和count(1)都表示返回满足条件的结果

2022 08-14

Linux 域名和DNS

名字解析的作用: TCP/IP网络中,设备之间的通信依赖IP地址来实现,但是IP地址不好记忆,所以就将每一台设备用一个名字来进行标识,但是这个名字计算机不能解析。所以就需要借助名字解析服务来实现将名字解析为IP地址。 主机名和域名的联系 主机名: 主机名:计算机的名字,用于唯一标识一台设备 域名: 域名:domainname,是由一串用点分隔的名字,表示互联网上的一台或者一组设备。 完全限定域名:FQDN FQDN:fullqualifieddomainname,完全限定域名。FQDN=主机名+

2022 08-14

记一次 ClickHouse 性能测试

前言 在工作场景中,我们会采集工厂设备数据用于智能控制,数据的存储用了InfluxDB,随着数据规模越来越大,InfluxDB的性能越来越差,故考虑引入ClickHouse分担InfluxDB大数据分析的压力,再加上我们业务上也用到了MySQL,所以本文就来对比下MySQL、InfluxDB、ClickHouse在千万数据量下的写入耗时、聚合查询耗时、磁盘占用等各方面性能指标。 结论先行 最终的结论是,直接使用ClickHouse官网提供的6600w数据集来做对比测试,在MySQL、Influx

2022 08-14

线程重用问题--ThreadLocal数据错乱

前言 复现Java业务开发常见错误100例--1 项目完整代码:Github地址 知识点回顾: ThreadLocal的定义和使用: ThreadLocal概念以及使用场景 配置文件的读取: 获取配置文件中的key和value; 创建属性对象 获取文件流,并进行加载 遍历文件流获得属性key和value 属性赋值 Propertiesp=newProperties(); InputStreamstream=clazz.getClassLoader().getResourceAsStrea

2022 08-14

急如闪电快如风,彩虹女神跃长空,Go语言高性能Web框架Iris项目实战-初始化项目ep00

在GolangWeb编程的世界里,君不言高性能则已,言高性能必称Iris。彩虹女神的名号响彻寰宇、名动江湖,单论一个快字,无人能出其右,就连以简洁轻量著称于世的Gin也难以望其项背,只见彩虹女神Iris回眸一笑撩人心扉:“虽然你们也不是那么慢,但我还是快那么一点点......”,本次就让我们来一睹彩虹女神Iris的芳颜,感受宇宙最快Web框架的神乎其神。 女神本神(Iris) 选择一款框架有诸多的参考层面,比如灵活性、扩展性、API友好程度、文档详细程度、项目活跃度、社区贡献等等,但是性能和内存

2022 08-14

Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

系列目录 1、Taurus.MVCWebAPI 入门开发教程1:框架下载环境配置与运行。 2、Taurus.MVCWebAPI入门开发教程2:添加控制器输出HelloWorld。 3、Taurus.MVCWebAPI入门开发教程3:路由类型和路由映射。 4、Taurus.MVCWebAPI入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。 5、Taurus.MVCWebAPI入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【To