自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

松哥的博客

学习与生活

  • 博客(66)
  • 资源 (1)
  • 收藏
  • 关注

原创 规格模式(Specification)

规格(Specification)即类/对象的属性,比如产品的颜色、尺寸和价格,如果业务规则的变化和组合很多,而且和规格相关,包括很多的条件判断,那么适合将这些业务规则放到专门的规格对象中,这就是规格模式。规模模式有三种形式:用于验证,验证一个对象的状态是否符合要求。 用于筛选过滤,从一个集合中筛选出符合指定要求的对象。Java 8可以stream 的filter方法实现。 按需创建指定规格的产品。案例:根据颜色、尺寸、价格等规格筛选出指定规格的产品。下面的代码设计Builder, Fac

2022-03-16 20:15:25 4318

原创 PMP学习笔记(十二)

收尾过程组获得客户或发起人的验收,以正式结束项目或阶段 进行项目后评价 记录经验教训 对组织过程资产进行更新 将相关文件下项目管理信息系统中归档作为历史数据。结束所有采购获得,确保所有相关协议 对团队成员进行评估,释放项目资源过程包括: 结束项目或阶段 输入(Inputs)项目管理计划 验收的可交付成果(确认范围过程的输出) 组织过程资产 工具与技术(Tools & T

2017-06-17 16:33:55 750

原创 PMP学习笔记(十一)

监控过程组

2017-06-17 15:11:28 644

原创 PMP学习笔记(十)

执行过程组 包含完成项目管理计划中确定的工作,以满足项目规范要求的一组过程。指导与管理项目工作实施质量保证组建项目团队 建设项目团队 管理项目团队管理沟通实施采购管理干系人参与

2017-06-17 12:10:03 1021

原创 PMP学习笔记(九)

沟通管理之规划 过程: 规划沟通管理输出的项目管理计划和项目文件:沟通管理计划主要的工具和技术:沟通需求分析沟通技术 (影响沟通技术选择的因素:信息的紧迫性,可用性,易用性,项目环境,敏感性和保密性)沟通模型 (编码->传递信息->解码->告知收悉->反馈/反应)沟通方法(交互式,推式,拉式)会议 风险管理之规划采购管理之规划干系人管理之规划

2017-06-17 11:34:03 988

原创 PMP学习笔记(八)

项目成本管理之规划 过程: 规划成本管理 –> 估算成本 –> 制定预算输出的项目管理计划和项目文件:成本管理计划 活动成本估算 估算依据 成本基准 项目资金需求 主要的工具和技术:类比估算 参数估算 自下而上估算 三点估算 储备分析 质量成本 项目管理软件 卖方投标分析 群体决策技术成本汇总 储备分析 专家判断 历史关系 资源限制平衡项目质量管理之规划 过程: 规划质量管理输

2017-06-17 11:19:29 6027

原创 PMP学习笔记(七)

项目时间管理之规划过程 规划进度管理 –> 定义活动 –> 排列活动顺序 –> 估算活动资源 –> 估算活动持续时间 –> 制定进度计划输出的项目管理计划和项目文件包括:进度管理计划 活动清单 活动属性 里程碑清单 项目进度网络图活动资源需求 资源分解结构 活动持续时间估算 进度基准 项目进度计划 进度数据 项目日历 主要的工具与技术紧前关系绘图法(PDM) / 确定依

2017-06-17 11:06:41 2367 1

原创 PMP学习笔记(六)

规划过程组,

2017-06-17 10:10:16 890

原创 PMP学习笔记(五)

项目的启动过程组主要包括 制定项目章程和识别干系人。制定项目章程 编写一份正式批准并授权项目经理在项目活动中使用组织资源的文件的过程。 项目章程的批准,标志项目的正式启动。 项目章程由项目发起人或启动者编制项目章程,或授权项目经理代为编制,但一定要项目发起人或启动者签字生效。项目章程的主要作用:启动项目或阶段的依据 授权项目经理。项目章程的内容:目的、目标和成功的标准高层级的项目描述

2017-06-11 18:04:34 1074

原创 PMP学习笔记(四)

PMP认证主要学习的就是工具与技术;项目管理追求就是挣值绩效。 项目管理就是管理风险和资源。项目经理需要了解项目的关键驱动因素、约束和浮动因素。传统项目管理铁三角 - 范围、时间和成本,中间是质量。

2017-06-11 15:07:25 794

原创 PMP学习笔记(三)

PMBOK 指南第五版,将项目管理分解成: 5大过程组、10大知识领域和47个过程。 过程是为创建可交付成果而执行的一系列相互关联的活动。 各过程之间相互作用,它们有逻辑先后的关系,没有时间先后的关系。 每个过程都有输入、输出、工具与技术(ITTO)。5大过程组:启动过程组 规划过程组 执行过程组 监控过程组 收尾过程组10大知识领域项目整合管理 项目范围管理 项目时间管理

2017-06-11 15:03:53 1150

原创 PMP学习笔记(二)

作为项目经理,在接受领导一个项目时,首先需要了解组织对项目的影响,选择什么样的项目组织结构,项目团队成员已经和项目生命周期。组织对项目的影响,可以概括为组织过程资产和事业环境因素 组织过程资产事业环境因素组织结构项目团队项目生命周期

2017-06-11 12:39:53 1083

原创 RESTful Web 服务

RESTful Web服务,称为REST样式Web服务。 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEADER 和 OPTIONS。什么是 REST? REST 代表表述性状态转移(Representational State Tra

2017-05-17 13:55:59 496

原创 Spring Boot (二)

通过Spring Boot的自动装配和起步依赖可以快速开始一个项目。 下面的示例是一个阅读列表应用程序:1.参考Spring Boot (一),在Spring Tool Suite 中创建一个新项目, New->Spring Starter Project; 选择依赖Web, JPA, MySQL, Thymeleaf.。2.创建一个Spring Boot的Spring WebApplicatio

2017-05-16 20:33:13 266

原创 Java内存结构和Java内存泄漏

Java内存结构方法区:存放要加载的类的信息(名称,修饰符等)、类中的静态变量、类中final类型的常量、类中Field和Method信息。通过Class对象的方法访问的信息来源于方法区。方法区是全局共享的。 堆(Heap):存储对象实例和数组。 **本地方法栈:**native方法调用的信息。 PC寄存器 JVM方法栈(Stack): 存储基本数据类型 byte short int lon

2017-05-16 09:28:58 271

原创 equals方法 和 hashCode方法

Object 类有equals方法和hashCode方法, 定义如下: boolean java.lang.Object.equals(Object obj) //注意参数变量类型是Object. public native int hashCode();两个对象等同,通常指==相等。 如果对象存在”逻辑相等”,而且超类没有重写(override) equals方法以实现逻辑相等,则需要重写

2017-05-15 15:38:12 321

原创 Java算法编程 - 统计一个整数的二进制中1的个数

统计一个整数的二进制位是1的个数:public class Foo { public static void main(String[] args) { System.out.println(countOne(8)); } public static int countOne(int number) { int result = 0;

2017-05-14 13:29:07 552

原创 Java算法编程 - 将金额转换成大写中文

输入金额,然后转换成中文大写的金额:/** * 输入的金额转换成中文大写,16位数字精确到小数点后2位数 * */public class MoneyToCNFormat { private static final String[] CN_NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; priv

2017-05-14 12:37:18 3043

原创 Spring Boot (一)

Spring 是轻量级的J2EE框架,两大核心就是依赖注入(Dependency Injection, DJ) 和 面向切面编程(Aspect-oriented Programming, AOP),以此来实现组件(称为Bean)之间的解耦。 Spring中组件装配可以通过XML配置,Java配置和自动配置。 Spring Boot旨在简化Spring的开发,主要分为四个主题:自动装配 起步依

2017-05-13 15:34:31 502

原创 Java多线程 - 生产者和消费者模式

Java多线程之生产者(Producer)和消费者(Consumer)模式:示例1:public class Resource { private int i = 0; private int limit; public Resource(int limit) { this.limit = limit; } public synchronized

2017-05-13 11:44:44 221

原创 Java并发编程实战 - 第16章 Java内存模型

Happens-Before

2017-04-27 19:22:59 251

原创 Java并发编程实战 - 第15章 原子变量与非阻塞同步机制

原子变量与非阻塞同步机制

2017-04-27 19:21:27 450

原创 Java并发编程实战 - 第14章 自定义同步工具

创建状态依赖的类的最简单方法是在类库中现有状态依赖类的基础上进行构造。

2017-04-27 19:20:00 255

原创 Java并发编程实战 - 第13章 显式锁

Lock与ReentrantLock

2017-04-27 19:17:25 299

原创 Java并发编程实战 - 第12章 并发程序的测试

正确性测试基本单元测试对阻塞操作的测试安全性测试 资源管理的测试 使用回调 产生更多的交谈操作 性能测试增加计时功能多种算法比较响应性衡量避免性能测试的陷阱 其他测试方法

2017-04-27 19:15:32 302

原创 Java并发编程实战 - 第11章 性能与可伸缩性

线程最主要的目的是提高程序的运行性能。

2017-04-27 08:19:53 295

原创 Java并发编程实战 - 第10章 避免活跃性危险

安全性问题是多线程开发的首要问题,为了保证线程安全,往往使用加锁机制。但过度使用锁或不正确使用锁,可能导致死锁等活跃性问题。线程活跃性问题有:死锁饥饿 槽糕的响应性活锁 死锁的原因和解决方案 最常见的活跃性问题是死锁。 死锁最常见的原因是不正确的锁顺序。锁顺序死锁 原因:循环加锁依赖,不同的顺序来获取同一个锁。解决方法:按照相同的顺序来请求锁。 动态锁顺序死锁 原因:锁

2017-04-27 07:50:59 378

原创 Java并发编程实战 - 第8章 线程池的使用

如何配置和调优线程池?

2017-04-26 08:38:54 414

原创 Java并发编程实战 - 第7章 取消与关闭

Java没有提供某种抢占式的机制来取消操作或结束线程。可以通过协作式的中断机制来实现取消操作。 可以使用FutureTask和Executor框架,构建可以取消的任务和服务。

2017-04-23 23:38:39 309

原创 Java并发编程实战 - 第6章 任务执行

Executor框架提供一种标准的方法将任务的提交过程和任务的执行过解耦。 Executor基于生成者和消费者模式,提交任务相当于生产者,执行任务相当于消费者。Executor - 执行Runnable任务ExecutorService - 执行Runnable, Callable, FutureTask; - 所有submit方法返回一个Future跟踪任务的进展。 - invokeA

2017-04-23 21:19:30 306

原创 Java并发编程实战 - 第5章 基础构建模块

Java类库提供了丰富的并发基础构建模块 同步容器类(Vector, Hashtable, Collections.synchronizedXxx) 并发容器 同步器 阻塞队列

2017-04-23 09:18:38 314

原创 Java并发编程实战 - 第4章 对象的组合

同对象的组合设计线程安全的类

2017-04-22 21:41:53 272

原创 Java并发编程实战 - 第3章 对象的共享

如何共享和发布对象? 同步代码块和同步方法可以确保以原子的方式执行操作;同步还可以确保内存可见性(Memory Visibility)。可见性 确保读操作的线程能看到其他线程写入的值,必须使用同步。 (在没有同步的条件下,编译器,处理器,运行时都可能对操作的执行顺序进行重新排序) 失效数据 非原子的64位操作 加锁与可见性 volatile变量 仅当满足下面所有条件时,才应该使用vo

2017-04-22 21:12:40 326

原创 Java并发编程实战 - 第2章 线程安全性

进程与线程 操作系统可以使计算机同时能运行多个程序,每个不同的程序在单独的进程中运行。 同一个进程可以有多个线程的程序控制流。线程可以共享进程范围内的资源,但每个线程有各自的计数器,栈和局部变量。多线程可以提升资源的利用率及系统吞吐量。尤其是多处理器的环境,可以提高处理器资源的利用率。多线程带来并发问题: - 安全性问题 (共享对象的状态正确性和一致性) - 活跃性问题 (死锁,饥饿,活

2017-04-22 17:56:56 256

原创 Java语言 - 泛型(Generic)

Java 5 引入了泛型(Generic), 使用泛型可以带来如下好处:代码重用不须强制类型转换 (使用类型参数type parameter)List<String> list = new ArrayList<>();//类型参数是StringString element = list.get(0);//不须类型转换一. 可以定义一个或多个类型参数的泛型类public class Pair<

2017-04-21 16:45:10 229

原创 Java语言 - 枚举类型(enum)

Java 5增加了一个新的类称作枚举类型(enum type),由一组固定的常量组成合法值的类型,每个常量是这个枚举类型的实例。 例如:public enum Size { SMALL,MEDIUM,LARGE, EXTRA_LARGE}Java的枚举本质上是int值,所以两个枚举类型的值的比较,可以直接使用==。在没有引入枚举类型之前,通常用一组int常量, 每个成员是一个常量,这种方

2017-04-21 08:44:06 400

原创 Java语言 - 嵌套类(nested class)

嵌套类(nested class)指被定义在一个类的内部的类。 嵌套类有四种:静态成员类 非静态成员类 局部类 匿名类除了静态成员类外的三种又被称为内部类。 嵌套类存在的目的是为外围类(enclosing class)提供服务。通常基于下列原因使用嵌套类。内部类的方法可以访问 外围类的的数据包括私有数据。内部类可以对同一包中的其他类隐藏起来。使用匿名内部类可以定义一个代码简洁的回

2017-04-19 21:36:23 440

原创 Java 8 - Lambda表达式: 类库Streams & Collections

Java 8新增的类库(Streams, new Collections)利用新语言特性, 首要的如 lambda 表达式和缺省方法。

2017-04-18 20:52:05 312

原创 Java 8 - Lambda表达式

本篇来自于 State of Lambda by Brian GoetzJava 8 包括的首要的语言新特性有: Lambda 表达式 (非正式式的称为”闭包”或”匿名方法”)方法和构造器引用扩展的目标类型和类型推导接口中缺省的(default) 和静态的(static)方法一. 背景。 Java面向对象编程,有些对象仅仅只有一个方法,典型的情况是 一个Java API定义了一个接

2017-04-16 22:12:43 322

原创 设计模式 - Null Object 模式

代码中到处都是处理null字段或变量的重复逻辑。 将null逻辑替换为一个Null Object, 提供一个正确的null行为对象。

2017-04-04 22:29:12 487

java虚拟机规范第二版

java虚拟机规范第二版,详细介绍java虚拟机的特性,包括线程池,内存分配,是深入了解java virtual machine工作原理的好资料

2011-02-04

空空如也

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

TA关注的人

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