自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 MySQL - Zero date value prohibited

timestamp字段报Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited。timestamp字段存入了0值, 超出了最小值1900-01-01 00:00:00, 转Java对象的时候报错。删除(这样的数据本来就是脏数据)

2023-11-03 15:21:44 1274

原创 单元测试 - 集成H2 Dao测测试

并且在排查过程中发现,sql Initializer默认会去找spring.sql.init下指定的sql文件,如果找不到,再去加载了classpath下的schema.sql。所以之前schema: schema.sql指定的sql文件能被正确加载,是因为他被命名为schemal.sql并且被放在了classpath下,并不是因为schema: schema.sql的配置,换个名就不行了。pros:简单,几个注解简单配置搞定,不用去关心具体需要配置的Bean(因为所有用到的用不到的都被引入了)

2023-05-10 21:20:00 1222

原创 单元测试 - 注解篇

等同于mockMvc = MockMvcBuilders.standaloneSetup(xxController).build();可以在@RunWith基础上进行扩展,利用一个Test及需要Spring环境又需要Mock环境。最简单的单元测试 - 直接在方法上使用@Test注解即可。

2023-05-07 16:18:22 1195

原创 Lombok,@Data - Generating equals/hashCode implementation but without a call to superclass

简而言之参考。

2023-04-24 16:36:25 477

原创 一些日常疑问

答疑

2023-03-12 19:00:48 99

原创 记一次数据池连接失败异常, java.sql.SQLTransientConnectionException: Connection is not available

Hikari、SQLTransientConnectionException、假死,sql执行超时时间

2023-02-12 17:51:11 7014

原创 时区相关问题答疑

mysql时区相关

2022-07-25 15:26:05 615

原创 项目问题排查-分拨框号重复

正常情况:下架后,一个框绑定一个波次-多个订单分拨:一个框号绑定一个墙,一个格口对应一个订单出现的异常情况:下架后,一个框子绑定了多个波次,导致分拨混乱(因为包裹不属于一个波次下的订单,会提醒包裹不属于当前波次,正常直接提醒去哪个格口了)知识点:拉波次-绑定框号pcs-wms-outstock#OffShelvesService#pullAutoWaveInfo框号绑定分布式...

2022-05-12 21:32:39 152

原创 canal实践

一、what阿里开源,mysql增量数据订阅与消费服务,文档:https://github.com/alibaba/canal/wiki工作原理:canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )canal 解析 binary log 对象(原始为 byte 流)二、why工作中遇到

2021-05-19 20:37:50 707 5

原创 系统国际化(多语言支持)

一、what系统可以支持多种语言切换使用。国际化不仅是指文案的翻译,还包括时间格式、货币汇率、各国法律政策不同导致的业务差异,以及产品面向不同国家的不同商业策略,具体场景具体分析。本篇主要主要谈论文案的翻译与时间格式等业务无关的国际化。二、why存在不同语种的用户使用啦三、how3.1 具体业务场景3.2 编码实现3.2.1 文案国际化 基于SpringBoot国际化模块,通过Properties文件实现 3.2.1.1步骤 1. ...

2021-05-19 14:41:49 2992

原创 无损发布学习

偶然听到这个名字,很好奇,学习一下。场景:分布式环境下,服务重启,摘流和增流服务停止,但是现有需求还未处理完,仍有新流量进来

2021-05-15 11:15:52 323 2

原创 预期消息未发送的问题排查&解决

问题描述:每次订单状态变更会发出消息,消息消费方反馈,某订单未收到status=1的订单变更消息排查过程:1. 怀疑消息发送异常导致消息未发出,排查日志,无异常日志,先排除2. 观察发出的消息日志,发现发出了2条status=4的消息,猜测并不是消息未发出,而是发出的消息内容错误,某条status=4的消息,应该是status=1的消息体3. 追代码逻辑,发现问题在一个事务中进行了多次状态变更&消息发送,但是消息发送的对象是一个引用,引用对象被其他方法改变,已不是当时那一刻瞬时.

2021-05-07 16:15:38 247

原创 mysql时间戳问题

公司DBA对日期默认值的使用建议出于好奇问了一下,问了下为什么要这样用,默认时间戳(Timestamp)类型的取值范围为’1970-01-01 00:00:01’ UTC 至’2038-01-19 03:14:07’ UTC,在中国时区下(东八区)是’1970-01-01 08:00:01’ GMT 至’2038-01-19 11:14:07’ GMT,在中国时区下,用户视角timestamp允许最小值是1970-01-01 08:00:01,因为GMT转UTC要减去8小时。如果在中国时区下向.

2021-03-09 15:29:58 438 1

原创 夏令时引起的时间问题

一、问题描述日期字符串1990-6-17转java的Date对象,落库(mysql)后,DB日期显示减少一天(1990-6-16)二、原因根本原因:java使用的时区与数据使用的时区不匹配1.1990-5-15处于中国实行夏令时期间,是夏令时时间CDT2. 字符串转Date,SimpleDateFormat#parse,jvm默认时区=Asia/Shanghai,会处理夏令时,可以看到CDT夏令时标识3. db时区=CST,中国标准时区4. 落库时,CDT转CST,..

2021-03-09 14:26:29 2270 1

原创 hashCode和equals

为什么重写equal后建议重写hashCode?因为java中对hashCode函数和equal的约定是:如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。 以下情况不 是必需的:如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么在两个对象中的任一对象上...

2020-02-24 11:26:17 215

原创 问题解决记录-可复用

一、电脑修改密码后连接git失败 git config --global --replace-all user.email "输入你的邮箱" git config --global --replace-all user.name "输入你的用户名"...

2019-10-21 09:51:59 171

原创 @Builder @NoArgsConstructor 冲突

Entity上加上@Builder,会默认为类加上全参构造函数,且提供以建造器模式构造对象的方法。但此时因为显示声明了构造器,默认的无参构造器就失效了,就不能通过new Obj()的方式创建对象。这是自然想到加@NoArgsConstructor注解生成无参构造函数以便使用new Obj()方式创建对象,很多框架中都需要反射调用无参构造函数。但是如果显式声明了@NoArgsConstructor,...

2019-09-17 20:31:33 9709 3

原创 关于系统卡顿排查

2019-6-11值班日,合箱出现卡顿,平均每次合箱请求要5 ~ 10s才能处理完,正常情况1s处理完。(此接口会通过HttpClient去调一个三方接口)。值班同学给的解释是,将HttpClientPoolUtil工具内定义为了局部变量,每次方法调用都会初始化一个连接池,每次接口调用都会重复创建连接池+连接,占用了过多资源导致页面假死。由于处在封网阶段,修改后代码不能发布,通过重启机器释放资源...

2019-06-12 02:09:05 152

原创 一些没搞懂的名词

网络抖动 网络中的延迟是指信息从发送到接收经过的延迟时间,一般由传输延迟及处理延迟组成;而抖动是指最大延迟与最小延迟的时间差,如最大延迟是20毫秒,最小延迟为5毫秒,那么网络抖动就是15毫秒,它主要标识一个网络的稳定性。from:https://zhidao.baidu.com/question/539357558.html影响举例,多个系统间通信,上游状态是1,在与下游同步状态时(例如...

2019-06-04 14:42:44 246

转载 跨域总结

一、什么是跨域浏览器不能跨站点执行脚本。这是由于浏览器的同源策略造成的,同源:协议、域名、端口号均相同的站点才同源,任意一个不同都会产生跨域问题。注意,域仅仅是通过“URL的首部”来识别(“URL的首部”指window.location.protocol +window.location.host,也可以理解为“Domains, protocols and ports must match”。)...

2019-04-15 10:56:21 412

原创 String转换总结:String.valueOf(),toString(),(String)

1、String.valueOf() 传一个确定类型的null值不会报错,例如Long s = null ; String str = String.valueOf(s);// str等于字符串null 直接传null会报空指针异常,例如String.valueOf(null)。 根本原因是这两个例子走了不同的重构方法:Long s = null ; String...

2019-04-10 20:56:48 619

原创 关于幂等==

概念 同意参数,多次调用接口的结果与一次调用接口的结果一致场景 单机:后端处理成功后向客户端响应结果,因网络原因响应失败或延时,用户不明所以,疯狂点击提交按钮。 分布式系统:一个服务调另一个服务,被调用服务处理成功,但因为网络原因,返回给调用方,此时调用方会多次重试,此时就会存在幂等问题。需要做幂等的接口 update,insert。select不需要做幂等,del...

2019-03-05 01:00:43 359

原创 Spring事务

事务未生效1. 数据库存储引擎是否支持事务(例如,mysql的innodb支持事务,而myisam不支持事务) Spring事务是否开启(以下为注解方式开启事务)<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>2. 异常类型不是unc...

2019-03-02 23:24:51 417

原创 mac/linux 命令篇

实时查看日志 tail -10f filename 显示文件倒数10行数据并实施打印日志 tail -n 10 filename查看倒数10行 tail -n +10 filename 查看头10行之后的行 tail保证尾部被看到。 head -n 10 filename 查看头10行 head -n +10 filename 查看倒数10行之前的行过滤...

2019-02-12 23:17:31 417

原创 疑惑点答疑

一、前端src中的//路径相对协议,浏览器可根据服务器端的配置是http还是https来使用对应的协议加载资源。(是根据服务端配置判断还是根据当前访问当前网页使用的协议判断啊?)二、CDNContent Delivery Network 内容分发网络。用户通过最优路径访问所需内容,提高用户访问网站速度。以上参考自腾讯运的产品说明:https://cloud.tencent.co...

2019-02-12 16:45:30 237

原创 2019书单

一、《SpringBoot实战》第四版Craig Walls 著 / 丁雪峰 译目的 简化Spring开发,快速搭建应用程序,让程序员专注业务开发。核心 1.自动配置:通过发现classpath下的库为应用程序生成并注入相应的Bean,不再需要通过xml或代码形式声明Bean。 2. 起步依赖:将具有支持某个功能的多个包整合在一个start起步依赖中,开发者只...

2019-02-06 22:31:14 1310

原创 MAC 使用技巧

idea快捷键:command+B 查看引用该类的地方control+shift + ⬆️ 查看所有窗口Command + Option + L 格式化代码cmd+shift+G 到指定路径Control + enter 或者 control + n 快速创建类(选中文件夹) Control + enter getter/setter 未选中文件夹的情况下Command + Op...

2018-09-16 19:01:14 164

原创 git 个人总结

1、为什么要配置ssh验证客户端的身份(不验证身份那不是谁都可以向远程仓库提交代码咯),不用向https那样每次跟远程仓库交互都要输密码。某些限制受访的仓库需要验证客户端身份。不配置ssh可能会出现无法像远程仓库push代码的情况(反正我遇到过~)2、远程分支删除后可以提交切换过去吗?只是远程分支删除了,本地不能push,但是还是可以commit到本地仓库,后面切换到新分支后将之前分支...

2018-09-16 18:32:52 53

原创 关于http的一些总结

1、get请求能否通过请求体向后台请求数据?从http协议来讲,http协议并未限制不能通过get请求的发送body数据(但是http协议本身不建议这样做)。只是作为协议的实现方,例如各浏览器、Apache Http Client 和 OkHttpClient 等都不支持 GET 请求发送 Body 数据(但AsyncHttpClient 是可以的。),所以在使用浏览器时,我们无法通过...

2018-09-09 16:53:28 88

转载 跨域

什么是跨域浏览器的同源策略规定,不同源的页面不能相互访问各自的页面内容。(协议、域名、端口号。三者完全一样被视作同源。)DOM同源策略:禁止对不同源页面DOM进行操作。这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的。XmlHttpRequest同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求。所以,跨站点的dom操作与请求都被视为跨域。...

2018-08-25 16:57:42 213

转载 web安全

CSRF攻击。跨站请求伪造:简单理解,攻击者盗用了他人身份,发送恶意请求。从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:1.登录受信任网站A,并在本地生成Cookie。2.在不登出A的情况下,访问危险网站B。(B网站可以返回一个立即请求A网站的连接a,本来A网站需要用户登录才能响应链接a的请求,但由于用户之前登录过网站A,所以再次访问会带上上次登录的coo...

2018-08-25 10:05:45 391

原创 maven

Maven实战(六)--- dependencies与dependencyManagement的区别maven中import scope依赖方式解决单继承问题的理解

2018-08-23 10:11:10 130

转载 分布式事务

保证分布式数据库下的ACIDXA TransactionsXA 是一个两阶段提交协议,该协议分为以下两个阶段:第一阶段:事务协调器要求每个涉及到事务的数据库预提交(precommit)此操作,并反映是否可以提交. 第二阶段:事务协调器要求每个数据库提交数据。其中,如果有任何一个数据库否决此次提交,那么所有数据库都会被要求回滚它们在此事务中的那部分信息。这样做的缺陷是什么呢? 咋看之...

2018-08-23 09:48:38 291

转载 事务隔离级别,mysql锁机制

大写加粗,mysql中的锁是以事务为边界的,隔离级别是隔离不同事务间的数据可见性和操作性,在同一个事务中是可以做连续修改操作的。(例如在同一个事务中对同一记录做多次更新是没有任何问题的,但是在多个事务场景下就会出现因锁等待而阻塞的情况)事务隔离级别读未提交:一个事务可以读取到另一个事务未提交的修改。这会带来脏读、幻读、不可重复读问题。(基本没用)读已提交:一个事务只能读取另一个事务已经提交的...

2018-08-23 08:59:13 121

原创 微服务学习

微服务概念SpringCloud中的RPC原理:服务提供者先将服务注册到服务中心,服务调用者根据服务名称先到服务注册中心获取到真实的服务地址,再基于该真实地址来调用目标服务。rest、fegin底层都是基于httpClient负载均衡负载均衡有哪些工具:nginx、lvs、Haproxy,F5SpringCloud中的负载均衡:rebbion...

2018-08-23 03:24:43 50

转载 Redis持久化

持久化为什么要持久化?为了重启计算机时恢复数据。RDB在指定时间间隔内将内存中的数据写入RDB文件(dump.rdb),保存的是全量数据。可以在redis启动时恢复到内存中。两种回写方式(回写时Redis的RDB文件不会坏掉,因为其写操作是在一个新进程中进行的。当生成一个新的RDB文件时,Redis生成的子进程会先将数据写到一个临时文件中,然后通过原子性rename系统调用将临时...

2018-08-16 23:52:05 185

原创 SQL

1、where与havingwhere指定行的条件,在进行分组前进行过滤,where后只能是字段,不能跟聚合函数,where的执行顺序先与聚合函数。having指定组的条件,对分组后的结果做过滤。只能用在group by之后,条件中经常包含聚合函数,也可以是字段。2、on与where的区别on是在生成连接表时起作用,where是在生成连接表之后再对连接表进行过滤。在inner ...

2018-08-13 07:57:53 84

原创 分区表

分区表达式和分区列都不能返回null吗分区列必须是主键的一部分?分区表分区表是一个独立的逻辑表,但底层是由多个物理表组成。对用户来讲,分区表的分区细节对用户是透明的,用户在使用分区表时与使用普通表无区别。对存储引擎来讲,构成分区表的各个底层表和普通表没有任何不同,存储引擎也无须知道这是一个普通表还是分区表的一部分。分区表的操作select,insert,delete:M...

2018-08-09 08:17:33 224

原创 索引

索引在存储引擎层实现,所以并没有统一的索引标准:不同的存储引擎的索引工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引,即时多个存储引擎支持同一类型的索引,其底层实现也可能不同。如果索引包含多个列,MySql只能最左前缀索引列B+Tree,每个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历,B-Tree的指针指向的是被索引的数据,而不是其他节点页(不同存储引擎的...

2018-08-09 08:17:24 975

原创 查询性能优化

优化入口:查询优化、索引优化、库表结构优化。查询不需要的记录多表关联时返回全部列(select *),应尽量只取自己需要的列关于响应时间三种应用where条件的方式 优化之大查询切分为查询 问题:MySql都是将数据放到内存中进行扫描?...

2018-08-09 08:17:11 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除