Java判断字符是否是数字package com.example.core.mydemo.javatest; /** * 判断是否是数字 */ public class TestInt { public static void main(String[] args) { System.out.println("isNumeric1=" + isNumeric("11"
Apollo配置中心及配置接口的统一化1.配置中心的原则:集中在一个微服务中配置,避免在多个微服务中配置,否则会出现混乱。或者配置发生变更,引起修改配置很容易遗漏,修改不全等。2.订单的价格配置单价,折扣等配置数据,需要提供给其他的微服务来使用,是通过提供配置接口来提供,是出口数据规范化,从统一出口来管理。便于维护和配置升级等。
mysql 256byte可以存多少汉字,字符编码length,char_length函数在MySQL中,UTF-8编码下,每个汉字至少占用3个字节。因此,256字节可以存储的汉字数量为:(256字节) / (3字节/汉字) = 85.3汉字由于UTF-8编码中,对于单字节的字符、双字节字符和三字节字符有不同的编码方式,实际使用中可能不能完全均匀分配这256个字节,这样算下来可能存储的汉字数量会更
SpringBoot项目中使用Mybatis打印SQL日志-排查SQL方法#正解配置如下:mybatis: configuration: log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl logging: level: com.springboot.mapper: DEBUG ## com.springboot.mapp
通过模拟发送mq消息来测试实现-依据支付凭证不能重复入账1.依据MQ消息的json串转换为md5记录,作为收银台表的唯一约束。如果支付状态发生变化,则payMd5会跟随着变化。2.消息流程客户支付成功 > 微信支付微服务接收到微信支付的异步通知回调通知 > 发送给支付网关微服务(发送mq消息在本地数据库落库记录) > 发送支付成功的MQ消息,rabbitmq topic方式 (防
排查MQ消息发送和接收TemplateCodeSmsMq mq = new TemplateCodeSmsMq(); mq.setMobile(record.getMobile()); mq.setTemplateCode("mySmsCode1"); Map<String, Object> map = new HashMap<&g
XSSFWorkbook转换SXSSFWorkbook对象使用,避免OOM目前excel的导入导出功能,大部分是基于apache的POI技术,而POI给我们提供了WorkBook接口。常用的WorkBook接口实现有三种:HSSFWorkbook:它是早期使用最多的工具,支持Excel2003以前的版本,Excel的扩展名是.xls。只能导出65535条数据,如果超过最大记录条数会报错,但不会出现
程序接口幂等性设计接口幂等性是指用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。这类问题多发于接口的:insert操作,这种情况下多次请求,可能会产生重复数据。update操作,如果只是单纯的更新数据,比如:update user set status=1 where id=1,是没有问题的。如果还有计算,比如:update user set status
接口超时日志排查分析-BeanUtils对象复制6秒及类型不一致复制异常,复制null属性被覆盖解决,常见Bean拷贝框架的性能对比1.接口超时日志排查分析-BeanUtils对象复制6秒1.查询日志命令,分析接口的请求及响应的时长cat proJectDock.log | grep -E "请求开始时间|请求正常消耗时间" >> dock1.log2.org.springframew
接口超时问题汇总1.网络异常1.1 网络抖动 网络丢包可能会导致接口超时。2.1 带宽被占满 服务器带宽指的是在一定时间内传输数据的大小,比如:1秒传输了10M的数据。所以对于有些高并发请求场景,需要评估一下是否需要增加服务器带宽。2.线程池满了在java8之前可以通过实现Callable接口,获取线程返回结果。java8以后通过CompleteFuture类实现该功能。我们这里以Complete
接口性能提升方法1.索引1.1 没加索引sql语句中where条件的关键字段,或者order by后面的排序字段,忘了加索引,这个问题在项目中很常见。项目刚开始的时候,由于表中的数据量小,加不加索引sql查询性能差别不大。目前在mysql中如果想要修改索引,只能先删除索引,再重新添加新的。1.2 索引没生效可以使用explain命令,查看mysql的执行计划,它会显示索引的使用情况。1.3 选错索
Mysql索引失效问题demo# 1. 准备工作 CREATE TABLE `user` ( `id` INT NOT NULL AUTO_INCREMENT, `code` VARCHAR(20) COLLATE utf8mb4_bin DEFAULT NULL, `age` INT DEFAULT '0', `name` VARCHAR(30) COLLATE utf8mb4_
Java Objects.equals 比较demopackage com.example.core.mydemo.java3; import java.util.Objects; /** * output: flag=false flag2=true flag3=false flag4=true flag5=true flag6=true flag7=false flag8
Controller外部接口调用方式设计,sign签名规则//请求头accept:*/* connection:Keep-Alive user-agent:My-test3 Accept-Charset:UTF-8 Content-Type:application/x-www-form-urlencoded如果使用x-www-form-urlencoded 传参方式,则使用请求头:My-test1
CPU100%排查分析指南1 一次性获取的数据太多随着系统上线时间的推移,线上的数据越来越多,系统出现了bug,我们每次获取到的都是全量的数据,并非增量的数据。其根本原因是频繁的full gc2 kafka自动确认随着业务的发展,用户量越来越多,每天产生的kafka消息也越来越多。后来,我们把kafka的consumer,消费消息后改成手动确认,cpu使用率100%的问题就被解决了。3 死循环死循
mybatis Integer字段值传0,判断不等于空字符串,识别成空字符串排查解决根本原因:mybatis将传入的Integer类型的0被识别成空字符串在mbatis中使用Xml配置sql语句时,出现了这样一个问题。入的参数为0去做判断时,mybatis会把参数0当成是空字符串去判断而引起查询结果错误。insert into book <trim prefix="(" suffix
mysql left join on条件与where条件 统计报表查询方法1.确定数据数量,通过简化的sql查找符合条件的订单号列表2.然后根据需求,添加单个的字段,在这个过程中会添加left join左关联表查询需要区分两种情况2.1.可以唯一确定记录的,(SELECT t3.get_car_addr FROM `delivery_addr` t3 WHERE sub_order_no = (S
Mysql8 Could not create connection to database server. Attempted reconnect 3 times. Giving up.1.包含检查服务名和密码, root / 1234562.安装的MySQL是8.x ,mysql查询版本方法: SELECT VERSION(); 将所有的driver-class-name值都从com.mys
Mysql的聚合函数的详细使用方法CREATE TABLE sales ( sale_id INT AUTO_INCREMENT PRIMARY KEY, sale_date DATE, salesperson VARCHAR(50), product VARCHAR(50), amount DECIMAL(10, 2) ); INSERT INTO sa
MySQL 临时表MySQL 临时表是一种特殊类型的表,它只在当前会话(session)中存在,并且会在会话结束时自动消失。临时表在多个会话中不可见,也不会在数据库中持久存储。创建临时表的语法如下:CREATE TEMPORARY TABLE temp_table_name ( column1 datatype, column2 datatype, ... );例如,创建一
mysql计算两个日期之间相差小时数1.在MySQL中,可以使用TIMESTAMPDIFF函数来计算两个日期之间相差的小时数。以下是一个示例代码:SELECT TIMESTAMPDIFF(HOUR, '2023-01-01 00:00:00', '2023-01-01 11:00:00') AS hours_difference;这将返回两个日期之间相差的小时数,结果为11(假设没有跨日的情况)。
RabbitMq队列名称的理解队列名称在不同的微服务中,需要定义不同的队列名称,否则接收消息的时候冲突,要么A接收,要么B接收,而不是A,B都接收。队列名称的命令:可以考虑业务线,服务名称,模块名称,功能名称,其他具体含义,最后以queue结尾 //DEMO @RabbitListener(bindings = {@QueueBinding(value = @Queue(valu
mysql删除主键和删除索引(含删除unique索引)##删除表 DROP TABLE config_back; ##删除主键 ALTER TABLE config_back DROP PRIMARY KEY; 错误代码: 1075 Incorrect table definition; there can be only one auto column and it must be defi
MySQL中使用EXISTS替代IN是一种优化查询的方法#不能使用in关键字,索引无效 type=ALLMySQL中使用EXISTS替代IN是一种优化查询的方法,它可以避免在子查询中进行全表查询,从而提高查询效率。假设有两张表,一张是employees(员工表),一张是departments(部门表)。如果我们想找出所有在departments表中存在的employees,可以使用EXISTS来替
rabbitmq MessageConverter消息接收异常 一直unacked 解决rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest virtual-host: / listener: simple: concurrency: 1
rabbitmq队列清理Purge如果队列拥塞,紧急情况下,为恢复业务,不得不进行队列清理(需要确认清楚,数据丢失的后果是你能承受的).办法:管理端操作在web管理端可以进行操作,选择到要操作的队列,下拉里面有一个Purge(不要选到delete)
redis锁等待随机毫秒数拦截和程序自动过期双重机制上一个操作加了锁,需要等待上一个操作执行完毕之后,才允许当前操作执行,所以当前操作需要执行锁等待处理。 package com.example.core.mydemo.javaDemo; import java.time.LocalDateTime; public class RandomTest { public stat
RestTemplate exchange GET POST请求传参数DEMOlink: Illegal character ((CTRL-CHAR, code 31))问题排查 gzip接口返回 RestTemplate GET POST请求import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springfram
编辑接口设计及微服务内部接口调用方式,feign接口调用1.根据ID新增修改接口根据ID来区分,有值则认为是修改,否则是新增。 新增接口 /add 基本原则:编辑修改接口是基于ID来修改操作。2.改成ip方式,而不是网关,否则报错:网关登录失效 内部服务之间的接口调用ip:端口方式,而不是网关的方式网关的访问更多的是对外部。对内部是ip:端口方式。不经过网关服务。myUserService.
redis锁和等待锁随机毫秒数解决程序调用方控制执行的先后顺序,避免并发操作造成的数据不一致现象:向第三方服务调用接口,比如更换商品换货,需要先取消,然后再新增操作。同时可能存在修改并发操作(同时操作换货和修改操作),在取消和新增的间隙中做了修改操作,引起脏数据等数据不一致的问题。导致修改的数据,在新增操作后,未生效。解决方案: 基于的前提是在程序接口的调用方来控制先后执行顺序,服务提供方本身提供
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号