自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一种复杂业务场景的解决方案(代码结构)

关注我们的接口性能,不要循环RPC、不要重复RPC、不要复杂SQL,写简洁干净的代码

2021-01-26 10:51:06 635

原创 MySQL语句in中包含1个值和多个值时索引选择的不同(索引建立时间先后会影响MySQL优化器)

表结构CREATE TABLE `ag_dealer_goods` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `item_id` bigint(20) NOT NULL COMMENT '商品ID', `status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '报价状态: -1-已下架,0-待上架,1-已上架', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' CO

2020-11-30 23:31:44 1317 2

原创 MySQL死锁事件排查

#背景一次购物车线上发版后,观察到线上出现死锁(数据库为MySQL,存储引擎为InnoDB)的错误日志,日志截图如下:排查于是根据日志traceId定位是到是某个用户在请求一个购物车的查询接口,且出现死锁的前后用户对购物车只做了这一种查询请求 /api/zcy/trade/middle/carts/orderGroup,100秒内请求了12次,3次失败9次成功,失败的3次中2次是因为其他业务接口超时导致,只有1次是数据库表死锁导致,即我们上方看到的数据库死锁错误。经过确认,此次发版并没有修改该接口

2020-11-22 00:12:45 479

原创 Macbook磁盘空间满了怎么办

背景我是一位Java后端开发,公司提供的工作电脑是Macbook pro,128G的磁盘空间,用了一年之后经常出现磁盘空间已满的提醒,如今已是第三年,这两年我总在删一些不用的APP以及删除大的文件来释放一些磁盘空间,虽然收效甚微,但也勉强苟延残喘。最近苹果发布了最新的macOS Big Sur 11.0.1,更新需要40G的磁盘空间,我不得不想尽一切办法来清空磁盘空间,最终释放出了46G的磁盘空间,过程其实也很简单第一步,下载清理工具“腾讯柠檬”,主要是用来清理应用的缓存文件,特别是微信和钉钉下载

2020-11-19 23:01:27 1627

原创 一条MySQL慢SQL优化(Join优化)

查询指定区划下的所有有效供应商1 慢SQL及背景ag_protocol_qualification 850万数据,ag_protocol35万数据explain select protocol_id as id , supplier_code from ag_protocol_qualification t1 where exists (select t2.id from ag_protocol t2 where t2.instance_code = 'HNDZMC' and t2.is_delete

2020-08-22 17:20:02 725

原创 深入Elastic-Job源码(版本2.1.5)

写在前面目前公司使用的作业调度工具是Elastic-Job,版本2.1.5,三月份因为失效转移配置出过一次线上事故,排查问题的过程中粗略的读了一下源码,刚好借此机会深入理解一下Elastic-Job 。总体架构注:图片来自https://github.com/elasticjob/elastic-job-lite概述Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项...

2020-04-30 22:51:59 1100

原创 elasticjob任务失效转移异常

elasticjob

2020-03-16 00:35:39 2220 1

原创 记一次线上CLOSE_WAIT事件

2020年3月5号14时40分,技术支持反馈有用户来电询问单据无法打印,开发人员经过日志排查,发现是连接阿里云OSS超时,经过日志分析,从3月4号16时10分开始陆陆续续出现单据打印失败,因为昨天前天均未发版,上次发版还是2月28号,因此不太可能是近期发版导致的问题。连接超时,首先想到的是联系运维架构组是否有何种外网访问限制或者OSS固有问题,但是均无答案。包括开通外网访问限制均未能解决问题。...

2020-03-06 01:19:17 359

原创 GC日志理解

[ParNew: 2588536K->85788K(2831168K), 0.0608460 secs] 3309635K->806939K(8074048K), 0.0611363 secs] [Times: user=0.23 sys=0.00, real=0.06 secs][ParNew: 2588536K->85788K(2831168K), 0.0608460 se...

2019-10-16 23:39:27 203

原创 一次程序启动异常排查———ali-phoenix和mysql-connector-java冲突

事情是这样的,一个夏日的午后,我先是提交了代码到我自己的开发分支,然后将开发分支合并到一个test分支,准备发到测试环境。先用Jenkins构建,正常,然后测试同学更新到test环境,十分钟过去了,更新仍未完成,哟嚯,多半是要凉了。打开日志,一看,果然报错了。不对呀,我的分支启动是正常的啊,本地重新启动试试,我的分支可以正常启动,于是切到test分支重新启动,果然启动失败,错误信息如下:从最...

2019-07-26 22:52:35 524

原创 代码顺序对程序可读性及性能的影响

看代码下方有ABC三段代码,功能都是一样的,获取当前审核类型。基本逻辑是:正常价成交那么就是单位内审;异常价成交且特殊事项开启那么就是特殊事项审批,否则还是单位内审。A public String needAudit(Param param) { // 正常价成交,单位内审 if (param.isNormalPrice()) { ...

2019-04-06 11:38:14 632

原创 MySQL datetime 精度

最近项目上需要存储一个截止时间,我和前端约定返回当天的最后一秒,即"yyyy-MM-dd 23:59:59"(实际是Date数据类型,返回的是一个时间戳)。于是,前端返回1552319999999,通过工具查看结果如下OK,没有问题,确实是返回了"yyyy-MM-dd 23:59:59"。但是测试反馈,时间存储不对,数据库显示的是what? 难道程序处理增加时间了?首先查看日志,从日志上看...

2019-03-09 16:10:10 8297 1

原创 解决multi modules Springboot项目的maven parent冲突

通过Springboot initializer 生成的springboot maven项目中,pom文件会包含parent标签,如下代码<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifac...

2018-11-14 10:56:40 1731

原创 SQL语句like对null和空字符的不同处理

有形如下方的SQL语句,当field为null时,所对应的记录将返回;当field为“”(即空字符)时,记录就可以返回。SELECT *FROM xxx_tableWHERE field LIKE '%%';...

2018-05-02 17:29:20 7265 2

原创 Mybatis中的一个潜在错误

真的,我很难找到一个合适的标题给它。看代码通常查询需要传递各种参数,于是我们在项目中封装了一个查询参数对象,将各种可能的查询参数封装进这个对象中,然后在mapper文件中写了一个很长where语句,使用if来判断是否有值。如下方截取的片段,初看觉得没什么问题,通常情况下,bidIds和bidId不会同时使用,我们构造查询对象的时候只会对其中一个set值。 <if tes...

2018-04-14 09:55:12 416 1

翻译 Java Exception

Java ExceptionWhat Is an Exception?The term exception is shorthand for the phrase “exceptional event.” Definition: An exception is an event, which occurs during the execution of a program,...

2018-04-10 09:14:05 278

原创 如何解决xxx is not in the sudoers file.This incident will be reported. on Mac

问题背景:一台公司配置的MacBook Pro 2017,IT在配置用户时没有根据我的名字来建立用户,忍受了一段时间之后,终于,在一个吃饱了撑着的晚上,我决定修改一下用户名。改完之后发现在这个界面怎么登陆都是失败的,无论是新的用户名还是老用户名都不对。 于是我通过终端去修改,however,在终端里无法使用sudo,提示错误如下图 那一刻,我仿佛是给我自己来了一个夺命剪刀脚,在...

2018-03-14 23:09:22 10742 3

原创 Lombok错误解决

这个有可能是Lombok新手使用中最常见的错误有如下代码是引入了Lombok工具类的。@Datapublic class User { private int id; private String name; private int age; private String address; private String mobile;}@S...

2018-02-12 15:14:30 66513 26

原创 一行一行读Java源码——LinkedBlockingQueue

1、LinkedBlockingQueue概述LinkedBlockingQueue,顾名思义,一个链式的(linked)、阻塞的(Blocking)队列(Queue)。 Queue,首先想到的是FIFO特性。 Linked,Queue其结构本质上也是线性表,可以由链表和顺序表实现,LinkedBlockingQueue就是链表实现,ArrayBlockingQueue是顺序表实现。因Qu

2018-01-09 17:13:17 353

翻译 Java垃圾回收器

本文简要介绍了Java HotSpot VM包含的三种不同类型的垃圾回收器:串行回收器、并行回收器及并发回收器,并提供了一个回收器选择的入门指导。

2018-01-03 21:14:58 261

原创 Java静态同步方法与非静态同步方法

静态与非静态方法是否存在竟态静态同步方法与非静态同步方法存不存在竟态条件,通俗地说就是分别调用静态同步方法和非静态同步方法的两个线程会不会同步?

2018-01-02 21:57:37 1976

原创 一行一行读Java源码——ArrayList

ArrayList可能是日常开发中使用频率最高的集合类型之一(另一个是HashMap),但是有些细节不细究、不常回顾的话总是会慢慢模糊,比如有一语句List<Object> objects = new ArrayList<>(); ,试问此时objects 的容量(capacity)是多大?

2017-12-10 12:58:00 395

原创 一行一行读Java源码

毫无疑问,Java源码是Java领域的经典之作,它既可作为Java编程范例供Java程序员学习模仿,同时熟悉这些源码也是对程序员的基本要求。熟悉源码能让我们更好地驾驭Java lib,写出更好的代码,鉴于此,于是决定边读边记录、边分享边提高。

2017-12-10 11:28:34 584

原创 一行一行读Java源码——Iterator

迭代器我们都知道,当我们需要删除List中元素时,必须使用迭代器来操作,为什么需要使用迭代器来进行remove操作,而不能在for循环中删除?那么迭代器又是什么呢?

2017-12-09 15:11:37 423

原创 浅拷贝与深拷贝

浅拷贝和深拷贝

2017-12-06 21:38:27 197

原创 实例变量/类变量与this

Java语言很强大,但有些强大的地方是值得商榷的,比如实例对象可以访问类变量。虽然Java语言允许我们通过实例对象去访问类变量或者方法(静态变量、静态方法,static关键字修饰),但是这样的写法非常不好:第一,这会使得程序员,尤其是初级的程序员产生理解上的错误,永远记住类变量只属于类,而且我们也没有任何理由要使用实例去访问类变量;第二,增加编译器解析成本,因为编译器会将实例访问转换成通过类访问。

2017-12-03 12:56:55 620

原创 Java集合的序列化

Java集合是如何序列化的?

2017-11-30 21:17:08 6649

原创 new对象与Spring对bean的初始化的差别

这个问题是一次我将老系统代码迁移到基于Spring构建的新系统中时遇到的,老代码中有很多地方使用了new方法来初始化对象,当时也没有特别注意,最后联调的时候发现所有new出来的对象中使用Autowired自动依赖注入的属性全都抛出了NullPointerException。什么意思呢?@ComponentClass A { ...} @ComponentClass B { ..

2017-11-20 22:39:14 3268 5

转载 数据库的四种隔离级别

数据库是事务的四种隔离级别

2017-11-20 22:15:56 379

转载 脏读、幻读、不可重复读

对脏读、幻读、不可重复读较为准确的描述和定义。

2017-11-20 22:10:23 275

原创 关于编程的一点体会(Tips,持续更新中)

大学开始学习计算机、接触编程,然后研究生,到现在工作一年多,这么些年走过来不能说对编程有多么痛的领悟,但是一些小心得体会还是有的,或是某一时刻的突发奇想、或是自己或他人犯的错误、或是读到的好代码好文章感悟,大抵如此。这些小的东西如果没有总结记录下来,时间久了必会失传,同时也为了能够时常回顾以及交流学习,于是尝试一点一点记录下来。随着编程手艺的提高与认识的变化,我会持续更新它们。

2017-09-23 10:04:29 316

原创 抽象类和接口

曾经在校招的时候被问到抽象类和接口的区别和使用选择,无奈当时我主攻的是C++,因而对接口几无所知,自然也没回答上来。 前些时候看《设计模式》的,其中说到继承某个类和实现一个接口可以用两个关系来表示:is-a和has-a。也就是说,类A继承类B,表示A is a B;而类A实现接口C,意味着A has a C,可以理解为A具有什么样的能力。is-a和has-a总结的相当好,设计模式中推荐尽可能地使

2017-09-21 20:14:03 241

原创 设计模式概念

设计模式概念

2017-08-14 15:02:53 364

原创 为什么GitHub Contribution Activity没有没有统计贡献

让GitHub正确统计comtribution

2017-08-09 20:11:55 2541 2

原创 Spring and AOP

AOP入门学习材料。

2017-08-07 15:58:13 256

原创 用Java实现Spring+MyBatis的配置

个人不太习惯也不太喜欢xml风格配置spring,于是用Java配置了一个基本的spring+mybatis的项目。有需要的话,前往GitHub源码地址,并以Maven Project方式导入eclipse或其它IDE。

2017-08-03 13:28:47 423

原创 Java基础系列

Java基础知识文章合集

2017-07-31 22:07:55 266

原创 Java有没有多继承

很多人都知道Java是单继承的,其实准确的说应该是这样的:Java的类是单继承的,即每个类只能继承一个类。但是,Java中也有多继承,接口支持多继承,即一个接口可以继承多个接口。

2017-07-31 14:49:21 1825

原创 Java访问权限

你真的了解Java访问权限吗?类中的默认访问权限和接口中的默认是一回事吗?protected和包访问权限又有什么区别呢?

2017-07-30 23:46:45 383

翻译 Java垃圾回收过程

摘自Oracle官网的一段对于Java GC的描述

2017-07-25 23:41:48 290

空空如也

空空如也

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

TA关注的人

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