
java
任枫丶
在距离java坚持的道路越来越远,believe yourself and trust yourself!
展开
-
java适配器模式详解
适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。首先,我们来看看类的适配器模式,先看类图:核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码:public class Source { public void method1() {...转载 2019-08-23 15:42:15 · 1822 阅读 · 2 评论 -
spring中<context:annotation-config> 和<context:component-scan>详解及区别
我们一般在含有Spring的项目中,可能会看到配置项中包含这个配置节点<context:annotation-config>,这是一条向Spring容器中注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcesso和 Requi...翻译 2019-07-11 16:21:33 · 271 阅读 · 0 评论 -
spring 声明式事务中使用try catch捕获异常时分析
最近遇到这样的问题,使用spring时,在业务层需要捕获异常(特殊需要),当前一般情况下不需要这样做的。具体如下:在ServiceA类中有method1,在该方法中调用另一个ServiceB类的method2方法时(假定该方法抛出异常),method1方法捕获该异常但是没有向上抛出。spring提示:org.springframework.transaction.UnexpectedRoll...转载 2019-07-09 14:31:54 · 682 阅读 · 0 评论 -
java中list集合循环删除所有元素报java.util.ConcurrentModificationException 异常问题详解
环境:JDK 1.8.0_111在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常,本文就以ArrayList为例去理解和解决这种异常。一、单线程情况下问题分析及解决方案1.1 问题复现先上一段抛异常的代码。 public void test1() { ...转载 2019-07-03 09:35:57 · 3335 阅读 · 0 评论 -
RandomAccessFile的用法
1.RandomAccessFile的简介1.1为什么要用到RandomAccessFile我们平常创建流对象关联文件,开始读文件或者写文件都是从头开始的,不能从中间开始,如果是开多线程下载一个文件我们之前学过的FileWriter或者FileReader等等都无法完成,而当前介绍的RandomAccessFile他就可以解决这个问题,因为它可以指定位置读,指定位置写的一个类,通常开发过程中...转载 2019-06-22 15:25:43 · 2331 阅读 · 0 评论 -
java中的nio、bio和aio的理解
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒...转载 2019-06-22 09:45:26 · 145 阅读 · 0 评论 -
Joda-Time DateTimeFormatter 日期格式化与解析
一、前言在进行开发工作中,经常会面对两种操作。1、把时间对象格式化成字符串后存储下来1、把格式化好的字符串解析成时间对象Joda-Time为这两个核心需求的解决方案就是DateTimeFormatter。额外提一点,DateTimeFormatter在格式化和解析时是支持时区的。二、核心对象:2.1 DateTimeFormatter日期格式化与解析2.2 Loc...转载 2019-06-25 14:40:15 · 17126 阅读 · 0 评论 -
PostgreSQL 修改表字段常用命令
--数据库、模式、表名 "identities"."Test"."tab_test"--修改字段名ALTER TABLE "identities"."Test"."tab_test" RENAME "u_name" to realname ;--添加字段ALTER TABLE "identities"."Test"."tab_test" ADD COLUMN updcontent...转载 2019-06-13 15:03:26 · 3241 阅读 · 0 评论 -
java中FutureTask源码解析
简介:FutureTask是接口Future的实现,可以保存callable异步处理返回的结果。FutureTask中部分变量如下:private static final int NEW = 0; //任务新建和执行中private static final int COMPLETING = 1; //任务将要执行完毕private static final...转载 2019-05-24 09:34:50 · 295 阅读 · 0 评论 -
在linux的ubuntu系统播放mp3格式文件
执行命令:sudo apt-get install sox libsox-fmt-all填写用户密码,输入Y,按enter键,完成安装之后,输入命令: play sorry.mp3即可播放 sorry.mp3 文件,倘若停止播放可按组合键 ctrl+c 进行停止参考: https://www.linuxidc.com/Linux/2013-05/85060.htm...原创 2019-05-13 11:06:54 · 2797 阅读 · 0 评论 -
spring中自定义属性编辑器如何注入和取出的流程(通过CustomEditorConfigurer)
我们可以自定义属性编辑器对类中的实例对象赋值,通过string类型值转换成对象类型值进行赋值。当我们使用下列方式注册时:<bean id="PropertyEditorConfigurer1" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <p...原创 2019-07-18 10:47:25 · 301 阅读 · 0 评论 -
spring中类型转换器的注入和取出流程(通过ConversionServiceFactoryBean方式注入)
package renchaofeng_conversionService;import java.util.Date;public class User { private String loginname; private Date birthday;//需要赋值的Date类型属性值 public String getLoginname() { return loginna...原创 2019-07-19 10:09:08 · 1046 阅读 · 0 评论 -
web.xml中context-param标签和listener监听器和filter过滤器和servlet加载顺序
1.初始化过程分四步在启动 Web 项目时 , web 容器 ( 比如tomcat ) 会先读取 web.xml 文件中的两个节点 <listener> 和 <context-param> 接着容器会创建一个 ServletContext 对象 (也就是 servlet上下文 ), 这个 web 项目的所有部分都将共享这个上下文 在第一步读取的 <conte...转载 2019-07-24 10:16:31 · 212 阅读 · 0 评论 -
java设计模式之建造者模式
11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:“牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰、宝马的车辆模型都交给我们公司制作了,不过这次又额外增加了一个新需求:汽车的启动、停止、喇叭声音、引擎声音都由客户自己控制,他想什么顺序就什么顺序,这个没问题吧?” 看着老大殷切的目光,我还能说啥?非常肯定地点头,“没问题!”,加班加点...转载 2019-08-22 13:28:09 · 298 阅读 · 0 评论 -
Spring MVC之RequestMappingHandlerAdapter调用解析处理方法详解
RequestMappingHandlerAdapter实现了HandlerAdapter接口,顾名思义,表示handler的adapter,这里的handler指的是Spring处理具体请求的某个Controller的方法,也就是说HandlerAdapter指的是将当前请求适配到某个Handler的处理器。RequestMappingHandlerAdapter是HandlerAdapter...转载 2019-07-23 14:11:29 · 1136 阅读 · 0 评论 -
Missing artifact javax.servlet.jsp.jstl:jstl:jar:1.2和使用maven为web工程引入jstl包时报错了
今天在学习网上一个使用maven搭建web项目时遇到一个问题:在pom文件添加jstl包时发现错误<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl --><dependency> <groupId>javax.servlet.jsp.jstl</group...原创 2019-07-22 10:47:34 · 4200 阅读 · 3 评论 -
SpringMVC拦截器详解[附带源码分析]
参考:https://www.cnblogs.com/fangjian0423/p/springMVC-interceptor.html1.HandlerExecutionChain类 由HandlerMethod和Interceptor集合组成的类,会被HandlerMapping接口的getHandler方法获取。2.HandlerInterceptor接口 ...转载 2019-07-25 17:00:34 · 301 阅读 · 0 评论 -
SpringMVC源码剖析消息转换器HttpMessageConverter
概述 在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制。#Http请求的抽象 还是回到请求-响应,也就是解析请求体,然后返回响应报文这个最基本的Http请求过程中来。我们知道,在servl...翻译 2019-07-25 10:55:55 · 209 阅读 · 0 评论 -
$.ajax 中的contentType和dataType区别
$.ajax contentType 和 dataType , contentType 主要设置你发送给服务器的格式,dataType设置你收到服务器数据的格式。在http 请求中,get 和 post 是最常用的。在 jquery 的 ajax 中, contentType都是默认的值:application/x-www-form-urlencoded,这种格式的特点就是,name/valu...转载 2019-07-25 10:37:27 · 644 阅读 · 0 评论 -
HTTP Status 415 – Unsupported Media Type解决方案之一
首先把contentType设置为application/json;charset=utf-8,如果还是不行,检查有没有导入json相关jar包,其json相关jar包全家桶:<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-...原创 2019-07-24 17:27:04 · 1901 阅读 · 0 评论 -
ApplicationListener调用过程详解
参考:https://blog.youkuaiyun.com/u014263388/article/details/78996509 https://blog.youkuaiyun.com/liyantianmin/article/details/81017960 https://www.cnblogs.com/duanxz/archive/2014/06/06/3772654.html...原创 2019-07-24 14:38:05 · 489 阅读 · 0 评论 -
ContextLoaderListener详解
每一个整合spring框架的项目中,总是不可避免地要在web.xml中加入这样一段配置。<!-- 配置spring核心监听器,默认会以 /WEB-INF/applicationContext.xml作为配置文件 --><listener> <listener-class>org.springframework.web.context.Contex...转载 2019-07-24 13:25:15 · 2392 阅读 · 0 评论 -
spring中自定义属性编辑器注入org.springframework.beans.factory.config.CustomEditorConfigurer时报错问题
报错信息如下:Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PropertyEditorConfigurer1' defined in class path resource [spring/applicati...原创 2019-07-17 13:54:55 · 1048 阅读 · 0 评论 -
线程池ThreadPoolExecutor中submit方法和execute方法的区别和关系
ThreadPoolExecutor是线程池,其继承AbstractExecutorService,如下代码:package java.util.concurrent;import java.util.ArrayList;import java.util.ConcurrentModificationException;import java.util.HashSet;import ...原创 2019-05-17 11:08:49 · 3987 阅读 · 0 评论 -
java中观察者模式思路浅谈总结
1.观察者模式有四个角色:抽象被观察者角色:定义注册观察者,删除观察者和通知观察者方法。具体被观察者角色:抽象被观察者角色的具体实现。抽象观察者角色:定义一个接收消息更新方法。具体观察者角色:抽象观察者角色的具体实现。抽象被观察者角色接口定义:package renchaofeng_observer;public interface Observerable { ...原创 2019-05-22 13:26:04 · 236 阅读 · 0 评论 -
spring中FactoryBean浅析
参考:https://blog.youkuaiyun.com/baidu_19473529/article/details/80558996基本概念FactoryBean是一个Java bean,但是和普通的javabean不太一样,他是能生产出当前对象的工厂bean。基本使用FactoryBean是一个接口,创建类实现此接口,如下:package test;import org.s...翻译 2018-11-14 09:24:30 · 182 阅读 · 0 评论 -
spring中beanFactoryPostProcessor使用
参考:https://www.cnblogs.com/sishang/p/6588542.html基本概念1. beanFactoryPostProcessor接口可以在bean未被实例化之前获取bean的定义即配置元数据,然后根据需要进行更改。2. beanFactoryPostProcessor里有方法 void postProcessBeanFactory(Configurab...翻译 2018-11-13 10:02:44 · 2298 阅读 · 0 评论 -
Java中map中值按照key键和value值分别排序
参考:https://www.cnblogs.com/zhujiabin/p/6164826.html1. 按照key排序,可以借助有序集合TreeMap实现,如下: @Test public void sortByMapKey() { Map<String,String> map = new HashMap<String,String>(); ...翻译 2018-11-02 14:25:02 · 388 阅读 · 2 评论 -
java中重写equals方法为什么要重写hashcode方法
参考博文:https://www.cnblogs.com/dolphin0520/p/3681042.htmlhashcode方法作用hashcode方法是Object类的本地方法,public native int hashcode(); Java中hashcode方法主要用于散列类型集合的正常运行,包括HashSet、HashMap以及HashTable。如何判断一个对象是否保存在...原创 2018-11-01 15:16:37 · 671 阅读 · 0 评论 -
浅谈Java中的this用法
基本用法1. this.变量名代表当前对象的成员变量。this.方法名代表当前对象的成员方法。this代表当前对象。2. 当在内部类或匿名类中时,this代表其所在的内部类或匿名类,如果要用外部类的方法和变量,则加上外部类的类名。例如:public class HelloB { int i = 1; public HelloB() { Thread...原创 2018-10-24 16:31:49 · 276 阅读 · 0 评论 -
java中static关键字浅谈
基本规则Java中static关键字修饰的成员变量和方法是静态变量和方法,使用规则如下:1. static方法只能调用static方法或static变量,不能调用非static方法或非static变量,换句话说就是,静态方法只能调用静态方法或静态变量,不能调用非静态方法或非静态变量。注:在静态方法中可以通过创建对象,通过创建的对象调用该对象的非静态方法。2.static方法中不能使用t...原创 2018-10-24 15:41:28 · 1289 阅读 · 0 评论 -
java中final关键字浅谈
简单随笔1. final关键字可以修饰类,表示此类不可被继承,final类里的成员方法隐饰final,final类里的成员变量可以根据需要是否定义为final2. final可以修饰方法,主要原因是防止此方法被子类修改,即子类可以继承final方法但不能重写(类的private方法会被隐式的指定为final),另:private方法子类可以继承但不能使用,private方法隐式为final...原创 2018-10-31 11:11:44 · 161 阅读 · 0 评论 -
Java中volatile关键字浅析
1.基本理解a. 可见性:指多个线程之间对共享变量的可见性,一个线程修改状态时别的线程是可见的(意思是一个线程改变了状态,别的线程能够立马及时的看到)。用volatile修饰的变量,当一个线程改变了状态时,其他线程会立马放弃各自缓存中的值,直接从主存中获取最新值刷新自己的缓存。Java中可以使用volatile保证可见性。b. volatile不能保证原子性但可以保证可见性,volatil...原创 2018-10-26 15:41:49 · 168 阅读 · 0 评论 -
Java中super关键字浅谈
super基本规则1. super关键字表示父类的引用,可以通过super调用父类的方法和变量,在静态方法中不能使用this或super关键字2. super.toString()此方法的值是子类,super.getClass().getName()的值指向子类的名称,想获取父类名称,使用super.getClass().getSuperclass().getName()可以获取父类名称(...原创 2018-10-26 10:10:48 · 283 阅读 · 0 评论 -
浅谈Java中原码、补码和反码
学习计算机时,对于十进制转二进制大家很有所了解,这次讲讲原码、补码和反码的基本概念。原码原码就是十进制数字最原始的二进制表示,在Java中,对于整数而言,其原码格式为最高位为符号位,该位上1表示负数而0表示正数,剩余位数为该数字的二进制表示。以Java中32位int型的整数2及-2举例:2的原码:00000000 00000000 00000000 00000010-2的原码: 10...原创 2018-10-23 15:00:55 · 1701 阅读 · 1 评论 -
tomcat加载spring过程以及实例化bean
参考:https://blog.youkuaiyun.com/yztezhl/article/details/52300663tomcat启动加载web.xml配置的ContextLoaderListener,调用方法contextInitialized开始初始化, 在initWebApplicationContext中先创建一个XMLWebapplicationContext, ...转载 2018-11-14 10:12:02 · 1805 阅读 · 2 评论 -
spring中ApplicationContextAware浅析使用
参考:https://blog.youkuaiyun.com/andybbc/article/details/50607347 https://blog.youkuaiyun.com/u011485376/article/details/82633661基本感言一个Javabean通过实现ApplicationContextAware接口简直太棒啦,这样就可以在实现类中获取容易上下文a...原创 2018-11-14 10:50:10 · 877 阅读 · 0 评论 -
spring InitializingBean 浅析
参考:https://blog.youkuaiyun.com/qq_38572383/article/details/81390620 参考:https://www.jianshu.com/p/3d33b427ca56前一段时间在项目中需要在项目初始化的时候,对一些常用数据进行缓存,我的第一反应是监听器,所以使用了java的ServletContextListener全局异常监听器,但是出现了...原创 2018-11-14 11:15:20 · 508 阅读 · 0 评论 -
java中return和finally执行顺序及返回值问题
总结: a. 对于返回值是基本类型的也包括String类型,情况分几种: 1.只有try体中有return时,返回try里的值 2.只有finally体中有return时,返回finally里的值 3.在try体和finally体里都没有return,只有最下面有个return时,以finally体里为准 4.当try体和...原创 2019-05-13 10:18:19 · 398 阅读 · 0 评论 -
java中的基于jdk1.8的hashmap的get方法、put方法和resize扩容方法源码浅析
HashMap类成员变量释义,代码如下: static final int DEFAULT_INITIAL_CAPACITY = 16;//默认初始容量大小16 static final int MAXIMUM_CAPACITY = 1073741824;//hashmap最大容量是2的30次方 static final float DEFAULT_LOAD_FACTOR = 0.75...原创 2019-05-21 15:43:59 · 399 阅读 · 0 评论