八行书

https://wisewong.github.io/

Java8 Collectors.toMap的坑

按照常规思维,往一个map里put一个已经存在的key,会把原有的key对应的value值覆盖,然而通过一次线上问题,发现Java8中的Collectors.toMap反其道而行之,它默认给抛异常,抛异常...   线上业务代码出现Duplicate Key的异常,影响了业务逻辑,查看抛出异常...

2018-09-13 12:10:55

阅读数 9760

评论数 2

BigDecimal精度与相等比较的坑

先想一下,创建BigDecimal对象的时候一般是怎么创建的? new一个,传进去值 BigDecimal.valueOf方法,传进去值   作为一个数字类型,经常有的操作是比较大小,有一种情况是比较是否相等。用equal方法还是compareTo方法?这里就是一个大坑 //new 传进去...

2018-09-13 11:41:33

阅读数 505

评论数 0

GET、POST编码问题

GET请求、POST经常会出现中文乱码的问题,最好约定前后端的编码,一般为UTF-8。但是这里面也是有坑的。后端设置编码为UTF-8的推荐方式:SpringMVC配置过滤器:<filter> <filter-name&...

2018-06-25 11:11:09

阅读数 71

评论数 0

Mybatis插入数据后返回主键id

有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。单条记录插入并返回First, if your database supports auto-generated key fields (e.g. MySQL an...

2018-06-25 11:00:19

阅读数 346

评论数 0

大数据量下的集合过滤—Bloom Filter

算法背景如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。在响应时间要求比较严格的情况下,如果我...

2018-06-23 18:27:41

阅读数 1057

评论数 0

Mysql 时间类型精度截取的bug

mysql-connector-java版本升级出现的一次问题。涉及到了时间精度的截取和四舍五入。首先了解一点,timestamp,datetime如果不指定精度,默认的精度是秒。当mysql-connector-java版本<=5.1.22时,db的客户端会将Datetim...

2018-06-23 18:05:07

阅读数 215

评论数 0

Tomcat NIO

说起Tomcat的NIO,不得不提的就是Connector这个Tomcat组件。Connector是Tomcat的连接器,其主要任务是负责处理收到的请求,并创建一个Request和Response的对象,然后用一个线程用于处理请求,Connector会把Request和Response对象传递给该...

2018-04-11 15:00:23

阅读数 616

评论数 2

Java NIO

了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。BIO常见使用方式传统的BIO是同步阻塞的方式,因此,在服务器中常见的使用方式是:来一个请求创建一个线...

2018-03-28 14:22:48

阅读数 235

评论数 0

Java线程的几种状态

java.lang.Thread.State中定义的集中Java线程的状态:/** * A thread state. A thread can be in one of the following states: * <ul> * &a...

2018-03-20 17:31:20

阅读数 84

评论数 0

读取含有BOM头的文件遇到的问题

需求是读取一个csv文件,然后解析成对应的数据结构。csv必须包含指定的某些列,通过列名header来进行校验。 解析配置文件的方法。public List<QuestionData> buildConfigData(final MultipartFil...

2018-03-13 10:22:21

阅读数 552

评论数 0

Tomcat启动过程源码解读

根据Tomcat源码来看一下Tomcat启动过程都做了什么部分代码为主要流程代码,删去了try-catch以及一些校验逻辑,方便理解主流程先来一张启动过程时序图,了解一下启动顺序Tomcat启动的入口类:org.apache.catalina.startup.Bootstrap#mainmain方...

2018-03-07 19:37:56

阅读数 103

评论数 0

浅谈对Spring Framework的认识

Spring Framework,作为一个应用框架,官方的介绍如下:          The Spring Framework provides a comprehensive programming and configuration model for modern Java-based...

2016-09-17 16:22:27

阅读数 426

评论数 0

探究JVM——垃圾回收

垃圾回收主要考虑三件事情:哪些内存需要回收?什么时候回收?如何回收?   一、哪些内存需要回收?   堆内存:对于JVM 来说,垃圾回收主要是针对堆内存中的对象实例。 方法区:垃圾收集行为在方法区是比较少出现的,一般来说,这个区域的回收“成绩”比较难以令人满意,尤其是类型的卸载,条件相当...

2016-05-01 20:58:21

阅读数 3589

评论数 0

探究JVM——运行时数据区

最近在读《深入理解Java虚拟机》,收获颇丰,记录一下,部分内容摘自原书。   Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建...

2016-04-30 11:51:23

阅读数 1113

评论数 0

页面调度算法模拟

模拟实现的算法:FIFO,Optimal(最佳置换),LRU,Clock,改进的Clock算法   一、先入先出(FIFO):   最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理...

2016-01-23 23:18:50

阅读数 1100

评论数 0

处理机进程调度模拟

一、进程调度   无论是在批处理还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。进程调度属于处理机调度。   处理机调度分为三个层次:...

2015-12-27 13:53:02

阅读数 1275

评论数 0

数据的分页处理

当页面中要显示的内容过多需要分多页显示、或是数据量过大内存吃不消时,需要分页处理。 原理:每次从数据库中取出一定量的数据,通过jsp页面显示 实现: ①写一个类封装分页的页面 ②从数据库中取出一个页面的数据,将信息封装到分页页面对象中 ③根据情况,将分页的页面对象设置到request对象...

2015-08-29 12:19:25

阅读数 1776

评论数 0

EL函数以及自定义标签的应用

一、EL函数(调用普通类的静态方法) 编写步骤(自定义EL函数的编写步骤即自定义标签的编写步骤):   ①编写一个普通的java类,提供一个静态方法,功能自定,例如下: package cn.wzbrilliant.el; public class ElFunction { pu...

2015-08-28 20:23:09

阅读数 1424

评论数 0

Jsp内置对象及EL表达式的使用

一、JSP的内置对象(9个JSP内置对象)   JSP的内置对象引用名称   对应的类型 request          HttpServletRequest response          HttpServletResponse session          HttpSessio...

2015-08-28 00:11:34

阅读数 2204

评论数 1

Jsp语法、指令及动作元素

一、JSP的语法    1、JSP的模板元素:(先写HTML)    就是JSP中的那些HTML标记    作用:页面布局和美化   2、JSP的Java脚本表达式:    作用:输出数据到页面上    语法:(实际上就是调用输出流打印到页面上)   3、JSP中的Java脚本...

2015-08-27 23:09:43

阅读数 1198

评论数 0

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