自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @AssetTrue使用小结

@AssetTrue常用于属性(Field)和方法上,用来校验属性(Field)和方法返回值是否为True,当属性为List时,则可使用 @AssetTrue.List

2024-04-08 11:29:46 90

原创 ThreadLocal及InheritableThreadLocal基本原理及注意项

ThreadLocal是如何做到在线程中存储本地变量的。InheritableThreadLocal又是怎么做到继承机制的。

2022-06-24 19:06:07 1346 2

原创 MySQL InnoDB锁机制及锁超时案例分析

当表有多个索引的时候,不同的事务可以用不同的索引来锁定不同的行。另外,不论是使用主键索引,唯一索引或者普通索引,InnoDB都会使用行锁来对数据加锁。但即便在条件中使用了索引字段,具体是否使用索引,使用哪个索引,是由MySQL执行计划来判断的。

2021-12-02 10:23:12 839

原创 MySQL查询时区分大小写

更新表字段编码格式alter table `tableName`to character set utf8mb4 COLLATE utf8mb4_bin;COLLATEutf8mb4_bin 的意义为:*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的,如COLLATEutf8mb4_bin*_cs: case sensitive collation,区分大小写,如 COLLATEutf8mb4_cs*_ci: case...

2021-11-09 16:59:35 1590

原创 Java Map移除值为空的元素

map.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));

2021-11-02 10:50:14 2754 1

原创 关于redis做秒杀库存扣减的生产实践及思考

近期组员接手了一个领券的业务,涉及到了对券批次库存的扣减操作,在多次尝试优化后压测起来仍有一些性能问题,由于接近deadline,于是自己也尝试上手优化了一下。使我对日常在论坛看到的redis秒杀库存的实现有了进一步的认知。...

2021-09-06 16:05:59 3694

原创 记一次FastJson使用不当导致频繁Full GC排查

具体原因为:https://www.cnblogs.com/liqipeng/p/11665889.html与这篇文章的情况类似,可以直接按这篇文章的解决方案进行调整,此处只记录下排查过程。 近期,测试压测某个查询接口时,发现压测的开始一段时间TPS比较稳定,在压测进行多了几次后,TPS开始出现巨大波动。 进服务器利用TOP命令查看机器基本情况,发现业务层CPU的占用已经达到93%,但数据库层的CPU占用却仅在25%,说明数据库压力并不大,而这个业务只是单纯的查询用户是否处于黑名单状态...

2020-08-22 20:51:08 1726 1

原创 代码中使用redis锁和Spring事务时需注意的点

前几天,有同事过来请教,为啥明明加了redis锁,也有在代码里做了插入的幂等校验,同一个入参并发时为啥还是插入了两条。 首先,这种重复性的数据可以在数据库用唯一索引做。但这不是我们此次讨论的重点。我们需要讨论的是,为啥redis锁不起作用了。 review了代码,发现他的redis锁用了注解AOP进行实现。并且在方法上也用了@Transactional事务注解。所以这是个对AOP的执行顺序和事务的理解不到位的问题。(代码中注册时会判断手机号是否已注册) 我们知道,在事务未...

2020-06-25 13:18:04 2183 4

原创 @Transaction(rollbackfor=Exception.class)的原因

rollbackfor默认是RuntimeException,声明为Exception.class可以扩大异常回滚范围。

2020-06-22 21:43:15 334

原创 记一次利用TOP命令排查压测问题经过

梦开始的地方 近期,负责的接口开始上压测环境,第一次接触压测,对能压到多少TPS并没有多少概念。然而结果还是十分出乎意料,“单接口TPS100+左右,并发50,100,200的结果基本稳定,接口请求有点慢,而且CPU占用率很异常,四核CPU都跑满了,不是很合理,排查下什么原因。”测试如是说。 询问了下组长上一版的时候其他接口的压测结果,组长回复不至于这么慢。于是开始排查自己代码的问题。排查代码问题 Review代码。首先想,是不是自己的代码有问题,将代码发给有压测经验...

2020-06-14 21:38:59 1217 2

原创 MySQL事务问题排查语句

查询当前事务隔离级别select @@tx_isolation;查询当前执行中事务select * from information_schema.innodb_trx;*************************** 1. row *************************** trx_id: 113963 ...

2020-06-13 16:03:53 784

原创 关于交易类业务的一些注意点

交易系统往往要和多个系统进行对接,目前对接过程很难做到事务的控制操作(我成功了,我回调了你,你执行失败了)。所以要做到失败的补偿:重试、失败通知、失败记录、订单号记录、完整的日志链跟踪。 其次,是与银行对接的问题:金额到账延迟,失败重试超时,重复请求查询结果超次数,同一业务下多个接口调用无法回滚。像金额到账延迟还不算太大的问题,但像失败重试超时这些,就很容易导致出现大的问题。 失败...

2019-09-10 17:01:55 385

原创 @Value中冒号的作用

先说明冒号的作用 :可以设置默认值@Value中可以使用@Value("${hello:defaultValue}")private String hello;若找不到属性值hello,那么就会默认赋值 defaultValue

2019-04-09 14:51:51 18248

原创 Excel导入导出——学习笔记

利用Poi进行Excel导入导出,在SpringBoot框架下进行测试,并使用了Bootstrap-fileinput作为前端上传组件作为参考,下载采用原生ajax下载形式,因为一直忘记前端下载怎么写还有后端怎么设置Request-Header,所以提供一个整个前后端的思路,以后方便进行查阅!

2019-03-27 16:04:10 545

原创 RocketMQ学习笔记——Hello World

为什么要使用RocketMQ这个问题也可以是为什么要使用消息队列,一个东西的诞生,必然是业务的需要。消息队列的主要作用有:削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题) 系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死) 提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统)比较容易理解的作用有秒杀系统,当大...

2019-03-26 14:50:50 438

原创 SpringBoot——JPA学习笔记

前言使用过Hibernate的同学应该知道,Hibernate的作用就是面向对象写SQL,Hibernate要求我们尽量关注与对象之间的关系,封装底层的数据库,用对象之间的映射关系去建立表之间的联系。而JPA与Hibernate十分相似,也是可以利用对象来直接操作数据库。它只需要极其简单的几个类就可以完成对一个对象的CURD操作。具体如何简单,且看接下来的步骤。引入JPA依赖...

2019-03-26 14:12:33 277

原创 Centos安装netstat

yum install net-tools

2018-05-17 18:32:28 2729

原创 如何通过Maven的Tomcat插件运行Web工程

去tomcat官网http://tomcat.apache.org/,左侧栏Apache Tomcat下的Maven Plugin,点进去选择最新版本Version 2.2通过介绍可知,使用tomcat的maven插件有两种配置方式:第一种:在pom.xml文件的<build></build>中加入如下配置: 1 <pluginManagement> 2 ...

2018-04-30 13:30:35 300

原创 SpringMVC 跨域访问

需Spring版本为4.2以上在Controller上注解 @CrossOrigin(origins="*")或在web.xml中配置<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servl...

2018-03-23 19:53:08 242

原创 Freemarker获取RequestContextPath

在开发中,我们需要获取到requestContextPath来使得导入的css或js不因请求路径变化而导致404从而致使导入失败。在配置SpringMVC FreeMarker视图解析器(FreeMarkerViewResolver)时,进行如下配置        <!-- FreeMarker视图渲染器配置 --> <bean class="org.springframewo...

2018-03-23 19:49:53 2209

原创 Mysql查询今天,昨天,最近一周语句

今天: select * from `article` where to_days(`add_time`) = to_days(now());  昨天: select * from `article` where to_days(now()) – to_days(`add_time`)  查询近7天的信息记录: select * from `article` wher

2018-02-27 18:01:07 364

原创 maven自动部署到远程tomcat教程

使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间。 本文章适用于tomcat的7.x ,8.x, 9.x版本。 1,首先,配置tomcat的manager 编辑远程tomcat服务器下的conf/tomcat-users.xml,在末尾增加(其实只要拉到文件末尾,去掉注释改一下就可以了)  role rolename="m

2018-02-27 17:57:27 240

原创 Java导出Excel的工具类及其Demo

Java导出Excel工具类及其Demo

2017-10-25 20:43:13 908 1

原创 血与泪的教训: 中文乱码问题整合(Java)

中文的字符编码集有:GB2312,GB18030,UTF-8(适用于中文,但偶尔会出错,前面两个比较有保障)Html页面乱码问题在标签中设置或 如图(任选一种,图片只为展示)修改html文件编码格式查看是否使用了springmvc+freemaker,若使用了这两者,请往下看。后

2017-09-23 22:33:41 467

原创 血与泪的教训: JavaWeb中文乱码问题整合

中文的字符编码集有:GB2312,GB18030,UTF-8(适用于中文,但偶尔会出错,前面两个比较有保障)Html页面乱码问题在标签中设置或 如图(任选一种,图片只为展示)修改html文件编码格式查看是否使用了springmvc+freemaker,若使用了这两者,请往下看。后

2017-09-23 22:29:05 8791

原创 MyBatis--HelloWorld

mybatis helloworld

2017-05-06 22:49:52 222

原创 ssh配置

applicationContext.xmlhibernate.cfg.xmlStruts.xmlweb.xmlssh配置

2017-05-01 14:27:16 254

转载 MySql模糊查询like通配符使用详细介绍

MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。一、SQL模式SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符

2016-09-08 20:53:04 308

原创 JavaWeb学习路线

JavaWeb学习路线刚升上大二,发现周围的人很多都不知道Java基础学完要学什么,这里推荐一下个人的JavaWeb学习路线。。因为才刚大二,所以也请各位大大指出不足,错误之处。大致路线为: 了解html -》 学习MySQL(增,删,查,改) -》 JDBC -》JSP -》 Servlet -》 Filter -》 Listener(了解) -》 Struts2 -》Hibernate -》

2016-09-07 22:50:02 348

原创 Struts2——Data类型转换出错

Struts2 Date类型转换出错问题学习笔记

2016-08-30 23:49:37 448

原创 Struts2常用标签

Strut2常用标签及OGNL表达式只是学习笔记,欢迎各位前辈批评指点~

2016-08-29 22:58:19 314

原创 JDBC连接MySQL数据库

JDBC连接Mysql数据库API:String database = "test";String driver = "com.mysql.jdbc";String uri = "jdbc:mysql://localhost:3306/" + database;String user = "root";String password = "1234";String sql = ""; /

2016-08-29 22:44:41 304

空空如也

空空如也

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

TA关注的人

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