![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 92
fw19940314
这个作者很懒,什么都没留下…
展开
-
设计模式-责任链模式及应用
日常生活中办理一件事情往往需要一系列的流程,且流程直接还是有顺序的。比如我们去医院看病,首先要挂号,然后再去排号会诊,医生根据病人的情况开具指定的药品,接口病人根据医生开具的药品单去缴费,缴费完成后再去取药窗口排队取药。这一系列的环节都是有顺序,且前后流程直接都是环环相扣的,不能说先完成某项再来处理前面未完成的。软件开发的过程中,也经常会用到此种场景。对于一个对象经过不同的处理器(过滤器)去处理,这里其实就运用到了今天所要讲的设计模式责任链模式。定义责任链也叫职责链,将请求的发送和接收解耦,让多个接收原创 2021-11-06 22:07:20 · 221 阅读 · 0 评论 -
设计模式-工厂方法模式及应用
在 简单工厂模式 一节介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。模式的结构与实现工厂方法模式由抽象工厂、具体工厂、抽象产品和具体产品等4个要素构成。本节来分析其基本结构和实现方法。模式的结构 工厂方法模式的主要角色如下。抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产原创 2021-03-05 09:55:39 · 107 阅读 · 2 评论 -
设计模式-简单工厂模式及应用
目录简单工厂模式角色代码案例优缺点应用场景简单工厂模式的典型应用及源码分析简单工厂模式 工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。下面将陆续讲解几种设计模式。简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实原创 2021-03-03 19:27:21 · 191 阅读 · 1 评论 -
Mybatis SqlSessionFactory常用创建方式(IDEA)
最近在重新看mybatis文档时,又将mybatis的基本操作又练了练手。mybatis的操作,是通过SqlSessionFactory对象来操作数据sql,官网也写了两种SqlSessionFactory对象的创建方式,下面说一下两种方式不同的区别,一种是基于XML配置文件的创建方式,一种是JAVA代码的方式。今天想记录这篇博客也是因为中间通过Java代码创建方式的时候,中间遇到些问题。...原创 2018-08-18 11:08:50 · 11180 阅读 · 4 评论 -
Docker 搭建javaweb运行环境
公司最近准备将java 环境放在docker容器上跑,方便以后做环境的迁移。趁着这次机会有时间来好好的学一一下docker的使用。下面是整理的一份文档,分享出来,供大家使用。一、虚拟机Docker服务安装1.1Linux(Ubuntu)Ubuntu系统安装,要求系统内核版本高于3.10,内核版本查看uname -r;1.1.1获取最新版本的 Docker 安装包#拉取安装包wget -...原创 2018-10-24 18:21:05 · 580 阅读 · 0 评论 -
Springboot 学习之Swagger2整合
背景 在如今前后端分离的大背景下,前后端唯一打交道的就是API接口。前端只需要向后端请求url地址,后端只需将数据返回即可。前端工程师拿到的既是后端给到的一份完整的API文档,如果项目体量非常大的情况下,整理这些文档就需要浪费大量的时间。如果业务有变更的情况下,还需要再去更新文档,维护成本也是非常大。今天介绍的主角就是Swagger在线生成API文档,极大的减少了人力的维护成本。可以在线直接...原创 2018-11-05 15:54:42 · 182 阅读 · 0 评论 -
Mybatis There is no getter for property named 'userId' in 'class java.lang.Long'
记录一个Mybatis错误,搞了老半天没找到原因,原本是这个样子的,我的parameterType参数是Long型,在下面引用时,也有注明jdbcType类型,但是一直报这个错There is no getter for property named 'userId' in 'class java.lang.Long'结果查询资料得出,是因为mybatis参数解析的问题。后面有机会研究一下...原创 2018-12-03 16:27:19 · 5337 阅读 · 1 评论 -
基于Netty实现私有化协议(序列化数据结构协议ProtoBuf)
因为项目需要,需要自定义通信协议。序列化协议使用到了Google的ProtoBuf,这里也是通过一个案例来实现基于Netty的私有化协议的开发。protoBuf 介绍Google Protocol Buffer(protoBuf)是一种平台无关,语言无关,可扩展且轻便高效的序列化数据结构的协议,相比传统的XML、JSON序列化的方式,更小、序列化更快、传输速度更快。只需要定义一次你的结...原创 2019-06-25 21:58:49 · 622 阅读 · 1 评论 -
Springboot事件机制整合EventBus应用(事件驱动模型)
事件驱动模型事件监听机制观察者模式案例1.Spring事件机制(事件监听机制)案例2.基于Springboot事件监听机制整合EventBus应用案例3.事件监听机制熟悉Spring的同学,spring提供了一套完整的事件监听机制。要了解spring不妨先熟悉一下,观察者模式。Java 从1.0版本,已经有了观察者模式的设计。下面通过一个案例来了解一下Java所提供的观察者模式。观察者模式...原创 2019-08-22 15:10:07 · 16731 阅读 · 7 评论 -
SpringBoot 学习之自动配置讲解
今天说一下SpringBoot自动配置的原理,在我们之前进行的web项目开发过程中,配置文件配置繁琐,如果是多个框架集成的话可能还维护多个配置文件。这样会将我们的很多时间去花在维护配置文件,假如加一个小的功能可能就需要一个繁杂的配置。到了SpringBoot后,这种情况就大大的改善,甚至于我们如果使用了默认的配置,我们就无需再去为这些配置文件所耗费时间,专心的去考虑我们的业务功能该如...原创 2018-08-04 19:58:16 · 473 阅读 · 0 评论 -
Spring 事务(声明式) 学习笔记
开篇 前段时间回头再仔细看sping框架时候,跟着网上的视频又将sping的事务操作又温习了一遍,通过这篇文章进行一下总结。 只要是搜事务,找到这篇文章肯定都对事务有所了解。事务管理是在开发过程中必不可少的,不要小看这点操作,可能就是我们的一个注解,如果是真实的企业级开发,是非常有必要的。事务主要是用来保持数据的完整性和一致性。事务的一系列动作他们被当做是一个独立的运...原创 2018-07-22 00:43:00 · 210 阅读 · 0 评论 -
Gradle+SpringBoot+bootStrap集成FineReport案例
一、在项目中添加帆软使用的jar包。1. 安装FineReport包到本地仓库call mvn install:install-file -Dfile=E:\FinereReport\FineReport_9.0\WebReport\WEB-INF\lib\fr-core-9.0.jar -DgroupId=com.fr -DartifactId=fr-core -Dversion=...原创 2018-02-27 15:33:50 · 3149 阅读 · 2 评论 -
FineReport报表权限管理
一、帆软报表权限控制 fineReport软件自己提供了一套权限控制系统,在决策系统中可以根据自己的项目的实际需求,来完成权限的管控操作。根据权限受体的不同我们可以将权限分配分为根据部门职位分配权限和根据角色分配权限。根据部门职位分配权限:部门职位是指从管理机构列表中中加载过来的所有职位列表,以部门关系树状显示;根据角色分配权限:角色是指从数据库中的角色选项中加载过来的角色列表和手动添...原创 2018-03-12 10:11:49 · 11183 阅读 · 2 评论 -
Activiti 数据库表格
Activiti 23张表的详解一、表格的创建 1.1使用代码创建23张表/** * 使用代码创建工作流需要的23张表 * */ @Test public void createTable(){ ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStan...原创 2018-03-13 11:09:08 · 1432 阅读 · 0 评论 -
Activiti 核心API详解
一、API介绍 流程引擎创建方式 Activiti 核心API 处理一个流程在部署启动以及后面的一系列的操作都是围绕着这几个核心API来完成的。首先这几个API中最重要的是ProcessEngine流程引擎,其他几个API都是通过流程引擎来创建的。 创建processEngine流程引擎对象的方法也有很多,可以参照这篇点击打开链接博客。这里讲的是更为便捷的一种创建方式,直接使用...原创 2018-03-13 14:23:43 · 21376 阅读 · 0 评论 -
nginx+redis+tomcat-loadbalance实现负载均衡
为什么要负载均衡? Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果超过500的并发数会出现Tomcat不能响应新的请求的情况,严重影响网站的运行。同时如果访问量非常大的情况下,Tomcat的线程数会不断增加。因此会占据大量内存,严重时出现内存溢出的现象,这时需要重启Tomcat以释放内存,阻断了网站的运行。所以对Tomcat做负载均衡便很有必要。目前可以...原创 2018-04-24 14:40:38 · 490 阅读 · 1 评论 -
ORACLE 12C ORA-12162: TNS:net service name is incorrectly specified 错误解决
错误描述,centOs 系统环境下安装的Oracle 12c版本,在服务器重启后,再启动oracle报错: 错误信息:ORA-12162: TNS:net service name is incorrectly specified 错误解决 使用sysdba登录时,报错信息如下:原因:这是因为没有指定ORACLE_SID 造成的,我们可以查询一下自己的ORALCE这些配置文件信息。...原创 2018-05-24 13:29:19 · 22988 阅读 · 0 评论 -
Java8 之Optional 的使用
作为java8的新特性之一,可选在没有接触之前没有感受到过他的魅力,当真正的去用它才感觉到魅力之所在。可选,JAVA新增的工具类,主要是用来解决我们之前 NullPointException的问题。 我先贴一段之前的代码,部分截取,真实业务场景中所用到的代码。if(bidId!= null){ //根据投标单ID,查询评标人ID --EmpId ...原创 2018-07-04 19:17:31 · 1119 阅读 · 0 评论 -
Spring JDBC Template
简介 JDBC Template的由来,为了使我们操作数据库更加的方便,更加易用。Spring在JDBC API的基础上定义了一层抽象层,建立一套新的操作数据库的框架。JDBC Template作为Spring JDBC的框架核心,JDBC模板的设计是为不同类型的JDBC提供模板方法,,每一个模板都能控制整个过程,并覆盖过程中的特定任务,通过这种方式在竟可能保留灵活性的情况下,将数据库存...原创 2018-07-21 18:44:48 · 226 阅读 · 0 评论 -
JAVA定时调度工具Timer篇
Timer简介 Timer是Java自己提供的定时任务工具,在java.Util.Timer包下。 定义:有且仅有一条后台线程对多个任务进行定时定频率的调度。主要构件 Timer→TimerTask 正如名字所显示的,Timer是通过定时调度TiemrTask来完成定时操作的工作。Timer可以理解为后台的调度线程,而TimerTask就是作业所在的类。原创 2017-12-29 22:14:44 · 369 阅读 · 0 评论