自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (2)
  • 收藏
  • 关注

原创 SpringMVC工作原理

具体工作流程:当客户端发出一个请求,首先被DispatcherServlet捕获(若该请求不经过DispatcherServlet,那么直接返回相应资源,非SSM)DispatcherServlet收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制。判断是否有相应的Handler方法。如果没有找到相应的解析器Handler,查看是否配置...

2020-03-02 02:54:08 205

原创 JVM_堆

Java 中的堆是 JVM 管理的最大的一块内存空间,主要用于存放Java类的实例对象,其被划分为两个不同的区域:新生代 ( Young )和老年代 ( Old ),其中新生代 ( Young ) 又被划分为:Eden、From Survivor和To Survivor三个区域。我们可以通过一段简单的代码来查看堆的空间划分。public class Jtest { public st...

2020-03-09 00:24:41 206

原创 网络编程TCP与UDP

TCP与UDP区别1.TCP面向连接,发送数据前要先建立连接;UDP是无连接的,发送数据前不需要建立连接;2.TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,不保证可靠交付;3.UDP有较好的实时性,效率比TCP高,适用于对高速传输和实时性较高的通信或广播通信;4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;...

2020-03-06 12:12:41 229

原创 BIO、NIO、AIO 区别

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。...

2020-03-05 23:29:55 200

原创 接口和抽象类区别

实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。构造函数:抽象类可以有构造函数;接口不能有。main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。实现数量:类可以实现很多个接口;但是只能继承一个抽象类。访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。...

2020-03-05 23:19:44 121

原创 String 类的常用方法

indexOf():返回指定字符的索引。charAt():返回指定索引处的字符。replace():字符串替换。replaceAll()可以利用正则表达式替换。trim():去除字符串两端空白。split():分割字符串,返回一个分割后的字符串数组。getBytes():返回字符串的 byte 类型数组。length():返回字符串长度。toLowerCase():将字...

2020-03-05 23:14:39 102

原创 线程池

线程池原理:线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。因此,它有以下几个主要优点:提高程序的执行效率:如果程序中有大量短时间任务的线程任务,由于创建和销毁线程需要和底层操作系统交互,大量时间都耗费在创建和销毁线程上,因而比较浪费时间,系统效率...

2020-03-05 22:52:10 116

原创 IO流

IO流按使用方式可以简单的分为4种:1.字符字节流2.缓冲字符字节流3.转换流4.数据流字节流例子:运行前运行后字符流例子:运行前运行后缓冲流先将数据读入到缓冲区中,目的是提高程序读出的性能。缓冲流也分为字节缓冲流和字符缓冲流。示例:运行后:转换流,操作字符文件时有可能因为编码不...

2020-03-05 12:02:30 107

原创 String str1="i"与 String str2=new String("i")是否一样及常量池,堆和栈的了解

String str1="i"与 String str2=new String("i") 是不一样的。String str1="i" 中 str 指向的对象是 常量池中的 “i”String str2=new String("i") 中 str 指向的是 堆中的 “i”理解这一点需要我们了解常量池,堆和栈的区别,常量池存放字符串常量和基本类型常量(public static fi...

2020-03-04 23:27:26 677 2

原创 操作字符串的类及其区别

操作字符串的类有 String StringBuffer StringBuilder。String声明的是不可变对象,每次操作都会生成一个新的String 对象,然后将指针指向新的String 对象。StringBuffer 和 StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下不建议使用StringStringBuffer 和 Strin...

2020-03-04 21:45:15 156

原创 Math.round(-1.5) 等于多少?

round表示四舍五入,算法为 Math.floor(x+0.5) ,(floor为向下取整,即返回一个不大于该数的整数),round也就是意味着将原来的数字加上 0.5 之后向下取整 所以 round(-1.5)为 -1...

2020-03-04 21:33:28 1800

原创 java File类总结

我们在java 类中打出 new File() 可以看到有四种创建方法。第一个构造方法可以传进去一个路径。第二个构造方法是传进去一个文件。分别对应下面截图的第 12 和 第 10 行 代码。第三个构造方法是传进去一个 File 类的路径,和在这个路径下的子文件或子路径。第四个构造方法是传进去一个 String 类的路径,和在这个路径下的子文件和子路径。分别对应截图中的第 ...

2020-03-02 16:56:39 444

原创 MyBatis缓存

MyBatis提供了数据缓存支持,依据数据缓存的有效范围默认定义了一级缓存和二级缓存一级缓存该级缓存默认开启,不能关闭;该级缓存为SqlSession级别的缓存,也称为本地缓存;以下面为例。在同一 Session 里执行同一个查询两次,控制台日志只有一个查询以下4种情况将会导致该级缓存失效a、在不同SqlSession中查询数据;b、相同SqlSessio...

2020-03-02 11:42:28 118

原创 两个对象的 hashCode()相同, equals()不一定为 true

hashCode() 的作用是获取哈希码,也称为散列码;它实际上是根据一个哈希函数返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。既然是根据函数返回,那么极有可能在两个不同的对象计算之后产生相同的哈希值。而若 equls 返回为 true , 则两者的hashcode一定相等,即相等的对象具有相等的哈希码。在网上找到的例子:...

2020-02-28 11:21:42 860

原创 SpringMVC拦截器详述

在Spring配置文件中设置拦截器。<mvc:interceptors> <mvc:interceptor> <bean class="com.jd.interceptor.Interceptor"></bean> </mvc:interceptor></mvc:interceptors>若要配置拦截特定...

2020-02-28 10:54:23 126

原创 == 与 equal 的区别。

== 对于基本型变量比较的是值,而对于引用型变量比较的是引用的对象是否相同。例如下的代码,a与ba与b指向的是同一个引用,因此使用==得到的是true。c 是新建的一个String对象,当与a使用==时,结果就是false;而对于equals 可以看出比较的是 其中的值。我们打开String 的 equal 源码。可以看到, equal 方法是逐个比较String 中的值。他...

2020-02-27 22:28:42 151

原创 JDK 和 JRE 的区别。

JDK 指的是 java 开发工具包,包括运行环境和开发环境。Java Development Kit。JRE指的是java运行环境,只为了java的运行提供环境。Java Runtime Environment。可以说JDK包含了JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。假如我们只是为了运行 java 只需要安装 JRE ...

2020-02-27 22:08:57 78

原创 异常处理过程

我们可以直接在Controller 里创建 带有 @ExceptionHandler 注解的异常处理方法。@ExceptionHandler({ArithmeticException.class}) public String exception(Exception e) {//出現java.lang.ArithmeticException异常时交由该方法处理 System.out.p...

2020-02-27 21:48:08 132

原创 自定义视图执行过程

要自定义视图首先创建一个实现View接口的类,添加@Component注解。如下,@Componentpublic class ToView implements View{ public String getContentType() { return "text/html"; } public void render(Map<String, ?> model,...

2020-02-27 13:01:55 163

原创 InternalResourceViewResolver请求流程

当用户对SpringMVC应用程序发起请求时,这些请求都会被 DispatcherServle t处理,通过处理器找到最为合适的 HandlerMapping定义的请求映射中最为合适的映射,然后通过HandlerMapping找到相对应的Handler,然后再通过相对应的 HandlerAdapter 处理该Handler。返回结果是一个ModelAndView对象,当该ModelAndView对...

2020-02-26 22:15:40 749

原创 ThreadLocal理解

使用 ThreadLocal 的目的在与实现线程内的数据共享。每个线程调用 ThreadLocal 对象的set方法,就相当于往其内部的map中添加一条记录,key是各自的线程对象,value是各自的set方法传进去的值。在线程结束时可以调用ThreadLocal.clear()方法进行释放内存。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的变量封装进Thr...

2020-02-26 13:18:57 98

原创 Controller中值返回页面的四种方法

Controller中值返回页面有四种方法。分别是使用ModelAndView,Map,Model和HTTPServletRequest。分为两大类。第一大类是使用ModelAndView。因为他的返回值是ModelAndView。方法:@RequestMapping("/userinfo/userInfoView.do")public ModelAndView userInfoVie...

2020-02-26 00:23:30 4145

原创 SessionAttributes注解

@SessionAttributes只能应用在类上;它用于将Map、ModelMap、Model或ModelAndView中的数据暂存到HttpSession中以使其可以在多个请求之间共用数据,注意它不支持HttpServletRequest@SessionAttributes除了可以通过value或names注解属性指定哪些属性放到Session中以外,还可以通过type注解属性进行指定...

2020-02-26 00:12:56 484

原创 数据格式化 及 类型转换和格式化同时使用问题

此外我们还可以使用注解数据格式化来实现数据类型转换。例,在vo类的变量声明上添加@DateTimeFormat(pattern="yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") private Date birth;然后在Spring 的xml文件中配置<mvc:annotation-driven></m...

2020-02-25 23:00:54 272

原创 数据类型转换器——String转Date为例

Springmvc默认数据类型转换器并不能支持所有的类型转换,所以当我们需要某种他所不能支持的类型转换时,我们可以自定义创建数据类型转换器。例如。在学习过程中都会遇到的提交日期问题,前端传String,到后端我们将他变为Date对象。在提交下面这个表单时。我们输入的是String类型的数据。<form action="./userinfo/add.do"> &lt...

2020-02-25 22:17:45 420

原创 线程常用方法

首先创建线程有两种方法,一种是通过继承Thread方法。public class ThreadTest1 extends Thread { @Override public void run() { try { Thread.sleep(3000); } catch (Int...

2020-02-25 09:44:36 141

原创 线程生命周期

在操作系统中有一个经典的三态模型。即就绪态,运行态,阻塞态。而在java中一个进程 Thread 拥有五种状态即新建状态New、就绪状态Runnable、运行状态Running、阻塞状态Blocked和死亡状态Terminated,这五种状态即进程的生命周期。新建状态New:当我们使用 new Thread() 新建一个线程的时候,我们仅仅只是在编程语言上边创建了一个线程,而操作系统中并没...

2020-02-25 00:53:30 87

原创 ArrayList和LinkList 复习

ArrayList底层是由数组实现的,而正是因为数组的特性,ArrayList支持随机访问,实现了RandomAccess()接口,可借用get()方法通过数组下标实现随机访问得到元素。LinkList底层是由双向链表实现的,双向链表一次只能寻找到他的前驱和后继元素,所以不支持随机访问,未能实现RandomAccess()接口,虽然LinkList也可以通过向get()方法传入下标访问,不过在...

2020-02-25 00:26:58 138

原创 配置DispatcherServlet类时load-on-startup标签作用源码分析

我们在使用ssm时在 web.xml 中有如下配置 <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>...

2020-02-18 01:05:26 193

原创 SSM框架下的请求执行过程源码分析

首先,我们发出的一个请求被传入到 web.xml 中的 DispatchServelt 中 <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherSe...

2020-02-18 00:29:09 361

原创 MyBatis之动态SQL

使用myBatis的动态sql语句可以更加灵活的对数据库进行操作。例如上一篇博客里的 mapper 中有这样的代码 <select id="getUserName" resultType="java.lang.String"> select user_name from user_info where id=#{id} </select>根据 id ...

2020-02-13 02:02:30 110

原创 MyBatis实现

使用MyBatis方便对java中的SQL语句进行管理,能够帮助我们将SQL语句和Java代码分离,方便了后期因需求变动而对SQL语句进行修改。下面给大家演示一下MyBatis的实现。要实现我们需要MyBatis的jar包。下载地址https://github.com/mybatis/mybatis-3/releases首先在数据库中建立几条记录创建一个IUserInfo的接口,声...

2020-02-10 18:30:35 153

原创 定时器

Java中定时器用于在特定时间运行指定的Java程序,其实现方式有两种:TimerTask和Quartz,其中Quartz最为常用。首先我们要有架包。Quartz下载地址:http://www.quartz-scheduler.org/downloads/然后自定义继承QuartzJobBean抽象类的任务类import org.quartz.JobExecutionContex...

2020-02-10 12:28:13 76

原创 Spring框架中的JDK与CGLib动态代理

我们在使用Spring框架中的getBean();从容器中获取得到代理类时有时会出先这种错误org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'xx' available此时要明白为什么出错,我们需要理解Spring中JDK代理和CGlib代理的区别。JDK...

2020-02-10 10:54:46 375

原创 Spring事务及配置

事务是一系列的动作,一旦一个事务其中有一个动作出现错误,必须全部回滚,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态,避免出现由于数据不一致而导致的接下来一系列的错误。事务的出现是为了确保数据的完整性和一致性,事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性。声明式事务管理将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理,Sprin...

2020-02-07 14:36:06 98

原创 JDBCTemplate

JdbcTemplate是Spring JDBC的核心类,是Spring对JDBC的封装,目的是使JDBC更加易于使用。借助该类提供的方法可以很方便的实现数据的增删改查XML配置<bean class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataS...

2020-02-07 14:10:14 143

原创 JavaSpring数据库连接池

在系统中频繁的进行数据库连接的创建和释放是非常浪费计算机资源的行为,而数据库连接池能够有效的缓解这种行为。数据库连接池(Database Connection Pooling)是在程序初始化时创建一定数量的数据库连接对象并保存在内存中,应用成勋可以重复的使用这些数据库连接对象。在数据库连接池中有这样几个概念:最小连接数:即数据库连接池中初始化存在的数据库连接对象数目。若应用程序对数据库...

2020-02-07 13:45:34 695

原创 AOP中使用的注解 @Service @Aspect @component

@Service标注将这个类在扫描时注册到Spring容器管理@Aspect是将该类声明为切面类@component把该类实例化放入到spring容器中,@五种增强("execution(public 返回值 地址.*(..))")AOP实现的大致流程即为将目标方法的类通过@Service注册到Spring容器管理,以便之后生成代理对象通过@Aspect声明切面类,然后@c...

2020-02-06 11:57:44 2361

原创 AOP五种增强执行时机及@around增强注意事情

AOP的执行时机,一共有五个。分别为前置增强befor,后置增强after,返回后增强afterRunturning,异常后增强afterThorwing,环绕增强around正如他们的名字一样,前置增强是在目标方法执行之前执行,后置增强在目标方法执行之后执行,返回后增强在目标方法执行return之后执行,异常增强则是在目标方法抛出异常后执行,而环绕增强在它修饰的方法中可以同时实现以上所...

2020-02-06 11:32:16 1916

原创 Spring AOP @Befor为例 实现的两种方法:注解和XML配置

什么是AOP?AOP(Aspect-Oriented Programming)面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。在我看来,这种方式的作用就相当于语文考试写作文,在写完一句话后你发现少了东西,要在其中添加几个字,然后你就在一个字的前面或后面拉了添加符号,写上了缺少的文字。在前面和后面添加这就对应了前置增强和后置增强,当然A...

2020-02-05 13:30:15 512

HikariCP-3.3.1.jar

HikariCP数据库连接池尽管是后起之秀,但却PK掉其它数据库连接池技术,成为目前速度最快的数据库连接池,SpringBoot2.0也已经采用HikariCP作为默认连接池配置。

2020-02-07

geany-1.36 windows安装文件

geany-1.36_setup Geany是一个小巧的使用GTK+2开发的跨平台的开源集成开发环境,以GPL许可证分发源代码,是免费的自由软件。 该软件小巧、启动迅速,缺点是界面简陋、运行速度慢、功能简单。

2020-01-02

空空如也

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

TA关注的人

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