自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 问答 (10)
  • 收藏
  • 关注

原创 Windows下安装tomcat无法启动问题汇总和解决

tomcat在初学的时候安装总是出现各种问题,最近重新安装了一次,居然也被一些小问题导致无法启动了,特此写下这篇文章,希望能帮助到大家。

2023-08-21 10:07:34 2524 1

原创 适配器模式-java实现

到这里,我们可以知道适配器模式的理念,就是复用旧系统中的功能类,去适配新的接口,而新的接口,恰好需要和旧系统中对象相同的功能(不完全相同,但是大体一致),这时候就需要适配器去将旧功能对象去转化成为新接口的实现。请注意:适配器模式的要点是,新的目标接口所需要的功能跟旧接口的一致,但是又有一些差别,因此需要适配器Adapter来进行转换处理,而不是添加新的接口等,切勿跟装饰模式搞混了。那么美国电器,就是新的功能规范,需要的功能类型和旧接口是一致的,只是不能直接使用旧接口,所以需要适配器去对旧接口进行转换操作。

2023-08-08 21:04:49 848

原创 桥接模式-java实现

(抽象类):用于定义抽象类的接口,它一般是抽象类而不是接口,其中定义了一个 Implementor(实现类接口)类型的对象并可以维护该对象,它与 Implementor 之间具有关联关系。

2023-08-08 20:50:38 809

原创 单例模式-java实现

单例模式的意图:保证某个类在系统中有且仅有一个实例。我们可以看到下面的类图:一般的单例的实现,是属性中保持着一个自己的私有静态实例引用,还有一个私有的构造方法,然后再开放一个静态的获取实例的方法给外界获取实例对象。

2023-08-08 20:30:50 800

原创 抽象工厂模式-java实现

抽象工厂模式基于工厂方法模式引入了“产品族”的概念,即我们认为具体产品是固定的,具体产品存在等级之分,比如我们常说的手机,有“青春版”,“至尊版”,“至臻版”。一个产品有多个版本族。这时候,我们假设产品是固定的,用户只需要选择对应的产品族即可。增加了族的概念,类似于同一个产品有等级之分产品。一个具体工厂,专门负责生产一个固定等级的不同产品。

2023-08-08 20:24:24 445

原创 工厂方法模式-java实现

工厂方法模式,通过把工厂抽象为一个接口,这样当我们新增具体产品的时候,就只需要实现一个新的具体工厂类即可。一个具体工厂类,对应着一个产品。请注意:在工厂方法模式中,一个具体工厂类只对应生产一个产品。(这是扩展产品的关键)工厂方法模式与简单工厂模式的区别就是,不直接使用具体的工厂类,而是使用一个共同的工厂接口,于是把创建产品的任务延迟到子类进行,这样做的好处是,当我们需要增加新产品时,不需要直接去工厂类修改代码,只需新增一个工厂子类即可。程序员只需要关注去使用哪一个具体工厂类即可。

2023-08-08 20:15:48 674

原创 设计模式-简单工厂模式(静态工厂模式)java实现

简单工厂模式根据所提供的参数数据返回几个可能类中的一个类的实例。通常返回的类都有一个公共的父类和公共的方法。

2023-08-08 17:54:34 709

原创 增强for循环原理详解

所以我们与其说是副本,不如说又新建了一个变量,去引用迭代器遍历到的值,如果元素是基本数据类型则保存的仅仅是值,如果是引用数据类型,就是保存的是地址,我们可以使用这个地址对对应的对象进行操作的,比如修改这个对象的属性等。但是上面例子中,元素是字符串"",是不可变的,因此增强for循环的局部变量引用是指向了字符串常量池,对这个字符串的更新,会在字符串常量池新创造一个字符串的对象,并不会影响遍历到的元素的内容。

2023-08-01 17:23:30 733

原创 装饰者模式-java实现

装饰模式又称为“包装(Wrapper)模式”,以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。动态地给对象添加一些额外地职责,就增加功能而言,装饰模式比生成子类更加灵活。

2023-05-24 22:08:39 1145 1

原创 单例模式-详解

单例模式的意图:保证某个类有且仅有一个实例我们可以看到下面的类图:一般的单例的实现,是属性中保持着一个自己的私有静态实例引用,还有一个私有的构造方法,然后再开放一个静态的获取实例的方法给外界获取实例对象。在java中有两种实现的方法。

2023-05-23 16:08:05 76

原创 Springcloud核心组件

在这里总结一下所有组件:springcloud是分布式微服务的一站式解决方案,可以说微服务是一个概念,而springcloud就是这个的实现。

2023-04-16 16:18:27 747

原创 Mybatis执行器源码观察

由SqlSession定义门面,然后核心的执行组件是Executor执行器,它也是一个接口,定义了门面api所需要的接口,由baseExecutor抽象类来实现它,还有一级缓存以及获取连接等逻辑,定义了抽象方法doquery和doUpdate来交付给它的子类来完成不同的执行过程。simpleExecutor简单执行器同样的sql每执行一次都要创建一个预编译的对象,prepareStatement。由此,我们的执行器方法就已经执行结束了。然后我们再进入下面的query方法。实现二级缓存的逻辑是这样的。...

2022-07-16 11:54:48 218

原创 Mybatis获取参数的源码分析

用到的样例mapper接口在测试方法中进行测试,并打断点在调用loginByParam处打断点 然后步入, 继续步入之后可以看见 继续步入 上面这一步,是将参数的map返回 names的初始化代码因此我们可以知道names中存放的是,[(参数索引,@Param值或者“arg0”,”arg1”...),]所以我们可以继续分析下面的代码了...

2022-07-06 23:10:53 266

原创 有关Mybatis中使用$获取参数报反射异常的问题

报错如下 意思是没有那个参数 然后我们需要在mapper接口参数旁边加上一个参数注解,Mybatis才能识别出来 并且这里的value值必须要和${}中的值一致,否则报错

2022-07-05 23:29:16 247

原创 Mybatis加入log4j日志

2、导入log4j依赖3、添加log4j.xml配置文件到resource目录下,名字一定要一致log4j.xml的内容 关于日志级别,FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)级别越高,记录的日志信息越少选中某一个级别时,保存的是>=该级别的日志级别信息测试...

2022-07-04 22:41:54 774

原创 SpringMVC-DispatchServlet初始化过程

首先,继承关系如下上面标注了init方法的重写过程在FrameworkServlet类中的initServletBean()中,而initWebApplicationContext()方法中对父容器的对象进行了获取再看下面先看创建容器的方法它封装了createWebApplicationContext()方法,这个方法应该是创建原生的容器的现在我们再来看initWebApplicationContext() 方法中的刷新容器方..

2022-02-21 22:37:47 260

原创 SpringMVC拦截器源码观察

创建拦截器的方式:方式一:在核心配置文件中配置拦截器组标签里直接创建bean对象方式二:将拦截器注册到ioc容器中,然后再配置拦截器组标签里引用赋值但是这两种方式都不能设置拦截的匹配路径,默认都是拦截通过了前端控制器的请求(也就是说,能拦截所有前端控制器所能处理的请求)方式三,具体配置某个拦截器在拦截器的匹配路径设置当中的规则:/*只表示匹配工程目录下的请求,不是所有的请求。/**才是匹配所有的请求拦截器中的三个抽象方法:preHand..

2022-02-19 13:31:37 538

原创 SpringMVC-restful风格实现简单的页面增删改查

核心配置文件:<?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:context="http://www.springframework.org/schema/context" xm

2022-02-15 12:05:05 408

原创 关于我在js监听器中使用ajax请求遇到的问题

因为它是异步的所以它会使用分线程去处理,然后主线程直接跳过ajax请求继续执行下面的东西,所以如果希望使用ajax的回调函数修改回调函数外部的数据,那么请保持线程同步。一个解决方式是将下面的步骤写到回调方法中即可(相当于使用了同步锁)...

2022-02-14 21:53:47 396 1

原创 javaweb-web.xml需要的命名空间

xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"

2022-02-12 19:31:42 448

原创 java-传入一个数组,求非重复部分的和

class MyNum{ public static int getUniqueSum(int[] nums){ int sum=0;//存储结果 //创建一个相同长度的标记数组(默认初始化为false) boolean[] tip=new boolean[nums.length]; for(int i=0;i<tip.length;i++){ if(!tip[i]){ /.

2022-02-07 19:07:03 167

原创 Spring整合Junit5

第一步,引入相关依赖<!-- Junit5--> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.6.2</version>

2022-02-05 21:00:23 1114

原创 Caused by: java.lang.ClassNotFoundException: org.springframework.core.ResolvableTypeProvider

在导入junit4的时候发现出现了这样的异常,应该是找不到类,但是已经导入了发现有可能是有一个同名的jar包,里面没有对应的类,然后我把Spring-test放在maven的最后面,让它覆盖掉前面的。于是异常解决。...

2022-02-05 20:53:47 911

原创 Spring-全注解开发

导入需要使用的命名空间<?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:context="http://www.springframework.org/schema/context"

2022-02-04 12:55:26 321

原创 Spring-使用xml方式实现事务

使用xml方式实现事务处理1、配置事务管理器2、配置通知3、配置切入点4、配置切面(使用之前配置的通知和切入点)数据库连接池<!-- 配置数据库连接池--> <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource" destroy-method="close"> <property name="url" value="jdbc:mysql..

2022-02-04 12:46:53 939

原创 Spring-使用注解定义切面

//定义切面@Aspectpublic class AnnotationPointCut { //定义切入点 @Before(value = "execution(* com.simple1.UserDaoImpl.*(..))") public void before(){ System.out.println("方法执行前"); } @After(value = "execution(* com.simple1.UserDaoImpl.*(..

2022-02-04 12:35:34 580

原创 Spring-自定义类作为切面

我们使用自定义的类作为切面,但是比较有局限性public class MyDiyPointCut { public void before(){ System.out.println("==========执行前的方法=========="); } public void after(){ System.out.println("==========执行后的方法=========="); }}到xml文件中去配置<!

2022-02-04 12:30:36 399

原创 Spring框架-原生的aop使用

现在有一个dao类,我们想在不改变源代码的情况下,实现一个输出方法日志的功能public interface UserDao { void add(); void delete(); void update(); void select();}public class UserDaoImpl implements UserDao{ @Override public void add() { System.out.println(

2022-02-04 12:25:49 437

原创 java-项目里面重命名类报错的问题

因为在项目里面重命名了类,也就是执行了重构,但是因为java实际上作用的是字节码文件,所以我们要找到原来的字节码文件并删除,否则可能会报错我将Book改成了User,但是原来Book的字节码文件依然保留着,所以我们要手动去删除...

2022-01-28 13:10:40 997

原创 java-静态代理的实现与理解

具体的图示如下现在我们来写一个小例子假如有一个用户想连接网络,这是一个需求,那么要做这个需求的有谁呢?一个是代理用户连接网络的对象(代理类对象),一个是实现需求的对象(被代理类)那么用户连接网络的时候,不会直接找到服务器对象让它连接,因为在连接网络之前可能还需要一系列的操作,这些操作是代理类给我们做的。上代码需求接口//连接网络的需求public interface NetWork { void netWork();//连接方法}代理类public cl

2022-01-24 20:29:48 286

原创 Spring使用注解开发需要maven导入的依赖

没有导入完全会报错 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency>.

2022-01-23 22:33:41 2053

原创 Spring-ioc初体验

在之前的Javaweb中,我们通常要实现dao层,service层,Servlet层。其中,dao层直接对数据库进行操作,service层在内部创建了dao的对象,代替我们去调用dao层去操作数据库,实现了业务的分离。但是,有一个弊端我们先实现一个样例public interface UserDao { void getUser();}public class UserDaoImpl implements UserDao{ @Override public

2022-01-22 12:55:22 786

原创 java--json与JavaBean,List,Map的使用

需要用到谷歌的一个jar包gson.jar测试的类/** * @Classname Person * @author: 我心 * @Description: * @Date 2022/1/17 21:16 * @Created by Lenovo */public class Person { private String name; private int age; private String sex; public Person(Strin

2022-01-17 22:48:14 299

原创 javaweb--json的使用

什么是JSON?JSON(Javascript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,而且很多语言都提供了对JSON的支持,这样就使得JSON称为理想的数据交换格式。“轻量级”指的是根xml文件做比较数据交换格式指的是客户端与服务器之间业务数据的传递格式。JSON的定义:JSON是由键值对组成,并且由花括号{}包围。每个键由引号””引起来,键和值之间用冒号:进行分隔。多组键值.

2022-01-17 22:44:18 594

原创 Javaweb--Filter过滤器的基本使用

Filter 什么是过滤器?1、Filter过滤器是javaweb的三大组件之一。三大组件分别是,Servlet程序,Listener监听器,Filter过滤器2、Filter过滤器它是Javaee的规范,也就是接口3、Filter过滤器的作用是:拦截请求,过滤响应。一般拦截请求用的比较多拦截请求常见的应用场景有:1、权限检查2、日记操作3、事务管理...等一些页面需要登录后才能操作,比如购物车页面,订单页面等,这时候就需要过滤请求,不是所有的请求都响应。而..

2022-01-14 19:05:42 1911

原创 数据结构--快速排序

这里快速排序使用递归的形式实现思想就是,取第一个元素与最后一个元素交换,设置一个Low指针指向数组的左边界,设置一个High指针指向数组的右边界-1(也就是倒数第二个元素)Low向前遍历找比基准元素大的元素的索引,High指针向左边界找比基准元素小的元素如果Low<High则交换两个索引对应的元素否则,跳出循环(这时候说明某一个已经找不到比基准元素大或小的元素了,直接指向了基准元素)跳出循环以后,调整基准元素位置,因为Low交换了前面的大元素,所以Low左边都是比基准元素小

2021-12-15 17:08:02 1369 2

原创 数据结构--插入排序(C语言实现)

需要用到的结构体struct LNode { int Data[MAXSIZE]; //Data为待排序序列数组 int Last; //Last为最后一个元素的数组下标 };typedef struct LNode *List;void InsertionSort(List L);关于插入排序,是先将要插入的数据提出来,再以这个数据为开始,向前遍历这里,我们取一个例子来插入排序,假设4,5已排序好这是比前面所有值都小的情况,那么,另一种情况就是没遍历结束就找到.

2021-12-15 16:33:59 1958

原创 数据结构--二叉搜索树的操作集

这是一个pta的题目,删除我没有用递归来写,写起来有些麻烦,但是总归是写出来了,查找函数我使用了嵌套,因为我还需要一个查找父节点的函数,所以直接封装了查找父节点的函数需要提示的内容都在注释里了/* 你的代码将被嵌在这里 *///返回指定元素的父节点,返回空为根节点或者空树Position FindPre(BinTree BST, ElementType X) { BinTree T = BST; BinTree pre = NULL; while (T != NULL) { .

2021-12-08 10:26:24 702

原创 python--匹配ip地址

def patchIP(ipStr:str): b=True # 确定ip的真假 num=re.compile('\d+') # 匹配纯数字 # 通过.来分割成几个部分,要注意\.才表示字符. ,直接.表示匹配任意一个字符 ipgroup=re.split('\.',ipStr) # 分组不为4则返回假 if len(ipgroup)!=4: return False for s in ipgroup: numst.

2021-11-21 10:47:37 1879

原创 python--正则表达式匹配密码

快考试了,一些太复杂的正则表达式咱在开发中都是直接copy,但是考试就没有办法copy了,这时候,我们可以使用re模块中的findall()函数来将要求分别进行匹配,这倒也不失为一种方式,尽管麻烦了一点,但也能写出来def patchPassWord(password:str): ''' 检查密码标准: 1、至少[a-z]之间至少要有一个字母 2、[A-Z]之间至少要有一个字母 3、[0-9]之间至少要有一个数字 4、[@#$]之间至少有一个字符

2021-11-20 11:43:45 2215

空空如也

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

TA关注的人

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