![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 74
zhangweiocp
这个作者很懒,什么都没留下…
展开
-
POM 标签大全详解及依赖管理
一. 标签大全<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--父项目的坐标。如果项目中没有规定某个元原创 2021-11-21 22:00:56 · 958 阅读 · 0 评论 -
版本名词解释
GA:General Availability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。RELEASE:正式发布版,官方推荐使用的版本,有的用GA来表示。比如spring。Stable:稳定版,开源软件有的会用stable来表示正式发布的版本。比如Nginx。Final:最终版,也是正式发布版的一种表示方法。比如Hibernate。RC:Release Candidate,发行候选版本,基本不再加入新的功能,主要修复bug。是最终发布成正式版的前一个版本转载 2021-11-09 11:15:55 · 1851 阅读 · 0 评论 -
Spring MVC从HandlerMapping中获取Handler
我们常用的@Controller和@RequestMapping注解对应的HandlerMapping类是RequestMappingHandlerMapping,其继承的AbstractHandlerMethodMapping类中缓存了URL到HandlerMethod的映射信息,从RequestMappingHandlerMapping中获取的Handler实际上是HandlerMethod。源码解析如下: HandlerMapping的getHandler()方法由抽...原创 2021-11-02 17:18:08 · 687 阅读 · 0 评论 -
Spring MVC中HandlerMapping的初始化
HandlerMapping的初始化发生在核心类:AbstractHandlerMethodMapping中,该类实现了InitializingBean,且RequestMappingHandlerMapping为该类子类,spring启动过程中会通过回调afterPropertiesSet方法完成HandlerMethod的初始化。初始化的过程实际上是将Controller中的方法注册到MappingRegistry中,MappingRegistry为AbstractH...原创 2021-11-02 16:11:44 · 298 阅读 · 0 评论 -
SpringBoot加载配置文件源码解析
SpringBoot通过事件广播机制通知ConfigFileApplicationListener这个监听器来加载properties和yaml文件。关于SpringBoot事件编程模型可参考:SpringBoot事件编程模型解析。 SpringBoot一站式启动过程中,会经过环境准备阶段:ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArgume...原创 2021-10-12 14:27:02 · 555 阅读 · 0 评论 -
SpringBoot配置文件加载顺序
小编最近在工作中使用SpringBoot开发项目时候,遇到配置文件加载问题,一直不是很清楚Idea中放置的位置和Maven打包成Jar包后放置的位置,顺便记录下。 如SpringBoot官网介绍默认情况下,我们可以将application.properties或者application.yam放置在如下四处:Application Property Files介绍1、第一种,根据官网介绍将application.properties放置在...转载 2021-09-30 16:48:47 · 110 阅读 · 0 评论 -
SpringMVC拦截器执行顺序分析
DispatcherServlet做为SpringMVC前置处理器,在doDispatch方法中定义了模块整体的核心流程,SpringMVC独有的拦截器的执行逻辑同样也定义在其中,关于SpringMVC的整体流程逻辑原理解析可参考文章:Spring MVC原理解析如下图所示,标注了拦截器执行的关键步骤:第一步:从处理器映射器中获取HandlerExecutionChian,该类包含一个处理器Handler和一个HandlerInterceptor列表...原创 2021-09-18 09:47:58 · 1401 阅读 · 0 评论 -
企业级网络爬虫实现及商业价值
目录1. 网络爬虫的价值和规制1.1 网络爬虫的功能和价值1.2 网络爬虫规制的必要性2. 君子协议3. 爬虫基本原理3.1 爬虫是什么?3.2 爬虫的基本流程3.3 爬虫分类4. 搜索引擎5. 爬虫实现5.1 爬虫服务核心逻辑概述5.2 数据爬取开发过程5.3 爬虫服务核心逻辑流程5.4 内容解析5.5 带账号爬取5.6 登陆流程5.7 爬虫COOKIE维护服务6. 规则引擎7. 反爬技术8. 数据清洗8.1 数仓分层架构原创 2021-09-12 08:51:18 · 1423 阅读 · 0 评论 -
Spring MVC原理解析
现在基于请求驱动的Web框架基本都是由单一的Servlet作为整个应用程序的前置处理器(Front Controller),该Servlet接收到具体的Web处理请求之后,会参照预先可配置的映射信息,将待处理的Web请求转发给次一级的控制器来处理。DispatcherServlet就是Spring MVC框架中的这个单一的Servlet,它就是Spring MVC框架如此简单好用的原因,我们只需要定义一个Controller,写上自己的业务逻辑之后,即可处理Web请求了。原理就是Spring MVC已经原创 2021-04-23 18:17:04 · 1813 阅读 · 3 评论 -
自定义springboot actuator endpoint及原理解析
springboot actuator是springboot官方提供的系统信息探测器,用于获取系统状态和业务监控等信息。springboot admin封装了springboot actuator,常用于业务系统的可视化监控管理及报警。springboot actuator endpoint是使用spring mvc通过http方式对外提供服务的web端点,官方提供了有HealthEndpoint、InfoEndpoint等web端点,来提供系统的健康状态或其他系统信息。当需要自己的endpoint时,原创 2021-04-16 17:21:32 · 1215 阅读 · 0 评论 -
Spring里的模板方法设计模式,JdbcTemplate、RedisTemplate、RestTemplate源码分析
前言:设计模式是阅读源码的一项极其重要的内功心法,而其中模板方法设计模式的套路在JDK、Spring、Mybatis、Maven中被广泛使用,如:Spring中的各种Template,有JdbcTemplate、RedisTemplate、RestTemplate皆是这种老把戏,假如您对该内功心法了如指掌,那么阅读它们的源码简直快地飞起,甚至能依葫芦画瓢,设计出HttpTemplate、FtpTemplate根本不在话下。 模板方法设计模式简介:在一个方法里定义了做事的流程,该流程中的某些步骤的实现逻辑是原创 2021-04-07 15:15:52 · 2460 阅读 · 0 评论 -
如何设计好API
好的API应对客户端友好,换言之就是能够直接通过其方法签名而理解它做的事情,而不用深入去阅读方法的实现,甚至深入阅读API所在的整个类。单纯的介绍如何设计好API似乎如"海市蜃楼"般的虚无缥缈,因此本文从设计&实现的角度出发,针对我们在设计并实现API的过程中提出一些小意见。首先回顾一下API方法的组成模块:API注释 访问修饰符 返回值 方法名称 参数列表 异常列表 方法主体针对API方法的组成模块,将提出几点小意见;可简单归纳为:"一个原则,三点建议,两个思考,三要五不转载 2021-04-07 09:24:32 · 122 阅读 · 0 评论 -
拒绝花里胡哨,极简springboot starter自定义及原理
SpringBoot针对日常企业应用场景提供了各种spring-boot-starter依赖模块,所有这些依赖模块都遵循着约定俗成的默认配置,并允许我们调整这些配置,即遵循“约定大于配置”的理念。SpringBoot通过AutoConfiguration模块自动装配官方(以spring-boot-starter-xxx方式命名)、第三方以及自定义(以xxx-spring-boot-starter方式命名)的starter.当我们向其他项目提供jar包时,可自定义为starter,SpringBoot项目原创 2021-04-06 19:27:38 · 158 阅读 · 0 评论 -
java中native方法详解
第一篇:今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解。一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它转载 2015-05-19 09:25:20 · 605 阅读 · 0 评论 -
字符编码
字符编码涉及到很多概念如ASCII、ISO-8859-1、Unicode、GBK、GB2312、UTF-8等,涉及到字符的传输(输入和输出)、显示与存储。ASCII码使用8位二进制数组合来表示256种可能的字符。标准ASCII码(又称基础ASCII码)使用7位二进制数来表示所有的大写和小写字母、数字0到9、标点符号以及在美式英语中使用的特殊控制字符,一共128个。不支持中文。ISO-8原创 2016-06-16 11:06:42 · 327 阅读 · 0 评论 -
java中接口回调与java回调机制
什么是接口回调?1.接口回调是什么[2]?接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。interface People{ void peopleList();转载 2016-07-08 15:35:43 · 450 阅读 · 0 评论 -
通过内存解析String的基本原理
1.java中String类型有两种赋值方式:直接赋值,如:String s = "a"; 通过new赋值 如String s = new String("a");2.String类型是引用类型,其内存地址开辟在堆取。但是在堆区有一块区间称为字符串常量池。这块区间是用来干嘛的呢?当直接赋值时,要看值在编译期能不能确定,若能就会在常量池中创建对象,若不能就会在运行期时在堆区(字符原创 2016-07-08 16:04:17 · 482 阅读 · 0 评论 -
Command设计模式和java回调机制的异同
最大的区别在于命令模式的具体命令中组合了一个接收者对象,而java回调机制中的接口的实现类中(即匿名内部类)中并没有组合一个接收者,从而回调方法没有继续调用接收者的方法。简而言之,java回调机制相较command模式少了一层接收者环节。命令模式正是回调机制的一个面向对象的替代品。一、首先介绍回调机制回调机制:一开始,一个类定义了一些个未实现的方法,并且该类并不知道这些方法具体的实原创 2016-07-29 16:42:15 · 529 阅读 · 0 评论 -
java引用级别--强引用、软引用、弱引用、虚引用
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object(); // 强引用当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。如果不使用时,要通过如下方式来转载 2016-08-12 14:55:09 · 344 阅读 · 0 评论 -
Java的回调函数和观察者模式的区别
前一段时间研究了一下设计模式,突然想到观察者模式和回调函数之间的联系,网上也没有什么人说清楚,便自己又仔细想了想,便有了如下观点,欢迎各位大神前来拍砖! 首先,先阐述一下网上说的,网上先说这是完全不同的两种东西,接口回调是观察者模式的实现,后者是一种设计模式。 然而,我更关注的是两者之间的联系,我便总结了一下网上前辈的观点。 我的观点是回调函数应该属于观察转载 2015-04-12 19:43:13 · 974 阅读 · 0 评论