Java
文章平均质量分 74
木子_lishk
IT爱好者
展开
-
设计模式目录(更新中...)
一、创建型模式1.简单工厂模式2.工厂方法模式3.抽象工厂模式4.单例模式5.原型模式6.建造者模式二、结构型模式7.代理模式8.适配器模式9.装饰模式...原创 2019-10-24 10:02:19 · 133 阅读 · 0 评论 -
双重检查加锁的单例模式,为什么要用Volatile关键字
链接:https://www.jianshu.com/p/35e4504d42e4转载 2019-09-20 16:21:27 · 133 阅读 · 0 评论 -
原型模式
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。解释:我有一幅《清明上河图》的原画卷(原型实例),我通过复印机复印这幅原画卷得到了新的画卷(新的对象)。// 画家public class Painter{ // 姓名 private String name; public String getName(){ return this.name; } p...原创 2019-09-26 17:33:32 · 160 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式 与 工厂方法模式 极其相似。区别在于:工厂方法模式的工厂创建 一个 产品。抽象工厂模式的工厂创建 多个 产品;我是这么理解的:我是一个创业者。创业初,我想制造长、短袖衬衫等几种类型的衣服。因为衣服类型不多,我只需要一个工厂就够了,于是使用 简单工厂模式。渐渐地,我赚到了第一桶金,资金充足了,野心膨胀了。我连西装、运动服、T恤也想制造了。这时,不可能所有类型的衣服都塞在同一个...原创 2019-09-25 17:05:24 · 100 阅读 · 0 评论 -
建造者模式
我们都听过女娲挥鞭造人的故事,现在我们就以此来解释建造者模式。建造者模式主要由 4 部分组成:(1)产品(Product):包含组成产品的各个部件。(2)抽象建造者(Builder):具有创建产品各个部件的抽象方法,通常还包含一个返回组成产品的方法。(3)具体建造者(Concrete Builder):实现 Builder 接口,完成产品各个部件的具体创建方法。(4)指挥者(Direct...原创 2019-09-24 11:11:55 · 138 阅读 · 0 评论 -
工厂方法模式
工厂方法模式:提供了一组工厂类,每个产品都有相对应的工厂。示例:// 操作接口类public interface Operation{ public double getResult(double num1, double num2);}// 加法操作类public class AddOperation implements Operation{ public double ge...原创 2019-09-23 16:09:32 · 126 阅读 · 0 评论 -
简单工厂模式(静态工厂)
简单工厂模式:仅有一个工厂,根据所需产品描述(入参),生产所需产品。// 定义一个阿拉伯数操作接口public interface Operation{ public double getResult(double num1, double num2);}// 定义具体的加法操作类public class AddOperation implements Operation{ pub...原创 2019-09-23 15:16:43 · 127 阅读 · 0 评论 -
七大设计原则
1、开闭原则:对扩展开放,对修改关闭。2、依赖倒置原则:要面向接口编程,不要面向实现编程。3、里氏替换原则:只继承、不重写。4、单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性。5、接口隔离原则:降低接口粒度,客户端不应该被迫依赖于它不使用的方法。6、迪米特法则:使用中介类,降低耦合。(明星 - 经纪人(中介) - 商家)7、合成复用原则:先考虑组合或聚合,其次才考虑继承。复...原创 2019-09-27 13:32:20 · 96 阅读 · 0 评论 -
代理模式(静态代表、动态代理)
代理模式:定义:为其他对象提供一种代理以控制对这个对象的访问。通俗的讲就是中介。【主要角色】Subject : 抽象主题角色,是真实主题和它的代理共用的接口,使 RealSubject 和 Proxy 具有一致性。RealSubject:真实主题角色,实现了具体业务的方法。Proxy:代理角色,提供了与真实主题相同的方法,其内部含有对真实主题的引用。一、静态代理代理类在程序运行前就已...原创 2019-09-27 14:59:53 · 138 阅读 · 0 评论 -
如何编写出高质量的 equals 和 hashcode 方法?
链接:https://blog.csdn.net/z694644032/article/details/101512918转载 2019-09-30 09:38:03 · 116 阅读 · 0 评论 -
适配器模式
适配器模式定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。使用场景:客户端需要一个 target(目标)接口,但是不能直接重用已经存在的 adaptee(适配者)类,因为它的接口和 target 接口不一致,所以需要 adapter(适配器)将 adaptee 转换为 target 接口。背景:联合国开会,官方语言...原创 2019-09-30 10:23:56 · 134 阅读 · 0 评论 -
装饰模式
装饰模式(Decorator Pattern):装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式 4 种角色:Component(抽象构件):给出一个抽象接口,以规范准备接收附加责任的对象。Concrete Component(具体构件):定义一个将要接收附加责任的类。Decorator(抽象装饰)...原创 2019-09-30 15:50:55 · 125 阅读 · 0 评论 -
桥接模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。特点:用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。桥接(Bridge)模式包含以下主要角色:(1)实现化(Implementor)角色:定义接口,供扩展抽象化角色调用。(2)具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现。(3)抽象化(Abstracti...原创 2019-10-09 15:17:12 · 158 阅读 · 0 评论 -
外观模式
外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,从而使这些子系统更容易被访问。外观(Facade)模式角色:(1)外观(Facade)角色:为多个子系统对外提供一个共同的接口。(2)子系统(Sub System)角色:客户通过外观角色访问其接口。张无忌学会了九阳神功,乾坤大挪移、太极拳剑。张无忌就相当于外观角色。而子系统包括三个:火工头陀的九阳神功、阳顶天的乾坤大挪移、张三...原创 2019-10-09 17:10:22 · 154 阅读 · 0 评论 -
Mybatis整合Spring
根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持。因此由Mybatis社区自己开发了一个Mybatis-Spring用来满足Mybatis用户整合Spring的需求。下面就将通过Mybatis-Spring来整合Mybatis跟Spring的用法做一个简单的介绍。MapperFactor转载 2015-12-14 10:51:36 · 322 阅读 · 0 评论 -
Thread.join的作用和原理
转载自:https://www.jianshu.com/p/fc51be7e5bc0转载 2019-09-20 16:16:37 · 128 阅读 · 0 评论 -
Gson使用
(1)@SerializedName 的使用场景:后台返回的字段 与 前端所需的字段不一致,如前端菜单控件接收的数据需要特定的字段名称public class ResourceInfo { private String resourceName; private String resourceIcon; private List<ResourceInfo> chil...原创 2019-02-20 16:50:23 · 169 阅读 · 0 评论 -
java Bean 转 XML 格式
(1)先定义一个Bean 转 XML 的工具类import java.io.StringWriter;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;public class BeanToXmlUtil { public s...原创 2019-01-15 13:53:05 · 466 阅读 · 0 评论 -
ajax submit 在IE下提示下载
转载自:http://ldzyz007.iteye.com/blog/20684401.修改: contentType 为text/html 2.注解修改如下: @RequestMapping(value = "/save", method = RequestMethod.POST, produces = "application/json;charset=UTF-8") @转载 2016-10-09 11:12:49 · 832 阅读 · 0 评论 -
ExtJS 下载文件
ExtJs前台: window.open('/fileUpload/downloadAddNum?id=' + id+"&fileName="+fileName+"&downloadName="+downloadName);//注:fileName:是文件的原名称,如 dog.jpgdownloadName:是文件下载显示名称,如 狗.jpg。后台处理:Bu原创 2016-01-25 11:51:23 · 2164 阅读 · 1 评论 -
Spring+Websocket实现消息的推送
摘要 本文主要有三个步骤 1、用户登录后建立websocket连接,默认选择websocket连接,如果浏览器不支持,则使用sockjs进行模拟连接 2、建立连接后,服务端返回该用户的未读消息 3、服务端进行相关操作后,推送给某一个用户或者所有用户新消息 相关环境 Spring4.0.6(要选择4.0+),tomcat7.0.55Spring springmvc websocket转载 2015-12-22 11:08:00 · 763 阅读 · 1 评论 -
spring <context:component-scan>使用说明
在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean注意:如果配置了那么标签就可以不用再xml中配置了,因为前者包含了后者。另外还提供了两个子标签1. 2. 在说明这两个子标签前,转载 2015-12-03 16:11:24 · 321 阅读 · 0 评论 -
Spring @Resource、@Autowired、@Qualifier的注解注入及区别
spring2.5提供了基于注解(Annotation-based)的配置,我们可以通过注解的方式来完成注入依赖。在Java代码中可以使用 @Resource或者@Autowired注解方式来经行注入。虽然@Resource和@Autowired都可以来完成注入依赖,但它们之间是有区 别的。首先来看一下: a。@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才转载 2015-12-03 16:12:32 · 316 阅读 · 0 评论 -
Spring常用注解
使用注解来构造IoC容器用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册。如:在base-package指明一个包1 context:component-scan base-package="cn.gacl.java"/>表明cn.gacl.java包及其子包中,如果某个类的头上带有特定的注解【@Component转载 2015-12-03 15:54:33 · 286 阅读 · 0 评论 -
SpringMVC的几种返回方式
package com.boventech.learning.controller; import java.util.HashMap; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.ui.Model;转载 2015-12-11 10:51:27 · 400 阅读 · 0 评论 -
java String.format() 字符串格式化
先看示例1:String dt = String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS",new Date());//结果:2015-09-02 11:50:49String date = String.format("%tF",new Date());//2015-09-02String time = String.format("%tT转载 2015-09-02 12:16:14 · 562 阅读 · 0 评论 -
Java JDBC批处理插入数据操作
在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据。此外,我们将努力探索一些场景,如在内存不足时正常运行,以及如何优化批量操作。首先,使用Java JDBC基本的API批量插入数据到数据库中。Simple Batch - 简单批处理 我把它叫做简单批处理。要求很简单,执行批量插入列表,而不是转载 2015-05-13 10:06:21 · 387 阅读 · 0 评论 -
Spring容器
容器是Spring框架的核心,是组件存活的地方。Spring容器使用DI管理所有组成应用系统的组件,协作组件之间建立联。而且,这些对象简洁易懂,降低耦合性,支持重用,容易被测试。Spring提供了多种容器实现,可分为两类:Bean工厂和应用上下文。1.BeanFactory:由org.springframework.beans.factory.BeanFactory接口定义,是最简单...转载 2014-07-16 11:42:20 · 359 阅读 · 0 评论 -
String的一部分替换为星号“*”
原文章 :http://blog.csdn.net/watermusicyes/article/details/50821282项目中有一些地方需要做到保密的效果:用户名一部分需要替换为*来达到保密效果;银行卡号一部分需要替换为 *身份证号一部分需要替换为 *把这个工具类分享出来package com.Util;/** * File Descripti转载 2016-09-20 11:04:01 · 3920 阅读 · 0 评论 -
Annotation 介绍@interface
参考:http://blog.csdn.net/liuwenbo0920/article/details/7290586/http://blog.csdn.net/foamflower/article/details/5946451【一】定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在转载 2016-09-23 10:28:27 · 468 阅读 · 0 评论 -
bootstrap-fileinput 使用
首先 github 地址:https://github.com/kartik-v/bootstrap-fileinput注:以下代码在fileinput v4.5.2版本下调试。(1)文件信息表结构CREATE TABLE `file_stores` ( `file_id` bigint(20) NOT NULL AUTO_INCREMENT, `file_name_src` var...原创 2019-09-30 09:42:16 · 171 阅读 · 0 评论 -
mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚
mysql的引擎常用的有两个,一个MyISAM,另一个是InnoDB,mysql默认的为MyISAM,而InnoDB才是支持事务的。所以一般需要修改下,如何修改就不说了。 事务需要依赖数据库,好久没使用声明式事务,今天试了下。关键配置如下。12345678910111转载 2018-01-25 09:58:02 · 333 阅读 · 0 评论 -
mybatis批量update(mysql)
转自:http://www.cnblogs.com/softidea/p/5775546.html批量插入: insert id="batchInsert"> insert into testTable (id,content) values foreach collection="list" item="item" index="index"转载 2017-09-15 08:41:45 · 810 阅读 · 0 评论 -
java 利用POI 读取Execel数据的真实行数
转自:http://dylanyu.iteye.com/blog/2054312java 利用poi 读execel文件的操作,读取总的数据行数一般是通过调用 sheet.getLastRowNum() ;可是这样有时候会出现一些问题,例如,当其中一行的数据的确都为空,可是其原本的格式还在,并没有连带删除,这样计算出来的行数就不真实(比真实的大),还有当出现空白行时(也即某一行转载 2017-09-07 09:53:45 · 4796 阅读 · 1 评论 -
java生成两种二维码
转载自:http://blog.csdn.net/hao134838/article/details/53895672 引言 在这篇博客中关于二维码的基本原理先不做介绍,先介绍我们怎样利用Java语言实现二维码的生成,现在二维码在我们生活中已经非常常见了,一言不合就扫码!所以对于我们这帮程序猿来说,需要研究一把这个东西是怎么生转载 2017-05-17 17:00:19 · 361 阅读 · 0 评论 -
JSONArray 转换日期总是当前时间
//前台传到后台的日期字符串格式为 yyyy-MM-dd HH:mm:ssJSONArray jsonArray = JSONArray.fromObject(awardsArr);List b2CPrizesList = (List)JSONArray.toCollection(jsonArray,B2CPrizesBean.class);解决办法:static{转载 2017-01-16 10:25:32 · 2606 阅读 · 1 评论 -
maven 打包时mapper.xml打不进去问题
首先,来看下MAVENx项目标准的目录结构:一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。 有时候,比如mybatis的mapper.xml文件,我们习惯把它和Mapper.java放一起,都在src/ma转载 2017-01-05 10:51:18 · 452 阅读 · 0 评论 -
LinkedList源码解析
转载自:http://www.cnblogs.com/ITtangtang/p/3948610.html一、源码解析1、 LinkedList类定义2、LinkedList数据结构原理3、私有属性4、构造方法5、元素添加add()及原理6、删除数据remove()7、数据获取get()8、数据复制clone()与toArray()9、遍历数据:Itera转载 2016-11-25 16:30:51 · 343 阅读 · 0 评论 -
Java 7中的Try-with-resources
原文链接 作者:Jakob Jenkov 译者:fangqiang08(fangqiang08@gmail.com)Try-with-resources是java7中一个新的异常处理机制,它能够很容易地关闭在try-catch语句块中使用的资源。利用Try-Catch-Finally管理资源(旧的代码风格)在java7以前,程序中使用的资源需要被明确地关闭,这个体验有点繁琐。转载 2016-11-16 15:29:41 · 460 阅读 · 0 评论 -
Java IO之Flushable
Flushable 源码package java.io;import java.io.IOException;/** * A Flushable is a destination of data that can be flushed. The * flush method is invoked to write any buffered output to the underl转载 2016-11-16 14:47:24 · 602 阅读 · 0 评论