RussXia

身处寒夜,把握星光。

JDBC字符集乱码问题

JDBC字符集乱码问题 问题背景 数据库:mysql 5.7 datasource数据源:druid Connector/J: 5.1.38 公司线上报警,发现抛出 UncategorizedSQLException 异常,看到异常栈的信息,基本可以断定是字符集设置的问题。 Cause: java.sql.SQLException: Incorrect string...

SpringMVC中的异常处理流程

SpringMVC中的异常处理流程 本文搭建的项目基于spring-boot版本 1.5.2.RELEASE ,spring版本是 4.3.7.RELEASE 。源码分析也是基于 4.3.7.RELEASE 的spring版本。 Spring Boot项目可以通过 server.error.whitelabel.enabled 参数设置关闭Spring Boot默认提供的统一错误信息处理。...

Spring容器中的init和destroy方法

Spring容器中的init和destroy方法 Spring Bean的生命周期大致如下: Spring提供了定义好的Spring Bean生命周期内的init和destroy方法,实现InitializingBean和DisposableBean方法即可。同时,Spring也支持自定义的初始化和销毁方法。 基于xml配置的方式,在配置bean的时候,我们可以指定init-method...

SpringMVC和Servlet

SpringMVC和Servlet HTTP服务器将请求发到Servlet容器,Servlet容器会将请求转发到具体的Servlet,如果此Servlet尚未创建,则加载并实例化这个Servlet(init方法),然后调用这个Servelt的service方法,真正处理请求。 Servlet接口 public interface Servlet { void init(Servle...

HTTP协议入门

HTTP协议入门 HTTP协议是基于TCP/IP协议之上的应用层协议,默认使用80端口(HTTPS默认使用443端口)。HTTP协议是属于Client-Server模型,是无状态。 为什么说HTTP协议是无状态的呢,我的理解是,在协议层面HTTP协议是无状态的,请求没有记录上下文,请求之间不存在事物关系,每个HTTP请求都是完全独立的。请求的状态是靠Cookie和Session保持的。这样...

Java中的NIO

Java中的NIO Java中的几种常见的IO模型 同步和异步 同步:调用者请求被调用者,当一个调用发出后,需要等待返回消息(用户线程不断去询问),才可以执行后续 异步:调用者请求被调用者,当一个调用发出后,调用者不需要等待返回消息,请求处理完成后会通过回调来通知调用者。 阻塞和非阻塞 阻塞:当前线程不断轮询结果,知道结果返回 非阻塞:会立即返回(虽然还没得到结果)...

Java中JVM相关工具使用

死锁检查 死锁demo代码: import static java.lang.System.out; /** * 死锁demo * Created by RuzzZZ on 2017/2/8. */ public class Deadlock implements Runnable { private Deadlock other; public void set...

JVM常见的几种GC算法

JVM常见的几种GC算法 什么是垃圾回收(GC) GC::Garbage Collection(垃圾收集)。JVM会自动对内存进行管理和垃圾清扫,这种行为称之为垃圾回收。 常见的垃圾回收算法有哪些 常见的垃圾回收算法有三种,它们各有优缺点: 标记-复制:将内存划分为大小相等的两块,当一块用完后,将还存活的对象copy到另一块上 优点:实现简单,效率高,不产生内...

Java中的invokedynamic和lambda表达式

Java中的invokedynamic和lambda表达式 关于invokedynamic和其他四种字节码方法调用指令 在Java7中,JVM新增了invokedynamic指令。在此之前,JVM就已经提供了四种不同的字节码方法调用指令: invokevirtual——对实例方法的标准分派 invokestatic——用于分派静态方法 invokeinterface——用于...

时间轮定时器

时间轮定时器 时间轮算法的基本架构 时间轮是基于一个循环链表(实际上就是个数组,通过下标控制)的数据结构。所以也因此得名WheelTimer。时间轮算法的复杂程度跟分级层数有关,最简单的就是一层的,复杂一点的就是分层时间轮(Hierarchical Timing Wheels)。对于一层的时间轮,添加/删除/取消任务的复杂度是O(1),过期/执行任务时,最差情况是O(n)(类似HashMa...