自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创

Java 中的堆是 JVM 管理的最大的一块内存空间,主要用于存放Java类的实例对象,其被划分为两个不同的区域:新生代 ( Young )和老年代 ( Old ),其中新生代 ( Young ) 又被划分为:Eden、From Survivor和To Survivor三个区域,如下图所示:从JDK8开始,Metaspace(元空间)替代了永久代,如下图所示:无论哪个版本的JDK,...

2020-03-08 11:10:29 156

原创 TCP与UDP区别

TCP为了方便开发网络应用程序,美国伯克利大学在Unix上实现的一种应用程序访问网络的通信协议Socket,Socket的出现使程序员可以很方便的访问TCP/IP;使用TCP/IP的套接字(Socket)进行通信:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端到端口的连接请求; 客户端程序根据服务器程序所在的主机名和端口发出连接请求。以客户端向服务器...

2020-03-06 11:58:58 234

原创 线程池

为什么使用线程池提高程序的执行效率:如果程序中有大量短时间任务的线程任务,由于创建和销毁线程需要和底层操作系统交互,大量时间都耗费在创建和销毁线程上,因而比较浪费时间,系统效率很低;线程池里的每一个线程任务结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用,因而借助线程池可以提高程序的执行效率。控制线程的数量,防止程序崩:如果不加限制地创建和启动线程很容易造...

2020-03-05 17:42:04 157

原创 NIO(即 New IO)

JDK1.4版本开始,JDK提供了新的IO操作API, NIO提供多路(non-blocking) 非阻塞式的高伸缩性网络I/O,从而提高了效率,NIO主要有三大核心组件:Channel、Buffer和Selector,这里重点说前两个。BufferBuffer是一个抽象类,Buffer类型变量对应的对象代表一块缓冲区,ByteBuffer、CharBuffer、DoubleBuffer、...

2020-03-05 10:16:33 157

原创 IO流

声明:本篇博客仅记录各种流的代码,以防止忘记。字节流视频、图片、音频、doc等用记事本打开为乱码的基本都是字节流文件;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class Test { public static void...

2020-03-04 17:52:48 82

原创 File类总结

File类构造方法构造方法有三种形式: 方法 说明 File(String pathname) 通过路径名创建一个新 File 实例 File(File parent, String child) 根据父目录路径File实例和子目录或文件路径创建一个新 File 实例 ...

2020-03-03 17:36:15 143

原创 MyBatis框架一级缓存与二级缓存

为了提升查询效率,提高用户体验,MyBatis提供了数据缓存支持,依据数据缓存的有效范围默认定义了一级缓存和二级缓存。一级缓存1、该级缓存默认开启,不能关闭;2、该级缓存为SqlSession级别的缓存,也称为本地缓存;3、以下4种情况将会导致该级缓存失效:用到的数据表: a、在不同SqlSession中查询数据;import java.io.IOExc...

2020-03-03 14:43:20 300

原创 SpringMVC的运行原理

这篇博客主要是文字表达,至于源码部分我之前的三篇博客有详细的源码分析;只不过是三个部分,整合一下即可,另外,这里文字部分也借鉴了一篇博客(那篇博客我感觉文字表达的挺好的,建议学习):我的博客:一个*.do 请求的执行过程 自定义视图的执行过程 拦截器小结 借鉴博客:SpringMVC工作原理图1注意:该图的数字并不是执行步骤,而是为了说明特此标识;另外,为了便...

2020-03-03 11:09:00 126

原创 拦截器小结

拦截器会拦截指定的请求,并执行其中的方法。从例子和源码上看拦截器的运行和作用。先创建个拦截器类 MyInterceptor :import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet...

2020-02-29 12:08:37 198

原创 自定义视图的执行过程

既然是自定义视图的执行过程,我们得先自定义一个视图;这里就一自定义 MyView 视图为例:import java.io.PrintWriter;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;impo...

2020-02-28 14:35:37 273

原创 详述 ThreadLocal

ThreadLocal 为解决多线程并发问题提供了一个很好的方式;多说无益,我们以例子来更直观的看ThreadLocal 的作用;import java.util.Random;public class Test { private static int data = 0; public static void main(String[] args) { new Thr...

2020-02-27 14:26:49 97

原创 一个*.do 请求的执行过程

这里对很多底层代码依旧不熟悉,因此仅大概说明一下一个 *.do请求的执行过程。一个请求执行的第一个方法即为 service 方法,但是我们发现DispatcherServlet 类中没有该方法;该方法是DispatcherServlet 类继承自FrameworkServlet 类的;代码如下:@Overrideprotected void service(HttpServle...

2020-02-27 12:27:25 3441

原创 SessionAttributes注解

a、该注解只能应用在类中;b、该注解用于将Map、ModelMap、Model或ModelAndView中的数据暂存到HttpSession中以使其可以在多个请求之间共用数据,如下代码:index.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"...

2020-02-26 12:44:00 1402

原创 数据格式化

String 类型的数据转化成 Date 类型的数据,出了使用自定义的数据转化器外还可以通过数据格式化的方式实现;实现很简单,首先需要在类中给需要数据转化的变量添加@DateTimeFormat(pattern="yyyy-MM-dd")注解;然后在application.xml中配置<mvc:annotation-driven ></mvc:annotation-d...

2020-02-26 12:27:03 294

原创 数据类型转换器

Spring 已经为我们提供了很多种类的数据类型转换器了,但,在面对一些问题使,我们依旧需要自己定义自身需要的数据类型转换器。这里以日期字符串转换为Date类型为例;自定义数据类型转换器 DateConverterpackage com.jd.converter;import java.text.ParseException;import java.text.SimpleDat...

2020-02-26 12:00:30 690

原创 线程常用方法总结

currentThread方法返回当前正在执行的线程对象;package venus;public class Test { public static void main(String[] args) { Thread thread = Thread.currentThread(); System.out.println("1-->"+thread); new...

2020-02-25 13:22:04 148

原创 线程的生命周期

Java 中,线程有五种不同的状态:新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead);他们之前的转化图如下:新建状态(New):新创建了一个线程对象; 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 运行状态(Runnin...

2020-02-25 12:23:19 81

原创 MyBatis实现

什么是 MyBatisMyBatis 源自 Apache 的 iBatis 开源项目,从头 iBatis3.x 开始正式更名为 MyBatis。它是一个优秀的持久层框架。为什么使用 MyBatis为了和数据库进行交互,通常的做法是将 SQL 语句写在 Java 代码中国,SQL 语句和 Java 代码耦合在一起不利于后期维护修改,而 MyBatis 能够帮助我们将 SQL 语句和 Ja...

2020-02-12 11:07:31 109

原创 Spring框架中的JDK与CGLIb动态代理小结

JDK与CGLIb动态代理的区别废话不多说,直接上例子:这是例子的简单框架结构;MathService.javapackage com.jd.math;import org.springframework.stereotype.Service;@Servicepublic class MathService implements IMathService { @...

2020-02-11 21:08:17 110

原创 Spring事务小结

事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性;Spring 实现事务管理的两种方式:编程式事务管理:将事务管理代码嵌入到业务方法中来控制事务的提交和回滚,在编程式事务管理中,必须在每个事务操作中包含额外的事务管理代码;声明式事务管理(推荐):大多数情况下比编程式事务管理更好用,它将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理,Spring ...

2020-02-11 10:34:30 80

原创 JdbcTemplate 常用方法

JdbcTemplate是Spring JDBC的核心类,借助该类提供的方法可以很方便的实现数据的增删改查。配置: <context:component-scan base-package="com.jd"></context:component-scan> <bean id="dataSource" class="com.z...

2020-02-10 11:37:15 774

原创 数据源库连接池

数据源库连接池为什么数据库连接是一种关键、有限且昂贵的资源,创建和释放数据库连接是一个很耗时的操作,频繁地进行这样的操作将占用大量的性能开销,进而导致网站的响应速度下降,严重的时候可能导致服务器崩溃;数据库连接池可以节省系统许多开销。是什么数据库连接池(Database Connection Pooling)在程序初始化时创建一定数量的数据库连接对象并将其保存在一块内存区中,它允许...

2020-02-10 10:12:43 192

原创 Spring AOP技术小结

AOP:面向切面编程;该技术可以很大程度的简化代码,我们先不对AOP进行展开,先看例子,从例子中逐步了解AOP技术的作用。注:本篇博客使用的数据库连接技术为HikariCP,具体性能分析与详细(不常用的用法)请看我的下一篇博客:数据源库连接池。为什么使用AOP开头说了,AOP技术可以很大程度的简化代码,那如何简化呢,我们往下看;我们先定义一个springtest web项目;建立...

2020-02-05 17:14:42 157

原创 元注解小结

JDK5及其以后的JDK版本开始支持Java注解;Java注解也叫做元数据。Java除本身自带的注解外该可以自定义自己需要的注解,并且Java提供了四个用于修饰自定义注解的元注解:@Target、@Retention @Documented 和 @Inherited@Target该元注解的作用是控制自定义注解的作用位置,即用于指定被修饰的自定义注解只能用于修饰程序中哪些元素,该元素有...

2020-01-08 12:51:40 92

原创 反射 操作 属性

反射是一种新的创建对象、操作属性和方法的技术。一共是三种:操作构造方法、操作方法和操作属性;这篇博客仅讨论属性。本篇博客需要用到的类:public class Student { private int age; public String name; }获取属性: 注意:属性对应的class类为Field类package venus;import...

2020-01-07 18:44:41 99

原创 反射 操作方法

反射是一种新的创建对象、操作属性和方法的技术。一共是三种:操作构造方法、操作方法和操作属性;这篇博客仅讨论方法。获取方法用到的类:public class Student { public String name; public void doHomework() { System.out.println(name+"正在做作业。。。。。。"); } publi...

2020-01-07 18:03:44 160

原创 反射 操作构造方法

反射是一种新的创建对象、操作属性和方法的技术。一共是三种:操作构造方法、操作方法和操作属性;这篇博客仅讨论构造方法。下面是我们这篇博客所需要的类:public class Student { public String name; public Student() { } public Student(String name) { this.name = na...

2020-01-07 17:32:44 266

原创 获取Class对象的六种方法

Class是类的类,因此Class类的对象为类;Class类的特点:(结合截图理解)该类在java.lang包中; 该类被final所修饰,即该类不可以被子类继承; 该类实现了Serializable接口; 该类的构造方法被private所修饰,即不能通过new关键字创建该类的对象;该图是Class.class中Class类的源码。进入主题,获取Class对象的六种方法:...

2020-01-07 11:08:16 674

原创 context:component-scan标签

如果每一个自建类都使用 <bean> 创建 bean 对象,我们就需要书写大量的代码;如果工程量较大时,则会显得代码多而乱;而context:component-scan标签 的扫描式创建 bean 对象会更高效而简洁。Sprng容器通过 context:component-scan标签扫描其 base-package标签 属性值指定的包及其子包内的所有的类并实例化被@Comp...

2020-01-06 19:55:45 300 1

原创 Spring bean生命周期

我相信对于很多人来说,干说的理解速度比例子差很多,因此我们先上例子:public class Student { private String age; static { System.out.println("静态代码块"); } { System.out.println("非静态代码块"); } public Student() { System.o...

2020-01-05 17:28:22 80

原创 xml 构造方法实例化Java类

根据类中构造方法的参数类型不同,实例化方法可分为下面几类:String类型、基本数据类型UserInfo.javapublic class UserInfo { public UserInfo(int age) { System.out.println("age:"+age); } public UserInfo(String name) { System.ou...

2020-01-03 18:15:44 332

原创 初识Spring

Spring是Java编程里面很重要的一部分,作为初学者刚接触到这里,既好奇又兴奋;这篇博客会从创建Spring项目,创建xml文件,获取IOC容器对象,懒加载以及scope控制范围几个方面初步认识Spring;创建Spring项目和创建普通Java项目没什么区别,因此不详细介绍,这里以创建的spring项目为例;创建xml文件右击spring项目中的src选择new/other....

2020-01-02 17:35:11 196

原创 感知Session绑定的事件监听器

也称为HttpSession域内对象监听器,是监听绑定到HttpSession域中的某个对象的事件监听器;保存在session域中的对象可以有多种状态:绑定到Session中;从Session域中解除绑定;随Session对象持久化到一个存储设备中;随Session对象从一个存储设备中恢复;Servlet规范中定义了两个特殊的监听器接口来帮助JavaBean对象了解自己在Session域中...

2019-12-30 15:41:13 234

原创 属性监听器

域对象中属性变更的事件监听器用来监听ServletContext、HttpSession和HttpServletRequest这三个对象中的属性变更信息事件的监听器。这三个监听器接口分别是ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener,这三个接口中都定义了三个方...

2019-12-30 14:48:19 172

原创 域对象监听器(request、session、application)

域对象监听器是用来监听request、session、application域对象自身的创建和销毁的事件监听器;域对象的创建和销毁时机: 域对象 创建时机 销毁时机 ServletContext Web服务器启动时为每个web应用程序创建相应的ServletContext对象。 ...

2019-12-30 11:36:14 211

原创 Servlet 声明周期

对于初次接触Servlet声明周期的我,不自信能写出比前辈讲解更详细的解释了,因此,本篇博客使用的大部分文字是前辈已总结好的小结,故在此声明!1、加载及实例化Servlet容器负责加载和实例化Servlet。当客户端第一次给服务器发送该Servlet请求时,Servlet容器会加载并创建Servlet实例,(注意:默认情况下不是Tomcat服务器或服务器上的Web应用启动的时候加载并实例化...

2019-12-19 17:58:36 100

原创 分页实现的原理

当查询结果过多时,服务器需要更多的时间进行处理并返回数据;如果不使用分页技术,服务器会将查找到的数据一次性全返回给用户端,浏览器(用户端)加载全部数据的过程是很浪费资源与时间的;而分页技术则能很好的解决这个问题;分页可将服务器返回的数据分段展示给用户,不必一次返回全部数据,仅将用户查询的当页数据或上一页或下一页数据展示给用户;既提高了服务器响应的效率,减少了响应时间;又提升了用户体验,一举两得;...

2019-12-10 17:49:58 1799

原创 el和jstl小结

el(Expression Language)在jsp中使用或显示Java对象的属性和属性值需要写很长的一段代码,多而繁杂;为了优化程序,提高可读性与编码的方便性,el表达式出现了;el表达式的使用大大优化了在jsp中使用Java对象的属性和属性值的代码;request.setAttribute("mouse", "Jerry");我们在web项目的Java代码中给request添加...

2019-12-10 15:01:35 418

原创 三级联动

我们填写资料选择住址时经常看到这样选择省、市、县/区的;这种我们称为三级联动,即只有选择了上一级,与上一级对应的下拉选项才会显示;我们来看一下这个原理是怎么实现的;这个实现原理相对于刚入门Java的萌新来说是一个相当麻烦的过程,因此,我会将我用到的代码尽量的全放出来,供大家参考;先看这个项目的结构:我们从下往上看:lib中的 gson-2.8.4.jar、mysql-connect...

2019-12-08 10:03:01 1472

原创 网页次常用css样式总结

这篇博客主要说一些不怎么常用的,但不是极其罕见的css样式;outlineoutline也是边框样式,但是不同于border的是,outline边框不占html的空间;类似于float的悬浮效果;<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>...

2019-12-06 17:43:31 190

空空如也

空空如也

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

TA关注的人

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