自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

昕友软件博客

技术文章原创、开源软件、产品、代码段...

  • 博客(19)
  • 资源 (12)
  • 收藏
  • 关注

原创 设计模式系列 - 结构型模式

结构设计模式向您展示了如何以灵活和可扩展的方式将系统的不同部分粘合在一起。它们可以帮助您保证当其中一个部分发生更改时,整个结构不需要更改。这些模式关注的是类之间如何相互继承,以及它们是如何由其他类组成的。结构模式使用继承来组合接口或实现。适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能...

2020-03-31 17:11:00 630

原创 设计模式系列 - 行为型模式(下)

行为设计模式是识别对象之间的通信模式,行为模式涉及对象之间的责任分配,或者,将行为封装在对象中并将请求委托给它,也就是对象之间的关系。涉及:* 状态模式中介模式* 观察者模式备忘录模式迭代器模式命令模式* 策略模式* 模板模式* 访客模式示例责任链模式观察者模式根据GoF定义,observer模式定义了对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖关系都会被自动通知和...

2020-03-27 20:57:00 162

原创 设计模式系列 - 行为型模式(上)

行为设计模式是识别对象之间的通信模式,行为模式涉及对象之间的责任分配,或者,将行为封装在对象中并将请求委托给它,也就是对象之间的关系。涉及:状态模式* 中介模式观察者模式* 备忘录模式* 迭代器模式* 命令模式策略模式模板模式访客模式示例* 责任链模式责任链模式责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者...

2020-03-27 10:36:00 200

原创 设计模式系列 - 创建型模式

单例模式懒汉式,线程不安全。除非是单线程程序,否则不推荐使用。public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (insta...

2020-03-26 10:27:00 133

原创 重构-改善既有代码的设计完整笔记系列之10、11 - 简化函数、处理概括关系

10.1 Rename Method(函数改名) 10.2 Add Parameter(添加参数)10.3 Remove Parameter(移除参数)10.4 Separate Query from Modifier(将查询函数和修改函数分离)10.5 Parameterize Method(令函数携带参数)10.6 Replace Parameter with Expli...

2020-03-23 09:45:00 214

原创 重构-改善既有代码的设计完整笔记系列之8 - 简化条件表达式

9.1 Decompose Conditional(分解条件表达式)9.2 Consolidate Conditional Expression(合并条件表达式) 9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 9.4 Remove Control Flag(移除控制标记) 9.5 Replace Nes...

2020-03-19 22:18:00 133

原创 重构-改善既有代码的设计完整笔记系列之9 - 简化条件表达式

9.1 Decompose Conditional(分解条件表达式)9.2 Consolidate Conditional Expression(合并条件表达式) 9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 9.4 Remove Control Flag(移除控制标记) 9.5 Replace Neste...

2020-03-19 22:18:00 96

原创 重构-改善既有代码的设计完整笔记系列之8 - 重组数据

重构-改善既有代码的设计完整笔记系列之8 - 重组数据8.1 Self Encapsulate Field(自封装字段)8.2 Replace Data Value with Object(以对象取代数据值)8.3 Change Value to Reference(将值对象改为引用对象)8.4 Change Reference to Value(将引用对象改为值对象)8.5...

2020-03-19 21:49:00 234

原创 重构-改善既有代码的设计完整笔记系列之6、7 - 重新组织函数、对象间搬迁特性...

目录6.1 Extract Method(提炼函数)6.2 Inline Method(内联函数)6.3 Inline Temp(内联临时变量)6.4 Replace Temp with Query(以查询取代临时变量)6.5 Introduce Explaining Variable(引入解释性变量)6.6 Split Temporary Variable(分解临时变量)...

2020-03-19 20:17:00 202

原创 Java多线程开发系列-线程管理

主题:线程的未捕获异常线程工厂线程暂停线程池线程的未捕获异常在线程异常的时候,多线程运行不能按照顺序执行过程中捕获异常的方式来处理异常,异常会被直接抛出到控制台(由于线程的本质,使得你不能捕获从线程中逃逸的异常。一旦异常逃逸出任务的run方法,它就会向外传播到控制台,除非你采用特殊的形式捕获这种异常。)如下例:import java.util.concurrent....

2020-03-18 15:28:00 269

原创 Java多线程开发系列-线程活性故障

由资源稀缺性或者程序自身的问题和缺陷导致线程一直处于非Runnable状态,或者线程虽然处于Runnable状态但是其要执行的任务却一直无法进展的故障现象。有4种情况死锁锁死饥饿活锁死锁如果线程A持有锁L并且想获得锁M,线程B持有锁M并且想获得锁L,那么这两个线程将永远等待下去,这种情况就是最简单的死锁形式。在数据库系统的设计中考虑了监测死锁以及从死锁中恢复,数据库如果...

2020-03-18 09:22:00 482

原创 Java多线程开发系列-线程安全设计

本章探讨线程安全的java平台本身的机制,免于基于同步(内部锁)或显式锁的实现,可以简化开发,避免锁造成的各种问题和开销。无状态对象不可变对象ThreadLoacl线程特有对象线程安全并发集合无状态对象无状态对象,就是没有实例变量的对象.不能保存数据,是线程安全的。 比如以下方法中的变量都是方法内部的变量public class AdderImpl implement...

2020-03-13 21:20:00 154

原创 Java多线程开发系列-线程间协作

wait(),notify()和notifyAll()他们都是java.lang.Object的方法:wait(): Causes the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object.notify(...

2020-03-12 15:04:00 135

原创 Java多线程开发系列-基础

多线程的一个接口和一个类//Runnable接口:@FunctionalInterfacepublic interface Runnable { public abstract void run();}//Thread类,它其实也是实现了Runnable接口public class Thread implements Runnable { /* Make...

2020-03-11 15:54:00 150

原创 了不起的Java-CompletableFuture组合异步编程

在多任务程序中,我们比较熟悉的是分支-合并框架的并行计算,他的目的是将一个操作(比如巨大的List计算)切分为多个子操作,充分利用CPU的多核,甚至多个机器集群,并行执行这些子操作。而CompletableFuture的目标是并发(执行多个操作),而非并行,是利用CPU的核,使其持续忙碌,达成最大吞吐,在并发进行中避免等待远程服务的返回值,或者数据库的长时查询结果等耗时较长的操作,如果...

2020-03-06 16:37:00 362 1

原创 了不起的Java-Optional替代null处理

Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)。是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。在这段代码就可能产生空异常;String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();//需要检查:if...

2020-03-04 17:42:00 371

原创 了不起的Java-Lambda替代设计模式

得益于函数接口,我们可以改造设计模式(不限于此):策略模式模板模式观察者模式责任链模式工厂模式策略模式优点:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点:1、策略类会增多。 2、所有策略类都需要对外暴露。使用场景:1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种...

2020-03-04 11:31:00 449

原创 了不起的Java-Stream流规约、分组、分区

问题引入如果你在做一些汇总操作,比如1、对一个交易列表按货币分组,获取每种货币的和(Map<Cruuency,Integer>)2、将交易分成贵的、不贵的(Map<Boolean,List<Transaction>>)3、多级分组,按城市分组,再按贵和不贵分组如果是传统的写法,使用外部迭代即可,会有很多for+if组合,类似: ...

2020-03-03 11:23:00 72

原创 了不起的Java-Stream流处理

问题引入假如你是一个厨师,你有一份菜单列表(DishMenu),你需要一份低卡路里(Caloric低于400),并且按卡路里数值排序的top3(最低的前3个)的仅包含菜名的菜单列表,你会怎么做?这个问题也贯穿了开发中大量需要处理list、set、map之类的集合操作,是非常非常基础的问题。而Stream就是处理集合的。相关数据类:import java.util.*;publ...

2020-03-01 18:14:00 232

Activiti流程演示Demo

Activiti流程演示Demo,独立web App,需要开启Acitivi服务。

2017-03-12

Liferay集成Activiti开发工程

Liferay集成Activiti开发工程,需要Liferay IDE支持。

2017-03-12

Liferay平台开发使用详细PPT演示文稿

介绍Liferay企业门户,PPT章节: 概述 功能和使用 开发扩展 安全、认证 高可用 Demo

2017-03-12

Liferay7门户集成Activiti BPM用户组同步

在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户、组的同步需求非常重要,用来实现签收组的概念,比如指定签收组、会签、抢签都需要用到。 Activiti可以通过自定义实现SessionFactory,实现customUserManager和customRoleManager的方式集成第三方的用户关系。 这里我介绍一个方法,可以借助Liferay的实体监听器来做用户、组、用户-组成员关系的三种同步。其实实现原理非常简单,用户组的同步,就是实现 BaseModelListener 泛型接口 详情见:http://www.cnblogs.com/starcrm/p/6200674.html

2016-12-19

Liferay7门户集成Activiti BPM上传文件部署流程模板

通过ActionURL部署流程文件,实现Activiti的模板后台管理和Liferay的集成。

2016-12-16

Liferay7门户集成Activiti BPM展示流程列表功能

Activiti BPM集成Liferay7的Portlet组件模块,用于展示流程列表,流程XML模板,流程图等。 详细说明: http://www.cnblogs.com/starcrm/p/6177844.html

2016-12-15

Activiti5.21依赖库

用于http://www.cnblogs.com/starcrm/p/5946419.html

2016-10-10

Liferay开发持久化层和服务层演示Demo代码

Liferay开发实战(2):Service Builder生成持久化层,一个简单留言板的例子。 http://www.cnblogs.com/starcrm/p/5175674.html

2016-02-03

Java Web Project开发WebSocket服务端/客户端

为方便开发,用了Jetty服务器,在网上很多例子都是基于jetty7.0的。但jetty9.0以后WebSocket的基类代码变化很多,于是自己动手开发。

2016-01-15

C#使用七牛云存储上传下载文件

项目需要将音视频文件上传服务器,考虑并发要求高,通过七牛来实现。 做了一个简易的压力测试,同时上传多个文件,七牛自己应该有队列处理并发请求,我无论同时提交多少个文件,七牛是批量一个个排队处理了。

2016-01-14

ASP.NET MVC 在线录音录像(音视频录制并上传)

最近有个在线招聘录音的开发需求,需要在招聘网站上让招聘者上传录音和视频。该工程利用WebRTC技术,可以在除了IE以外的浏览器正常运行,推荐Chrome浏览器。

2016-01-07

ASP.net MVC vcard名片二维码自动生成

简单好用的二维码工具,找了很多都没办法生成名片二维码(只能生成网址),于是自己写了一个。

2016-01-06

空空如也

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

TA关注的人

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