- 博客(38)
- 收藏
- 关注
原创 职责链模式与装饰者模式
装饰模式就是为已有的功能添加更多功能的一种方式,当系统需要更新功能时,只需要添加一个单独的装饰类,并让这个类去包装需要装饰的对象。这样当我们执行特殊行为时就可以在客户端代码中根据需要有选择的、按顺序地使用装饰功能去包装对象。装饰功能优点:可以把原始类中的装饰功能搬移去除,这样可以简化原有的类。有效的把类的核心职责和装饰功能区分开来,而且可以去除相关类中重复的装饰逻辑。
2022-11-11 17:44:20
272
原创 Mybatis知识总结
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。ORM框架是连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。ORM框架:为了解决面型对象与关系数据库存在的互不匹配的现象的框架。#{变量名}可以进行预编译、类型匹配等操作。#{变量名}会转化为jdbc的类型。${变量名}不进行数据类型匹配,直接替换。#方式能够很大程度防止sql注入。
2022-11-03 18:00:20
965
原创 Cause: org.apache.ibatis.builder.BuilderException:问题解决
解决也很简单,只要把里面方言指定的property标签给去掉就行了。最后定位到错误,是核心配置文件里面分页插件的问题。
2022-10-27 15:20:13
1158
原创 java.lang.NoSuchMethodError:解决方案
解决方案:将jsqlparser依赖换成高版本的就行了,使用0.9版本以下的都会报错。
2022-10-27 15:06:32
685
原创 Redis-缓存穿透、缓存击穿、缓存雪崩
和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。当前台请求数据时,后台就会先从缓存中读取数据,如果取到数据就会直接返回结果,而取不到时则会去数据库中读取相应数据,并加载进缓存返回结果,如果数据库也未读取到相应数据,则直接返回空结果。是指缓存中没有但数据库中有的数据(一般是缓存时间到期),如双十一抢购,这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。
2022-10-10 20:18:02
182
原创 Filter过滤器
web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。web.xml配置:设置标签即可。过滤器的作用:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤…注解配置:设置dispatcherTypes属性。:如果有两个过滤器:过滤器1和过滤器2。
2022-09-29 09:01:54
102
原创 jsp与MVC开发模式
% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。:定义的java代码,在jsp转换后的java类的成员位置。:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
2022-09-26 09:22:50
160
原创 tomcat&servlet
Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的。webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径。webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
2022-09-16 19:44:03
99
原创 Druid(德鲁伊)数据库连接池
Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、Proxool等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,为:【druid.properties】...
2022-09-01 08:49:13
1418
原创 初步了解设计模式
设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。...
2022-08-27 09:02:33
174
原创 Git分布式版本控制工具
本地仓库和远程仓库本地仓库:是在开发人员自己电脑上的Git仓库远程仓库:是在远程服务器上的Git仓库1. Clone:克隆,就是将远程仓库复制到本地2. Push:推送,就是将本地仓库代码上传到远程仓库3. Pull:拉取,就是将远程仓库代码下载到本地仓库Git工作流程1.从远程仓库中克隆代码到本地仓库2.从本地仓库中checkout代码然后进行代码修改3.在提交前先将代码提交到暂存区4.提交到本地仓库。本地仓库中保存修改的各个历史版本。...
2022-08-16 11:02:06
98
原创 Java三层架构
UI(表现层):主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。BLL:(业务逻辑层): UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。DAL:(数据访问层): 与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。...
2022-08-11 16:09:36
474
原创 使用JDBC实现查询所有图书信息
接下来打开idea,运用JDBC连接数据库并对其进行操作进行操作。首先要先在数据库中准备好所需的图书信息表和数据。
2022-08-11 08:52:17
859
原创 数据库索引与SQL优化
在数据之外,数据库还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用指向数据,这样就可以在这些数据结构上实现高效查找,这些数据结构就是索引。
2022-08-05 17:02:34
101
原创 MySQL理解事务
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert、update、delete。:一个事务读取数据时,另外一个事务进行更新,导致第一个事务读取到了没有更新的数据。:一个事务读取到了另外一个事务未提交的数据。:同一个事务中,多次读取到的数据不一致。:可以避免脏读、不可重复读和幻读。..
2022-08-03 15:05:04
104
原创 java.io.InvalidClassException异常解决方案
java.io.InvalidClassException异常当我们使用对象序列化流将对象写入到文件中后修改了对象实体类里的属性再读取时就会抛出java.io.InvalidClassException异常。
2022-07-28 14:52:36
814
原创 Map集合体系与泛型的使用
键值对映射关系 一个键对应一个值 键不能重复,值可以重复 元素存取无序遍历方法2获取所有键值对对象的集合 Set entrySet():获取所有键值对对象的集合遍历键值对对象的集合,得到每一个键值对对象 用增强for实现,得到每一个Map.Entry根据键值对对象获取键和值 ,用getKey()得到键 用getValue()得到值遍历方法3通过forEach方法遍历。Collections集合工具类是针对集合操作的工具类泛型...
2022-07-05 17:56:48
596
原创 Collection集合体系
提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。Collection是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素。JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现。迭代器遍历迭代器,集合的专用遍历方式。Iterator iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到。迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的。List集合概述有序
2022-07-05 17:14:18
161
原创 案例:求两个日期之间相隔的天数
首先定义一个计算天数的方法,传入两个Date类型的参数。把传入的两个参数全部转换为毫秒值,然后计算一天有多少毫秒,拿两者相减的值除以一天的毫秒值就是相隔多少天。
2022-06-21 10:45:37
250
原创 常用API与异常
Math 包含执行基本数字运算的方法。Math类中无构造方法,但内部的方法都是静态的,则可以通过类名.进行调用。Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类,换句话说,该类所具备的方法,所有类都会有一份。查看方法源码的方式:选中方法,按下Ctrl + B。1、构造方法用 private 修饰2、成员用 public static 修饰Date 代表了一个特定的时间,精确到毫秒SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式
2022-06-21 10:31:41
187
原创 ArrayList集合,抽象类和接口
什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变ArrayList集合的特点 底层是数组实现的,长度可以变化泛型的使用 用于约束集合中存储元素的数据类型构造方法 public ArrayList() : 创建一个空的集合对象成员方法 public boolean remove(Object o) :删除指定的元素,返回删除是否成功 public E remove(int index) : 删除指定索引处的元素,返回被删
2022-06-17 19:22:19
204
原创 String常用API与final,static关键字
··API (Application Programming Interface) :应用程序编程接口。指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包
2022-06-16 19:35:44
95
原创 Java面向对象的三大特征
private是一个权限修饰符,可以修饰成员(成员变量和成员方法)作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰this修饰的变量用于指代成员变量方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量方法的形参没有与成员变量同
2022-06-16 18:00:23
3453
原创 Java面向对象基础
万物皆对象,客观存在的事物皆为对象。类是对现实生活中一类具有共同属性和行为的事物的抽象。类是对象的数据类型。类是具有相同属性和行为的一组对象的集合。对象具有的各种特征,每个对象的每个属性都拥有特定的值。对象能够执行的操作。类:类是对现实生活中一类具有共同属性和行为的事物的抽象。对象:是能够看得到摸的着的真实存在的实体。类是对象的抽象,对象是类的实体类的重要性:是Java程序的基本组成单位。类是什么:是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为。属性:在类中通过成员变量来体现
2022-06-14 11:01:54
86
原创 IDEA中Debug的使用
Debug是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。Debug调试,又被称为断点调试,断点其实是一个标记,告诉我们从哪里开始查看。选择要设置断点的代码行,在行号的区域后面单击鼠标左键出现红色圆点即可。在代码区单击鼠标右键,选中Debug执行即可。看Console窗口,里面时程序运行过程中的结果展示。看Debugger窗口,这里是看代码执行到了哪里和代码执行过程中变量的变化。点Step Into (F7)这个箭头可以执行下一行代码,也可以直接按F7。选择
2022-06-13 10:13:30
2019
原创 Java方法
方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意:方法必须先创建才可以使用,该过程称为方法定义方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用格式:public static void 方法名 ( 参数 ) { … … }格式(单个参数): public static void 方法名 ( 数据类型 变量名 ) { … … }格式(多个参数):public static void 方法名 ( 数据类型 变量名1 ,数据类型 变量名2 ,…… )
2022-06-10 16:18:58
59
原创 二维数组与基本的排序算法
二维数组与一维数组基本一致,只是数组里的每个元素都是一个一维数组代码如下:输出的结果:它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。代码实现:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 代码实现:它的工
2022-06-10 16:03:08
650
原创 Java数组
数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。1.数组定义格式:2.数组初始化 Java中的数组必须先初始化,然后才能使用所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值动态初始化:动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。格式:数据类型 [ ] 变量名 = new 数据类型[数组长度];静态初始化:静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度格式:数据类型 [ ] 变量名 = new 数据类型[ ] { 数据1 , 数据2 , 数
2022-06-09 15:07:02
65
原创 Java流程控制语句
流程控制语句分为ii顺序结构,循环结构以及分支结构。一,顺序结构顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。二,分支结构分为if语句和switch语句1.if语句格式一:格式二:格式三:执行流程:首先计算关系表达式的值 如果关系表达式的值为true就执行语句体1 如果关系表达式的值为false就执行语句体2 继续执行后面的语句内容2.switch语句格式:表达式:取值为byte、short、int、char,JDK5以后可以是枚
2022-06-07 20:13:15
207
原创 运算符与数据录入
一,算数运算符注意事项:/和%的区别:两个数据做除法,/取结果的商,%取结果的余数。整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。byte类型,short类型和char类型将被提升到int类型整个表达式的类型自动提升到表达式中最高等级操作数同样的类型 等级顺序:byte...
2022-06-06 19:24:13
192
原创 Java基础语法
一.注释注释是在程序指定位置添加的说明性信息,注释不参与程序运行,仅起到说明作用单行注释多行注释文档注释二,关键字关键字:就是被Java语言赋予了特定含义的单词。三,常量常量:在程序运行过程中,其值不可以发生改变的量。分为字符串常量,整数常量,小数常量,字符常量,字符常量,布尔常量及空常量。 四,数据类型计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最小的存储单元叫“字节(byte)”,通常用大写字母”B”表示,字节是由连续的8个位组成。 五
2022-06-06 17:54:24
51
原创 【Java第一课
开始学习Java第一节课。首先了解一下Java的发展史,Java是美国的sun公司于1995年推出的一门计算机语言,后由甲骨文公司收购。Java之父是詹姆斯-高斯林Java有一优势就是它 可以跨平台使用JDK:Java开发工具包,里面有供开发人员使用的各种开发工具,想要运行一个Java程序就必须安装JDKJRE:Java程序的运行环境,包含JVM与核心类库DOS命令窗口: Path环境变量的配置:...
2022-06-06 14:36:56
1195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人