自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis实现分布式锁的原理

这个机制是通过在获取了锁的线程中又开启了一个守护线程,这个线程不参与业务工作,他要做的就是定时检查一次业务主线程是否还在工作,比如给锁设置的过期时间是30s,我们让这个守护线程在业务线程执行了10s之后,就去检查一下业务线程是否还在工作,如果业务线程还在工作,那么守护线程就会再次给这个锁设置30s的过期时间,把锁过期时间看作是一条时间线,在之前业务主线程已经走过了1/3,但是守护线程重新设置了过期时间之后,就相当于是让业务线程重新回到起点,这也就保证了业务主线程永远不用担心锁的过期时间不够用;

2023-08-01 19:57:53 173

原创 Spring Bean的实例化过程

Spring中AOP就是在这一步实现的偷梁换柱,产生对于原生对象的代理对象,然后将对源对象上的方法调用,转而使用代理对象的相同方法调用实现的。2、这些配置元信息都是设置在配置文件上的,那么在Java中就需要将这些配置元信息给读出来,读在内存之中,在Java中万物皆对象,这些配置元信息当然也是以对象的形式存在,并且不可能是Person、Animal、Sutdent这样的特殊对象,为了方便Spring管理,当然是使用了一个统一的对象来保存这些配置元信息,这个对象就是BeanDefination。

2023-07-26 15:07:05 146

原创 Spring的循环依赖

Spring 的循环依赖问题指的是在 Spring 容器中,两个或多个 Bean 之间存在相互依赖关系,形成了一个循环依赖的情况。这种情况下,当 Spring 容器初始化时,无法正确地完成 Bean 的创建和依赖注入,导致程序出现错误或无法正常运行。下面是通过GPT生成的一个例子来说明 Spring 的循环依赖问题:} }在 Spring 容器中,我们定义了这两个 Bean:

2023-07-26 14:52:04 112

原创 Caused by: java.lang.NoSuchMethodError: com.google.protobuf.AbstractMessageLite$Builder.addAll(Ljava

Caused by: java.lang.NoSuchMethodError: com.google.protobuf.AbstractMessageLite$Builder.addAll(Ljava/lang/Iterable;Ljava/util/List;)V

2023-07-11 13:09:25 318

原创 Git从0开始

Git从0开始

2022-12-20 19:59:04 105

原创 MyBatis学习笔记

MyBatis是一款优秀的持久性框架,它支持自定义SQL、存储过程以及高级映射,MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。新建一个maven工程导入相关jar包编写MyBatis全局配置文件(从XML文件中获取SqlSessionFactory对象)编写db.properties数据库连接文件创建数据库表的实体类编写SQL语句的映射文件编写工具接口调用MyB

2022-08-10 10:16:04 70

原创 SpringAOP基础学习笔记

引子:在实际给别人做业务时,对业务的的要求是一直存在变化的代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀。每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点。代码分散:以日志需求为例,只是为了满足这个单一需求,就不得不在多个模块(方法)里多次重复相同的日志代码。如果日志需求发生变化,必须修改所有模块。可以使用代理的方式解决上述问题:代理设计模式原理:使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时

2022-05-22 19:40:29 164

原创 SpringMVC基础学习笔记

M:模型 持久层 与数据库交互V:视图 jspC:controller 控制层一、hello SpringMVC创建一个maven工程,添加web框架支持,配置tomcat服务器在pom.xml文件中导入SpringMVC所需jar包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-conte

2022-05-22 19:34:51 98

原创 SpringIOC容器中bean的生命周期

IOC容器可以管理bean的生命周期。Spring IOC允许在 Bean 生命周期的特定点执行定制的任务.Spring IOC 容器对 Bean 的生命周期进行管理的过程:通过构造器或工厂方法创建 Bean 实例为 Bean 的属性设置值和对其他 Bean 的引用调用 Bean 的初始化方法Bean 可以使用了当容器关闭时, 调用 Bean 的销毁方法在 Bean 的声明里设置 init-method 和 destroy-method 属性, 为 Bean 指定初始化和销毁方法.初始

2022-05-04 11:30:35 263

原创 SpringIOC学习笔记整理

IOC(DI)是一个用来管理对象的容器,用来管理对象获取的方式。DI又叫做依赖注入,可以判断依赖关系。一个A类,A类有一个父类B类,在javaSE中在创建A类前要先创建B类,再将B类注入到A类中,在Spring中,这一步骤可以由IOC容器来实现。IOC与DI概述:IOC:其思想是反转资源获取的方向。传统的资源查找方式要求组件向容器发起请求查找资源。作为为回应,容器适时的返回资源。而应用了IOC之后,则是容器主动的将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源。这种行为也被

2022-05-04 11:20:52 200

原创 使用IOC容器配置数据库连接池的方法

web.xml中导入jar包 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>

2022-05-04 11:17:49 141

原创 关于SpringIOC容器组件一些扫描模式的笔记

spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件。可以将带有注解的类,注入到IOC容器当中,这些类受IOC容器管理<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c

2022-05-04 11:12:45 240

原创 对Java Servlet用户管理案例进行的优化

之前的用户管理案例的版本servlet案例–用户管理相比于之前的版本,这次的优化主要体现在请求路径,验证登录,controller层方面。1、请求路径:之前发送请求基本上都是以相对路径的方式传递的请求,这次以绝对路径的方式来发送,可以更方便的从代码中看到请求的变化2、验证登录:之前的验证登录只能在点击进入用户管理界面前进行验证,当遇到特殊情况,比如登陆状态已过时的时候,我们在点击用户的增删改查功能时,是不能进行操作的,需跳转到登陆界面,重新登陆。这次优化我们通过过滤器的方式来实现这一业务。3、co

2022-04-30 20:36:06 1175

原创 JavaServlet+jsp基础使用

一、初步配置Servlet1、配置Servlet的步骤创建一个普通的maven工程在项目名称上右键,选择添加框架支持勾选Web Application 里面的版本号默认即可,保持勾选Create web.xml,然后确定如果添加成功就会出现一个带有蓝色圆点的web文件夹在pom文件中导入servlet依赖的坐标后,刷新pom文件,如果导入成功就可以在外部库中发现servlet的jar包这样我们就可以在idea中使用servlet了2、配置tomcat服务器项目需要靠tomcat服务

2022-04-30 09:50:46 2621

原创 javaServlet中的数据共享范围

共享数据方法: setAttribute, getAttribute,removeAttributepageContext 可以共享数据 jsp页面里request 可以共享数据 一次请求 一个requestsession 可以共享数据 浏览器和服务器的连接(一个有效时常) 是一个业务servletContext == application 可以共享数据 共享范围最大如上4种对象其共享数据范围不同。pageContext 简称 page 范围,其共享范围仅限于 JSP 页面

2022-04-30 09:49:27 472

原创 Java中的过滤器与监听器

目录1、过滤器2、监听器1、过滤器Java EE WEB 提供了一套标准, 可以对web请求增加过滤功能,可以在不改变Servlet代码情况下,Servlet扩展功能。用途:利用Filter可以实现如:权限检查、编码过滤、请求日志等功能编写Filterpublic class HelloFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { /

2022-04-30 09:46:34 488

原创 Servlet案例--用户管理

本案例包含用户登录,用户的增删改查功能。使用到的技术栈:Servlet,JDBC,Servlet JSP,Servlet MVC,EL表达式,JSTL一、前期准备1、使用MySQL新建一个数据库,建一个user表,我们对这个user表进行增删改查操作2、建立maven工程,配置Servlet,在pom.xml中导入相关依赖与jar包,配置tomcat<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api

2022-04-28 10:18:00 1116

原创 状态保持问题:Cookie与Session

由于HTTP协议是无持续状态的协议,所以在 HTTP协议 实现会话状态保持是一个挑战,目前主要的做法是采用 Cookies 和 Session 技术解决。HTTP协议是无持续状态的, 数据发送完毕,连接立即释放。 这种工作方式可以使用服务器的资源充分复用,可以为更多客户端服务。简称:无状态协议无状态协议:由于服务器服务结束以后,释放了连接,不再与客户端保持状态, 无法记住客户端, 如: 客户是否登录过。1、Cookies 技术Cookies 技术,是在HTTP协议基础之上实现状态保持技术,其工作原理

2022-04-28 10:08:52 340

原创 org.apache.jasper.JasperException: An exception occurred processing JSP page /user/users.jsp at line

看报错信息,问题出现在了代码段的第二十行,这行只写了一个for循环,再看下面还报了一个空指针异常的错误,初步判断问题出现在了list上,jsp没能从Java后台中获取到list的数据。找到对应发送请求的位置package controller;import service.UserService;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servl..

2022-04-27 07:56:45 7665 1

原创 java.lang.NumberFormatException: For input string: ““

根据报错信息可以找到出问题的代码<%@ page import="java.util.List" %><%@ page import="bean.User" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>$Title$</title> <%List<Us..

2022-04-27 07:45:17 600

原创 Java Servlet用户管理案例报错:HTTP Status 500 -java.lang.NullPointerException

根据报错信息,问题显示为空指针异常,问题出现在GetAllUser类中package controller;import bean.User;import service.UserService;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.htt..

2022-04-26 11:16:29 1405

原创 java.lang.NoClassDefFoundError: org/apache/commons/dbcp/BasicDataSource

HTTP Status 500 - Servlet execution threw an exception-java.lang.NoClassDefFoundError: org/apache/commons/dbcp/BasicDataSource根据报错信息,问题出现在JDBC工具类的数据库连接池中上网查了一下,说是没有导commons-dbcp和commons-pool的jar包导致的,看了一下外部库,发现这两个包都是有的(要不然也使用不了BasicDataSource类*——*)后来想到

2022-04-26 09:57:09 2616

原创 Servlet--EL表达式与JSTL

1、EL表达式jsp页面因为内含servlet相关对象和Java代码,经常会出现空指针异常的问题,而EL表达式就替换了页面中的Java代码,避免了这样的问题的发生。EL 表达式有标准标签库一起诞生, 与JSTL配合使用自动化工作:可以在pageContext,request,session,application中子弹寻找 “attribute” request .setAttrbute(“k”,v)自动调用 get方法自动处理空值${users}//相当于List<User>

2022-04-23 11:02:53 241

原创 JDBC简单入门

在工作中,程序员可能会需要用到很多数据库,若没有相应的工具,程序员每用到一个数据库就需要掌握一条与之对应的方法调用,当换数据库时,代码也需要做相应改动,这样极其不利于开发,效率很低,这时JDBC接口就应运而生。JDBC(java Database Connectivity) java数据库连接,实际上JDBC是sun公司提供一套连接数据库的APIsun公司提供JDBC接口,让各个数据库厂商根据此接口写实现类(驱动),这样java程序员只需要掌握JDBC接口中的方法的调用,就可以访问任何数据,而且换数据库

2022-04-18 13:27:34 630

原创 获取jar包或依赖

下载网址:maven_jar包下载_获取依赖这里拿JDBC接口举例1、在输入框输入想要的jar包2、一般点击最上面的3、找到你想要的版本点击进入,这里拿5.1.44举例4、点击jar可以直接在浏览器上下载jar包,最后手动添加到项目中5、也可以不用手动,利用java中的maven,将坐标写入pom.xml中...

2022-04-18 13:23:50 1078

原创 java网络编程基础

一、获取ip地址和电脑名public class InetAddressTest { public static void main(String[] args) throws Exception { InetAddress address1=InetAddress.getByName(" ");//通过主机名来返回一个ip地址对象,主机名可以是计算机的名字,也可以是计算机的ip地址 System.out.println(address1); I

2022-04-16 15:53:01 537

原创 javaSE常见线程池

对于每次创建线程--关闭线程的过程都是一个耗费性能的过程。在处理大型业务时,每进行一个任务就要创建一个线程,任务完是十分浪费计算机性能的。这时我们就可以借助线程池这个媒介来处理多个任务。线程池是存放线程的,当任务需要用到线程时,先看线程池里是否有空闲线程,若有空闲的就可以直接用,若没有空闲的需要在线程池中再创建新的线程,并且这个新的线程在使用完后仍存在线程池中,留待其他任务使用。使用线程池的优点:1、重用线程池的线程,避免因为线程的创建和销毁锁带来的性能开销2、有效控制线程池的最大并发数,避免大

2022-04-16 10:14:25 126

原创 javaSE线程基础

一、创建线程的方法1.继承Threadpublic class 继承Thread { public static void main(String[] args){ T1 t1=new T1(); T2 t2=new T2(); t1.start(); t2.start(); }}class T1 extends Thread { public void run(){ for(int i=0

2022-03-23 11:38:56 377

空空如也

空空如也

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

TA关注的人

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