zlj1217的博客

慢慢加油

并发编程——ThreadPoolExecutor源码分析(一)

前言 线程池是并发编程中最重要的应用之一,使用线程池可以防止大量的创建和销毁线程的过程,可以节省很多的内存空间,提高程序的响应率和cpu的利用率,并且也可以对线程进行统一管理和监控。这里将分几篇文章介绍一下线程池的源码分析。本篇是分析ThreadPoolExecutor中的ctl变量 ctl变量 ...

2018-10-05 22:45:54

阅读数:7

评论数:0

validate注解做校验

前言 之前也用过hibernate的校验注解,但是没有去做一个总结,这里参考一篇博客去做一个总结。简述JSR303/JSR-349,hibernate validation,spring validation之间的关系。JSR303是一项标准,JSR-349是其的升级版本,添加了一些新特性,他们...

2018-08-19 19:50:18

阅读数:210

评论数:0

@PostConstruct注解

简介 @PostConstruct注解和@PreDestroy是两个作用于Servlet生命周期的方法注解,实现Bean初始化之前和销毁之前的自定义操作。 应用场景 @PostConstruct 主要用来容器初始化之前去初始化一些缓存或者配置等。 执行顺序及注意事项 一、执行顺序 @P...

2018-06-29 10:12:51

阅读数:50

评论数:0

redis 锁的一个小坑纪念一下

之前在工作的过程中做了很多锁的校验,有做并发锁校验,也有做分布式系统订单状态校验的锁,但是这次造成线上bug的代码是因为自己一个很小的失误,这次纪念一下。这次是在解决批量去操作的时候,去将要批量操作的数据去锁住,防止并发操作(分布式系统交互要注意这种并发和幂等的操作)。这里在循环中去加了redis...

2018-02-08 15:30:40

阅读数:101

评论数:0

java.rmi.server.ExportExcepetion:Port already in use问题解决

在灰度环境的一个工程启动的时候报错经过排查 是因为在同一个服务器上 端口40040被占用了。这里从报错很容易看出是端口占用,但是排查一堆文件下面的时候 发现是jmx的端口占用。修改jmx端口号的是在{tomcat路径}/bin/catalina.sh脚本下去修改的。纪念一下参考的资料:http:/...

2018-02-08 15:06:23

阅读数:88

评论数:0

最近了解到的知识点

近期更新博客比较少了 因为工作比较忙了吧。 这里记录一下最近了解到的知识点: 1.navicat 工具 在执行insert的时候 会为tinyint类型的 not null的字段自动插一个0  而在代码运行过程中是不会去自动补0的。这个时候就会报错(表设计为not null 但是插入的为...

2017-12-21 17:33:02

阅读数:84

评论数:1

MySql+Mybatis+Druid:sql injection violation, multi-statement not allow

在测试一个mybatis批量更新的时候,报了sql injection violation, multi-statement not allow 的错误,和下面转载的博客一样,我也是以为连接数据库的url上没有加上支持批量的参数,然后就改了下: jdbc.url=jdbc:mysql:/...

2017-09-01 18:05:57

阅读数:481

评论数:0

bigDecimal作为参数传入方法中累加的坑

结果是第一个输出0   第二个输出2   这个与深拷贝和潜拷贝有关   详见  http://blog.csdn.net/will_awoke/article/details/39026681  bigDecimal作为参数传入一个方法中 累加之后返回的是一个新的对象 出方法之外和test...

2017-09-01 17:47:49

阅读数:1351

评论数:0

查看本地起工程部署war包的地址位置

在本地去起psi工程的时候,报了一个类找不到的异常,显示在一个配置文件中的注入类是找不到。因为之前不了解本地用tomcat去运行时候的原理,所以一直在工程中maven 依赖中的包里去找这个类,但是发现这个包确实依赖了进来,但其实是在部署war的地方找不到这个类,这时候学习了看本地起工程时 war包...

2017-08-21 15:09:43

阅读数:417

评论数:0

eclipse debug 插入数据库规定能时 crtl+shift+i 的一个坑

1.在debug时,对插入待采购商品记录进行debug时,去看sqlsession执行insert方法之后的返回值确定插入数据库几条时,发现放掉断点之后往数据库中插入双倍甚至三倍的记录数。排查了很久,结果是在debug这一行的时候已经执行一遍插入,之后会再执行一次操作。。。。这个坑真的只有踩过才知...

2017-08-21 14:29:36

阅读数:201

评论数:0

PropertyDescriptor类 初接触

用到的场景:在写推送MQ消息的时候,想一个sendMessage 类去 推送不同的 队列名。 首先用一个Constant类存放了不同的MQ的推送的队列名字 是用@value注入的,里面有多个队列名字,其实对应着这个Constant不同的属性。现在就是将这些队列名字对应的属性通过一个键值(可以在数...

2017-07-27 10:34:44

阅读数:5597

评论数:0

SLF4J 日志门面的使用

1.什么是SLF4J ? SLF4J  = Simple Logging Facede For Java (简单日志门面),是作为各种日志框架的一个简单外观或者抽象,其中日志框架 比如 java.util.logging,log4j,logback等。它相当于一个服务的接口,具体的日志功...

2017-07-25 17:05:23

阅读数:418

评论数:0

Float.isNaN() 方法

在看HashMap源码的时候,看到初始化一个HashMap的方法时,对传入的一个float型的 装载因子参数进行了校验Float.isNaN(loadFactor) 一开始不是很理解这个方法,就去查询了一下: JDK中float和double有一个方法isNan,该方法用于描述非法的float...

2017-07-21 09:32:59

阅读数:976

评论数:0

在做业务时重写equals方法也要重写hashcode方法

在java中会有许多编码规范,这会使你在实现功能的时候避免许多坑。这里就是记录学习一个编码规范: 在业务上要判断两个对象的内容是否相等,不要自己写方法(isSame)去判断,而是应该去重写Object类的equals方法,(就像String类一样)。这个时候就能在list 中去支持 如果插入两个...

2017-07-09 18:36:50

阅读数:98

评论数:0

java关键字 transient 和 关键字 volatile

最近在看HashMap的过程中去了解啦java 的两个关键字,transient 和 volatile 。 1.transient  我们都知道实现serializable接口可以实现java对象的序列化和反序列化,但如果不想序列化该对象其中的一个属性,可以在这个对象类中用transient关...

2017-06-14 15:16:33

阅读数:155

评论数:0

新知识杂记——2017/6/12

1.自动装箱 自动拆箱 在写代码时 返回值一般都是用Integer 和 Long  一般有的属性(id)也是这两个包装类 而我们在不同的业务场景中需要根据逻辑去判断这些属性等不等于0 这时可以用==  但是要去判断和一个Integer的对象的值是否相等 这里要用equals 方法!否则只是比较这两...

2017-06-12 23:23:11

阅读数:123

评论数:0

新知识杂记-2017/6/11

1.Map.Entry方法的使用: Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合...

2017-06-11 11:44:42

阅读数:117

评论数:0

return "cartSuccess" 和 return "redirect:/cart/cart.html" 的区别

在SpringMVC中转发和重定向最重要的区别就是:应用场景不同,换句话说,就是需求不同。 如果是直接放回到jsp页面:则如下边两种方式均可。  1· @RequestMapping("/add/{itemid}") public String addCart...

2017-05-30 23:24:15

阅读数:485

评论数:0

null == obj 和 obj == null在java中推荐前者的原因

在公司会看到代码规范中有一条是在if判空条件中要写成  if (null == obj) 而不是 if (obj == null),之前不理解这样写有什么区别,后来才知道其实就是避免把 == 写成赋值 = ,因为如果是Obj = null IDE此时不会报错;而当你写成  null = obj的...

2017-05-30 15:19:01

阅读数:582

评论数:0

浏览器中F5刷新和crtl+F5的区别

做前端有时候经常遇到功能在一个浏览器中去刷新F5不实现,但是换一个浏览器之后就会实现的问题,很大一部分其实是因为浏览器的缓存问题,这也是在网页上F5和CRTL F5的区别所在,这里简单来说就是每次浏览器去刷新的时候都尽可能的去加载之前加载页面的缓存,所以点击F5会发现加载速度很快,事实上这里并没有...

2017-05-29 13:18:58

阅读数:617

评论数:0

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