- 博客(130)
- 收藏
- 关注
转载 简单工厂模式
一、概念 1、定义:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 2、角色抽象产品角色:简单工厂模式所创建的所有对象的父类,负责描述所有实例所共有的公共接口。具体产品角色:简单工厂模式的创建目标。工厂角色:负责实现创建所有实例的内部逻辑。 3、使用场景:有利于整个软件体系结构的优化,违反了高内聚责任分配原则,一般只在很简...
2019-05-27 22:00:00 173
转载 Web容器初始化过程
一、SpringMVC启动过程Spring的MVC是基于Servlet功能实现的,每个web工程中都有一个web.xml文件,web容器在启动的时候会加载这个配置文件,当一个web应用加载到web容器中后,在web应用开始响应客户端的请求之前,要按照顺序执行下面几个步骤:1、实例化部署描述符中的<listener>元素标识的时间监听器的实例;<liste...
2018-09-17 08:29:00 239
转载 基于LayUI实现前端分页功能
一、LayUI介绍 Layui 是一款采用自身模块规范编写的国产前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,门槛极低,拿来即用。内置了一些常用元素和组件的UI框架。 下载地址为http://www.layui.com/,下载后引入项目中。<link rel="stylesheet" href="${pageContext.request.con...
2017-07-21 15:19:00 2099
转载 Ubuntu16.04首次root登录设置
一、首次登录root模式设置 当第一次安装并登录Ubuntu16.04系统时,系统默认只能使用guest模式登录。登录系统后,在图像界面的右上方的系统设置中可转换为普通用户模式。 在普通登录模式下,经过以下几个步骤设置root登录。 1、打开终端terminal 2、输入命令 3、在该配置文件中添加一行,然后保存关闭。 4、给root设...
2017-05-15 20:49:00 207
转载 Java集合Iterator迭代器的实现
一、迭代器概述 1、什么是迭代器? 在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口。这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。 在Iterator接口中定义了三个方法: 2、迭代器使用 public static void main(String[] a...
2016-09-06 17:14:00 461
转载 ThreadLocal的基本原理与实现
一、概念 首先,ThreadLocal并不是一个Thread,这个类提供了线程局部变量,这些变量不同于它们的普通对应物,因为访问某个变量的每个线程都有自己的局部变量,它独立于变量的初始化副本。二、基本原理 ThreadLocal是如何做到为每一线程维护变量的副本的呢?下面通过源码(jdk1.7版本)来阐述ThreadLocal的基本原理。 在具体分析之前,先做几点说...
2016-08-16 21:18:00 102
转载 Redis系列四之复制
一、复制基本配置与演示 为了避免单点故障,Redis提供了复制功能,可以实现自动同步的过程。 1、配置 同步后的数据分为两类:一类是主数据库(master),一类是从数据库(slave)。主数据库可以进行读写操作,当发生写操作时自动将数据同步给从数据库。而从数据一般只读,并接受主数据库同步过来的数据。 在Redis使用复制功能,只需要在从数据库的配置文件中加入"s...
2016-08-13 17:15:00 93
转载 反应堆模式
一、概念 1、定义 反应堆模式是一种对象行为类的设计模式,对同步事件分拣和派发。它是处理并发I/O比较常见的一种模式,用于同步I/O。 其中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上;一旦有I/O事件到来或者是准备就绪,多路复用器返回并将相应的I/O事件分发到对应的处理器中。 2、Reactor事件处理机制 ...
2016-07-27 17:04:00 468
转载 Netty学习之客户端创建
一、客户端开发时序图 图片来源:Netty权威指南(第2版)二、Netty客户端开发步骤 使用Netty进行客户端开发主要有以下几个步骤: 1、用户线程创建BootstrapBootstrap b = new Bootstrap(); Bootstrap是Socket客户端创建工具类,通过API设置创建客户端相关的参数,异步发起客户端连接。...
2016-07-26 16:09:00 87
转载 Netty学习之服务器端创建
一、服务器端开发时序图 图片来源:Netty权威指南(第2版)二、Netty服务器端开发步骤 使用Netty进行服务器端开发主要有以下几个步骤: 1、创建ServerBootstrap实例ServerBootstrap b=new ServerBootstrap(); ServerBootstrap是Netty服务器端的启动辅助类,提供了一...
2016-07-25 17:28:00 80
转载 Java NIO服务器端开发
一、NIO类库简介 1、缓冲区Buffer Buffer是一个对象,包含一些要写入和读出的数据。 在NIO中,所有的数据都是用缓冲区处理的,读取数据时,它是从通道(Channel)直接读到缓冲区中,在写入数据时,也是从缓冲区写入到通道。 缓冲区实质上是一个数组,通常是一个字节数组(ByteBuffer),也可以是其它类型的数组,此外缓冲区还提供了对数据的结构化访问...
2016-07-10 14:14:00 103
转载 (转载)IO-同步、异步、阻塞、非阻塞
一、概述 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上...
2016-07-07 16:58:00 170
转载 Java NIO中的读和写
一、概述 读和写是I/O的基本过程。从一个通道中读取只需创建一个缓冲区,然后让通道将数据读到这个缓冲区。写入的过程是创建一个缓冲区,用数据填充它,然后让通道用这些数据来执行写入操作。二、从文件中读取 1、原始I/O读文件 如果使用原来的I/O,那么只需要创建一个FileInputStream并从它那里读取,示例代码如下:public class BioTes...
2016-07-07 11:12:00 102
转载 剑指offer面试题31连续子数组的最大和
一、题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽...
2016-07-05 11:01:00 84
转载 剑指offer面试题30:最小的k个数
一、题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。二、解题思路 1、思路1 首先对数组进行排序,然后取出前k个数。排序方法可选用快速排序,时间复杂度为O(nl*ogn)。示例代码:import java.util.ArrayList;import java.util.A...
2016-07-04 20:41:00 105
转载 策略模式
一、概念 1、定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 策略模式就要应对规则变化和新规则加入对程序带来的影响。 通过接口可以避免直接调用规则,从而使得业务变化不会对规则产生影响,同时,添加新规则也不会影响业务流程。 2、优点 策略模式提供了管理相...
2016-07-02 17:57:00 99
转载 代理模式
一、概念 1、定义 为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 2、优点真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事物。代理对象可以在客户端和目标对象之间起到中介作用、高扩展性二、代理模式组成 在代理模式中,通常涉及...
2016-06-25 20:23:00 62
转载 字典树(Trie树)实现与应用
一、概述 1、基本概念 字典树,又称为单词查找树,Tire数,是一种树形结构,它是一种哈希树的变种。 2、基本性质根节点不包含字符,除根节点外的每一个子节点都包含一个字符从根节点到某一节点。路径上经过的字符连接起来,就是该节点对应的字符串每个节点的所有子节点包含的字符都不相同 3、应用场景 典型应用是用于统计,排序和保存大量的字符...
2016-06-24 17:01:00 157
转载 Java知识点总结(不定时更新)
1、基于分代的垃圾收集算法 设计思路:把对象按照寿命长短来分组,分为年轻代和年老代,新创建的对象被分在年轻代,如果对象经过几次回收后仍然存活,那么再把这个对象划分到年老代。年老代的收集频率不像年轻代那么频繁,这样就减少了每次垃圾回收时所要扫描的对象的数量,从而提高了垃圾回收效率。 把堆划分为若干个子堆,每个堆对应一个年龄代: JVM将整个堆划分为Young区、Old...
2016-06-23 16:49:00 209
转载 动态规划算法
动态规划算法通常基于一个递推公式以及一个或多个初始状态,当前子问题的解由上一次子问题的解推出。 在动态规划算法中有一个经典的例子就是硬币找零问题。1、问题描述 如果我们有面值为1元、3元、5元的硬币若干,如何用最少的硬币凑够11元?2、思路分析 基于动态规划的思想,我们可以从1元开始计算最少需要几个硬币,然后再求2元、3元、4元... 首先,当i=0时...
2016-06-22 16:48:00 73
转载 Redis系列三之持久化
一、Redis持久化 Redis是一个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化。 redis提供了不同级别的持久化方法:Snapshotting(快照,默认方式):能够在指定的时间间隔对你的操作进程快照存储Append-only file(缩写aof):记录每次对服务器写的操作,当服务器重启时会重新执行这些命令来恢复原始的数据...
2016-06-15 09:46:00 62
转载 Redis系列二之事务及消息通知
一、事务 Redis中的事务是一组命令的集合。一个事务中的命令要么都执行,要么都不执行。 1、事务简介 事务的原理是先将一个事务的命令发送给Redis,然后再让Redis依次执行这些命令。下面看一个示例: 首先,使用multi命令告诉Redis:下面我给你的命令属于同一个事务,你先不要执行,而是暂时存起来。 然后,我们发送两个set命令来实现赋值,可...
2016-06-13 21:34:00 108
转载 Redis系列一之数据结构
一、Redis简介 redis是一个高性能的key-value非关系数据库,它可以存键(key)与5种不同类型的值(value)之间的映射(mapping),支持存储的value类型包括:String(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(散列表)。这些收据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这...
2016-06-11 17:00:00 47
转载 项目管理工具:Maven使用方法总结
一、概念 Maven是一个项目管理和构建自动化工具。Maven提供了开发人员构建一个完整的生命周期框架,开发团队可以自动完成项目的基础工具建设。一个Maven项目的结果如下图所示: 二、Maven安装 在安装maven之前,先保证安装了JDK,然后在Apache的官网上http://maven.apache.org/download.cgi下载最新版本的Binary...
2016-06-06 21:14:00 90
转载 观察者模式
一、概念 观察者模式,又被称为发布—订阅模式、源—收听者模式,是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依与它的观察者物件,并且在它本身的状态改变时主动发出同时,此种模式通常被用来实现事件处理系统。二、观察者模式组成 观察者模式一般包含以下四种角色: 抽象主题角色Watched:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数...
2016-06-03 21:13:00 79
转载 ClassLoader工作机制
一、ClassLoader概念 ClassLoader是用来动态的加载class文件到虚拟机中,并转换成java.lang.class类的一个实例,每个这样的实例用来表示一个java类,我们可以根据Class的实例得到该类的信息,并通过实例的newInstance()方法创建出该类的一个对象,除此之外,ClassLoader还负责加载Java应用所需的资源,如图像文件和配置文件等。...
2016-06-02 16:52:00 158
转载 项目总结二:登录模块
一、业务逻辑分析二、原型图三、实现过程 1、表单校验 同注册一样需要做前端表单校验。(详细见注册模块:http://www.cnblogs.com/xujian2014/p/5520732.html) 2、记住用户名 在用户名文本框中显示cookie中保存的loginname,当用户登录成功后,会把当前用户的名称保存到cookie中,当用户再次登录...
2016-05-24 15:33:00 275
转载 项目总结一:注册模块
一、业务逻辑分析 二、原型图 三、实现过程 1、创建用户模块相关类 User:作为实体类与数据库表对应。 UserDao:封装了数据库的基本操作。 UserService:封装了业务功能,每个方法对应一个业务功能,例如注册方法、登录方法等。 UserServlet:用来接收客户端请求,处理与web相关的问题,例如获取客户端的请求参...
2016-05-23 20:44:00 548
转载 Servlet知识点回顾
一、Servlet生命周期 服务器调用一个Servlet的8个步骤: 1、在服务器启动时,当Servlet被配置好或者被客户首次请求时,由服务器加载servlet,这一步相当于下列代码: Class c=Class.forName("com.source.MyServlet"); 2、服务器创建一个Servlet类的实例来为所有的请求服务。利用多线...
2016-05-17 11:20:00 101
转载 Java BitSet使用场景和示例
一、什么是BitSet? 注:以下内容来自JDK API: BitSet类实现了一个按需增长的位向量。位Set的每一个组件都有一个boolean值。用非负的整数将BitSet的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个 BitSet修改另一个 BitSet的内容。 默认情况下,set 中所有位的初始值都是f...
2016-05-13 22:01:00 162
转载 Mybatis延迟加载和查询缓存
一、延迟加载 resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 延迟加载:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。在mybatis核心配置文件中配置:lazyLoadingEnable...
2016-05-10 17:06:00 88
转载 剑指offer面试题7:用两个栈实现队列
题目1:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。代码实现:public class Solution07{ Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<...
2016-05-09 22:18:00 66
转载 Mybatis输入输出映射
一、输入映射 1、传递简单类型<select id="findUserById" parameterType="int" resultType="com.test.pojo.User"> select * from user where id = #{id}</select> 2、传递pojo对象 Mybatis使用...
2016-05-04 21:28:00 52
转载 Mybatis开发Dao
一、Mybatis进行原始的Dao开发 原始Dao开发需要编写Dao接口和Dao实现类,步骤如下: 1、Dao接口public interface UserDao{ public User findUserById(int id);} 2、Dao实现类public class UserDaoImpl implements UserD...
2016-05-03 20:38:00 88
转载 Mybatis入门程序
一、概述 Mybatis是一个持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注sql本身,而不需要处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等过程。 Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语...
2016-04-28 15:40:00 59
转载 SpringMVC系列之URL匹配问题
一、工程目录二、web.xml配置文件及与其他文件的关系三、控制器部分四、返回值五、url前后缀六、项目源代码 http://files.cnblogs.com/files/xujian2014/day_0426_springMVC.rar转载于:https://www.cnblogs.com/xujian2014/p/5436723...
2016-04-27 21:07:00 239
转载 SpringMVC系列之主要组件
一、组件说明DispatcherServlet:前端控制器,用于请求到达前端控制器,由它调用其他组件处理用户的请求。HandlerMapping:处理器映射器,负责根据用户请求找到Handler(处理器),springmvc提供了不同的映射器实现方式。Handler:处理器,对具体的用户请求进行处理。HandlerAdapter:处理器适配器,通过HandlerAda...
2016-04-26 16:07:00 263
转载 mysql学习笔记(三)
-- 主键冲突(duplicate key)insert into user(id,username,address) values(1,'xujian','anhui');insert into user(id,username,address) values(2,'xiewei','anhui');insert into user(id,username,addr...
2016-04-22 11:21:00 51
转载 mysql学习笔记(二)
-- mysql关系型数据库:C/S结构软件(连接认证,发送SQL指令,服务器处理指令返回结果,客户端接收结果解析结果)-- mysql服务器端对象:DBMS->Database->Table->fields-- 数据类型-- 所谓的数据类型:对数据进行统一的分类-- SQL中将数据类型分成了三大类:数值类型,字符串类型和时间日期类型-- 数...
2016-04-19 21:36:00 51
转载 mysql学习笔记(一)
一、数据库操作-- 创建数据库,数据库名字不能使用关键字create database trainsInfo; -- 创建中文名字的数据库set names GBK;create database 中国;drop database 中国;-- 查看所有数据库show databases;-- 查看指定部分数据库-- %:表示匹配多个字符...
2016-04-18 20:16:00 76
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人