自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

原创 自实现简易ORM框架

自实现简易ORM框架一、ORM介绍基本思想SORM框架二、框架简介目录结构架构设计框架分析1.core2.bean3.util三、详细分析bean对象分析1.ColumnInfo2.Configuration3.JavaField4.TableInfoutil工具分析1.JavaFileUtils2.JDBCUtils3.ReflectUtils4.StringUtilscore核心业务分析1.ConnectionPool2.TableConvert3.TableContext4.DBManager5.Ca

2020-10-18 15:26:04 1232 2

原创 自实现简易版SSM框架

源码已上传至GitHub和码云,如果觉得有帮助的话随手点颗Star呗,感谢各位。GitHub:https://github.com/XuBin8866/simple-framework码云:https://gitee.com/AlwaysXu/simple-framework自实现简易SSM框架一、框架介绍1.目录结构2.框架分析二、详细分析1.框架使用方式2.代码分析2.1 core2.2 inject2.3 aop2.4 mvc2.5 simple-mybatis一、框架介绍该框架基本实现SS

2020-10-18 15:22:57 229

原创 自实现简易版MyBatis框架

此框架实现了读取mapper.xml文件通过接口方法的代理 进行增删改查操作和直接调用Session的方法传入封装好数据的实体对象进行增删改操作的功能。框架的包名和类名大多和MyBatis下的文件采用相同的命名,框架的执行流程和使用方法和MyBatis类似,算是我前一篇所写的简易MyBatis框架的完善版本。前一篇文章中有对简易框架的执行流程分析,有需要可以参考下:手写MyBatis框架——按执行流程编写源码已上传至GitHub,如果觉得有帮助的话随手点颗star呗,感谢各位!地址:https://gi

2020-10-18 15:22:10 257

原创 图书馆管理系统(Maven+Jsp+Servlet+JavaBean+MySql实现)

本项目参考慕课网Jsp课程的拓展项目。项目源代码、数据库文件、拓展项目自带的说明文档都已上传github和码云。github:图书馆管理系统码云:图书馆管理系统一、功能介绍如图:系统结构功能图系统流程图二、界面效果三、项目分析3.1开发环境Eclipse 2018-12JDK:jdk-8u211-windows-x64Maven:apache-maven-3.6....

2020-10-02 23:46:19 10573

原创 软件架构设计原则

软件架构设计原则一、开闭原则二、依赖倒置原则三、单一指责原则四、接口隔离原则五、迪米特原则六、里氏替换原则七、合成复用原则八、设计原则总结一、开闭原则开闭原则(Open-Closed Principle,OCP),是指对一个软件实体(如类、模块和函数)应该对于扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。它强调的是用抽象构建框架,用实现扩展细节,可以提高软件软件系统的可重复性及可维护性。开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定、灵活的系统。代码示例:

2020-12-17 16:45:58 528 2

原创 CentOS环境配置四——ZooKeeper和Solr部署

CentOS环境配置四——ZooKeeper和Solr部署1.ZooKeeper单机部署2.Solr单机部署1.ZooKeeper单机部署下载zookeeper并传输到CentOS服务器上。下载地址(3.5.5版本以后需要下载名称带bin的包,包内为编译后的文件,而不带bin的包则是源码)# 解压到指定目录$ tar -zxvf apache-zookeeper-3.6.2.tar.gz -C /usr/local# 进入ZooKeeper的conf目录下将zoo_sample.cfg 复制一份并

2020-11-16 02:19:29 317

原创 CentOS环境配置三——Redis部署

CentOS环境配置三——Redis部署1.Redis单机部署2.Redis集群部署1.Redis单机部署首先去Redis官网下载Redis安装包并传输到CentOS系统。Redis官网由于redis需要c语言的编译环境,如果当前系统未安装gcc需要进行安装$ yum -y install gcc可以看到我这里已经安装了gcc,但是由于当前gcc版本过低,编译redis仍然会报错,需要对gcc进行升级# 依次进行如下操作$ yum -y install centos-release-scl

2020-11-16 02:18:10 337

原创 CentOS环境配置二——MySQL安装和Tomcat搭建

CentOS环境配置二——MySQL安装和Tomcat搭建1.MySQL安装2.Tomcat搭建1.MySQL安装从centos6开始,官方版本的yum源中用mariadb替换了mysql,那么安装mysql一般需要去官网下载rpm包或者源码包等方式。下载地址如果我们使用如下指令没查询没有结果的话则可通过如下操作安装MySQL的repo源$ yum repolist all | grep mysql# 如果无结果则进行如下操作下载并安装MySQL的repo$ wget http://repo.m

2020-11-16 02:15:34 248

原创 CentOSCentOS环境配置一——yum换源和JDK安装

CentOS环境配置一——yum换源和JDK安装1.yum换源2.安装JDK1.yum换源由于yum的默认为外网源,导致我们的yum下载速度缓慢,这里可以将其换成阿里云的源备份原yum设置$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载阿里源根据CentOS的版本不同选择不同的源# 这里我使用的是CentOS7,所以最后选择的是Centos-7.repo,请根据当前系统版本选择对

2020-11-16 02:08:38 618

原创 解决CentOS7虚拟机无法联网的问题

解决CentOS7虚拟机无法联网的问题一、问题背景二、解决方案1.进入network-scripts文件夹。2.修改网卡配置文件3.重启网卡4.配置DNS服务器5.测试连接三、其他问题1.网络可用,虚拟机和主机可以相互ping通,但是无法通过ssh进行连接1.1 网络原因排查1.2 防火墙问题排查1.3 ssh服务排查一、问题背景在VMWare Workstation上安装centos7虚拟机后无法联网。虚拟机的软件环境如下虚拟机:VMware® Workstation 15 ProCentOS7

2020-10-17 18:52:42 6018 2

原创 手写MyBatis框架——按执行流程编写

一、框架介绍1.目录结构2.执行流程3.框架分析代码参照使用mybatis的最基本流程进行编写,即如下步骤//1.读取配置文件InputStream is=Resources.getResourceAsStream("mybatis.xml");//2.构建SqlSessionFactorySqlSessionFactory factory=new SqlSessionFact...

2020-10-02 23:46:10 347

原创 自实现简易MyBatis框架

此框架实现了读取mapper.xml文件通过接口方法的代理 进行增删改查操作和直接调用Session的方法传入封装好数据的实体对象进行增删改操作的功能。框架的包名和类名大多和MyBatis下的文件采用相同的命名,框架的执行流程和使用方法和MyBatis类似,算是我前一篇所写的简易MyBatis框架的完善版本。前一篇文章中有对简易框架的执行流程分析,有需要可以参考下:手写MyBatis框架——按执行...

2020-10-02 23:46:00 610

原创 自实现简易SSM框架

源码已上传至GitHub和码云,如果觉得有帮助的话随手点颗Star呗,感谢各位。GitHub:https://github.com/XuBin8866/simple-framework码云:https://gitee.com/AlwaysXu/simple-framework自实现简易SSM框架一、框架介绍1.目录结构2.框架分析二、详细分析1.框架使用方式2.代码分析2.1 core2.2 inject2.3 aop2.4 mvc2.5 simple-mybatis一、框架介绍该框架基本实现SS

2020-10-02 23:45:41 438

原创 gof23——模板方法模式

gof23——模板方法模式一、模板方法模式的使用场景二、模板方法模式的应用场景三、模板方法模式在源码中的体现四、模板方法模式的优缺点模板模式又叫模板方法模式(Template Method Pattern),是指定一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模板模式使得子类在可以不改变算法结构的情况下,重新定义算法的某些步骤,属于行为型设计模式。一、模板方法模式的使用场景一次性实现一个算法的不变部分,并将可变的行为留给子类来实现各个子类中的公共的行为被提取出来并集中到一个公共的父类中

2020-07-04 23:23:55 281

原创 gof23——策略模式

gof23——策略模式一、策略模式的使用场景二、策略模式的应用场景三、策略模式在源码中的体现四、策略模式的优缺点五、委派模式策略模式(Strategy Pattern)是指定义了算法家族并分别封装恰里,让它们之间可以相互替换,此模式使得算法的变化不会影响使用算法的用户一、策略模式的使用场景系统中有很多类,而他们的区别仅仅在于行为的不同一个系统需要动态地再几种算法中选择一种二、策略模式的应用场景网上购物现在已经是我们生活的常态,在网上购物时商家为了提高商品销量通常会举行一些促销活动,这里模拟促

2020-07-04 16:20:23 418

原创 解决Mysql数据库预期存储时间值和实际存储时间值不一致的问题

解决Mysql数据库预期存储时间值和实际存储时间值不一致的问题一、问题情景二、原因分析三、解决方案一、问题情景现在使用的mysql数据库,分别在本地和服务器上有两种配置:show variables like "%time_zone%";select now();show variables like "%time_zone%";select now();可见在数据库上都能正确获取时间。测试代码/*** 数据库连接参数* jdbc:mysql://localhost:3306/

2020-07-03 02:21:34 2190

原创 代理设计模式——JDK动态代理源码分析

代理设计模式——JDK动态代理源码分析1.代理类的生成机制2.代理类生成机制总结3.代理类的具体内容1.代理类的生成机制代理类通过Proxy类的newProxyInstance方法生成,那首先我们查看newProxyInstance的源码:public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,

2020-07-03 01:38:28 185

原创 gof23——代理模式详解

gof23——代理模式详解一、代理模式和结构型设计模式二、静态代理1.静态代理使用的前提:2.代码示例三、静态代理在业务上的应用四、JDK的动态代理五、动态代理源码探索六、CGLib动态代理七、CGLib的FastClass机制八、JDK动态代理和CGib动态代理对比九、静态代理和动态代理的区别十、代理类的优缺点一、代理模式和结构型设计模式代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标之前起到了中介作用,代理模式属于结构型设计模式。使用代

2020-07-03 01:37:20 386

原创 单例设计模式——枚举类单例源码分析

单例设计模式——枚举类单例源码分析单例设计模式——枚举类单例源码分析单例设计模式——枚举类单例源码分析情景源码分析序列化:反射:情景/** * 枚举 * 实现简单,JVM从根本上提供保障,避免反射和反序列化的漏洞 * 无法延迟加载 * @author Administrator */public enum SingletonDemo05 { /** * 枚举类对象 */ INSTANCE; private Object data; pu

2020-05-14 17:36:25 259

原创 单例设计模式——readResolve()源码分析

单例设计模式——readResolve源码分析场景源码分析流程总结场景以懒汉式单例为例,通过添加在类中添加readResolve()方法可防止通过反序列化破坏单例/** * 懒汉式测试 * @author Administrator */public class SingletonDemo02 implements Serializable { /** * 懒加载 */ private static SingletonDemo02 instance;

2020-05-14 17:34:30 508

原创 gof23——原型模式

gof23——原型模式一、原型模式的应用场景二、浅克隆三、深克隆一、原型模式的应用场景原型模式(Prototype)是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式主要适用于以下场景:类初始化消耗的资源较多使用new生成一个对象需要非常繁琐的过程(数据准备、访问权限等)构造函数比较复杂在循环体中产生大量对象二、浅克隆一个标准的原型模式代码应该是这样设...

2020-05-03 16:27:55 350

原创 gof23——单例设计模式详解

gof23——单例设计模式详解一、饿汉式二、懒汉式三、双重检测锁四、静态内部类五、枚举类单例六、容器式单例七、反射破坏单例破坏示例:解决方案:饿汉式和静态内部类:懒汉式和双重检测锁:八、反序列化破环单例破坏示例:解决方案:单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建者模式。在J2EE标准中ServletConte...

2020-05-01 21:56:48 508

原创 gof23——工厂设计模式详解

gof23——工厂设计模式详解一、简单工厂(静态工厂)模式二、工厂方法模式三、抽象工厂模式一、简单工厂(静态工厂)模式简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定要创建哪一种产品类的实例,不属于gof23.简单工厂适用于工厂类创建对象较少的场景,且客户端只要传入工厂类的参数,对于如何创建对象并不关心。假设现在我们有一个课程场景,有一个课程接口,和java...

2020-04-29 17:26:03 242

原创 LeetCode——289.生命游戏

根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死...

2020-04-11 19:39:33 316

原创 Spring入门学习二——面向切面编程(AOP)和事务控制

Spring入门学习二一、AOP的引入1.转账问题情景解决方案一解决方案二2.转账问题的解决方案,SpringAOP的引入1.AOP概念2.AOP相关名词3.基于XML的AOP配置4.基于注解的AOP配置5.全注解配置二、JDBC Tamplate三、事务控制1.Spring的事务控制2.事务的隔离级别3.事务的传播行为4.基于xml配置事务5.基于注解配置事务6.全注解配置事务7.编程式事务控制...

2020-04-04 01:14:39 1089

原创 LeetCode——1162.地图分析

你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |x0 - ...

2020-03-29 14:57:14 282

原创 Spring入门学习一——控制反转(IoC)和依赖注入(DI)

Spring入门学习一一、认识Spring1.Spring是什么2.Spring的发展历程3.Spring的优势方便解耦,简化开发AOP编程的支持声明式事务的支持方便程序的测试方便集成各种优秀框架降低JavaEE API的使用难度Java源码是经典学习范例二、SpringIoC的引入1.当前程序中存在的耦合问题耦合解耦思路解耦实例2.耦合问题的解决方案,SpringIoC的引入IoC概念Sprin...

2020-03-28 17:32:59 331

原创 LeetCode——914.卡牌分组

给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1...

2020-03-27 15:54:38 156

原创 数据库设计的三大范式——明确概念和通俗理解

一、数据库名词在理解三大范式之前,我们先明确一下数据库一些名词的概念,方便我们之后的理解。实体——某类事物的集合,每一类数据对象的个体称为实体属性——实体的一个特征,也称之为字段,数据库表中的列元组——实体所有属性构成的集合,数据库表中的一行信息关系——实体的元组构成的集合,数据库的表码——码就是能唯一标识实体的属性。他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主...

2020-03-26 19:59:58 569

原创 LeetCode——999.车的可用捕获量

在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外,车不能与其他...

2020-03-26 15:35:02 164 1

原创 LeetCode——892.三维形体的表面积

在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1,1],[...

2020-03-25 18:35:18 106

原创 MyBatis入门学习(五)——MyBatis注解和运行原理

一、MyBatis注解mybatis注解可以简化mapper.xml的配置,在使用注解时需要将mabatis.xml文件中的< mappers >标签的中的内容使用< pacakge>标签或< mapper class="" >标签使用示例:mybatis.xml<mappers> <package name="com.xxbb...

2020-03-25 01:57:54 366

原创 LeetCode——17.16.按摩师

有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,7,9,3,1]输出: 12解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长...

2020-03-24 14:51:31 378

原创 MyBatis入门学习(四)——ThreadLocal、缓存和多表查询

MyBatis入门学习四一、ThreadLocal1.线程容器,给线程绑定一个Object内容,(匿名内部类中使用的值一定是定义final或者是形式上的final状态,防止外部修改内部变量)。只要线程不变就能随时取出该对象。只有在创建ThreadLocal的线程中才能获得线程的内容final关键字修饰的类不能被继承,对象不能改变指向地址,基本数据类型不能修改值,但对象的内容可以被修改fin...

2020-03-24 01:03:49 461

原创 LeetCode——876.链表的中间节点

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.v...

2020-03-23 10:48:51 175

原创 实现一个SORM基本框架

一、ORM介绍ORM(Object-Relationl Mapping)对象关系映射,一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。基本思想:表结构和类结构对应表中字段属性和类的属性对应表中的记录与对象对应SO...

2020-03-23 01:12:53 1538

原创 将Eclipse的javaWeb项目导入IDEA的正确姿势

一、文字简述1.从File–>New–>Project from Existing Sources或者在启动界面Import Projiect2.打开File–>Project Structure3.处理Modules中的报错问题,一般是Dependences中报错。修改报错依赖,添加一个tomcat库,和eclipses有关的依赖报错可以不处理4.在Facets中创建一...

2020-03-22 15:02:31 1296

原创 LeetCode——945.使数组唯一的最小增量

给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以看出 5 次...

2020-03-22 12:25:37 281

原创 MyBatis入门学习(三)——接口绑定和动态SQL

一、MyBatis接口绑定方案与多参数传递1.作用实现创建与mapper.xml相对应的接口后,mybatis通过读取mapper.xml内的信息生成对应的接口实现类,通过调用接口对象就可以获取mapper.xml中编写的sql,体现了DIP(Dependence Inversion Principle) 依赖反转原则的设计原则,在SSM的整合中使用的也是这种方案。2.实现步骤​ 2.1创...

2020-03-22 01:00:44 322

原创 LeetCode——365.水壶问题

有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x = 3, y = 5,...

2020-03-21 19:12:00 288

simplemybatis.rar

此框架实现了读取mapper.xml文件通过接口方法的代理 进行增删改查操作和直接调用Session的方法传入封装好数据的实体对象进行增删改操作的功能。框架的包名和类名大多和MyBatis下的文件采用相同的命名,框架的执行流程和使用方法和MyBatis类似。simplemybatis2是完整版本

2020-05-01

空空如也

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

TA关注的人

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