自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (7)
  • 收藏
  • 关注

原创 分布式Session不一致解决方案

Session简介浏览器有个cookie,在一段时间内这个cookie都存在,然后每次发请求过来都带上一个特殊的jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的session域,里面可以放点儿数据。一般只要你没关掉浏览器,cookie还在,那么对应的那个session就在,但是cookie没了,session就没了。常见于什么购物车之类的东西,还有登录状态保存之类的。你单块系统的时候这么玩儿session没问题啊,但是你要是分布式系统了呢,那么多的服务,session状态

2020-06-30 10:55:05 2026

原创 编程开发中的Compile、Make、Build详细对比

针对Java的开发工具,一般都有Compile、Make和Build三个菜单项,完成的功能的都差不多,但是又有区别。编译,是将源代码转换为可执行代码的过程。编译需要指定源文件和编译输出的文件路径(输出目录)。Java的编译会将java编译为class 文件,将非java的文件(一般成为资源文件、比如图片、xml、txt、poperties等文件)原封不动的复制到编译输出目录,并保持源文件夹的目 录层次关系。在Java的集成开发环境中,比如Eclipse、IDEA中,有常常有三种与编译相关的选项Compi

2020-06-30 10:27:13 1828

原创 深入解析Java重写 - 返回值、修饰符必须一致?

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。在面向对

2020-06-29 16:00:32 11903 4

原创 一文看懂Java的枚举

1 定义一种数据类型,只包含自定义的特定数据,是一组有共同特性的数据的集合。创建需要enum关键字,如:public enum Color{ RED, GREEN, BLUE, BLACK, PINK, WHITE; }enum的语法看似与类不同,但它实际上就是一个类。把上面的编译成 Gender.class, 然后用 javap -c Gender反编译可得到Gender 是 final 的Gender 继承自 java.lang.Enum 类声明了字段对应的两个

2020-06-27 22:16:12 1525

原创 彻底讲清 Java 的泛型(上)

普通的类和方法只能使用特定的类型:基本数据类型或类类型。如果编写的代码需要应用于多种类型,这种严苛的限制对代码的束缚就会很大。多态是一种面向对象思想的泛化机制。可以将方法的参数类型设为基类,这样的方法就可以接受任何派生类作为参数,包括暂时还不存在的类。这样的方法更通用,应用范围更广。在类内部也是如此,在任何使用特定类型的地方,基类意味着更大的灵活性。除了 final 类(或只提供私有构造函数的类)任何类型都可被扩展,所以大部分时候这种灵活性是自带的。接口可以突破继承体系的限制单一的继.

2020-06-26 04:35:54 2022 4

原创 Java 反射最终篇 - Mock 对象和桩

Mock 对象和 **桩(Stub)**在逻辑上都是 Optional 的变体。他们都是最终程序中所使用的“实际”对象的代理。不过,Mock 对象和桩都是假扮成那些可以传递实际信息的实际对象,而不是像 Optional 那样把包含潜在 null 值的对象隐藏。Mock 对象和桩之间的的差别在于程度不同。Mock 对象往往是轻量级的,且用于自测试。通常,为了处理各种不同的测试场景,我们会创建出很多 Mock 对象。桩只是返回桩数据,通常是重量级的,在多个测试中被复用。可以根据它们被调用的方式,通过配

2020-06-26 03:51:42 2844

原创 深度解析 Java 的 Optional 类

使用内置的 null 来表示没有对象,每次使用引用的时候就必须测试一下引用是否为 null,这显得有点枯燥,而且势必会产生相当乏味的代码。null 没啥行为,只会产生 NullPointException。java.util.Optional为 null 值提供了一个轻量级代理,Optional 对象可以防止你的代码抛 NullPointException。虽然 Optional 是 Java 8 为了支持流式编程才引入的,但其实它是一个通用的工具。实际上,在所有地方都使用 Optional 是没有意

2020-06-26 00:21:36 1798 2

原创 一行解决IDEA中gradle下载依赖jar包慢问题(适用于各操作系统)

在build.gradle文件中添加国内镜像repositories { maven{ url'http://maven.aliyun.com/nexus/content/groups/public/'} }

2020-06-25 22:57:51 10902 4

原创 为什么阿里强制我们switch块必须要有default语句

强制在一个 switch 块内,每个 case 要么通过 continue/break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个default 语句并且放在最后,即使它什么代码也没有。注意 break 是退出 switch 语句块,而 return 是退出方法体。修正:...

2020-06-24 17:05:30 7080

原创 因为不知道StringBuilder的这些特性,我被领导劝退了

说明:下例中,反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行 append 操作,最后通过 toString 方法返回 String 对象,造成内存资源浪费。反例:IDEA告警:String concatenation ‘+=’ in loopInspection info: Reports String concatenation in loops. As every String concatenation copies the whole S

2020-06-24 16:56:28 1918 1

原创 JetBrains教育邮箱包续期Renew my Education Pack

你以为学生邮箱过期了,没法使用了?看到没 renew!我们还能免费续杯!完成了,o( ̄▽ ̄)d!

2020-06-22 17:34:51 6551

原创 Java动态代理模式jdk和cglib

jdk动态代理实例jdk动态代理模式里面有个拦截器的概念,在jdk中,只要实现了InvocationHandler接口的类就是一个拦截器类还使用了些反射的相关概念。拦截器的概念不了解没关系,假如写了个请求到action,经过拦截器,然后才会到action。然后继续有之后的操作。拦截器就像一个过滤网,一层层的过滤,只要满足一定条件,才能继续向后执行。拦截器的作用:控制目标对象的目标方法的执行。拦截器的具体操作步骤:1.引入类:目标类和一些扩展方法相关的类。2.赋值:调用构造函数给相关对象赋值

2020-06-22 00:59:06 1709

原创 【Java设计模式系列】工厂方法模式

所牵涉源代码地址https://github.com/Wasabi1234/design-patterns0 简单工厂案例JDK 应用实例日历类迭代器Collection 接口就相当于 VideoFactory相当于各种具体的工厂,如 JavaVideoFactoryItr 就是具体产品 JavaVideo工厂应用为解决 url 协议扩展使用logback 应用JDBC实例返回值是一个抽象类,必有一子类实现其,看一下这其中U.

2020-06-22 00:24:02 1600 1

原创 JVM类加载、验证、准备、解析、初始化、卸载过程详解

任何程序都需要加载到内存才能与CPU进行交流同理, 字节码.class文件同样需要加载到内存中,才可以实例化类ClassLoader的使命就是提前加载.class 类文件到内存中在加载类时,使用的是Parents Delegation Model(溯源委派加载模型)Java的类加载器是一个运行时核心基础设施模块,主要是在启动之初进行类的加载、链接、初始化第一步,Load阶段读取类文件产生二进制流,并转为特定数据结构,初步校验cafe babe魔法数、常量池、文件长度、是否有父类等,然后创建对应

2020-06-20 21:06:08 2145

原创 IDEA黄色警告解析集锦 - 类名【xxx】应以Impl结尾

对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别 public interface DemoService{ void f();}public class DemoServiceImpl implements DemoService { @Override public void f(){ System.out.println("hello world"); }}.

2020-06-19 15:46:27 2558 2

原创 IDEA告警:Field can be converted to a local varible

背景使用 IDEA 开发时黄色预警:This inspection searches for redundant class fields that can be replaced with local variables,if all local usages of a field are preceded by assignments to that field,the field can be removed and its usages replaced with local variables

2020-06-17 17:36:39 4932

原创 阿里Java编码手册实战详解-OOP规约

1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加@Override 注解。 说明:getObject()与 get0bject()的问题。一个是字母的 O,一个是数字的 0,加@Override 可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报错。 3. 【强制】相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object。 .

2020-06-17 11:38:27 1291

原创 Java处理包含引号的String字符串

背景在开发默认提示文字时:解决方案转义使用\"代替"效果正常

2020-06-17 11:19:26 2633

原创 JavaSwing_8.1:焦点事件及其监听器 - FocusEvent、FocusListener

0 FocusEvent低级别事件指示Component已获得或失去输入焦点。 由组件生成此低级别事件(如一个TextField)。 该事件被传递给每一个FocusListener或FocusAdapter注册,以接收使用组件的此类事件对象addFocusListener方法。 ( FocusAdapter对象实现FocusListener接口。)每个此类侦听器对象获取此FocusEvent当事件发生时。有两个焦点事件级别:持久性和暂时性的。 永久焦点改变事件发生时焦点直接移动从一个组件到另一个,例如通

2020-06-17 11:02:55 5068 1

翻译 如何在Swing组件中使用HTML

许多Swing组件在其GUI中显示文本字符串。默认情况下,组件的文本以一种字体和颜色显示,并且全部显示在一行上。可以分别通过调用组件的setFont和setForeground方法来确定组件文本的字体和颜色。例如,以下代码创建一个标签,然后设置其字体和颜色:label = new JLabel("A label");label.setFont(new Font("Serif", Font.PLAIN, 14));label.setForeground(new Color(0xffffdd));如

2020-06-16 15:57:56 3110

原创 Component

请求此 Component 获取输入焦点,并且此 Component 的顶层祖先成为获得焦点的 Window。此 Component 对于所要许可的请求而言必须是不可显示的、可聚焦的和可见的并且其所有祖先(除了顶层 Window 以外)必须是可见的。此方法会尽力完成该请求;但是在某些情况下可能无法完成。在此 Component 接收 FOCUS_GAINED 事件前,开发人员永远不能假定此 Component 是焦点所有者。如果由于此 Component 的顶层 Window 没有成为获得焦点的窗口而拒绝.

2020-06-15 16:25:45 1567

原创 WindowFocusListener窗体焦点监听器

Windows 类addWindowStateListener添加指定的窗口焦点侦听器,以从此窗口接收窗口事件。 如果l为null,则不会抛出异常,并且不执行任何操作。WindowAdapter抽象适配器类接收窗口事件。 此类中的方法为空。 此类存在的目的是方便创建侦听器对象。扩展此类可创建WindowEvent侦听器并重写所需事件的方法。 (如果要实现WindowListener界面,你必须定义在它所有的方法。此抽象类定义空对他们的所有方法,这样你就可以只需要针对所关心的事件重写方法。)

2020-06-11 14:20:26 2272

原创 JavaWeb全栈开发前后端交互通用标准

1 前端请求数据URL由后台来写在开发中,URL主要是由后台来写好给前端。若后台在查询数据,需要借助查询条件才能查询到前端需要的数据时,这时后台会要求前端提供相关的查询参数(即URL请求的参数)。2 接口文档主要由后台设计和修改接口文档主要由后台设计和修改,前端开发者起到了辅助的作用。后台直接跟数据打交道,最清楚数据库里有什么数据,能返回什么数据。前端只是数据的被动接受者,只是接口文档的使用者。使用过程中,发现返回的数据不对,则需要跟后台商量,由后台修改。切记:前端不能随意更改接口文档,除非

2020-06-10 17:25:12 1580

原创 Java8的NIO新文件I/O到底有多好用?

文章目录文件和目录路径选取路径部分片段路径分析**Paths**的增减修改目录文件系统路径监听文件查找文件读写本章小结在丑陋的 Java I/O 编程方式诞生多年以后,Java终于简化了文件读写的基本操作。打开并读取文件对于大多数编程语言来是非常常用的,由于 I/O 糟糕的设计以至于很少有人能够在不依赖其他参考代码的情况下完成打开文件的操作。在 Java7 中对此引入了巨大的改进。这些新元素被放在 java.nio.file 包下面,过去人们通常把 nio 中的 n 理解为 new 即新的 io,

2020-06-08 14:11:08 1558

原创 SpringMVC源码解析从service到doDispatch

请求在被Servlet处理之前会先被过滤器处理,之后调用Servlet的service方法来对相应的请求进行处理响应。所以我们这里分析的入口是Servlet的service方法。我们在用SpringMVC的时候,通常都会在web.xml中进行这样的配置:<servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.Disp

2020-06-05 16:08:11 1561

原创 SpringMVC源码解析-HandlerExecutionChain

最终会调用HandlerInterceptor的preHandle调用所有的HandlerInterceptor拦截器并调用其preHandler方法。applyPostHandle获取所有的拦截器并调用其postHandle方法。triggerAfterCompletion触发afterCompletion执回调的映射HandlerInterceptors。 只会调用afterCompletion执行对于其preHandle调用已成功完成并返回true的拦截器 void triggerA

2020-06-05 10:58:51 1779

原创 SpringMVC源码解析之ServletInvocableHandlerMethod

InvocableHandlerMethod提供了一种方法,用于调用处理器方法,处理给定的请求,其已通过注册的HandlerMethodArgumentResolver解析了方法参数值。参数解析往往需要WebDataBinder用于数据结合或进行类型转换。 使用setDataBinderFactory(WebDataBinderFactory)属性来提供一种粘合剂厂传递给参数解析器。使用setHandlerMethodArgumentResolvers自定义的参数解析器的列表。invokeForRe

2020-06-05 09:38:40 2149

原创 Java反射包下的Method类中的Invoke方法

Method的invoke方法1 先校验AccessibleObject的override字段指示此对象是否覆盖语言级别的访问检查。初始化为“ false”字段,方法和构造方法都会使用此字段注意:为了安全起见,此字段在此反射包外部均不可见。AccessibleObject是Method,Field,Constructor的父类可调用setAccessible方法改变,如果设置为true,则表示可以忽略访问权限的限制,直接调用。便利方法来设置accessible标志对象的数组具有单

2020-06-04 17:47:50 2186

原创 SpringMVC源码解析WebContentGenerator

便捷的为任何类型的网页内容产生的父类,像AbstractControllerWebContentInterceptor也可用于自定义处理器HandlerAdapter 。支持HTTP缓存控制选项。 对应的HTTP头的使用可以通过控制"cacheSeconds"和"cacheControl"属性。注:Spring4.2的作为,使用只有当这种的默认行为改变setCacheSeconds ,发送HTTP响应头是符合当前的浏览器和代理服务器实现(即没有HTTP 1.0头了)恢复到以前的行为可以很容易地

2020-06-04 15:43:03 1835

原创 ajax处理前端 js 与后端 ModelAndView 数据绑定

从java后台控制层返回一个ModelAndView,然后用ajax 局部将页面刷新处理方法:前端ajax 接收:$.ajax({type : "post",url : "$!base/aaa/getList",dataType: 'html',data : JSON.stringify(queryData),contentType : "application/json",success : function (data) {// data = jQuery.parseJSON(data

2020-06-04 15:26:31 2473

原创 SpringMVC源码解析之HandlerInterceptor接口

接口给提供了3个方法:1 preHandle执行controller处理逻辑前执行,返回值为boolean ,返回值为true时接着执行postHandle和afterCompletion,如果我们返回false则中断执行拦截处理程序的执行。 HandlerMapping确定的适当处理器对象后调用,但在HandlerAdapter调用处理器之前。DispatcherServlet是在执行链中处理的handler,其中包括了任意数量的拦截器,处理器本身在链的末尾,即最后才处理 handler。 利用

2020-06-04 15:11:50 1663

原创 SpringMVC源码解析之AsyncHandlerInterceptor异步的处理器拦截器

当处理器启动一个异步请求时,DispatcherServlet 退出而不会像处理同步请求那样调用 postHandle 和 afterCompletion,因为请求处理的结果(例如 ModelAndView)可能尚未准备好,并将由另一个线程并发生成。为了区分初始请求和异步处理完成后的后续调度,拦截器可以检查 jakarta.servlet.ServletRequest 的 jakarta.servlet.DispatcherType 是 “REQUEST” 还是 “ASYNC”。自版本 3.2 起提供。

2020-06-04 15:11:32 7606 1

原创 SpringMVC源码解析之Last-Modified缓存机制

Spring MVC 支持HTTP协议的 Last-Modified 缓存机制。支持上次修改的HTTP请求,以方便内容缓存。 相同的合同作为Servlet API中的getLastModified方法。通过委派到org.springframework.web.servlet.HandlerAdapter.getLastModified实施。 默认情况下,任何控制器或HttpRequestHandler Spring的默认框架内可以实现此接口,以实现最后修改时间检查。注:另类处理的实现方法有不同的最后修

2020-06-04 14:30:53 2152

原创 SpringMVC源码解析之HandlerAdapter

HandlerAdapter,处理器适配器,Spring MVC通过HandlerAdapter来实际调用处理方法。当HandlerMapping获取了处理器,DispatcherServlet会将得到的Handler告知HandlerAdapter,HandlerAdapter再根据请求去定位请求的具体处理方法是哪一个。流程1.DispatcherServlte会根据配置文件信息注册HandlerAdapter,如果在配置文件中没有配置,那么 DispatcherServlte会获取HandlerA

2020-06-04 14:15:54 1402

转载 Spring MVC工作流程以及请求处理流程

SpringMVC主要是通过前端控制器controller中的注解来完成请求处理的。前段请求从web.xml中servlet的配置开始,根据servlet拦截的url-parttern,来进行请求转发控制。处理请求的流程具体执行步骤如下:1、首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图2-1中的1、2步骤;2、页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对

2020-06-04 11:29:41 1948

原创 后浪的Java追随者们是什么样的?

最近,某台词本火了,如下。我们来一一解析下。那些口口声声,JAVA越来越难学的人,应该看着你们,像我一样。我看着你们,满怀羡慕。人类研究了几十年的代码调优,所有的Exception和Error,像是专门为你们准备的礼物。因为 Java的异常体系考虑的的确周到,周到到被人认为是繁琐的地步。真是笑死人了这点。Spring繁荣、中间件繁茂、数据库繁华,现代Java的成果被层层打开,可以尽情地享用。Java 生态好,无懈可击。自由学习一门框架,学习一种中间件,欣赏一部(培训班)教学视频,去遥远.

2020-06-04 11:14:13 2123 1

原创 SpringMVC源码解析HandlerMethod

封装关于处理器方法信息的方法和bean类 。 提供了对方法参数,方法返回值,方法注释等方便地访问入口。该类可以使用bean实例或具有bean名称(例如lazy-init bean,prototype bean)来创建。 使用createWithResolvedBean()获得HandlerMethod实例,被BeanFactory解析过的。1 字段public class HandlerMethod { // Object类型,可以是Bean,也可以是个String 的 BeanName pri

2020-06-04 10:39:18 2104

原创 SpringMVC源码解析DispatcherServlet#doDispatch方法流程

DispatcherServlet是前端控制器设计模式的实现,提供了Spring Web MVC的集中访问点, 而且负责职责的分派,而且与Spring Ioc容器无缝集成, 从而可以获的Spring的所有好处。作用DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecution

2020-06-03 22:27:11 1821 2

原创 SpringMVC源码解析AbstractHandlerMethodAdapter

AbstractHandlerMethodAdapter是HandlerAdapter接口的简单抽象类,实现了接口定义的方法,同时增加了执行顺序Order。public abstract class AbstractHandlerMethodAdapter extends WebContentGenerator implements HandlerAdapter, Ordered { private int order = Ordered.LOWEST_PRECEDENCE; pu

2020-06-03 16:12:57 1581

原创 SpringMVC源码解析之RequestMappingHandlerAdapter

RequestMappingHandlerAdapter含有大量的web基础组件协助完成一整个请求的调度、处理RequestMappingHandlerAdapter适配@RequestMapping注解标注的Handler(HandlerMethod类型)Spring3.1新增的一个适配器类,用于数据绑定、数据转换、数据校验、内容协商因为有了它的存在,使得开发者几乎可以忘掉原生的Servlet APISpring 5.0在把Servlet容器从必选项变成可选项后,即使切换了web容器(比如换成j

2020-06-03 15:43:29 1464

Spring基础讲义-java 入门必备

Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-java 入门必备Spring基础讲义-j

2022-11-05

spring-boot-actuator-web-api.pdf

Spring Boot Actuator Api

2021-10-02

EvgenyMandrikov_Marc_Hoffmann_Java_Coverage_mechanics.pdf

jacoco 官方原理解析文档,由领导者亲自执笔编写!

2020-04-03

人工智能蔡自兴课件 PPT

人工智能及其应用第四版,最新版本课程使用课件,适合期末复习

2019-01-06

Spartk 电影PPT资料

Spartk 电影的PPT资料,这是一个很好的视频教程哦,由于原文件太大,想要可以联系我哦

2019-01-06

南邮微机原理课件

南邮微机原理课件.....................................................................

2018-01-08

南邮Windows编程课件

南京邮电大学Windows编程课件1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

2017-11-26

微机原理课件-南邮

南邮的微机原理课件

2017-11-15

空空如也

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

TA关注的人

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