自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 经典面试题-2条线程交错打印数据

问题描述利用2条线程,一条线程输出A-Z,另一条线程输出1-26,输出要求为A1B2C3…Z26废话不多说,直接上答案import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class PrintTest { static Thread t1 = null, t2 =

2020-11-26 16:18:22 119

原创 数据库到Java对象的解决方案初探

概述从事Java后台开发的程序员,几乎天天在和数据库打交道,无论是久经考验的关系型数据库,还是主键普及的NoSQL数据库,不可避免的都需要将数据转换到Java对象中,进入内存,才能被应用程序使用。 本文作为这一系列技术的初探,着眼于从数据库到Java对象的转换。关系型数据库表到Java对象经典的处理方案(jdbc) jdbc作为经典的Java对象和数据库交互的方式,在很长一段时间内占据着重要地

2016-12-10 17:54:54 651

原创 设计模式之代理模式

什么是代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问代理模式的几个角色Subject抽象主题角色,可以是一个抽象类或者接口,定义通用的业务RealSubject具体主题角色,被代理角色,是业务具体的执行者Proxy代理主题角色,也是委托类、代理类,负责对真实对象的应用,可以做预处理或者善后处理示例代码(示例中包括基本的代理模式、强制代理、动态代理) 基本的代理模式pa

2016-06-25 17:00:11 274

原创 设计模式之原型模式

什么事原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象原型模式的核心是一个clone方法优点:性能优良,在内存二进制流的拷贝,不执行构造器使用场景资源优化:类初始化需要消耗非常多的资源性能和安全要求的场景:通过new产生一个对象需要非常繁琐的数据准备或者访问权限一个或者多个对象修改者的场景:一个对象需要提供给其他对象访问,而且各个调用者可能都需要

2016-06-25 16:45:20 212

原创 设计模式之享元模式

什么是享元模式(Flyweight)享元模式是池技术的重要实现方式使用共享对象可有效地支持大量的细粒度的对象,避免过多的对象造成内存溢出享元模式:内部状态和外部状态内部状态:保持不变的状态,可以作为共享的状态外部状态:一般随着环境的状态而改变的状态享元对象的角色 Flyweight 抽象享元角色,产品的抽象类,同时定义出对象的外部状态和内部状态的接口或实现。ConcreteFlyweigh

2016-06-25 16:40:08 173

原创 设计模式之门面模式

什么是门面模式(Facade)门面模式,也叫作外观模式,是一种常见的封装模式。要求一个子系统的外部与内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。代码示例在我们的日常生活中,通常我们寄送信件的时候,都是通过邮局这一个统一的接口来运作的。对于寄信的我们而言,并不关心邮局怎么进行通信和寄送,简单一点,假设我们只是信的内容的提供者,那么我们只想提供给邮局

2016-06-25 16:27:03 370

原创 设计模式之装饰器模式

什么是装饰器模式(Decorator)动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活。装饰器模式的优点装饰类和被装饰类可以独立发展,而不会互相耦合。装饰模式是继承关系的一个替代方案装饰模式可以动态地扩展一个实现类的功能装饰器模式的缺点多层的装饰比较复杂示例代码package com.pattern.decorator;/** * 抽象类,装饰器的父类

2016-06-25 16:15:51 278

原创 设计模式之组合模式

什么是组合模式组合模式也叫合成模式,用于描述局部和整体的关系将对象组合成树形结构以展示“部分-整体”的层次结构,似的用户对单个对象和组合对象的使用具有一致性。组合模式的几个角色Component抽象构件角色 定义参加组合对象的共有属性和方法,可以定义一些默认的行为或属性Leaf叶子构件 叶子对象,其下再也没有其他的分支,也就是遍历的最小单位Composite树枝构件 树枝对象,作用是组

2016-06-25 16:08:22 214

原创 设计模式之桥接模式

什么是桥接模式将抽象和实现解耦,使得两者可以独立变化桥接模式的4个角色Abstraction、Implementor、RedefinedAbstraction、ConcreteImplementorAbstraction:抽象化角色,定义出角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类,示例中为Corp类Implementor:实现化角色,接口或者抽象类,定义角色必须的行为和属

2016-06-25 15:26:10 288

原创 设计模式之适配器模式

什么是适配器模式将一个类的接口装换成客户端所期待的另一种接口,从而使原本因接口不配而无法一起工作的两个类能够一起工作。适配器包括两种:类适配器和对象适配器,大多数情况下,对象适配器比类适配器更加灵活,作为组件元素而存在。类适配器收到类继承关系的限制。适配器模式的优点适配器模式可以让两个没有任何关系的类一起运行增加类的透明性提高类的复用性灵活性高使用场景想要修改一个已经投产中的接口,主要使

2016-06-25 15:15:30 285

原创 Redis的数据管理持久化

一、持久化因为Redis的数据都在内存中,为了使得Redis在重启后仍能保证数据不丢失,需要将数据从内存中以某种形式同步到硬盘中,这一过程就是持久化。 Redis支持两种方式的持久化:RDB方式、AOF方式 1、RDB方式 RDB持久化方式是通过快照完成的,当符合一定条件时Redis会自动将内存的所有数据进行快照并存储在硬盘上。 进行快照的条件可以由用户在配置文件中自定义,由两个参数构成:时

2016-06-25 09:13:56 393

原创 Redis进阶-事务管理、消息通知等

1、概述 Redis中的事务是一组命令的集合。事务同命令一样,是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。 熟悉数据库的猿们,都知道事务具有的特性,概括起来就是ACID(原子性,一致性,隔离性,持久性)2、如何使用Redis的事务 redis>MULTI OK redis>SADD “user:1:following” 2

2016-06-25 08:53:29 450

原创 测试基础之网站测试

网页需要测试的基本部分 首先建立状态表:不同的网页就是不同的状态 1、文字 检查方式参考测试文档的方式 2、超级链接 超级链接一定要显眼、文字链接一般有下划线,鼠标经过链接会变成手形指针 如果链接打开电子邮件信息,填写并发送,保证能够得到回应。 查找孤页 3、图形 正确载入信息?文字环绕图形,调整浏览器大小,看环绕是否有问题?载入

2016-06-22 23:03:44 397

原创 测试基础之测试文档

测试审查提供的软件相关的文档:用户手册等 1、检查项目 1)听众 文档面对同一级别的听众,不低不高? 2)术语 术语适用于所有听众么?用法一致么?使用首字母或其他缩写?是否标准?需要定义么?公司的首字母缩写一定不能与术语完全相同。所有术语可以正确索引和交叉引用么? 3)内容和主题 主题合适么?有

2016-06-22 23:02:42 658

原创 测试基础之易用性测试

优秀的UI 符合标准和规范、灵活性、正确性、直观性、舒适性、实用性、一致性 不同的平台具有不同的标准和规范说明书1、符合标准和规范 1)直观性 用户界面是否洁净,不唐突,不拥挤 UI的组织和布局合理么?功能跳转轻松?下一步做什么明显么?任何时候想退出?输入得到承认了么?菜单或者窗口是否深藏不露? 有多余功

2016-06-22 23:01:47 709

原创 测试基础之白盒测试

1、正式审查 1)确定问题:找出软件出错的项目、遗漏的项目 2)遵守股则 3)准备 4)编写报告 2、伙伴审查 3、公开陈述 4、检验(最正式的审查类型,资料和文档学习,陈述,记录) 5、编码规范和准则 标题、标准(允许&不允许项)、解释说明、示例 6、通用代码审查清单 1)数据引用错误 指使用

2016-06-22 23:00:13 383

原创 测试基础之黑盒测试

产品说明书<=>需求文档 定义软件是什么样的黑盒测试 & 白盒测试静态测试 & 动态测试1、对产品说明书审查2、研究现有的标准和规范3、审查和测试同类软件 软件的规模、复杂性、测试性、质量/可靠性严谨的产品说明书8个重要属性 完整、准确、精确、一致、贴切、合理、代码无关、可测试1、没有产品说明书时,探索性测试,记录软件执行情况,详细描述功能。 2、通过测试和失败测试

2016-06-21 19:59:11 385

原创 软件测试基础概念

产品说明书:充分挖掘需求,并表达出功能点,隐性的但必须实现的功能设计方案:架构,数据流示意图,状态变化图,流程图,注释代码,错误提示信息软件缺陷定义: 1、软件没有实现产品说明书宣称的功能 2、软件实现了产品说明书宣称不应有的功能 3、软件执行了产品说明书没讲的操作 4、软件没有实现产品说明书没讲但应该实现的功能 5、从软件测试员的角度来看,软件难于理解,不易使用,运行缓慢,或者最终用户认

2016-06-21 19:39:02 226

原创 如何保证Java对象内部属性的不可变状态

很多人看到上面的提问,立刻就会想到 final 关键字。但是却不完全正确。 看如下代码private final int a;private final Date date;示例代码中分别声明了整型的属性a,Date型的属性date,final关键只能确保基本数据类型的值不会变,但是对于Date这样的,非基本数据类型,就需要注意了。注意Date这样的非基本数据类型,在内存分配时是占用两块内存的,

2016-03-20 22:31:48 2395

原创 Redis常用命令及5种数据类型操作

redis-cli 是Redis自带的基于命令行的客户端连接Redis redis-cli -h 127.0.0.1 -p 6379测试连接是否正常 redis-cli PINGincr key 给key的值+1get key 获取key对应的valuekeys * 返回所有的键启动Redis redis-server –port 关闭Redis redis-cli SHUTD

2016-03-19 22:36:48 370

原创 设计模式之建造者模式

基本概念 建造者模式将一个复杂对象的构建与它的表示分离,使得同样的过程可以创建不同的表示。建造者模式内容 建造者模式一般包含以下内容: AbstractBuilder:抽象接口,用于声明建造某种对象所需要的方法,需要创建哪些部分。 ConcreteBuilder:具体建造者,实现抽象接口,具体实现创建各个部分的方法,并且提供创建完的对象实例。 Director:调度器,用于确定建造对象时

2016-03-19 19:26:25 208

原创 设计模式之抽象工厂模式

为什么使用抽象工厂模式 在工厂方法模式一文中,我们看到,尽管可以通过工厂方法获取所需要的类型的产品对象,但是如果类型增加了,则需要在生成对象的方法中增加逻辑判断的分支,这很明显违背的开闭原则抽象工厂模式 为了不对原有的代码进行修改,又能够在新增产品类型的时候,可以采用工厂方法获得产品,于是我们对工厂类也作一次抽象,做一个抽象工厂类,所有的具体工厂都需要继承自这个抽象工厂类。代码示例 承接工

2016-03-19 11:17:55 256

原创 设计模式之单例模式

基本概念 单例模式指的是:对于某一个类,整个程序中值存在一个该类的实例对象。常见的比如数据库连接对象等。代码示例,单例模式的几种写法及优劣/** * 饿汉式写法,多线程下不能保证对象的确定性**/public class SingletonHungryUnsec { private static SingletonHungryUnsec instance; private

2016-03-19 11:04:40 204

原创 设计模式之工厂方法模式及代码示例

为什么使用工厂方法 一般创建对象的方式是new关键字来生成,但是这种方式必然地使得客户端程序员的代码和我们的对象产生了过于紧密的耦合,为了解除这样的耦合状态,提高客户端代码灵活性和可扩展性,使用工厂方法模式。工厂方法模式 客户端代码为了获得对象,通过工厂对象生成,客户端代码只需要给工厂实例发送创建对象的消息即可。 代码示例 现在我有如下的接口和类 接口: Product 所有产品类都需

2016-03-17 22:30:16 555

原创 Redis基础知识

基本概述1、Redis是开源的高性能键值对(key/value)数据库 通过提供各种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。2、Remote Dictionary Server,以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容支持的键值数据类型:1、字符串类型 2、散列类型 3、列表类型 4、集合类型 5、有序

2016-03-17 12:55:01 236

原创 设计模式六大原则

(此处仅作简要概述,待后续完善) 1、开闭原则 即对代码的扩展开放,对代码的修改关闭2、里氏代换原则 任何基类出现的地方,子类也可以出现3、依赖倒转原则 面向接口编程,而不是面向具体实现4、接口隔离原则 使用多个分离的接口,要比使用单一的接口要好5、迪米特法则 一个实体应当尽可能少的知道与其交互的对象的信息; 不违反迪米特法则

2016-03-17 12:48:42 258

原创 Java并发概述

1、并发和多线程 并发的作用在于充分利用资源(多处理器or多核),在有限的资源下进行多任务的处理。 并发的概念表现在编程上,则为多线程编程,常见的实例:java web中的servlet就是采用的多线程机制。 线程作为轻量进程,本身不具有资源,而进程才是拥有资源的主体。2、为什么使用多线程 多线程建立在操作系统的产生之后,在此之前,机器或者说处理器处理程序时,只能按照单个的执行流程进行,即所

2016-03-08 18:47:46 286

原创 Java反射机制应用(JavaBean转换Map形式)

最近http传参的时,看着名值对,突然就想到了一个java反射,起初没觉得什么,不过后来就想到了下面的东西。是不是可以将javaBean的属性和值转换成http的参数格式呢?或者说,转换成更加方便得map是不是更合适一点?首先,先说说什么事java的反射吧,博主个人理解,通俗的讲就是:java类的每一种组成元素也是对应着一个类。

2016-02-01 10:32:33 731

Think in Java 第四版

本文档是文字可复制,非图片pdf,一本适合反复研读的Java面向对象的书籍

2015-07-09

windows核心编程第五版

windows核心编程 黑皮书,详细讲解操作系统的工作原理

2013-10-31

空空如也

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

TA关注的人

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