摘要:
按照常规思维,往一个map里put一个已经存在的key,会把原有的key对应的value值覆盖,然而通过一次线上问题,发现Java8中的Collectors.toMap反其道而行之,它默认给抛异常,抛异常... 线上业务代码出现Duplicate Key的异常,影响了业务逻辑,查看抛出异常部分的代码 阅读全文
摘要:
先想一下,创建BigDecimal对象的时候一般是怎么创建的? new一个,传进去值 BigDecimal.valueOf方法,传进去值 作为一个数字类型,经常有的操作是比较大小,有一种情况是比较是否相等。用equal方法还是compareTo方法?这里就是一个大坑 用于比较的值全都是0,猜一猜上面 阅读全文
摘要:
GET请求、POST经常会出现中文乱码的问题,最好约定前后端的编码,一般为UTF-8。但是这里面也是有坑的。 后端设置编码为UTF-8的推荐方式: SpringMVC配置过滤器: 此配置可以将请求体的内容按照UTF-8编码解码。 Tomcat的server.xml配置: URIEncoding可以配 阅读全文
摘要:
有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。 单条记录插入并返回 First, if your database supports auto-generated key fields (e.g. MySQL a 阅读全文
摘要:
算法背景 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。 在响应时间要求比较严格的情况下,如果 阅读全文
摘要:
mysql-connector-java版本升级出现的一次问题。涉及到了时间精度的截取和四舍五入。 首先了解一点,timestamp,datetime如果不指定精度,默认的精度是秒。 当mysql-connector-java版本<=5.1.22时,db的客户端会将Datetime,Timestam 阅读全文
摘要:
说起Tomcat的NIO,不得不提的就是Connector这个Tomcat组件。Connector是Tomcat的连接器,其主要任务是负责处理收到的请求,并创建一个Request和Response的对象,然后用一个线程用于处理请求,Connector会把Request和Response对象传递给该线 阅读全文
摘要:
了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞 NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。 BIO 常见使用方式 传统的BIO是同步阻塞的方式,因此,在服务器中常见的使用方式是: 来一个请求创 阅读全文
摘要:
java.lang.Thread.State中定义的集中Java线程的状态: 上述Java代码定义的几个状态中其实是没有running状态的。 线程的runnable状态是从虚拟机的角度来看的,表示这个线程正在运行。 但是处于Runnable状态的线程不一定真地消耗CPU. 处于Runnable的线 阅读全文
摘要:
最简单的两种写法,加或不加@RequestParam注解 第一种写法参数为非必传,第二种写法参数为必传。参数名为userId。 第二种写法可以通过@RequestParam(required = false)设置为非必传。因为required值默认是true,所以默认必传。 第二种写法可以通过@Re 阅读全文