![](https://img-blog.csdnimg.cn/20210412114717253.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 72
1
路在何方い
非学,无以致疑;非问,无以广识
展开
-
多线程学习笔记
1.进程 线程进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单元。线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。注意:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果原创 2020-10-17 20:54:01 · 162 阅读 · 1 评论 -
java SSM 解决跨域问题
1.什么是跨域请求由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。具体可以查看下表2.解决跨域请求1. 新建一个过滤器,并实现Filter 接口package hbsi.yfzx.filter;import java.io.IOException;import javax.servlet.Filter;import...原创 2018-08-01 20:02:24 · 2577 阅读 · 0 评论 -
SSM整合详解 springmvc-spring-mybatis框架的搭建
2.添加各种配置2.1 引入依赖pom.xml<?xml version="1.0" encoding="UTF-8"?><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.0 htt原创 2020-06-13 20:34:00 · 272 阅读 · 0 评论 -
Redis缓存穿透、缓存击穿、缓存雪崩
1.缓存穿透(查不到)概念用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询,发现也有没有,于是本次查询失败。当用户很多时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库很大的压力,这就相当于出现了缓存穿透。解决方案1.布隆过滤器:布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,不符合则丢弃,从而避免了对底层存储系统的查询压力。2.缓存空对象当存储层不命中后,即使返回的空对象也将其缓存起来原创 2020-10-14 13:04:30 · 197 阅读 · 0 评论 -
JDK8新特性详解
目录一.1.lambda表达式2.函数式接口方法引用构造器引用数组引用Stream API的引入java8(jdk8)是java语言开发的一个主要版本,2014年3月发布,是JDK5以来最具革命性的版本新特性简介:(1)速度更快(2)代码更少(3)Stream API (4)便于并行(5)最大化减少空指针异常:Optional ...原创 2020-04-12 23:39:38 · 553 阅读 · 0 评论 -
@Controller和@RestController的区别?
@RestController注解相当于@ResponseBody + @Controller合在一起的作用1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。例如:本来应该到success.jsp页面的,则其显示success.2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器Int转载 2021-05-20 20:09:19 · 524 阅读 · 0 评论 -
JSONObject.fromObject(obj)报错 无法调取方法
一、原因1.一般显示要导入的包都是import com.alibaba.fastjson.JSONObject;2.真正需要的其实是import net.sf.json.JSONObject;二.解决办法添加 maven pom.xml 依赖,从maven网上仓库下载依赖 地址:https://mvnrepository.com/搜索:json-lib-2.2.1-jdk15寻找对应的依赖<dependency> <groupId>...原创 2020-07-02 18:57:36 · 1599 阅读 · 3 评论 -
mybatis分页实现
1.Sql分页分页sql格式是:select * from table limit (start-1)*pageSize,pageSize;其中start是页码,pageSize是每页显示的条数。查询的分页数据是 从(start-1)*pageSize条开始,每页显示pageSize条数比如:查询第1条到第5条的数据的sql是:select * from table limit 0,5; ->对应我们的需求就是查询第一页的数据:select * from table limi...原创 2020-06-16 22:05:15 · 416 阅读 · 0 评论 -
【ssh】struts2-hibernate-spring框架的搭建
创建一个web项目1. 创建的是一个web项目 必须要添加web.xml文件web.xml is missing and <failOnMissingWebXml> is set to true 2.在src目录下创建一个WEB-INF的文件夹。创建web.xml文件<?xml version="1.0" encoding="UTF-8"...原创 2018-08-01 18:10:53 · 157 阅读 · 0 评论 -
Hibernate中session为释放,导致tomcat死掉
应用程序采用struts2 + spring2 + hibernate3架构连接池配置使用的是c3p0, 最大池大小为20, 很显然是连接池耗尽导致的。 增加连接池大小只是饮鸩止渴,总还有耗尽的时候,必须找到根本原因。Dao类的分页查询方法如下:java 代码public List getTopics(int perPageStartNum, int perPageShowNum,...原创 2018-08-09 14:33:46 · 418 阅读 · 0 评论 -
MyBatis-缓存机制
目录前言1.一级缓存(本地缓存)1.1缓存机制1.2、一级缓存的工作机制1.3、同一个SqlSession(一级缓存的体现)1.4、不同的SqlSession1.5、SqlSession相同,但是两次查询期间执行了增删改操作前言mybatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,缓存可以极大的提升查询效率。 mybatis系统中默认定义了两级缓存。 一级缓存和二级缓存 ➢默认情况下,只有一级缓存(SqlSession级别的...原创 2020-06-07 21:33:58 · 318 阅读 · 0 评论 -
Referenced file contains errors (project-aware://maven_demo1/org/springframework/beans/factory/xml/s
在配置文件出现如下错误Referenced file contains errors (project-aware://maven_demo1/org/springframework/beans/factory/xml/spring-beans-4.0.xsd). For more information, right click on the message in the Problems View and select "Show Details..."这种错误是属于配置文件的验证错误,实际上并原创 2020-06-07 09:05:08 · 257 阅读 · 0 评论 -
Mybatis动态SQL查询
动态SQL多用于解决查询条件不确定的情况,在程序运行期间,根据用户提交的多种可能的查询条件,提交的查询条件不同,动态生成和执行的SQL语句也不同。动态SQL通过Mybatis提供的各种标签对条件作出判断以实现动态拼接SQL语句。MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作 常用的动态SQL标签有<if>,<where>,choose (when, otherwise),trim (where, set),foreach OGNL(object...原创 2020-06-06 23:38:06 · 1011 阅读 · 0 评论 -
Mybatis参数值的获取方式
1.#{}:可以获取单个普通类型的参数、POJO的参数、Map的参数获取过程详解 见本人博客https://blog.csdn.net/lbqlzch/article/details/1065920092.${}可以获取POJO的参数,Map的参数,如果获取单个普通类型的参数,需要使用_parameter代表的内置参数来获取获取单个普通类型的参数: <select id="getEmployeeById" resultType="employee" databaseId="oracl原创 2020-06-06 21:32:40 · 578 阅读 · 0 评论 -
Mybatis参数(Parameters)传递
1.单个普通类型(基本类型、包装类型、String)的参数封装规则:Mybatis不会做特殊的处理取值 #{随便写,建议与实际的参数名保持一致} 例如: 操作:public Employee getEmployeeById(Integer id ); 取值:#{id} <!-- 关于select 的查询语句 resulType:查询结果对应的类型 id 当前sql语句的唯一标识 #{id}...原创 2020-06-06 20:51:43 · 5644 阅读 · 0 评论 -
Spring的AOP机制
目录1.AOP简介2.AOP术语3.Spring AOP1.在Spring中启用AspectJ注解支持,用AspectJ注解声明切面2.用基于XML的配置声明切面1.AOP简介AOP是面向切面的编程,其编程的思想是把散步于不同业务但功能相同的代码从业务逻辑中抽取出来,封装成独立的模块,这些独立的模块被称为切面,切面具体功能方法别称为关注点。在业务逻辑执行过程中,AOP会把分离出来的切面和关注点动态切入到业务流程中,这样做的好处是提高了功能代码的重用性和可维护性。 在应用A.原创 2020-05-26 19:24:19 · 753 阅读 · 2 评论 -
SpringIOC容器中Bean的生命周期
1.IOC容器中Bean的生命周期方法 Spring IOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务。 SpringIOC容器对Bean的生命周期进行管理的过程:通过构造方法或工厂方法创建bean对象 为Bean对象注入值(调用set方法) 调用Bean的初始化方法 通过init-method来指定 Bean 可以使用了 当IOC容器,调用Bean的销毁方法在Bean的声明里设置init-method和destory-method属性,为..原创 2020-05-26 11:32:53 · 652 阅读 · 0 评论 -
Spring Bean的作用域
在Spring中,bean作用域用于确定哪种类型的bean实例应该从Spring容器中返回给调用者。目前Spring Bean的作用域或者说范围主要有五种。作用域 描述 singleton 在springIoC容器仅存在一个Bean实例,Bean以单例方式存在,bean作用域范围的默认值。 prototype 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()。 request 每次HTTP请求都会.转载 2020-05-26 09:21:03 · 261 阅读 · 0 评论 -
SpringIOC容器
1.什么是IOCIOC(Inversion of Control):其思想翻转资源获取的方向,传统的资源查找方法要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源,而应用了IOC之后,则是容器主动地将资源推送给它所管理的组件,组件所要做的仅是一种合适的方式来接受资源。这种行为也被称为查找的被动形式。 Spring是怎么做的呢? SpringIOC容器先把所有对象管理起来,然后发现一些类中的@Autowird注解自动给你执行装配,这就是web程序中,spring监 听器干的事情,...原创 2020-05-24 22:05:11 · 152 阅读 · 0 评论 -
mvc:annotation-driven配置
SpringMVC会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter两个bean 是SpringMVC为@Controller分发请求必须的,并提供了数据绑定支持,@NumberFormatannotaion支持, @DateTimeFormat支持,@Valid支持,读写XML支持(JAXB),读写json格式的支持(Jackson)1.处理静态资源请求时,配置了<mvc:default-...原创 2020-05-22 07:40:34 · 685 阅读 · 0 评论 -
SpringMVC对json数据的处理
1.SpringMVC对json格式数据的支持SpringMVC使用HttpMessageConverter处理json,使用HttpMessageConverter<T>将请求信息转化并绑定到处理方法的入参中或将相应结果转为对应的相应的响应信息,spring提供@RequestBody/@responseBody对处理方法进行标注。 当控制器处理方法使用到 @RequestBody/@ResponseBody,Spring 首先根据请求头或响应头的 Accept 属性选择匹配的 ...原创 2020-05-17 19:17:18 · 524 阅读 · 0 评论 -
SpringMVC常用注解整理
1.@RequestMapping用于处理请求地址映射,可以作用于类和方法上SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求 注解可标注的位置:在控制器的类定义及方法定义处都可标注@RequestMapping (1)类定义处:对当前Handler中的所有的方法都起作用,相当于初步的请求映射 (2)方法处:对当前的方法起作用,提供进一步的细分映射信息。 (3)类定义+方法处:请求处理方法的请求映射变成:类定义处+方法定义...原创 2020-05-16 23:49:32 · 442 阅读 · 0 评论 -
SpringMVC数据校验
1.JSR 303 校验框架因为Spring的LocalValidatorFactroyBean既实现了 Spring的Validator接口,也实现了 JSR 303的Validator接口,因此我们介绍一个JSR303JSR 303JSR 303是Java为Bean数据合法性校验提供的标准的框架,它已经包含在JavaEE6.0中 JSR 303通过在Bean属性上标注类似于@NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证注解 功能说明原创 2020-05-16 14:57:23 · 710 阅读 · 0 评论 -
HttpStatus状态详解
1.常用HttpStatus状态:HttpStatus.OK = 200;HttpStatus.BADREQUEST = 400;HttpStatus.FORBIDDEN = 403;HttpStatus.NOTFOUND = 404;HttpStatus.TIMEOUT = 408;HttpStatus.SERVERERROR = 500;2.HttpStatus状态码详解HttpStatus = { //Informational 1x...转载 2020-05-14 09:29:52 · 888 阅读 · 0 评论 -
SpringMVC 拦截器实现原理
1.SpringMVC 拦截器的原理图单个拦截器方法执行顺序多个拦截器方法执行顺序Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调...原创 2020-05-13 12:30:17 · 741 阅读 · 0 评论 -
No mapping found for HTTP request with URI [xxxxx] in DispatcherServlet
1.SpringMVC静态资源请求:期望实现的功能,应在显示所有员工之前,弹出一个<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01原创 2020-05-12 17:22:30 · 1196 阅读 · 0 评论 -
Eclipse插件下载 4.2到Eclipse4.14.0的所有版本的spring插件
链接:https://pan.baidu.com/s/1QqI7K2foatzolk-ST8DapQ提取码:2iyv复制这段内容后打开百度网盘手机App,操作更方便哦原创 2020-04-12 16:06:43 · 2667 阅读 · 13 评论 -
HiddenHttpMethodFilter进行请求过滤,实现Rest风格的url
1.REST:即Representational State Transfer,(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用状态转化(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器...原创 2020-05-07 12:40:21 · 342 阅读 · 0 评论 -
Cookie Session详解
一.cookie网上摘抄前言:在了解这三个概念之前我们先要了解HTTP是无状态的Web服务器,什么是无状态呢?就像上面夏洛特烦恼中经典的一幕对话一样,一次对话完成后下一次对话完全不知道上一次对话发生了什么。如果在Web服务器中只是用来管理静态文件还好说,对方是谁并不重要,把文件从磁盘中读取出来发出去即可。但是随着网络的不断发展,比如电商中的购物车只有记住了用户的身份才能够执行接下来的一系列动作...原创 2020-04-04 21:56:50 · 634 阅读 · 0 评论 -
文件上传与下载
一.下载需求: 1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载分析:1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析,则弹出下载提示框。--- - 图片是可以直接被解析的,不能弹出下载提示框,但是视频不能被解析。 2. 任何资源都必须弹出下载提示框 ...原创 2020-04-01 13:24:43 · 248 阅读 · 0 评论 -
forward 和 redirect 区别
重定向的特点:redirect地址栏发生变化 重定向可以访问其他站点(服务器)的资源 (写了网址可以重定向到百度、网易各种网址) 重定向是两次请求,不能使用request对象来共享转发的特点:forward地址栏路径不变 转发只能访问当前服务器下的资源 转发是一次请求,可以使用request对象来共享数据forward和redirect的 区别1. 路径分类:(...原创 2020-03-28 19:57:19 · 840 阅读 · 0 评论 -
http请求 响应数据格式
转载链接一、请求消息数据格式请求行+请求头+数据体1.请求行包含三个内容method + request-URI + http-versionmethod包含有post , get, head,delete, put, connect, options, patch, propfind, propatch, mkcol, copy, move, lock, unloc...转载 2020-03-26 21:30:48 · 4117 阅读 · 0 评论 -
Servlet中的生命周期方法:
某个类实现servelt接口时,添加的没有实现的方法被创建:执行init()方法,只执行一次 (1)Servlet什么时候创建? 默认情况下,第一次访问时,Servlet被创建。 可以配置Servlet的创建时机:在<servlet>标签下配置。 第一次访问时被创建: <load-on-star...原创 2020-03-20 19:29:43 · 304 阅读 · 0 评论 -
Tomcat安装之前为什么要安装jdk
JAVA开发配置环境变量 为什么java开发要先配置jdk和tomcat的环境变量呢? 严格的说,JDK是给java开发者用的,需要用jdk提供的工具来编译你的程序,打包程序。因此,JDK就如同它的名字一样,是一个开发者工具包。 在上一篇中小编已经说到了tomcat的一些知识,这里就不在赘述了。 在这里就说说jdk,eclipse,tomcat 和java 的联系吧,大家可以...转载 2020-03-19 19:49:15 · 428 阅读 · 0 评论 -
request.getSession().getServletContext().getRealPath("/");
request.getSession().getServletContext()是获取的servlet容器对象,相当于tomcat容器了。getRealPath("/") 获取实际路径,项目发布时,在容器中的实际路径。D:\apache-tomcat-8.5.23\apache-tomcat-8.0.52\wtpwebapps\Springmvc_day01\(Springmvc_day...原创 2019-09-20 20:19:52 · 15768 阅读 · 0 评论 -
springmvc与struts2的区别
Springmvc和struts都是基于mvc模式的javaEE框架、区别一:SpringMVC基于方法开发,struts基于类开发。在使用SpringMVC框架进行开发时,会将URL请求路径与Controller类的某个方法进行绑定,请求参数作为该方法的形参。当用户请求该URL路径时,SpringMVC会将URL信息与Controller类的某个方法进行映射,生成一个Handler对象,...原创 2018-12-03 13:29:01 · 250 阅读 · 0 评论 -
Mybatis运行流程
Mybatis的整个运行流程,也是紧紧围绕着数据库连接池配置文件SqlMapConfig.xml,以及SQL映射配置文件Mapper.xml而展开的 首先SqlsessionFactory会话工厂会通过Resource资源信息加载对象获取SqlMapConfig.xml配置文件信息,然后产生可以与数据库进行交互的会话实例类SqlSession。会话实例类Sqlsession可以根据Map...原创 2018-07-18 19:56:06 · 614 阅读 · 0 评论 -
SpringMVC请求流程
Springmvc框架基于组件方式的执行流程SpringMVC的整体请求流程如下1.第一步,用户单击某个请求路径,发起一个request请求,此请求会被前端控制器(DispacherServlet)处理。2.第二步,前端控制器(DispatcherServlet)请求处理器映射器(HandlerMapping)去查找Handler。可以根据注解或者XML配置去查找。3.第三步,...原创 2019-09-16 19:50:15 · 207 阅读 · 0 评论 -
Maven构建SpringMVC环境报错“java.lang.ClassNotFoundException: org.springframework.web.servlet. DispatcherSe
错误信息如下图:一开始以为类名错误,检查好几遍,都没啥问题,鼠标点击也能查看源码。上网找了下,有人说Java EE Web应用程序项目定义打包结构可能不对,于是我立马想到了项目上点击右键properties找到如下界面一看原来Maven Dependencies没有配置到WEB-INF/lib下2.3.4..然后重启,不再报错了,请求也跳转到正确...原创 2019-09-17 11:30:59 · 1925 阅读 · 3 评论 -
Java过滤器和SpringMVC拦截器之间的关系与区别
由于最近做的项目中有一部分是接口远程调用,用到了接入权限和业务权限的鉴定,需要采用SpringMVC的拦截器,以前用Struts2的时候用过拦截器,而SpringMVC的拦截器功能之前没研究过,所以这次来稍微研究一下,得出的结论是SpringMVC的拦截器和Struts2的拦截器原理几乎是一模一样的,都是利用反射功能实现动态代理。 因为过滤器和拦截器有很多相似甚至相同的地方,因为很多时候二...转载 2019-09-18 15:08:03 · 206 阅读 · 0 评论