自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (6)
  • 收藏
  • 关注

原创 JAVA服务端的解码

JAVA服务端的解码  引起乱码问题的缘由是编码与解码方法的不对称,为了能和客户端正确的交互,需要了解下服务端是何时,何处以及如何对内容进行编解码的。按照请求处理的过程,我们先来一一分析一下Java服务端对HTTP内容的解码过程。一,URI的解码  在tomcat中,负责对URI解码的是org.apache.catalina.connector.CoyoteAdapter的co

2015-11-23 23:18:18 5386

原创 谈谈spring中bean的名字

谈谈spring中bean的名字     提到bean的名字,就要从声明bean的地方说起。在应用spring时,有两个地方可以声明一个bean,一个是在spring的配置文件中,一个是在代码中通过Component等标注声明。     代码中可以通过标注的方式来表示这个类是属于spring管理的类,这类标注有Component、Repository、Service以及Contro

2015-11-14 17:46:37 15365 3

原创 SpringIoC依赖注入的过程(二)

SpringIoC依赖注入的过程(二)   上文讲到spring通过AbstractAutowireCapableBeanFactory的doCreateBean方法来创建并且初始化一个bean,doCreateBean首先生成一个未初始化的bean,然后再对它进行依赖注入、属性解析以及回调bean的方法等等。本文将继续讲解spring是如何做到这些的。   衔接上文,分析doCreate

2015-11-03 23:40:16 6426

原创 springboot源码解读之内嵌tomcat的启动

目录BeanDefinition注册创建配置TomcatTomcat基本组件配置Context配置TomcatStart中的initializer启动tomcatService启动容器启动DefaultServlet悬案启动Connector在springboot之前,web服务都是要部署在web容器里的。但是springboot改变了这个模式,web...

2020-04-16 00:28:30 504

原创 springboot源码解读之@ConfigurationProperties原理

动态注册ImportBeanDefinitionRegistrar是spring提供的动态注册的扩展点,它与@Configuration和@Import注解配合可以实现组件的动态注册。需要该组件时就注册组件,使用相关的功能;不需要该组件就不注册组件。只需要一个类型@EnableXXX注解就可以决定是否注册该组件。ConfigurationClassParser从声明了@Configurati...

2020-04-11 23:43:09 906

原创 springboot源码解读之RefreshScope动态刷新配置

目录scope原理从容器中获取scope bean负责创建scope bean的ScopedProxyFactoryBeanRefreshScopeRefreshScope缓存清理配置重新加载scope原理从容器中获取scope beanscope是spring framework中的概念,对于singleton和prototype对象的获取在beanFa...

2020-04-10 00:36:32 5524

原创 springboot源码解读之使用springcloud加载配置

前言前面一篇文章https://blog.csdn.net/hongxingxiaonan/article/details/105129792讲了springboot如何加载本地配置。默认情况下,springboot会加载classpath下的application.properties等文件。可能会遇到有的工程里配置了bootstrap.properties也是生效的,但并没有自定义spri...

2020-04-06 23:30:50 1031

原创 springboot源码解读之配置从哪来

概述用了一段时间springboot,但对于springboot的配置原理始终不太了解,带着如下疑问学习一下源码:springboot都从哪里读取配置,顺序是什么样的?bean中的属性是怎么注入的?配置变更时怎么动态修改bean属性?配置加载public ConfigurableApplicationContext run(String... args) { St...

2020-03-30 00:33:09 248

原创 CMS垃圾收集器运行原理

目录概述执行过程初始标记并发标记并发预清理可中断预清理重新标记并发清理并发重置数据结构card table异常情况概述CMS垃圾收集器是一款优秀的老年代并发垃圾收集器,通过与用户线程并发执行的方式减少GC停顿的时间。本文主要聊一下CMS设计到的相关的数据结构、具体的执行过程、运行中会出现的异常情况。在CMS之前并行垃圾收集器通过下图...

2020-03-24 23:18:41 1311 3

原创 Linux下安装redis-2.8.3

Linux下安装redis-2.8.3安装下载安装包 wget http://download.redis.io/releases/redis-2.8.3.tar.gz)解压 tar -zxf redis-2.8.3.tar.gz cd redis-2.8.3 sudo make sudo make installcp src/redis-server src/redis-cli /us

2017-06-20 20:56:24 1327

原创 及时释放服务端与客户端之间的TCP连接的方法

及时释放服务端与客户端之间的TCP连接的方法TCP的状态转换图 先贴上tcp状态转换图,方便后面分析问题 感知对端关闭,及时关闭己方连接  前几天遇到了一个问题,服务端下线,主动断开了连接。但客户端并没有感知到,而是继续使用该连接,导致下次调用服务端报错。  查看客户端和服务端的tcp状态,服务端处于FIN_WAIT_2状态,而客户端处于CLOSE_WAIT状态。  结合

2017-06-12 15:29:45 7083

原创 commons-pool2对象池分配回收策略

commons-pool2对象池分配回收策略 前一段时间写了一个rpc的客户端,使用apache commons-pool2的对象池管理长连接。其中由于没有完全弄清楚各个参数的意义,即其中分配回收策略,所以出现了一些不太合理的现象。最近详细看了源码,这里整理一下。一、对象的创建1. 对象创建的时机   对象的创建有两个时机,一个是应用像对象池获取对象时;另一个是空

2017-06-02 16:57:08 2768

转载 VisualVM远程监控连接方法

1. 通过jstatd启动RMI服务        配置java安全访问,将如下的代码存为文件jstatd.all.policy,放到JAVA_HOME/bin中,其内容如下,        grant codebase "file:${java.home}/../lib/tools.jar" {               permission java.secu

2016-08-18 20:58:38 2289

原创 Redis的Java客户端源码解读

Redis的Java客户端源码解读       Redis的Java客户端对应的类叫做Jedis。客户端调用redis可以直接利用IP端口建立一条连接,即创建一个Jedis,之后就可以用这个Jedis对象执行命令。也可以做一个连接池,大家不用排队使用一条连接。像下面这样: JedisPool pool = new JedisPool(new JedisPoolConf

2016-06-05 18:09:33 1989

转载 如何在 Java 中正确使用 wait, notify 和 notifyAll

wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内

2016-01-17 21:18:05 722 1

原创 JVM关闭及线程的退出

JVM关闭及线程的退出一,关闭方式      JVM的关闭意味着将停止系统中所有的任务,可以由其自动关闭也可以主动触发。下面的几个条件都可以使JVM关闭:1,所有的非守护都已经运行结束。2,调用了System.exit方法。3,杀死JVM进程4,通过系统平台发送关闭信号(比如按Ctrl+C)二,关闭钩子   如果我们想在JVM关闭时做

2016-01-16 16:46:43 9286

原创 Java线程未捕获异常处理

Java线程未捕获异常处理       线程执行完run方法即可正常退出,如果发生了没有捕获的异常则会异常退出。大多数情况下,由于异常导致的线程退出都不是我们想要的。所以在编写的代码的时候要尽可能的捕获处理可以处理的异常,但是也不能光简单的捕获异常然后什么也不做。下面介绍线程异常的处理办法。   JVM为我们提供了线程的未捕获异常处理机制,通过Thread的setU

2016-01-16 13:14:26 10435 1

原创 Java线程的中断

Java线程的中断      Java没有提供抢占式的线程中断方式,所以线程的退出必须以一种协作式的机制来实现。一个线程没有权利停止另一个线程,但是可以告诉另一个线程我想要你停止,另一个线程可以立即停止、也可以完成某些任务后停止、甚至可以不停止。一,一个简单线程协作中断的例子public class SimpleCooperation { private

2016-01-15 23:25:58 654

原创 了解Java中的线程

了解Java中的线程        在Java中,提供了对线程的支持。用户可以定义自己的线程,并且启动执行它们。当使用到线程的时候,最好对自己的线程有所了解,什么时候启动,什么时候结束,发生异常会怎么样,是否会发生阻塞,是否可以中止,等等。只有了解了这些,线程才能真正的为我所用。 一,线程的创建     Java中的线程由Thread类表示,有两种方式可以创建线

2016-01-14 23:19:22 682

转载 深入理解Java内存模型(六)——final

原文地址: 深入理解Java内存模型(六)——final与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,

2016-01-12 20:56:58 627

原创 了解Java并发集合ConcurrentHashMap

了解Java并发集合ConcurrentHashMap                   同Hashtable一样,ConcurrentHashMap也是一个线程安全的map结构集合,并且在多数情况下可以表现出更好的性能。因为ConcurrentHashMap使用了分段锁技术,将整个hash表分成了若干的segment,对其中一个segment加锁的的时候不会影响其他segment的访问

2016-01-11 23:38:02 868

原创 Java利用classloader从classpath加载资源

Java利用classloader从classpath加载资源         我们都知道classloader的getResource、getResources等方法可以加载classpath中的资源。classloader获取资源传入的参数是相对于classpath的相对路径,如果某个资源想要被classloader的加载到就要放到当前的classpath中,或者把资源所在的目录或

2016-01-09 14:09:00 10826 1

原创 Mybatis启动递归层次太多导致Stackoverflow

Mybatis启动递归层次太多导致Stackoverflow    前段时间有一次启动Spring+Mybatis项目,遇到了线程栈内存溢出的情况。好在虚拟机在崩溃的时候将线程栈中的方法调用关系都打印了出来,问题也非常好定位。  经过debug发现,为Dao生成代理的时候首先要生成它的FactoryBean,也就是MapperFactoryBean。而MapperFacto

2016-01-07 22:14:06 4100 3

原创 关于Java中的异常

关于Java中的异常       异常的使用是Java程序离不开的一项技术,可以说没有异常处理的系统不是好系统。异常的发生说明程序遇到了错误,这个错误可以是可恢复的,也可能是不可恢复。有的异常是在编译期可以预见的,有的异常则是在运行期才抛出。常见的异常如文件找不到,找到了没有权限读,读到了但是没有权限写等。但是,并不是说所有的如文件找不到的情况都说明系统发生了错误,还是要根据自己系统的实际

2016-01-05 22:14:22 474

原创 Java中的类加载器

Java中的类加载器          类加载器是Java语言的创新,它负责通过类的全限定名找到其对应的字节码,并且从中定义出Java类对象即java.lang.Class的实例。虚拟机的设计者甚至运行开发者定义自己的类加载器,实现自己的类加载逻辑(但是要遵循一定得规则,后面会讲到)。 一,双亲委派        所有的知道类加载器classloader的Java开发者都应该知

2016-01-03 12:57:14 410

原创 Java中的方法分派

Java中的方法分派      程序设计中,许多时候把不同的函数命名成名字相同可以更清晰地表达出语义。相同的方法名字,需要根据方法的参数、调用者等信息来确定到底应该执行哪个方法。这个确定执行哪个方法的过程就是方法分派。     众所周知,Java是一门面向对象语言,为我们提供了重载和重写的机制。那么,在重载和重写的背后是一个怎样的原理或者原则呢?今天通过实验来揭示 一,静态

2016-01-02 14:32:39 1744 1

原创 Java中的自动拆装箱

Java中的自动拆装箱    Java语言中,基本类型和它对应的封装类型直接可以相互复制,共同参与运算。其实,经过编译后并不是直接使用不同的类型来进行赋值和运算,而是采用了自动拆装箱的方式把数据类型进行了变化。自动拆装箱只是JDK语法糖技术中的一个。如下的代码是可以通过编译并且成功运行的:     public void assignment(){ int

2015-12-29 23:12:00 872

原创 理解JVM的class文件结构

理解JVM的class文件结构        开发者将Java代码写在.java文件中,经过编译器的编译生成了class文件,原来在Java文件中定义的信息将转存到class文件中。只有经过编译后的class文件才能被虚拟机理解,JVM才能将文件中的内容转换成其自己的内存结构。这个过程中,开发者和jvm好比不能沟通的两个人,但是开发者可以通过翻译(编译器)将他自己才懂得Java翻译成cla

2015-12-19 23:50:02 623

原创 SpringAOP模块初始化过程

SpringAOP模块初始化过程        SpringAOP模块的初始化过程可以分为如下几个步骤:1,读取配置,生成Advisor、PointCut等信息。       跟SpringAOP的相关标签比较多,我们可以选择任意一种方式声明AOP。如下就使用了三种不同的方式:       2,在容器创

2015-12-17 09:03:47 3194

原创 SpringMVC中WebDataBinder的应用及原理

SpringMVC中WebDataBinder的应用及原理    Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型。若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数。众所周知,无论客户端传入的是什么类型的请求参数,最终都要以字节的形式传给服务端。而服务端通过Request的getParamete

2015-12-13 17:01:14 25284 2

原创 SpringMVC对HTTP报文体的处理

SpringMVC对HTTP报文体的处理   客户端和服务端HTTP报文传递消息,而HTTP报文包含报文头和报文体。通常,解析请求参数以及返回页面都不需要我们关心HTTP报文体的读取和生成过程。但在某些特定场景下需要直接到请求报文中读取报文体,或者将返回的数据直接写入到报文体中。  在SpringMVC中,可以利用RequestBody注解表示一个参数,说明解析它需要读取报文体,也

2015-12-12 20:23:08 4014

原创 SpringMVC中的HTTP跳转

SpringMVC中的HTTP跳转   项目开发中经常会碰到需要进行HTTP跳转的场景,比如用户请求一个需要登录之后才可以看到的页面,而此时需要跳转到登录页面,待登录成功之后在跳转会现在的页面。那么SpringMVC是怎样实现这样的跳转的呢?今天就让我们仔细的研究一下。一,Servlet中forward与redirect    在原生的Servlet技术中有两种跳转

2015-12-11 23:37:45 7139 2

原创 SpringMVC响应结果的生成

SpringMVC响应结果的生成  前面的文章讲过,SpringMVC接收到来自客户端的请求,找到处理请求的Handler,然后构造适配器HandleAdapter。HandleAdapter处理请求后返回ModelAndView对象(也可能返回null)。以RequestMappingHandlerAdapter为例,看看ModelAndView是怎样生成的,它的invokeHandlerM

2015-12-10 21:55:33 1941

原创 SpringMVC中的HandlerAdapter

SpringMVC中的HandlerAdapter  还记得在DispatcherServlet中SpringMVC处理请求的逻辑吗,网上有一个非常棒的图,阐明了请求分发处理的整个过程。    映射处理器HandlerMapping根据Request返回一个HandlerExecutionChain实例,HandlerExecutionChain并不是真正的处理器Han

2015-11-29 22:24:31 4300

原创 SpringMVC中自定义参数解析器及内置类型的绑定

SpringMVC中自定义参数解析器及内置类型的绑定  前一篇文章讲述了使用标注方式进行参数绑定背后的参数解析原理,今天来整理一下没有使用标注的参数是怎样解析出来的。一,自定义参数解析器  有的时候我们希望在HandlerMethod中直接使用一些对象,而不需要主动去创建或获取。例如,我们想在一个请求方法的第一行打印出系统登录用户的相关信息,而这个用户信息已经再Request中

2015-11-28 22:09:20 10040

原创 SpringMVC中HandlerMethod的请求参数解析过程

SpringMVC中HandlerMethod的请求参数解析过程 SpringMVC中处理请求的方法叫做HandlerMethod,HandlerMethod可以通过多种方式声明它的参数来源,同时对应着不同的解析过程。那么,今天我们就来详细的研究一下SpringMVC请求参数的解析过程。  直接定位到参数解析的方法,下面列出了HandlerMethodInvoker的resolveHand

2015-11-28 14:01:27 16978

原创 HTTP协议中的编码问题

HTTP协议中的编码问题   基于HTTP协议的web网站的建设中,时常会遇到显示乱码的情况。引起乱码现象的原因归根到底就是编码与解码过程的不对称,那么我们就来了解一下HTTP协议的编码规则。一,URL与UrlEncode  网络上的资源都可以通过统一资源定位符(URL)访问到,URL是统一资源标识符(URI)的最常见形式,可以精确说明资源的位置以及如何访问资源。URL需要满足

2015-11-22 16:07:00 7900

原创 字符编码研究

字符编码研究   应用开发中,经常会遇到乱码的问题,对于新手尤其如此。为了原理乱码问题带来的困扰,特整理一下字符编码的原理,从根本上杜绝乱码的出现。一,相关概念   在计算机的世界中,所有的信息都是由01组成的二进制信息,当然也包含字符。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。那么如何将这些字符转换成计算机理解的二进制信息就是编码过程,如何将二进

2015-11-20 23:07:48 3388

原创 无处不在的扩展点BeanPostProcessor

无处不在的扩展点BeanPostProcessor    在spring创建bean的过程中,多次出现了BeanPostProcessor的身影,它们是怎么来的,可以怎么用?本文就对spring中的BeanPostProcessor做个总结。    public interface BeanPostProcessor { Object postProcessBeforeI

2015-11-17 22:50:03 6140

原创 SpringIoC依赖注入的过程(六)

SpringIoC依赖注入的过程(六)    前几篇文章详细地解读了Spring的依赖注入的过程,触发依赖注入的是getBean方法,依赖注入发生的地方是populateBean方法,而获取依赖bean的实例还是通过getBean方法。截止到上文已经解读完populateBean的全部逻辑,本文介绍下,依赖注入之后bean的初始化操作。回到AbstractAutowireCapableBean

2015-11-08 22:37:55 4072

2012北京视讯笔试题

2012年北京视讯的笔试题,第一个来招聘的,几乎不招人。去不了不用灰心

2013-03-12

矩阵运算及解线性方程组工具

主要功能:求矩阵的行列式,矩阵的秩,伴随矩阵,两个矩阵的和,两个矩阵的乘积;以及求出解线性方程组的解,包括有唯一解,矛盾或有多个解的情况。

2012-06-20

openGL 资料openGL参考资料

内附openGL参考资料以及devpak文件

2010-05-09

计算机组成原理白中英版 课后习题答案

计算机组成原理白中英版 课后习题答案 计算机组成原理白中英版 课后习题答案

2010-03-21

数学分析1答案(华东师大 编)第三版

华东师大 编写的数学分析一直是不错的教材 同学们必要时参考一下答案有助于提高水平

2009-09-13

空空如也

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

TA关注的人

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