随笔分类 - java杂谈
手写SpringBoot自动配置及自定义注解搭配Aop,实现升级版@Value()功能
摘要:背景 项目中为了统一管理项目的配置,比如接口地址,操作类别等信息,需要一个统一的配置管理中心,类似nacos。 我根据项目的需求写了一套分布式配置中心,测试无误后,改为单体应用并耦合到项目中。项目中使用配置文件多是取配置文件(applicatoion.yml)的值,使用@Value获取,为了秉持非侵
阅读全文
spring 配置多数据源 springmvc/springboot
摘要:前言 工作中会经常遇到使用多个数据源的场景,我看其他人的博客,要么过分冗余,要么生搬硬套,乱得很。基于这种情况,我将根据公司前后两个项目的经验,整理出三套解决方案,均经产品检测无误。 第一种分享给SSM的小伙伴,这是基于注解达到切换数据源的目的。 第二三种则是sprinboot下的配置。其中: 第二
阅读全文
前端后端请求问题记录
摘要:写在前面 通常在开发结束后,新的项目或者重构项目难免会遇到请求接口方案选择的切换的场景。如果没有刻意的去记录,很容易搞混,于是我针对 js的ajax、vue cli的axios 以及uni app 的uni request三种方案,分别记录了对应的get、post/put/delete 传递form
阅读全文
从项目中理解SSM框架
摘要:我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能;而且在大部分教学课堂中,也会把SSH作为最核心的教学内容。 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配合注解的方式,编程非常快捷,而且通过restful风格定义url,让地址看起来非常优雅。 另外,My
阅读全文
深入解析Java反射
摘要:因为本人最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识。本篇为基本篇,基于JDK 1.8。 一、回顾:什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并
阅读全文
静态工厂方法和实例工厂方法区别
摘要:在学习Spring bean的实例化方式的时候遇到的一个问题,Spring bean实例化有3种方法 1、构造器生成 2、静态工厂方法 3、实例工厂方法 那么问题来了,什么是静态工厂方法,什么是实例工厂方法? 静态工厂方法 就是直接可以通过静态方法来实例化一个对象 创建 HelloWorld 对象直
阅读全文
pv操作与信号量详解
摘要:对于信号量,可以认为是一个仓库,有两个概念,容量和当前的货物个数。 P操作从仓库拿货,如果仓库中没有货,线程一直等待,直到V操作,往仓库里添加了货物,为了避免P操作一直等待下去,会有一个超时时间。 V操作往仓库送货,如果仓库满了,线程等待,直到有P操作,从仓库中拿走货物,有空的位置。 创建信号量,设
阅读全文
JSP请求是如何被处理的?jsp的执行原理
摘要:客户端通过浏览器发送jsp请求,服务器端接受到请求后,判断是否是第一次请求该页面,或者该页面是否改变,若是,服务器将jsp页面翻译为servlet,jvm将servlet编译为.class文件,字节码文件加载到服务器内存上执行,服务器将处理结果以.html页面的形式返回给客户端,若该页面不是第一次请
阅读全文
sendRedirect()和forward()方法有什么区别?
摘要:forward是服务器内部的跳转,浏览器的地址栏不会发生变化,同时可以把request和response传递给后一个请求。sendRedirect()是浏览器方面的跳转,要发送两次请求,地址栏也会发生变化,同时request和response也会发生变化,重新生成新的对象。 URL重定向的特点: 1
阅读全文
什么是cookie?什么是session?session和cookie有什么区别?
摘要:在技术面试中,经常被问到“说说Cookie和Session的区别”,大家都知道,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果让你更详细地说明,你能说出几点?今天个推君就和大家谈谈“Cookie和Session”的那些事儿。 Cookie是什么? 从它的词语本身含义来看:
阅读全文
HTTP响应的结构是怎么样的?
摘要:HTTP响应由三个部分组成:状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。HTTP头部(HTTP Head
阅读全文
doGet()方法和doPost()方法有什么区别?
摘要:1. 一般上,get是从服务器上获取数据,post是向服务器传送数据。 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到AC
阅读全文
Servlet的生命周期
摘要:Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。 ②装载并创建该Servlet的一个实例对象。 ③调用Servlet实例对象的init()方法
阅读全文
GenericServlet和HttpServlet有什么区别?
摘要:1.HttpServlet 1). 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制. 2). 在 service() 方法中直接把 ServletReuqest 和 ServletResponse 转为 HttpServletRequest 和 Htt
阅读全文
什么是RMI?
摘要:RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统
阅读全文
什么是JDBC?
摘要:JDBC(Java DataBase Connectivity),是一套面向对象的应用程序接口(API),制定了统一的访问各类关系数据库的标准接口,为各个数据库厂商提供了标准的实现。通过JDBC技术,开发人员可以用纯Java语言和标准的SQL语句编写完整的数据库应用程序,并且真正地实现了软件的跨平台
阅读全文
Applet和普通的Java应用程序有什么区别?
摘要:(1)运行方式不同。Java Applet程序不能单独运行,它必须依附于一个用HTML语言编写的网页并嵌入其中,通过与Java兼容的浏览器来控制执行。Java Application是完整的程序,可以独立运行,只要有支持Java的虚拟机,它就可以独立运行而不需要其他文件的支持。 (2)运行工具不同。
阅读全文
final关键字、finally代码块和finalize()方法有什么区别?
摘要:1. final是关键字,final可以修饰类、方法、属性。 如果一个类被final修饰,那么这个类就是最终类,不能派生出新的子类,不能作为父类被继承,该类中的所有方法都不能被重写,但是final类中的成员变量是可以改变的,要想final类中的成员变量的不可以改变,必须给成员变量添加final修饰。
阅读全文
throw和throws有什么区别
摘要:1、Throw用于方法内部,Throws用于方法声明上 2、Throw后跟异常对象,Throws后跟异常类型 3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型 throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常。每一个方法都必须要指
阅读全文